w-web-sso 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * w-web-sso v1.0.17
2
+ * w-web-sso v1.0.18
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("worker_threads"),require("url")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads","url"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-sso"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.require$$0,e.url)}(this,(function(e,t,n,i,u,s,r){"use strict";var o="undefined"!=typeof document?document.currentScript:null,c=Array.isArray,l="object"==typeof global&&global&&global.Object===Object&&global,a="object"==typeof self&&self&&self.Object===Object&&self,D=l||a||Function("return this")(),d=D.Symbol,w=Object.prototype,M=w.hasOwnProperty,y=w.toString,C=d?d.toStringTag:void 0;var I=Object.prototype.toString;var m=d?d.toStringTag:void 0;function g(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?function(e){var t=M.call(e,C),n=e[C];try{e[C]=void 0;var i=!0}catch(e){}var u=y.call(e);return i&&(t?e[C]=n:delete e[C]),u}(e):function(e){return I.call(e)}(e)}function p(e){return null!=e&&"object"==typeof e}function f(e){return"symbol"==typeof e||p(e)&&"[object Symbol]"==g(e)}var L=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h=/^\w*$/;function b(e,t){if(c(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!f(e))||(h.test(e)||!L.test(e)||null!=t&&e in Object(t))}function A(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function x(e){if(!A(e))return!1;var t=g(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var N,Z=D["__core-js_shared__"],E=(N=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+N:"";var T=Function.prototype.toString;function S(e){if(null!=e){try{return T.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var X=/^\[object .+?Constructor\]$/,v=Function.prototype,Y=Object.prototype,j=v.toString,z=Y.hasOwnProperty,G=RegExp("^"+j.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function F(e){return!(!A(e)||(t=e,E&&E in t))&&(x(e)?G:X).test(S(e));var t}function K(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return F(n)?n:void 0}var W=K(Object,"create");var k=Object.prototype.hasOwnProperty;var V=Object.prototype.hasOwnProperty;function B(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function H(e,t){return e===t||e!=e&&t!=t}function U(e,t){for(var n=e.length;n--;)if(H(e[n][0],t))return n;return-1}B.prototype.clear=function(){this.__data__=W?W(null):{},this.size=0},B.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},B.prototype.get=function(e){var t=this.__data__;if(W){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return k.call(t,e)?t[e]:void 0},B.prototype.has=function(e){var t=this.__data__;return W?void 0!==t[e]:V.call(t,e)},B.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=W&&void 0===t?"__lodash_hash_undefined__":t,this};var Q=Array.prototype.splice;function J(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}J.prototype.clear=function(){this.__data__=[],this.size=0},J.prototype.delete=function(e){var t=this.__data__,n=U(t,e);return!(n<0)&&(n==t.length-1?t.pop():Q.call(t,n,1),--this.size,!0)},J.prototype.get=function(e){var t=this.__data__,n=U(t,e);return n<0?void 0:t[n][1]},J.prototype.has=function(e){return U(this.__data__,e)>-1},J.prototype.set=function(e,t){var n=this.__data__,i=U(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};var P=K(D,"Map");function R(e,t){var n,i,u=e.__data__;return("string"==(i=typeof(n=t))||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==n:null===n)?u["string"==typeof t?"string":"hash"]:u.map}function O(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}O.prototype.clear=function(){this.size=0,this.__data__={hash:new B,map:new(P||J),string:new B}},O.prototype.delete=function(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t},O.prototype.get=function(e){return R(this,e).get(e)},O.prototype.has=function(e){return R(this,e).has(e)},O.prototype.set=function(e,t){var n=R(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this};function _(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var i=arguments,u=t?t.apply(this,i):i[0],s=n.cache;if(s.has(u))return s.get(u);var r=e.apply(this,i);return n.cache=s.set(u,r)||s,r};return n.cache=new(_.Cache||O),n}_.Cache=O;var $=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q=/\\(\\)?/g,ee=function(e){var t=_(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($,(function(e,n,i,u){t.push(i?u.replace(q,"$1"):n||e)})),t})),te=ee;function ne(e,t){for(var n=-1,i=null==e?0:e.length,u=Array(i);++n<i;)u[n]=t(e[n],n,e);return u}var ie=d?d.prototype:void 0,ue=ie?ie.toString:void 0;function se(e){if("string"==typeof e)return e;if(c(e))return ne(e,se)+"";if(f(e))return ue?ue.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function re(e){return null==e?"":se(e)}function oe(e,t){return c(e)?e:b(e,t)?[e]:te(re(e))}function ce(e){if("string"==typeof e||f(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function le(e,t){for(var n=0,i=(t=oe(t,e)).length;null!=e&&n<i;)e=e[ce(t[n++])];return n&&n==i?e:void 0}function ae(e,t,n){var i=null==e?void 0:le(e,t);return void 0===i?n:i}function De(e){return"[object Object]"===Object.prototype.toString.call(e)}function de(e){if(De(e)){for(let t in e)return!0;return!1}return!1}function we(e){return"[object String]"===Object.prototype.toString.call(e)}function Me(e){return!(!we(e)||""===e)}var ye=/\s/;var Ce=/^\s+/;function Ie(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&ye.test(e.charAt(t)););return t}(e)+1).replace(Ce,""):e}var me=/^[-+]0x[0-9a-f]+$/i,ge=/^0b[01]+$/i,pe=/^0o[0-7]+$/i,fe=parseInt;function Le(e){if("number"==typeof e)return e;if(f(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=Ie(e);var n=ge.test(e);return n||pe.test(e)?fe(e.slice(2),n?2:8):me.test(e)?NaN:+e}var he=1/0;function be(e){return e?(e=Le(e))===he||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Ae(e){var t=be(e),n=t%1;return t==t?n?t-n:t:0}function xe(e){return e!=e}function Ne(e){let t=!1;if(Me(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(xe(e))return!1;t=!0}return t}function Ze(e){if(!Ne(e))return 0;return be(e)}function Ee(e){return!!Ne(e)&&(e=Ze(e),"number"==typeof(t=e)&&t==Ae(t));var t}var Te=D.isFinite,Se=Math.min;var Xe,ve=(Xe=Math["round"],function(e,t){if(e=Le(e),(t=null==t?0:Se(Ae(t),292))&&Te(e)){var n=(re(e)+"e").split("e");return+((n=(re(Xe(n[0]+"e"+(+n[1]+t)))+"e").split("e"))[0]+"e"+(+n[1]-t))}return Xe(e)});function Ye(e){if(!Ne(e))return 0;e=Ze(e);let t=ve(e);return"0"===String(t)?0:t}function je(e){if(!Ee(e))return!1;return Ye(e)>0}function ze(e){return"[object Array]"===Object.prototype.toString.call(e)}function Ge(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Fe(e){if(De(e)){for(let t in e)return!1;return!0}return!1}function Ke(e){return!!Ge(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Fe(e)||(!!function(e){return!(!we(e)||""!==e)}(e)||(!!function(e){return!!ze(e)&&0===e.length}(e)||!!xe(e)))))}function We(e){return!!ze(e)&&(0!==e.length&&(1!==e.length||!Ke(e[0])))}function ke(e){if(!Ne(e))return!1;return Ze(e)>0}function Ve(e,t){return function(n){return e(t(n))}}var Be=Ve(Object.getPrototypeOf,Object),He=Function.prototype,Ue=Object.prototype,Qe=He.toString,Je=Ue.hasOwnProperty,Pe=Qe.call(Object);function Re(e){if(!p(e)||"[object Object]"!=g(e))return!1;var t=Be(e);if(null===t)return!0;var n=Je.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Qe.call(n)==Pe}function Oe(e){if(!p(e))return!1;var t=g(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Re(e)}function _e(e){return Oe(e)}function $e(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function qe(e){if(!Ee(e))return!1;return Ye(e)>=0}function et(e,t){return Me(e)&&qe(t)?0===(t=Ye(t))?"":e.substring(0,t):""}function tt(e,t){if(!Me(e))return"";if(!qe(t))return"";if(0===(t=Ye(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function nt(e,t){return Me(e)&&qe(t)?0===(t=Ye(t))?e:et(e,e.length-t):""}function it(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}function ut(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}let st=function(e){if(!$e(e))throw new Error("fn is not a function");return function(){let t=it(),n=null,i=null;try{n=e.apply(this,arguments)}catch(e){i=e}return null!==i?t.resolve({state:"error",msg:i}):ut(n)?n.then((e=>{t.resolve({state:"success",msg:e})})).catch((e=>{"cancelled"===ae(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})})):t.resolve({state:"success",msg:n}),t}};function rt(e,t={}){let n=ae(t,"fs");if(!n.existsSync(e))return!1;let i=n.lstatSync(e);return!i.isFile()&&!i.isSymbolicLink()}function ot(e){return rt(e,{fs:t})}function ct(e,t={}){let n=ae(t,"fs");return!!n.existsSync(e)&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function lt(e){return ct(e,{fs:t})}function at(e,t,n){if(!Me(e))return"";if(!Me(t))return"";if(!we(n))return"";return String(e).replaceAll(t,n)}var Dt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function dt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wt={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,i="millisecond",u="second",s="minute",r="hour",o="day",c="week",l="month",a="quarter",D="year",d="date",w="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|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,C={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 i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(n)+e},m={s:I,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),i=Math.floor(n/60),u=n%60;return(t<=0?"+":"-")+I(i,2,"0")+":"+I(u,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var i=12*(n.year()-t.year())+(n.month()-t.month()),u=t.clone().add(i,l),s=n-u<0,r=t.clone().add(i+(s?-1:1),l);return+(-(i+(n-u)/(s?u-r:r-u))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:D,w:c,d:o,D:d,h:r,m:s,s:u,ms:i,Q:a}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},g="en",p={};p[g]=C;var f="$isDayjsObject",L=function(e){return e instanceof x||!(!e||!e[f])},h=function e(t,n,i){var u;if(!t)return g;if("string"==typeof t){var s=t.toLowerCase();p[s]&&(u=s),n&&(p[s]=n,u=s);var r=t.split("-");if(!u&&r.length>1)return e(r[0])}else{var o=t.name;p[o]=t,u=o}return!i&&u&&(g=u),u||!i&&g},b=function(e,t){if(L(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},A=m;A.l=h,A.i=L,A.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function C(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var I=C.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(A.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(M);if(i){var u=i[2]-1||0,s=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],u,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)):new Date(i[1],u,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)}}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 A},I.isValid=function(){return!(this.$d.toString()===w)},I.isSame=function(e,t){var n=b(e);return this.startOf(t)<=n&&n<=this.endOf(t)},I.isAfter=function(e,t){return b(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<b(e)},I.$g=function(e,t,n){return A.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,i=!!A.u(t)||t,a=A.p(e),w=function(e,t){var u=A.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return i?u:u.endOf(o)},M=function(e,t){return A.w(n.toDate()[e].apply(n.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,C=this.$M,I=this.$D,m="set"+(this.$u?"UTC":"");switch(a){case D:return i?w(1,0):w(31,11);case l:return i?w(1,C):w(0,C+1);case c:var g=this.$locale().weekStart||0,p=(y<g?y+7:y)-g;return w(i?I-p:I+(6-p),C);case o:case d:return M(m+"Hours",0);case r:return M(m+"Minutes",1);case s:return M(m+"Seconds",2);case u:return M(m+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var n,c=A.p(e),a="set"+(this.$u?"UTC":""),w=(n={},n[o]=a+"Date",n[d]=a+"Date",n[l]=a+"Month",n[D]=a+"FullYear",n[r]=a+"Hours",n[s]=a+"Minutes",n[u]=a+"Seconds",n[i]=a+"Milliseconds",n)[c],M=c===o?this.$D+(t-this.$W):t;if(c===l||c===D){var y=this.clone().set(d,1);y.$d[w](M),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else w&&this.$d[w](M);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[A.p(e)]()},I.add=function(i,a){var d,w=this;i=Number(i);var M=A.p(a),y=function(e){var t=b(w);return A.w(t.date(t.date()+Math.round(e*i)),w)};if(M===l)return this.set(l,this.$M+i);if(M===D)return this.set(D,this.$y+i);if(M===o)return y(1);if(M===c)return y(7);var C=(d={},d[s]=t,d[r]=n,d[u]=e,d)[M]||1,I=this.$d.getTime()+i*C;return A.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||w;var i=e||"YYYY-MM-DDTHH:mm:ssZ",u=A.z(this),s=this.$H,r=this.$m,o=this.$M,c=n.weekdays,l=n.months,a=n.meridiem,D=function(e,n,u,s){return e&&(e[n]||e(t,i))||u[n].slice(0,s)},d=function(e){return A.s(s%12||12,e,"0")},M=a||function(e,t,n){var i=e<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(y,(function(e,i){return i||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return A.s(t.$y,4,"0");case"M":return o+1;case"MM":return A.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 A.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return D(n.weekdaysMin,t.$W,c,2);case"ddd":return D(n.weekdaysShort,t.$W,c,3);case"dddd":return c[t.$W];case"H":return String(s);case"HH":return A.s(s,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return M(s,r,!0);case"A":return M(s,r,!1);case"m":return String(r);case"mm":return A.s(r,2,"0");case"s":return String(t.$s);case"ss":return A.s(t.$s,2,"0");case"SSS":return A.s(t.$ms,3,"0");case"Z":return u}return null}(e)||u.replace(":","")}))},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(i,d,w){var M,y=this,C=A.p(d),I=b(i),m=(I.utcOffset()-this.utcOffset())*t,g=this-I,p=function(){return A.m(y,I)};switch(C){case D:M=p()/12;break;case l:M=p();break;case a:M=p()/3;break;case c:M=(g-m)/6048e5;break;case o:M=(g-m)/864e5;break;case r:M=g/n;break;case s:M=g/t;break;case u:M=g/e;break;default:M=g}return w?M:A.a(M)},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(),i=h(e,t,!0);return i&&(n.$L=i),n},I.clone=function(){return A.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()},C}(),N=x.prototype;return b.prototype=N,[["$ms",i],["$s",u],["$m",s],["$H",r],["$W",o],["$M",l],["$y",D],["$D",d]].forEach((function(e){N[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),b.extend=function(e,t){return e.$i||(e(t,x,b),e.$i=!0),b},b.locale=h,b.isDayjs=L,b.unix=function(e){return b(1e3*e)},b.en=p[g],b.Ls=p,b.p={},b}()}(wt);var Mt=dt(wt.exports);function yt(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYY-MM-DDTHH:mm:ssZ")}let Ct="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),It=Ct.length;function mt(e=32){let t=[];e=je(e)?Ye(e):32;for(let n=0;n<e;n++)t[n]=Ct[0|Math.random()*It];return t.join("")}function gt(e){return!0===(t=e)||!1===t||p(t)&&"[object Boolean]"==g(t);var t}var pt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0===--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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}(pt);var ft=dt(pt.exports);function Lt(){return new ft}async function ht(e,t={}){let n=null,i=it();if(!$e(e))return i.reject("waitfunction需輸入函數f"),i;let u=async()=>{let t=e();return ut(t)&&(t=await t),t};if(n=await u(),!0===n)return i.resolve(),i;let s=ae(t,"attemptNum",null);je(s)||(s=200);let r=ae(t,"timeInterval",null);je(r)||(r=1e3);let o=0,c=setInterval((async()=>{o+=1,n=await u(),!0===n&&(clearInterval(c),i.resolve()),o>s&&(clearInterval(c),i.reject(`exceeded attemptNum[${s}]`))}),r);return i}function bt(e){return function(e,t={}){let n=ae(t,"fs");if(rt(e,{fs:n}))return{success:"input folder is already exists: "+e};if(n.existsSync(e))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 At(e){return"number"==typeof e||p(e)&&"[object Number]"==g(e)}function xt(e){if(!Me(e)&&!Ne(e)&&!f(e))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var Nt={exports:{}};var Zt,Et={exports:{}};function Tt(){return Zt||(Zt=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!==Dt&&Dt.crypto&&(n=Dt.crypto),!n)try{n=require("crypto")}catch(e){}var i=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.")},u=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),s={},r=s.lib={},o=r.Base={extend:function(e){var t=u(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)}},c=r.WordArray=o.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||a).stringify(this)},concat:function(e){var t=this.words,n=e.words,i=this.sigBytes,u=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s<u;s++){var r=n[s>>>2]>>>24-s%4*8&255;t[i+s>>>2]|=r<<24-(i+s)%4*8}else for(var o=0;o<u;o+=4)t[i+o>>>2]=n[o>>>2];return this.sigBytes+=u,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(i());return new c.init(t,e)}}),l=s.enc={},a=l.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],u=0;u<n;u++){var s=t[u>>>2]>>>24-u%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i<t;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(n,t/2)}},D=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],u=0;u<n;u++){var s=t[u>>>2]>>>24-u%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i<t;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(n,t)}},d=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)))}},w=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,i=this._data,u=i.words,s=i.sigBytes,r=this.blockSize,o=s/(4*r),l=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*r,a=e.min(4*l,s);if(l){for(var D=0;D<l;D+=r)this._doProcessBlock(u,D);n=u.splice(0,l),i.sigBytes-=a}return new c.init(n,a)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});r.Hasher=w.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){w.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 M.HMAC.init(e,n).finalize(t)}}});var M=s.algo={};return s}(Math),t)}(Et)),Et.exports}!function(e){e.exports=Tt().enc.Utf8}(Nt);var St=dt(Nt.exports),Xt={exports:{}};!function(e){var t;e.exports=(t=Tt(),function(){var e=t,n=e.lib.WordArray;function i(e,t,i){for(var u=[],s=0,r=0;r<t;r++)if(r%4){var o=i[e.charCodeAt(r-1)]<<r%4*2|i[e.charCodeAt(r)]>>>6-r%4*2;u[s>>>2]|=o<<24-s%4*8,s++}return n.create(u,s)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,i=this._map;e.clamp();for(var u=[],s=0;s<n;s+=3)for(var r=(t[s>>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o<n;o++)u.push(i.charAt(r>>>6*(3-o)&63));var c=i.charAt(64);if(c)for(;u.length%4;)u.push(c);return u.join("")},parse:function(e){var t=e.length,n=this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var s=0;s<n.length;s++)u[n.charCodeAt(s)]=s}var r=n.charAt(64);if(r){var o=e.indexOf(r);-1!==o&&(t=o)}return i(e,t,u)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Xt);var vt=dt(Xt.exports);function Yt(e){if(!Me(e))return"";let t=St.parse(e);return vt.stringify(t)}function jt(e,t){return!!De(e)&&(!(!Me(t)&&!Ne(t))&&t in e)}function zt(e,t){for(var n=-1,i=null==e?0:e.length;++n<i&&!1!==t(e[n],n,e););return e}var Gt,Ft=function(e,t,n){for(var i=-1,u=Object(e),s=n(e),r=s.length;r--;){var o=s[Gt?r:++i];if(!1===t(u[o],o,u))break}return e};function Kt(e){return p(e)&&"[object Arguments]"==g(e)}var Wt=Object.prototype,kt=Wt.hasOwnProperty,Vt=Wt.propertyIsEnumerable,Bt=Kt(function(){return arguments}())?Kt:function(e){return p(e)&&kt.call(e,"callee")&&!Vt.call(e,"callee")},Ht=Bt;var Ut="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qt=Ut&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Qt&&Qt.exports===Ut?D.Buffer:void 0,Pt=(Jt?Jt.isBuffer:void 0)||function(){return!1},Rt=/^(?:0|[1-9]\d*)$/;function Ot(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Rt.test(e))&&e>-1&&e%1==0&&e<t}function _t(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var $t={};function qt(e){return function(t){return e(t)}}$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=!0,$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object Boolean]"]=$t["[object DataView]"]=$t["[object Date]"]=$t["[object Error]"]=$t["[object Function]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object WeakMap]"]=!1;var en="object"==typeof exports&&exports&&!exports.nodeType&&exports,tn=en&&"object"==typeof module&&module&&!module.nodeType&&module,nn=tn&&tn.exports===en&&l.process,un=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||nn&&nn.binding&&nn.binding("util")}catch(e){}}(),sn=un&&un.isTypedArray,rn=sn?qt(sn):function(e){return p(e)&&_t(e.length)&&!!$t[g(e)]},on=Object.prototype.hasOwnProperty;function cn(e,t){var n=c(e),i=!n&&Ht(e),u=!n&&!i&&Pt(e),s=!n&&!i&&!u&&rn(e),r=n||i||u||s,o=r?function(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}(e.length,String):[],l=o.length;for(var a in e)!t&&!on.call(e,a)||r&&("length"==a||u&&("offset"==a||"parent"==a)||s&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ot(a,l))||o.push(a);return o}var ln=Object.prototype;function an(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ln)}var Dn=Ve(Object.keys,Object),dn=Object.prototype.hasOwnProperty;function wn(e){if(!an(e))return Dn(e);var t=[];for(var n in Object(e))dn.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Mn(e){return null!=e&&_t(e.length)&&!x(e)}function yn(e){return Mn(e)?cn(e):wn(e)}function Cn(e,t){return e&&Ft(e,t,yn)}var In=function(e,t){return function(n,i){if(null==n)return n;if(!Mn(n))return e(n,i);for(var u=n.length,s=t?u:-1,r=Object(n);(t?s--:++s<u)&&!1!==i(r[s],s,r););return n}}(Cn),mn=In;function gn(e){return e}function pn(e,t){var n;return(c(e)?zt:mn)(e,"function"==typeof(n=t)?n:gn)}function fn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Ln(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function hn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function bn(e){if(!(fn(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||Ln(e)||hn(e)))return null;var t;try{if(e.byteLength)return e.byteLength}catch(e){}try{if(e.length)return e.length}catch(e){}try{if(e.size)return e.size}catch(e){}return null}function An(e){if(!Me(e))return new Uint8Array;let t;try{t=function(e){if(!we(e))return new Uint8Array;let t=vt.parse(e),n=t.words,i=t.sigBytes,u=new Uint8Array(i);for(let e=0;e<i;e++){let t=n[e>>>2]>>>24-e%4*8&255;u[e]=t}return u}(Yt(e))}catch(e){return new Uint8Array}return t}function xn(e,t,n=0,i=!0,u=52,s=8){return function(e,t,n,i,u,s){if(!Ne(e))return null;if(!Ln(t))return null;if(!Ee(n))return null;if(!gt(i))return null;if(!Ee(u))return null;if(!Ee(s))return null;let r,o,c;e=Ze(e);let l=8*s-u-1,a=(1<<l)-1,D=a>>1,d=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?s-1:0,M=i?-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,r=a):(r=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-r))<1&&(r--,c*=2),(e+=r+D>=1?d/c:d*Math.pow(2,1-D))*c>=2&&(r++,c/=2),r+D>=a?(o=0,r=a):r+D>=1?(o=(e*c-1)*Math.pow(2,u),r+=D):(o=e*Math.pow(2,D-1)*Math.pow(2,u),r=0));u>=8;t[n+w]=255&o,w+=M,o/=256,u-=8);for(r=r<<u|o,l+=u;l>0;t[n+w]=255&r,w+=M,r/=256,l-=8);return t[n+w-M]|=128*y,null}(e,t,n,i,u,s)}function Nn(e){let t=[],n=[];if(!We(e)&&!de(e))return null;let i=[],u=[];function s(e){i.push(bn(e)),u.push(e)}try{let r=function(e){if(!De(e))return{results:"",binarys:[]};if(Fe(e))return{results:"",binarys:[]};let t="",n=[];try{let i=-1;t=JSON.stringify(e,(function(e,t){if(Ln(t)){i+=1;let e=`[Uint8Array]::${i}`;return n.push(t),e}if(hn(t)){i+=1;let e=`[Uint16Array]::${i}`;return n.push(t),e}if(fn(t)){i+=1;let e=`[ArrayBuffer]::${i}`;return n.push(t),e}return Oe(t)&&(t=t.toString()),t}))}catch(e){}return{results:t,binarys:n}}(e);s(An(r.results)),pn(r.binarys,(e=>{s(e)}));let o=i,c=An(JSON.stringify(o)),l=new Uint8Array(8);xn(bn(c),l),t.push(l),t.push(c),pn(u,(e=>{t.push(e)})),pn(t,(e=>{n=function(e,t){let n=bn(e),i=bn(t),u=new Uint8Array(n+i);return u.set(new Uint8Array(e),0),u.set(new Uint8Array(t),n),u}(n,e)}))}catch(e){return null}return n}function Zn(e,t=0,n=!0,i=52,u=8){return function(e,t,n,i,u){if(!Ln(e))return null;if(!Ee(t))return null;if(!gt(n))return null;if(!Ee(i))return null;if(!Ee(u))return null;let s,r,o=8*u-i-1,c=(1<<o)-1,l=c>>1,a=-7,D=n?0:u-1,d=n?1:-1,w=e[t+D];for(D+=d,s=w&(1<<-a)-1,w>>=-a,a+=o;a>0;s=256*s+e[t+D],D+=d,a-=8);for(r=s&(1<<-a)-1,s>>=-a,a+=i;a>0;r=256*r+e[t+D],D+=d,a-=8);if(0===s)s=1-l;else{if(s===c)return r?NaN:1/0*(w?-1:1);r+=Math.pow(2,i),s-=l}return(w?-1:1)*r*Math.pow(2,s-i)}(e,t,n,i,u)}var En={exports:{}};!function(e){var t;e.exports=(t=Tt(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,i=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,i=[],u=0;u<t;u++)i[u>>>2]|=e[u]<<24-u%4*8;n.call(this,i,t)}else n.apply(this,arguments)};i.prototype=e}}(),t.lib.WordArray)}(En);var Tn=dt(En.exports);function Sn(e){if(!Ln(e))return"";let t;try{n=function(e){return Ln(e)?Tn.create(e).toString(vt):""}(e),t=Me(n)?vt.parse(n).toString(St):""}catch(e){return""}var n;return t}function Xn(e){let t=null;if(!Ln(e))return null;try{let n=8,i=e.slice(0,n),u=e.slice(n,bn(e)),s=Zn(i),r=u.slice(0,s),o=u.slice(s,bn(u)),c=Sn(r),l=function(e,t){let n=0,i=0,u=[];return pn(t,(t=>{i=n+t;let s=e.slice(n,i);n=i,u.push(s)})),u}(o,JSON.parse(c));t=function(e){if(!de(e))return{};let{results:t,binarys:n}=e;if(!Me(t))return{};if(!ze(n))return{};let i={};try{i=JSON.parse(t,(function(e,t){if(Me(t)){if(t.indexOf("[Uint8Array]::")>=0){let e=Ye(t.replace("[Uint8Array]::",""));return n[e]}if(t.indexOf("[Uint16Array]::")>=0){let e=Ye(t.replace("[Uint16Array]::",""));return n[e]}if(t.indexOf("[ArrayBuffer]::")>=0){let e=Ye(t.replace("[ArrayBuffer]::",""));return n[e]}}return t}))}catch(e){}return i}({results:Sn(l.shift()),binarys:l})}catch(e){}return t}function vn(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYYMMDDHHmmss")}function Yn(e){var t=this.__data__=new J(e);this.size=t.size}Yn.prototype.clear=function(){this.__data__=new J,this.size=0},Yn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Yn.prototype.get=function(e){return this.__data__.get(e)},Yn.prototype.has=function(e){return this.__data__.has(e)},Yn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof J){var i=n.__data__;if(!P||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new O(i)}return n.set(e,t),this.size=n.size,this};function jn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new O;++t<n;)this.add(e[t])}function zn(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}function Gn(e,t){return e.has(t)}jn.prototype.add=jn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},jn.prototype.has=function(e){return this.__data__.has(e)};function Fn(e,t,n,i,u,s){var r=1&n,o=e.length,c=t.length;if(o!=c&&!(r&&c>o))return!1;var l=s.get(e),a=s.get(t);if(l&&a)return l==t&&a==e;var D=-1,d=!0,w=2&n?new jn:void 0;for(s.set(e,t),s.set(t,e);++D<o;){var M=e[D],y=t[D];if(i)var C=r?i(y,M,D,t,e,s):i(M,y,D,e,t,s);if(void 0!==C){if(C)continue;d=!1;break}if(w){if(!zn(t,(function(e,t){if(!Gn(w,t)&&(M===e||u(M,e,n,i,s)))return w.push(t)}))){d=!1;break}}else if(M!==y&&!u(M,y,n,i,s)){d=!1;break}}return s.delete(e),s.delete(t),d}var Kn=D.Uint8Array;function Wn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}function kn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var Vn=d?d.prototype:void 0,Bn=Vn?Vn.valueOf:void 0;function Hn(e,t){for(var n=-1,i=t.length,u=e.length;++n<i;)e[u+n]=t[n];return e}function Un(e,t,n){var i=t(e);return c(e)?i:Hn(i,n(e))}function Qn(e,t){for(var n=-1,i=null==e?0:e.length,u=0,s=[];++n<i;){var r=e[n];t(r,n,e)&&(s[u++]=r)}return s}function Jn(){return[]}var Pn=Object.prototype.propertyIsEnumerable,Rn=Object.getOwnPropertySymbols,On=Rn?function(e){return null==e?[]:(e=Object(e),Qn(Rn(e),(function(t){return Pn.call(e,t)})))}:Jn;function _n(e){return Un(e,yn,On)}var $n=Object.prototype.hasOwnProperty;var qn=K(D,"DataView"),ei=K(D,"Promise"),ti=K(D,"Set"),ni=K(D,"WeakMap"),ii="[object Map]",ui="[object Promise]",si="[object Set]",ri="[object WeakMap]",oi="[object DataView]",ci=S(qn),li=S(P),ai=S(ei),Di=S(ti),di=S(ni),wi=g;(qn&&wi(new qn(new ArrayBuffer(1)))!=oi||P&&wi(new P)!=ii||ei&&wi(ei.resolve())!=ui||ti&&wi(new ti)!=si||ni&&wi(new ni)!=ri)&&(wi=function(e){var t=g(e),n="[object Object]"==t?e.constructor:void 0,i=n?S(n):"";if(i)switch(i){case ci:return oi;case li:return ii;case ai:return ui;case Di:return si;case di:return ri}return t});var Mi=wi,yi="[object Arguments]",Ci="[object Array]",Ii="[object Object]",mi=Object.prototype.hasOwnProperty;function gi(e,t,n,i,u,s){var r=c(e),o=c(t),l=r?Ci:Mi(e),a=o?Ci:Mi(t),D=(l=l==yi?Ii:l)==Ii,d=(a=a==yi?Ii:a)==Ii,w=l==a;if(w&&Pt(e)){if(!Pt(t))return!1;r=!0,D=!1}if(w&&!D)return s||(s=new Yn),r||rn(e)?Fn(e,t,n,i,u,s):function(e,t,n,i,u,s,r){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||!s(new Kn(e),new Kn(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return H(+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=Wn;case"[object Set]":var c=1&i;if(o||(o=kn),e.size!=t.size&&!c)return!1;var l=r.get(e);if(l)return l==t;i|=2,r.set(e,t);var a=Fn(o(e),o(t),i,u,s,r);return r.delete(e),a;case"[object Symbol]":if(Bn)return Bn.call(e)==Bn.call(t)}return!1}(e,t,l,n,i,u,s);if(!(1&n)){var M=D&&mi.call(e,"__wrapped__"),y=d&&mi.call(t,"__wrapped__");if(M||y){var C=M?e.value():e,I=y?t.value():t;return s||(s=new Yn),u(C,I,n,i,s)}}return!!w&&(s||(s=new Yn),function(e,t,n,i,u,s){var r=1&n,o=_n(e),c=o.length;if(c!=_n(t).length&&!r)return!1;for(var l=c;l--;){var a=o[l];if(!(r?a in t:$n.call(t,a)))return!1}var D=s.get(e),d=s.get(t);if(D&&d)return D==t&&d==e;var w=!0;s.set(e,t),s.set(t,e);for(var M=r;++l<c;){var y=e[a=o[l]],C=t[a];if(i)var I=r?i(C,y,a,t,e,s):i(y,C,a,e,t,s);if(!(void 0===I?y===C||u(y,C,n,i,s):I)){w=!1;break}M||(M="constructor"==a)}if(w&&!M){var m=e.constructor,g=t.constructor;m==g||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof g&&g instanceof g||(w=!1)}return s.delete(e),s.delete(t),w}(e,t,n,i,u,s))}function pi(e,t,n,i,u){return e===t||(null==e||null==t||!p(e)&&!p(t)?e!=e&&t!=t:gi(e,t,n,i,pi,u))}function fi(e){return e==e&&!A(e)}function Li(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function hi(e){var t=function(e){for(var t=yn(e),n=t.length;n--;){var i=t[n],u=e[i];t[n]=[i,u,fi(u)]}return t}(e);return 1==t.length&&t[0][2]?Li(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,i){var u=n.length,s=u,r=!i;if(null==e)return!s;for(e=Object(e);u--;){var o=n[u];if(r&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++u<s;){var c=(o=n[u])[0],l=e[c],a=o[1];if(r&&o[2]){if(void 0===l&&!(c in e))return!1}else{var D=new Yn;if(i)var d=i(l,a,c,e,t,D);if(!(void 0===d?pi(a,l,3,i,D):d))return!1}}return!0}(n,e,t)}}function bi(e,t){return null!=e&&t in Object(e)}function Ai(e,t){return null!=e&&function(e,t,n){for(var i=-1,u=(t=oe(t,e)).length,s=!1;++i<u;){var r=ce(t[i]);if(!(s=null!=e&&n(e,r)))break;e=e[r]}return s||++i!=u?s:!!(u=null==e?0:e.length)&&_t(u)&&Ot(r,u)&&(c(e)||Ht(e))}(e,t,bi)}function xi(e){return function(t){return null==t?void 0:t[e]}}function Ni(e){return b(e)?xi(ce(e)):function(e){return function(t){return le(t,e)}}(e)}function Zi(e){return"function"==typeof e?e:null==e?gn:"object"==typeof e?c(e)?function(e,t){return b(e)&&fi(t)?Li(ce(e),t):function(n){var i=ae(n,e);return void 0===i&&i===t?Ai(n,e):pi(t,i,3)}}(e[0],e[1]):hi(e):Ni(e)}function Ei(e,t){var n=-1,i=Mn(e)?Array(e.length):[];return mn(e,(function(e,u,s){i[++n]=t(e,u,s)})),i}function Ti(e,t){return(c(e)?ne:Ei)(e,Zi(t))}function Si(e,t,n){var i=-1,u=e.length;t<0&&(t=-t>u?0:u+t),(n=n>u?u:n)<0&&(n+=u),u=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(u);++i<u;)s[i]=e[i+t];return s}function Xi(e){return e!=e}function vi(e,t,n){return t==t?function(e,t,n){for(var i=n-1,u=e.length;++i<u;)if(e[i]===t)return i;return-1}(e,t,n):function(e,t,n,i){for(var u=e.length,s=n+(i?1:-1);i?s--:++s<u;)if(t(e[s],s,e))return s;return-1}(e,Xi,n)}var Yi=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ji(e){return Yi.test(e)}var zi="\\ud800-\\udfff",Gi="["+zi+"]",Fi="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Ki="\\ud83c[\\udffb-\\udfff]",Wi="[^"+zi+"]",ki="(?:\\ud83c[\\udde6-\\uddff]){2}",Vi="[\\ud800-\\udbff][\\udc00-\\udfff]",Bi="(?:"+Fi+"|"+Ki+")"+"?",Hi="[\\ufe0e\\ufe0f]?",Ui=Hi+Bi+("(?:\\u200d(?:"+[Wi,ki,Vi].join("|")+")"+Hi+Bi+")*"),Qi="(?:"+[Wi+Fi+"?",Fi,ki,Vi,Gi].join("|")+")",Ji=RegExp(Ki+"(?="+Ki+")|"+Qi+Ui,"g");function Pi(e){return ji(e)?function(e){return e.match(Ji)||[]}(e):function(e){return e.split("")}(e)}function Ri(e,t,n){if((e=re(e))&&(n||void 0===t))return Ie(e);if(!e||!(t=se(t)))return e;var i=Pi(e),u=Pi(t),s=function(e,t){for(var n=-1,i=e.length;++n<i&&vi(t,e[n],0)>-1;);return n}(i,u),r=function(e,t){for(var n=e.length;n--&&vi(t,e[n],0)>-1;);return n}(i,u)+1;return function(e,t,n){var i=e.length;return n=void 0===n?i:n,!t&&n>=i?e:Si(e,t,n)}(i,s,r).join("")}function Oi(e,t){if(!Me(e))return[];if(!Me(t))return[];let n=function(e,t){return Me(e)&&Me(t)?e.split(t):[]}(e,t);n=Ti(n,Ri);let i=[];return pn(n,(function(e){Me(e)&&i.push(e)})),i}function _i(e){return function(e,t={}){let n=ae(t,"fs");if(!n.existsSync(e))return{success:"file does not exist: "+e};if(!ct(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})}var $i={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFd0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZighZS5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEJ0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtyZXR1cm4hIWUuZXhpc3RzU3luYyh0KSYmKCFlLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhZS5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gSHQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIUJ0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTt0cnl7ZS51bmxpbmtTeW5jKHQpfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiBKdCh0LHIsZT17fSl7bGV0IG49IiIsbz1mdChlLCJmcyIpO2lmKCFwdChpPXQpfHwwPT09aS5sZW5ndGh8fDE9PT1pLmxlbmd0aCYmX3QoaVswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIGk7bGV0IHU9ZnVuY3Rpb24odCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9R3QodD1yLnBhdGgpO2lmKCFkdChlKSlyZXR1cm4gdDtsZXQgbj1EdCh0PVV0KHQsZS5sZW5ndGgpKTtyZXR1cm4gbi5pc1Jvb3Qsbi5wYXRofShyKSxhPWZ0KGUsImZuT3V0IiwiIik7ZHQoYSl8fChhPUd0KHIpKSxXdCh1LHtmczpvfSl8fGZ1bmN0aW9uKHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZihXdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImlucHV0IGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0czogIit0fTtpZihlLmV4aXN0c1N5bmModCkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGFscmVhZHkgZXhpc3RzOiAiK3R9O3RyeXtlLm1rZGlyU3luYyh0LHtyZWN1cnNpdmU6ITB9KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19fSh1LHtmczpvfSk7bGV0IGM9bHQoKTt0cnl7bGV0IGU9by5jcmVhdGVXcml0ZVN0cmVhbShyKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IGk9dFtyXTtpZighQnQoaSx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZnBJblske2l9XSBpcyBub3QgYSBmaWxlYCk7bGV0IHU9KCk9PntsZXQgdD1sdCgpLHI9by5jcmVhdGVSZWFkU3RyZWFtKGkpO3JldHVybiByLm9uKCJlcnJvciIsKHI9PntuPXIubWVzc2FnZSx0LnJlamVjdChyKX0pKSxyLm9uKCJlbmQiLCgoKT0+e0h0KGkse2ZzOm99KSx0LnJlc29sdmUoKX0pKSxyLnBpcGUoZSx7ZW5kOiExfSksdH07YXdhaXQgdSgpfWUuZW5kKCksZS5vbigiZXJyb3IiLCh0PT57bj10Lm1lc3NhZ2UsYy5yZWplY3Qobil9KSksZS5vbigiZmluaXNoIiwoKCk9PntsZXQgdD17ZmlsZW5hbWU6YSxwYXRoOnJ9O2MucmVzb2x2ZSh0KX0pKX1jYXRjaCh0KXtuPXQubWVzc2FnZSxjLnJlamVjdChuKX1yZXR1cm4gY31sZXQgbWVyZ2VTbGljZXM9YXN5bmMoZSxuLG8pPT57bGV0IGk9W107Zm9yKGxldCByPTA7cjxuO3IrKyl7bGV0IG49dC5qb2luKG8sYCR7ZX1fJHtyfWApO2kucHVzaChuKX1sZXQgdT10LmpvaW4obyxlKSxhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsZSxuPXt9KXtyZXR1cm4gSnQodCxlLHtmczpyLC4uLm59KX0oaSx1KTtyZXR1cm4gci53cml0ZUZpbGVTeW5jKGAke3V9LmRvbmVgLCIiLCJ1dGY4IiksYX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZXJnZVNsaWNlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZVNsaWNlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}($i);var qi=dt($i.exports);let eu=(e,t,n)=>{let i=`${vn()}|${mt(6)}|${e}`;return setTimeout((()=>{qi(e,t,n).catch((e=>{console.log(e)}))}),1),i},tu=(t,n)=>{let i="";if(!Me(t))return i=`invalid id[${t}]`,console.log(i),{state:"error",msg:i,path:""};let u=ae(Oi(t,"|"),2,"");if(!Me(u))return i=`can not find fileHash in id[${t}]`,console.log(i),{state:"error",msg:i,path:""};let s=e.resolve(n,u),r=e.resolve(n,`${u}.done`),o=lt(s),c=lt(r),l=o&&c;return!o&&c&&_i(r),{state:l?"success":"merging",msg:"",path:s}};var nu={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9eHR8fE90JiZNdChuZXcgT3QpIT16dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPW1yKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBtbih0LGU9MSxyPXt9KXtsZXQgbj1tcihyLCJwYXRoIiksbz1tcihyLCJmcyIpO2lmKCF3bih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz1tcihyLCJwYXRoIiksdT1tcihyLCJmcyIpO2lmKCF3bih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gd24ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP1JlOmpuKShpLEVyKGEpKSx1PUZyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9Y29uc3QgT249bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gU24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpLG49bXIoZSwiY2h1bmtTaXplIik7aWYoWnIobil8fChuPTY3MTA4ODY0KSxuPWxuKG4pLCFnbih0LHtmczpyfSkpcmV0dXJuIFByb21pc2UucmVqZWN0KCJmcCBpcyBub3QgYSBmaWxlIik7bGV0IG89ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0e2NyZWF0ZTY0OmV9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjp1LGRpZ2VzdDMyOmksaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLHUpe2wodCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQoaSkscigwLGUpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQoaSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1kLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldChpKSx1KG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3Qgdj0ybioqNjRuLTFuO2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQmdn1jb25zdCBkPW5ldyBUZXh0RW5jb2RlcixiPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1iKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCkseShuKDAsZC5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9Yik9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWIpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9Yik9PnAoNDgsdCxvLHUsaSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx5KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHkpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKE9uKSkuaW5zdGFuY2UpfSgpLHU9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKHQse2hpZ2hXYXRlck1hcms6bn0pO2kub24oImRhdGEiLCh0PT57dS51cGRhdGUodCl9KSksaS5vbigiZW5kIiwoKCk9PntsZXQgdD11LmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpO28ucmVzb2x2ZSh0KX0pKSxpLm9uKCJlcnJvciIsby5yZWplY3QpfWNhdGNoKHQpe28ucmVqZWN0KHQudG9TdHJpbmcoKSl9cmV0dXJuIG99bGV0IGNoZWNrVG90YWxIYXNoPWFzeW5jKHIsbixvLHUpPT57bGV0IGk9dC5qb2luKHUsbyksYT0hMTtpZihhPV9uKGkpLCFacihyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTaXplIGluIHBheWxvYWQifX1sZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gU24odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBtbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT0hMTt0cnl7dT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW59Y2F0Y2goZSl7Y29uc29sZS5sb2coImNoZWNrIGVhY2ggZmlsZSBzaXplOiBmcy5zdGF0U3luYyhwYXRoRmlsZSkiLHQucGF0aCxlKX1pZihyJiZ1KXtsZXQgZT1Zcih0Lm5hbWUsYCR7b31fYCkscj0oYT1udWxsPT0oaT1lKT8wOmkubGVuZ3RoKT9pW2EtMV06dm9pZCAwO2lmKCFmdW5jdGlvbih0KXtyZXR1cm4hIXBuKHQpJiZibih0KT49MH0ocikpdGhyb3cgY29uc29sZS5sb2coInYubmFtZSIsdC5uYW1lKSxjb25zb2xlLmxvZygicyIsZSksbmV3IEVycm9yKGBjYW4gbm90IHBhcnNlIGluZGV4IGluIHYubmFtZVske3QubmFtZX1dYCk7cj1ibihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGNoZWNrVG90YWxIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrVG90YWxIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(nu);var iu=dt(nu.exports),uu={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(uu);var su=dt(uu.exports);function ru(s={}){let r=ae(s,"port");je(r)||(r=8080);let o=ae(s,"useInert");gt(o)||(o=!0);let c=ae(s,"pathStaticFiles");Me(c)||(c="dist");let l=ae(s,"pathUploadTemp");Me(l)||(l="./uploadTemp"),ot(l)||bt(l);let a=ae(s,"apiName");Me(a)||(a="api");let D=ae(s,"tokenType");Me(D)||(D="Bearer");let d=ae(s,"sizeSlice");je(d)||(d=1048576);let w=ae(s,"verifyConn");$e(w)||(w=()=>!0);let M=ae(s,"corsOrigins",[]);We(M)||(M=["*"]);let y=ae(s,"delayForSlice","");qe(y)||(y=100),y=Ye(y);let C=null;C=ae(s,"serverHapi")?s.serverHapi:n.server({port:r,routes:{timeout:{server:!1,socket:!1},cors:{origin:M,credentials:!1}}});let I=Lt(),m=(e,...t)=>{setTimeout((()=>{I.emit(e,...t)}),1)};async function g(e){let t=it(),n=it();return n.then((e=>{t.resolve(e)})).catch((e=>{t.reject(e)})),m("upload",e,n),t}async function p(e){let t=it(),n=it();return n.then((e=>{t.resolve(e)})).catch((e=>{t.reject(e)})),m("download",e,n),t}function f(e,t,n={}){let i=new u.Readable;i._read=()=>{},i.push(t),i.push(null);let s=ae(n,"returnType",""),r=ae(n,"returnMsg",""),o=e.response(i).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",i.readableLength);return Me(s)&&o.header("Return-Type",s),Me(r)&&o.header("Return-Msg",r),o}function L(e,t){return Me(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t=""),f(e,Nn({error:t}),{returnType:"error",returnMsg:t})}let h={path:`/${a}/main`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let s=ae(n,"authorization","");s=Me(s)?s:"";{let u=w({apiType:"main",authorization:s,query:i,headers:n,req:e});if(ut(u)&&(u=await u),!0!==u)return L(t,"permission denied")}m("handler",{api:"apiMain",headers:n,query:i});let r=await(()=>{let t=it(),n=[],i=new u.Writable({write(e,t,i){n.push(e),i()}});return i.on("finish",(()=>{})),e.payload.pipe(i),e.payload.on("end",(()=>{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),m("error",`receive payload error: ${e.message}`),t.reject(`receive payload error: ${e.message}`)})),t})(),o=Xn(new Uint8Array(r)),c={},l="",a="";return await async function(e){let t=it(),n=it();n.then((n=>{e.output=n,delete e.input,t.resolve(e)})).catch((e=>{t.reject(e)}));{let t=ae(e,"func",""),i=ae(e,"input",null);m("execute",t,i,n)}return t}(o).then((e=>{c.success=e,l="success",a="need to parse"})).catch((e=>{c.error=e,l="error",a="need to parse"})),f(t,Nn(c),{returnType:l,returnMsg:a})}},b={path:`/${a}/ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"upload-controller",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiUploadCheck",headers:n,query:i});let s=ae(e,"payload.mode","");if("check-total-hash"!==s&&"check-slices-hash"!==s&&"merge-slices-push"!==s&&"merge-slices-get"!==s)return L(t,`invalid mode[${s}] in payload`);let r=ae(e,"payload.fileHash","");if(!Me(r))return L(t,"invalid fileHash in payload");let o={},c="",a="";return await(async()=>{let t=null;if("check-total-hash"===s){let n=ae(e,"payload.filename",""),i=ae(e,"payload.fileSize","");if(t=await iu(i,d,r,l),t.bAllHash){let e={filename:n,path:t.path},i=await g(e);t={...t,...i}}}else if("check-slices-hash"===s){let n=ae(e,"payload.fileSliceHashs",[]);t=await su(n,r,l)}else if("merge-slices-push"===s){let n=ae(e,"payload.chunkTotal","");t={queueId:eu(r,n,l)}}else if("merge-slices-get"===s){let n=ae(e,"payload.filename",""),i=ae(e,"payload.queueId",""),u=tu(i,l);if(t={state:u.state,msg:u.msg,queueId:i,filename:n,path:u.path},"success"===u.state){let e={filename:n,path:u.path},i=await g(e);t={...t,msg:i}}}return t})().then((e=>{o.success=e,c="success",a="need to parse"})).catch((e=>{o.error=e,c="error",a="need to parse"})),f(t,Nn(o),{returnType:c,returnMsg:a})}},A={path:`/${a}/slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,i){let u=ae(n,"headers");u=de(u)?u:"";let s=ae(n,"query");s=de(s)?s:"";let r=ae(u,"authorization","");r=Me(r)?r:"";{let e=w({apiType:"upload-slice",authorization:r,headers:u,query:s});if(ut(e)&&(e=await e),!0!==e)return L(i,"permission denied")}m("handler",{api:"apiUploadSlice",headers:u,query:s});let o=ae(u,"chunk-index",""),c=ae(u,"chunk-total",""),a=ae(u,"package-id","");if(!qe(o))return L(i,"invalid chunkIndex in headers");if(o=Ye(o),!qe(c))return L(i,"invalid chunkTotal in headers");if(c=Ye(c),!Me(a))return L(i,"invalid packageId in headers");let D=e.join(l,`${a}_${o}`),d=t.createWriteStream(D),M={},C="",I="";return await(()=>{let e=it();return n.payload.pipe(d),n.payload.on("end",(()=>{setTimeout((()=>{e.resolve(`chunk[${o+1}/${c}] of packageId[${a}] done`)}),y)})),n.payload.on("error",(t=>{console.log(`apiUploadSlice req.payload chunk[${o+1}/${c}] of packageId[${a}] err`,t),m("error",`receive chunk[${o+1}/${c}] of packageId[${a}] error: ${t.message}`),e.reject(`receive chunk[${o+1}/${c}] of packageId[${a}] error: ${t.message}`)})),e})().then((e=>{M.success=e,C="success",I="need to parse"})).catch((e=>{M.error=e,C="error",I="need to parse",m("error",e)})),f(i,Nn(M),{returnType:C,returnMsg:I})}},x={path:`/${a}/dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"download-get-filename",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let s=ae(e,"payload.fileId","");if(!Me(s))return L(t,"invalid fileId in payload");let r={fileId:s},o={},c="",l="";await p(r).then((e=>{o.success=e,c="success",l="need to parse"})).catch((e=>{o.error=e,c="error",l="need to parse"}));let a=ae(o,"success"),D=ae(a,"streamRead");try{D.destroy()}catch(e){}let d=ae(a,"filename");return Me(d)?(o={success:{filename:d}},f(t,Nn(o),{returnType:c,returnMsg:l})):L(t,"invalid filename")}},N={path:`/${a}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(i,"token","");u=Me(u)?u:"";let s="";Me(u)&&(s=`${D} ${u}`);{let e=w({apiType:"download-get-file",authorization:s,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let r=ae(i,"fileId","");if(r=Me(r)?r:"",!Me(r))return L(t,"invalid fileId in query");let o={fileId:r},c={};if(await p(o).then((e=>{c.success=e})).catch((e=>{c.error=e})),jt(c,"error"))return L(t,"can not get file from fileId");let l=ae(c,"success"),a=ae(l,"streamRead"),d=ae(l,"fileSize");if(!At(d)){try{a.destroy()}catch(e){}return L(t,"invalid fileSize")}let M=ae(l,"fileType");if(!Me(M)){try{a.destroy()}catch(e){}return L(t,"invalid fileType")}return M=xt(M),t.response(a).type(M).header("Content-Length",d)}},Z={path:`/${a}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"download",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownload",headers:n,query:i});let s=ae(e,"payload.fileId","");if(!Me(s))return L(t,"invalid fileId in payload");let r={fileId:s},o={};if(await p(r).then((e=>{o.success=e})).catch((e=>{o.error=e})),jt(o,"error"))return L(t,"can not get file from fileId");let c=ae(o,"success"),l=ae(c,"streamRead"),a=ae(c,"filename");if(!Me(a)){try{l.destroy()}catch(e){}return L(t,"invalid filename")}a=Yt(a);let D=ae(c,"fileSize");if(!At(D)){try{l.destroy()}catch(e){}return L(t,"invalid fileSize")}let d=ae(c,"fileType");if(!Me(d)){try{l.destroy()}catch(e){}return L(t,"invalid fileType")}return d=xt(d),t.response(l).type(d).header("Content-Disposition",`attachment; filename="${a}"`).header("Content-Length",D)}};ae(s,"serverHapi")?C.route([h,b,A,x,N,Z]):async function(){o&&await C.register(i);let e=[];if(o){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}};e=[...e,t]}e=[...e,h,b,A,x,N,Z],C.route(e),await C.start(),console.log(`Server running at: ${C.info.uri}`)}();return I.stop=()=>{C.stop()},I}var ou=function(){return D.Date.now()},cu=Math.max,lu=Math.min;function au(e,t,n){var i,u,s,r,o,c,l=0,a=!1,D=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function w(t){var n=i,s=u;return i=u=void 0,l=t,r=e.apply(s,n)}function M(e){var n=e-c;return void 0===c||n>=t||n<0||D&&e-l>=s}function y(){var e=ou();if(M(e))return C(e);o=setTimeout(y,function(e){var n=t-(e-c);return D?lu(n,s-(e-l)):n}(e))}function C(e){return o=void 0,d&&i?w(e):(i=u=void 0,r)}function I(){var e=ou(),n=M(e);if(i=arguments,u=this,c=e,n){if(void 0===o)return function(e){return l=e,o=setTimeout(y,t),a?w(e):r}(c);if(D)return clearTimeout(o),o=setTimeout(y,t),w(c)}return void 0===o&&(o=setTimeout(y,t)),r}return t=Le(t)||0,A(n)&&(a=!!n.leading,s=(D="maxWait"in n)?cu(Le(n.maxWait)||0,t):s,d="trailing"in n?!!n.trailing:d),I.cancel=function(){void 0!==o&&clearTimeout(o),l=0,i=c=u=o=void 0},I.flush=function(){return void 0===o?r:C(ou())},I}var Du=function(){try{var e=K(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),du=Du;function wu(e,t,n){"__proto__"==t&&du?du(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Mu(e,t,n){(void 0!==n&&!H(e[t],n)||void 0===n&&!(t in e))&&wu(e,t,n)}var yu="object"==typeof exports&&exports&&!exports.nodeType&&exports,Cu=yu&&"object"==typeof module&&module&&!module.nodeType&&module,Iu=Cu&&Cu.exports===yu?D.Buffer:void 0,mu=Iu?Iu.allocUnsafe:void 0;function gu(e,t){if(t)return e.slice();var n=e.length,i=mu?mu(n):new e.constructor(n);return e.copy(i),i}function pu(e){var t=new e.constructor(e.byteLength);return new Kn(t).set(new Kn(e)),t}function fu(e,t){var n=t?pu(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Lu(e,t){var n=-1,i=e.length;for(t||(t=Array(i));++n<i;)t[n]=e[n];return t}var hu=Object.create,bu=function(){function e(){}return function(t){if(!A(t))return{};if(hu)return hu(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Au(e){return"function"!=typeof e.constructor||an(e)?{}:bu(Be(e))}function xu(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Nu=Object.prototype.hasOwnProperty;function Zu(e,t,n){var i=e[t];Nu.call(e,t)&&H(i,n)&&(void 0!==n||t in e)||wu(e,t,n)}function Eu(e,t,n,i){var u=!n;n||(n={});for(var s=-1,r=t.length;++s<r;){var o=t[s],c=i?i(n[o],e[o],o,n,e):void 0;void 0===c&&(c=e[o]),u?wu(n,o,c):Zu(n,o,c)}return n}var Tu=Object.prototype.hasOwnProperty;function Su(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=an(e),n=[];for(var i in e)("constructor"!=i||!t&&Tu.call(e,i))&&n.push(i);return n}function Xu(e){return Mn(e)?cn(e,!0):Su(e)}function vu(e,t,n,i,u,s,r){var o=xu(e,n),l=xu(t,n),a=r.get(l);if(a)Mu(e,n,a);else{var D,d=s?s(o,l,n+"",e,t,r):void 0,w=void 0===d;if(w){var M=c(l),y=!M&&Pt(l),C=!M&&!y&&rn(l);d=l,M||y||C?c(o)?d=o:p(D=o)&&Mn(D)?d=Lu(o):y?(w=!1,d=gu(l,!0)):C?(w=!1,d=fu(l,!0)):d=[]:Re(l)||Ht(l)?(d=o,Ht(o)?d=function(e){return Eu(e,Xu(e))}(o):A(o)&&!x(o)||(d=Au(l))):w=!1}w&&(r.set(l,d),u(d,l,i,s,r),r.delete(l)),Mu(e,n,d)}}function Yu(e,t,n,i,u){e!==t&&Ft(t,(function(s,r){if(u||(u=new Yn),A(s))vu(e,t,r,n,Yu,i,u);else{var o=i?i(xu(e,r),s,r+"",e,t,u):void 0;void 0===o&&(o=s),Mu(e,r,o)}}),Xu)}var ju=Math.max;var zu=du?function(e,t){return du(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:gn,Gu=zu,Fu=Date.now;var Ku=function(e){var t=0,n=0;return function(){var i=Fu(),u=16-(i-n);if(n=i,u>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Gu),Wu=Ku;function ku(e,t){return Wu(function(e,t,n){return t=ju(void 0===t?e.length-1:t,0),function(){for(var i=arguments,u=-1,s=ju(i.length-t,0),r=Array(s);++u<s;)r[u]=i[t+u];u=-1;for(var o=Array(t+1);++u<t;)o[u]=i[u];return o[t]=n(r),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,gn),e+"")}var Vu,Bu=(Vu=function(e,t,n){Yu(e,t,n)},ku((function(e,t){var n=-1,i=t.length,u=i>1?t[i-1]:void 0,s=i>2?t[2]:void 0;for(u=Vu.length>3&&"function"==typeof u?(i--,u):void 0,s&&function(e,t,n){if(!A(n))return!1;var i=typeof t;return!!("number"==i?Mn(n)&&Ot(t,n.length):"string"==i&&t in n)&&H(n[t],e)}(t[0],t[1],s)&&(u=i<3?void 0:u,i=1),e=Object(e);++n<i;){var r=t[n];r&&Vu(e,r,n,u)}return e})));function Hu(e){if(!Me(e))return{};let t={};try{t=JSON.parse(e)}catch(e){t={}}return t}function Uu(e,n={}){let i={};if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let u=ae(n,"fpTableTags","");Me(u)||(u="./tableTags.json");let s=ae(n,"genTag");$e(s)||(s=()=>yt()+"|"+mt(6));let r=(t,...n)=>{setTimeout((()=>{e.emit(t,...n)}),1)};function o(){let e={};try{if(t.existsSync(u)){let n=Hu(t.readFileSync(u,"utf8"));de(n)&&(e=n)}}catch(e){r("error",{msg:"readTableTags catch",err:e})}return e}function c(){try{let e=function(e,t=!1){if(Ge(e))return"";let n="";try{n=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){n=""}return n}(i);t.writeFileSync(u,e,"utf8")}catch(e){r("error",{msg:"writeTableTags catch",err:e})}}let l=au((()=>{c(),r("changeTableTags",i)}),200);return e.readTableTags=o,e.writeTableTags=c,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)i=e;else if("useStorageOnly"===t)i=o();else if("useInputFirst"===t)i=Bu(o(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);i=Bu(e,o())}c()},e.setTableTags=function(e={}){i=Bu(i,e),c()},e.getTableTags=function(){return i},e.updateTableTag=function(e){i[e]=s(),l()},e}var Qu=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Hn(t,On(e)),e=Be(e);return t}:Jn;function Ju(e){return Un(e,Xu,Qu)}var Pu=Object.prototype.hasOwnProperty;var Ru=/\w*$/;var Ou=d?d.prototype:void 0,_u=Ou?Ou.valueOf:void 0;function $u(e,t,n){var i,u,s,r=e.constructor;switch(t){case"[object ArrayBuffer]":return pu(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return function(e,t){var n=t?pu(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 fu(e,n);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return(s=new(u=e).constructor(u.source,Ru.exec(u))).lastIndex=u.lastIndex,s;case"[object Symbol]":return i=e,_u?Object(_u.call(i)):{}}}var qu=un&&un.isMap,es=qu?qt(qu):function(e){return p(e)&&"[object Map]"==Mi(e)};var ts=un&&un.isSet,ns=ts?qt(ts):function(e){return p(e)&&"[object Set]"==Mi(e)},is="[object Arguments]",us="[object Function]",ss="[object Object]",rs={};function os(e,t,n,i,u,s){var r,o=1&t,l=2&t,a=4&t;if(n&&(r=u?n(e,i,u,s):n(e)),void 0!==r)return r;if(!A(e))return e;var D=c(e);if(D){if(r=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Pu.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!o)return Lu(e,r)}else{var d=Mi(e),w=d==us||"[object GeneratorFunction]"==d;if(Pt(e))return gu(e,o);if(d==ss||d==is||w&&!u){if(r=l||w?{}:Au(e),!o)return l?function(e,t){return Eu(e,Qu(e),t)}(e,function(e,t){return e&&Eu(t,Xu(t),e)}(r,e)):function(e,t){return Eu(e,On(e),t)}(e,function(e,t){return e&&Eu(t,yn(t),e)}(r,e))}else{if(!rs[d])return u?e:{};r=$u(e,d,o)}}s||(s=new Yn);var M=s.get(e);if(M)return M;s.set(e,r),ns(e)?e.forEach((function(i){r.add(os(i,t,n,i,e,s))})):es(e)&&e.forEach((function(i,u){r.set(u,os(i,t,n,u,e,s))}));var y=D?void 0:(a?l?Ju:_n:l?Xu:yn)(e);return zt(y||e,(function(i,u){y&&(i=e[u=i]),Zu(r,u,os(i,t,n,u,e,s))})),r}rs[is]=rs["[object Array]"]=rs["[object ArrayBuffer]"]=rs["[object DataView]"]=rs["[object Boolean]"]=rs["[object Date]"]=rs["[object Float32Array]"]=rs["[object Float64Array]"]=rs["[object Int8Array]"]=rs["[object Int16Array]"]=rs["[object Int32Array]"]=rs["[object Map]"]=rs["[object Number]"]=rs[ss]=rs["[object RegExp]"]=rs["[object Set]"]=rs["[object String]"]=rs["[object Symbol]"]=rs["[object Uint8Array]"]=rs["[object Uint8ClampedArray]"]=rs["[object Uint16Array]"]=rs["[object Uint32Array]"]=!0,rs["[object Error]"]=rs[us]=rs["[object WeakMap]"]=!1;function cs(e){return os(e,5)}var ls=xi("length"),as="\\ud800-\\udfff",Ds="["+as+"]",ds="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",ws="\\ud83c[\\udffb-\\udfff]",Ms="[^"+as+"]",ys="(?:\\ud83c[\\udde6-\\uddff]){2}",Cs="[\\ud800-\\udbff][\\udc00-\\udfff]",Is="(?:"+ds+"|"+ws+")"+"?",ms="[\\ufe0e\\ufe0f]?",gs=ms+Is+("(?:\\u200d(?:"+[Ms,ys,Cs].join("|")+")"+ms+Is+")*"),ps="(?:"+[Ms+ds+"?",ds,ys,Cs,Ds].join("|")+")",fs=RegExp(ws+"(?="+ws+")|"+ps+gs,"g");function Ls(e){return ji(e)?function(e){for(var t=fs.lastIndex=0;fs.test(e);)++t;return t}(e):ls(e)}function hs(e){if(null==e)return 0;if(Mn(e))return"string"==typeof(t=e)||!c(t)&&p(t)&&"[object String]"==g(t)?Ls(e):e.length;var t,n=Mi(e);return"[object Map]"==n||"[object Set]"==n?e.size:wn(e).length}function bs(e={}){let t=Lt(),n={},i=null,u=ae(e,"timeAlive");je(u)||(u=1e4),u=Ye(u);let s=ae(e,"timeDetect");return je(s)||(s=50),s=Ye(s),t.trigger=function(e,r){Me(e)?(jt(n,e)||setTimeout((()=>{t.emit("message",{eventName:"enter",key:e,data:r,now:hs(n)})}),1),n[e]={data:r,time:Date.now()},null===i&&(i=setInterval((()=>{pn(n,((e,i)=>{if(Date.now()-e.time>u){let e=cs(n[i]);delete n[i],t.emit("message",{eventName:"leave",key:i,data:e.data,now:hs(n)})}})),de(n)||(clearInterval(i),i=null)}),s))):console.log("trigger need key")},t.get=function(){let e=[];return pn(n,((t,n)=>{e.push({key:n,data:t.data})})),e=cs(e),e},t}function As(e,t={}){let n={};if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=(t,...n)=>{setTimeout((()=>{e.emit(t,...n)}),1)},u=bs(),s=setInterval((()=>{let e=Ti(u.get(),"key"),t={};pn(e,(e=>{t[e]=ae(n,e,[])})),n=t}),1e3);u.on("message",(function({eventName:e,key:t,data:n,now:u}){"enter"===e?i("clientEnter",t,n):"leave"===e&&i("clientLeave",t,n),i("clientChange",u)})),e.on("execute",(function(e,t,s){if("[sys:polling]"===e)try{let e=ae(t,"clientId",""),i=ae(n,e,[]);i=cs(i),n[e]=[],u.trigger(e,t),s.resolve(i)}catch(e){i("error",e),s.reject("[sys:polling] error")}}));return e.getClients=u.get,e.getMessages=()=>cs(n),e.broadcast=e=>{if(!de(n))return;let t={};pn(n,((n,i)=>{n.push({mode:"broadcast",data:e}),t[i]=n})),n=t},e.clearBroadcast=()=>{clearInterval(s)},e}let xs=(e,t)=>{let n={};return pn(e,(e=>{let i=e,u=ae(t,e,"");Me(u)&&(n[i]=u)})),n};function Ns(e,t,n,i={}){if(!de(e))throw new Error("invalid instWConverServer");if(0===hs(t))return e;if(!de(n))return e;let u=ae(i,"genTag");$e(u)||(u=()=>yt()+"|"+mt(6));let s={};return pn(t,(e=>{s[e]=u()})),e.initTableTags(s,"useInputOnly"),pn(t,(t=>{let i=n[t];if(!i)throw new Error(`invalid kpOrm[${t}]`);try{i.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:xs(t,n)})})),e}function Zs(e,t,n,i){for(var u=n-1,s=e.length;++u<s;)if(i(e[u],t))return u;return-1}var Es=Array.prototype.splice;function Ts(e,t){return e&&e.length&&t&&t.length?function(e,t,n,i){var u=i?Zs:vi,s=-1,r=t.length,o=e;for(e===t&&(t=Lu(t)),n&&(o=ne(e,qt(n)));++s<r;)for(var c=0,l=t[s],a=n?n(l):l;(c=u(o,a,c,i))>-1;)o!==e&&Es.call(o,c,1),Es.call(e,c,1);return e}(e,t):e}function Ss(e,t={}){if(!de(e))throw new Error("invalid instWConverServer");let n=ae(t,"getUserIdByToken",null);$e(n)||(n=async()=>"");let i=ae(t,"useDbOrm",null);gt(i)||(i=!1);let u=null;if(i&&(u=ae(t,"operOrm",null),!$e(u)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(i&&(s=ae(t,"tableNames",null),!ze(s)))throw new Error("invalid opt.tableNames when useDbOrm=true");let r=[];i&&(r=ae(t,"methods",null),ze(r)||(r=["select","insert","save","del"]));let o=ae(t,"kpFunExt",null);let c={};async function l(e,t,i){if(!Me(e))return i.resolve({state:"error",msg:"invalid func"}),i;let u="";if(!jt(t,"__sysToken__"))return i.resolve({state:"error",msg:"invalid token"}),i;if(u=xt(t.__sysToken__),!jt(t,"__sysInputArgs__"))return i.resolve({state:"error",msg:"invalid input"}),i;t=t.__sysInputArgs__;let s="";if(s=n(u),ut(s)&&(s=await s),Me(s)||(s=""),"[sys:getFuncList]"===e){let e=yn(c);e=function(e,t){if(!We(e))return[];if((De(t)||Ne(t)||we(t)||gt(t))&&(t=[t]),!We(t))return e;let n=cs(e);return Ts(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return i.resolve(t),i}if(!jt(c,e))return i.resolve({state:"error",msg:`invalid func[${e}]`}),i;let r=c[e];try{let e=await st(r)(s,...t);i.resolve(e)}catch(t){i.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return i}return i&&(s=cs(s),c=function(e,t,n){let i={};return pn(e,(e=>{pn(t,(t=>{i[`${e}.${t}`]=async function(i,u){return await n(i,e,t,u)}}))})),i}(s,r,u)),de(o)&&pn(o,((e,t)=>{c[t]=e})),e.on("execute",(async function(t,n,i){await l(t,n,i).catch((n=>{e.emit("error",n),i.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})}))})),e}function Xs(e,t={}){if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=ae(t,"fpTableTags",null);Me(n)||(n="./tableTags.json");let i=ae(t,"genTag");$e(i)||(i=()=>yt()+"|"+mt(6)),e=new As(e=new Uu(e,{fpTableTags:n,genTag:i}));let u=ae(t,"useDbOrm",null);gt(u)||(u=!0);let s=ae(t,"kpOrm",null),r=ae(t,"operOrm",null),o=ae(t,"tableNamesExec",null),c=ae(t,"methodsExec",null),l=ae(t,"tableNamesSync",null),a=ae(t,"getUserIdByToken",null),D=ae(t,"kpFunExt",null);if(de(D)||(D={}),D={...D,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:xs(l,t)}}},e=new Ss(e,{getUserIdByToken:a,useDbOrm:u,operOrm:r,tableNames:o,methods:c,kpFunExt:D}),u){if(!De(s))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Ns(e,l,s,{genTag:i})}return e}function vs(e={}){let t=Lt(),u=null,s=null,r=ae(e,"port");Ee(r)||(r=8080);let o=ae(e,"corsOrigins",[]);We(o)||(o=["http://localhost"]);let c=ae(e,"useInert");gt(c)||(c=!0);let l=ae(e,"pathStaticFiles");Me(l)||(l="dist");let a=ae(e,"apis");We(a)||(a=[]);let D=ae(e,"apiName");Me(D)||(D="api");let d=ae(e,"pathUploadTemp");Me(d)||(d="./uploadTemp"),ot(d)||bt(d);let w=ae(e,"tokenType");Me(w)||(w="Bearer");let M=ae(e,"sizeSlice");je(M)||(M=1048576);let y=ae(e,"verifyConn");$e(y)||(y=()=>!0);let C=ae(e,"getUserIdByToken",null),I=ae(e,"useDbOrm",null);gt(I)||(I=!0);let m=ae(e,"kpOrm",null),g=ae(e,"operOrm",null),p=ae(e,"tableNamesExec",null),f=ae(e,"methodsExec",null),L=ae(e,"tableNamesSync",null),h=ae(e,"kpFunExt",null),b=ae(e,"fnTableTags",null),A=ae(e,"genTag");$e(A)||(A=()=>yt()+"|"+mt(6));let x=ae(e,"showLog");gt(x)||(x=!0);(async()=>{await(async()=>{u=new n.Server({port:r,routes:{timeout:{server:!1,socket:!1},cors:{origin:o,credentials:!1}}}),c&&await u.register(i);let e=[];c&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],u.route(e)})(),await(async()=>{s=new ru({serverHapi:u,apiName:D,pathUploadTemp:d,tokenType:w,sizeSlice:M,verifyConn:y,corsOrigins:o}),s.on("open",(function(){x&&console.log(`Server[port:${r}]: open`)})),s.on("clientChange",(function(e){x&&console.log(`Server[port:${r}]: now clients: ${e}`)}))})(),await(async()=>{s=new Xs(s,{getUserIdByToken:C,useDbOrm:I,kpOrm:m,operOrm:g,tableNamesExec:p,tableNamesSync:L,methodsExec:f,kpFunExt:h,fnTableTags:b,genTag:A}),s.on("error",(e=>{t.emit("error",e)}))})(),await u.start(),x&&console.log(`Server running at: ${u.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 ht((()=>null!==u)),u),t.getInstWConverServer=async()=>(await ht((()=>null!==s)),s),t}function Ys(e,t){let n=it();if(!ze(e)&&!De(e))return n.reject("rs is not an array or object"),n;let i=!1;if(De(e)){i=!0;let t=[];pn(e,((e,n)=>{t.push({k:n,v:e})})),e=t}$e(t)||(t=function(e){return e});let u=-1,s=[];return e.reduce((function(e,n){return e.then((function(e){s.push(e),u+=1;let r=u,o=n;return i&&(r=n.k,o=n.v),$e(t)?t(o,r):o}))}),Promise.resolve()).then((function(e){var t,i,u,r;s.push(e),r=null==(t=s)?0:t.length,s=r?Si(t,(i=u||void 0===i?1:Ae(i))<0?0:i,r):[],n.resolve(s)})).catch((function(e){n.reject(e)})),n}let js={backup:async function(e){return await Ys(e,(async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()})))},recover:async function(e,n,i,u=!1){if(!lt(e))throw console.log("fp",e),new Error("fp is not exist");if(!de(n))throw console.log("woItems",n),new Error("invalid woItems");$e(i)||(i=null),gt(u)||(u=!1);let s=t.readFileSync(e,"utf8");s=Ri(s);let r=Hu(s);$e(i)&&i(),await Ys(r,(async e=>{console.log("recover...",e.name),u&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return hs(e.data)>0&&(t=await n[e.name].insert(e.data)),t}))}};function zs(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var Gs={exports:{}},Fs={},Ks={exports:{}},Ws={};function ks(){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 Vs=/javascript\s*\:/gim;Ws.whiteList=ks(),Ws.getDefaultWhiteList=ks,Ws.onAttr=function(e,t,n){},Ws.onIgnoreAttr=function(e,t,n){},Ws.safeAttrValue=function(e,t){return Vs.test(t)?"":t};var Bs={indexOf:function(e,t){var n,i;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var i,u;if(Array.prototype.forEach)return e.forEach(t,n);for(i=0,u=e.length;i<u;i++)t.call(n,e[i],i,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,"")}},Hs=Bs;var Us=function(e,t){";"!==(e=Hs.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,u=0,s=0,r="";function o(){if(!i){var n=Hs.trim(e.slice(u,s)),o=n.indexOf(":");if(-1!==o){var c=Hs.trim(n.slice(0,o)),l=Hs.trim(n.slice(o+1));if(c){var a=t(u,r.length,c,l,n);a&&(r+=a+"; ")}}}u=s+1}for(;s<n;s++){var c=e[s];if("/"===c&&"*"===e[s+1]){var l=e.indexOf("*/",s+2);if(-1===l)break;u=(s=l+1)+1,i=!1}else"("===c?i=!0:")"===c?i=!1:";"===c?i||o():"\n"===c&&o()}return Hs.trim(r)},Qs=Ws,Js=Us;function Ps(e){return null==e}function Rs(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Qs.whiteList,e.onAttr=e.onAttr||Qs.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Qs.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Qs.safeAttrValue,this.options=e}Rs.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,i=t.onAttr,u=t.onIgnoreAttr,s=t.safeAttrValue;return Js(e,(function(e,t,r,o,c){var l=n[r],a=!1;if(!0===l?a=l:"function"==typeof l?a=l(o):l instanceof RegExp&&(a=l.test(o)),!0!==a&&(a=!1),o=s(r,o)){var D,d={position:t,sourcePosition:e,source:c,isWhite:a};return a?Ps(D=i(r,o,d))?r+":"+o:D:Ps(D=u(r,o,d))?void 0:D}}))};var Os=Rs;!function(e,t){var n=Ws,i=Os;for(var u in(t=e.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,n)t[u]=n[u];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Ks,Ks.exports);var _s=Ks.exports,$s={indexOf:function(e,t){var n,i;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var i,u;if(Array.prototype.forEach)return e.forEach(t,n);for(i=0,u=e.length;i<u;i++)t.call(n,e[i],i,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}},qs=_s.FilterCSS,er=_s.getDefaultWhiteList,tr=$s;function nr(){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 ir=new qs;function ur(e){return e.replace(sr,"&lt;").replace(rr,"&gt;")}var sr=/</g,rr=/>/g,or=/"/g,cr=/&quot;/g,lr=/&#([a-zA-Z0-9]*);?/gim,ar=/&colon;?/gim,Dr=/&newline;?/gim,dr=/((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,wr=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Mr=/u\s*r\s*l\s*\(.*/gi;function yr(e){return e.replace(or,"&quot;")}function Cr(e){return e.replace(cr,'"')}function Ir(e){return e.replace(lr,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function mr(e){return e.replace(ar,":").replace(Dr," ")}function gr(e){for(var t="",n=0,i=e.length;n<i;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return tr.trim(t)}function pr(e){return e=gr(e=mr(e=Ir(e=Cr(e))))}function fr(e){return e=ur(e=yr(e))}Fs.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"]},Fs.getDefaultWhiteList=nr,Fs.onTag=function(e,t,n){},Fs.onIgnoreTag=function(e,t,n){},Fs.onTagAttr=function(e,t,n){},Fs.onIgnoreTagAttr=function(e,t,n){},Fs.safeAttrValue=function(e,t,n,i){if(n=pr(n),"href"===t||"src"===t){if("#"===(n=tr.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(dr.lastIndex=0,dr.test(n))return""}else if("style"===t){if(wr.lastIndex=0,wr.test(n))return"";if(Mr.lastIndex=0,Mr.test(n)&&(dr.lastIndex=0,dr.test(n)))return"";!1!==i&&(n=(i=i||ir).process(n))}return n=fr(n)},Fs.escapeHtml=ur,Fs.escapeQuote=yr,Fs.unescapeQuote=Cr,Fs.escapeHtmlEntities=Ir,Fs.escapeDangerHtml5Entities=mr,Fs.clearNonPrintableCharacter=gr,Fs.friendlyAttrValue=pr,Fs.escapeAttrValue=fr,Fs.onIgnoreTagStripAll=function(){return""},Fs.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),i=[],u=!1;return{onIgnoreTag:function(s,r,o){if(function(t){return!!n||-1!==tr.indexOf(e,t)}(s)){if(o.isClosing){var c="[/removed]",l=o.position+10;return i.push([!1!==u?u:o.position,l]),u=!1,c}return u||(u=o.position),"[removed]"}return t(s,r,o)},remove:function(e){var t="",n=0;return tr.forEach(i,(function(i){t+=e.slice(n,i[0]),n=i[1]})),t+=e.slice(n)}}},Fs.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var i=e.indexOf("\x3c!--",n);if(-1===i){t+=e.slice(n);break}t+=e.slice(n,i);var u=e.indexOf("--\x3e",i);if(-1===u)break;n=u+3}return t},Fs.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("")},Fs.attributeWrapSign='"',Fs.cssFilter=ir,Fs.getDefaultCSSWhiteList=er;var Lr={},hr=$s;function br(e){var t,n=hr.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=hr.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Ar(e){return"</"===e.slice(0,2)}var xr=/[^a-zA-Z0-9\\_:.-]/gim;function Nr(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Zr(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function Er(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Tr(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}Lr.parseTag=function(e,t,n){var i="",u=0,s=!1,r=!1,o=0,c=e.length,l="",a="";e:for(o=0;o<c;o++){var D=e.charAt(o);if(!1===s){if("<"===D){s=o;continue}}else if(!1===r){if("<"===D){i+=n(e.slice(u,o)),s=o,u=o;continue}if(">"===D||o===c-1){i+=n(e.slice(u,s)),l=br(a=e.slice(s,o+1)),i+=t(s,i.length,l,a,Ar(a)),u=o+1,s=!1;continue}if('"'===D||"'"===D)for(var d=1,w=e.charAt(o-d);""===w.trim()||"="===w;){if("="===w){r=D;continue e}w=e.charAt(o-++d)}}else if(D===r){r=!1;continue}}return u<c&&(i+=n(e.substr(u))),i},Lr.parseAttr=function(e,t){var n=0,i=0,u=[],s=!1,r=e.length;function o(e,n){if(!((e=(e=hr.trim(e)).replace(xr,"").toLowerCase()).length<1)){var i=t(e,n||"");i&&u.push(i)}}for(var c=0;c<r;c++){var l,a=e.charAt(c);if(!1!==s||"="!==a)if(!1===s||c!==i)if(/\s|\n|\t/.test(a)){if(e=e.replace(/\s|\n|\t/g," "),!1===s){if(-1===(l=Nr(e,c))){o(hr.trim(e.slice(n,c))),s=!1,n=c+1;continue}c=l-1;continue}if(-1===(l=Er(e,c-1))){o(s,Tr(hr.trim(e.slice(n,c)))),s=!1,n=c+1;continue}}else;else{if(-1===(l=e.indexOf(a,c+1)))break;o(s,hr.trim(e.slice(i+1,l))),s=!1,n=(c=l)+1}else s=e.slice(n,c),n=c+1,i='"'===e.charAt(n)||"'"===e.charAt(n)?n:Zr(e,c+1)}return n<e.length&&(!1===s?o(e.slice(n)):o(s,Tr(hr.trim(e.slice(n))))),hr.trim(u.join(" "))};var Sr=_s.FilterCSS,Xr=Fs,vr=Lr,Yr=vr.parseTag,jr=vr.parseAttr,zr=$s;function Gr(e){return null==e}function Fr(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=Xr.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=Xr.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":Xr.attributeWrapSign,e.onTag=e.onTag||Xr.onTag,e.onTagAttr=e.onTagAttr||Xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||Xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||Xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||Xr.safeAttrValue,e.escapeHtml=e.escapeHtml||Xr.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Sr(e.css))}Fr.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,i=n.whiteList,u=n.onTag,s=n.onIgnoreTag,r=n.onTagAttr,o=n.onIgnoreTagAttr,c=n.safeAttrValue,l=n.escapeHtml,a=t.attributeWrapSign,D=t.cssFilter;n.stripBlankChar&&(e=Xr.stripBlankChar(e)),n.allowCommentTag||(e=Xr.stripCommentTag(e));var d=!1;n.stripIgnoreTagBody&&(d=Xr.StripTagBody(n.stripIgnoreTagBody,s),s=d.onIgnoreTag);var w=Yr(e,(function(e,t,n,d,w){var M={sourcePosition:e,position:t,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(i,n)},y=u(n,d,M);if(!Gr(y))return y;if(M.isWhite){if(M.isClosing)return"</"+n+">";var C=function(e){var t=zr.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=zr.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=zr.trim(e.slice(0,-1))),{html:e,closing:n}}(d),I=i[n],m=jr(C.html,(function(e,t){var i=-1!==zr.indexOf(I,e),u=r(n,e,t,i);return Gr(u)?i?(t=c(n,e,t,D))?e+"="+a+t+a:e:Gr(u=o(n,e,t,i))?void 0:u:u}));return d="<"+n,m&&(d+=" "+m),C.closing&&(d+=" /"),d+=">"}return Gr(y=s(n,d,M))?l(d):y}),l);return d&&(w=d.remove(w)),w};var Kr=Fr;!function(e,t){var n=Fs,i=Lr,u=Kr;function s(e,t){return new u(t).process(e)}(t=e.exports=s).filterXSS=s,t.FilterXSS=u,function(){for(var e in n)t[e]=n[e];for(var u in i)t[u]=i[u]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(Gs,Gs.exports);var Wr=dt(Gs.exports);function kr(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Vr(e){let t=function(){let e=kr();return Wr||e.xss}();let n=function e(n){return ze(n)||De(n)?(pn(n,(function(t,i){n[i]=e(t)})),n):Me(n)?t(n,{onIgnoreTagAttr:function(e,n,i,u){if("style"===n)return n+'="'+t.escapeAttrValue(i)+'"'}}):n}(cs(e));return n}let Br=null,Hr=null;function Ur(e,t,n,i="save"){if(!de(Br))throw console.log("ds",Br),new Error("invalid ds");let u=Br[e].keys,s=!1;ze(n)||(s=!0,n=[n]);let r=zs();return i.indexOf("insert")>=0&&(u.indexOf("userId")>=0&&pn(n,((e,i)=>{n[i].userId=t})),u.indexOf("timeCreate")>=0&&pn(n,((e,t)=>{n[t].timeCreate=r})),u.indexOf("userIdUpdate")>=0&&pn(n,((e,i)=>{n[i].userIdUpdate=t})),u.indexOf("timeUpdate")>=0&&pn(n,((e,t)=>{n[t].timeUpdate=r}))),(i.indexOf("insert")>=0||i.indexOf("save")>=0)&&(u.indexOf("userIdUpdate")>=0&&pn(n,((e,i)=>{n[i].userIdUpdate=t})),u.indexOf("timeUpdate")>=0&&pn(n,((e,t)=>{n[t].timeUpdate=r}))),n=Ti(n,((e,t)=>{let n={};return pn(e,((e,t)=>{e=Vr(e),n[t]=e})),n})),n=s?n[0]:n}async function Qr(e,t,n,i){let u,s=null;if(!de(Hr))return Promise.reject("無有效woItems");let r=ae(Hr,t,null);if(null===r)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(u=await r.select(i).catch((e=>{console.log(`${t}.select catch`,e),s="取得資料失敗"})),Me(s))return Promise.reject(s)}else if("insert"===n||"save"===n){try{i=Ur(t,e,i,n)}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if("insert"===n?u=await r.insert(i).catch((e=>{console.log(`${t}.save catch`,e),s="新增資料失敗"})):"save"===n&&(u=await r.save(i).catch((e=>{console.log(`${t}.save catch`,e),s="儲存資料失敗"}))),Me(s))return Promise.reject(s);u=ze(i)?Ti(i,(e=>({id:e.id}))):{id:i.id}}else if("del"===n)u=await r.del(i).catch((e=>{console.log(`${t}.del catch`,e),s="刪除資料失敗"}));else if("delAll"===n)u=await r.delAll(i).catch((e=>{console.log(`${t}.delAll catch`,e),s="刪除資料失敗"}));else if("mix"===n){if(!de(i))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;u=[];let o=ae(i,"add",[]);if(hs(o)>0){try{o=Ur(t,e,o,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if(await r.insert(o).catch((e=>{console.log(`${t}.save catch`,e),s="新增資料失敗"})),Me(s))return Promise.reject(s);n=Ti(o,(e=>({id:e.id}))),u=[...u,...n]}let c=ae(i,"del",[]);if(hs(c)>0){if(await r.del(c).catch((e=>{console.log(`${t}.save catch`,e),s="刪除資料失敗"})),Me(s))return Promise.reject(s);n=Ti(c,(e=>({id:e.id}))),u=[...u,...n]}let l=ae(i,"diff",[]);if(hs(l)>0){try{l=Ur(t,e,l)}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if(await r.save(l).catch((e=>{console.log(`${t}.save catch`,e),s="變更資料失敗"})),Me(s))return Promise.reject(s);n=Ti(l,(e=>({id:e.id}))),u=[...u,...n]}}else s=`invalid mode: ${n}`;return Me(s)?Promise.reject(s):u}function Jr(e,t){return Br=e,Hr=t,Qr}function Pr(e,t){var n=[];return mn(e,(function(e,i,u){t(e,i,u)&&n.push(e)})),n}function Rr(e,t){return(c(e)?Qn:Pr)(e,Zi(t))}function Or(e,t=null){if(!ze(e)){let e=it();return e.reject("pms is not an array"),e}return e.reduce(((e,t)=>e.then(t)),Promise.resolve(t))}let _r=[],$r=[],qr=[],eo=null,to=null,no=!0,io=!0;function uo(e){setTimeout((()=>{_r.push(e)}),1)}function so(e){setTimeout((()=>{$r.push(e)}),1)}function ro(e){setTimeout((()=>{qr.push(e)}),1)}async function oo(e,t,n,i){if(!$e(eo))return Promise.reject("invalid mapOrm");if(no&&!Me(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let u="n";if(no){if(!$e(to))return Promise.reject("invalid getUserById");let t=await to(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");u=ae(t,"isAdmin"),"y"!==u&&"n"!==u&&(u="n");let n=ae(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 Ys(_r,(s=>s({woName:t,userId:e,isAdmin:u,mode:n,input:i}))),hs($r)>0){let s={woName:t,userId:e,isAdmin:u,mode:n,input:i},r=await Or($r,s);i=r.input}let s=await eo(e,t,n,i);return io&&"n"===u&&"select"===n&&ze(s)&&(s=Rr(s,(e=>!jt(e,"isActive")||!("n"===e.isActive)))),hs(qr)>0&&(s=await Or(qr,{woName:t,userId:e,isAdmin:u,mode:n,input:i,output:s})),s}function co(e,t,n,i,u={}){let s=function(e,t,n,i){if(!de(e))throw console.log("ds",e),new Error("invalid ds");if(!$e(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!Me(n))throw console.log("url",n),new Error("invalid url");if(!Me(i))throw console.log("db",i),new Error("invalid db");let u={};return pn(yn(e),(e=>{let s=new t({url:n,db:i,cl:e});u[e]=s})),u}(e,t,n,i),r=function(e,t={}){return $e(e)?(eo=e,no=ae(t,"useCheckUser"),gt(no)||(no=!0),to=ae(t,"getUserById"),io=ae(t,"useExcludeWhenNotAdmin"),gt(io)||(io=!0),{addFunCheck:uo,addFunPreProcessing:so,addFunPostProcessing:ro,procOrm:oo}):Promise.reject("invalid mapOrm")}(Jr(e,s),u);return{...js,woItems:s,...r}}function lo(e,t,n=""){if(!We(t))return{};let i={};return pn(t,(function(t){i[t]=ae(e,t,n)})),i}let ao={id:{pk:!0,name:"主鍵",type:"STRING"},ip:{name:"IP",type:"STRING"},timeBlocked:{name:"封鎖時間",type:"STRING"}},Do={id:{pk:!0,name:"主鍵",type:"STRING"},token:{name:"金鑰",type:"STRING"},userId:{name:"使用者主鍵",type:"STRING"},isApp:{name:"是否為應用系統",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},timeEnd:{name:"到期時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},wo={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},account:{name:"帳號",type:"STRING"},password:{name:"密碼",type:"STRING"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},redir:{name:"登入後轉址",type:"STRING"},isAdmin:{name:"是否為系統管理員",type:"STRING"},timeVerified:{name:"驗證時間",type:"STRING"},timeExpired:{name:"過期時間",type:"STRING"},timeBlocked:{name:"封鎖時間",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}};function Mo(e,t={}){let n=ae(t,"useCreateStorage");gt(n)||(n=!1);let{keyTable:i,tableNameCht:u,tableNameEng:s,settings:r,parser:o,funNew:c,funTest:l,ext:a}=e;if(!Me(i))throw new Error(`invalid keyTable[${i}]`);if(Me(u)||(u=i),Me(s)||(s=i),!de(r))throw new Error("invalid settings");de(a)||(a=null),de(o)||(o=null),$e(c)||(c=null);let D=null;$e(l)&&(D=async e=>{if(!de(e))throw new Error("invalid wo");if(!jt(e,i))throw console.log(e),new Error(`keyTable[${i}] is not in wo`);let t=[];try{t=l(),ut(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${i}] funTest catch`,e),new Error(e)}if(0!==hs(t))return n&&await e[i].createStorage(),await e[i].save(t),t});let d={},w={};return pn(yn(r),(e=>{let t=ae(r,`${e}.name`,"");Me(t)&&(d[e]=t);let n=ae(r,`${e}.type`,"");Me(n)&&(w[e]=n)})),{...e,keyTable:i,tableNameCht:u,tableNameEng:s,settings:r,keys:yn(r),kpType:w,kpHead:d,parser:o,funNew:c,funTest:l,funTestAndSave:D,ext:a}}let yo={ips:{keyTable:"ips",tableNameCht:"IP使用者",tableNameEng:"IPs",settings:ao,funNew:(e={})=>{let t=lo(e,yn(ao));return t.id=`${vn()}-${mt()}`,t},funTest:()=>[]},tokens:{keyTable:"tokens",tableNameCht:"金鑰",tableNameEng:"Tokens",settings:Do,funNew:(e={})=>{let t=lo(e,yn(Do));return t.id=`${vn()}-${mt()}`,t.token=`${vn()}-${mt()}`,t.timeCreate=zs(),t.timeEnd=Mt().add(30,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),t.timeUpdate=t.timeCreate,t},funTest:()=>[]},users:{keyTable:"users",tableNameCht:"使用者",tableNameEng:"Users",settings:wo,funNew:(e={})=>{let t=lo(e,yn(wo));return t.id=`${vn()}-${mt()}`,t.timeCreate=zs(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]}},Co={};for(let e in yo)Co[e]=Mo(yo[e],{useCreateStorage:!1});function Io(e){let t;return t=tt(e,1),"Z"===t?`${e=nt(e,1)}+00:00`:e}let mo={checkTZ:function(e){let t;return t=tt(e,1),"Z"===t||(t=tt(e,6),!!/[+|-]\d\d:\d\d/.test(t))},delTZ:function(e){let t;return t=tt(e,1),nt(e,"Z"===t?1:6)},normTZ:Io,sepTZ:function(e){let t=Io(e);return{t:nt(t,6),tz:tt(t,6)}}};function go(e){if(!Me(e))return!1;if(!mo.checkTZ(e))return!1;let t=mo.delTZ(e),n="YYYY-MM-DDTHH:mm:ss.SSS";return t===Mt(t,n).format(n)}function po(e){let t=ae(e,"timeExpired","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")>=t}function fo(e){let t=ae(e,"timeBlocked","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}function Lo(e){return"y"===ae(e,"isActive","")}var ho={exports:{}};function bo(e){try{return JSON.stringify(e)}catch(e){return'"[Circular]"'}}const Ao=function(e,t,n){var i=n&&n.stringify||bo;if("object"==typeof e&&null!==e){var u=t.length+1;if(1===u)return e;var s=new Array(u);s[0]=i(e);for(var r=1;r<u;r++)s[r]=i(t[r]);return s.join(" ")}if("string"!=typeof e)return e;var o=t.length;if(0===o)return e;for(var c="",l=0,a=-1,D=e&&e.length||0,d=0;d<D;){if(37===e.charCodeAt(d)&&d+1<D){switch(a=a>-1?a:0,e.charCodeAt(d+1)){case 100:case 102:if(l>=o)break;if(null==t[l])break;a<d&&(c+=e.slice(a,d)),c+=Number(t[l]),a=d+2,d++;break;case 105:if(l>=o)break;if(null==t[l])break;a<d&&(c+=e.slice(a,d)),c+=Math.floor(Number(t[l])),a=d+2,d++;break;case 79:case 111:case 106:if(l>=o)break;if(void 0===t[l])break;a<d&&(c+=e.slice(a,d));var w=typeof t[l];if("string"===w){c+="'"+t[l]+"'",a=d+2,d++;break}if("function"===w){c+=t[l].name||"<anonymous>",a=d+2,d++;break}c+=i(t[l]),a=d+2,d++;break;case 115:if(l>=o)break;a<d&&(c+=e.slice(a,d)),c+=String(t[l]),a=d+2,d++;break;case 37:a<d&&(c+=e.slice(a,d)),c+="%",a=d+2,d++,l--}++l}++d}if(-1===a)return e;a<D&&(c+=e.slice(a));return c};ho.exports=vo;const xo=function(){function e(e){return void 0!==e&&e}try{return"undefined"!=typeof globalThis||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch(t){return e(self)||e(window)||e(this)||{}}}().console||{},No={mapHttpRequest:Ko,mapHttpResponse:Ko,wrapRequestSerializer:Wo,wrapResponseSerializer:Wo,wrapErrorSerializer:Wo,req:Ko,res:Ko,err:Go,errWithCause:Go};function Zo(e,t){return"silent"===e?1/0:t.levels.values[e]}const Eo=Symbol("pino.logFuncs"),To=Symbol("pino.hierarchy"),So={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function Xo(e,t){const n={logger:t,parent:e[To]};t[To]=n}function vo(e){(e=e||{}).browser=e.browser||{};const t=e.browser.transmit;if(t&&"function"!=typeof t.send)throw Error("pino: transmit option must have a send function");const n=e.browser.write||xo;e.browser.write&&(e.browser.asObject=!0);const i=e.serializers||{},u=function(e,t){if(Array.isArray(e))return e.filter((function(e){return"!stdSerializers.err"!==e}));return!0===e&&Object.keys(t)}(e.browser.serialize,i);let s=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(s=!1);const r=Object.keys(e.customLevels||{}),o=["error","fatal","warn","info","debug","trace"].concat(r);"function"==typeof n&&o.forEach((function(e){n[e]=n})),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const c=e.level||"info",l=Object.create(n);l.log||(l.log=ko),function(e,t,n){const i={};t.forEach((e=>{i[e]=n[e]?n[e]:xo[e]||xo[So[e]||"log"]||ko})),e[Eo]=i}(l,o,n),Xo({},l),Object.defineProperty(l,"levelVal",{get:function(){return Zo(this.level,this)}}),Object.defineProperty(l,"level",{get:function(){return this._level},set:function(e){if("silent"!==e&&!this.levels.values[e])throw Error("unknown level "+e);this._level=e,Yo(this,a,l,"error"),Yo(this,a,l,"fatal"),Yo(this,a,l,"warn"),Yo(this,a,l,"info"),Yo(this,a,l,"debug"),Yo(this,a,l,"trace"),r.forEach((e=>{Yo(this,a,l,e)}))}});const a={transmit:t,serialize:u,asObject:e.browser.asObject,asObjectBindingsOnly:e.browser.asObjectBindingsOnly,formatters:e.browser.formatters,levels:o,timestamp:Fo(e),messageKey:e.messageKey||"msg",onChild:e.onChild||ko};function D(n,s,r){if(!s)throw new Error("missing bindings for child Pino");r=r||{},u&&s.serializers&&(r.serializers=s.serializers);const o=r.serializers;if(u&&o){var c=Object.assign({},i,o),l=!0===e.browser.serialize?Object.keys(c):u;delete s.serializers,jo([s],l,c,this._stdErrSerialize)}function a(e){this._childLevel=1+(0|e._childLevel),this.bindings=s,c&&(this.serializers=c,this._serialize=l),t&&(this._logEvent=zo([].concat(e._logEvent.bindings,s)))}a.prototype=this;const d=new a(this);return Xo(this,d),d.child=function(...e){return D.call(this,n,...e)},d.level=r.level||this.level,n.onChild(d),d}return l.levels=function(e){const t=e.customLevels||{},n=Object.assign({},vo.levels.values,t),i=Object.assign({},vo.levels.labels,function(e){const t={};return Object.keys(e).forEach((function(n){t[e[n]]=n})),t}(t));return{values:n,labels:i}}(e),l.level=c,l.isLevelEnabled=function(e){return!!this.levels.values[e]&&this.levels.values[e]>=this.levels.values[this.level]},l.setMaxListeners=l.getMaxListeners=l.emit=l.addListener=l.on=l.prependListener=l.once=l.prependOnceListener=l.removeListener=l.removeAllListeners=l.listeners=l.listenerCount=l.eventNames=l.write=l.flush=ko,l.serializers=i,l._serialize=u,l._stdErrSerialize=s,l.child=function(...e){return D.call(this,a,...e)},t&&(l._logEvent=zo()),l}function Yo(e,t,n,i){if(Object.defineProperty(e,i,{value:Zo(e.level,n)>Zo(i,n)?ko:n[Eo][i],writable:!0,enumerable:!0,configurable:!0}),e[i]===ko){if(!t.transmit)return;const u=Zo(t.transmit.level||e.level,n);if(Zo(i,n)<u)return}e[i]=function(e,t,n,i){return u=e[Eo][i],function(){const s=t.timestamp(),r=new Array(arguments.length),o=Object.getPrototypeOf&&Object.getPrototypeOf(this)===xo?xo:this;for(var c=0;c<r.length;c++)r[c]=arguments[c];var l=!1;if(t.serialize&&(jo(r,this._serialize,this.serializers,this._stdErrSerialize),l=!0),t.asObject||t.formatters?u.call(o,...function(e,t,n,i,u){const{level:s,log:r=e=>e}=u.formatters||{},o=n.slice();let c=o[0];const l={};let a=1+(0|e._childLevel);if(a<1&&(a=1),i&&(l.time=i),s){const n=s(t,e.levels.values[t]);Object.assign(l,n)}else l.level=e.levels.values[t];if(u.asObjectBindingsOnly){if(null!==c&&"object"==typeof c)for(;a--&&"object"==typeof o[0];)Object.assign(l,o.shift());return[r(l),...o]}if(null!==c&&"object"==typeof c){for(;a--&&"object"==typeof o[0];)Object.assign(l,o.shift());c=o.length?Ao(o.shift(),o):void 0}else"string"==typeof c&&(c=Ao(o.shift(),o));return void 0!==c&&(l[u.messageKey]=c),[r(l)]}(this,i,r,s,t)):u.apply(o,r),t.transmit){const u=t.transmit.level||e._level,o=Zo(u,n),c=Zo(i,n);if(c<o)return;!function(e,t,n,i=!1){const u=t.send,s=t.ts,r=t.methodLevel,o=t.methodValue,c=t.val,l=e._logEvent.bindings;i||jo(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=s,e._logEvent.messages=n.filter((function(e){return-1===l.indexOf(e)})),e._logEvent.level.label=r,e._logEvent.level.value=o,u(r,e._logEvent,c),e._logEvent=zo(l)}(this,{ts:s,methodLevel:i,methodValue:c,transmitLevel:u,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:Zo(e._level,n)},r,l)}};var u}(e,t,n,i);const u=function(e){const t=[];e.bindings&&t.push(e.bindings);let n=e[To];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}(e);0!==u.length&&(e[i]=function(e,t){return function(){return t.apply(this,[...e,...arguments])}}(u,e[i]))}function jo(e,t,n,i){for(const u in e)if(i&&e[u]instanceof Error)e[u]=vo.stdSerializers.err(e[u]);else if("object"==typeof e[u]&&!Array.isArray(e[u])&&t)for(const i in e[u])t.indexOf(i)>-1&&i in n&&(e[u][i]=n[i](e[u][i]))}function zo(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function Go(e){const t={type:e.constructor.name,msg:e.message,stack:e.stack};for(const n in e)void 0===t[n]&&(t[n]=e[n]);return t}function Fo(e){return"function"==typeof e.timestamp?e.timestamp:!1===e.timestamp?Vo:Bo}function Ko(){return{}}function Wo(e){return e}function ko(){}function Vo(){return!1}function Bo(){return Date.now()}vo.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}},vo.stdSerializers=No,vo.stdTimeFunctions=Object.assign({},{nullTime:Vo,epochTime:Bo,unixTime:function(){return Math.round(Date.now()/1e3)},isoTime:function(){return new Date(Date.now()).toISOString()}}),ho.exports.default=vo,ho.exports.pino=vo;var Ho=dt(ho.exports);let Uo=r.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(Uo).href:"undefined"==typeof document?location.href:o&&"SCRIPT"===o.tagName.toUpperCase()&&o.src||new URL("w-web-sso.umd.js",document.baseURI).href),Qo=e.dirname(Uo);let Jo=function(t={}){let n=ae(t,"fdLog");Me(n)||(n="./_logs");let i=ae(t,"interval");"day"!==i&&"hr"!==i&&(i="day");let u=Ho.transport({targets:[{level:"info",target:e.resolve(Qo,"./formatter.mjs"),options:{interval:i,logDir:n}}]});return Ho(u)}({fdLog:"./_logs",interval:"hr"});function Po(){let e=Lt(),t={};function n(t,n){setTimeout((()=>{e.emit(t,n)}),1)}function i(e,i={}){if(jt(t,e))return;let u=ae(i,"fun");$e(u)||(u=async()=>{});let s=ae(i,"inputs");ze(s)||(s=[]);let r=ae(i,"timeExpired");je(r)||(r=5e3),r=Ye(r),t[e]={needExec:!0,fun:u,running:!1,inputs:s,value:null,time:null,timeExpired:r},n("message",{fun:"set",key:e,timeExpired:r})}async function u(e){if(jt(t,e)){let i;n("message",{fun:"get",key:e,msg:"waiting"}),await ht((()=>!t[e].running),{timeInterval:1e3});let u=Date.now();i=t[e].needExec;let s=u-t[e].time;return i?n("message",{fun:"get",key:e,msg:"execute first"}):t[e].timeExpired>0&&s>t[e].timeExpired&&(n("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:s}),i=!0),i?(n("message",{fun:"get",key:e,msg:"fun start"}),t[e].running=!0,t[e].value=await t[e].fun(...t[e].inputs).catch((t=>{n("error",{fun:"get",key:e,msg:t})})),t[e].needExec=!1,t[e].time=u,t[e].running=!1,n("message",{fun:"get",key:e,msg:"fun end"})):n("message",{fun:"get",key:e,msg:"use cache"}),cs(t[e].value)}return n("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=i,e.getProxy=async function(e,t={}){return i(e,t),u(e)},e.get=u,e.update=function(e,i){jt(t,e)&&(n("message",{fun:"updateValue",key:e}),t[e].value=i,t[e].time=Date.now())},e.clear=function(e){jt(t,e)&&(n("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){jt(t,e)&&(n("message",{fun:"remove",key:e}),delete t[e])},e}var Ro,Oo={exports:{}},_o={exports:{}};!function(e){var t;e.exports=(t=Tt(),Ro||(Ro=1,function(e){var t,n,i,u,s,r,o;e.exports=(i=(n=o=Tt()).lib,u=i.Base,s=i.WordArray,(r=n.x64={}).Word=u.extend({init:function(e,t){this.high=e,this.low=t}}),r.WordArray=u.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:8*e.length},toX32:function(){for(var e=this.words,t=e.length,n=[],i=0;i<t;i++){var u=e[i];n.push(u.high),n.push(u.low)}return s.create(n,this.sigBytes)},clone:function(){for(var e=u.clone.call(this),t=e.words=this.words.slice(0),n=t.length,i=0;i<n;i++)t[i]=t[i].clone();return e}}),o)}(_o)),function(){var e=t,n=e.lib.Hasher,i=e.x64,u=i.Word,s=i.WordArray,r=e.algo;function o(){return u.create.apply(u,arguments)}var c=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var a=r.SHA512=n.extend({_doReset:function(){this._hash=new s.init([new u.init(1779033703,4089235720),new u.init(3144134277,2227873595),new u.init(1013904242,4271175723),new u.init(2773480762,1595750129),new u.init(1359893119,2917565137),new u.init(2600822924,725511199),new u.init(528734635,4215389547),new u.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=this._hash.words,i=n[0],u=n[1],s=n[2],r=n[3],o=n[4],a=n[5],D=n[6],d=n[7],w=i.high,M=i.low,y=u.high,C=u.low,I=s.high,m=s.low,g=r.high,p=r.low,f=o.high,L=o.low,h=a.high,b=a.low,A=D.high,x=D.low,N=d.high,Z=d.low,E=w,T=M,S=y,X=C,v=I,Y=m,j=g,z=p,G=f,F=L,K=h,W=b,k=A,V=x,B=N,H=Z,U=0;U<80;U++){var Q,J,P=l[U];if(U<16)J=P.high=0|e[t+2*U],Q=P.low=0|e[t+2*U+1];else{var R=l[U-15],O=R.high,_=R.low,$=(O>>>1|_<<31)^(O>>>8|_<<24)^O>>>7,q=(_>>>1|O<<31)^(_>>>8|O<<24)^(_>>>7|O<<25),ee=l[U-2],te=ee.high,ne=ee.low,ie=(te>>>19|ne<<13)^(te<<3|ne>>>29)^te>>>6,ue=(ne>>>19|te<<13)^(ne<<3|te>>>29)^(ne>>>6|te<<26),se=l[U-7],re=se.high,oe=se.low,ce=l[U-16],le=ce.high,ae=ce.low;J=(J=(J=$+re+((Q=q+oe)>>>0<q>>>0?1:0))+ie+((Q+=ue)>>>0<ue>>>0?1:0))+le+((Q+=ae)>>>0<ae>>>0?1:0),P.high=J,P.low=Q}var De,de=G&K^~G&k,we=F&W^~F&V,Me=E&S^E&v^S&v,ye=T&X^T&Y^X&Y,Ce=(E>>>28|T<<4)^(E<<30|T>>>2)^(E<<25|T>>>7),Ie=(T>>>28|E<<4)^(T<<30|E>>>2)^(T<<25|E>>>7),me=(G>>>14|F<<18)^(G>>>18|F<<14)^(G<<23|F>>>9),ge=(F>>>14|G<<18)^(F>>>18|G<<14)^(F<<23|G>>>9),pe=c[U],fe=pe.high,Le=pe.low,he=B+me+((De=H+ge)>>>0<H>>>0?1:0),be=Ie+ye;B=k,H=V,k=K,V=W,K=G,W=F,G=j+(he=(he=(he=he+de+((De+=we)>>>0<we>>>0?1:0))+fe+((De+=Le)>>>0<Le>>>0?1:0))+J+((De+=Q)>>>0<Q>>>0?1:0))+((F=z+De|0)>>>0<z>>>0?1:0)|0,j=v,z=Y,v=S,Y=X,S=E,X=T,E=he+(Ce+Me+(be>>>0<Ie>>>0?1:0))+((T=De+be|0)>>>0<De>>>0?1:0)|0}M=i.low=M+T,i.high=w+E+(M>>>0<T>>>0?1:0),C=u.low=C+X,u.high=y+S+(C>>>0<X>>>0?1:0),m=s.low=m+Y,s.high=I+v+(m>>>0<Y>>>0?1:0),p=r.low=p+z,r.high=g+j+(p>>>0<z>>>0?1:0),L=o.low=L+F,o.high=f+G+(L>>>0<F>>>0?1:0),b=a.low=b+W,a.high=h+K+(b>>>0<W>>>0?1:0),x=D.low=x+V,D.high=A+k+(x>>>0<V>>>0?1:0),Z=d.low=Z+H,d.high=N+B+(Z>>>0<H>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(i+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=n._createHelper(a),e.HmacSHA512=n._createHmacHelper(a)}(),t.SHA512)}(Oo);var $o=dt(Oo.exports),qo={exports:{}};!function(e){e.exports=Tt().enc.Hex}(qo);var ec=dt(qo.exports);function tc(e,t,n={}){let i=ae(n,"mode","");if(Me(i)||(i="sha512"),"sha512"!==i)throw new Error("暫時不支援sha512以外方法");let u=`${e}:${t}`;return u=function(e,t=!1){if(!Me(e))return"";if(!gt(t))return"";let n=$o(e),i="";return i=t?n.toString(vt):n.toString(ec),i}(u),u}function nc(e,t,{salt:n,minExpired:i}){let u=async(t,n,i={})=>{let u=null,s=ae(i,"deletePassword");gt(s)||(s=!0);let r=await e.users.select({[t]:n,isActive:"y"}).catch((e=>{u=e}));if(u)return console.log(u),console.log("keyUser",t),console.log("valueUser",n),console.log("failed to find user"),Promise.reject("failed to find user");s&&(r=Ti(r,(e=>(delete e.password,e))));let o=hs(r);return 0===o?(console.log("keyUser",t),console.log("valueUser",n),console.log(`can not find the user by ${t}`),Promise.reject(`can not find the user by ${t}`)):o>=2?(console.log("keyUser",t),console.log("valueUser",n),console.log(`duplicate ${t}`),Promise.reject(`duplicate ${t}`)):r[0]},s=async(e,t)=>await u(e,t),r=async(e,t={})=>await s("id",e),o=async t=>{let n=null;if(!ke(i))return console.log("minExpired",i),console.log("invalid minExpired"),Promise.reject("invalid minExpired");let u=Co.tokens.funNew({userId:t});u.timeEnd=Mt().add(i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");let s=ae(u,"token","");return await e.tokens.insert(u).catch((e=>{n=e})),n?(console.log(n),console.log("token",s),console.log("can not create a token from userId"),Promise.reject("can not create a token from userId")):s},c=async(t,n={})=>{let i=await e.tokens.select({token:t}),u=hs(i);if(0===u)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(u>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let s=ae(i,0,""),o=ae(s,"userId",""),c=await(async(e,t={})=>{let n=ae(e,"timeEnd","");if(!go(n))return console.log("tk",e),console.log("timeEnd",n),console.log("invalid timeEnd"),Promise.reject("invalid timeEnd");let i=ae(e,"isApp",""),u=ae(t,"fun",null),s=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<n,o=!0;if("y"!==i&&$e(u)){let t=ae(e,"userId","");o=u(e,await r(t)),ut(o)&&(o=await o)}return s&&o})(s,n);return Jo.info({event:"fun-checkToken",token:t,userId:o,res:c}),c||console.log(`block token[${t}]`),c},l=async(e,t={})=>{let n=null;return await c(e,t).then((e=>{!1===e&&(n="token expired")})).catch((e=>{n=e})),null===n||Promise.reject(n)},a=async(n,i,u,s={})=>{let r=ae(s,"resetOrder");gt(r)||(r=!1),i=function(e,t,n=""){return We(e)&&We(t)?Ti(e,(e=>lo(e,t,n))):[]}(i,Co[n].keys),r&&(i=Ti(i,((e,t)=>(e.order=t+1,e))));let o=(e,t)=>{let n=null,i={};return pn(e,((e,u)=>{let s=ae(e,t,"");return Me(s)?jt(i,s)?(n=`rows[${u}].${t}[${s}] is duplicate`,!1):void(i[s]=!0):(n=`rows[${u}].${t} is not an effective string`,!1)})),n},c=null;if(function(e,t){function n(e){return ze(e)?e:[e]}if(Ke(e))return!1;if(0===(e=n(e)).length)return!1;if(Ke(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(i=e[n],u=t[s],pi(i,u))return!0;var i,u;return!1}(n,["users"])){if(c=o(i,"id"),null!==c)return Promise.reject(c);if(c=o(i,"email"),null!==c)return Promise.reject(c)}let l=i,a=function(e,t,n,i={}){let u=ae(i,"withInfor");gt(u)||(u=!0);let s={del:[],add:[],same:[],diff:[]};if(!Me(n))return console.log("invalid key"),u&&(s.infor={}),s;ze(e)||(e=[e]),ze(t)||(t=[t]),e=Rr(e,(e=>jt(e,n))),t=Rr(t,(e=>jt(e,n)));let r=new Map(t.map((e=>[e[n],e])));for(let t of e){let e=r.get(t[n]);e?(JSON.stringify(t)===JSON.stringify(e)?s.same.push(e):s.diff.push(e),r.delete(t[n])):s.del.push(t)}if(s.add=Array.from(r.values()),u){let e={};for(let t of s.del)e[t[n]]="del";for(let t of s.add)e[t[n]]="add";for(let t of s.diff)e[t[n]]="diff";for(let t of s.same)e[t[n]]="same";s.infor=e}return s}(await e[n].select(),l,u);return hs(a.del)>0&&await t("",n,"del",a.del),hs(a.add)>0&&await t("",n,"insert",a.add),hs(a.diff)>0&&await t("",n,"save",a.diff),l},D=async t=>{let n=await e.tokens.select({token:t}),i=hs(n);if(0===i)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(i>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let u=ae(n,0,null),s=ae(u,"isApp",""),o=null;if("y"!==s){let e=ae(u,"userId","");o=await r(e)}else{let e=ae(u,"userId","");if(!Me(e))return console.log("tk",u),console.log("invalid userId from token"),Promise.reject("invalid userId from token");o={id:e,account:"no account",name:"no name",email:"no email",description:"no description",from:"no from",redir:"no redir",isAdmin:"y",timeVerified:"y",timeExpired:"",timeBlocked:"",isActive:"y"}}return{id:o.id,account:o.account,name:o.name,email:o.email,description:o.description,from:o.from,redir:o.redir,isApp:"y"===s?"y":"n",isAdmin:o.isAdmin,timeVerified:o.timeVerified,timeExpired:o.timeExpired,timeBlocked:o.timeBlocked,isActive:o.isActive}},d=async(e,t,n={})=>{let i=await s(e,t);return de(i)?{id:i.id,account:i.account,name:i.name,email:i.email,description:i.description,from:i.from,redir:i.redir,isAdmin:i.isAdmin,timeVerified:i.timeVerified,timeExpired:i.timeExpired,timeBlocked:i.timeBlocked,isActive:i.isActive}:null},w=async(t={})=>{let n=ae(t,"needActive");gt(n)||(n=!1);let i=ae(t,"deletePassword");gt(i)||(i=!0);let u={};n&&(u={isActive:"y"});let s=await e.users.select(u);return i&&(s=Ti(s,(e=>(delete e.password,e)))),s},M=Po(),y=async(e,t={})=>(await l(e,t),await w(t)),C=async e=>e=await a("users",e,"id",{resetOrder:!0}),I=async()=>await e.tokens.select(),m=Po(),g=async()=>await e.ips.select(),p=Po(),f=!1;setInterval((async()=>{f||(f=!0,await(async()=>{let t=await w({});await Ys(t,(async t=>{let n=!fo(t),i=Me(t.timeBlocked);n&&i&&await e.users.save({id:t.id,timeBlocked:""})}))})().finally((()=>{f=!1})))}),2e3);let L=!1;setInterval((async()=>{L||(L=!0,await(async()=>{let t=await g();await Ys(t,(async t=>{let n=!fo(t),i=Me(t.timeBlocked);n&&i&&await e.ips.save({id:t.id,timeBlocked:""})}))})().finally((()=>{L=!1})))}),2e3);let h={getTokenByKV:async(t,n)=>{let i=null,u=await e.tokens.select({[t]:n}).catch((e=>{i=e}));if(i)return console.log(i),console.log("keyToken",t),console.log("valueToken",n),console.log("failed to find token"),Promise.reject("failed to find token");let s=hs(u);return 0===s?Promise.reject(`can not find the token by keyToken[${t}]`):s>=2?(console.log("keyToken",t),console.log("valueToken",n),console.log(`duplicate token by keyToken[${t}]`),Promise.reject(`duplicate token by keyToken[${t}]`)):u[0]},getIpByKV:async(t,n)=>{let i=null,u=await e.ips.select({[t]:n}).catch((e=>{i=e}));if(i)return console.log(i),console.log("keyIp",t),console.log("valueIp",n),console.log("failed to find ip"),Promise.reject("failed to find ip");let s=hs(u);return 0===s?Promise.reject(`can not find the ip by keyIp[${t}]`):s>=2?(console.log("keyIp",t),console.log("valueIp",n),console.log(`duplicate ip by keyIp[${t}]`),Promise.reject(`duplicate ip by keyIp[${t}]`)):u[0]},getGenUserByKV:s,getGenUserByUserId:r,getGenUserByAccount:async(e,t={})=>await s("account",e),loginByAccountAndPassword:async(e,t)=>{let i=tc(t,n),s=await u("account",e,{deletePassword:!1});if(i!==ae(s,"password",""))return Promise.reject("incorrect user account or password");let r=ae(s,"id",""),c=await o(r);return{id:s.id,account:s.account,name:s.name,email:s.email,description:s.description,from:s.from,redir:s.redir,isAdmin:s.isAdmin,isActive:s.isActive,token:c}},logoutByToken:async t=>{let n=null,i=await e.tokens.select({token:t}),u=hs(i);if(0===u)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(u>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let s=ae(i,0,""),r=ae(s,"userId",""),o=await e.tokens.del({id:s.id}).catch((e=>{n=e}));return n?(console.log(n),console.log("token",t),console.log("failed to delete token"),Promise.reject("failed to delete token")):(o=ae(o,"0.nDeleted",0),1!==o?(console.log("token",t),console.log("can not delete the token"),Promise.reject("can not delete the token")):(Jo.info({event:"fun-logout",token:t,userId:r}),!0))},checkToken:l,refreshToken:async t=>{let n=null,u=await e.tokens.select({token:t}),s=hs(u);if(0===s)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(s>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let r=ae(u,0,""),o=ae(r,"timeEnd","");if(!go(o))return console.log("token",t),console.log("timeEnd",o),console.log("invalid timeEnd"),Promise.reject("invalid timeEnd");let c=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ");if(c>=o)return console.log("token",t),console.log("tn",c),console.log("timeEnd",o),console.log("token expired"),Promise.reject("token expired");let l=Mt().add(i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),a=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ");return await e.tokens.save({id:r.id,timeEnd:l,timeUpdate:a}).catch((e=>{n=e})),n?(console.log(n),console.log("token",t),console.log("can not update timeEnd for token"),Promise.reject("can not update timeEnd for token")):l},getUserByToken:D,checkTokenAndGetUserByToken:async(e,t,n={})=>(await l(e,n),await D(t)),getUserInfor:d,checkTokenAndGetUserInfor:async(e,t,n,i={})=>(await l(e,i),await d(t,n)),getUsersList:w,getUsersListCache:async()=>await M.getProxy("fun",{fun:w,inputs:null,timeExpired:3e4}),checkTokenAndGetUsersList:y,checkTokenAndGetActiveUsersList:async(e,t={})=>await y(e,{...t,needActive:!0}),updateUsersList:C,checkTokenAndUpdateUsersList:async(e,t,n={})=>(await l(e,n),t=await C(t)),getTokensList:I,getTokensListCache:async()=>await m.getProxy("fun",{fun:I,inputs:null,timeExpired:3e4}),checkTokenAndGetTokensList:async(e,t={})=>(await l(e,t),await I()),checkTokenAndUpdateTokensList:async(e,t,n={})=>(await l(e,n),t=await(async e=>await a("tokens",e,"id",{resetOrder:!1}))(t)),getIpsList:g,getIpsListCache:async()=>await p.getProxy("fun",{fun:g,inputs:null,timeExpired:3e4}),checkTokenAndGetIpsList:async(e,t={})=>(await l(e,t),await g()),checkTokenAndUpdateIpsList:async(e,t,n={})=>(await l(e,n),t=await(async e=>await a("ips",e,"id",{resetOrder:!1}))(t))};return h}function ic(e,t,n={}){let{minForAccountLoginFailed:i,numForAccountLoginFailed:u,minBlockForAccountLoginFailed:s,minForTokenCallApi:r,numForTokenCallApi:o,minBlockForTokenCallApi:c,minForIpCallApi:l,numForIpCallApi:a,minBlockForIpCallApi:D}=n,d={},w=async e=>{if(!de(e))return Promise.reject("invalid u");let t=ae(e,"timeBlocked","");if(go(t)){return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}return""!==t&&Promise.reject(`invalid timeBlocked[${t}]`)},M=async e=>{let n=await t.getGenUserByAccount(e);return await w(n)},y=!1;setInterval((async()=>{if(y)return;y=!0;let n=Mt().add(-i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(d,(async(i,r)=>{let o=i.filter((e=>e>=n));d[r]=o,hs(o)>u&&await(async n=>{let i=await t.getGenUserByAccount(n);if(await w(i))return;let u=Mt().add(s,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await e.users.save({id:i.id,timeBlocked:u});let r=await t.getTokenByKV("userId",i.id);await e.tokens.del({id:r.id})})(r).catch((e=>{console.log(e)}))})).finally((()=>{y=!1}))}),2e3);let C={},I=async e=>ae(C,e,[]),m=!1;setInterval((async()=>{if(m)return;m=!0;let n=Mt().add(-r,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(C,(async(i,u)=>{let s=i.filter((e=>e>=n));C[u]=s,hs(s)>o&&await(async n=>{let i=await t.getTokenByKV("token",n),u=ae(i,"userId","");if(!Me(u))return console.log("token",n),console.log("t",i),Promise.reject("invalid userId");let s=await t.getGenUserByUserId(u);if(await w(s))return;let r=Mt().add(c,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await e.users.save({id:s.id,timeBlocked:r}),await e.tokens.del({id:i.id})})(u).catch((e=>{console.log(e)}))})).finally((()=>{m=!1}))}),2e3);let g={},p=async e=>{if(!de(e))return Promise.reject("invalid oip");let t=ae(e,"timeBlocked","");if(go(t)){return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}return""!==t&&Promise.reject(`invalid timeBlocked[${t}]`)},f=async e=>ae(g,e,[]),L=!1;setInterval((async()=>{if(L)return;L=!0;let n=yn(g),i=await t.getIpsList(),u={};pn(i,(e=>{let t=e.ip;u[t]=!0}));let s={};pn(n,(e=>{s[e]=!0}));let r=[];pn(s,((e,t)=>{jt(u,t)||r.push(t)}));let o=Ti(r,(e=>Co.ips.funNew({ip:e})));await e.ips.insert(o).catch((e=>{console.log(e)})).finally((()=>{L=!1}))}),2e3);let h=!1;setInterval((async()=>{if(h)return;h=!0;let n=Mt().add(-l,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(g,(async(i,u)=>{let s=i.filter((e=>e>=n));g[u]=s,hs(s)>a&&await(async n=>{let i=null,u=()=>Mt().add(D,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),s=null;if(await t.getIpByKV("ip",n).then((e=>{s=e})).catch((e=>{let t="can not find the ip by keyIp[ip]";e===t?s=null:i=t})),null!==i)return Promise.reject(i);if(null===s){let t=u();return s=Co.ips.funNew({ip:n,timeBlocked:t}),await e.ips.insert(s).catch((e=>{i=e})),null!==i?Promise.reject(i):void 0}if(await p(s))return;let r=u();await e.ips.save({id:s.id,timeBlocked:r})})(u).catch((e=>{console.log(e)}))})).catch((e=>{console.log(e)})).finally((()=>{h=!1}))}),2e3);let b={loginByAccountAndPassword:async(e,n)=>{if(await M(e))return Promise.reject("account blocked");let i=null;return await t.loginByAccountAndPassword(e,n).then((t=>{i={state:"success",msg:t},d[e]=[]})).catch((t=>{d[e]||(d[e]=[]),d[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")),i={state:"error",msg:t}})),"success"===i.state?i.msg:Promise.reject(i.msg)},getBlockedByAccount:M,getBlockedByIp:async e=>{let n=null;if(!Me(e))return Promise.reject("invalid ip");let i=null;return await t.getIpByKV("ip",e).then((e=>{i=e})).catch((e=>{let t="can not find the ip by keyIp[ip]";e===t?i=null:n=t})),null!==n?Promise.reject(n):null!==i&&await p(i)},callApiByToken:async e=>{C[e]||(C[e]=[]),C[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"))},getInforsByTokenCallApi:I,getCountsByTokenCallApi:async e=>hs(await I(e)),getIpByHeaders:e=>{let t=ae(e,"headers"),n="";if(!Me(n)){let e=ae(t,"x-forwarded-for","");n=ae(Oi(e,","),0,""),n=Ri(n)}return Me(n)||e&&e.info&&e.info.remoteAddress&&(n=e.info.remoteAddress,n=Ri(n)),Me(n)||e&&e.socket&&e.socket.remoteAddress&&(n=e.socket.remoteAddress,n=Ri(n)),Me(n)||e&&e.connection&&e.connection.remoteAddress&&(n=e.connection.remoteAddress,n=Ri(n)),Me(n)||(console.log("headers",t),console.log("can not get ip of user")),n},callApiByIp:async e=>{g[e]||(g[e]=[]),g[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"))},getInforsByIpCallApi:f,getCountsByIpCallApi:async e=>hs(await f(e))};return b}function uc(e,t,n={}){let i=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staUserAccountLogin.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}();return e},u=Po(),r=async()=>await u.getProxy("fun",{fun:i,inputs:null,timeExpired:3e4}),o=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staToken.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}(),n={};pn(e,(e=>{pn(e.data,((e,t)=>{if("count"===t)return!0;n[t]=0}))}));let i=await t.getUsersListCache(),u={count:0};return pn(i,(e=>{u[e.id]=e.name})),e=Ti(e,(e=>{let t=cs(n);var i,s,r;return pn(e.data,((e,n)=>{t[n]=e})),i=t,r={},s=Zi(s=(e,t)=>"count"===t?t:ae(u,t,t)),Cn(i,(function(e,t,n){wu(r,s(e,t,n),e)})),t=r,{time:e.time,data:{count:e.count,...t}}})),e},c=Po(),l=async()=>await c.getProxy("fun",{fun:o,inputs:null,timeExpired:3e4}),a=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staIp.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}(),t={};return pn(e,(e=>{pn(e.data,((e,n)=>{if("count"===n)return!0;t[n]=0}))})),e=Ti(e,(e=>{let n=cs(t);return pn(e.data,((e,t)=>{n[t]=e})),{time:e.time,data:{count:e.count,...n}}})),e},D=Po(),d=async()=>await D.getProxy("fun",{fun:a,inputs:null,timeExpired:3e4}),w={getStaUserSummary:async()=>{let e=await t.getUsersListCache(),n=hs(e),i=0;i=hs(Rr(e,(e=>Lo(e))));let u=0;u=hs(Rr(e,(e=>fo(e))));let s=0;s=hs(Rr(e,(e=>po(e))));return{total:n,active:i,blocked:u,expired:s}},getStaTokenSummary:async()=>{let e=Mt().add(-24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),n=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"),i=Mt().add(24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),u=await t.getTokensListCache(),s=hs(u),r=0;r=hs(Rr(u,(t=>t.timeCreate>=e)));let o=0;o=hs(Rr(u,(e=>e.timeEnd>=n&&e.timeEnd<=i)));let c=0;c=hs(Rr(u,(e=>function(e){let t=ae(e,"timeEnd","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")>t}(e))));return{active:s-c,created24h:r,ending24h:o,ended:c}},getStaIpSummary:async()=>{let e=Mt().add(-24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),n=await t.getIpsListCache(),i=0;{let t=Rr(await d(),(t=>Mt(t.time,"YYYY-MM-DDTHH").format("YYYY-MM-DDTHH:mm:ss.SSSZ")>=e));s="data.count",i=(u=t)&&u.length?function(e,t){for(var n,i=-1,u=e.length;++i<u;){var s=t(e[i]);void 0!==s&&(n=void 0===n?s:n+s)}return n}(u,Zi(s)):0}var u,s;let r=0;r=hs(Rr(n,(e=>fo(e))));return{conn24h:i,blocked:r}},getStaUserAccountLogin:r,checkTokenAndGetStaUserAccountLogin:async(e,n={})=>(await t.checkToken(e,n),await r()),getStaToken:l,checkTokenAndGetStaToken:async(e,n={})=>(await t.checkToken(e,n),await l()),getStaIp:d,checkTokenAndGetStaIp:async(e,n={})=>(await t.checkToken(e,n),await d())};return w}var sc={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 i=function(e){return"object"==typeof e?null!==e:"function"==typeof e},u=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e},s=function(e){try{return!!e()}catch(e){return!0}},r=!s((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),o=t.document,c=i(o)&&i(o.createElement),l=function(e){return c?o.createElement(e):{}},a=!r&&!s((function(){return 7!=Object.defineProperty(l("div"),"a",{get:function(){return 7}}).a})),D=function(e,t){if(!i(e))return e;var n,u;if(t&&"function"==typeof(n=e.toString)&&!i(u=n.call(e)))return u;if("function"==typeof(n=e.valueOf)&&!i(u=n.call(e)))return u;if(!t&&"function"==typeof(n=e.toString)&&!i(u=n.call(e)))return u;throw TypeError("Can't convert object to primitive value")},d=Object.defineProperty,w={f:r?Object.defineProperty:function(e,t,n){if(u(e),t=D(t,!0),u(n),a)try{return d(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}},M=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=r?function(e,t,n){return w.f(e,t,M(1,n))}:function(e,t,n){return e[t]=n,e},C={}.hasOwnProperty,I=function(e,t){return C.call(e,t)},m=0,g=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++m+g).toString(36))},f=e((function(e){var i="__core-js_shared__",u=t[i]||(t[i]={});(e.exports=function(e,t){return u[e]||(u[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=f("native-function-to-string",Function.toString),h=e((function(e){var i=p("src"),u="toString",s=(""+L).split(u);n.inspectSource=function(e){return L.call(e)},(e.exports=function(e,n,u,r){var o="function"==typeof u;o&&(I(u,"name")||y(u,"name",n)),e[n]!==u&&(o&&(I(u,i)||y(u,i,e[n]?""+e[n]:s.join(String(n)))),e===t?e[n]=u:r?e[n]?e[n]=u:y(e,n,u):(delete e[n],y(e,n,u)))})(Function.prototype,u,(function(){return"function"==typeof this&&this[i]||L.call(this)}))})),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},A=function(e,t,n){if(b(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,u){return e.call(t,n,i,u)}}return function(){return e.apply(t,arguments)}},x="prototype",N=function(e,i,u){var s,r,o,c,l=e&N.F,a=e&N.G,D=e&N.S,d=e&N.P,w=e&N.B,M=a?t:D?t[i]||(t[i]={}):(t[i]||{})[x],C=a?n:n[i]||(n[i]={}),I=C[x]||(C[x]={});for(s in a&&(u=i),u)o=((r=!l&&M&&void 0!==M[s])?M:u)[s],c=w&&r?A(o,t):d&&"function"==typeof o?A(Function.call,o):o,M&&h(M,s,o,e&N.U),C[s]!=o&&y(C,s,c),d&&I[s]!=o&&(I[s]=o)};t.core=n,N.F=1,N.G=2,N.S=4,N.P=8,N.B=16,N.W=32,N.U=64,N.R=128;var Z,E=N,T=Math.ceil,S=Math.floor,X=function(e){return isNaN(e=+e)?0:(e>0?S:T)(e)},v=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Y=(Z=!1,function(e,t){var n,i,u=String(v(e)),s=X(t),r=u.length;return s<0||s>=r?Z?"":void 0:(n=u.charCodeAt(s))<55296||n>56319||s+1===r||(i=u.charCodeAt(s+1))<56320||i>57343?Z?u.charAt(s):n:Z?u.slice(s,s+2):i-56320+(n-55296<<10)+65536});E(E.P,"String",{codePointAt:function(e){return Y(this,e)}}),n.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=X(e))<0?j(e+t,0):z(e,t)},F=String.fromCharCode,K=String.fromCodePoint;E(E.S+E.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,n=arguments,i=[],u=arguments.length,s=0;u>s;){if(t=+n[s++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");i.push(t<65536?F(t):F(55296+((t-=65536)>>10),t%1024+56320))}return i.join("")}}),n.String.fromCodePoint;var W,k,V,B,H,U,Q,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),k="start",V=[],B=0,H=1,U=0,Q=void 0,J=void 0,P=void 0;do{Q=ue(),we[k]()}while("eof"!==Q.type);return"function"==typeof t?ie({"":P},"",t):P};function ie(e,t,n){var i=e[t];if(null!=i&&"object"==typeof i)if(Array.isArray(i))for(var u=0;u<i.length;u++){var s=String(u),r=ie(i,s,n);void 0===r?delete i[s]:Object.defineProperty(i,s,{value:r,writable:!0,enumerable:!0,configurable:!0})}else for(var o in i){var c=ie(i,o,n);void 0===c?delete i[o]:Object.defineProperty(i,o,{value:c,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,i)}function ue(){for(R="default",O="",_=!1,$=1;;){q=se();var e=oe[R]();if(e)return e}}function se(){if(W[B])return String.fromCodePoint(W.codePointAt(B))}function re(){var e=se();return"\n"===e?(H++,U=0):e?U+=e.length:U++,e&&(B+=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 re();case"/":return re(),void(R="comment");case void 0:return re(),ce("eof")}if(!te.isSpaceSeparator(q))return oe[k]();re()},comment:function(){switch(q){case"*":return re(),void(R="multiLineComment");case"/":return re(),void(R="singleLineComment")}throw Ce(re())},multiLineComment:function(){switch(q){case"*":return re(),void(R="multiLineCommentAsterisk");case void 0:throw Ce(re())}re()},multiLineCommentAsterisk:function(){switch(q){case"*":return void re();case"/":return re(),void(R="default");case void 0:throw Ce(re())}re(),R="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return re(),void(R="default");case void 0:return re(),ce("eof")}re()},value:function(){switch(q){case"{":case"[":return ce("punctuator",re());case"n":return re(),le("ull"),ce("null",null);case"t":return re(),le("rue"),ce("boolean",!0);case"f":return re(),le("alse"),ce("boolean",!1);case"-":case"+":return"-"===re()&&($=-1),void(R="sign");case".":return O=re(),void(R="decimalPointLeading");case"0":return O=re(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=re(),void(R="decimalInteger");case"I":return re(),le("nfinity"),ce("numeric",1/0);case"N":return re(),le("aN"),ce("numeric",NaN);case'"':case"'":return _='"'===re(),O="",void(R="string")}throw Ce(re())},identifierNameStartEscape:function(){if("u"!==q)throw Ce(re());re();var e=de();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw me()}O+=e,R="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"‌":case"‍":return void(O+=re());case"\\":return re(),void(R="identifierNameEscape")}if(!te.isIdContinueChar(q))return ce("identifier",O);O+=re()},identifierNameEscape:function(){if("u"!==q)throw Ce(re());re();var e=de();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!te.isIdContinueChar(e))throw me()}O+=e,R="identifierName"},sign:function(){switch(q){case".":return O=re(),void(R="decimalPointLeading");case"0":return O=re(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=re(),void(R="decimalInteger");case"I":return re(),le("nfinity"),ce("numeric",$*(1/0));case"N":return re(),le("aN"),ce("numeric",NaN)}throw Ce(re())},zero:function(){switch(q){case".":return O+=re(),void(R="decimalPoint");case"e":case"E":return O+=re(),void(R="decimalExponent");case"x":case"X":return O+=re(),void(R="hexadecimal")}return ce("numeric",0*$)},decimalInteger:function(){switch(q){case".":return O+=re(),void(R="decimalPoint");case"e":case"E":return O+=re(),void(R="decimalExponent")}if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},decimalPointLeading:function(){if(te.isDigit(q))return O+=re(),void(R="decimalFraction");throw Ce(re())},decimalPoint:function(){switch(q){case"e":case"E":return O+=re(),void(R="decimalExponent")}return te.isDigit(q)?(O+=re(),void(R="decimalFraction")):ce("numeric",$*Number(O))},decimalFraction:function(){switch(q){case"e":case"E":return O+=re(),void(R="decimalExponent")}if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},decimalExponent:function(){switch(q){case"+":case"-":return O+=re(),void(R="decimalExponentSign")}if(te.isDigit(q))return O+=re(),void(R="decimalExponentInteger");throw Ce(re())},decimalExponentSign:function(){if(te.isDigit(q))return O+=re(),void(R="decimalExponentInteger");throw Ce(re())},decimalExponentInteger:function(){if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},hexadecimal:function(){if(te.isHexDigit(q))return O+=re(),void(R="hexadecimalInteger");throw Ce(re())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return ce("numeric",$*Number(O));O+=re()},string:function(){switch(q){case"\\":return re(),void(O+=ae());case'"':return _?(re(),ce("string",O)):void(O+=re());case"'":return _?void(O+=re()):(re(),ce("string",O));case"\n":case"\r":throw Ce(re());case"\u2028":case"\u2029":ge(q);break;case void 0:throw Ce(re())}O+=re()},start:function(){switch(q){case"{":case"[":return ce("punctuator",re())}R="value"},beforePropertyName:function(){switch(q){case"$":case"_":return O=re(),void(R="identifierName");case"\\":return re(),void(R="identifierNameStartEscape");case"}":return ce("punctuator",re());case'"':case"'":return _='"'===re(),void(R="string")}if(te.isIdStartChar(q))return O+=re(),void(R="identifierName");throw Ce(re())},afterPropertyName:function(){if(":"===q)return ce("punctuator",re());throw Ce(re())},beforePropertyValue:function(){R="value"},afterPropertyValue:function(){switch(q){case",":case"}":return ce("punctuator",re())}throw Ce(re())},beforeArrayValue:function(){if("]"===q)return ce("punctuator",re());R="value"},afterArrayValue:function(){switch(q){case",":case"]":return ce("punctuator",re())}throw Ce(re())},end:function(){throw Ce(re())}};function ce(e,t){return{type:e,value:t,line:H,column:U}}function le(e){for(var t=0,n=e;t<n.length;t+=1){var i=n[t];if(se()!==i)throw Ce(re());re()}}function ae(){switch(se()){case"b":return re(),"\b";case"f":return re(),"\f";case"n":return re(),"\n";case"r":return re(),"\r";case"t":return re(),"\t";case"v":return re(),"\v";case"0":if(re(),te.isDigit(se()))throw Ce(re());return"\0";case"x":return re(),De();case"u":return re(),de();case"\n":case"\u2028":case"\u2029":return re(),"";case"\r":return re(),"\n"===se()&&re(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Ce(re())}return re()}function De(){var e="",t=se();if(!te.isHexDigit(t))throw Ce(re());if(e+=re(),t=se(),!te.isHexDigit(t))throw Ce(re());return e+=re(),String.fromCodePoint(parseInt(e,16))}function de(){for(var e="",t=4;t-- >0;){var n=se();if(!te.isHexDigit(n))throw Ce(re());e+=re()}return String.fromCodePoint(parseInt(e,16))}var we={start:function(){if("eof"===Q.type)throw Ie();Me()},beforePropertyName:function(){switch(Q.type){case"identifier":case"string":return J=Q.value,void(k="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===Q.type)throw Ie();k="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Q.type)throw Ie();Me()},beforeArrayValue:function(){if("eof"===Q.type)throw Ie();"punctuator"!==Q.type||"]"!==Q.value?Me():ye()},afterPropertyValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforeArrayValue");case"]":ye()}},end:function(){}};function Me(){var e;switch(Q.type){case"punctuator":switch(Q.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Q.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),k=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var n=V[V.length-1];k=null==n?"end":Array.isArray(n)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];k=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Ce(e){return fe(void 0===e?"JSON5: invalid end of input at "+H+":"+U:"JSON5: invalid character '"+pe(e)+"' at "+H+":"+U)}function Ie(){return fe("JSON5: invalid end of input at "+H+":"+U)}function me(){return fe("JSON5: invalid identifier character at "+H+":"+(U-=5))}function ge(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 fe(e){var t=new SyntaxError(e);return t.lineNumber=H,t.columnNumber=U,t}var Le=function(e,t,n){var i,u,s,r=[],o="",c="";if(null==t||"object"!=typeof t||Array.isArray(t)||(n=t.space,s=t.quote,t=t.replacer),"function"==typeof t)u=t;else if(Array.isArray(t)){i=[];for(var l=0,a=t;l<a.length;l+=1){var D=a[l],d=void 0;"string"==typeof D?d=D:("number"==typeof D||D instanceof String||D instanceof Number)&&(d=String(D)),void 0!==d&&i.indexOf(d)<0&&i.push(d)}}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)),c=" ".substr(0,n)):"string"==typeof n&&(c=n.substr(0,10)),w("",{"":e});function w(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))),u&&(n=u.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?M(n):"number"==typeof n?String(n):"object"==typeof n?Array.isArray(n)?I(n):y(n):void 0}function M(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"},i="",u=0;u<e.length;u++){var r=e[u];switch(r){case"'":case'"':t[r]++,i+=r;continue;case"\0":if(te.isDigit(e[u+1])){i+="\\x00";continue}}if(n[r])i+=n[r];else if(r<" "){var o=r.charCodeAt(0).toString(16);i+="\\x"+("00"+o).substring(o.length)}else i+=r}var c=s||Object.keys(t).reduce((function(e,n){return t[e]<t[n]?e:n}));return c+(i=i.replace(new RegExp(c,"g"),n[c]))+c}function y(e){if(r.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");r.push(e);var t=o;o+=c;for(var n,u,s=[],l=0,a=i||Object.keys(e);l<a.length;l+=1){var D=a[l],d=w(D,e);if(void 0!==d){var M=C(D)+":";""!==c&&(M+=" "),M+=d,s.push(M)}}if(0===s.length)n="{}";else if(""===c)n="{"+(u=s.join(","))+"}";else{var y=",\n"+o;u=s.join(y),n="{\n"+o+u+",\n"+t+"}"}return r.pop(),o=t,n}function C(e){if(0===e.length)return M(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return M(e);for(var n=t.length;n<e.length;n++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return M(e);return e}function I(e){if(r.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");r.push(e);var t=o;o+=c;for(var n,i=[],u=0;u<e.length;u++){var s=w(String(u),e);i.push(void 0!==s?s:"null")}if(0===i.length)n="[]";else if(""===c)n="["+i.join(",")+"]";else{var l=",\n"+o,a=i.join(l);n="[\n"+o+a+",\n"+t+"]"}return r.pop(),o=t,n}},he={parse:ne,stringify:Le},be=he,Ae=be;return Ae}()}(sc);var rc=dt(sc.exports);let oc=e.resolve(),cc=e.resolve(oc,"settings.json"),lc=e=>{cc=e},ac=()=>{let e=t.readFileSync(cc,"utf8");return rc.parse(e)};return function(n,i,u,s){let r=null;if(!$e(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!Me(i))throw console.log("invalid url",i),new Error("invalid url");if(!Me(u))throw console.log("invalid db",u),new Error("invalid db");lt(s)||(s="./settings.json"),lc(s);let o=ac(),c=ae(o,"serverPort");je(c)||(c=11007),c=Ye(c);let l=ae(o,"useCheckUser",!1),a=ae(o,"getUserById",null),D=ae(o,"useExcludeWhenNotAdmin",!1),d=ae(o,"webName",{}),w=ae(o,"webDescription",{}),M=ae(o,"webLogo",""),y=ae(o,"webBackgoundGradientColors",[]);We(y)||(y=["#FFE0B2","#FFCC80","#FFF59D","#F2D6A2","#F0CC88"]);let C=ae(o,"webKey",""),I=ae(o,"salt",""),m=ae(o,"minExpired","");ke(m)||(m=30);let g=ae(o,"minForAccountLoginFailed","");ke(g)||(g=10);let p=ae(o,"numForAccountLoginFailed","");ke(p)||(p=3);let f=ae(o,"minBlockForAccountLoginFailed","");ke(f)||(f=30);let L=ae(o,"minForTokenCallApi","");ke(L)||(L=10);let h=ae(o,"numForTokenCallApi","");ke(h)||(h=1e3);let b=ae(o,"minBlockForTokenCallApi","");ke(b)||(b=30);let A=ae(o,"minForIpCallApi","");ke(A)||(A=10);let x=ae(o,"numForIpCallApi","");ke(x)||(x=1e4);let N=ae(o,"minBlockForIpCallApi","");ke(N)||(N=30);let Z=ae(o,"userLogo",""),E=ae(o,"subfolder","");Me(E)&&("/"===tt(E,1)&&(E=nt(E,1)),"/"!==et(E,1)&&(E=`/${E}`));let T=ae(o,"showLanguage","n"),S=ae(o,"language","eng"),X=ae(o,"showModeEditUsers","n"),v=ae(o,"modeEditUsers","n"),Y=ae(o,"showModeEditTokens","n"),j=ae(o,"modeEditTokens","n"),z=ae(o,"showModeEditIps","n"),G=ae(o,"modeEditIps","n");ae(o,"mappingBy","");let F=ae(o,"kpLangExt",null),K={useCheckUser:l,getUserById:a,useExcludeWhenNotAdmin:D},W={};try{W=co(Co,n,i,u,K)}catch(e){console.log(e)}let{woItems:k,procOrm:V}=W,B=nc(k,V,{salt:I,minExpired:m}),H=ic(k,B,{minForAccountLoginFailed:g,numForAccountLoginFailed:p,minBlockForAccountLoginFailed:f,minForTokenCallApi:L,numForTokenCallApi:h,minBlockForTokenCallApi:b,minForIpCallApi:A,numForIpCallApi:x,minBlockForIpCallApi:N}),U=uc(0,B,{}),Q=(e,t)=>{let n=go(ae(t,"timeVerified",""));let i=!po(t),u=!fo(t),s=function(e){return"y"===ae(e,"isAdmin","")}(t),r=Lo(t);return n&&i&&u&&s&&r},J="dist",P="./node_modules/w-web-sso/dist";ot(P)&&(J=P);let R="index.html";try{let n=e.resolve(J,"index.tmp");if(lt(n)||(n=e.resolve(J,R)),!lt(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let i=e.resolve(J,R),u=t.readFileSync(n,"utf8");u=at(u,"/msso/","{sfd}/"),u=at(u,"{sfd}",E),u=at(u,"{language}",S),t.writeFileSync(i,u,"utf8")}catch(e){console.log(e),console.log(`can not generate ${R}`)}let O=[{method:"GET",path:"/api/logoutSsoUser",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/logoutSsoUser",token:t}),await B.logoutByToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/checkToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/checkToken",token:t}),H.callApiByToken(t),await B.checkToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/refreshToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/refreshToken",token:t}),H.callApiByToken(t),await B.refreshToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/logoutByToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/logoutByToken",token:t}),H.callApiByToken(t),await B.logoutByToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getSsoUsersList",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/getSsoUsersList",token:t}),H.callApiByToken(t),await B.checkTokenAndGetUsersList(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getSsoUserInfor",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token",""),n=ae(e,"query.key",""),i=ae(e,"query.value","");Jo.info({event:"api/getSsoUserInfor",token:t,key:n,value:i}),H.callApiByToken(t);let u=null;return u="token"===n?await B.checkTokenAndGetUserByToken(t,i):await B.checkTokenAndGetUserInfor(t,n,i),de(u)?u:(console.log("token",t),console.log("key",n,"value",i),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))();return _e(n.msg)&&(n.msg=n.msg.message),n}}];return r=new vs({port:o.serverPort,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:i,req:u})=>{let s=H.getIpByHeaders(u),r=ae(i,"origin",""),o=ae(i,"referer","");Jo.info({event:"verifyConn",ip:s,origin:r,referer:o}),H.callApiByIp(s);let c=!0;return await H.getBlockedByIp(s).then((e=>{c=e})).catch((()=>{c=!0})),c=!c,c||console.log(`block ip[${s}]`),c},getUserIdByToken:async e=>"",corsOrigins:["*"],useDbOrm:!1,tableNamesExec:[],methodsExec:[],tableNamesSync:[],kpFunExt:{getWebInfor:async e=>({webName:d,webDescription:w,webLogo:M,webBackgoundGradientColors:y,webKey:C,userLogo:Z,showLanguage:T,language:S,showModeEditUsers:X,modeEditUsers:v,showModeEditTokens:Y,modeEditTokens:j,showModeEditIps:z,modeEditIps:G,kpLangExt:F}),checkToken:async(e,t)=>(Jo.info({event:"kpfun-checkToken",token:t}),await B.checkToken(t)),refreshToken:async(e,t)=>(Jo.info({event:"kpfun-refreshToken",token:t}),await B.refreshToken(t)),loginByAccountAndPassword:async(e,t,n)=>{Jo.info({event:"kpfun-loginByAccountAndPassword-before",account:t});let i=null,u="";return await H.loginByAccountAndPassword(t,n).then((e=>{i=e})).catch((e=>{u=e})),de(i)?Jo.info({event:"kpfun-loginByAccountAndPassword-success",account:t}):Jo.info({event:"kpfun-loginByAccountAndPassword-error",account:t,msg:u}),de(i)?i:Promise.reject(u)},logoutByToken:async(e,t)=>(Jo.info({event:"kpfun-logoutByToken",token:t}),await B.logoutByToken(t)),getUserByToken:async(e,t)=>(Jo.info({event:"kpfun-getUserByToken",token:t}),await B.checkTokenAndGetUserByToken(t,t)),getUserInfor:async(e,t,n,i)=>(Jo.info({event:"kpfun-getUserInfor",token:t,key:n,value:i}),await B.checkTokenAndGetUserInfor(t,n,i)),getUsersList:async(e,t)=>(Jo.info({event:"kpfun-getUsersList",token:t}),await B.checkTokenAndGetUsersList(t,{fun:Q})),updateUsersList:async(e,t,n)=>(Jo.info({event:"kpfun-updateUsersList",token:t}),await B.checkTokenAndUpdateUsersList(t,n,{fun:Q})),getTokensList:async(e,t)=>(Jo.info({event:"kpfun-getTokensList",token:t}),await B.checkTokenAndGetTokensList(t,{fun:Q})),updateTokensList:async(e,t,n)=>(Jo.info({event:"kpfun-updateTokensList",token:t}),await B.checkTokenAndUpdateTokensList(t,n,{fun:Q})),getIpsList:async(e,t)=>(Jo.info({event:"kpfun-getIpsList",token:t}),await B.checkTokenAndGetIpsList(t,{fun:Q})),updateIpsList:async(e,t,n)=>(Jo.info({event:"kpfun-updateIpsList",token:t}),await B.checkTokenAndUpdateIpsList(t,n,{fun:Q})),getStaUserSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaUserSummary",token:t}),await U.getStaUserSummary(t,{fun:Q})),getStaTokenSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaTokenSummary",token:t}),await U.getStaTokenSummary(t,{fun:Q})),getStaIpSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaIpSummary",token:t}),await U.getStaIpSummary(t,{fun:Q})),getStaUserAccountLogin:async(e,t)=>(Jo.info({event:"kpfun-getStaUserAccountLogin",token:t}),await U.checkTokenAndGetStaUserAccountLogin(t,{fun:Q})),getStaToken:async(e,t)=>(Jo.info({event:"kpfun-getStaToken",token:t}),await U.checkTokenAndGetStaToken(t,{fun:Q})),getStaIp:async(e,t)=>(Jo.info({event:"kpfun-getStaIp",token:t}),await U.checkTokenAndGetStaIp(t,{fun:Q}))},fnTableTags:"tableTags-web-sso.json"}),r}}));
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("worker_threads"),require("url")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads","url"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-sso"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.require$$0,e.url)}(this,(function(e,t,n,i,u,s,r){"use strict";var o="undefined"!=typeof document?document.currentScript:null,c=Array.isArray,l="object"==typeof global&&global&&global.Object===Object&&global,a="object"==typeof self&&self&&self.Object===Object&&self,D=l||a||Function("return this")(),d=D.Symbol,w=Object.prototype,M=w.hasOwnProperty,y=w.toString,C=d?d.toStringTag:void 0;var I=Object.prototype.toString;var m=d?d.toStringTag:void 0;function g(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?function(e){var t=M.call(e,C),n=e[C];try{e[C]=void 0;var i=!0}catch(e){}var u=y.call(e);return i&&(t?e[C]=n:delete e[C]),u}(e):function(e){return I.call(e)}(e)}function p(e){return null!=e&&"object"==typeof e}function f(e){return"symbol"==typeof e||p(e)&&"[object Symbol]"==g(e)}var L=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h=/^\w*$/;function b(e,t){if(c(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!f(e))||(h.test(e)||!L.test(e)||null!=t&&e in Object(t))}function A(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function x(e){if(!A(e))return!1;var t=g(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var N,Z=D["__core-js_shared__"],E=(N=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+N:"";var T=Function.prototype.toString;function S(e){if(null!=e){try{return T.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var X=/^\[object .+?Constructor\]$/,v=Function.prototype,Y=Object.prototype,j=v.toString,z=Y.hasOwnProperty,G=RegExp("^"+j.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function F(e){return!(!A(e)||(t=e,E&&E in t))&&(x(e)?G:X).test(S(e));var t}function K(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return F(n)?n:void 0}var W=K(Object,"create");var k=Object.prototype.hasOwnProperty;var V=Object.prototype.hasOwnProperty;function B(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}function H(e,t){return e===t||e!=e&&t!=t}function U(e,t){for(var n=e.length;n--;)if(H(e[n][0],t))return n;return-1}B.prototype.clear=function(){this.__data__=W?W(null):{},this.size=0},B.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},B.prototype.get=function(e){var t=this.__data__;if(W){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return k.call(t,e)?t[e]:void 0},B.prototype.has=function(e){var t=this.__data__;return W?void 0!==t[e]:V.call(t,e)},B.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=W&&void 0===t?"__lodash_hash_undefined__":t,this};var Q=Array.prototype.splice;function J(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}J.prototype.clear=function(){this.__data__=[],this.size=0},J.prototype.delete=function(e){var t=this.__data__,n=U(t,e);return!(n<0)&&(n==t.length-1?t.pop():Q.call(t,n,1),--this.size,!0)},J.prototype.get=function(e){var t=this.__data__,n=U(t,e);return n<0?void 0:t[n][1]},J.prototype.has=function(e){return U(this.__data__,e)>-1},J.prototype.set=function(e,t){var n=this.__data__,i=U(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};var P=K(D,"Map");function R(e,t){var n,i,u=e.__data__;return("string"==(i=typeof(n=t))||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==n:null===n)?u["string"==typeof t?"string":"hash"]:u.map}function O(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var i=e[t];this.set(i[0],i[1])}}O.prototype.clear=function(){this.size=0,this.__data__={hash:new B,map:new(P||J),string:new B}},O.prototype.delete=function(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t},O.prototype.get=function(e){return R(this,e).get(e)},O.prototype.has=function(e){return R(this,e).has(e)},O.prototype.set=function(e,t){var n=R(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this};function _(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var i=arguments,u=t?t.apply(this,i):i[0],s=n.cache;if(s.has(u))return s.get(u);var r=e.apply(this,i);return n.cache=s.set(u,r)||s,r};return n.cache=new(_.Cache||O),n}_.Cache=O;var $=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q=/\\(\\)?/g,ee=function(e){var t=_(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($,(function(e,n,i,u){t.push(i?u.replace(q,"$1"):n||e)})),t})),te=ee;function ne(e,t){for(var n=-1,i=null==e?0:e.length,u=Array(i);++n<i;)u[n]=t(e[n],n,e);return u}var ie=d?d.prototype:void 0,ue=ie?ie.toString:void 0;function se(e){if("string"==typeof e)return e;if(c(e))return ne(e,se)+"";if(f(e))return ue?ue.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function re(e){return null==e?"":se(e)}function oe(e,t){return c(e)?e:b(e,t)?[e]:te(re(e))}function ce(e){if("string"==typeof e||f(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function le(e,t){for(var n=0,i=(t=oe(t,e)).length;null!=e&&n<i;)e=e[ce(t[n++])];return n&&n==i?e:void 0}function ae(e,t,n){var i=null==e?void 0:le(e,t);return void 0===i?n:i}function De(e){return"[object Object]"===Object.prototype.toString.call(e)}function de(e){if(De(e)){for(let t in e)return!0;return!1}return!1}function we(e){return"[object String]"===Object.prototype.toString.call(e)}function Me(e){return!(!we(e)||""===e)}var ye=/\s/;var Ce=/^\s+/;function Ie(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&ye.test(e.charAt(t)););return t}(e)+1).replace(Ce,""):e}var me=/^[-+]0x[0-9a-f]+$/i,ge=/^0b[01]+$/i,pe=/^0o[0-7]+$/i,fe=parseInt;function Le(e){if("number"==typeof e)return e;if(f(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=Ie(e);var n=ge.test(e);return n||pe.test(e)?fe(e.slice(2),n?2:8):me.test(e)?NaN:+e}var he=1/0;function be(e){return e?(e=Le(e))===he||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Ae(e){var t=be(e),n=t%1;return t==t?n?t-n:t:0}function xe(e){return e!=e}function Ne(e){let t=!1;if(Me(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(xe(e))return!1;t=!0}return t}function Ze(e){if(!Ne(e))return 0;return be(e)}function Ee(e){return!!Ne(e)&&(e=Ze(e),"number"==typeof(t=e)&&t==Ae(t));var t}var Te=D.isFinite,Se=Math.min;var Xe,ve=(Xe=Math["round"],function(e,t){if(e=Le(e),(t=null==t?0:Se(Ae(t),292))&&Te(e)){var n=(re(e)+"e").split("e");return+((n=(re(Xe(n[0]+"e"+(+n[1]+t)))+"e").split("e"))[0]+"e"+(+n[1]-t))}return Xe(e)});function Ye(e){if(!Ne(e))return 0;e=Ze(e);let t=ve(e);return"0"===String(t)?0:t}function je(e){if(!Ee(e))return!1;return Ye(e)>0}function ze(e){return"[object Array]"===Object.prototype.toString.call(e)}function Ge(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Fe(e){if(De(e)){for(let t in e)return!1;return!0}return!1}function Ke(e){return!!Ge(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Fe(e)||(!!function(e){return!(!we(e)||""!==e)}(e)||(!!function(e){return!!ze(e)&&0===e.length}(e)||!!xe(e)))))}function We(e){return!!ze(e)&&(0!==e.length&&(1!==e.length||!Ke(e[0])))}function ke(e){if(!Ne(e))return!1;return Ze(e)>0}function Ve(e,t){return function(n){return e(t(n))}}var Be=Ve(Object.getPrototypeOf,Object),He=Function.prototype,Ue=Object.prototype,Qe=He.toString,Je=Ue.hasOwnProperty,Pe=Qe.call(Object);function Re(e){if(!p(e)||"[object Object]"!=g(e))return!1;var t=Be(e);if(null===t)return!0;var n=Je.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Qe.call(n)==Pe}function Oe(e){if(!p(e))return!1;var t=g(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Re(e)}function _e(e){return Oe(e)}function $e(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function qe(e){if(!Ee(e))return!1;return Ye(e)>=0}function et(e,t){return Me(e)&&qe(t)?0===(t=Ye(t))?"":e.substring(0,t):""}function tt(e,t){if(!Me(e))return"";if(!qe(t))return"";if(0===(t=Ye(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function nt(e,t){return Me(e)&&qe(t)?0===(t=Ye(t))?e:et(e,e.length-t):""}function it(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}function ut(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}let st=function(e){if(!$e(e))throw new Error("fn is not a function");return function(){let t=it(),n=null,i=null;try{n=e.apply(this,arguments)}catch(e){i=e}return null!==i?t.resolve({state:"error",msg:i}):ut(n)?n.then((e=>{t.resolve({state:"success",msg:e})})).catch((e=>{"cancelled"===ae(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})})):t.resolve({state:"success",msg:n}),t}};function rt(e,t={}){let n=ae(t,"fs");if(!n.existsSync(e))return!1;let i=n.lstatSync(e);return!i.isFile()&&!i.isSymbolicLink()}function ot(e){return rt(e,{fs:t})}function ct(e,t={}){let n=ae(t,"fs");return!!n.existsSync(e)&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function lt(e){return ct(e,{fs:t})}function at(e,t,n){if(!Me(e))return"";if(!Me(t))return"";if(!we(n))return"";return String(e).replaceAll(t,n)}var Dt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function dt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wt={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,i="millisecond",u="second",s="minute",r="hour",o="day",c="week",l="month",a="quarter",D="year",d="date",w="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|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,C={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 i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(n)+e},m={s:I,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),i=Math.floor(n/60),u=n%60;return(t<=0?"+":"-")+I(i,2,"0")+":"+I(u,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var i=12*(n.year()-t.year())+(n.month()-t.month()),u=t.clone().add(i,l),s=n-u<0,r=t.clone().add(i+(s?-1:1),l);return+(-(i+(n-u)/(s?u-r:r-u))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:D,w:c,d:o,D:d,h:r,m:s,s:u,ms:i,Q:a}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},g="en",p={};p[g]=C;var f="$isDayjsObject",L=function(e){return e instanceof x||!(!e||!e[f])},h=function e(t,n,i){var u;if(!t)return g;if("string"==typeof t){var s=t.toLowerCase();p[s]&&(u=s),n&&(p[s]=n,u=s);var r=t.split("-");if(!u&&r.length>1)return e(r[0])}else{var o=t.name;p[o]=t,u=o}return!i&&u&&(g=u),u||!i&&g},b=function(e,t){if(L(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},A=m;A.l=h,A.i=L,A.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function C(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var I=C.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(A.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(M);if(i){var u=i[2]-1||0,s=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],u,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)):new Date(i[1],u,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)}}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 A},I.isValid=function(){return!(this.$d.toString()===w)},I.isSame=function(e,t){var n=b(e);return this.startOf(t)<=n&&n<=this.endOf(t)},I.isAfter=function(e,t){return b(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<b(e)},I.$g=function(e,t,n){return A.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,i=!!A.u(t)||t,a=A.p(e),w=function(e,t){var u=A.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return i?u:u.endOf(o)},M=function(e,t){return A.w(n.toDate()[e].apply(n.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,C=this.$M,I=this.$D,m="set"+(this.$u?"UTC":"");switch(a){case D:return i?w(1,0):w(31,11);case l:return i?w(1,C):w(0,C+1);case c:var g=this.$locale().weekStart||0,p=(y<g?y+7:y)-g;return w(i?I-p:I+(6-p),C);case o:case d:return M(m+"Hours",0);case r:return M(m+"Minutes",1);case s:return M(m+"Seconds",2);case u:return M(m+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var n,c=A.p(e),a="set"+(this.$u?"UTC":""),w=(n={},n[o]=a+"Date",n[d]=a+"Date",n[l]=a+"Month",n[D]=a+"FullYear",n[r]=a+"Hours",n[s]=a+"Minutes",n[u]=a+"Seconds",n[i]=a+"Milliseconds",n)[c],M=c===o?this.$D+(t-this.$W):t;if(c===l||c===D){var y=this.clone().set(d,1);y.$d[w](M),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else w&&this.$d[w](M);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[A.p(e)]()},I.add=function(i,a){var d,w=this;i=Number(i);var M=A.p(a),y=function(e){var t=b(w);return A.w(t.date(t.date()+Math.round(e*i)),w)};if(M===l)return this.set(l,this.$M+i);if(M===D)return this.set(D,this.$y+i);if(M===o)return y(1);if(M===c)return y(7);var C=(d={},d[s]=t,d[r]=n,d[u]=e,d)[M]||1,I=this.$d.getTime()+i*C;return A.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||w;var i=e||"YYYY-MM-DDTHH:mm:ssZ",u=A.z(this),s=this.$H,r=this.$m,o=this.$M,c=n.weekdays,l=n.months,a=n.meridiem,D=function(e,n,u,s){return e&&(e[n]||e(t,i))||u[n].slice(0,s)},d=function(e){return A.s(s%12||12,e,"0")},M=a||function(e,t,n){var i=e<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(y,(function(e,i){return i||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return A.s(t.$y,4,"0");case"M":return o+1;case"MM":return A.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 A.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return D(n.weekdaysMin,t.$W,c,2);case"ddd":return D(n.weekdaysShort,t.$W,c,3);case"dddd":return c[t.$W];case"H":return String(s);case"HH":return A.s(s,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return M(s,r,!0);case"A":return M(s,r,!1);case"m":return String(r);case"mm":return A.s(r,2,"0");case"s":return String(t.$s);case"ss":return A.s(t.$s,2,"0");case"SSS":return A.s(t.$ms,3,"0");case"Z":return u}return null}(e)||u.replace(":","")}))},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(i,d,w){var M,y=this,C=A.p(d),I=b(i),m=(I.utcOffset()-this.utcOffset())*t,g=this-I,p=function(){return A.m(y,I)};switch(C){case D:M=p()/12;break;case l:M=p();break;case a:M=p()/3;break;case c:M=(g-m)/6048e5;break;case o:M=(g-m)/864e5;break;case r:M=g/n;break;case s:M=g/t;break;case u:M=g/e;break;default:M=g}return w?M:A.a(M)},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(),i=h(e,t,!0);return i&&(n.$L=i),n},I.clone=function(){return A.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()},C}(),N=x.prototype;return b.prototype=N,[["$ms",i],["$s",u],["$m",s],["$H",r],["$W",o],["$M",l],["$y",D],["$D",d]].forEach((function(e){N[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),b.extend=function(e,t){return e.$i||(e(t,x,b),e.$i=!0),b},b.locale=h,b.isDayjs=L,b.unix=function(e){return b(1e3*e)},b.en=p[g],b.Ls=p,b.p={},b}()}(wt);var Mt=dt(wt.exports);function yt(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYY-MM-DDTHH:mm:ssZ")}let Ct="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),It=Ct.length;function mt(e=32){let t=[];e=je(e)?Ye(e):32;for(let n=0;n<e;n++)t[n]=Ct[0|Math.random()*It];return t.join("")}function gt(e){return!0===(t=e)||!1===t||p(t)&&"[object Boolean]"==g(t);var t}var pt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0===--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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}(pt);var ft=dt(pt.exports);function Lt(){return new ft}async function ht(e,t={}){let n=null,i=it();if(!$e(e))return i.reject("waitfunction需輸入函數f"),i;let u=async()=>{let t=e();return ut(t)&&(t=await t),t};if(n=await u(),!0===n)return i.resolve(),i;let s=ae(t,"attemptNum",null);je(s)||(s=200);let r=ae(t,"timeInterval",null);je(r)||(r=1e3);let o=0,c=setInterval((async()=>{o+=1,n=await u(),!0===n&&(clearInterval(c),i.resolve()),o>s&&(clearInterval(c),i.reject(`exceeded attemptNum[${s}]`))}),r);return i}function bt(e){return function(e,t={}){let n=ae(t,"fs");if(rt(e,{fs:n}))return{success:"input folder is already exists: "+e};if(n.existsSync(e))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 At(e){return"number"==typeof e||p(e)&&"[object Number]"==g(e)}function xt(e){if(!Me(e)&&!Ne(e)&&!f(e))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var Nt={exports:{}};var Zt,Et={exports:{}};function Tt(){return Zt||(Zt=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!==Dt&&Dt.crypto&&(n=Dt.crypto),!n)try{n=require("crypto")}catch(e){}var i=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.")},u=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),s={},r=s.lib={},o=r.Base={extend:function(e){var t=u(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)}},c=r.WordArray=o.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||a).stringify(this)},concat:function(e){var t=this.words,n=e.words,i=this.sigBytes,u=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s<u;s++){var r=n[s>>>2]>>>24-s%4*8&255;t[i+s>>>2]|=r<<24-(i+s)%4*8}else for(var o=0;o<u;o+=4)t[i+o>>>2]=n[o>>>2];return this.sigBytes+=u,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(i());return new c.init(t,e)}}),l=s.enc={},a=l.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],u=0;u<n;u++){var s=t[u>>>2]>>>24-u%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i<t;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(n,t/2)}},D=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],u=0;u<n;u++){var s=t[u>>>2]>>>24-u%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i<t;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(n,t)}},d=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)))}},w=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,i=this._data,u=i.words,s=i.sigBytes,r=this.blockSize,o=s/(4*r),l=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*r,a=e.min(4*l,s);if(l){for(var D=0;D<l;D+=r)this._doProcessBlock(u,D);n=u.splice(0,l),i.sigBytes-=a}return new c.init(n,a)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});r.Hasher=w.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){w.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 M.HMAC.init(e,n).finalize(t)}}});var M=s.algo={};return s}(Math),t)}(Et)),Et.exports}!function(e){e.exports=Tt().enc.Utf8}(Nt);var St=dt(Nt.exports),Xt={exports:{}};!function(e){var t;e.exports=(t=Tt(),function(){var e=t,n=e.lib.WordArray;function i(e,t,i){for(var u=[],s=0,r=0;r<t;r++)if(r%4){var o=i[e.charCodeAt(r-1)]<<r%4*2|i[e.charCodeAt(r)]>>>6-r%4*2;u[s>>>2]|=o<<24-s%4*8,s++}return n.create(u,s)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,i=this._map;e.clamp();for(var u=[],s=0;s<n;s+=3)for(var r=(t[s>>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o<n;o++)u.push(i.charAt(r>>>6*(3-o)&63));var c=i.charAt(64);if(c)for(;u.length%4;)u.push(c);return u.join("")},parse:function(e){var t=e.length,n=this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var s=0;s<n.length;s++)u[n.charCodeAt(s)]=s}var r=n.charAt(64);if(r){var o=e.indexOf(r);-1!==o&&(t=o)}return i(e,t,u)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Xt);var vt=dt(Xt.exports);function Yt(e){if(!Me(e))return"";let t=St.parse(e);return vt.stringify(t)}function jt(e,t){return!!De(e)&&(!(!Me(t)&&!Ne(t))&&t in e)}function zt(e,t){for(var n=-1,i=null==e?0:e.length;++n<i&&!1!==t(e[n],n,e););return e}var Gt,Ft=function(e,t,n){for(var i=-1,u=Object(e),s=n(e),r=s.length;r--;){var o=s[Gt?r:++i];if(!1===t(u[o],o,u))break}return e};function Kt(e){return p(e)&&"[object Arguments]"==g(e)}var Wt=Object.prototype,kt=Wt.hasOwnProperty,Vt=Wt.propertyIsEnumerable,Bt=Kt(function(){return arguments}())?Kt:function(e){return p(e)&&kt.call(e,"callee")&&!Vt.call(e,"callee")},Ht=Bt;var Ut="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qt=Ut&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Qt&&Qt.exports===Ut?D.Buffer:void 0,Pt=(Jt?Jt.isBuffer:void 0)||function(){return!1},Rt=/^(?:0|[1-9]\d*)$/;function Ot(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Rt.test(e))&&e>-1&&e%1==0&&e<t}function _t(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var $t={};function qt(e){return function(t){return e(t)}}$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=!0,$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object Boolean]"]=$t["[object DataView]"]=$t["[object Date]"]=$t["[object Error]"]=$t["[object Function]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object WeakMap]"]=!1;var en="object"==typeof exports&&exports&&!exports.nodeType&&exports,tn=en&&"object"==typeof module&&module&&!module.nodeType&&module,nn=tn&&tn.exports===en&&l.process,un=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||nn&&nn.binding&&nn.binding("util")}catch(e){}}(),sn=un&&un.isTypedArray,rn=sn?qt(sn):function(e){return p(e)&&_t(e.length)&&!!$t[g(e)]},on=Object.prototype.hasOwnProperty;function cn(e,t){var n=c(e),i=!n&&Ht(e),u=!n&&!i&&Pt(e),s=!n&&!i&&!u&&rn(e),r=n||i||u||s,o=r?function(e,t){for(var n=-1,i=Array(e);++n<e;)i[n]=t(n);return i}(e.length,String):[],l=o.length;for(var a in e)!t&&!on.call(e,a)||r&&("length"==a||u&&("offset"==a||"parent"==a)||s&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ot(a,l))||o.push(a);return o}var ln=Object.prototype;function an(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ln)}var Dn=Ve(Object.keys,Object),dn=Object.prototype.hasOwnProperty;function wn(e){if(!an(e))return Dn(e);var t=[];for(var n in Object(e))dn.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Mn(e){return null!=e&&_t(e.length)&&!x(e)}function yn(e){return Mn(e)?cn(e):wn(e)}function Cn(e,t){return e&&Ft(e,t,yn)}var In=function(e,t){return function(n,i){if(null==n)return n;if(!Mn(n))return e(n,i);for(var u=n.length,s=t?u:-1,r=Object(n);(t?s--:++s<u)&&!1!==i(r[s],s,r););return n}}(Cn),mn=In;function gn(e){return e}function pn(e,t){var n;return(c(e)?zt:mn)(e,"function"==typeof(n=t)?n:gn)}function fn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Ln(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function hn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function bn(e){if(!(fn(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||Ln(e)||hn(e)))return null;var t;try{if(e.byteLength)return e.byteLength}catch(e){}try{if(e.length)return e.length}catch(e){}try{if(e.size)return e.size}catch(e){}return null}function An(e){if(!Me(e))return new Uint8Array;let t;try{t=function(e){if(!we(e))return new Uint8Array;let t=vt.parse(e),n=t.words,i=t.sigBytes,u=new Uint8Array(i);for(let e=0;e<i;e++){let t=n[e>>>2]>>>24-e%4*8&255;u[e]=t}return u}(Yt(e))}catch(e){return new Uint8Array}return t}function xn(e,t,n=0,i=!0,u=52,s=8){return function(e,t,n,i,u,s){if(!Ne(e))return null;if(!Ln(t))return null;if(!Ee(n))return null;if(!gt(i))return null;if(!Ee(u))return null;if(!Ee(s))return null;let r,o,c;e=Ze(e);let l=8*s-u-1,a=(1<<l)-1,D=a>>1,d=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?s-1:0,M=i?-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,r=a):(r=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-r))<1&&(r--,c*=2),(e+=r+D>=1?d/c:d*Math.pow(2,1-D))*c>=2&&(r++,c/=2),r+D>=a?(o=0,r=a):r+D>=1?(o=(e*c-1)*Math.pow(2,u),r+=D):(o=e*Math.pow(2,D-1)*Math.pow(2,u),r=0));u>=8;t[n+w]=255&o,w+=M,o/=256,u-=8);for(r=r<<u|o,l+=u;l>0;t[n+w]=255&r,w+=M,r/=256,l-=8);return t[n+w-M]|=128*y,null}(e,t,n,i,u,s)}function Nn(e){let t=[],n=[];if(!We(e)&&!de(e))return null;let i=[],u=[];function s(e){i.push(bn(e)),u.push(e)}try{let r=function(e){if(!De(e))return{results:"",binarys:[]};if(Fe(e))return{results:"",binarys:[]};let t="",n=[];try{let i=-1;t=JSON.stringify(e,(function(e,t){if(Ln(t)){i+=1;let e=`[Uint8Array]::${i}`;return n.push(t),e}if(hn(t)){i+=1;let e=`[Uint16Array]::${i}`;return n.push(t),e}if(fn(t)){i+=1;let e=`[ArrayBuffer]::${i}`;return n.push(t),e}return Oe(t)&&(t=t.toString()),t}))}catch(e){}return{results:t,binarys:n}}(e);s(An(r.results)),pn(r.binarys,(e=>{s(e)}));let o=i,c=An(JSON.stringify(o)),l=new Uint8Array(8);xn(bn(c),l),t.push(l),t.push(c),pn(u,(e=>{t.push(e)})),pn(t,(e=>{n=function(e,t){let n=bn(e),i=bn(t),u=new Uint8Array(n+i);return u.set(new Uint8Array(e),0),u.set(new Uint8Array(t),n),u}(n,e)}))}catch(e){return null}return n}function Zn(e,t=0,n=!0,i=52,u=8){return function(e,t,n,i,u){if(!Ln(e))return null;if(!Ee(t))return null;if(!gt(n))return null;if(!Ee(i))return null;if(!Ee(u))return null;let s,r,o=8*u-i-1,c=(1<<o)-1,l=c>>1,a=-7,D=n?0:u-1,d=n?1:-1,w=e[t+D];for(D+=d,s=w&(1<<-a)-1,w>>=-a,a+=o;a>0;s=256*s+e[t+D],D+=d,a-=8);for(r=s&(1<<-a)-1,s>>=-a,a+=i;a>0;r=256*r+e[t+D],D+=d,a-=8);if(0===s)s=1-l;else{if(s===c)return r?NaN:1/0*(w?-1:1);r+=Math.pow(2,i),s-=l}return(w?-1:1)*r*Math.pow(2,s-i)}(e,t,n,i,u)}var En={exports:{}};!function(e){var t;e.exports=(t=Tt(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,i=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,i=[],u=0;u<t;u++)i[u>>>2]|=e[u]<<24-u%4*8;n.call(this,i,t)}else n.apply(this,arguments)};i.prototype=e}}(),t.lib.WordArray)}(En);var Tn=dt(En.exports);function Sn(e){if(!Ln(e))return"";let t;try{n=function(e){return Ln(e)?Tn.create(e).toString(vt):""}(e),t=Me(n)?vt.parse(n).toString(St):""}catch(e){return""}var n;return t}function Xn(e){let t=null;if(!Ln(e))return null;try{let n=8,i=e.slice(0,n),u=e.slice(n,bn(e)),s=Zn(i),r=u.slice(0,s),o=u.slice(s,bn(u)),c=Sn(r),l=function(e,t){let n=0,i=0,u=[];return pn(t,(t=>{i=n+t;let s=e.slice(n,i);n=i,u.push(s)})),u}(o,JSON.parse(c));t=function(e){if(!de(e))return{};let{results:t,binarys:n}=e;if(!Me(t))return{};if(!ze(n))return{};let i={};try{i=JSON.parse(t,(function(e,t){if(Me(t)){if(t.indexOf("[Uint8Array]::")>=0){let e=Ye(t.replace("[Uint8Array]::",""));return n[e]}if(t.indexOf("[Uint16Array]::")>=0){let e=Ye(t.replace("[Uint16Array]::",""));return n[e]}if(t.indexOf("[ArrayBuffer]::")>=0){let e=Ye(t.replace("[ArrayBuffer]::",""));return n[e]}}return t}))}catch(e){}return i}({results:Sn(l.shift()),binarys:l})}catch(e){}return t}function vn(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYYMMDDHHmmss")}function Yn(e){var t=this.__data__=new J(e);this.size=t.size}Yn.prototype.clear=function(){this.__data__=new J,this.size=0},Yn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Yn.prototype.get=function(e){return this.__data__.get(e)},Yn.prototype.has=function(e){return this.__data__.has(e)},Yn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof J){var i=n.__data__;if(!P||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new O(i)}return n.set(e,t),this.size=n.size,this};function jn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new O;++t<n;)this.add(e[t])}function zn(e,t){for(var n=-1,i=null==e?0:e.length;++n<i;)if(t(e[n],n,e))return!0;return!1}function Gn(e,t){return e.has(t)}jn.prototype.add=jn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},jn.prototype.has=function(e){return this.__data__.has(e)};function Fn(e,t,n,i,u,s){var r=1&n,o=e.length,c=t.length;if(o!=c&&!(r&&c>o))return!1;var l=s.get(e),a=s.get(t);if(l&&a)return l==t&&a==e;var D=-1,d=!0,w=2&n?new jn:void 0;for(s.set(e,t),s.set(t,e);++D<o;){var M=e[D],y=t[D];if(i)var C=r?i(y,M,D,t,e,s):i(M,y,D,e,t,s);if(void 0!==C){if(C)continue;d=!1;break}if(w){if(!zn(t,(function(e,t){if(!Gn(w,t)&&(M===e||u(M,e,n,i,s)))return w.push(t)}))){d=!1;break}}else if(M!==y&&!u(M,y,n,i,s)){d=!1;break}}return s.delete(e),s.delete(t),d}var Kn=D.Uint8Array;function Wn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}function kn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var Vn=d?d.prototype:void 0,Bn=Vn?Vn.valueOf:void 0;function Hn(e,t){for(var n=-1,i=t.length,u=e.length;++n<i;)e[u+n]=t[n];return e}function Un(e,t,n){var i=t(e);return c(e)?i:Hn(i,n(e))}function Qn(e,t){for(var n=-1,i=null==e?0:e.length,u=0,s=[];++n<i;){var r=e[n];t(r,n,e)&&(s[u++]=r)}return s}function Jn(){return[]}var Pn=Object.prototype.propertyIsEnumerable,Rn=Object.getOwnPropertySymbols,On=Rn?function(e){return null==e?[]:(e=Object(e),Qn(Rn(e),(function(t){return Pn.call(e,t)})))}:Jn;function _n(e){return Un(e,yn,On)}var $n=Object.prototype.hasOwnProperty;var qn=K(D,"DataView"),ei=K(D,"Promise"),ti=K(D,"Set"),ni=K(D,"WeakMap"),ii="[object Map]",ui="[object Promise]",si="[object Set]",ri="[object WeakMap]",oi="[object DataView]",ci=S(qn),li=S(P),ai=S(ei),Di=S(ti),di=S(ni),wi=g;(qn&&wi(new qn(new ArrayBuffer(1)))!=oi||P&&wi(new P)!=ii||ei&&wi(ei.resolve())!=ui||ti&&wi(new ti)!=si||ni&&wi(new ni)!=ri)&&(wi=function(e){var t=g(e),n="[object Object]"==t?e.constructor:void 0,i=n?S(n):"";if(i)switch(i){case ci:return oi;case li:return ii;case ai:return ui;case Di:return si;case di:return ri}return t});var Mi=wi,yi="[object Arguments]",Ci="[object Array]",Ii="[object Object]",mi=Object.prototype.hasOwnProperty;function gi(e,t,n,i,u,s){var r=c(e),o=c(t),l=r?Ci:Mi(e),a=o?Ci:Mi(t),D=(l=l==yi?Ii:l)==Ii,d=(a=a==yi?Ii:a)==Ii,w=l==a;if(w&&Pt(e)){if(!Pt(t))return!1;r=!0,D=!1}if(w&&!D)return s||(s=new Yn),r||rn(e)?Fn(e,t,n,i,u,s):function(e,t,n,i,u,s,r){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||!s(new Kn(e),new Kn(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return H(+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=Wn;case"[object Set]":var c=1&i;if(o||(o=kn),e.size!=t.size&&!c)return!1;var l=r.get(e);if(l)return l==t;i|=2,r.set(e,t);var a=Fn(o(e),o(t),i,u,s,r);return r.delete(e),a;case"[object Symbol]":if(Bn)return Bn.call(e)==Bn.call(t)}return!1}(e,t,l,n,i,u,s);if(!(1&n)){var M=D&&mi.call(e,"__wrapped__"),y=d&&mi.call(t,"__wrapped__");if(M||y){var C=M?e.value():e,I=y?t.value():t;return s||(s=new Yn),u(C,I,n,i,s)}}return!!w&&(s||(s=new Yn),function(e,t,n,i,u,s){var r=1&n,o=_n(e),c=o.length;if(c!=_n(t).length&&!r)return!1;for(var l=c;l--;){var a=o[l];if(!(r?a in t:$n.call(t,a)))return!1}var D=s.get(e),d=s.get(t);if(D&&d)return D==t&&d==e;var w=!0;s.set(e,t),s.set(t,e);for(var M=r;++l<c;){var y=e[a=o[l]],C=t[a];if(i)var I=r?i(C,y,a,t,e,s):i(y,C,a,e,t,s);if(!(void 0===I?y===C||u(y,C,n,i,s):I)){w=!1;break}M||(M="constructor"==a)}if(w&&!M){var m=e.constructor,g=t.constructor;m==g||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof g&&g instanceof g||(w=!1)}return s.delete(e),s.delete(t),w}(e,t,n,i,u,s))}function pi(e,t,n,i,u){return e===t||(null==e||null==t||!p(e)&&!p(t)?e!=e&&t!=t:gi(e,t,n,i,pi,u))}function fi(e){return e==e&&!A(e)}function Li(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function hi(e){var t=function(e){for(var t=yn(e),n=t.length;n--;){var i=t[n],u=e[i];t[n]=[i,u,fi(u)]}return t}(e);return 1==t.length&&t[0][2]?Li(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,i){var u=n.length,s=u,r=!i;if(null==e)return!s;for(e=Object(e);u--;){var o=n[u];if(r&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++u<s;){var c=(o=n[u])[0],l=e[c],a=o[1];if(r&&o[2]){if(void 0===l&&!(c in e))return!1}else{var D=new Yn;if(i)var d=i(l,a,c,e,t,D);if(!(void 0===d?pi(a,l,3,i,D):d))return!1}}return!0}(n,e,t)}}function bi(e,t){return null!=e&&t in Object(e)}function Ai(e,t){return null!=e&&function(e,t,n){for(var i=-1,u=(t=oe(t,e)).length,s=!1;++i<u;){var r=ce(t[i]);if(!(s=null!=e&&n(e,r)))break;e=e[r]}return s||++i!=u?s:!!(u=null==e?0:e.length)&&_t(u)&&Ot(r,u)&&(c(e)||Ht(e))}(e,t,bi)}function xi(e){return function(t){return null==t?void 0:t[e]}}function Ni(e){return b(e)?xi(ce(e)):function(e){return function(t){return le(t,e)}}(e)}function Zi(e){return"function"==typeof e?e:null==e?gn:"object"==typeof e?c(e)?function(e,t){return b(e)&&fi(t)?Li(ce(e),t):function(n){var i=ae(n,e);return void 0===i&&i===t?Ai(n,e):pi(t,i,3)}}(e[0],e[1]):hi(e):Ni(e)}function Ei(e,t){var n=-1,i=Mn(e)?Array(e.length):[];return mn(e,(function(e,u,s){i[++n]=t(e,u,s)})),i}function Ti(e,t){return(c(e)?ne:Ei)(e,Zi(t))}function Si(e,t,n){var i=-1,u=e.length;t<0&&(t=-t>u?0:u+t),(n=n>u?u:n)<0&&(n+=u),u=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(u);++i<u;)s[i]=e[i+t];return s}function Xi(e){return e!=e}function vi(e,t,n){return t==t?function(e,t,n){for(var i=n-1,u=e.length;++i<u;)if(e[i]===t)return i;return-1}(e,t,n):function(e,t,n,i){for(var u=e.length,s=n+(i?1:-1);i?s--:++s<u;)if(t(e[s],s,e))return s;return-1}(e,Xi,n)}var Yi=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ji(e){return Yi.test(e)}var zi="\\ud800-\\udfff",Gi="["+zi+"]",Fi="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Ki="\\ud83c[\\udffb-\\udfff]",Wi="[^"+zi+"]",ki="(?:\\ud83c[\\udde6-\\uddff]){2}",Vi="[\\ud800-\\udbff][\\udc00-\\udfff]",Bi="(?:"+Fi+"|"+Ki+")"+"?",Hi="[\\ufe0e\\ufe0f]?",Ui=Hi+Bi+("(?:\\u200d(?:"+[Wi,ki,Vi].join("|")+")"+Hi+Bi+")*"),Qi="(?:"+[Wi+Fi+"?",Fi,ki,Vi,Gi].join("|")+")",Ji=RegExp(Ki+"(?="+Ki+")|"+Qi+Ui,"g");function Pi(e){return ji(e)?function(e){return e.match(Ji)||[]}(e):function(e){return e.split("")}(e)}function Ri(e,t,n){if((e=re(e))&&(n||void 0===t))return Ie(e);if(!e||!(t=se(t)))return e;var i=Pi(e),u=Pi(t),s=function(e,t){for(var n=-1,i=e.length;++n<i&&vi(t,e[n],0)>-1;);return n}(i,u),r=function(e,t){for(var n=e.length;n--&&vi(t,e[n],0)>-1;);return n}(i,u)+1;return function(e,t,n){var i=e.length;return n=void 0===n?i:n,!t&&n>=i?e:Si(e,t,n)}(i,s,r).join("")}function Oi(e,t){if(!Me(e))return[];if(!Me(t))return[];let n=function(e,t){return Me(e)&&Me(t)?e.split(t):[]}(e,t);n=Ti(n,Ri);let i=[];return pn(n,(function(e){Me(e)&&i.push(e)})),i}function _i(e){return function(e,t={}){let n=ae(t,"fs");if(!n.existsSync(e))return{success:"file does not exist: "+e};if(!ct(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})}var $i={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFd0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZighZS5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEJ0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtyZXR1cm4hIWUuZXhpc3RzU3luYyh0KSYmKCFlLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhZS5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gSHQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIUJ0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTt0cnl7ZS51bmxpbmtTeW5jKHQpfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiBKdCh0LHIsZT17fSl7bGV0IG49IiIsbz1mdChlLCJmcyIpO2lmKCFwdChpPXQpfHwwPT09aS5sZW5ndGh8fDE9PT1pLmxlbmd0aCYmX3QoaVswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIGk7bGV0IHU9ZnVuY3Rpb24odCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9R3QodD1yLnBhdGgpO2lmKCFkdChlKSlyZXR1cm4gdDtsZXQgbj1EdCh0PVV0KHQsZS5sZW5ndGgpKTtyZXR1cm4gbi5pc1Jvb3Qsbi5wYXRofShyKSxhPWZ0KGUsImZuT3V0IiwiIik7ZHQoYSl8fChhPUd0KHIpKSxXdCh1LHtmczpvfSl8fGZ1bmN0aW9uKHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZihXdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImlucHV0IGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0czogIit0fTtpZihlLmV4aXN0c1N5bmModCkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGFscmVhZHkgZXhpc3RzOiAiK3R9O3RyeXtlLm1rZGlyU3luYyh0LHtyZWN1cnNpdmU6ITB9KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19fSh1LHtmczpvfSk7bGV0IGM9bHQoKTt0cnl7bGV0IGU9by5jcmVhdGVXcml0ZVN0cmVhbShyKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IGk9dFtyXTtpZighQnQoaSx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZnBJblske2l9XSBpcyBub3QgYSBmaWxlYCk7bGV0IHU9KCk9PntsZXQgdD1sdCgpLHI9by5jcmVhdGVSZWFkU3RyZWFtKGkpO3JldHVybiByLm9uKCJlcnJvciIsKHI9PntuPXIubWVzc2FnZSx0LnJlamVjdChyKX0pKSxyLm9uKCJlbmQiLCgoKT0+e0h0KGkse2ZzOm99KSx0LnJlc29sdmUoKX0pKSxyLnBpcGUoZSx7ZW5kOiExfSksdH07YXdhaXQgdSgpfWUuZW5kKCksZS5vbigiZXJyb3IiLCh0PT57bj10Lm1lc3NhZ2UsYy5yZWplY3Qobil9KSksZS5vbigiZmluaXNoIiwoKCk9PntsZXQgdD17ZmlsZW5hbWU6YSxwYXRoOnJ9O2MucmVzb2x2ZSh0KX0pKX1jYXRjaCh0KXtuPXQubWVzc2FnZSxjLnJlamVjdChuKX1yZXR1cm4gY31sZXQgbWVyZ2VTbGljZXM9YXN5bmMoZSxuLG8pPT57bGV0IGk9W107Zm9yKGxldCByPTA7cjxuO3IrKyl7bGV0IG49dC5qb2luKG8sYCR7ZX1fJHtyfWApO2kucHVzaChuKX1sZXQgdT10LmpvaW4obyxlKSxhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsZSxuPXt9KXtyZXR1cm4gSnQodCxlLHtmczpyLC4uLm59KX0oaSx1KTtyZXR1cm4gci53cml0ZUZpbGVTeW5jKGAke3V9LmRvbmVgLCIiLCJ1dGY4IiksYX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZXJnZVNsaWNlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZVNsaWNlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}($i);var qi=dt($i.exports);let eu=(e,t,n)=>{let i=`${vn()}|${mt(6)}|${e}`;return setTimeout((()=>{qi(e,t,n).catch((e=>{console.log(e)}))}),1),i},tu=(t,n)=>{let i="";if(!Me(t))return i=`invalid id[${t}]`,console.log(i),{state:"error",msg:i,path:""};let u=ae(Oi(t,"|"),2,"");if(!Me(u))return i=`can not find fileHash in id[${t}]`,console.log(i),{state:"error",msg:i,path:""};let s=e.resolve(n,u),r=e.resolve(n,`${u}.done`),o=lt(s),c=lt(r),l=o&&c;return!o&&c&&_i(r),{state:l?"success":"merging",msg:"",path:s}};var nu={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9eHR8fE90JiZNdChuZXcgT3QpIT16dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPW1yKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBtbih0LGU9MSxyPXt9KXtsZXQgbj1tcihyLCJwYXRoIiksbz1tcihyLCJmcyIpO2lmKCF3bih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz1tcihyLCJwYXRoIiksdT1tcihyLCJmcyIpO2lmKCF3bih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gd24ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP1JlOmpuKShpLEVyKGEpKSx1PUZyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9Y29uc3QgT249bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gU24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpLG49bXIoZSwiY2h1bmtTaXplIik7aWYoWnIobil8fChuPTY3MTA4ODY0KSxuPWxuKG4pLCFnbih0LHtmczpyfSkpcmV0dXJuIFByb21pc2UucmVqZWN0KCJmcCBpcyBub3QgYSBmaWxlIik7bGV0IG89ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0e2NyZWF0ZTY0OmV9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjp1LGRpZ2VzdDMyOmksaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLHUpe2wodCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQoaSkscigwLGUpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQoaSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1kLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldChpKSx1KG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3Qgdj0ybioqNjRuLTFuO2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQmdn1jb25zdCBkPW5ldyBUZXh0RW5jb2RlcixiPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1iKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCkseShuKDAsZC5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9Yik9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWIpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9Yik9PnAoNDgsdCxvLHUsaSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx5KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHkpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKE9uKSkuaW5zdGFuY2UpfSgpLHU9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKHQse2hpZ2hXYXRlck1hcms6bn0pO2kub24oImRhdGEiLCh0PT57dS51cGRhdGUodCl9KSksaS5vbigiZW5kIiwoKCk9PntsZXQgdD11LmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpO28ucmVzb2x2ZSh0KX0pKSxpLm9uKCJlcnJvciIsby5yZWplY3QpfWNhdGNoKHQpe28ucmVqZWN0KHQudG9TdHJpbmcoKSl9cmV0dXJuIG99bGV0IGNoZWNrVG90YWxIYXNoPWFzeW5jKHIsbixvLHUpPT57bGV0IGk9dC5qb2luKHUsbyksYT0hMTtpZihhPV9uKGkpLCFacihyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTaXplIGluIHBheWxvYWQifX1sZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gU24odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBtbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT0hMTt0cnl7dT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW59Y2F0Y2goZSl7Y29uc29sZS5sb2coImNoZWNrIGVhY2ggZmlsZSBzaXplOiBmcy5zdGF0U3luYyhwYXRoRmlsZSkiLHQucGF0aCxlKX1pZihyJiZ1KXtsZXQgZT1Zcih0Lm5hbWUsYCR7b31fYCkscj0oYT1udWxsPT0oaT1lKT8wOmkubGVuZ3RoKT9pW2EtMV06dm9pZCAwO2lmKCFmdW5jdGlvbih0KXtyZXR1cm4hIXBuKHQpJiZibih0KT49MH0ocikpdGhyb3cgY29uc29sZS5sb2coInYubmFtZSIsdC5uYW1lKSxjb25zb2xlLmxvZygicyIsZSksbmV3IEVycm9yKGBjYW4gbm90IHBhcnNlIGluZGV4IGluIHYubmFtZVske3QubmFtZX1dYCk7cj1ibihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGNoZWNrVG90YWxIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrVG90YWxIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(nu);var iu=dt(nu.exports),uu={exports:{}};!function(e){var t,n;e.exports=(t=s,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function u(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,i,s,r){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new u(i,s||e,r),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),o.prototype.eventNames=function(){var e,i,u=[];if(0===this._eventsCount)return u;for(i in e=this._events)t.call(e,i)&&u.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(e)):u},o.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var u=0,s=i.length,r=new Array(s);u<s;u++)r[u]=i[u].fn;return r},o.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,u,s,r){var o=n?n+e:e;if(!this._events[o])return!1;var c,l,a=this._events[o],D=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),D){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,i),!0;case 4:return a.fn.call(a.context,t,i,u),!0;case 5:return a.fn.call(a.context,t,i,u,s),!0;case 6:return a.fn.call(a.context,t,i,u,s,r),!0}for(l=1,c=new Array(D-1);l<D;l++)c[l-1]=arguments[l];a.fn.apply(a.context,c)}else{var d,w=a.length;for(l=0;l<w;l++)switch(a[l].once&&this.removeListener(e,a[l].fn,void 0,!0),D){case 1:a[l].fn.call(a[l].context);break;case 2:a[l].fn.call(a[l].context,t);break;case 3:a[l].fn.call(a[l].context,t,i);break;case 4:a[l].fn.call(a[l].context,t,i,u);break;default:if(!c)for(d=1,c=new Array(D-1);d<D;d++)c[d-1]=arguments[d];a[l].fn.apply(a[l].context,c)}}return!0},o.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},o.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},o.prototype.removeListener=function(e,t,i,u){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return r(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||u&&!o.once||i&&o.context!==i||r(this,s);else{for(var c=0,l=[],a=o.length;c<a;c++)(o[c].fn!==t||u&&!o[c].once||i&&o[c].context!==i)&&l.push(o[c]);l.length?this._events[s]=1===l.length?l[0]:l:r(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&r(this,t)):(this._events=new i,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 i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(u="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(u,"base64").toString("utf8"));var u;function s(){let i=new n,u=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){r(e)}}(t);if(!u)return r("invalid worker"),null;function s(){let e=function(){let e,t,n=new Promise((function(){e=arguments[0],t=arguments[1]}));return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let u=0;u<e;u++)t[u]=n[0|Math.random()*i];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return u.postMessage(n),i.once(t,(t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)})),e}function r(e){i.emit("error",e)}return u.on("message",(function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(t.evName,t.msg),"return"===n&&i.emit(t.id,t))})),u.on("error",r),u.on("exit",(e=>{1!==e&&r("exit code["+e+"] !== 1")})),function(){let e={mode:"init",type:"function",input:[...arguments]};u.postMessage(e)}([...arguments]),i.main=s,i.main=s,i.terminate=function(){u?(u.terminate(),u=void 0):r("worker has been terminated")},i}i=async function(){let e=[...arguments],t=s();return await t.main(...e).finally((()=>{t.terminate()}))}}();try{process.on("unhandledRejection",(e=>{console.log("outer:unhandledRejection",e)})),process.on("uncaughtException",(e=>{console.log("outer:uncaughtException",e)})),process.on("uncaughtExceptionMonitor",(e=>{console.log("outer:uncaughtExceptionMonitor",e)}))}catch(e){}return i}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(uu);var su=dt(uu.exports);function ru(s={}){let r=ae(s,"port");je(r)||(r=8080);let o=ae(s,"useInert");gt(o)||(o=!0);let c=ae(s,"pathStaticFiles");Me(c)||(c="dist");let l=ae(s,"pathUploadTemp");Me(l)||(l="./uploadTemp"),ot(l)||bt(l);let a=ae(s,"apiName");Me(a)||(a="api");let D=ae(s,"tokenType");Me(D)||(D="Bearer");let d=ae(s,"sizeSlice");je(d)||(d=1048576);let w=ae(s,"verifyConn");$e(w)||(w=()=>!0);let M=ae(s,"corsOrigins",[]);We(M)||(M=["*"]);let y=ae(s,"delayForSlice","");qe(y)||(y=100),y=Ye(y);let C=null;C=ae(s,"serverHapi")?s.serverHapi:n.server({port:r,routes:{timeout:{server:!1,socket:!1},cors:{origin:M,credentials:!1}}});let I=Lt(),m=(e,...t)=>{setTimeout((()=>{I.emit(e,...t)}),1)};async function g(e){let t=it(),n=it();return n.then((e=>{t.resolve(e)})).catch((e=>{t.reject(e)})),m("upload",e,n),t}async function p(e){let t=it(),n=it();return n.then((e=>{t.resolve(e)})).catch((e=>{t.reject(e)})),m("download",e,n),t}function f(e,t,n={}){let i=new u.Readable;i._read=()=>{},i.push(t),i.push(null);let s=ae(n,"returnType",""),r=ae(n,"returnMsg",""),o=e.response(i).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",i.readableLength);return Me(s)&&o.header("Return-Type",s),Me(r)&&o.header("Return-Msg",r),o}function L(e,t){return Me(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t=""),f(e,Nn({error:t}),{returnType:"error",returnMsg:t})}let h={path:`/${a}/main`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let s=ae(n,"authorization","");s=Me(s)?s:"";{let u=w({apiType:"main",authorization:s,query:i,headers:n,req:e});if(ut(u)&&(u=await u),!0!==u)return L(t,"permission denied")}m("handler",{api:"apiMain",headers:n,query:i});let r=await(()=>{let t=it(),n=[],i=new u.Writable({write(e,t,i){n.push(e),i()}});return i.on("finish",(()=>{})),e.payload.pipe(i),e.payload.on("end",(()=>{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),m("error",`receive payload error: ${e.message}`),t.reject(`receive payload error: ${e.message}`)})),t})(),o=Xn(new Uint8Array(r)),c={},l="",a="";return await async function(e){let t=it(),n=it();n.then((n=>{e.output=n,delete e.input,t.resolve(e)})).catch((e=>{t.reject(e)}));{let t=ae(e,"func",""),i=ae(e,"input",null);m("execute",t,i,n)}return t}(o).then((e=>{c.success=e,l="success",a="need to parse"})).catch((e=>{c.error=e,l="error",a="need to parse"})),f(t,Nn(c),{returnType:l,returnMsg:a})}},b={path:`/${a}/ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"upload-controller",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiUploadCheck",headers:n,query:i});let s=ae(e,"payload.mode","");if("check-total-hash"!==s&&"check-slices-hash"!==s&&"merge-slices-push"!==s&&"merge-slices-get"!==s)return L(t,`invalid mode[${s}] in payload`);let r=ae(e,"payload.fileHash","");if(!Me(r))return L(t,"invalid fileHash in payload");let o={},c="",a="";return await(async()=>{let t=null;if("check-total-hash"===s){let n=ae(e,"payload.filename",""),i=ae(e,"payload.fileSize","");if(t=await iu(i,d,r,l),t.bAllHash){let e={filename:n,path:t.path},i=await g(e);t={...t,...i}}}else if("check-slices-hash"===s){let n=ae(e,"payload.fileSliceHashs",[]);t=await su(n,r,l)}else if("merge-slices-push"===s){let n=ae(e,"payload.chunkTotal","");t={queueId:eu(r,n,l)}}else if("merge-slices-get"===s){let n=ae(e,"payload.filename",""),i=ae(e,"payload.queueId",""),u=tu(i,l);if(t={state:u.state,msg:u.msg,queueId:i,filename:n,path:u.path},"success"===u.state){let e={filename:n,path:u.path},i=await g(e);t={...t,msg:i}}}return t})().then((e=>{o.success=e,c="success",a="need to parse"})).catch((e=>{o.error=e,c="error",a="need to parse"})),f(t,Nn(o),{returnType:c,returnMsg:a})}},A={path:`/${a}/slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,i){let u=ae(n,"headers");u=de(u)?u:"";let s=ae(n,"query");s=de(s)?s:"";let r=ae(u,"authorization","");r=Me(r)?r:"";{let e=w({apiType:"upload-slice",authorization:r,headers:u,query:s});if(ut(e)&&(e=await e),!0!==e)return L(i,"permission denied")}m("handler",{api:"apiUploadSlice",headers:u,query:s});let o=ae(u,"chunk-index",""),c=ae(u,"chunk-total",""),a=ae(u,"package-id","");if(!qe(o))return L(i,"invalid chunkIndex in headers");if(o=Ye(o),!qe(c))return L(i,"invalid chunkTotal in headers");if(c=Ye(c),!Me(a))return L(i,"invalid packageId in headers");let D=e.join(l,`${a}_${o}`),d=t.createWriteStream(D),M={},C="",I="";return await(()=>{let e=it();return n.payload.pipe(d),n.payload.on("end",(()=>{setTimeout((()=>{e.resolve(`chunk[${o+1}/${c}] of packageId[${a}] done`)}),y)})),n.payload.on("error",(t=>{console.log(`apiUploadSlice req.payload chunk[${o+1}/${c}] of packageId[${a}] err`,t),m("error",`receive chunk[${o+1}/${c}] of packageId[${a}] error: ${t.message}`),e.reject(`receive chunk[${o+1}/${c}] of packageId[${a}] error: ${t.message}`)})),e})().then((e=>{M.success=e,C="success",I="need to parse"})).catch((e=>{M.error=e,C="error",I="need to parse",m("error",e)})),f(i,Nn(M),{returnType:C,returnMsg:I})}},x={path:`/${a}/dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"download-get-filename",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let s=ae(e,"payload.fileId","");if(!Me(s))return L(t,"invalid fileId in payload");let r={fileId:s},o={},c="",l="";await p(r).then((e=>{o.success=e,c="success",l="need to parse"})).catch((e=>{o.error=e,c="error",l="need to parse"}));let a=ae(o,"success"),D=ae(a,"streamRead");try{D.destroy()}catch(e){}let d=ae(a,"filename");return Me(d)?(o={success:{filename:d}},f(t,Nn(o),{returnType:c,returnMsg:l})):L(t,"invalid filename")}},N={path:`/${a}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(i,"token","");u=Me(u)?u:"";let s="";Me(u)&&(s=`${D} ${u}`);{let e=w({apiType:"download-get-file",authorization:s,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let r=ae(i,"fileId","");if(r=Me(r)?r:"",!Me(r))return L(t,"invalid fileId in query");let o={fileId:r},c={};if(await p(o).then((e=>{c.success=e})).catch((e=>{c.error=e})),jt(c,"error"))return L(t,"can not get file from fileId");let l=ae(c,"success"),a=ae(l,"streamRead"),d=ae(l,"fileSize");if(!At(d)){try{a.destroy()}catch(e){}return L(t,"invalid fileSize")}let M=ae(l,"fileType");if(!Me(M)){try{a.destroy()}catch(e){}return L(t,"invalid fileType")}return M=xt(M),t.response(a).type(M).header("Content-Length",d)}},Z={path:`/${a}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ae(e,"headers");n=de(n)?n:"";let i=ae(e,"query");i=de(i)?i:"";let u=ae(n,"authorization","");u=Me(u)?u:"";{let e=w({apiType:"download",authorization:u,headers:n,query:i});if(ut(e)&&(e=await e),!0!==e)return L(t,"permission denied")}m("handler",{api:"apiDownload",headers:n,query:i});let s=ae(e,"payload.fileId","");if(!Me(s))return L(t,"invalid fileId in payload");let r={fileId:s},o={};if(await p(r).then((e=>{o.success=e})).catch((e=>{o.error=e})),jt(o,"error"))return L(t,"can not get file from fileId");let c=ae(o,"success"),l=ae(c,"streamRead"),a=ae(c,"filename");if(!Me(a)){try{l.destroy()}catch(e){}return L(t,"invalid filename")}a=Yt(a);let D=ae(c,"fileSize");if(!At(D)){try{l.destroy()}catch(e){}return L(t,"invalid fileSize")}let d=ae(c,"fileType");if(!Me(d)){try{l.destroy()}catch(e){}return L(t,"invalid fileType")}return d=xt(d),t.response(l).type(d).header("Content-Disposition",`attachment; filename="${a}"`).header("Content-Length",D)}};ae(s,"serverHapi")?C.route([h,b,A,x,N,Z]):async function(){o&&await C.register(i);let e=[];if(o){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}};e=[...e,t]}e=[...e,h,b,A,x,N,Z],C.route(e),await C.start(),console.log(`Server running at: ${C.info.uri}`)}();return I.stop=()=>{C.stop()},I}var ou=function(){return D.Date.now()},cu=Math.max,lu=Math.min;function au(e,t,n){var i,u,s,r,o,c,l=0,a=!1,D=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function w(t){var n=i,s=u;return i=u=void 0,l=t,r=e.apply(s,n)}function M(e){var n=e-c;return void 0===c||n>=t||n<0||D&&e-l>=s}function y(){var e=ou();if(M(e))return C(e);o=setTimeout(y,function(e){var n=t-(e-c);return D?lu(n,s-(e-l)):n}(e))}function C(e){return o=void 0,d&&i?w(e):(i=u=void 0,r)}function I(){var e=ou(),n=M(e);if(i=arguments,u=this,c=e,n){if(void 0===o)return function(e){return l=e,o=setTimeout(y,t),a?w(e):r}(c);if(D)return clearTimeout(o),o=setTimeout(y,t),w(c)}return void 0===o&&(o=setTimeout(y,t)),r}return t=Le(t)||0,A(n)&&(a=!!n.leading,s=(D="maxWait"in n)?cu(Le(n.maxWait)||0,t):s,d="trailing"in n?!!n.trailing:d),I.cancel=function(){void 0!==o&&clearTimeout(o),l=0,i=c=u=o=void 0},I.flush=function(){return void 0===o?r:C(ou())},I}var Du=function(){try{var e=K(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),du=Du;function wu(e,t,n){"__proto__"==t&&du?du(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Mu(e,t,n){(void 0!==n&&!H(e[t],n)||void 0===n&&!(t in e))&&wu(e,t,n)}var yu="object"==typeof exports&&exports&&!exports.nodeType&&exports,Cu=yu&&"object"==typeof module&&module&&!module.nodeType&&module,Iu=Cu&&Cu.exports===yu?D.Buffer:void 0,mu=Iu?Iu.allocUnsafe:void 0;function gu(e,t){if(t)return e.slice();var n=e.length,i=mu?mu(n):new e.constructor(n);return e.copy(i),i}function pu(e){var t=new e.constructor(e.byteLength);return new Kn(t).set(new Kn(e)),t}function fu(e,t){var n=t?pu(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Lu(e,t){var n=-1,i=e.length;for(t||(t=Array(i));++n<i;)t[n]=e[n];return t}var hu=Object.create,bu=function(){function e(){}return function(t){if(!A(t))return{};if(hu)return hu(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Au(e){return"function"!=typeof e.constructor||an(e)?{}:bu(Be(e))}function xu(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Nu=Object.prototype.hasOwnProperty;function Zu(e,t,n){var i=e[t];Nu.call(e,t)&&H(i,n)&&(void 0!==n||t in e)||wu(e,t,n)}function Eu(e,t,n,i){var u=!n;n||(n={});for(var s=-1,r=t.length;++s<r;){var o=t[s],c=i?i(n[o],e[o],o,n,e):void 0;void 0===c&&(c=e[o]),u?wu(n,o,c):Zu(n,o,c)}return n}var Tu=Object.prototype.hasOwnProperty;function Su(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=an(e),n=[];for(var i in e)("constructor"!=i||!t&&Tu.call(e,i))&&n.push(i);return n}function Xu(e){return Mn(e)?cn(e,!0):Su(e)}function vu(e,t,n,i,u,s,r){var o=xu(e,n),l=xu(t,n),a=r.get(l);if(a)Mu(e,n,a);else{var D,d=s?s(o,l,n+"",e,t,r):void 0,w=void 0===d;if(w){var M=c(l),y=!M&&Pt(l),C=!M&&!y&&rn(l);d=l,M||y||C?c(o)?d=o:p(D=o)&&Mn(D)?d=Lu(o):y?(w=!1,d=gu(l,!0)):C?(w=!1,d=fu(l,!0)):d=[]:Re(l)||Ht(l)?(d=o,Ht(o)?d=function(e){return Eu(e,Xu(e))}(o):A(o)&&!x(o)||(d=Au(l))):w=!1}w&&(r.set(l,d),u(d,l,i,s,r),r.delete(l)),Mu(e,n,d)}}function Yu(e,t,n,i,u){e!==t&&Ft(t,(function(s,r){if(u||(u=new Yn),A(s))vu(e,t,r,n,Yu,i,u);else{var o=i?i(xu(e,r),s,r+"",e,t,u):void 0;void 0===o&&(o=s),Mu(e,r,o)}}),Xu)}var ju=Math.max;var zu=du?function(e,t){return du(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:gn,Gu=zu,Fu=Date.now;var Ku=function(e){var t=0,n=0;return function(){var i=Fu(),u=16-(i-n);if(n=i,u>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Gu),Wu=Ku;function ku(e,t){return Wu(function(e,t,n){return t=ju(void 0===t?e.length-1:t,0),function(){for(var i=arguments,u=-1,s=ju(i.length-t,0),r=Array(s);++u<s;)r[u]=i[t+u];u=-1;for(var o=Array(t+1);++u<t;)o[u]=i[u];return o[t]=n(r),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,gn),e+"")}var Vu,Bu=(Vu=function(e,t,n){Yu(e,t,n)},ku((function(e,t){var n=-1,i=t.length,u=i>1?t[i-1]:void 0,s=i>2?t[2]:void 0;for(u=Vu.length>3&&"function"==typeof u?(i--,u):void 0,s&&function(e,t,n){if(!A(n))return!1;var i=typeof t;return!!("number"==i?Mn(n)&&Ot(t,n.length):"string"==i&&t in n)&&H(n[t],e)}(t[0],t[1],s)&&(u=i<3?void 0:u,i=1),e=Object(e);++n<i;){var r=t[n];r&&Vu(e,r,n,u)}return e})));function Hu(e){if(!Me(e))return{};let t={};try{t=JSON.parse(e)}catch(e){t={}}return t}function Uu(e,n={}){let i={};if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let u=ae(n,"fpTableTags","");Me(u)||(u="./tableTags.json");let s=ae(n,"genTag");$e(s)||(s=()=>yt()+"|"+mt(6));let r=(t,...n)=>{setTimeout((()=>{e.emit(t,...n)}),1)};function o(){let e={};try{if(t.existsSync(u)){let n=Hu(t.readFileSync(u,"utf8"));de(n)&&(e=n)}}catch(e){r("error",{msg:"readTableTags catch",err:e})}return e}function c(){try{let e=function(e,t=!1){if(Ge(e))return"";let n="";try{n=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){n=""}return n}(i);t.writeFileSync(u,e,"utf8")}catch(e){r("error",{msg:"writeTableTags catch",err:e})}}let l=au((()=>{c(),r("changeTableTags",i)}),200);return e.readTableTags=o,e.writeTableTags=c,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)i=e;else if("useStorageOnly"===t)i=o();else if("useInputFirst"===t)i=Bu(o(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);i=Bu(e,o())}c()},e.setTableTags=function(e={}){i=Bu(i,e),c()},e.getTableTags=function(){return i},e.updateTableTag=function(e){i[e]=s(),l()},e}var Qu=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Hn(t,On(e)),e=Be(e);return t}:Jn;function Ju(e){return Un(e,Xu,Qu)}var Pu=Object.prototype.hasOwnProperty;var Ru=/\w*$/;var Ou=d?d.prototype:void 0,_u=Ou?Ou.valueOf:void 0;function $u(e,t,n){var i,u,s,r=e.constructor;switch(t){case"[object ArrayBuffer]":return pu(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return function(e,t){var n=t?pu(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 fu(e,n);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return(s=new(u=e).constructor(u.source,Ru.exec(u))).lastIndex=u.lastIndex,s;case"[object Symbol]":return i=e,_u?Object(_u.call(i)):{}}}var qu=un&&un.isMap,es=qu?qt(qu):function(e){return p(e)&&"[object Map]"==Mi(e)};var ts=un&&un.isSet,ns=ts?qt(ts):function(e){return p(e)&&"[object Set]"==Mi(e)},is="[object Arguments]",us="[object Function]",ss="[object Object]",rs={};function os(e,t,n,i,u,s){var r,o=1&t,l=2&t,a=4&t;if(n&&(r=u?n(e,i,u,s):n(e)),void 0!==r)return r;if(!A(e))return e;var D=c(e);if(D){if(r=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Pu.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!o)return Lu(e,r)}else{var d=Mi(e),w=d==us||"[object GeneratorFunction]"==d;if(Pt(e))return gu(e,o);if(d==ss||d==is||w&&!u){if(r=l||w?{}:Au(e),!o)return l?function(e,t){return Eu(e,Qu(e),t)}(e,function(e,t){return e&&Eu(t,Xu(t),e)}(r,e)):function(e,t){return Eu(e,On(e),t)}(e,function(e,t){return e&&Eu(t,yn(t),e)}(r,e))}else{if(!rs[d])return u?e:{};r=$u(e,d,o)}}s||(s=new Yn);var M=s.get(e);if(M)return M;s.set(e,r),ns(e)?e.forEach((function(i){r.add(os(i,t,n,i,e,s))})):es(e)&&e.forEach((function(i,u){r.set(u,os(i,t,n,u,e,s))}));var y=D?void 0:(a?l?Ju:_n:l?Xu:yn)(e);return zt(y||e,(function(i,u){y&&(i=e[u=i]),Zu(r,u,os(i,t,n,u,e,s))})),r}rs[is]=rs["[object Array]"]=rs["[object ArrayBuffer]"]=rs["[object DataView]"]=rs["[object Boolean]"]=rs["[object Date]"]=rs["[object Float32Array]"]=rs["[object Float64Array]"]=rs["[object Int8Array]"]=rs["[object Int16Array]"]=rs["[object Int32Array]"]=rs["[object Map]"]=rs["[object Number]"]=rs[ss]=rs["[object RegExp]"]=rs["[object Set]"]=rs["[object String]"]=rs["[object Symbol]"]=rs["[object Uint8Array]"]=rs["[object Uint8ClampedArray]"]=rs["[object Uint16Array]"]=rs["[object Uint32Array]"]=!0,rs["[object Error]"]=rs[us]=rs["[object WeakMap]"]=!1;function cs(e){return os(e,5)}var ls=xi("length"),as="\\ud800-\\udfff",Ds="["+as+"]",ds="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",ws="\\ud83c[\\udffb-\\udfff]",Ms="[^"+as+"]",ys="(?:\\ud83c[\\udde6-\\uddff]){2}",Cs="[\\ud800-\\udbff][\\udc00-\\udfff]",Is="(?:"+ds+"|"+ws+")"+"?",ms="[\\ufe0e\\ufe0f]?",gs=ms+Is+("(?:\\u200d(?:"+[Ms,ys,Cs].join("|")+")"+ms+Is+")*"),ps="(?:"+[Ms+ds+"?",ds,ys,Cs,Ds].join("|")+")",fs=RegExp(ws+"(?="+ws+")|"+ps+gs,"g");function Ls(e){return ji(e)?function(e){for(var t=fs.lastIndex=0;fs.test(e);)++t;return t}(e):ls(e)}function hs(e){if(null==e)return 0;if(Mn(e))return"string"==typeof(t=e)||!c(t)&&p(t)&&"[object String]"==g(t)?Ls(e):e.length;var t,n=Mi(e);return"[object Map]"==n||"[object Set]"==n?e.size:wn(e).length}function bs(e={}){let t=Lt(),n={},i=null,u=ae(e,"timeAlive");je(u)||(u=1e4),u=Ye(u);let s=ae(e,"timeDetect");return je(s)||(s=50),s=Ye(s),t.trigger=function(e,r){Me(e)?(jt(n,e)||setTimeout((()=>{t.emit("message",{eventName:"enter",key:e,data:r,now:hs(n)})}),1),n[e]={data:r,time:Date.now()},null===i&&(i=setInterval((()=>{pn(n,((e,i)=>{if(Date.now()-e.time>u){let e=cs(n[i]);delete n[i],t.emit("message",{eventName:"leave",key:i,data:e.data,now:hs(n)})}})),de(n)||(clearInterval(i),i=null)}),s))):console.log("trigger need key")},t.get=function(){let e=[];return pn(n,((t,n)=>{e.push({key:n,data:t.data})})),e=cs(e),e},t}function As(e,t={}){let n={};if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=(t,...n)=>{setTimeout((()=>{e.emit(t,...n)}),1)},u=bs(),s=setInterval((()=>{let e=Ti(u.get(),"key"),t={};pn(e,(e=>{t[e]=ae(n,e,[])})),n=t}),1e3);u.on("message",(function({eventName:e,key:t,data:n,now:u}){"enter"===e?i("clientEnter",t,n):"leave"===e&&i("clientLeave",t,n),i("clientChange",u)})),e.on("execute",(function(e,t,s){if("[sys:polling]"===e)try{let e=ae(t,"clientId",""),i=ae(n,e,[]);i=cs(i),n[e]=[],u.trigger(e,t),s.resolve(i)}catch(e){i("error",e),s.reject("[sys:polling] error")}}));return e.getClients=u.get,e.getMessages=()=>cs(n),e.broadcast=e=>{if(!de(n))return;let t={};pn(n,((n,i)=>{n.push({mode:"broadcast",data:e}),t[i]=n})),n=t},e.clearBroadcast=()=>{clearInterval(s)},e}let xs=(e,t)=>{let n={};return pn(e,(e=>{let i=e,u=ae(t,e,"");Me(u)&&(n[i]=u)})),n};function Ns(e,t,n,i={}){if(!de(e))throw new Error("invalid instWConverServer");if(0===hs(t))return e;if(!de(n))return e;let u=ae(i,"genTag");$e(u)||(u=()=>yt()+"|"+mt(6));let s={};return pn(t,(e=>{s[e]=u()})),e.initTableTags(s,"useInputOnly"),pn(t,(t=>{let i=n[t];if(!i)throw new Error(`invalid kpOrm[${t}]`);try{i.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:xs(t,n)})})),e}function Zs(e,t,n,i){for(var u=n-1,s=e.length;++u<s;)if(i(e[u],t))return u;return-1}var Es=Array.prototype.splice;function Ts(e,t){return e&&e.length&&t&&t.length?function(e,t,n,i){var u=i?Zs:vi,s=-1,r=t.length,o=e;for(e===t&&(t=Lu(t)),n&&(o=ne(e,qt(n)));++s<r;)for(var c=0,l=t[s],a=n?n(l):l;(c=u(o,a,c,i))>-1;)o!==e&&Es.call(o,c,1),Es.call(e,c,1);return e}(e,t):e}function Ss(e,t={}){if(!de(e))throw new Error("invalid instWConverServer");let n=ae(t,"getUserIdByToken",null);$e(n)||(n=async()=>"");let i=ae(t,"useDbOrm",null);gt(i)||(i=!1);let u=null;if(i&&(u=ae(t,"operOrm",null),!$e(u)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(i&&(s=ae(t,"tableNames",null),!ze(s)))throw new Error("invalid opt.tableNames when useDbOrm=true");let r=[];i&&(r=ae(t,"methods",null),ze(r)||(r=["select","insert","save","del"]));let o=ae(t,"kpFunExt",null);let c={};async function l(e,t,i){if(!Me(e))return i.resolve({state:"error",msg:"invalid func"}),i;let u="";if(!jt(t,"__sysToken__"))return i.resolve({state:"error",msg:"invalid token"}),i;if(u=xt(t.__sysToken__),!jt(t,"__sysInputArgs__"))return i.resolve({state:"error",msg:"invalid input"}),i;t=t.__sysInputArgs__;let s="";if(s=n(u),ut(s)&&(s=await s),Me(s)||(s=""),"[sys:getFuncList]"===e){let e=yn(c);e=function(e,t){if(!We(e))return[];if((De(t)||Ne(t)||we(t)||gt(t))&&(t=[t]),!We(t))return e;let n=cs(e);return Ts(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return i.resolve(t),i}if(!jt(c,e))return i.resolve({state:"error",msg:`invalid func[${e}]`}),i;let r=c[e];try{let e=await st(r)(s,...t);i.resolve(e)}catch(t){i.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return i}return i&&(s=cs(s),c=function(e,t,n){let i={};return pn(e,(e=>{pn(t,(t=>{i[`${e}.${t}`]=async function(i,u){return await n(i,e,t,u)}}))})),i}(s,r,u)),de(o)&&pn(o,((e,t)=>{c[t]=e})),e.on("execute",(async function(t,n,i){await l(t,n,i).catch((n=>{e.emit("error",n),i.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})}))})),e}function Xs(e,t={}){if(de(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Lt()),!jt(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=ae(t,"fpTableTags",null);Me(n)||(n="./tableTags.json");let i=ae(t,"genTag");$e(i)||(i=()=>yt()+"|"+mt(6)),e=new As(e=new Uu(e,{fpTableTags:n,genTag:i}));let u=ae(t,"useDbOrm",null);gt(u)||(u=!0);let s=ae(t,"kpOrm",null),r=ae(t,"operOrm",null),o=ae(t,"tableNamesExec",null),c=ae(t,"methodsExec",null),l=ae(t,"tableNamesSync",null),a=ae(t,"getUserIdByToken",null),D=ae(t,"kpFunExt",null);if(de(D)||(D={}),D={...D,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:xs(l,t)}}},e=new Ss(e,{getUserIdByToken:a,useDbOrm:u,operOrm:r,tableNames:o,methods:c,kpFunExt:D}),u){if(!De(s))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Ns(e,l,s,{genTag:i})}return e}function vs(e={}){let t=Lt(),u=null,s=null,r=ae(e,"port");Ee(r)||(r=8080);let o=ae(e,"corsOrigins",[]);We(o)||(o=["http://localhost"]);let c=ae(e,"useInert");gt(c)||(c=!0);let l=ae(e,"pathStaticFiles");Me(l)||(l="dist");let a=ae(e,"apis");We(a)||(a=[]);let D=ae(e,"apiName");Me(D)||(D="api");let d=ae(e,"pathUploadTemp");Me(d)||(d="./uploadTemp"),ot(d)||bt(d);let w=ae(e,"tokenType");Me(w)||(w="Bearer");let M=ae(e,"sizeSlice");je(M)||(M=1048576);let y=ae(e,"verifyConn");$e(y)||(y=()=>!0);let C=ae(e,"getUserIdByToken",null),I=ae(e,"useDbOrm",null);gt(I)||(I=!0);let m=ae(e,"kpOrm",null),g=ae(e,"operOrm",null),p=ae(e,"tableNamesExec",null),f=ae(e,"methodsExec",null),L=ae(e,"tableNamesSync",null),h=ae(e,"kpFunExt",null),b=ae(e,"fnTableTags",null),A=ae(e,"genTag");$e(A)||(A=()=>yt()+"|"+mt(6));let x=ae(e,"showLog");gt(x)||(x=!0);(async()=>{await(async()=>{u=new n.Server({port:r,routes:{timeout:{server:!1,socket:!1},cors:{origin:o,credentials:!1}}}),c&&await u.register(i);let e=[];c&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],u.route(e)})(),await(async()=>{s=new ru({serverHapi:u,apiName:D,pathUploadTemp:d,tokenType:w,sizeSlice:M,verifyConn:y,corsOrigins:o}),s.on("open",(function(){x&&console.log(`Server[port:${r}]: open`)})),s.on("clientChange",(function(e){x&&console.log(`Server[port:${r}]: now clients: ${e}`)}))})(),await(async()=>{s=new Xs(s,{getUserIdByToken:C,useDbOrm:I,kpOrm:m,operOrm:g,tableNamesExec:p,tableNamesSync:L,methodsExec:f,kpFunExt:h,fnTableTags:b,genTag:A}),s.on("error",(e=>{t.emit("error",e)}))})(),await u.start(),x&&console.log(`Server running at: ${u.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 ht((()=>null!==u)),u),t.getInstWConverServer=async()=>(await ht((()=>null!==s)),s),t}function Ys(e,t){let n=it();if(!ze(e)&&!De(e))return n.reject("rs is not an array or object"),n;let i=!1;if(De(e)){i=!0;let t=[];pn(e,((e,n)=>{t.push({k:n,v:e})})),e=t}$e(t)||(t=function(e){return e});let u=-1,s=[];return e.reduce((function(e,n){return e.then((function(e){s.push(e),u+=1;let r=u,o=n;return i&&(r=n.k,o=n.v),$e(t)?t(o,r):o}))}),Promise.resolve()).then((function(e){var t,i,u,r;s.push(e),r=null==(t=s)?0:t.length,s=r?Si(t,(i=u||void 0===i?1:Ae(i))<0?0:i,r):[],n.resolve(s)})).catch((function(e){n.reject(e)})),n}let js={backup:async function(e){return await Ys(e,(async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()})))},recover:async function(e,n,i,u=!1){if(!lt(e))throw console.log("fp",e),new Error("fp is not exist");if(!de(n))throw console.log("woItems",n),new Error("invalid woItems");$e(i)||(i=null),gt(u)||(u=!1);let s=t.readFileSync(e,"utf8");s=Ri(s);let r=Hu(s);$e(i)&&i(),await Ys(r,(async e=>{console.log("recover...",e.name),u&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return hs(e.data)>0&&(t=await n[e.name].insert(e.data)),t}))}};function zs(){if(!$e(Mt))throw new Error("invalid dayjs");return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var Gs={exports:{}},Fs={},Ks={exports:{}},Ws={};function ks(){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 Vs=/javascript\s*\:/gim;Ws.whiteList=ks(),Ws.getDefaultWhiteList=ks,Ws.onAttr=function(e,t,n){},Ws.onIgnoreAttr=function(e,t,n){},Ws.safeAttrValue=function(e,t){return Vs.test(t)?"":t};var Bs={indexOf:function(e,t){var n,i;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var i,u;if(Array.prototype.forEach)return e.forEach(t,n);for(i=0,u=e.length;i<u;i++)t.call(n,e[i],i,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,"")}},Hs=Bs;var Us=function(e,t){";"!==(e=Hs.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,u=0,s=0,r="";function o(){if(!i){var n=Hs.trim(e.slice(u,s)),o=n.indexOf(":");if(-1!==o){var c=Hs.trim(n.slice(0,o)),l=Hs.trim(n.slice(o+1));if(c){var a=t(u,r.length,c,l,n);a&&(r+=a+"; ")}}}u=s+1}for(;s<n;s++){var c=e[s];if("/"===c&&"*"===e[s+1]){var l=e.indexOf("*/",s+2);if(-1===l)break;u=(s=l+1)+1,i=!1}else"("===c?i=!0:")"===c?i=!1:";"===c?i||o():"\n"===c&&o()}return Hs.trim(r)},Qs=Ws,Js=Us;function Ps(e){return null==e}function Rs(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Qs.whiteList,e.onAttr=e.onAttr||Qs.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Qs.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Qs.safeAttrValue,this.options=e}Rs.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,i=t.onAttr,u=t.onIgnoreAttr,s=t.safeAttrValue;return Js(e,(function(e,t,r,o,c){var l=n[r],a=!1;if(!0===l?a=l:"function"==typeof l?a=l(o):l instanceof RegExp&&(a=l.test(o)),!0!==a&&(a=!1),o=s(r,o)){var D,d={position:t,sourcePosition:e,source:c,isWhite:a};return a?Ps(D=i(r,o,d))?r+":"+o:D:Ps(D=u(r,o,d))?void 0:D}}))};var Os=Rs;!function(e,t){var n=Ws,i=Os;for(var u in(t=e.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,n)t[u]=n[u];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Ks,Ks.exports);var _s=Ks.exports,$s={indexOf:function(e,t){var n,i;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var i,u;if(Array.prototype.forEach)return e.forEach(t,n);for(i=0,u=e.length;i<u;i++)t.call(n,e[i],i,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}},qs=_s.FilterCSS,er=_s.getDefaultWhiteList,tr=$s;function nr(){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 ir=new qs;function ur(e){return e.replace(sr,"&lt;").replace(rr,"&gt;")}var sr=/</g,rr=/>/g,or=/"/g,cr=/&quot;/g,lr=/&#([a-zA-Z0-9]*);?/gim,ar=/&colon;?/gim,Dr=/&newline;?/gim,dr=/((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,wr=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Mr=/u\s*r\s*l\s*\(.*/gi;function yr(e){return e.replace(or,"&quot;")}function Cr(e){return e.replace(cr,'"')}function Ir(e){return e.replace(lr,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function mr(e){return e.replace(ar,":").replace(Dr," ")}function gr(e){for(var t="",n=0,i=e.length;n<i;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return tr.trim(t)}function pr(e){return e=gr(e=mr(e=Ir(e=Cr(e))))}function fr(e){return e=ur(e=yr(e))}Fs.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"]},Fs.getDefaultWhiteList=nr,Fs.onTag=function(e,t,n){},Fs.onIgnoreTag=function(e,t,n){},Fs.onTagAttr=function(e,t,n){},Fs.onIgnoreTagAttr=function(e,t,n){},Fs.safeAttrValue=function(e,t,n,i){if(n=pr(n),"href"===t||"src"===t){if("#"===(n=tr.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(dr.lastIndex=0,dr.test(n))return""}else if("style"===t){if(wr.lastIndex=0,wr.test(n))return"";if(Mr.lastIndex=0,Mr.test(n)&&(dr.lastIndex=0,dr.test(n)))return"";!1!==i&&(n=(i=i||ir).process(n))}return n=fr(n)},Fs.escapeHtml=ur,Fs.escapeQuote=yr,Fs.unescapeQuote=Cr,Fs.escapeHtmlEntities=Ir,Fs.escapeDangerHtml5Entities=mr,Fs.clearNonPrintableCharacter=gr,Fs.friendlyAttrValue=pr,Fs.escapeAttrValue=fr,Fs.onIgnoreTagStripAll=function(){return""},Fs.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),i=[],u=!1;return{onIgnoreTag:function(s,r,o){if(function(t){return!!n||-1!==tr.indexOf(e,t)}(s)){if(o.isClosing){var c="[/removed]",l=o.position+10;return i.push([!1!==u?u:o.position,l]),u=!1,c}return u||(u=o.position),"[removed]"}return t(s,r,o)},remove:function(e){var t="",n=0;return tr.forEach(i,(function(i){t+=e.slice(n,i[0]),n=i[1]})),t+=e.slice(n)}}},Fs.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var i=e.indexOf("\x3c!--",n);if(-1===i){t+=e.slice(n);break}t+=e.slice(n,i);var u=e.indexOf("--\x3e",i);if(-1===u)break;n=u+3}return t},Fs.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("")},Fs.attributeWrapSign='"',Fs.cssFilter=ir,Fs.getDefaultCSSWhiteList=er;var Lr={},hr=$s;function br(e){var t,n=hr.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=hr.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Ar(e){return"</"===e.slice(0,2)}var xr=/[^a-zA-Z0-9\\_:.-]/gim;function Nr(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Zr(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function Er(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Tr(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}Lr.parseTag=function(e,t,n){var i="",u=0,s=!1,r=!1,o=0,c=e.length,l="",a="";e:for(o=0;o<c;o++){var D=e.charAt(o);if(!1===s){if("<"===D){s=o;continue}}else if(!1===r){if("<"===D){i+=n(e.slice(u,o)),s=o,u=o;continue}if(">"===D||o===c-1){i+=n(e.slice(u,s)),l=br(a=e.slice(s,o+1)),i+=t(s,i.length,l,a,Ar(a)),u=o+1,s=!1;continue}if('"'===D||"'"===D)for(var d=1,w=e.charAt(o-d);""===w.trim()||"="===w;){if("="===w){r=D;continue e}w=e.charAt(o-++d)}}else if(D===r){r=!1;continue}}return u<c&&(i+=n(e.substr(u))),i},Lr.parseAttr=function(e,t){var n=0,i=0,u=[],s=!1,r=e.length;function o(e,n){if(!((e=(e=hr.trim(e)).replace(xr,"").toLowerCase()).length<1)){var i=t(e,n||"");i&&u.push(i)}}for(var c=0;c<r;c++){var l,a=e.charAt(c);if(!1!==s||"="!==a)if(!1===s||c!==i)if(/\s|\n|\t/.test(a)){if(e=e.replace(/\s|\n|\t/g," "),!1===s){if(-1===(l=Nr(e,c))){o(hr.trim(e.slice(n,c))),s=!1,n=c+1;continue}c=l-1;continue}if(-1===(l=Er(e,c-1))){o(s,Tr(hr.trim(e.slice(n,c)))),s=!1,n=c+1;continue}}else;else{if(-1===(l=e.indexOf(a,c+1)))break;o(s,hr.trim(e.slice(i+1,l))),s=!1,n=(c=l)+1}else s=e.slice(n,c),n=c+1,i='"'===e.charAt(n)||"'"===e.charAt(n)?n:Zr(e,c+1)}return n<e.length&&(!1===s?o(e.slice(n)):o(s,Tr(hr.trim(e.slice(n))))),hr.trim(u.join(" "))};var Sr=_s.FilterCSS,Xr=Fs,vr=Lr,Yr=vr.parseTag,jr=vr.parseAttr,zr=$s;function Gr(e){return null==e}function Fr(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=Xr.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=Xr.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":Xr.attributeWrapSign,e.onTag=e.onTag||Xr.onTag,e.onTagAttr=e.onTagAttr||Xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||Xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||Xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||Xr.safeAttrValue,e.escapeHtml=e.escapeHtml||Xr.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Sr(e.css))}Fr.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,i=n.whiteList,u=n.onTag,s=n.onIgnoreTag,r=n.onTagAttr,o=n.onIgnoreTagAttr,c=n.safeAttrValue,l=n.escapeHtml,a=t.attributeWrapSign,D=t.cssFilter;n.stripBlankChar&&(e=Xr.stripBlankChar(e)),n.allowCommentTag||(e=Xr.stripCommentTag(e));var d=!1;n.stripIgnoreTagBody&&(d=Xr.StripTagBody(n.stripIgnoreTagBody,s),s=d.onIgnoreTag);var w=Yr(e,(function(e,t,n,d,w){var M={sourcePosition:e,position:t,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(i,n)},y=u(n,d,M);if(!Gr(y))return y;if(M.isWhite){if(M.isClosing)return"</"+n+">";var C=function(e){var t=zr.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=zr.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=zr.trim(e.slice(0,-1))),{html:e,closing:n}}(d),I=i[n],m=jr(C.html,(function(e,t){var i=-1!==zr.indexOf(I,e),u=r(n,e,t,i);return Gr(u)?i?(t=c(n,e,t,D))?e+"="+a+t+a:e:Gr(u=o(n,e,t,i))?void 0:u:u}));return d="<"+n,m&&(d+=" "+m),C.closing&&(d+=" /"),d+=">"}return Gr(y=s(n,d,M))?l(d):y}),l);return d&&(w=d.remove(w)),w};var Kr=Fr;!function(e,t){var n=Fs,i=Lr,u=Kr;function s(e,t){return new u(t).process(e)}(t=e.exports=s).filterXSS=s,t.FilterXSS=u,function(){for(var e in n)t[e]=n[e];for(var u in i)t[u]=i[u]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(Gs,Gs.exports);var Wr=dt(Gs.exports);function kr(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Vr(e){let t=function(){let e=kr();return Wr||e.xss}();let n=function e(n){return ze(n)||De(n)?(pn(n,(function(t,i){n[i]=e(t)})),n):Me(n)?t(n,{onIgnoreTagAttr:function(e,n,i,u){if("style"===n)return n+'="'+t.escapeAttrValue(i)+'"'}}):n}(cs(e));return n}let Br=null,Hr=null;function Ur(e,t,n,i="save"){if(!de(Br))throw console.log("ds",Br),new Error("invalid ds");let u=Br[e].keys,s=!1;ze(n)||(s=!0,n=[n]);let r=zs();return i.indexOf("insert")>=0&&(u.indexOf("userId")>=0&&pn(n,((e,i)=>{n[i].userId=t})),u.indexOf("timeCreate")>=0&&pn(n,((e,t)=>{n[t].timeCreate=r})),u.indexOf("userIdUpdate")>=0&&pn(n,((e,i)=>{n[i].userIdUpdate=t})),u.indexOf("timeUpdate")>=0&&pn(n,((e,t)=>{n[t].timeUpdate=r}))),(i.indexOf("insert")>=0||i.indexOf("save")>=0)&&(u.indexOf("userIdUpdate")>=0&&pn(n,((e,i)=>{n[i].userIdUpdate=t})),u.indexOf("timeUpdate")>=0&&pn(n,((e,t)=>{n[t].timeUpdate=r}))),n=Ti(n,((e,t)=>{let n={};return pn(e,((e,t)=>{e=Vr(e),n[t]=e})),n})),n=s?n[0]:n}async function Qr(e,t,n,i){let u,s=null;if(!de(Hr))return Promise.reject("無有效woItems");let r=ae(Hr,t,null);if(null===r)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(u=await r.select(i).catch((e=>{console.log(`${t}.select catch`,e),s="取得資料失敗"})),Me(s))return Promise.reject(s)}else if("insert"===n||"save"===n){try{i=Ur(t,e,i,n)}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if("insert"===n?u=await r.insert(i).catch((e=>{console.log(`${t}.save catch`,e),s="新增資料失敗"})):"save"===n&&(u=await r.save(i).catch((e=>{console.log(`${t}.save catch`,e),s="儲存資料失敗"}))),Me(s))return Promise.reject(s);u=ze(i)?Ti(i,(e=>({id:e.id}))):{id:i.id}}else if("del"===n)u=await r.del(i).catch((e=>{console.log(`${t}.del catch`,e),s="刪除資料失敗"}));else if("delAll"===n)u=await r.delAll(i).catch((e=>{console.log(`${t}.delAll catch`,e),s="刪除資料失敗"}));else if("mix"===n){if(!de(i))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;u=[];let o=ae(i,"add",[]);if(hs(o)>0){try{o=Ur(t,e,o,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if(await r.insert(o).catch((e=>{console.log(`${t}.save catch`,e),s="新增資料失敗"})),Me(s))return Promise.reject(s);n=Ti(o,(e=>({id:e.id}))),u=[...u,...n]}let c=ae(i,"del",[]);if(hs(c)>0){if(await r.del(c).catch((e=>{console.log(`${t}.save catch`,e),s="刪除資料失敗"})),Me(s))return Promise.reject(s);n=Ti(c,(e=>({id:e.id}))),u=[...u,...n]}let l=ae(i,"diff",[]);if(hs(l)>0){try{l=Ur(t,e,l)}catch(e){return console.log("adjustData catch",e.toString()),s="調整資料失敗",Promise.reject(s)}if(await r.save(l).catch((e=>{console.log(`${t}.save catch`,e),s="變更資料失敗"})),Me(s))return Promise.reject(s);n=Ti(l,(e=>({id:e.id}))),u=[...u,...n]}}else s=`invalid mode: ${n}`;return Me(s)?Promise.reject(s):u}function Jr(e,t){return Br=e,Hr=t,Qr}function Pr(e,t){var n=[];return mn(e,(function(e,i,u){t(e,i,u)&&n.push(e)})),n}function Rr(e,t){return(c(e)?Qn:Pr)(e,Zi(t))}function Or(e,t=null){if(!ze(e)){let e=it();return e.reject("pms is not an array"),e}return e.reduce(((e,t)=>e.then(t)),Promise.resolve(t))}let _r=[],$r=[],qr=[],eo=null,to=null,no=!0,io=!0;function uo(e){setTimeout((()=>{_r.push(e)}),1)}function so(e){setTimeout((()=>{$r.push(e)}),1)}function ro(e){setTimeout((()=>{qr.push(e)}),1)}async function oo(e,t,n,i){if(!$e(eo))return Promise.reject("invalid mapOrm");if(no&&!Me(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let u="n";if(no){if(!$e(to))return Promise.reject("invalid getUserById");let t=await to(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");u=ae(t,"isAdmin"),"y"!==u&&"n"!==u&&(u="n");let n=ae(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 Ys(_r,(s=>s({woName:t,userId:e,isAdmin:u,mode:n,input:i}))),hs($r)>0){let s={woName:t,userId:e,isAdmin:u,mode:n,input:i},r=await Or($r,s);i=r.input}let s=await eo(e,t,n,i);return io&&"n"===u&&"select"===n&&ze(s)&&(s=Rr(s,(e=>!jt(e,"isActive")||!("n"===e.isActive)))),hs(qr)>0&&(s=await Or(qr,{woName:t,userId:e,isAdmin:u,mode:n,input:i,output:s})),s}function co(e,t,n,i,u={}){let s=function(e,t,n,i){if(!de(e))throw console.log("ds",e),new Error("invalid ds");if(!$e(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!Me(n))throw console.log("url",n),new Error("invalid url");if(!Me(i))throw console.log("db",i),new Error("invalid db");let u={};return pn(yn(e),(e=>{let s=new t({url:n,db:i,cl:e});u[e]=s})),u}(e,t,n,i),r=function(e,t={}){return $e(e)?(eo=e,no=ae(t,"useCheckUser"),gt(no)||(no=!0),to=ae(t,"getUserById"),io=ae(t,"useExcludeWhenNotAdmin"),gt(io)||(io=!0),{addFunCheck:uo,addFunPreProcessing:so,addFunPostProcessing:ro,procOrm:oo}):Promise.reject("invalid mapOrm")}(Jr(e,s),u);return{...js,woItems:s,...r}}function lo(e,t,n=""){if(!We(t))return{};let i={};return pn(t,(function(t){i[t]=ae(e,t,n)})),i}let ao={id:{pk:!0,name:"主鍵",type:"STRING"},ip:{name:"IP",type:"STRING"},timeBlocked:{name:"封鎖時間",type:"STRING"}},Do={id:{pk:!0,name:"主鍵",type:"STRING"},token:{name:"金鑰",type:"STRING"},userId:{name:"使用者主鍵",type:"STRING"},isApp:{name:"是否為應用系統",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},timeEnd:{name:"到期時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},wo={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},account:{name:"帳號",type:"STRING"},password:{name:"密碼",type:"STRING"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},redir:{name:"登入後轉址",type:"STRING"},isAdmin:{name:"是否為系統管理員",type:"STRING"},timeVerified:{name:"驗證時間",type:"STRING"},timeExpired:{name:"過期時間",type:"STRING"},timeBlocked:{name:"封鎖時間",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}};function Mo(e,t={}){let n=ae(t,"useCreateStorage");gt(n)||(n=!1);let{keyTable:i,tableNameCht:u,tableNameEng:s,settings:r,parser:o,funNew:c,funTest:l,ext:a}=e;if(!Me(i))throw new Error(`invalid keyTable[${i}]`);if(Me(u)||(u=i),Me(s)||(s=i),!de(r))throw new Error("invalid settings");de(a)||(a=null),de(o)||(o=null),$e(c)||(c=null);let D=null;$e(l)&&(D=async e=>{if(!de(e))throw new Error("invalid wo");if(!jt(e,i))throw console.log(e),new Error(`keyTable[${i}] is not in wo`);let t=[];try{t=l(),ut(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${i}] funTest catch`,e),new Error(e)}if(0!==hs(t))return n&&await e[i].createStorage(),await e[i].save(t),t});let d={},w={};return pn(yn(r),(e=>{let t=ae(r,`${e}.name`,"");Me(t)&&(d[e]=t);let n=ae(r,`${e}.type`,"");Me(n)&&(w[e]=n)})),{...e,keyTable:i,tableNameCht:u,tableNameEng:s,settings:r,keys:yn(r),kpType:w,kpHead:d,parser:o,funNew:c,funTest:l,funTestAndSave:D,ext:a}}let yo={ips:{keyTable:"ips",tableNameCht:"IP使用者",tableNameEng:"IPs",settings:ao,funNew:(e={})=>{let t=lo(e,yn(ao));return t.id=`${vn()}-${mt()}`,t},funTest:()=>[]},tokens:{keyTable:"tokens",tableNameCht:"金鑰",tableNameEng:"Tokens",settings:Do,funNew:(e={})=>{let t=lo(e,yn(Do));return t.id=`${vn()}-${mt()}`,t.token=`${vn()}-${mt()}`,t.timeCreate=zs(),t.timeEnd=Mt().add(30,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),t.timeUpdate=t.timeCreate,t},funTest:()=>[]},users:{keyTable:"users",tableNameCht:"使用者",tableNameEng:"Users",settings:wo,funNew:(e={})=>{let t=lo(e,yn(wo));return t.id=`${vn()}-${mt()}`,t.timeCreate=zs(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]}},Co={};for(let e in yo)Co[e]=Mo(yo[e],{useCreateStorage:!1});function Io(e){let t;return t=tt(e,1),"Z"===t?`${e=nt(e,1)}+00:00`:e}let mo={checkTZ:function(e){let t;return t=tt(e,1),"Z"===t||(t=tt(e,6),!!/[+|-]\d\d:\d\d/.test(t))},delTZ:function(e){let t;return t=tt(e,1),nt(e,"Z"===t?1:6)},normTZ:Io,sepTZ:function(e){let t=Io(e);return{t:nt(t,6),tz:tt(t,6)}}};function go(e){if(!Me(e))return!1;if(!mo.checkTZ(e))return!1;let t=mo.delTZ(e),n="YYYY-MM-DDTHH:mm:ss.SSS";return t===Mt(t,n).format(n)}function po(e){let t=ae(e,"timeExpired","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")>=t}function fo(e){let t=ae(e,"timeBlocked","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}function Lo(e){return"y"===ae(e,"isActive","")}var ho={exports:{}};function bo(e){try{return JSON.stringify(e)}catch(e){return'"[Circular]"'}}const Ao=function(e,t,n){var i=n&&n.stringify||bo;if("object"==typeof e&&null!==e){var u=t.length+1;if(1===u)return e;var s=new Array(u);s[0]=i(e);for(var r=1;r<u;r++)s[r]=i(t[r]);return s.join(" ")}if("string"!=typeof e)return e;var o=t.length;if(0===o)return e;for(var c="",l=0,a=-1,D=e&&e.length||0,d=0;d<D;){if(37===e.charCodeAt(d)&&d+1<D){switch(a=a>-1?a:0,e.charCodeAt(d+1)){case 100:case 102:if(l>=o)break;if(null==t[l])break;a<d&&(c+=e.slice(a,d)),c+=Number(t[l]),a=d+2,d++;break;case 105:if(l>=o)break;if(null==t[l])break;a<d&&(c+=e.slice(a,d)),c+=Math.floor(Number(t[l])),a=d+2,d++;break;case 79:case 111:case 106:if(l>=o)break;if(void 0===t[l])break;a<d&&(c+=e.slice(a,d));var w=typeof t[l];if("string"===w){c+="'"+t[l]+"'",a=d+2,d++;break}if("function"===w){c+=t[l].name||"<anonymous>",a=d+2,d++;break}c+=i(t[l]),a=d+2,d++;break;case 115:if(l>=o)break;a<d&&(c+=e.slice(a,d)),c+=String(t[l]),a=d+2,d++;break;case 37:a<d&&(c+=e.slice(a,d)),c+="%",a=d+2,d++,l--}++l}++d}if(-1===a)return e;a<D&&(c+=e.slice(a));return c};ho.exports=vo;const xo=function(){function e(e){return void 0!==e&&e}try{return"undefined"!=typeof globalThis||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch(t){return e(self)||e(window)||e(this)||{}}}().console||{},No={mapHttpRequest:Ko,mapHttpResponse:Ko,wrapRequestSerializer:Wo,wrapResponseSerializer:Wo,wrapErrorSerializer:Wo,req:Ko,res:Ko,err:Go,errWithCause:Go};function Zo(e,t){return"silent"===e?1/0:t.levels.values[e]}const Eo=Symbol("pino.logFuncs"),To=Symbol("pino.hierarchy"),So={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function Xo(e,t){const n={logger:t,parent:e[To]};t[To]=n}function vo(e){(e=e||{}).browser=e.browser||{};const t=e.browser.transmit;if(t&&"function"!=typeof t.send)throw Error("pino: transmit option must have a send function");const n=e.browser.write||xo;e.browser.write&&(e.browser.asObject=!0);const i=e.serializers||{},u=function(e,t){if(Array.isArray(e))return e.filter((function(e){return"!stdSerializers.err"!==e}));return!0===e&&Object.keys(t)}(e.browser.serialize,i);let s=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(s=!1);const r=Object.keys(e.customLevels||{}),o=["error","fatal","warn","info","debug","trace"].concat(r);"function"==typeof n&&o.forEach((function(e){n[e]=n})),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const c=e.level||"info",l=Object.create(n);l.log||(l.log=ko),function(e,t,n){const i={};t.forEach((e=>{i[e]=n[e]?n[e]:xo[e]||xo[So[e]||"log"]||ko})),e[Eo]=i}(l,o,n),Xo({},l),Object.defineProperty(l,"levelVal",{get:function(){return Zo(this.level,this)}}),Object.defineProperty(l,"level",{get:function(){return this._level},set:function(e){if("silent"!==e&&!this.levels.values[e])throw Error("unknown level "+e);this._level=e,Yo(this,a,l,"error"),Yo(this,a,l,"fatal"),Yo(this,a,l,"warn"),Yo(this,a,l,"info"),Yo(this,a,l,"debug"),Yo(this,a,l,"trace"),r.forEach((e=>{Yo(this,a,l,e)}))}});const a={transmit:t,serialize:u,asObject:e.browser.asObject,asObjectBindingsOnly:e.browser.asObjectBindingsOnly,formatters:e.browser.formatters,levels:o,timestamp:Fo(e),messageKey:e.messageKey||"msg",onChild:e.onChild||ko};function D(n,s,r){if(!s)throw new Error("missing bindings for child Pino");r=r||{},u&&s.serializers&&(r.serializers=s.serializers);const o=r.serializers;if(u&&o){var c=Object.assign({},i,o),l=!0===e.browser.serialize?Object.keys(c):u;delete s.serializers,jo([s],l,c,this._stdErrSerialize)}function a(e){this._childLevel=1+(0|e._childLevel),this.bindings=s,c&&(this.serializers=c,this._serialize=l),t&&(this._logEvent=zo([].concat(e._logEvent.bindings,s)))}a.prototype=this;const d=new a(this);return Xo(this,d),d.child=function(...e){return D.call(this,n,...e)},d.level=r.level||this.level,n.onChild(d),d}return l.levels=function(e){const t=e.customLevels||{},n=Object.assign({},vo.levels.values,t),i=Object.assign({},vo.levels.labels,function(e){const t={};return Object.keys(e).forEach((function(n){t[e[n]]=n})),t}(t));return{values:n,labels:i}}(e),l.level=c,l.isLevelEnabled=function(e){return!!this.levels.values[e]&&this.levels.values[e]>=this.levels.values[this.level]},l.setMaxListeners=l.getMaxListeners=l.emit=l.addListener=l.on=l.prependListener=l.once=l.prependOnceListener=l.removeListener=l.removeAllListeners=l.listeners=l.listenerCount=l.eventNames=l.write=l.flush=ko,l.serializers=i,l._serialize=u,l._stdErrSerialize=s,l.child=function(...e){return D.call(this,a,...e)},t&&(l._logEvent=zo()),l}function Yo(e,t,n,i){if(Object.defineProperty(e,i,{value:Zo(e.level,n)>Zo(i,n)?ko:n[Eo][i],writable:!0,enumerable:!0,configurable:!0}),e[i]===ko){if(!t.transmit)return;const u=Zo(t.transmit.level||e.level,n);if(Zo(i,n)<u)return}e[i]=function(e,t,n,i){return u=e[Eo][i],function(){const s=t.timestamp(),r=new Array(arguments.length),o=Object.getPrototypeOf&&Object.getPrototypeOf(this)===xo?xo:this;for(var c=0;c<r.length;c++)r[c]=arguments[c];var l=!1;if(t.serialize&&(jo(r,this._serialize,this.serializers,this._stdErrSerialize),l=!0),t.asObject||t.formatters?u.call(o,...function(e,t,n,i,u){const{level:s,log:r=e=>e}=u.formatters||{},o=n.slice();let c=o[0];const l={};let a=1+(0|e._childLevel);if(a<1&&(a=1),i&&(l.time=i),s){const n=s(t,e.levels.values[t]);Object.assign(l,n)}else l.level=e.levels.values[t];if(u.asObjectBindingsOnly){if(null!==c&&"object"==typeof c)for(;a--&&"object"==typeof o[0];)Object.assign(l,o.shift());return[r(l),...o]}if(null!==c&&"object"==typeof c){for(;a--&&"object"==typeof o[0];)Object.assign(l,o.shift());c=o.length?Ao(o.shift(),o):void 0}else"string"==typeof c&&(c=Ao(o.shift(),o));return void 0!==c&&(l[u.messageKey]=c),[r(l)]}(this,i,r,s,t)):u.apply(o,r),t.transmit){const u=t.transmit.level||e._level,o=Zo(u,n),c=Zo(i,n);if(c<o)return;!function(e,t,n,i=!1){const u=t.send,s=t.ts,r=t.methodLevel,o=t.methodValue,c=t.val,l=e._logEvent.bindings;i||jo(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=s,e._logEvent.messages=n.filter((function(e){return-1===l.indexOf(e)})),e._logEvent.level.label=r,e._logEvent.level.value=o,u(r,e._logEvent,c),e._logEvent=zo(l)}(this,{ts:s,methodLevel:i,methodValue:c,transmitLevel:u,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:Zo(e._level,n)},r,l)}};var u}(e,t,n,i);const u=function(e){const t=[];e.bindings&&t.push(e.bindings);let n=e[To];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}(e);0!==u.length&&(e[i]=function(e,t){return function(){return t.apply(this,[...e,...arguments])}}(u,e[i]))}function jo(e,t,n,i){for(const u in e)if(i&&e[u]instanceof Error)e[u]=vo.stdSerializers.err(e[u]);else if("object"==typeof e[u]&&!Array.isArray(e[u])&&t)for(const i in e[u])t.indexOf(i)>-1&&i in n&&(e[u][i]=n[i](e[u][i]))}function zo(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function Go(e){const t={type:e.constructor.name,msg:e.message,stack:e.stack};for(const n in e)void 0===t[n]&&(t[n]=e[n]);return t}function Fo(e){return"function"==typeof e.timestamp?e.timestamp:!1===e.timestamp?Vo:Bo}function Ko(){return{}}function Wo(e){return e}function ko(){}function Vo(){return!1}function Bo(){return Date.now()}vo.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}},vo.stdSerializers=No,vo.stdTimeFunctions=Object.assign({},{nullTime:Vo,epochTime:Bo,unixTime:function(){return Math.round(Date.now()/1e3)},isoTime:function(){return new Date(Date.now()).toISOString()}}),ho.exports.default=vo,ho.exports.pino=vo;var Ho=dt(ho.exports);let Uo=r.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(Uo).href:"undefined"==typeof document?location.href:o&&"SCRIPT"===o.tagName.toUpperCase()&&o.src||new URL("w-web-sso.umd.js",document.baseURI).href),Qo=e.dirname(Uo);let Jo=function(t={}){let n=ae(t,"fdLog");Me(n)||(n="./_logs");let i=ae(t,"interval");"day"!==i&&"hr"!==i&&(i="day");let u=Ho.transport({targets:[{level:"info",target:e.resolve(Qo,"./formatter.mjs"),options:{interval:i,logDir:n}}]});return Ho(u)}({fdLog:"./_logs",interval:"hr"});function Po(){let e=Lt(),t={};function n(t,n){setTimeout((()=>{e.emit(t,n)}),1)}function i(e,i={}){if(jt(t,e))return;let u=ae(i,"fun");$e(u)||(u=async()=>{});let s=ae(i,"inputs");ze(s)||(s=[]);let r=ae(i,"timeExpired");je(r)||(r=5e3),r=Ye(r),t[e]={needExec:!0,fun:u,running:!1,inputs:s,value:null,time:null,timeExpired:r},n("message",{fun:"set",key:e,timeExpired:r})}async function u(e){if(jt(t,e)){let i;n("message",{fun:"get",key:e,msg:"waiting"}),await ht((()=>!t[e].running),{timeInterval:1e3});let u=Date.now();i=t[e].needExec;let s=u-t[e].time;return i?n("message",{fun:"get",key:e,msg:"execute first"}):t[e].timeExpired>0&&s>t[e].timeExpired&&(n("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:s}),i=!0),i?(n("message",{fun:"get",key:e,msg:"fun start"}),t[e].running=!0,t[e].value=await t[e].fun(...t[e].inputs).catch((t=>{n("error",{fun:"get",key:e,msg:t})})),t[e].needExec=!1,t[e].time=u,t[e].running=!1,n("message",{fun:"get",key:e,msg:"fun end"})):n("message",{fun:"get",key:e,msg:"use cache"}),cs(t[e].value)}return n("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=i,e.getProxy=async function(e,t={}){return i(e,t),u(e)},e.get=u,e.update=function(e,i){jt(t,e)&&(n("message",{fun:"updateValue",key:e}),t[e].value=i,t[e].time=Date.now())},e.clear=function(e){jt(t,e)&&(n("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){jt(t,e)&&(n("message",{fun:"remove",key:e}),delete t[e])},e}var Ro,Oo={exports:{}},_o={exports:{}};!function(e){var t;e.exports=(t=Tt(),Ro||(Ro=1,function(e){var t,n,i,u,s,r,o;e.exports=(i=(n=o=Tt()).lib,u=i.Base,s=i.WordArray,(r=n.x64={}).Word=u.extend({init:function(e,t){this.high=e,this.low=t}}),r.WordArray=u.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:8*e.length},toX32:function(){for(var e=this.words,t=e.length,n=[],i=0;i<t;i++){var u=e[i];n.push(u.high),n.push(u.low)}return s.create(n,this.sigBytes)},clone:function(){for(var e=u.clone.call(this),t=e.words=this.words.slice(0),n=t.length,i=0;i<n;i++)t[i]=t[i].clone();return e}}),o)}(_o)),function(){var e=t,n=e.lib.Hasher,i=e.x64,u=i.Word,s=i.WordArray,r=e.algo;function o(){return u.create.apply(u,arguments)}var c=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var a=r.SHA512=n.extend({_doReset:function(){this._hash=new s.init([new u.init(1779033703,4089235720),new u.init(3144134277,2227873595),new u.init(1013904242,4271175723),new u.init(2773480762,1595750129),new u.init(1359893119,2917565137),new u.init(2600822924,725511199),new u.init(528734635,4215389547),new u.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=this._hash.words,i=n[0],u=n[1],s=n[2],r=n[3],o=n[4],a=n[5],D=n[6],d=n[7],w=i.high,M=i.low,y=u.high,C=u.low,I=s.high,m=s.low,g=r.high,p=r.low,f=o.high,L=o.low,h=a.high,b=a.low,A=D.high,x=D.low,N=d.high,Z=d.low,E=w,T=M,S=y,X=C,v=I,Y=m,j=g,z=p,G=f,F=L,K=h,W=b,k=A,V=x,B=N,H=Z,U=0;U<80;U++){var Q,J,P=l[U];if(U<16)J=P.high=0|e[t+2*U],Q=P.low=0|e[t+2*U+1];else{var R=l[U-15],O=R.high,_=R.low,$=(O>>>1|_<<31)^(O>>>8|_<<24)^O>>>7,q=(_>>>1|O<<31)^(_>>>8|O<<24)^(_>>>7|O<<25),ee=l[U-2],te=ee.high,ne=ee.low,ie=(te>>>19|ne<<13)^(te<<3|ne>>>29)^te>>>6,ue=(ne>>>19|te<<13)^(ne<<3|te>>>29)^(ne>>>6|te<<26),se=l[U-7],re=se.high,oe=se.low,ce=l[U-16],le=ce.high,ae=ce.low;J=(J=(J=$+re+((Q=q+oe)>>>0<q>>>0?1:0))+ie+((Q+=ue)>>>0<ue>>>0?1:0))+le+((Q+=ae)>>>0<ae>>>0?1:0),P.high=J,P.low=Q}var De,de=G&K^~G&k,we=F&W^~F&V,Me=E&S^E&v^S&v,ye=T&X^T&Y^X&Y,Ce=(E>>>28|T<<4)^(E<<30|T>>>2)^(E<<25|T>>>7),Ie=(T>>>28|E<<4)^(T<<30|E>>>2)^(T<<25|E>>>7),me=(G>>>14|F<<18)^(G>>>18|F<<14)^(G<<23|F>>>9),ge=(F>>>14|G<<18)^(F>>>18|G<<14)^(F<<23|G>>>9),pe=c[U],fe=pe.high,Le=pe.low,he=B+me+((De=H+ge)>>>0<H>>>0?1:0),be=Ie+ye;B=k,H=V,k=K,V=W,K=G,W=F,G=j+(he=(he=(he=he+de+((De+=we)>>>0<we>>>0?1:0))+fe+((De+=Le)>>>0<Le>>>0?1:0))+J+((De+=Q)>>>0<Q>>>0?1:0))+((F=z+De|0)>>>0<z>>>0?1:0)|0,j=v,z=Y,v=S,Y=X,S=E,X=T,E=he+(Ce+Me+(be>>>0<Ie>>>0?1:0))+((T=De+be|0)>>>0<De>>>0?1:0)|0}M=i.low=M+T,i.high=w+E+(M>>>0<T>>>0?1:0),C=u.low=C+X,u.high=y+S+(C>>>0<X>>>0?1:0),m=s.low=m+Y,s.high=I+v+(m>>>0<Y>>>0?1:0),p=r.low=p+z,r.high=g+j+(p>>>0<z>>>0?1:0),L=o.low=L+F,o.high=f+G+(L>>>0<F>>>0?1:0),b=a.low=b+W,a.high=h+K+(b>>>0<W>>>0?1:0),x=D.low=x+V,D.high=A+k+(x>>>0<V>>>0?1:0),Z=d.low=Z+H,d.high=N+B+(Z>>>0<H>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(i+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=n._createHelper(a),e.HmacSHA512=n._createHmacHelper(a)}(),t.SHA512)}(Oo);var $o=dt(Oo.exports),qo={exports:{}};!function(e){e.exports=Tt().enc.Hex}(qo);var ec=dt(qo.exports);function tc(e,t,n={}){let i=ae(n,"mode","");if(Me(i)||(i="sha512"),"sha512"!==i)throw new Error("暫時不支援sha512以外方法");let u=`${e}:${t}`;return u=function(e,t=!1){if(!Me(e))return"";if(!gt(t))return"";let n=$o(e),i="";return i=t?n.toString(vt):n.toString(ec),i}(u),u}function nc(e,t,{salt:n,minExpired:i}){let u=async(t,n,i={})=>{let u=null,s=ae(i,"deletePassword");gt(s)||(s=!0);let r=await e.users.select({[t]:n,isActive:"y"}).catch((e=>{u=e}));if(u)return console.log(u),console.log("keyUser",t),console.log("valueUser",n),console.log("failed to find user"),Promise.reject("failed to find user");s&&(r=Ti(r,(e=>(delete e.password,e))));let o=hs(r);return 0===o?(console.log("keyUser",t),console.log("valueUser",n),console.log(`can not find the user by ${t}`),Promise.reject(`can not find the user by ${t}`)):o>=2?(console.log("keyUser",t),console.log("valueUser",n),console.log(`duplicate ${t}`),Promise.reject(`duplicate ${t}`)):r[0]},s=async(e,t)=>await u(e,t),r=async(e,t={})=>await s("id",e),o=async t=>{let n=null;if(!ke(i))return console.log("minExpired",i),console.log("invalid minExpired"),Promise.reject("invalid minExpired");let u=Co.tokens.funNew({userId:t});u.timeEnd=Mt().add(i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");let s=ae(u,"token","");return await e.tokens.insert(u).catch((e=>{n=e})),n?(console.log(n),console.log("token",s),console.log("can not create a token from userId"),Promise.reject("can not create a token from userId")):s},c=async(t,n={})=>{let i=await e.tokens.select({token:t}),u=hs(i);if(0===u)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(u>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let s=ae(i,0,""),o=ae(s,"userId",""),c=await(async(e,t={})=>{let n=ae(e,"timeEnd","");if(!go(n))return console.log("tk",e),console.log("timeEnd",n),console.log("invalid timeEnd"),Promise.reject("invalid timeEnd");let i=ae(e,"isApp",""),u=ae(t,"fun",null),s=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<n,o=!0;if("y"!==i&&$e(u)){let t=ae(e,"userId","");o=u(e,await r(t)),ut(o)&&(o=await o)}return s&&o})(s,n);return Jo.info({event:"fun-checkToken",token:t,userId:o,res:c}),c||console.log(`block token[${t}]`),c},l=async(e,t={})=>{let n=null;return await c(e,t).then((e=>{!1===e&&(n="token expired")})).catch((e=>{n=e})),null===n||Promise.reject(n)},a=async(n,i,u,s={})=>{let r=ae(s,"resetOrder");gt(r)||(r=!1),i=function(e,t,n=""){return We(e)&&We(t)?Ti(e,(e=>lo(e,t,n))):[]}(i,Co[n].keys),r&&(i=Ti(i,((e,t)=>(e.order=t+1,e))));let o=(e,t)=>{let n=null,i={};return pn(e,((e,u)=>{let s=ae(e,t,"");return Me(s)?jt(i,s)?(n=`rows[${u}].${t}[${s}] is duplicate`,!1):void(i[s]=!0):(n=`rows[${u}].${t} is not an effective string`,!1)})),n},c=null;if(function(e,t){function n(e){return ze(e)?e:[e]}if(Ke(e))return!1;if(0===(e=n(e)).length)return!1;if(Ke(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(i=e[n],u=t[s],pi(i,u))return!0;var i,u;return!1}(n,["users"])){if(c=o(i,"id"),null!==c)return Promise.reject(c);if(c=o(i,"email"),null!==c)return Promise.reject(c)}let l=i,a=function(e,t,n,i={}){let u=ae(i,"withInfor");gt(u)||(u=!0);let s={del:[],add:[],same:[],diff:[]};if(!Me(n))return console.log("invalid key"),u&&(s.infor={}),s;ze(e)||(e=[e]),ze(t)||(t=[t]),e=Rr(e,(e=>jt(e,n))),t=Rr(t,(e=>jt(e,n)));let r=new Map(t.map((e=>[e[n],e])));for(let t of e){let e=r.get(t[n]);e?(JSON.stringify(t)===JSON.stringify(e)?s.same.push(e):s.diff.push(e),r.delete(t[n])):s.del.push(t)}if(s.add=Array.from(r.values()),u){let e={};for(let t of s.del)e[t[n]]="del";for(let t of s.add)e[t[n]]="add";for(let t of s.diff)e[t[n]]="diff";for(let t of s.same)e[t[n]]="same";s.infor=e}return s}(await e[n].select(),l,u);return hs(a.del)>0&&await t("",n,"del",a.del),hs(a.add)>0&&await t("",n,"insert",a.add),hs(a.diff)>0&&await t("",n,"save",a.diff),l},D=async t=>{let n=await e.tokens.select({token:t}),i=hs(n);if(0===i)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(i>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let u=ae(n,0,null),s=ae(u,"isApp",""),o=null;if("y"!==s){let e=ae(u,"userId","");o=await r(e)}else{let e=ae(u,"userId","");if(!Me(e))return console.log("tk",u),console.log("invalid userId from token"),Promise.reject("invalid userId from token");o={id:e,account:"no account",name:"no name",email:"no email",description:"no description",from:"no from",redir:"no redir",isAdmin:"y",timeVerified:"2000-01-01T00:00:00.000+08:00",timeExpired:"",timeBlocked:"",isActive:"y"}}return{id:o.id,account:o.account,name:o.name,email:o.email,description:o.description,from:o.from,redir:o.redir,isApp:"y"===s?"y":"n",isAdmin:o.isAdmin,timeVerified:o.timeVerified,timeExpired:o.timeExpired,timeBlocked:o.timeBlocked,isActive:o.isActive}},d=async(e,t,n={})=>{let i=await s(e,t);return de(i)?{id:i.id,account:i.account,name:i.name,email:i.email,description:i.description,from:i.from,redir:i.redir,isAdmin:i.isAdmin,timeVerified:i.timeVerified,timeExpired:i.timeExpired,timeBlocked:i.timeBlocked,isActive:i.isActive}:null},w=async(t={})=>{let n=ae(t,"needActive");gt(n)||(n=!1);let i=ae(t,"deletePassword");gt(i)||(i=!0);let u={};n&&(u={isActive:"y"});let s=await e.users.select(u);return i&&(s=Ti(s,(e=>(delete e.password,e)))),s},M=Po(),y=async(e,t={})=>(await l(e,t),await w(t)),C=async e=>e=await a("users",e,"id",{resetOrder:!0}),I=async()=>await e.tokens.select(),m=Po(),g=async()=>await e.ips.select(),p=Po(),f=!1;setInterval((async()=>{f||(f=!0,await(async()=>{let t=await w({});await Ys(t,(async t=>{let n=!fo(t),i=Me(t.timeBlocked);n&&i&&await e.users.save({id:t.id,timeBlocked:""})}))})().finally((()=>{f=!1})))}),2e3);let L=!1;setInterval((async()=>{L||(L=!0,await(async()=>{let t=await g();await Ys(t,(async t=>{let n=!fo(t),i=Me(t.timeBlocked);n&&i&&await e.ips.save({id:t.id,timeBlocked:""})}))})().finally((()=>{L=!1})))}),2e3);let h={getTokenByKV:async(t,n)=>{let i=null,u=await e.tokens.select({[t]:n}).catch((e=>{i=e}));if(i)return console.log(i),console.log("keyToken",t),console.log("valueToken",n),console.log("failed to find token"),Promise.reject("failed to find token");let s=hs(u);return 0===s?Promise.reject(`can not find the token by keyToken[${t}]`):s>=2?(console.log("keyToken",t),console.log("valueToken",n),console.log(`duplicate token by keyToken[${t}]`),Promise.reject(`duplicate token by keyToken[${t}]`)):u[0]},getIpByKV:async(t,n)=>{let i=null,u=await e.ips.select({[t]:n}).catch((e=>{i=e}));if(i)return console.log(i),console.log("keyIp",t),console.log("valueIp",n),console.log("failed to find ip"),Promise.reject("failed to find ip");let s=hs(u);return 0===s?Promise.reject(`can not find the ip by keyIp[${t}]`):s>=2?(console.log("keyIp",t),console.log("valueIp",n),console.log(`duplicate ip by keyIp[${t}]`),Promise.reject(`duplicate ip by keyIp[${t}]`)):u[0]},getGenUserByKV:s,getGenUserByUserId:r,getGenUserByAccount:async(e,t={})=>await s("account",e),loginByAccountAndPassword:async(e,t)=>{let i=tc(t,n),s=await u("account",e,{deletePassword:!1});if(i!==ae(s,"password",""))return Promise.reject("incorrect user account or password");let r=ae(s,"id",""),c=await o(r);return{id:s.id,account:s.account,name:s.name,email:s.email,description:s.description,from:s.from,redir:s.redir,isAdmin:s.isAdmin,isActive:s.isActive,token:c}},logoutByToken:async t=>{let n=null,i=await e.tokens.select({token:t}),u=hs(i);if(0===u)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(u>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let s=ae(i,0,""),r=ae(s,"userId",""),o=await e.tokens.del({id:s.id}).catch((e=>{n=e}));return n?(console.log(n),console.log("token",t),console.log("failed to delete token"),Promise.reject("failed to delete token")):(o=ae(o,"0.nDeleted",0),1!==o?(console.log("token",t),console.log("can not delete the token"),Promise.reject("can not delete the token")):(Jo.info({event:"fun-logout",token:t,userId:r}),!0))},checkToken:l,refreshToken:async t=>{let n=null,u=await e.tokens.select({token:t}),s=hs(u);if(0===s)return console.log("token",t),console.log("invalid token"),Promise.reject("invalid token");if(s>=2)return console.log("token",t),console.log("duplicate tokens"),Promise.reject("duplicate tokens");let r=ae(u,0,""),o=ae(r,"timeEnd","");if(!go(o))return console.log("token",t),console.log("timeEnd",o),console.log("invalid timeEnd"),Promise.reject("invalid timeEnd");let c=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ");if(c>=o)return console.log("token",t),console.log("tn",c),console.log("timeEnd",o),console.log("token expired"),Promise.reject("token expired");let l=Mt().add(i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),a=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ");return await e.tokens.save({id:r.id,timeEnd:l,timeUpdate:a}).catch((e=>{n=e})),n?(console.log(n),console.log("token",t),console.log("can not update timeEnd for token"),Promise.reject("can not update timeEnd for token")):l},getUserByToken:D,checkTokenAndGetUserByToken:async(e,t,n={})=>(await l(e,n),await D(t)),getUserInfor:d,checkTokenAndGetUserInfor:async(e,t,n,i={})=>(await l(e,i),await d(t,n)),getUsersList:w,getUsersListCache:async()=>await M.getProxy("fun",{fun:w,inputs:null,timeExpired:3e4}),checkTokenAndGetUsersList:y,checkTokenAndGetActiveUsersList:async(e,t={})=>await y(e,{...t,needActive:!0}),updateUsersList:C,checkTokenAndUpdateUsersList:async(e,t,n={})=>(await l(e,n),t=await C(t)),getTokensList:I,getTokensListCache:async()=>await m.getProxy("fun",{fun:I,inputs:null,timeExpired:3e4}),checkTokenAndGetTokensList:async(e,t={})=>(await l(e,t),await I()),checkTokenAndUpdateTokensList:async(e,t,n={})=>(await l(e,n),t=await(async e=>await a("tokens",e,"id",{resetOrder:!1}))(t)),getIpsList:g,getIpsListCache:async()=>await p.getProxy("fun",{fun:g,inputs:null,timeExpired:3e4}),checkTokenAndGetIpsList:async(e,t={})=>(await l(e,t),await g()),checkTokenAndUpdateIpsList:async(e,t,n={})=>(await l(e,n),t=await(async e=>await a("ips",e,"id",{resetOrder:!1}))(t))};return h}function ic(e,t,n={}){let{minForAccountLoginFailed:i,numForAccountLoginFailed:u,minBlockForAccountLoginFailed:s,minForTokenCallApi:r,numForTokenCallApi:o,minBlockForTokenCallApi:c,minForIpCallApi:l,numForIpCallApi:a,minBlockForIpCallApi:D}=n,d={},w=async e=>{if(!de(e))return Promise.reject("invalid u");let t=ae(e,"timeBlocked","");if(go(t)){return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}return""!==t&&Promise.reject(`invalid timeBlocked[${t}]`)},M=async e=>{let n=await t.getGenUserByAccount(e);return await w(n)},y=!1;setInterval((async()=>{if(y)return;y=!0;let n=Mt().add(-i,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(d,(async(i,r)=>{let o=i.filter((e=>e>=n));d[r]=o,hs(o)>u&&await(async n=>{let i=await t.getGenUserByAccount(n);if(await w(i))return;let u=Mt().add(s,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await e.users.save({id:i.id,timeBlocked:u});let r=await t.getTokenByKV("userId",i.id);await e.tokens.del({id:r.id})})(r).catch((e=>{console.log(e)}))})).finally((()=>{y=!1}))}),2e3);let C={},I=async e=>ae(C,e,[]),m=!1;setInterval((async()=>{if(m)return;m=!0;let n=Mt().add(-r,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(C,(async(i,u)=>{let s=i.filter((e=>e>=n));C[u]=s,hs(s)>o&&await(async n=>{let i=await t.getTokenByKV("token",n),u=ae(i,"userId","");if(!Me(u))return console.log("token",n),console.log("t",i),Promise.reject("invalid userId");let s=await t.getGenUserByUserId(u);if(await w(s))return;let r=Mt().add(c,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await e.users.save({id:s.id,timeBlocked:r}),await e.tokens.del({id:i.id})})(u).catch((e=>{console.log(e)}))})).finally((()=>{m=!1}))}),2e3);let g={},p=async e=>{if(!de(e))return Promise.reject("invalid oip");let t=ae(e,"timeBlocked","");if(go(t)){return Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")<=t}return""!==t&&Promise.reject(`invalid timeBlocked[${t}]`)},f=async e=>ae(g,e,[]),L=!1;setInterval((async()=>{if(L)return;L=!0;let n=yn(g),i=await t.getIpsList(),u={};pn(i,(e=>{let t=e.ip;u[t]=!0}));let s={};pn(n,(e=>{s[e]=!0}));let r=[];pn(s,((e,t)=>{jt(u,t)||r.push(t)}));let o=Ti(r,(e=>Co.ips.funNew({ip:e})));await e.ips.insert(o).catch((e=>{console.log(e)})).finally((()=>{L=!1}))}),2e3);let h=!1;setInterval((async()=>{if(h)return;h=!0;let n=Mt().add(-l,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ");await Ys(g,(async(i,u)=>{let s=i.filter((e=>e>=n));g[u]=s,hs(s)>a&&await(async n=>{let i=null,u=()=>Mt().add(D,"minute").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),s=null;if(await t.getIpByKV("ip",n).then((e=>{s=e})).catch((e=>{let t="can not find the ip by keyIp[ip]";e===t?s=null:i=t})),null!==i)return Promise.reject(i);if(null===s){let t=u();return s=Co.ips.funNew({ip:n,timeBlocked:t}),await e.ips.insert(s).catch((e=>{i=e})),null!==i?Promise.reject(i):void 0}if(await p(s))return;let r=u();await e.ips.save({id:s.id,timeBlocked:r})})(u).catch((e=>{console.log(e)}))})).catch((e=>{console.log(e)})).finally((()=>{h=!1}))}),2e3);let b={loginByAccountAndPassword:async(e,n)=>{if(await M(e))return Promise.reject("account blocked");let i=null;return await t.loginByAccountAndPassword(e,n).then((t=>{i={state:"success",msg:t},d[e]=[]})).catch((t=>{d[e]||(d[e]=[]),d[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")),i={state:"error",msg:t}})),"success"===i.state?i.msg:Promise.reject(i.msg)},getBlockedByAccount:M,getBlockedByIp:async e=>{let n=null;if(!Me(e))return Promise.reject("invalid ip");let i=null;return await t.getIpByKV("ip",e).then((e=>{i=e})).catch((e=>{let t="can not find the ip by keyIp[ip]";e===t?i=null:n=t})),null!==n?Promise.reject(n):null!==i&&await p(i)},callApiByToken:async e=>{C[e]||(C[e]=[]),C[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"))},getInforsByTokenCallApi:I,getCountsByTokenCallApi:async e=>hs(await I(e)),getIpByHeaders:e=>{let t=ae(e,"headers"),n="";if(!Me(n)){let e=ae(t,"x-forwarded-for","");n=ae(Oi(e,","),0,""),n=Ri(n)}return Me(n)||e&&e.info&&e.info.remoteAddress&&(n=e.info.remoteAddress,n=Ri(n)),Me(n)||e&&e.socket&&e.socket.remoteAddress&&(n=e.socket.remoteAddress,n=Ri(n)),Me(n)||e&&e.connection&&e.connection.remoteAddress&&(n=e.connection.remoteAddress,n=Ri(n)),Me(n)||(console.log("headers",t),console.log("can not get ip of user")),n},callApiByIp:async e=>{g[e]||(g[e]=[]),g[e].push(Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"))},getInforsByIpCallApi:f,getCountsByIpCallApi:async e=>hs(await f(e))};return b}function uc(e,t,n={}){let i=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staUserAccountLogin.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}();return e},u=Po(),r=async()=>await u.getProxy("fun",{fun:i,inputs:null,timeExpired:3e4}),o=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staToken.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}(),n={};pn(e,(e=>{pn(e.data,((e,t)=>{if("count"===t)return!0;n[t]=0}))}));let i=await t.getUsersListCache(),u={count:0};return pn(i,(e=>{u[e.id]=e.name})),e=Ti(e,(e=>{let t=cs(n);var i,s,r;return pn(e.data,((e,n)=>{t[n]=e})),i=t,r={},s=Zi(s=(e,t)=>"count"===t?t:ae(u,t,t)),Cn(i,(function(e,t,n){wu(r,s(e,t,n),e)})),t=r,{time:e.time,data:{count:e.count,...t}}})),e},c=Po(),l=async()=>await c.getProxy("fun",{fun:o,inputs:null,timeExpired:3e4}),a=async()=>{let e=await async function(e=7,t="hr",n={}){let i=it(),u=new s.Worker("./server/staLogs/staIp.shellWorker.mjs");return u.on("message",(e=>{"done"===e.mode?i.resolve(e.payload):"error"===e.mode&&i.reject(e.payload),u.terminate()})),u.on("error",(e=>{i.reject(e)})),u.postMessage({timeLength:e,timeInterval:t,opt:n}),i}(),t={};return pn(e,(e=>{pn(e.data,((e,n)=>{if("count"===n)return!0;t[n]=0}))})),e=Ti(e,(e=>{let n=cs(t);return pn(e.data,((e,t)=>{n[t]=e})),{time:e.time,data:{count:e.count,...n}}})),e},D=Po(),d=async()=>await D.getProxy("fun",{fun:a,inputs:null,timeExpired:3e4}),w={getStaUserSummary:async()=>{let e=await t.getUsersListCache(),n=hs(e),i=0;i=hs(Rr(e,(e=>Lo(e))));let u=0;u=hs(Rr(e,(e=>fo(e))));let s=0;s=hs(Rr(e,(e=>po(e))));return{total:n,active:i,blocked:u,expired:s}},getStaTokenSummary:async()=>{let e=Mt().add(-24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),n=Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ"),i=Mt().add(24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),u=await t.getTokensListCache(),s=hs(u),r=0;r=hs(Rr(u,(t=>t.timeCreate>=e)));let o=0;o=hs(Rr(u,(e=>e.timeEnd>=n&&e.timeEnd<=i)));let c=0;c=hs(Rr(u,(e=>function(e){let t=ae(e,"timeEnd","");return!!go(t)&&Mt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")>t}(e))));return{active:s-c,created24h:r,ending24h:o,ended:c}},getStaIpSummary:async()=>{let e=Mt().add(-24,"hour").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),n=await t.getIpsListCache(),i=0;{let t=Rr(await d(),(t=>Mt(t.time,"YYYY-MM-DDTHH").format("YYYY-MM-DDTHH:mm:ss.SSSZ")>=e));s="data.count",i=(u=t)&&u.length?function(e,t){for(var n,i=-1,u=e.length;++i<u;){var s=t(e[i]);void 0!==s&&(n=void 0===n?s:n+s)}return n}(u,Zi(s)):0}var u,s;let r=0;r=hs(Rr(n,(e=>fo(e))));return{conn24h:i,blocked:r}},getStaUserAccountLogin:r,checkTokenAndGetStaUserAccountLogin:async(e,n={})=>(await t.checkToken(e,n),await r()),getStaToken:l,checkTokenAndGetStaToken:async(e,n={})=>(await t.checkToken(e,n),await l()),getStaIp:d,checkTokenAndGetStaIp:async(e,n={})=>(await t.checkToken(e,n),await d())};return w}var sc={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 i=function(e){return"object"==typeof e?null!==e:"function"==typeof e},u=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e},s=function(e){try{return!!e()}catch(e){return!0}},r=!s((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),o=t.document,c=i(o)&&i(o.createElement),l=function(e){return c?o.createElement(e):{}},a=!r&&!s((function(){return 7!=Object.defineProperty(l("div"),"a",{get:function(){return 7}}).a})),D=function(e,t){if(!i(e))return e;var n,u;if(t&&"function"==typeof(n=e.toString)&&!i(u=n.call(e)))return u;if("function"==typeof(n=e.valueOf)&&!i(u=n.call(e)))return u;if(!t&&"function"==typeof(n=e.toString)&&!i(u=n.call(e)))return u;throw TypeError("Can't convert object to primitive value")},d=Object.defineProperty,w={f:r?Object.defineProperty:function(e,t,n){if(u(e),t=D(t,!0),u(n),a)try{return d(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}},M=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=r?function(e,t,n){return w.f(e,t,M(1,n))}:function(e,t,n){return e[t]=n,e},C={}.hasOwnProperty,I=function(e,t){return C.call(e,t)},m=0,g=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++m+g).toString(36))},f=e((function(e){var i="__core-js_shared__",u=t[i]||(t[i]={});(e.exports=function(e,t){return u[e]||(u[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=f("native-function-to-string",Function.toString),h=e((function(e){var i=p("src"),u="toString",s=(""+L).split(u);n.inspectSource=function(e){return L.call(e)},(e.exports=function(e,n,u,r){var o="function"==typeof u;o&&(I(u,"name")||y(u,"name",n)),e[n]!==u&&(o&&(I(u,i)||y(u,i,e[n]?""+e[n]:s.join(String(n)))),e===t?e[n]=u:r?e[n]?e[n]=u:y(e,n,u):(delete e[n],y(e,n,u)))})(Function.prototype,u,(function(){return"function"==typeof this&&this[i]||L.call(this)}))})),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},A=function(e,t,n){if(b(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,u){return e.call(t,n,i,u)}}return function(){return e.apply(t,arguments)}},x="prototype",N=function(e,i,u){var s,r,o,c,l=e&N.F,a=e&N.G,D=e&N.S,d=e&N.P,w=e&N.B,M=a?t:D?t[i]||(t[i]={}):(t[i]||{})[x],C=a?n:n[i]||(n[i]={}),I=C[x]||(C[x]={});for(s in a&&(u=i),u)o=((r=!l&&M&&void 0!==M[s])?M:u)[s],c=w&&r?A(o,t):d&&"function"==typeof o?A(Function.call,o):o,M&&h(M,s,o,e&N.U),C[s]!=o&&y(C,s,c),d&&I[s]!=o&&(I[s]=o)};t.core=n,N.F=1,N.G=2,N.S=4,N.P=8,N.B=16,N.W=32,N.U=64,N.R=128;var Z,E=N,T=Math.ceil,S=Math.floor,X=function(e){return isNaN(e=+e)?0:(e>0?S:T)(e)},v=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Y=(Z=!1,function(e,t){var n,i,u=String(v(e)),s=X(t),r=u.length;return s<0||s>=r?Z?"":void 0:(n=u.charCodeAt(s))<55296||n>56319||s+1===r||(i=u.charCodeAt(s+1))<56320||i>57343?Z?u.charAt(s):n:Z?u.slice(s,s+2):i-56320+(n-55296<<10)+65536});E(E.P,"String",{codePointAt:function(e){return Y(this,e)}}),n.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=X(e))<0?j(e+t,0):z(e,t)},F=String.fromCharCode,K=String.fromCodePoint;E(E.S+E.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,n=arguments,i=[],u=arguments.length,s=0;u>s;){if(t=+n[s++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");i.push(t<65536?F(t):F(55296+((t-=65536)>>10),t%1024+56320))}return i.join("")}}),n.String.fromCodePoint;var W,k,V,B,H,U,Q,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),k="start",V=[],B=0,H=1,U=0,Q=void 0,J=void 0,P=void 0;do{Q=ue(),we[k]()}while("eof"!==Q.type);return"function"==typeof t?ie({"":P},"",t):P};function ie(e,t,n){var i=e[t];if(null!=i&&"object"==typeof i)if(Array.isArray(i))for(var u=0;u<i.length;u++){var s=String(u),r=ie(i,s,n);void 0===r?delete i[s]:Object.defineProperty(i,s,{value:r,writable:!0,enumerable:!0,configurable:!0})}else for(var o in i){var c=ie(i,o,n);void 0===c?delete i[o]:Object.defineProperty(i,o,{value:c,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,i)}function ue(){for(R="default",O="",_=!1,$=1;;){q=se();var e=oe[R]();if(e)return e}}function se(){if(W[B])return String.fromCodePoint(W.codePointAt(B))}function re(){var e=se();return"\n"===e?(H++,U=0):e?U+=e.length:U++,e&&(B+=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 re();case"/":return re(),void(R="comment");case void 0:return re(),ce("eof")}if(!te.isSpaceSeparator(q))return oe[k]();re()},comment:function(){switch(q){case"*":return re(),void(R="multiLineComment");case"/":return re(),void(R="singleLineComment")}throw Ce(re())},multiLineComment:function(){switch(q){case"*":return re(),void(R="multiLineCommentAsterisk");case void 0:throw Ce(re())}re()},multiLineCommentAsterisk:function(){switch(q){case"*":return void re();case"/":return re(),void(R="default");case void 0:throw Ce(re())}re(),R="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return re(),void(R="default");case void 0:return re(),ce("eof")}re()},value:function(){switch(q){case"{":case"[":return ce("punctuator",re());case"n":return re(),le("ull"),ce("null",null);case"t":return re(),le("rue"),ce("boolean",!0);case"f":return re(),le("alse"),ce("boolean",!1);case"-":case"+":return"-"===re()&&($=-1),void(R="sign");case".":return O=re(),void(R="decimalPointLeading");case"0":return O=re(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=re(),void(R="decimalInteger");case"I":return re(),le("nfinity"),ce("numeric",1/0);case"N":return re(),le("aN"),ce("numeric",NaN);case'"':case"'":return _='"'===re(),O="",void(R="string")}throw Ce(re())},identifierNameStartEscape:function(){if("u"!==q)throw Ce(re());re();var e=de();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw me()}O+=e,R="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"‌":case"‍":return void(O+=re());case"\\":return re(),void(R="identifierNameEscape")}if(!te.isIdContinueChar(q))return ce("identifier",O);O+=re()},identifierNameEscape:function(){if("u"!==q)throw Ce(re());re();var e=de();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!te.isIdContinueChar(e))throw me()}O+=e,R="identifierName"},sign:function(){switch(q){case".":return O=re(),void(R="decimalPointLeading");case"0":return O=re(),void(R="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return O=re(),void(R="decimalInteger");case"I":return re(),le("nfinity"),ce("numeric",$*(1/0));case"N":return re(),le("aN"),ce("numeric",NaN)}throw Ce(re())},zero:function(){switch(q){case".":return O+=re(),void(R="decimalPoint");case"e":case"E":return O+=re(),void(R="decimalExponent");case"x":case"X":return O+=re(),void(R="hexadecimal")}return ce("numeric",0*$)},decimalInteger:function(){switch(q){case".":return O+=re(),void(R="decimalPoint");case"e":case"E":return O+=re(),void(R="decimalExponent")}if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},decimalPointLeading:function(){if(te.isDigit(q))return O+=re(),void(R="decimalFraction");throw Ce(re())},decimalPoint:function(){switch(q){case"e":case"E":return O+=re(),void(R="decimalExponent")}return te.isDigit(q)?(O+=re(),void(R="decimalFraction")):ce("numeric",$*Number(O))},decimalFraction:function(){switch(q){case"e":case"E":return O+=re(),void(R="decimalExponent")}if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},decimalExponent:function(){switch(q){case"+":case"-":return O+=re(),void(R="decimalExponentSign")}if(te.isDigit(q))return O+=re(),void(R="decimalExponentInteger");throw Ce(re())},decimalExponentSign:function(){if(te.isDigit(q))return O+=re(),void(R="decimalExponentInteger");throw Ce(re())},decimalExponentInteger:function(){if(!te.isDigit(q))return ce("numeric",$*Number(O));O+=re()},hexadecimal:function(){if(te.isHexDigit(q))return O+=re(),void(R="hexadecimalInteger");throw Ce(re())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return ce("numeric",$*Number(O));O+=re()},string:function(){switch(q){case"\\":return re(),void(O+=ae());case'"':return _?(re(),ce("string",O)):void(O+=re());case"'":return _?void(O+=re()):(re(),ce("string",O));case"\n":case"\r":throw Ce(re());case"\u2028":case"\u2029":ge(q);break;case void 0:throw Ce(re())}O+=re()},start:function(){switch(q){case"{":case"[":return ce("punctuator",re())}R="value"},beforePropertyName:function(){switch(q){case"$":case"_":return O=re(),void(R="identifierName");case"\\":return re(),void(R="identifierNameStartEscape");case"}":return ce("punctuator",re());case'"':case"'":return _='"'===re(),void(R="string")}if(te.isIdStartChar(q))return O+=re(),void(R="identifierName");throw Ce(re())},afterPropertyName:function(){if(":"===q)return ce("punctuator",re());throw Ce(re())},beforePropertyValue:function(){R="value"},afterPropertyValue:function(){switch(q){case",":case"}":return ce("punctuator",re())}throw Ce(re())},beforeArrayValue:function(){if("]"===q)return ce("punctuator",re());R="value"},afterArrayValue:function(){switch(q){case",":case"]":return ce("punctuator",re())}throw Ce(re())},end:function(){throw Ce(re())}};function ce(e,t){return{type:e,value:t,line:H,column:U}}function le(e){for(var t=0,n=e;t<n.length;t+=1){var i=n[t];if(se()!==i)throw Ce(re());re()}}function ae(){switch(se()){case"b":return re(),"\b";case"f":return re(),"\f";case"n":return re(),"\n";case"r":return re(),"\r";case"t":return re(),"\t";case"v":return re(),"\v";case"0":if(re(),te.isDigit(se()))throw Ce(re());return"\0";case"x":return re(),De();case"u":return re(),de();case"\n":case"\u2028":case"\u2029":return re(),"";case"\r":return re(),"\n"===se()&&re(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Ce(re())}return re()}function De(){var e="",t=se();if(!te.isHexDigit(t))throw Ce(re());if(e+=re(),t=se(),!te.isHexDigit(t))throw Ce(re());return e+=re(),String.fromCodePoint(parseInt(e,16))}function de(){for(var e="",t=4;t-- >0;){var n=se();if(!te.isHexDigit(n))throw Ce(re());e+=re()}return String.fromCodePoint(parseInt(e,16))}var we={start:function(){if("eof"===Q.type)throw Ie();Me()},beforePropertyName:function(){switch(Q.type){case"identifier":case"string":return J=Q.value,void(k="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===Q.type)throw Ie();k="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Q.type)throw Ie();Me()},beforeArrayValue:function(){if("eof"===Q.type)throw Ie();"punctuator"!==Q.type||"]"!==Q.value?Me():ye()},afterPropertyValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforeArrayValue");case"]":ye()}},end:function(){}};function Me(){var e;switch(Q.type){case"punctuator":switch(Q.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Q.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),k=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var n=V[V.length-1];k=null==n?"end":Array.isArray(n)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];k=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Ce(e){return fe(void 0===e?"JSON5: invalid end of input at "+H+":"+U:"JSON5: invalid character '"+pe(e)+"' at "+H+":"+U)}function Ie(){return fe("JSON5: invalid end of input at "+H+":"+U)}function me(){return fe("JSON5: invalid identifier character at "+H+":"+(U-=5))}function ge(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 fe(e){var t=new SyntaxError(e);return t.lineNumber=H,t.columnNumber=U,t}var Le=function(e,t,n){var i,u,s,r=[],o="",c="";if(null==t||"object"!=typeof t||Array.isArray(t)||(n=t.space,s=t.quote,t=t.replacer),"function"==typeof t)u=t;else if(Array.isArray(t)){i=[];for(var l=0,a=t;l<a.length;l+=1){var D=a[l],d=void 0;"string"==typeof D?d=D:("number"==typeof D||D instanceof String||D instanceof Number)&&(d=String(D)),void 0!==d&&i.indexOf(d)<0&&i.push(d)}}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)),c=" ".substr(0,n)):"string"==typeof n&&(c=n.substr(0,10)),w("",{"":e});function w(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))),u&&(n=u.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?M(n):"number"==typeof n?String(n):"object"==typeof n?Array.isArray(n)?I(n):y(n):void 0}function M(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"},i="",u=0;u<e.length;u++){var r=e[u];switch(r){case"'":case'"':t[r]++,i+=r;continue;case"\0":if(te.isDigit(e[u+1])){i+="\\x00";continue}}if(n[r])i+=n[r];else if(r<" "){var o=r.charCodeAt(0).toString(16);i+="\\x"+("00"+o).substring(o.length)}else i+=r}var c=s||Object.keys(t).reduce((function(e,n){return t[e]<t[n]?e:n}));return c+(i=i.replace(new RegExp(c,"g"),n[c]))+c}function y(e){if(r.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");r.push(e);var t=o;o+=c;for(var n,u,s=[],l=0,a=i||Object.keys(e);l<a.length;l+=1){var D=a[l],d=w(D,e);if(void 0!==d){var M=C(D)+":";""!==c&&(M+=" "),M+=d,s.push(M)}}if(0===s.length)n="{}";else if(""===c)n="{"+(u=s.join(","))+"}";else{var y=",\n"+o;u=s.join(y),n="{\n"+o+u+",\n"+t+"}"}return r.pop(),o=t,n}function C(e){if(0===e.length)return M(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return M(e);for(var n=t.length;n<e.length;n++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return M(e);return e}function I(e){if(r.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");r.push(e);var t=o;o+=c;for(var n,i=[],u=0;u<e.length;u++){var s=w(String(u),e);i.push(void 0!==s?s:"null")}if(0===i.length)n="[]";else if(""===c)n="["+i.join(",")+"]";else{var l=",\n"+o,a=i.join(l);n="[\n"+o+a+",\n"+t+"]"}return r.pop(),o=t,n}},he={parse:ne,stringify:Le},be=he,Ae=be;return Ae}()}(sc);var rc=dt(sc.exports);let oc=e.resolve(),cc=e.resolve(oc,"settings.json"),lc=e=>{cc=e},ac=()=>{let e=t.readFileSync(cc,"utf8");return rc.parse(e)};return function(n,i,u,s){let r=null;if(!$e(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!Me(i))throw console.log("invalid url",i),new Error("invalid url");if(!Me(u))throw console.log("invalid db",u),new Error("invalid db");lt(s)||(s="./settings.json"),lc(s);let o=ac(),c=ae(o,"serverPort");je(c)||(c=11007),c=Ye(c);let l=ae(o,"useCheckUser",!1),a=ae(o,"getUserById",null),D=ae(o,"useExcludeWhenNotAdmin",!1),d=ae(o,"webName",{}),w=ae(o,"webDescription",{}),M=ae(o,"webLogo",""),y=ae(o,"webBackgoundGradientColors",[]);We(y)||(y=["#FFE0B2","#FFCC80","#FFF59D","#F2D6A2","#F0CC88"]);let C=ae(o,"webKey",""),I=ae(o,"salt",""),m=ae(o,"minExpired","");ke(m)||(m=30);let g=ae(o,"minForAccountLoginFailed","");ke(g)||(g=10);let p=ae(o,"numForAccountLoginFailed","");ke(p)||(p=3);let f=ae(o,"minBlockForAccountLoginFailed","");ke(f)||(f=30);let L=ae(o,"minForTokenCallApi","");ke(L)||(L=10);let h=ae(o,"numForTokenCallApi","");ke(h)||(h=1e3);let b=ae(o,"minBlockForTokenCallApi","");ke(b)||(b=30);let A=ae(o,"minForIpCallApi","");ke(A)||(A=10);let x=ae(o,"numForIpCallApi","");ke(x)||(x=1e4);let N=ae(o,"minBlockForIpCallApi","");ke(N)||(N=30);let Z=ae(o,"userLogo",""),E=ae(o,"subfolder","");Me(E)&&("/"===tt(E,1)&&(E=nt(E,1)),"/"!==et(E,1)&&(E=`/${E}`));let T=ae(o,"showLanguage","n"),S=ae(o,"language","eng"),X=ae(o,"showModeEditUsers","n"),v=ae(o,"modeEditUsers","n"),Y=ae(o,"showModeEditTokens","n"),j=ae(o,"modeEditTokens","n"),z=ae(o,"showModeEditIps","n"),G=ae(o,"modeEditIps","n");ae(o,"mappingBy","");let F=ae(o,"kpLangExt",null),K={useCheckUser:l,getUserById:a,useExcludeWhenNotAdmin:D},W={};try{W=co(Co,n,i,u,K)}catch(e){console.log(e)}let{woItems:k,procOrm:V}=W,B=nc(k,V,{salt:I,minExpired:m}),H=ic(k,B,{minForAccountLoginFailed:g,numForAccountLoginFailed:p,minBlockForAccountLoginFailed:f,minForTokenCallApi:L,numForTokenCallApi:h,minBlockForTokenCallApi:b,minForIpCallApi:A,numForIpCallApi:x,minBlockForIpCallApi:N}),U=uc(0,B,{}),Q=(e,t)=>{let n=go(ae(t,"timeVerified",""));let i=!po(t),u=!fo(t),s=function(e){return"y"===ae(e,"isAdmin","")}(t),r=Lo(t);return n&&i&&u&&s&&r},J="dist",P="./node_modules/w-web-sso/dist";ot(P)&&(J=P);let R="index.html";try{let n=e.resolve(J,"index.tmp");if(lt(n)||(n=e.resolve(J,R)),!lt(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let i=e.resolve(J,R),u=t.readFileSync(n,"utf8");u=at(u,"/msso/","{sfd}/"),u=at(u,"{sfd}",E),u=at(u,"{language}",S),t.writeFileSync(i,u,"utf8")}catch(e){console.log(e),console.log(`can not generate ${R}`)}let O=[{method:"GET",path:"/api/logoutSsoUser",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/logoutSsoUser",token:t}),await B.logoutByToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/checkToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/checkToken",token:t}),H.callApiByToken(t),await B.checkToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/refreshToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/refreshToken",token:t}),H.callApiByToken(t),await B.refreshToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/logoutByToken",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/logoutByToken",token:t}),H.callApiByToken(t),await B.logoutByToken(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getSsoUsersList",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token","");return Jo.info({event:"api/getSsoUsersList",token:t}),H.callApiByToken(t),await B.checkTokenAndGetUsersList(t)}))();return _e(n.msg)&&(n.msg=n.msg.message),n}},{method:"GET",path:"/api/getSsoUserInfor",handler:async function(e,t){let n=await st((async function(){let t=ae(e,"query.token",""),n=ae(e,"query.key",""),i=ae(e,"query.value","");Jo.info({event:"api/getSsoUserInfor",token:t,key:n,value:i}),H.callApiByToken(t);let u=null;return u="token"===n?await B.checkTokenAndGetUserByToken(t,i):await B.checkTokenAndGetUserInfor(t,n,i),de(u)?u:(console.log("token",t),console.log("key",n,"value",i),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))();return _e(n.msg)&&(n.msg=n.msg.message),n}}];return r=new vs({port:o.serverPort,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:i,req:u})=>{let s=H.getIpByHeaders(u),r=ae(i,"origin",""),o=ae(i,"referer","");Jo.info({event:"verifyConn",ip:s,origin:r,referer:o}),H.callApiByIp(s);let c=!0;return await H.getBlockedByIp(s).then((e=>{c=e})).catch((()=>{c=!0})),c=!c,c||console.log(`block ip[${s}]`),c},getUserIdByToken:async e=>"",corsOrigins:["*"],useDbOrm:!1,tableNamesExec:[],methodsExec:[],tableNamesSync:[],kpFunExt:{getWebInfor:async e=>({webName:d,webDescription:w,webLogo:M,webBackgoundGradientColors:y,webKey:C,userLogo:Z,showLanguage:T,language:S,showModeEditUsers:X,modeEditUsers:v,showModeEditTokens:Y,modeEditTokens:j,showModeEditIps:z,modeEditIps:G,kpLangExt:F}),checkToken:async(e,t)=>(Jo.info({event:"kpfun-checkToken",token:t}),await B.checkToken(t)),refreshToken:async(e,t)=>(Jo.info({event:"kpfun-refreshToken",token:t}),await B.refreshToken(t)),loginByAccountAndPassword:async(e,t,n)=>{Jo.info({event:"kpfun-loginByAccountAndPassword-before",account:t});let i=null,u="";return await H.loginByAccountAndPassword(t,n).then((e=>{i=e})).catch((e=>{u=e})),de(i)?Jo.info({event:"kpfun-loginByAccountAndPassword-success",account:t}):Jo.info({event:"kpfun-loginByAccountAndPassword-error",account:t,msg:u}),de(i)?i:Promise.reject(u)},logoutByToken:async(e,t)=>(Jo.info({event:"kpfun-logoutByToken",token:t}),await B.logoutByToken(t)),getUserByToken:async(e,t)=>(Jo.info({event:"kpfun-getUserByToken",token:t}),await B.checkTokenAndGetUserByToken(t,t)),getUserInfor:async(e,t,n,i)=>(Jo.info({event:"kpfun-getUserInfor",token:t,key:n,value:i}),await B.checkTokenAndGetUserInfor(t,n,i)),getUsersList:async(e,t)=>(Jo.info({event:"kpfun-getUsersList",token:t}),await B.checkTokenAndGetUsersList(t,{fun:Q})),updateUsersList:async(e,t,n)=>(Jo.info({event:"kpfun-updateUsersList",token:t}),await B.checkTokenAndUpdateUsersList(t,n,{fun:Q})),getTokensList:async(e,t)=>(Jo.info({event:"kpfun-getTokensList",token:t}),await B.checkTokenAndGetTokensList(t,{fun:Q})),updateTokensList:async(e,t,n)=>(Jo.info({event:"kpfun-updateTokensList",token:t}),await B.checkTokenAndUpdateTokensList(t,n,{fun:Q})),getIpsList:async(e,t)=>(Jo.info({event:"kpfun-getIpsList",token:t}),await B.checkTokenAndGetIpsList(t,{fun:Q})),updateIpsList:async(e,t,n)=>(Jo.info({event:"kpfun-updateIpsList",token:t}),await B.checkTokenAndUpdateIpsList(t,n,{fun:Q})),getStaUserSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaUserSummary",token:t}),await U.getStaUserSummary(t,{fun:Q})),getStaTokenSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaTokenSummary",token:t}),await U.getStaTokenSummary(t,{fun:Q})),getStaIpSummary:async(e,t)=>(Jo.info({event:"kpfun-getStaIpSummary",token:t}),await U.getStaIpSummary(t,{fun:Q})),getStaUserAccountLogin:async(e,t)=>(Jo.info({event:"kpfun-getStaUserAccountLogin",token:t}),await U.checkTokenAndGetStaUserAccountLogin(t,{fun:Q})),getStaToken:async(e,t)=>(Jo.info({event:"kpfun-getStaToken",token:t}),await U.checkTokenAndGetStaToken(t,{fun:Q})),getStaIp:async(e,t)=>(Jo.info({event:"kpfun-getStaIp",token:t}),await U.checkTokenAndGetStaIp(t,{fun:Q}))},fnTableTags:"tableTags-web-sso.json"}),r}}));
7
7
  //# sourceMappingURL=w-web-sso.umd.js.map