diff --git a/.dev.vars.example b/.dev.vars.example index 276f2cbe..366023d0 100644 --- a/.dev.vars.example +++ b/.dev.vars.example @@ -41,6 +41,10 @@ MYSQL_URLS= # 留空时自动使用当前请求的 origin(同一部署自调用);跨域或本地调试才需显式设置。 EO_KV_URLS= +# 插件 manifest_url 安装的可信 origin,例如 https://yourdomain.com。 +# 留空禁用 URL 安装;目标 URL 必须与该 origin 完全一致。 +PLUGIN_MANIFEST_ORIGIN= + # Cloudflare KV REST API 凭据(DB_DRIVER=cfkv 时三项均必填)。 # 账户 ID CF_ACCOUNT= diff --git a/.env.example b/.env.example index 54ab7470..c051994e 100644 --- a/.env.example +++ b/.env.example @@ -39,6 +39,10 @@ MYSQL_URLS= # 留空时自动使用当前请求的 origin(同一部署自调用);跨域或本地调试才需显式设置。 EO_KV_URLS= +# 插件 manifest_url 安装的可信 origin,例如 https://yourdomain.com。 +# 留空禁用 URL 安装;目标 URL 必须与该 origin 完全一致。 +PLUGIN_MANIFEST_ORIGIN= + # Cloudflare KV REST API 凭据(DB_DRIVER=cfkv 时三项均必填)。 # 账户 ID CF_ACCOUNT= diff --git a/cloud-functions/[[default]].js b/cloud-functions/[[default]].js index f4351e20..dd6d93af 100644 --- a/cloud-functions/[[default]].js +++ b/cloud-functions/[[default]].js @@ -1,43 +1,43 @@ -var UL=Object.create;var sx=Object.defineProperty;var RL=Object.getOwnPropertyDescriptor;var NL=Object.getOwnPropertyNames;var qL=Object.getPrototypeOf,OL=Object.prototype.hasOwnProperty;var wt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var j=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var oe=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},xn=(r,e)=>{for(var t in e)sx(r,t,{get:e[t],enumerable:!0})},ML=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of NL(e))!OL.call(r,n)&&n!==t&&sx(r,n,{get:()=>e[n],enumerable:!(i=RL(e,n))||i.enumerable});return r};var Qr=(r,e,t)=>(t=r!=null?UL(qL(r)):{},ML(e||!r||!r.__esModule?sx(t,"default",{value:r,enumerable:!0}):t,r));var ox,Bv=j(()=>{ox=(r,e,t)=>(i,n)=>{let s=-1;return o(0);async function o(a){if(a<=s)throw new Error("next() called multiple times");s=a;let c,l=!1,d;if(r[a]?(d=r[a][0][0],i.req.routeIndex=a):d=a===r.length&&n||void 0,d)try{c=await d(i,()=>o(a+1))}catch(u){if(u instanceof Error&&e)i.error=u,c=await e(u,i),l=!0;else throw u}else i.finalized===!1&&t&&(c=await t(i));return c&&(i.finalized===!1||l)&&(i.res=c),i}}});var xu,ax=j(()=>{xu=class extends Error{res;status;constructor(r=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=r}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}}});var bv,vv=j(()=>{bv=Symbol()});var kv=j(()=>{});var Sv,Dv=j(()=>{kv();Sv=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,i=>i.toLowerCase())}}).formData()});async function LL(r,e){if(!P0(r)&&r.bodyCache.formData)return Qv(await r.bodyCache.formData,e);let t=P0(r)?r.headers:r.raw.headers,i=await r.arrayBuffer(),n=Sv(i,t.get("Content-Type")||"");P0(r)||(r.bodyCache.formData=n);let s=await n;return s?Qv(s,e):{}}function Qv(r,e){let t=Object.create(null);return r.forEach((i,n)=>{e.all||n.endsWith("[]")?HL(t,n,i):t[n]=i}),e.dot&&Object.entries(t).forEach(([i,n])=>{i.includes(".")&&(KL(t,i,n),delete t[i])}),t}var P0,_v,HL,KL,Fv=j(()=>{Dv();P0=r=>"headers"in r,_v=async(r,e=Object.create(null))=>{let{all:t=!1,dot:i=!1}=e,o=(P0(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return o==="multipart/form-data"||o==="application/x-www-form-urlencoded"?LL(r,{all:t,dot:i}):{}};HL=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t},KL=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let i=r,n=e.split(".");n.forEach((s,o)=>{o===n.length-1?i[s]=t:((!i[s]||typeof i[s]!="object"||Array.isArray(i[s])||i[s]instanceof File)&&(i[s]=Object.create(null)),i=i[s])})}});var lx,Pv,GL,zL,T0,Tv,Uv,JL,dx,Rv,Do,U0,yl,cx,Nv,qv,Ov,jL,$a=j(()=>{lx=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},Pv=r=>{let{groups:e,path:t}=GL(r),i=lx(t);return zL(i,e)},GL=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,i)=>{let n=`@${i}`;return e.push([n,t]),n}),{groups:e,path:r}},zL=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[i]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(i)){r[n]=r[n].replace(i,e[t][1]);break}}return r},T0={},Tv=(r,e)=>{if(r==="*")return"*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let i=`${r}#${e}`;return T0[i]||(t[2]?T0[i]=e&&e[0]!==":"&&e[0]!=="*"?[i,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:T0[i]=[r,t[1],!0]),T0[i]}return null},Uv=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},JL=r=>Uv(r,decodeURI),dx=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),i=t;for(;i{let e=dx(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},Do=(r,e,...t)=>(t.length&&(e=Do(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),U0=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],i="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))i+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&i===""?t.push("/"):t.push(i);let s=n.replace("?","");i+="/"+s,t.push(i)}else i+="/"+n}),t.filter((n,s,o)=>o.indexOf(n)===s)},yl=r=>r.indexOf("%")!==-1?Uv(r,jL):r,cx=r=>(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),yl(r)),Nv=(r,e,t)=>{let i;if(!t&&e&&e.indexOf("%")===-1&&e.indexOf("+")===-1){let o=r.indexOf("?",8);if(o===-1)return;for(r.startsWith(e,o+1)||(o=r.indexOf(`&${e}`,o+1));o!==-1;){let a=r.charCodeAt(o+e.length+1);if(a===61){let c=o+e.length+2,l=r.indexOf("&",c);return cx(r.slice(c,l===-1?void 0:l))}else if(a==38||isNaN(a))return"";o=r.indexOf(`&${e}`,o+1)}if(i=/[%+]/.test(r),!i)return}let n=Object.create(null);i??=/[%+]/.test(r);let s=r.indexOf("?",8);for(;s!==-1;){let o=r.indexOf("&",s+1),a=r.indexOf("=",s);a>o&&o!==-1&&(a=-1);let c=r.slice(s+1,a===-1?o===-1?void 0:o:a);if(i&&(c=cx(c)),s=o,c==="")continue;let l;a===-1?l="":(l=r.slice(a+1,o===-1?void 0:o),i&&(l=cx(l))),t?(n[c]&&Array.isArray(n[c])||(n[c]=[]),n[c].push(l)):n[c]??=l}return e?n[e]:n},qv=Nv,Ov=(r,e)=>Nv(r,e,!0),jL=decodeURIComponent});var Mv,Lv=j(()=>{ax();vv();Fv();$a();Mv=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t}param(r){return r?this.#r(r):this.#s()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#i(e);return t&&yl(t)}#s(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let i=this.#i(this.#e[0][this.routeIndex][1][t]);i!==void 0&&(r[t]=yl(i))}return r}#i(r){return this.#e[1]?this.#e[1][r]:r}query(r){return qv(this.url,r)}queries(r){return Ov(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e=Object.create(null);return this.raw.headers.forEach((t,i)=>{e[i]=t}),e}async parseBody(r){return _v(this,r)}#n=r=>{let{bodyCache:e,raw:t}=this,i=e[r];if(i)return i;for(let n in e)return e[n].then(s=>(n==="json"&&(s=JSON.stringify(s)),new Response(s)[r]()));return e[r]=t[r]()};json(){return this.#n("text").then(r=>JSON.parse(r))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}bytes(){return this.#n("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(r,e){(this.#t??={})[r]=e}valid(r){return this.#t?.[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[bv](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}}});var Hv,$L,ux,Kv=j(()=>{Hv={Stringify:1,BeforeStream:2,Stream:3},$L=(r,e)=>{let t=new String(r);return t.isEscaped=!0,t.callbacks=e,t},ux=async(r,e,t,i,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let s=r.callbacks;if(!s?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let o=Promise.all(s.map(a=>a({phase:e,buffer:n,context:i}))).then(a=>Promise.all(a.filter(Boolean).map(c=>ux(c,e,!1,i,n))).then(()=>n[0]));return t?$L(await o,s):o}});var VL,fx,Cu,Ax,R0=j(()=>{Lv();Kv();VL="text/plain; charset=UTF-8",fx=(r,e)=>({"Content-Type":r,...e}),Cu=(r,e)=>new Response(r,e),Ax=class{#t;#e;env={};#r;finalized=!1;error;#s;#i;#n;#d;#c;#l;#a;#u;#f;constructor(r,e){this.#t=r,e&&(this.#i=e.executionCtx,this.env=e.env,this.#l=e.notFoundHandler,this.#f=e.path,this.#u=e.matchResult)}get req(){return this.#e??=new Mv(this.#t,this.#f,this.#u),this.#e}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=Cu(null,{headers:this.#a??=new Headers})}set res(r){if(this.#n&&r){r=Cu(r.body,r);for(let[e,t]of this.#n.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let i=this.#n.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of i)r.headers.append("set-cookie",n)}else r.headers.set(e,t)}this.#n=r,this.finalized=!0}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#d=r;getLayout=()=>this.#d;setRenderer=r=>{this.#c=r};header=(r,e,t)=>{this.finalized&&(this.#n=Cu(this.#n.body,this.#n));let i=this.#n?this.#n.headers:this.#a??=new Headers;e===void 0?i.delete(r):t?.append?i.append(r,e):i.set(r,e)};status=r=>{this.#s=r};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e)};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(r,e,t){let i=this.#n?new Headers(this.#n.headers):this.#a;if(typeof e=="object"&&e.headers){i??=new Headers;for(let[s,o]of new Headers(e.headers))s==="set-cookie"?i.append(s,o):i.set(s,o)}if(t){if(!i){let s=0;for(let o in t)if(++s>1||typeof t[o]!="string"){i=new Headers;break}}if(i)for(let s in t){let o=t[s];if(typeof o=="string")i.set(s,o);else{i.delete(s);for(let a of o)i.append(s,a)}}}let n=typeof e=="number"?e:e?.status??this.#s;return Cu(r,{status:n,headers:i??t})}newResponse=(...r)=>this.#o(...r);body=(r,e,t)=>this.#o(r,e,t);text=(r,e,t)=>!this.#a&&!this.#s&&!e&&!t&&!this.finalized?new Response(r):this.#o(r,e,fx(VL,t));json=(r,e,t)=>this.#o(JSON.stringify(r),e,fx("application/json",t));html=(r,e,t)=>{let i=n=>this.#o(n,e,fx("text/html; charset=UTF-8",t));return typeof r=="object"?ux(r,Hv.Stringify,!1,{}).then(i):i(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#l??=()=>Cu(),this.#l(this))}});var ir,Gv,zv,N0,q0,Va=j(()=>{ir="ALL",Gv="all",zv=["get","post","put","delete","options","patch","query"],N0="Can not add a route since the matcher is already built.",q0=class extends Error{}});var Jv,jv=j(()=>{Jv="__COMPOSED_HANDLER"});var YL,$v,Vv,Wv=j(()=>{Bv();R0();Va();jv();$a();YL=r=>r.text("404 Not Found",404),$v=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},Vv=class Yv{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[...zv,Gv].forEach(s=>{this[s]=(o,...a)=>(typeof o=="string"?this.#t=o:this.#s(s,this.#t,o),a.forEach(c=>{this.#s(s,this.#t,c)}),this)}),this.on=(s,o,...a)=>{for(let c of[o].flat()){this.#t=c;for(let l of[s].flat())a.map(d=>{this.#s(l.toUpperCase(),this.#t,d)})}return this},this.use=(s,...o)=>(typeof s=="string"?this.#t=s:(this.#t="*",o.unshift(s)),o.forEach(a=>{this.#s(ir,this.#t,a)}),this);let{strict:i,...n}=e;Object.assign(this,n),this.getPath=i??!0?e.getPath??dx:Rv}#e(){let e=new Yv({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=YL;errorHandler=$v;route(e,t){let i=this.basePath(e);return t.routes.map(n=>{let s;t.errorHandler===$v?s=n.handler:(s=async(o,a)=>(await ox([],t.errorHandler)(o,()=>n.handler(o,a))).res,s[Jv]=n.handler),i.#s(n.method,n.path,s,n.basePath)}),this}basePath(e){let t=this.#e();return t._basePath=Do(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,i){let n,s;i&&(typeof i=="function"?s=i:(s=i.optionHandler,i.replaceRequest===!1?n=c=>c:n=i.replaceRequest));let o=s?c=>{let l=s(c);return Array.isArray(l)?l:[l]}:c=>{let l;try{l=c.executionCtx}catch{}return[c.env,l]};n||=(()=>{let c=Do(this._basePath,e),l=c==="/"?0:c.length;return d=>{let u=new URL(d.url);return u.pathname=this.getPath(d).slice(l)||"/",new Request(u,d)}})();let a=async(c,l)=>{let d=await t(n(c.req.raw),...o(c));if(d)return d;await l()};return this.#s(ir,Do(e,"*"),a),this}#s(e,t,i,n){e=e.toUpperCase(),t=Do(this._basePath,t);let s={basePath:n!==void 0?Do(this._basePath,n):this._basePath,path:t,method:e,handler:i};this.router.add(e,t,[i,s]),this.routes.push(s)}#i(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#n(e,t,i,n){if(n==="HEAD")return(async()=>new Response(null,await this.#n(e,t,i,"GET")))();let s=this.getPath(e,{env:i}),o=this.router.match(n,s),a=new Ax(e,{path:s,matchResult:o,env:i,executionCtx:t,notFoundHandler:this.#r});if(o[0].length===1){let l;try{l=o[0][0][0][0](a,async()=>{a.res=await this.#r(a)})}catch(d){return this.#i(d,a)}return l instanceof Promise?l.then(d=>d||(a.finalized?a.res:this.#r(a))).catch(d=>this.#i(d,a)):l??this.#r(a)}let c=ox(o[0],this.errorHandler,this.#r);return(async()=>{try{let l=await c(a);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#i(l,a)}})()}fetch=(e,...t)=>this.#n(e,t[1],t[0],e.method);request=(e,t,i,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,i,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${Do("/",e)}`,t),i,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#n(e.request,e,void 0,e.request.method))})}}});function hx(r,e){let t=this.buildAllMatchers(),i=((n,s)=>{let o=t[n]||t[ir],a=o[2][s];if(a)return a;let c=s.match(o[0]);if(!c)return[[],O0];let l=c.indexOf("",1);return[o[1][l],c]});return this.match=i,i(r,e)}var O0,gx=j(()=>{Va();O0=[]});function WL(r,e){return r.length===1?e.length===1?r{M0="[^/]+",Il=".*",Ya="(?:|/.*)",Qo=Symbol(),Xv=new Set(".\\+*[^]$()");Zv=class px{#t;#e;#r=Object.create(null);insert(e,t,i,n,s){let o=this;for(let a=0,c=e.length;a1||g.length>1)&&g!==Il&&g!==Ya)throw Qo}u=o.#r[h]=new px}f!==""&&(u.#e??=n.varIndex++,i.push([f,u.#e]))}else if(u=o.#r[l],!u){for(let f in o.#r)if(f.length>1&&f!==Il&&f!==Ya)throw Qo;u=o.#r[l]=new px}o=u}if(o.#t!==void 0)throw Qo;o.#t=s?-1:t}buildRegExpStr(){let t=Object.keys(this.#r).sort(WL).map(i=>{let n=this.#r[i],s=n.buildRegExpStr();return s===""?"":(typeof n.#e=="number"?`(${i})@${n.#e}`:Xv.has(i)?`\\${i}`:i)+s}).filter(Boolean);return typeof this.#t=="number"&&this.#t!==-1&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}}});var yx,ek=j(()=>{mx();yx=class{#t={varIndex:0};#e=new Zv;#r=0;paths=Object.create(null);insert(r,e){if(e){this.#e.insert(r.split(""),0,[],this.#t,!0);return}let t=[],i=[],n=r;for(let o=0;;){let a=!1;if(n=n.replace(/\{[^}]+\}/g,c=>{let l=`@\\${o}`;return i[o]=[l,c],o++,a=!0,l}),!a)break}let s=n.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let o=i.length-1;o>=0;o--){let[a]=i[o];for(let c=s.length-1;c>=0;c--)if(s[c].indexOf(a)!==-1){s[c]=s[c].replace(a,i[o][1]);break}}this.#e.insert(s,this.#r,t,this.#t,!1),this.paths[r]=[this.#r++,t]}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return[/^$/,[],[]];let e=0,t=[],i=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,s,o)=>s!==void 0?(t[++e]=Number(s),"$()"):(o!==void 0&&(i[Number(o)]=++e),"")),[new RegExp(`^${r}`),t,i]}}});function rk(r){return tk[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function XL(){tk=Object.create(null)}function L0(r,e){if(r){for(let t of Object.keys(r).sort((i,n)=>n.length-i.length))if(rk(t).test(e))return[...r[t]]}}var tk,H0,Ix=j(()=>{Va();$a();gx();mx();ek();tk=Object.create(null);H0=class{name="RegExpRouter";#t;#e;#r;constructor(){this.#t={[ir]:Object.create(null)},this.#e={[ir]:Object.create(null)},this.#r={[ir]:new yx}}#s(r,e){try{this.#r[r].insert(e,!/\*|\/:/.test(e))}catch(t){throw t===Qo?new q0(e):t}}add(r,e,t){let i=this.#t,n=this.#e;if(!i||!n)throw new Error(N0);i[r]||(this.#r[r]=new yx,[i,n].forEach(a=>{a[r]=Object.create(null),Object.keys(a[ir]).forEach(c=>{a[r][c]=[...a[ir][c]],this.#s(r,c)})})),e==="/*"&&(e="*");let s=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let a=rk(e);Object.keys(i).forEach(c=>{(r===ir||r===c)&&!i[c][e]&&(this.#s(c,e),i[c][e]=L0(i[c],e)||L0(i[ir],e)||[])}),Object.keys(i).forEach(c=>{(r===ir||r===c)&&Object.keys(i[c]).forEach(l=>{a.test(l)&&i[c][l].push([t,s])})}),Object.keys(n).forEach(c=>{(r===ir||r===c)&&Object.keys(n[c]).forEach(l=>a.test(l)&&n[c][l].push([t,s]))});return}let o=U0(e)||[e];for(let a=0,c=o.length;a{(r===ir||r===d)&&(n[d][l]||(this.#s(d,l),n[d][l]=[...L0(i[d],l)||L0(i[ir],l)||[]]),n[d][l].push([t,s-c+a+1]))})}}match=hx;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#i(e)}),this.#t=this.#e=this.#r=void 0,XL(),r}#i(r){let e=this.#t[r],t=this.#e[r],i=this.#r[r],n=Object.create(null),s=[];[e,t].forEach(d=>{for(let u in d){let f=d[u],h=i.paths[u];if(!h){n[u]=[f.map(([p])=>[p,Object.create(null)]),O0];continue}let g=h[1];s[h[0]]=f.map(([p,I])=>{let y=Object.create(null);for(I-=1;I>=0;I--){let[w,C]=g[I];y[w]=C}return[p,y]})}});let[o,a,c]=i.buildRegExp();for(let d=0,u=s.length;d{Va();gx();Ix()});var nk=j(()=>{Ix();ik()});var wx,sk=j(()=>{Va();wx=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers}add(r,e,t){if(!this.#e)throw new Error(N0);this.#e.push([r,e,t])}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,i=this.#e,n=t.length,s=0,o;for(;s{sk()});var Eu,ZL,ak,lk=j(()=>{Va();$a();Eu=Object.create(null),ZL=r=>{for(let e in r)return!0;return!1},ak=class ck{#t;#e;#r;#s=0;#i=Eu;constructor(e,t,i){if(this.#e=i||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n]}this.#r=[]}insert(e,t,i){this.#s=++this.#s;let n=this,s=Pv(t),o=[];for(let a=0,c=s.length;al.indexOf(a)===c),score:this.#s}}),n}#n(e,t,i,n,s){for(let o=0,a=t.#t.length;o1&&i.sort((d,u)=>d.score-u.score),[i.map(({handler:d,params:u})=>[d,u])]}}});var xx,dk=j(()=>{$a();lk();xx=class{name="TrieRouter";#t;constructor(){this.#t=new ak}add(r,e,t){let i=U0(e);if(i){for(let n=0,s=i.length;n{dk()});var Xe,Cx=j(()=>{Wv();nk();ok();uk();Xe=class extends Vv{constructor(r={}){super(r),this.router=r.router??new wx({routers:[new H0,new xx]})}}});var wr=j(()=>{Cx();R0()});function Wa(r){return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}function Vi(r){return typeof r=="string"?new TextEncoder().encode(r):r}function Ex(r){let e=new Uint8Array(r.length/2);for(let t=0;t>>0,!0),o.setUint32(s.length-4,Math.floor(i/4294967296),!0);let a=new Int32Array(64);for(let g=0;g<64;g++)a[g]=Math.abs(Math.sin(g+1))*4294967296|0;let c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],l=1732584193,d=4023233417,u=2562383102,f=271733878;for(let g=0;gp.getInt32(_*4,!0)),[y,w,C,b]=[l,d,u,f];for(let x=0;x<64;x++){let _,R;x<16?(_=w&C|~w&b,R=x):x<32?(_=b&w|~b&C,R=(5*x+1)%16):x<48?(_=w^C^b,R=(3*x+5)%16):(_=C^(w|~b),R=7*x%16);let U=b;b=C,C=w;let T=y+_+a[x]+I[R]|0;w=w+(T<>>32-c[x])|0,y=U}l=l+y|0,d=d+w|0,u=u+C|0,f=f+b|0}let h=new DataView(new ArrayBuffer(16));return h.setInt32(0,l,!0),h.setInt32(4,d,!0),h.setInt32(8,u,!0),h.setInt32(12,f,!0),Wa(h.buffer)}function $t(r){return eH(r)}async function _o(r){let e=await crypto.subtle.digest("SHA-1",Vi(r));return Wa(e)}async function hk(r){let e=await crypto.subtle.digest("SHA-256",Vi(r));return Wa(e)}async function Bx(r,e){let t=await crypto.subtle.importKey("raw",Vi(e),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Vi(r));return Wa(i)}async function Bu(r,e){let t=await crypto.subtle.importKey("raw",Vi(e),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Vi(r)),n=new Uint8Array(i),s="";for(let o of n)s+=String.fromCharCode(o);return btoa(s)}async function gk(r,e="salt",t=bx){let i=Vi(r),n=Vi(e),s=await crypto.subtle.importKey("raw",i,"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:n,iterations:t,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function pk(r,e){let t=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),n=await gk(e,t,bx),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},n,Vi(r));return`${Wa(t.buffer)}:${Wa(i.buffer)}:${Wa(s)}`}async function mk(r,e){let t=r.split(":"),i="salt",n="",s="",o=1;if(t.length===3)i=Ex(t[0]),n=t[1],s=t[2],o=bx;else if(t.length===2)n=t[0],s=t[1],o=1,Ak||(Ak=!0,console.warn("[Crypto] Decrypting legacy weak-KDF format. It will be re-encrypted with the strong PBKDF2 format on the next config save."));else throw new Error("Invalid encrypted data format");let a=Ex(n),c=Ex(s),l=await gk(e,i,o),d=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},l,c);return new TextDecoder().decode(d)}async function vx(r,e,t){let i=Vi(e),n=t?Vi(t):i,s=await crypto.subtle.importKey("raw",i,{name:"AES-CBC"},!1,["encrypt"]),o=Vi(r),c=typeof process<"u"&&process?.release?.name==="node"?o:tH(o),l=await crypto.subtle.encrypt({name:"AES-CBC",iv:n},s,c),d=new Uint8Array(l),u="";for(let f of d)u+=String.fromCharCode(f);return btoa(u)}function tH(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}var bx,Ak,si=j(()=>{"use strict";bx=1e5,Ak=!1});function wl(r,e){if(typeof r!="string")return null;let t=r.trim();if(!t)return null;let i;try{i=new URL(t)}catch{return null}if(i.protocol!=="http:"&&i.protocol!=="https:"||!i.hostname)return null;let n=e?.EO_KV_URLS;return!(typeof n=="string"&&n.trim()===t)&&!(i.hostname==="localhost"||i.hostname==="127.0.0.1"||i.hostname==="[::1]")&&i.protocol!=="https:"?(console.warn(`[DB] Rejecting non-HTTPS proxy origin derived from request: ${i.protocol}//${i.hostname} (would leak X-Internal-Call in clear text)`),null):`${i.protocol}//${i.host}`.replace(/\/$/,"")}var K0=j(()=>{"use strict"});var Tx=oe((Xce,Rk)=>{"use strict";var Px=Object.defineProperty,rH=Object.getOwnPropertyDescriptor,iH=Object.getOwnPropertyNames,nH=Object.prototype.hasOwnProperty,sH=(r,e)=>{for(var t in e)Px(r,t,{get:e[t],enumerable:!0})},oH=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of iH(e))!nH.call(r,n)&&n!==t&&Px(r,n,{get:()=>e[n],enumerable:!(i=rH(e,n))||i.enumerable});return r},aH=r=>oH(Px({},"__esModule",{value:!0}),r),vk={};sH(vk,{InvalidKeyError:()=>G0,InvalidStoreNameError:()=>Qu,MissingProjectIdError:()=>kk,PagesBlobError:()=>Hn,PreconditionFailedError:()=>Qx,QuotaExceededError:()=>cH,RateLimitedError:()=>lH,Store:()=>Sk,getStore:()=>SH,listStores:()=>DH});Rk.exports=aH(vk);var Hn=class extends Error{code;constructor(r,e){super(`PagesBlob: ${e}`),this.name="PagesBlobError",this.code=r}},G0=class extends Hn{constructor(r){super("INVALID_KEY",r)}},Qu=class extends Hn{constructor(r){super("INVALID_STORE_NAME",r)}},kx=class extends Hn{constructor(r){super("MISSING_ENVIRONMENT",`Environment not configured for Pages Blob. Missing: ${r.join(", ")}. Supply these properties when creating a store, or ensure the function is running in a Pages environment.`)}},cH=class extends Hn{constructor(){super("QUOTA_EXCEEDED","storage quota exceeded")}},lH=class extends Hn{constructor(){super("RATE_LIMITED","request rate limited, please retry later")}},kk=class extends Hn{constructor(){super("MISSING_PROJECT_ID","projectId is required when using API token mode. Please supply { name, projectId, token } to getStore() / listStores().")}},Fo=class extends Hn{constructor(r){super("CREDENTIAL_ERROR",r)}},Kr=class extends Hn{constructor(r,e){super("COS_ERROR",`COS returned ${r}: ${e}`)}},Qx=class extends Hn{constructor(){super("PRECONDITION_FAILED","conditional write failed (key already exists)")}};function Xa(r){if(r==="")throw new G0("Blob key must not be empty.");if(r.startsWith("/")||r.startsWith("%2F"))throw new G0("Blob key must not start with forward slash (/).");if(new TextEncoder().encode(r).length>600)throw new G0("Blob key must be a sequence of Unicode characters whose UTF-8 encoding is at most 600 bytes long.")}function dH(r){if(r==="")throw new Qu("Store name must not be empty.");if(r.includes("/")||r.includes(":"))throw new Qu("Store name must not contain forward slashes (/) or colons (:).");if(!/^[a-zA-Z0-9_-]+$/.test(r))throw new Qu("Store name must only contain letters, digits, underscores, and hyphens.");if(new TextEncoder().encode(r).length>64)throw new Qu("Store name must be a sequence of Unicode characters whose UTF-8 encoding is at most 64 bytes long.")}var Sk=class{cosClient;storeName;defaultConsistency;constructor(r,e,t="eventual"){this.cosClient=r,this.storeName=e,this.defaultConsistency=t}resolveConsistency(r){return r??this.defaultConsistency}async set(r,e,t){Xa(r);let i=await this.cosClient.putObject(this.storeName,r,e,{onlyIfNew:t?.onlyIfNew,cacheControl:t?.cacheControl});if(t?.onlyIfNew&&i.statusCode===412)throw new Qx}async setJSON(r,e,t){Xa(r);let i=JSON.stringify(e),n=await this.cosClient.putObject(this.storeName,r,i,{onlyIfNew:t?.onlyIfNew,contentType:"application/json",cacheControl:t?.cacheControl});if(t?.onlyIfNew&&n.statusCode===412)throw new Qx}async createUploadUrl(r,e){Xa(r);let{url:t,expiresAt:i}=await this.cosClient.createPresignedPutUrl(this.storeName,r,{expireSeconds:e?.expireSeconds,contentType:e?.contentType});return{url:t,key:r,expiresAt:i}}async get(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);if(i===null)return null;let{body:n}=i,s=e?.type??"text",o=new TextDecoder("utf-8");switch(s){case"text":return o.decode(n);case"json":return JSON.parse(o.decode(n));case"arrayBuffer":return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);case"blob":return new Blob([n]);case"stream":return new ReadableStream({start(a){a.enqueue(n),a.close()}});default:return o.decode(n)}}async getMetadata(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency);return this.cosClient.headObject(this.storeName,r,t)}async getWithHeaders(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);return i?{body:new TextDecoder("utf-8").decode(i.body),headers:i.headers||{}}:null}async delete(r){Xa(r),await this.cosClient.deleteObject(this.storeName,r)}async list(r){let e=r?.paginate!==!1,t=r?.limit,i=[],n=[],s=this.resolveConsistency(r?.consistency),o=r?.cursor||"",a=!0,c;for(;a;){let l=t!==void 0?t-i.length:1e3,d=Math.min(l,1e3);if(d<=0)break;let u=await this.cosClient.listObjects(this.storeName,{prefix:r?.prefix,delimiter:r?.directories?"/":void 0,marker:o||void 0,maxKeys:d,consistency:s});for(let f of u.contents)i.push({key:f.key,etag:f.etag});n.push(...u.commonPrefixes),t!==void 0&&i.length>=t?(i.length=t,(u.isTruncated||u.contents.length===d)&&(c=u.nextMarker),a=!1):u.isTruncated?!e&&t===void 0?(c=u.nextMarker,a=!1):o=u.nextMarker:a=!1}return{blobs:i,directories:n,...c?{cursor:c}:{}}}},uH=new TextEncoder;function _x(r){let e=uH.encode(r),t=new ArrayBuffer(e.byteLength),i=new Uint8Array(t);return i.set(e),i}function Dk(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i"%"+e.charCodeAt(0).toString(16).toUpperCase())}function J0(r){try{return decodeURIComponent(r)}catch{return r}}function Qk(r){return r.split("/").map(e=>J0(e)).join("/")}function _k(r){return r.split("/").map(e=>z0(J0(e))).join("/")}var AH=new Set(["cache-control","content-disposition","content-encoding","content-length","content-md5","content-type","expect","expires","if-match","if-modified-since","if-none-match","if-unmodified-since","origin","range","transfer-encoding"]);function hH(r){return r==="host"||r==="x-cos-security-token"?!1:!!(AH.has(r)||r.startsWith("x-cos-"))}function Ik(r){if(!r)return[];let e=[];for(let[t,i]of Object.entries(r))i!=null&&e.push([t.toLowerCase(),String(i)]);return e.sort(([t],[i])=>ti?1:0),e}function wk(r){return r.map(([e,t])=>`${z0(e)}=${z0(t)}`).join("&")}function xk(r){return r.map(([e])=>z0(e)).join(";")}async function Fk(r){let e=r.method.toLowerCase(),t=r.pathname.startsWith("/")?r.pathname:`/${r.pathname}`,i=Math.floor(Date.now()/1e3),n=i+(r.expireSeconds??3600),s=`${i};${n}`,o=Ik(r.headers).filter(([w])=>hH(w)),a=xk(o),c=wk(o),l=Ik(r.query),d=xk(l),u=wk(l),f=`${e} +var QG=Object.create;var VC=Object.defineProperty;var FG=Object.getOwnPropertyDescriptor;var PG=Object.getOwnPropertyNames;var TG=Object.getPrototypeOf,UG=Object.prototype.hasOwnProperty;var _t=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var J=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var ae=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},An=(r,e)=>{for(var t in e)VC(r,t,{get:e[t],enumerable:!0})},RG=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of PG(e))!UG.call(r,n)&&n!==t&&VC(r,n,{get:()=>e[n],enumerable:!(i=FG(e,n))||i.enumerable});return r};var Qr=(r,e,t)=>(t=r!=null?QG(TG(r)):{},RG(e||!r||!r.__esModule?VC(t,"default",{value:r,enumerable:!0}):t,r));var YC,QS=J(()=>{YC=(r,e,t)=>(i,n)=>{let s=-1;return a(0);async function a(o){if(o<=s)throw new Error("next() called multiple times");s=o;let c,l=!1,d;if(r[o]?(d=r[o][0][0],i.req.routeIndex=o):d=o===r.length&&n||void 0,d)try{c=await d(i,()=>a(o+1))}catch(u){if(u instanceof Error&&e)i.error=u,c=await e(u,i),l=!0;else throw u}else i.finalized===!1&&t&&(c=await t(i));return c&&(i.finalized===!1||l)&&(i.res=c),i}}});var Of,WC=J(()=>{Of=class extends Error{res;status;constructor(r=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=r}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}}});var FS,PS=J(()=>{FS=Symbol()});var TS=J(()=>{});var US,RS=J(()=>{TS();US=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,i=>i.toLowerCase())}}).formData()});async function NG(r,e){if(!lg(r)&&r.bodyCache.formData)return NS(await r.bodyCache.formData,e);let t=lg(r)?r.headers:r.raw.headers,i=await r.arrayBuffer(),n=US(i,t.get("Content-Type")||"");lg(r)||(r.bodyCache.formData=n);let s=await n;return s?NS(s,e):{}}function NS(r,e){let t=Object.create(null);return r.forEach((i,n)=>{e.all||n.endsWith("[]")?OG(t,n,i):t[n]=i}),e.dot&&Object.entries(t).forEach(([i,n])=>{i.includes(".")&&(qG(t,i,n),delete t[i])}),t}var lg,OS,OG,qG,qS=J(()=>{RS();lg=r=>"headers"in r,OS=async(r,e=Object.create(null))=>{let{all:t=!1,dot:i=!1}=e,a=(lg(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return a==="multipart/form-data"||a==="application/x-www-form-urlencoded"?NG(r,{all:t,dot:i}):{}};OG=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t},qG=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let i=r,n=e.split(".");n.forEach((s,a)=>{a===n.length-1?i[s]=t:((!i[s]||typeof i[s]!="object"||Array.isArray(i[s])||i[s]instanceof File)&&(i[s]=Object.create(null)),i=i[s])})}});var ZC,MS,MG,LG,dg,LS,HS,HG,eE,KS,co,ug,xd,XC,GS,zS,JS,KG,Oc=J(()=>{ZC=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},MS=r=>{let{groups:e,path:t}=MG(r),i=ZC(t);return LG(i,e)},MG=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,i)=>{let n=`@${i}`;return e.push([n,t]),n}),{groups:e,path:r}},LG=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[i]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(i)){r[n]=r[n].replace(i,e[t][1]);break}}return r},dg={},LS=(r,e)=>{if(r==="*")return"*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let i=`${r}#${e}`;return dg[i]||(t[2]?dg[i]=e&&e[0]!==":"&&e[0]!=="*"?[i,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:dg[i]=[r,t[1],!0]),dg[i]}return null},HS=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},HG=r=>HS(r,decodeURI),eE=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),i=t;for(;i{let e=eE(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},co=(r,e,...t)=>(t.length&&(e=co(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),ug=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],i="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))i+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&i===""?t.push("/"):t.push(i);let s=n.replace("?","");i+="/"+s,t.push(i)}else i+="/"+n}),t.filter((n,s,a)=>a.indexOf(n)===s)},xd=r=>r.indexOf("%")!==-1?HS(r,KG):r,XC=r=>(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),xd(r)),GS=(r,e,t)=>{let i;if(!t&&e&&e.indexOf("%")===-1&&e.indexOf("+")===-1){let a=r.indexOf("?",8);if(a===-1)return;for(r.startsWith(e,a+1)||(a=r.indexOf(`&${e}`,a+1));a!==-1;){let o=r.charCodeAt(a+e.length+1);if(o===61){let c=a+e.length+2,l=r.indexOf("&",c);return XC(r.slice(c,l===-1?void 0:l))}else if(o==38||isNaN(o))return"";a=r.indexOf(`&${e}`,a+1)}if(i=/[%+]/.test(r),!i)return}let n=Object.create(null);i??=/[%+]/.test(r);let s=r.indexOf("?",8);for(;s!==-1;){let a=r.indexOf("&",s+1),o=r.indexOf("=",s);o>a&&a!==-1&&(o=-1);let c=r.slice(s+1,o===-1?a===-1?void 0:a:o);if(i&&(c=XC(c)),s=a,c==="")continue;let l;o===-1?l="":(l=r.slice(o+1,a===-1?void 0:a),i&&(l=XC(l))),t?(n[c]&&Array.isArray(n[c])||(n[c]=[]),n[c].push(l)):n[c]??=l}return e?n[e]:n},zS=GS,JS=(r,e)=>GS(r,e,!0),KG=decodeURIComponent});var jS,$S=J(()=>{WC();PS();qS();Oc();jS=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t}param(r){return r?this.#r(r):this.#s()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#i(e);return t&&xd(t)}#s(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let i=this.#i(this.#e[0][this.routeIndex][1][t]);i!==void 0&&(r[t]=xd(i))}return r}#i(r){return this.#e[1]?this.#e[1][r]:r}query(r){return zS(this.url,r)}queries(r){return JS(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e=Object.create(null);return this.raw.headers.forEach((t,i)=>{e[i]=t}),e}async parseBody(r){return OS(this,r)}#n=r=>{let{bodyCache:e,raw:t}=this,i=e[r];if(i)return i;for(let n in e)return e[n].then(s=>(n==="json"&&(s=JSON.stringify(s)),new Response(s)[r]()));return e[r]=t[r]()};json(){return this.#n("text").then(r=>JSON.parse(r))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}bytes(){return this.#n("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(r,e){(this.#t??={})[r]=e}valid(r){return this.#t?.[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[FS](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}}});var VS,GG,tE,YS=J(()=>{VS={Stringify:1,BeforeStream:2,Stream:3},GG=(r,e)=>{let t=new String(r);return t.isEscaped=!0,t.callbacks=e,t},tE=async(r,e,t,i,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let s=r.callbacks;if(!s?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let a=Promise.all(s.map(o=>o({phase:e,buffer:n,context:i}))).then(o=>Promise.all(o.filter(Boolean).map(c=>tE(c,e,!1,i,n))).then(()=>n[0]));return t?GG(await a,s):a}});var zG,rE,qf,iE,fg=J(()=>{$S();YS();zG="text/plain; charset=UTF-8",rE=(r,e)=>({"Content-Type":r,...e}),qf=(r,e)=>new Response(r,e),iE=class{#t;#e;env={};#r;finalized=!1;error;#s;#i;#n;#d;#c;#l;#o;#u;#f;constructor(r,e){this.#t=r,e&&(this.#i=e.executionCtx,this.env=e.env,this.#l=e.notFoundHandler,this.#f=e.path,this.#u=e.matchResult)}get req(){return this.#e??=new jS(this.#t,this.#f,this.#u),this.#e}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=qf(null,{headers:this.#o??=new Headers})}set res(r){if(this.#n&&r){r=qf(r.body,r);for(let[e,t]of this.#n.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let i=this.#n.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of i)r.headers.append("set-cookie",n)}else r.headers.set(e,t)}this.#n=r,this.finalized=!0}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#d=r;getLayout=()=>this.#d;setRenderer=r=>{this.#c=r};header=(r,e,t)=>{this.finalized&&(this.#n=qf(this.#n.body,this.#n));let i=this.#n?this.#n.headers:this.#o??=new Headers;e===void 0?i.delete(r):t?.append?i.append(r,e):i.set(r,e)};status=r=>{this.#s=r};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e)};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#a(r,e,t){let i=this.#n?new Headers(this.#n.headers):this.#o;if(typeof e=="object"&&e.headers){i??=new Headers;for(let[s,a]of new Headers(e.headers))s==="set-cookie"?i.append(s,a):i.set(s,a)}if(t){if(!i){let s=0;for(let a in t)if(++s>1||typeof t[a]!="string"){i=new Headers;break}}if(i)for(let s in t){let a=t[s];if(typeof a=="string")i.set(s,a);else{i.delete(s);for(let o of a)i.append(s,o)}}}let n=typeof e=="number"?e:e?.status??this.#s;return qf(r,{status:n,headers:i??t})}newResponse=(...r)=>this.#a(...r);body=(r,e,t)=>this.#a(r,e,t);text=(r,e,t)=>!this.#o&&!this.#s&&!e&&!t&&!this.finalized?new Response(r):this.#a(r,e,rE(zG,t));json=(r,e,t)=>this.#a(JSON.stringify(r),e,rE("application/json",t));html=(r,e,t)=>{let i=n=>this.#a(n,e,rE("text/html; charset=UTF-8",t));return typeof r=="object"?tE(r,VS.Stringify,!1,{}).then(i):i(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#l??=()=>qf(),this.#l(this))}});var hr,WS,XS,hg,Ag,qc=J(()=>{hr="ALL",WS="all",XS=["get","post","put","delete","options","patch","query"],hg="Can not add a route since the matcher is already built.",Ag=class extends Error{}});var ZS,eD=J(()=>{ZS="__COMPOSED_HANDLER"});var JG,tD,rD,nD=J(()=>{QS();fg();qc();eD();Oc();JG=r=>r.text("404 Not Found",404),tD=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},rD=class iD{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[...XS,WS].forEach(s=>{this[s]=(a,...o)=>(typeof a=="string"?this.#t=a:this.#s(s,this.#t,a),o.forEach(c=>{this.#s(s,this.#t,c)}),this)}),this.on=(s,a,...o)=>{for(let c of[a].flat()){this.#t=c;for(let l of[s].flat())o.map(d=>{this.#s(l.toUpperCase(),this.#t,d)})}return this},this.use=(s,...a)=>(typeof s=="string"?this.#t=s:(this.#t="*",a.unshift(s)),a.forEach(o=>{this.#s(hr,this.#t,o)}),this);let{strict:i,...n}=e;Object.assign(this,n),this.getPath=i??!0?e.getPath??eE:KS}#e(){let e=new iD({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=JG;errorHandler=tD;route(e,t){let i=this.basePath(e);return t.routes.map(n=>{let s;t.errorHandler===tD?s=n.handler:(s=async(a,o)=>(await YC([],t.errorHandler)(a,()=>n.handler(a,o))).res,s[ZS]=n.handler),i.#s(n.method,n.path,s,n.basePath)}),this}basePath(e){let t=this.#e();return t._basePath=co(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,i){let n,s;i&&(typeof i=="function"?s=i:(s=i.optionHandler,i.replaceRequest===!1?n=c=>c:n=i.replaceRequest));let a=s?c=>{let l=s(c);return Array.isArray(l)?l:[l]}:c=>{let l;try{l=c.executionCtx}catch{}return[c.env,l]};n||=(()=>{let c=co(this._basePath,e),l=c==="/"?0:c.length;return d=>{let u=new URL(d.url);return u.pathname=this.getPath(d).slice(l)||"/",new Request(u,d)}})();let o=async(c,l)=>{let d=await t(n(c.req.raw),...a(c));if(d)return d;await l()};return this.#s(hr,co(e,"*"),o),this}#s(e,t,i,n){e=e.toUpperCase(),t=co(this._basePath,t);let s={basePath:n!==void 0?co(this._basePath,n):this._basePath,path:t,method:e,handler:i};this.router.add(e,t,[i,s]),this.routes.push(s)}#i(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#n(e,t,i,n){if(n==="HEAD")return(async()=>new Response(null,await this.#n(e,t,i,"GET")))();let s=this.getPath(e,{env:i}),a=this.router.match(n,s),o=new iE(e,{path:s,matchResult:a,env:i,executionCtx:t,notFoundHandler:this.#r});if(a[0].length===1){let l;try{l=a[0][0][0][0](o,async()=>{o.res=await this.#r(o)})}catch(d){return this.#i(d,o)}return l instanceof Promise?l.then(d=>d||(o.finalized?o.res:this.#r(o))).catch(d=>this.#i(d,o)):l??this.#r(o)}let c=YC(a[0],this.errorHandler,this.#r);return(async()=>{try{let l=await c(o);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#i(l,o)}})()}fetch=(e,...t)=>this.#n(e,t[1],t[0],e.method);request=(e,t,i,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,i,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${co("/",e)}`,t),i,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#n(e.request,e,void 0,e.request.method))})}}});function nE(r,e){let t=this.buildAllMatchers(),i=((n,s)=>{let a=t[n]||t[hr],o=a[2][s];if(o)return o;let c=s.match(a[0]);if(!c)return[[],gg];let l=c.indexOf("",1);return[a[1][l],c]});return this.match=i,i(r,e)}var gg,sE=J(()=>{qc();gg=[]});function jG(r,e){return r.length===1?e.length===1?r{pg="[^/]+",Cd=".*",Mc="(?:|/.*)",lo=Symbol(),sD=new Set(".\\+*[^]$()");aD=class aE{#t;#e;#r=Object.create(null);insert(e,t,i,n,s){let a=this;for(let o=0,c=e.length;o1||g.length>1)&&g!==Cd&&g!==Mc)throw lo}u=a.#r[A]=new aE}f!==""&&(u.#e??=n.varIndex++,i.push([f,u.#e]))}else if(u=a.#r[l],!u){for(let f in a.#r)if(f.length>1&&f!==Cd&&f!==Mc)throw lo;u=a.#r[l]=new aE}a=u}if(a.#t!==void 0)throw lo;a.#t=s?-1:t}buildRegExpStr(){let t=Object.keys(this.#r).sort(jG).map(i=>{let n=this.#r[i],s=n.buildRegExpStr();return s===""?"":(typeof n.#e=="number"?`(${i})@${n.#e}`:sD.has(i)?`\\${i}`:i)+s}).filter(Boolean);return typeof this.#t=="number"&&this.#t!==-1&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}}});var cE,oD=J(()=>{oE();cE=class{#t={varIndex:0};#e=new aD;#r=0;paths=Object.create(null);insert(r,e){if(e){this.#e.insert(r.split(""),0,[],this.#t,!0);return}let t=[],i=[],n=r;for(let a=0;;){let o=!1;if(n=n.replace(/\{[^}]+\}/g,c=>{let l=`@\\${a}`;return i[a]=[l,c],a++,o=!0,l}),!o)break}let s=n.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let a=i.length-1;a>=0;a--){let[o]=i[a];for(let c=s.length-1;c>=0;c--)if(s[c].indexOf(o)!==-1){s[c]=s[c].replace(o,i[a][1]);break}}this.#e.insert(s,this.#r,t,this.#t,!1),this.paths[r]=[this.#r++,t]}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return[/^$/,[],[]];let e=0,t=[],i=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,s,a)=>s!==void 0?(t[++e]=Number(s),"$()"):(a!==void 0&&(i[Number(a)]=++e),"")),[new RegExp(`^${r}`),t,i]}}});function lD(r){return cD[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function $G(){cD=Object.create(null)}function mg(r,e){if(r){for(let t of Object.keys(r).sort((i,n)=>n.length-i.length))if(lD(t).test(e))return[...r[t]]}}var cD,yg,lE=J(()=>{qc();Oc();sE();oE();oD();cD=Object.create(null);yg=class{name="RegExpRouter";#t;#e;#r;constructor(){this.#t={[hr]:Object.create(null)},this.#e={[hr]:Object.create(null)},this.#r={[hr]:new cE}}#s(r,e){try{this.#r[r].insert(e,!/\*|\/:/.test(e))}catch(t){throw t===lo?new Ag(e):t}}add(r,e,t){let i=this.#t,n=this.#e;if(!i||!n)throw new Error(hg);i[r]||(this.#r[r]=new cE,[i,n].forEach(o=>{o[r]=Object.create(null),Object.keys(o[hr]).forEach(c=>{o[r][c]=[...o[hr][c]],this.#s(r,c)})})),e==="/*"&&(e="*");let s=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let o=lD(e);Object.keys(i).forEach(c=>{(r===hr||r===c)&&!i[c][e]&&(this.#s(c,e),i[c][e]=mg(i[c],e)||mg(i[hr],e)||[])}),Object.keys(i).forEach(c=>{(r===hr||r===c)&&Object.keys(i[c]).forEach(l=>{o.test(l)&&i[c][l].push([t,s])})}),Object.keys(n).forEach(c=>{(r===hr||r===c)&&Object.keys(n[c]).forEach(l=>o.test(l)&&n[c][l].push([t,s]))});return}let a=ug(e)||[e];for(let o=0,c=a.length;o{(r===hr||r===d)&&(n[d][l]||(this.#s(d,l),n[d][l]=[...mg(i[d],l)||mg(i[hr],l)||[]]),n[d][l].push([t,s-c+o+1]))})}}match=nE;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#i(e)}),this.#t=this.#e=this.#r=void 0,$G(),r}#i(r){let e=this.#t[r],t=this.#e[r],i=this.#r[r],n=Object.create(null),s=[];[e,t].forEach(d=>{for(let u in d){let f=d[u],A=i.paths[u];if(!A){n[u]=[f.map(([p])=>[p,Object.create(null)]),gg];continue}let g=A[1];s[A[0]]=f.map(([p,I])=>{let m=Object.create(null);for(I-=1;I>=0;I--){let[w,B]=g[I];m[w]=B}return[p,m]})}});let[a,o,c]=i.buildRegExp();for(let d=0,u=s.length;d{qc();sE();lE()});var uD=J(()=>{lE();dD()});var dE,fD=J(()=>{qc();dE=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers}add(r,e,t){if(!this.#e)throw new Error(hg);this.#e.push([r,e,t])}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,i=this.#e,n=t.length,s=0,a;for(;s{fD()});var Mf,VG,AD,pD=J(()=>{qc();Oc();Mf=Object.create(null),VG=r=>{for(let e in r)return!0;return!1},AD=class gD{#t;#e;#r;#s=0;#i=Mf;constructor(e,t,i){if(this.#e=i||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n]}this.#r=[]}insert(e,t,i){this.#s=++this.#s;let n=this,s=MS(t),a=[];for(let o=0,c=s.length;ol.indexOf(o)===c),score:this.#s}}),n}#n(e,t,i,n,s){for(let a=0,o=t.#t.length;a1&&i.sort((d,u)=>d.score-u.score),[i.map(({handler:d,params:u})=>[d,u])]}}});var uE,mD=J(()=>{Oc();pD();uE=class{name="TrieRouter";#t;constructor(){this.#t=new AD}add(r,e,t){let i=ug(e);if(i){for(let n=0,s=i.length;n{mD()});var at,fE=J(()=>{nD();uD();hD();yD();at=class extends rD{constructor(r={}){super(r),this.router=r.router??new dE({routers:[new yg,new uE]})}}});var Fr=J(()=>{fE();fg()});function Ig(r,e){return(r<>>32-e)>>>0}function uo(r,e,t,i,n){r[e]=r[e]+r[t]>>>0,r[n]=Ig(r[n]^r[e],16),r[i]=r[i]+r[n]>>>0,r[t]=Ig(r[t]^r[i],12),r[e]=r[e]+r[t]>>>0,r[n]=Ig(r[n]^r[e],8),r[i]=r[i]+r[n]>>>0,r[t]=Ig(r[t]^r[i],7)}function wg(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24)>>>0}function CD(r,e,t,i){let n=new Uint32Array(16);n[0]=1634760805,n[1]=857760878,n[2]=2036477234,n[3]=1797285236,n[4]=r[0],n[5]=r[1],n[6]=r[2],n[7]=r[3],n[8]=r[4],n[9]=r[5],n[10]=r[6],n[11]=r[7],n[12]=e>>>0,n[13]=t[0],n[14]=t[1],n[15]=t[2];let s=n.slice();for(let a=0;a<10;a++)uo(s,0,4,8,12),uo(s,1,5,9,13),uo(s,2,6,10,14),uo(s,3,7,11,15),uo(s,0,5,10,15),uo(s,1,6,11,12),uo(s,2,7,8,13),uo(s,3,4,9,14);for(let a=0;a<16;a++){let o=s[a]+n[a]>>>0;i[a*4]=o&255,i[a*4+1]=o>>>8&255,i[a*4+2]=o>>>16&255,i[a*4+3]=o>>>24&255}}function ED(r){if(r.length!==32)throw new Error("ChaCha20 key must be 32 bytes");let e=new Uint32Array(8);for(let t=0;t<8;t++)e[t]=wg(r,t*4);return e}function BD(r){if(r.length!==12)throw new Error("ChaCha20 nonce must be 12 bytes");return new Uint32Array([wg(r,0),wg(r,4),wg(r,8)])}function bD(r,e,t,i=1){let n=ED(r),s=BD(e),a=new Uint8Array(t.length),o=new Uint8Array(64);for(let c=0;c=0;t--)e=e<<8n|BigInt(r[t]);return e}function XG(r,e){let t=new Uint8Array(e),i=r;for(let n=0;n>=8n;return t}function vD(r,e){if(e.length!==32)throw new Error("Poly1305 one-time key must be 32 bytes");let t=hE(e.subarray(0,16))&WG,i=hE(e.subarray(16,32)),n=0n;for(let s=0;s>=8n;return e}function ZG(r){let e=r.reduce((n,s)=>n+s.length,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.length;return t}function kD(r,e){return ZG([e,wD(e),r,wD(r),xD(e.length),xD(r.length)])}function SD(r,e){let t=new Uint8Array(64);return CD(ED(r),0,BD(e),t),t.subarray(0,32)}function DD(r,e,t,i=new Uint8Array(0)){let n=bD(r,e,t,1),s=vD(kD(n,i),SD(r,e));return{ciphertext:n,tag:s}}function _D(r,e,t,i,n=new Uint8Array(0)){if(i.length!==16)throw new Error("Invalid Poly1305 tag length");let s=vD(kD(t,n),SD(r,e));if(!ez(s,i))throw new Error("ChaCha20-Poly1305 authentication failed (wrong key or tampered data)");return bD(r,e,t,1)}function ez(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i{"use strict";YG=(1n<<130n)-5n,WG=0x0ffffffc0ffffffc0ffffffc0fffffffn});var lt=ae((xg,FD)=>{(function(r,e){typeof xg=="object"?FD.exports=xg=e():typeof define=="function"&&define.amd?define([],e):r.CryptoJS=e()})(xg,function(){var r=r||(function(e,t){var i;if(typeof window<"u"&&window.crypto&&(i=window.crypto),typeof self<"u"&&self.crypto&&(i=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<"u"&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<"u"&&global.crypto&&(i=global.crypto),!i&&typeof _t=="function")try{i=_t("crypto")}catch{}var n=function(){if(i){if(typeof i.getRandomValues=="function")try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes=="function")try{return i.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||(function(){function m(){}return function(w){var B;return m.prototype=w,B=new m,m.prototype=null,B}})(),a={},o=a.lib={},c=o.Base=(function(){return{extend:function(m){var w=s(this);return m&&w.mixIn(m),(!w.hasOwnProperty("init")||this.init===w.init)&&(w.init=function(){w.$super.init.apply(this,arguments)}),w.init.prototype=w,w.$super=this,w},create:function(){var m=this.extend();return m.init.apply(m,arguments),m},init:function(){},mixIn:function(m){for(var w in m)m.hasOwnProperty(w)&&(this[w]=m[w]);m.hasOwnProperty("toString")&&(this.toString=m.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),l=o.WordArray=c.extend({init:function(m,w){m=this.words=m||[],w!=t?this.sigBytes=w:this.sigBytes=m.length*4},toString:function(m){return(m||u).stringify(this)},concat:function(m){var w=this.words,B=m.words,C=this.sigBytes,x=m.sigBytes;if(this.clamp(),C%4)for(var _=0;_>>2]>>>24-_%4*8&255;w[C+_>>>2]|=R<<24-(C+_)%4*8}else for(var U=0;U>>2]=B[U>>>2];return this.sigBytes+=x,this},clamp:function(){var m=this.words,w=this.sigBytes;m[w>>>2]&=4294967295<<32-w%4*8,m.length=e.ceil(w/4)},clone:function(){var m=c.clone.call(this);return m.words=this.words.slice(0),m},random:function(m){for(var w=[],B=0;B>>2]>>>24-x%4*8&255;C.push((_>>>4).toString(16)),C.push((_&15).toString(16))}return C.join("")},parse:function(m){for(var w=m.length,B=[],C=0;C>>3]|=parseInt(m.substr(C,2),16)<<24-C%8*4;return new l.init(B,w/2)}},f=d.Latin1={stringify:function(m){for(var w=m.words,B=m.sigBytes,C=[],x=0;x>>2]>>>24-x%4*8&255;C.push(String.fromCharCode(_))}return C.join("")},parse:function(m){for(var w=m.length,B=[],C=0;C>>2]|=(m.charCodeAt(C)&255)<<24-C%4*8;return new l.init(B,w)}},A=d.Utf8={stringify:function(m){try{return decodeURIComponent(escape(f.stringify(m)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(m){return f.parse(unescape(encodeURIComponent(m)))}},g=o.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(m){typeof m=="string"&&(m=A.parse(m)),this._data.concat(m),this._nDataBytes+=m.sigBytes},_process:function(m){var w,B=this._data,C=B.words,x=B.sigBytes,_=this.blockSize,R=_*4,U=x/R;m?U=e.ceil(U):U=e.max((U|0)-this._minBufferSize,0);var T=U*_,D=e.min(T*4,x);if(T){for(var b=0;b{(function(r,e){typeof Cg=="object"?PD.exports=Cg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Cg,function(r){return(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,a=t.x64={},o=a.Word=n.extend({init:function(l,d){this.high=l,this.low=d}}),c=a.WordArray=n.extend({init:function(l,d){l=this.words=l||[],d!=e?this.sigBytes=d:this.sigBytes=l.length*8},toX32:function(){for(var l=this.words,d=l.length,u=[],f=0;f{(function(r,e){typeof Eg=="object"?TD.exports=Eg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Eg,function(r){return(function(){if(typeof ArrayBuffer=="function"){var e=r,t=e.lib,i=t.WordArray,n=i.init,s=i.init=function(a){if(a instanceof ArrayBuffer&&(a=new Uint8Array(a)),(a instanceof Int8Array||typeof Uint8ClampedArray<"u"&&a instanceof Uint8ClampedArray||a instanceof Int16Array||a instanceof Uint16Array||a instanceof Int32Array||a instanceof Uint32Array||a instanceof Float32Array||a instanceof Float64Array)&&(a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength)),a instanceof Uint8Array){for(var o=a.byteLength,c=[],l=0;l>>2]|=a[l]<<24-l%4*8;n.call(this,c,o)}else n.apply(this,arguments)};s.prototype=i}})(),r.lib.WordArray})});var ND=ae((Bg,RD)=>{(function(r,e){typeof Bg=="object"?RD.exports=Bg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Bg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Utf16=n.Utf16BE={stringify:function(o){for(var c=o.words,l=o.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535;d.push(String.fromCharCode(f))}return d.join("")},parse:function(o){for(var c=o.length,l=[],d=0;d>>1]|=o.charCodeAt(d)<<16-d%2*16;return i.create(l,c*2)}};n.Utf16LE={stringify:function(o){for(var c=o.words,l=o.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535);d.push(String.fromCharCode(f))}return d.join("")},parse:function(o){for(var c=o.length,l=[],d=0;d>>1]|=a(o.charCodeAt(d)<<16-d%2*16);return i.create(l,c*2)}};function a(o){return o<<8&4278255360|o>>>8&16711935}})(),r.enc.Utf16})});var fo=ae((bg,OD)=>{(function(r,e){typeof bg=="object"?OD.exports=bg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(bg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64={stringify:function(o){var c=o.words,l=o.sigBytes,d=this._map;o.clamp();for(var u=[],f=0;f>>2]>>>24-f%4*8&255,g=c[f+1>>>2]>>>24-(f+1)%4*8&255,p=c[f+2>>>2]>>>24-(f+2)%4*8&255,I=A<<16|g<<8|p,m=0;m<4&&f+m*.75>>6*(3-m)&63));var w=d.charAt(64);if(w)for(;u.length%4;)u.push(w);return u.join("")},parse:function(o){var c=o.length,l=this._map,d=this._reverseMap;if(!d){d=this._reverseMap=[];for(var u=0;u>>6-f%4*2,p=A|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64})});var MD=ae((vg,qD)=>{(function(r,e){typeof vg=="object"?qD.exports=vg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(vg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64url={stringify:function(o,c){c===void 0&&(c=!0);var l=o.words,d=o.sigBytes,u=c?this._safe_map:this._map;o.clamp();for(var f=[],A=0;A>>2]>>>24-A%4*8&255,p=l[A+1>>>2]>>>24-(A+1)%4*8&255,I=l[A+2>>>2]>>>24-(A+2)%4*8&255,m=g<<16|p<<8|I,w=0;w<4&&A+w*.75>>6*(3-w)&63));var B=u.charAt(64);if(B)for(;f.length%4;)f.push(B);return f.join("")},parse:function(o,c){c===void 0&&(c=!0);var l=o.length,d=c?this._safe_map:this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var f=0;f>>6-f%4*2,p=A|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64url})});var ho=ae((kg,LD)=>{(function(r,e){typeof kg=="object"?LD.exports=kg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(kg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[];(function(){for(var A=0;A<64;A++)o[A]=e.abs(e.sin(A+1))*4294967296|0})();var c=a.MD5=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(A,g){for(var p=0;p<16;p++){var I=g+p,m=A[I];A[I]=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360}var w=this._hash.words,B=A[g+0],C=A[g+1],x=A[g+2],_=A[g+3],R=A[g+4],U=A[g+5],T=A[g+6],D=A[g+7],b=A[g+8],Q=A[g+9],v=A[g+10],E=A[g+11],P=A[g+12],N=A[g+13],j=A[g+14],z=A[g+15],L=w[0],G=w[1],K=w[2],$=w[3];L=l(L,G,K,$,B,7,o[0]),$=l($,L,G,K,C,12,o[1]),K=l(K,$,L,G,x,17,o[2]),G=l(G,K,$,L,_,22,o[3]),L=l(L,G,K,$,R,7,o[4]),$=l($,L,G,K,U,12,o[5]),K=l(K,$,L,G,T,17,o[6]),G=l(G,K,$,L,D,22,o[7]),L=l(L,G,K,$,b,7,o[8]),$=l($,L,G,K,Q,12,o[9]),K=l(K,$,L,G,v,17,o[10]),G=l(G,K,$,L,E,22,o[11]),L=l(L,G,K,$,P,7,o[12]),$=l($,L,G,K,N,12,o[13]),K=l(K,$,L,G,j,17,o[14]),G=l(G,K,$,L,z,22,o[15]),L=d(L,G,K,$,C,5,o[16]),$=d($,L,G,K,T,9,o[17]),K=d(K,$,L,G,E,14,o[18]),G=d(G,K,$,L,B,20,o[19]),L=d(L,G,K,$,U,5,o[20]),$=d($,L,G,K,v,9,o[21]),K=d(K,$,L,G,z,14,o[22]),G=d(G,K,$,L,R,20,o[23]),L=d(L,G,K,$,Q,5,o[24]),$=d($,L,G,K,j,9,o[25]),K=d(K,$,L,G,_,14,o[26]),G=d(G,K,$,L,b,20,o[27]),L=d(L,G,K,$,N,5,o[28]),$=d($,L,G,K,x,9,o[29]),K=d(K,$,L,G,D,14,o[30]),G=d(G,K,$,L,P,20,o[31]),L=u(L,G,K,$,U,4,o[32]),$=u($,L,G,K,b,11,o[33]),K=u(K,$,L,G,E,16,o[34]),G=u(G,K,$,L,j,23,o[35]),L=u(L,G,K,$,C,4,o[36]),$=u($,L,G,K,R,11,o[37]),K=u(K,$,L,G,D,16,o[38]),G=u(G,K,$,L,v,23,o[39]),L=u(L,G,K,$,N,4,o[40]),$=u($,L,G,K,B,11,o[41]),K=u(K,$,L,G,_,16,o[42]),G=u(G,K,$,L,T,23,o[43]),L=u(L,G,K,$,Q,4,o[44]),$=u($,L,G,K,P,11,o[45]),K=u(K,$,L,G,z,16,o[46]),G=u(G,K,$,L,x,23,o[47]),L=f(L,G,K,$,B,6,o[48]),$=f($,L,G,K,D,10,o[49]),K=f(K,$,L,G,j,15,o[50]),G=f(G,K,$,L,U,21,o[51]),L=f(L,G,K,$,P,6,o[52]),$=f($,L,G,K,_,10,o[53]),K=f(K,$,L,G,v,15,o[54]),G=f(G,K,$,L,C,21,o[55]),L=f(L,G,K,$,b,6,o[56]),$=f($,L,G,K,z,10,o[57]),K=f(K,$,L,G,T,15,o[58]),G=f(G,K,$,L,N,21,o[59]),L=f(L,G,K,$,R,6,o[60]),$=f($,L,G,K,E,10,o[61]),K=f(K,$,L,G,x,15,o[62]),G=f(G,K,$,L,Q,21,o[63]),w[0]=w[0]+L|0,w[1]=w[1]+G|0,w[2]=w[2]+K|0,w[3]=w[3]+$|0},_doFinalize:function(){var A=this._data,g=A.words,p=this._nDataBytes*8,I=A.sigBytes*8;g[I>>>5]|=128<<24-I%32;var m=e.floor(p/4294967296),w=p;g[(I+64>>>9<<4)+15]=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,g[(I+64>>>9<<4)+14]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,A.sigBytes=(g.length+1)*4,this._process();for(var B=this._hash,C=B.words,x=0;x<4;x++){var _=C[x];C[x]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}return B},clone:function(){var A=s.clone.call(this);return A._hash=this._hash.clone(),A}});function l(A,g,p,I,m,w,B){var C=A+(g&p|~g&I)+m+B;return(C<>>32-w)+g}function d(A,g,p,I,m,w,B){var C=A+(g&I|p&~I)+m+B;return(C<>>32-w)+g}function u(A,g,p,I,m,w,B){var C=A+(g^p^I)+m+B;return(C<>>32-w)+g}function f(A,g,p,I,m,w,B){var C=A+(p^(g|~I))+m+B;return(C<>>32-w)+g}t.MD5=s._createHelper(c),t.HmacMD5=s._createHmacHelper(c)})(Math),r.MD5})});var AE=ae((Sg,HD)=>{(function(r,e){typeof Sg=="object"?HD.exports=Sg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Sg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.Hasher,s=e.algo,a=[],o=s.SHA1=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,l){for(var d=this._hash.words,u=d[0],f=d[1],A=d[2],g=d[3],p=d[4],I=0;I<80;I++){if(I<16)a[I]=c[l+I]|0;else{var m=a[I-3]^a[I-8]^a[I-14]^a[I-16];a[I]=m<<1|m>>>31}var w=(u<<5|u>>>27)+p+a[I];I<20?w+=(f&A|~f&g)+1518500249:I<40?w+=(f^A^g)+1859775393:I<60?w+=(f&A|f&g|A&g)-1894007588:w+=(f^A^g)-899497514,p=g,g=A,A=f<<30|f>>>2,f=u,u=w}d[0]=d[0]+u|0,d[1]=d[1]+f|0,d[2]=d[2]+A|0,d[3]=d[3]+g|0,d[4]=d[4]+p|0},_doFinalize:function(){var c=this._data,l=c.words,d=this._nDataBytes*8,u=c.sigBytes*8;return l[u>>>5]|=128<<24-u%32,l[(u+64>>>9<<4)+14]=Math.floor(d/4294967296),l[(u+64>>>9<<4)+15]=d,c.sigBytes=l.length*4,this._process(),this._hash},clone:function(){var c=n.clone.call(this);return c._hash=this._hash.clone(),c}});e.SHA1=n._createHelper(o),e.HmacSHA1=n._createHmacHelper(o)})(),r.SHA1})});var _g=ae((Dg,KD)=>{(function(r,e){typeof Dg=="object"?KD.exports=Dg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Dg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],c=[];(function(){function u(p){for(var I=e.sqrt(p),m=2;m<=I;m++)if(!(p%m))return!1;return!0}function f(p){return(p-(p|0))*4294967296|0}for(var A=2,g=0;g<64;)u(A)&&(g<8&&(o[g]=f(e.pow(A,1/2))),c[g]=f(e.pow(A,1/3)),g++),A++})();var l=[],d=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(u,f){for(var A=this._hash.words,g=A[0],p=A[1],I=A[2],m=A[3],w=A[4],B=A[5],C=A[6],x=A[7],_=0;_<64;_++){if(_<16)l[_]=u[f+_]|0;else{var R=l[_-15],U=(R<<25|R>>>7)^(R<<14|R>>>18)^R>>>3,T=l[_-2],D=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;l[_]=U+l[_-7]+D+l[_-16]}var b=w&B^~w&C,Q=g&p^g&I^p&I,v=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),E=(w<<26|w>>>6)^(w<<21|w>>>11)^(w<<7|w>>>25),P=x+E+b+c[_]+l[_],N=v+Q;x=C,C=B,B=w,w=m+P|0,m=I,I=p,p=g,g=P+N|0}A[0]=A[0]+g|0,A[1]=A[1]+p|0,A[2]=A[2]+I|0,A[3]=A[3]+m|0,A[4]=A[4]+w|0,A[5]=A[5]+B|0,A[6]=A[6]+C|0,A[7]=A[7]+x|0},_doFinalize:function(){var u=this._data,f=u.words,A=this._nDataBytes*8,g=u.sigBytes*8;return f[g>>>5]|=128<<24-g%32,f[(g+64>>>9<<4)+14]=e.floor(A/4294967296),f[(g+64>>>9<<4)+15]=A,u.sigBytes=f.length*4,this._process(),this._hash},clone:function(){var u=s.clone.call(this);return u._hash=this._hash.clone(),u}});t.SHA256=s._createHelper(d),t.HmacSHA256=s._createHmacHelper(d)})(Math),r.SHA256})});var zD=ae((Qg,GD)=>{(function(r,e,t){typeof Qg=="object"?GD.exports=Qg=e(lt(),_g()):typeof define=="function"&&define.amd?define(["./core","./sha256"],e):e(r.CryptoJS)})(Qg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var o=s._doFinalize.call(this);return o.sigBytes-=4,o}});e.SHA224=s._createHelper(a),e.HmacSHA224=s._createHmacHelper(a)})(),r.SHA224})});var gE=ae((Fg,JD)=>{(function(r,e,t){typeof Fg=="object"?JD.exports=Fg=e(lt(),Lf()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Fg,function(r){return(function(){var e=r,t=e.lib,i=t.Hasher,n=e.x64,s=n.Word,a=n.WordArray,o=e.algo;function c(){return s.create.apply(s,arguments)}var l=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],d=[];(function(){for(var f=0;f<80;f++)d[f]=c()})();var u=o.SHA512=i.extend({_doReset:function(){this._hash=new a.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(f,A){for(var g=this._hash.words,p=g[0],I=g[1],m=g[2],w=g[3],B=g[4],C=g[5],x=g[6],_=g[7],R=p.high,U=p.low,T=I.high,D=I.low,b=m.high,Q=m.low,v=w.high,E=w.low,P=B.high,N=B.low,j=C.high,z=C.low,L=x.high,G=x.low,K=_.high,$=_.low,te=R,re=U,ee=T,Z=D,ye=b,de=Q,Ae=v,De=E,He=P,Ue=N,se=j,ut=z,ce=L,wr=G,Wr=K,mt=$,xe=0;xe<80;xe++){var be,cn,eo=d[xe];if(xe<16)cn=eo.high=f[A+xe*2]|0,be=eo.low=f[A+xe*2+1]|0;else{var Qe=d[xe-15],qt=Qe.high,Ws=Qe.low,Be=(qt>>>1|Ws<<31)^(qt>>>8|Ws<<24)^qt>>>7,ln=(Ws>>>1|qt<<31)^(Ws>>>8|qt<<24)^(Ws>>>7|qt<<25),mi=d[xe-2],_r=mi.high,ur=mi.low,xr=(_r>>>19|ur<<13)^(_r<<3|ur>>>29)^_r>>>6,Pe=(ur>>>19|_r<<13)^(ur<<3|_r>>>29)^(ur>>>6|_r<<26),Se=d[xe-7],pd=Se.high,ki=Se.low,Xr=d[xe-16],cs=Xr.high,Nn=Xr.low;be=ln+ki,cn=Be+pd+(be>>>0>>0?1:0),be=be+Pe,cn=cn+xr+(be>>>0>>0?1:0),be=be+Nn,cn=cn+cs+(be>>>0>>0?1:0),eo.high=cn,eo.low=be}var je=He&se^~He&ce,Rc=Ue&ut^~Ue&wr,dn=te&ee^te&ye^ee&ye,to=re&Z^re&de^Z&de,Wi=(te>>>28|re<<4)^(te<<30|re>>>2)^(te<<25|re>>>7),h=(re>>>28|te<<4)^(re<<30|te>>>2)^(re<<25|te>>>7),k=(He>>>14|Ue<<18)^(He>>>18|Ue<<14)^(He<<23|Ue>>>9),q=(Ue>>>14|He<<18)^(Ue>>>18|He<<14)^(Ue<<23|He>>>9),V=l[xe],H=V.high,W=V.low,fe=mt+q,Me=Wr+k+(fe>>>0>>0?1:0),fe=fe+Rc,Me=Me+je+(fe>>>0>>0?1:0),fe=fe+W,Me=Me+H+(fe>>>0>>0?1:0),fe=fe+be,Me=Me+cn+(fe>>>0>>0?1:0),it=h+to,we=Wi+dn+(it>>>0>>0?1:0);Wr=ce,mt=wr,ce=se,wr=ut,se=He,ut=Ue,Ue=De+fe|0,He=Ae+Me+(Ue>>>0>>0?1:0)|0,Ae=ye,De=de,ye=ee,de=Z,ee=te,Z=re,re=fe+it|0,te=Me+we+(re>>>0>>0?1:0)|0}U=p.low=U+re,p.high=R+te+(U>>>0>>0?1:0),D=I.low=D+Z,I.high=T+ee+(D>>>0>>0?1:0),Q=m.low=Q+de,m.high=b+ye+(Q>>>0>>0?1:0),E=w.low=E+De,w.high=v+Ae+(E>>>0>>0?1:0),N=B.low=N+Ue,B.high=P+He+(N>>>0>>0?1:0),z=C.low=z+ut,C.high=j+se+(z>>>0>>0?1:0),G=x.low=G+wr,x.high=L+ce+(G>>>0>>0?1:0),$=_.low=$+mt,_.high=K+Wr+($>>>0>>0?1:0)},_doFinalize:function(){var f=this._data,A=f.words,g=this._nDataBytes*8,p=f.sigBytes*8;A[p>>>5]|=128<<24-p%32,A[(p+128>>>10<<5)+30]=Math.floor(g/4294967296),A[(p+128>>>10<<5)+31]=g,f.sigBytes=A.length*4,this._process();var I=this._hash.toX32();return I},clone:function(){var f=i.clone.call(this);return f._hash=this._hash.clone(),f},blockSize:1024/32});e.SHA512=i._createHelper(u),e.HmacSHA512=i._createHmacHelper(u)})(),r.SHA512})});var $D=ae((Pg,jD)=>{(function(r,e,t){typeof Pg=="object"?jD.exports=Pg=e(lt(),Lf(),gE()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./sha512"],e):e(r.CryptoJS)})(Pg,function(r){return(function(){var e=r,t=e.x64,i=t.Word,n=t.WordArray,s=e.algo,a=s.SHA512,o=s.SHA384=a.extend({_doReset:function(){this._hash=new n.init([new i.init(3418070365,3238371032),new i.init(1654270250,914150663),new i.init(2438529370,812702999),new i.init(355462360,4144912697),new i.init(1731405415,4290775857),new i.init(2394180231,1750603025),new i.init(3675008525,1694076839),new i.init(1203062813,3204075428)])},_doFinalize:function(){var c=a._doFinalize.call(this);return c.sigBytes-=16,c}});e.SHA384=a._createHelper(o),e.HmacSHA384=a._createHmacHelper(o)})(),r.SHA384})});var YD=ae((Tg,VD)=>{(function(r,e,t){typeof Tg=="object"?VD.exports=Tg=e(lt(),Lf()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Tg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64,o=a.Word,c=t.algo,l=[],d=[],u=[];(function(){for(var g=1,p=0,I=0;I<24;I++){l[g+5*p]=(I+1)*(I+2)/2%64;var m=p%5,w=(2*g+3*p)%5;g=m,p=w}for(var g=0;g<5;g++)for(var p=0;p<5;p++)d[g+5*p]=p+(2*g+3*p)%5*5;for(var B=1,C=0;C<24;C++){for(var x=0,_=0,R=0;R<7;R++){if(B&1){var U=(1<>>24)&16711935|(B<<24|B>>>8)&4278255360,C=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360;var x=I[w];x.high^=C,x.low^=B}for(var _=0;_<24;_++){for(var R=0;R<5;R++){for(var U=0,T=0,D=0;D<5;D++){var x=I[R+5*D];U^=x.high,T^=x.low}var b=f[R];b.high=U,b.low=T}for(var R=0;R<5;R++)for(var Q=f[(R+4)%5],v=f[(R+1)%5],E=v.high,P=v.low,U=Q.high^(E<<1|P>>>31),T=Q.low^(P<<1|E>>>31),D=0;D<5;D++){var x=I[R+5*D];x.high^=U,x.low^=T}for(var N=1;N<25;N++){var U,T,x=I[N],j=x.high,z=x.low,L=l[N];L<32?(U=j<>>32-L,T=z<>>32-L):(U=z<>>64-L,T=j<>>64-L);var G=f[d[N]];G.high=U,G.low=T}var K=f[0],$=I[0];K.high=$.high,K.low=$.low;for(var R=0;R<5;R++)for(var D=0;D<5;D++){var N=R+5*D,x=I[N],te=f[N],re=f[(R+1)%5+5*D],ee=f[(R+2)%5+5*D];x.high=te.high^~re.high&ee.high,x.low=te.low^~re.low&ee.low}var x=I[0],Z=u[_];x.high^=Z.high,x.low^=Z.low}},_doFinalize:function(){var g=this._data,p=g.words,I=this._nDataBytes*8,m=g.sigBytes*8,w=this.blockSize*32;p[m>>>5]|=1<<24-m%32,p[(e.ceil((m+1)/w)*w>>>5)-1]|=128,g.sigBytes=p.length*4,this._process();for(var B=this._state,C=this.cfg.outputLength/8,x=C/8,_=[],R=0;R>>24)&16711935|(T<<24|T>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,_.push(D),_.push(T)}return new n.init(_,C)},clone:function(){for(var g=s.clone.call(this),p=g._state=this._state.slice(0),I=0;I<25;I++)p[I]=p[I].clone();return g}});t.SHA3=s._createHelper(A),t.HmacSHA3=s._createHmacHelper(A)})(Math),r.SHA3})});var XD=ae((Ug,WD)=>{(function(r,e){typeof Ug=="object"?WD.exports=Ug=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ug,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),d=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),A=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(C,x){for(var _=0;_<16;_++){var R=x+_,U=C[R];C[R]=(U<<8|U>>>24)&16711935|(U<<24|U>>>8)&4278255360}var T=this._hash.words,D=u.words,b=f.words,Q=o.words,v=c.words,E=l.words,P=d.words,N,j,z,L,G,K,$,te,re,ee;K=N=T[0],$=j=T[1],te=z=T[2],re=L=T[3],ee=G=T[4];for(var Z,_=0;_<80;_+=1)Z=N+C[x+Q[_]]|0,_<16?Z+=g(j,z,L)+D[0]:_<32?Z+=p(j,z,L)+D[1]:_<48?Z+=I(j,z,L)+D[2]:_<64?Z+=m(j,z,L)+D[3]:Z+=w(j,z,L)+D[4],Z=Z|0,Z=B(Z,E[_]),Z=Z+G|0,N=G,G=L,L=B(z,10),z=j,j=Z,Z=K+C[x+v[_]]|0,_<16?Z+=w($,te,re)+b[0]:_<32?Z+=m($,te,re)+b[1]:_<48?Z+=I($,te,re)+b[2]:_<64?Z+=p($,te,re)+b[3]:Z+=g($,te,re)+b[4],Z=Z|0,Z=B(Z,P[_]),Z=Z+ee|0,K=ee,ee=re,re=B(te,10),te=$,$=Z;Z=T[1]+z+re|0,T[1]=T[2]+L+ee|0,T[2]=T[3]+G+K|0,T[3]=T[4]+N+$|0,T[4]=T[0]+j+te|0,T[0]=Z},_doFinalize:function(){var C=this._data,x=C.words,_=this._nDataBytes*8,R=C.sigBytes*8;x[R>>>5]|=128<<24-R%32,x[(R+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,C.sigBytes=(x.length+1)*4,this._process();for(var U=this._hash,T=U.words,D=0;D<5;D++){var b=T[D];T[D]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360}return U},clone:function(){var C=s.clone.call(this);return C._hash=this._hash.clone(),C}});function g(C,x,_){return C^x^_}function p(C,x,_){return C&x|~C&_}function I(C,x,_){return(C|~x)^_}function m(C,x,_){return C&_|x&~_}function w(C,x,_){return C^(x|~_)}function B(C,x){return C<>>32-x}t.RIPEMD160=s._createHelper(A),t.HmacRIPEMD160=s._createHmacHelper(A)})(Math),r.RIPEMD160})});var Ng=ae((Rg,ZD)=>{(function(r,e){typeof Rg=="object"?ZD.exports=Rg=e(lt()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Rg,function(r){(function(){var e=r,t=e.lib,i=t.Base,n=e.enc,s=n.Utf8,a=e.algo,o=a.HMAC=i.extend({init:function(c,l){c=this._hasher=new c.init,typeof l=="string"&&(l=s.parse(l));var d=c.blockSize,u=d*4;l.sigBytes>u&&(l=c.finalize(l)),l.clamp();for(var f=this._oKey=l.clone(),A=this._iKey=l.clone(),g=f.words,p=A.words,I=0;I{(function(r,e,t){typeof Og=="object"?e_.exports=Og=e(lt(),_g(),Ng()):typeof define=="function"&&define.amd?define(["./core","./sha256","./hmac"],e):e(r.CryptoJS)})(Og,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,a=s.SHA256,o=s.HMAC,c=s.PBKDF2=i.extend({cfg:i.extend({keySize:128/32,hasher:a,iterations:25e4}),init:function(l){this.cfg=this.cfg.extend(l)},compute:function(l,d){for(var u=this.cfg,f=o.create(u.hasher,l),A=n.create(),g=n.create([1]),p=A.words,I=g.words,m=u.keySize,w=u.iterations;p.length{(function(r,e,t){typeof qg=="object"?r_.exports=qg=e(lt(),AE(),Ng()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],e):e(r.CryptoJS)})(qg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,a=s.MD5,o=s.EvpKDF=i.extend({cfg:i.extend({keySize:128/32,hasher:a,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,l){for(var d,u=this.cfg,f=u.hasher.create(),A=n.create(),g=A.words,p=u.keySize,I=u.iterations;g.length{(function(r,e,t){typeof Mg=="object"?i_.exports=Mg=e(lt(),ra()):typeof define=="function"&&define.amd?define(["./core","./evpkdf"],e):e(r.CryptoJS)})(Mg,function(r){r.lib.Cipher||(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,a=i.BufferedBlockAlgorithm,o=t.enc,c=o.Utf8,l=o.Base64,d=t.algo,u=d.EvpKDF,f=i.Cipher=a.extend({cfg:n.extend(),createEncryptor:function(b,Q){return this.create(this._ENC_XFORM_MODE,b,Q)},createDecryptor:function(b,Q){return this.create(this._DEC_XFORM_MODE,b,Q)},init:function(b,Q,v){this.cfg=this.cfg.extend(v),this._xformMode=b,this._key=Q,this.reset()},reset:function(){a.reset.call(this),this._doReset()},process:function(b){return this._append(b),this._process()},finalize:function(b){b&&this._append(b);var Q=this._doFinalize();return Q},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:(function(){function b(Q){return typeof Q=="string"?D:R}return function(Q){return{encrypt:function(v,E,P){return b(E).encrypt(Q,v,E,P)},decrypt:function(v,E,P){return b(E).decrypt(Q,v,E,P)}}}})()}),A=i.StreamCipher=f.extend({_doFinalize:function(){var b=this._process(!0);return b},blockSize:1}),g=t.mode={},p=i.BlockCipherMode=n.extend({createEncryptor:function(b,Q){return this.Encryptor.create(b,Q)},createDecryptor:function(b,Q){return this.Decryptor.create(b,Q)},init:function(b,Q){this._cipher=b,this._iv=Q}}),I=g.CBC=(function(){var b=p.extend();b.Encryptor=b.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize;Q.call(this,v,E,N),P.encryptBlock(v,E),this._prevBlock=v.slice(E,E+N)}}),b.Decryptor=b.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize,j=v.slice(E,E+N);P.decryptBlock(v,E),Q.call(this,v,E,N),this._prevBlock=j}});function Q(v,E,P){var N,j=this._iv;j?(N=j,this._iv=e):N=this._prevBlock;for(var z=0;z>>2]&255;b.sigBytes-=Q}},B=i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:I,padding:w}),reset:function(){var b;f.reset.call(this);var Q=this.cfg,v=Q.iv,E=Q.mode;this._xformMode==this._ENC_XFORM_MODE?b=E.createEncryptor:(b=E.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==b?this._mode.init(this,v&&v.words):(this._mode=b.call(E,this,v&&v.words),this._mode.__creator=b)},_doProcessBlock:function(b,Q){this._mode.processBlock(b,Q)},_doFinalize:function(){var b,Q=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(Q.pad(this._data,this.blockSize),b=this._process(!0)):(b=this._process(!0),Q.unpad(b)),b},blockSize:128/32}),C=i.CipherParams=n.extend({init:function(b){this.mixIn(b)},toString:function(b){return(b||this.formatter).stringify(this)}}),x=t.format={},_=x.OpenSSL={stringify:function(b){var Q,v=b.ciphertext,E=b.salt;return E?Q=s.create([1398893684,1701076831]).concat(E).concat(v):Q=v,Q.toString(l)},parse:function(b){var Q,v=l.parse(b),E=v.words;return E[0]==1398893684&&E[1]==1701076831&&(Q=s.create(E.slice(2,4)),E.splice(0,4),v.sigBytes-=16),C.create({ciphertext:v,salt:Q})}},R=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(b,Q,v,E){E=this.cfg.extend(E);var P=b.createEncryptor(v,E),N=P.finalize(Q),j=P.cfg;return C.create({ciphertext:N,key:v,iv:j.iv,algorithm:b,mode:j.mode,padding:j.padding,blockSize:b.blockSize,formatter:E.format})},decrypt:function(b,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=b.createDecryptor(v,E).finalize(Q.ciphertext);return P},_parse:function(b,Q){return typeof b=="string"?Q.parse(b,this):b}}),U=t.kdf={},T=U.OpenSSL={execute:function(b,Q,v,E,P){if(E||(E=s.random(64/8)),P)var N=u.create({keySize:Q+v,hasher:P}).compute(b,E);else var N=u.create({keySize:Q+v}).compute(b,E);var j=s.create(N.words.slice(Q),v*4);return N.sigBytes=Q*4,C.create({key:N,iv:j,salt:E})}},D=i.PasswordBasedCipher=R.extend({cfg:R.cfg.extend({kdf:T}),encrypt:function(b,Q,v,E){E=this.cfg.extend(E);var P=E.kdf.execute(v,b.keySize,b.ivSize,E.salt,E.hasher);E.iv=P.iv;var N=R.encrypt.call(this,b,Q,P.key,E);return N.mixIn(P),N},decrypt:function(b,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=E.kdf.execute(v,b.keySize,b.ivSize,Q.salt,E.hasher);E.iv=P.iv;var N=R.decrypt.call(this,b,Q,P.key,E);return N}})})()})});var s_=ae((Lg,n_)=>{(function(r,e,t){typeof Lg=="object"?n_.exports=Lg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Lg,function(r){return r.mode.CFB=(function(){var e=r.lib.BlockCipherMode.extend();e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,a=s.blockSize;t.call(this,i,n,a,s),this._prevBlock=i.slice(n,n+a)}}),e.Decryptor=e.extend({processBlock:function(i,n){var s=this._cipher,a=s.blockSize,o=i.slice(n,n+a);t.call(this,i,n,a,s),this._prevBlock=o}});function t(i,n,s,a){var o,c=this._iv;c?(o=c.slice(0),this._iv=void 0):o=this._prevBlock,a.encryptBlock(o,0);for(var l=0;l{(function(r,e,t){typeof Hg=="object"?a_.exports=Hg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Hg,function(r){return r.mode.CTR=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,a=s.blockSize,o=this._iv,c=this._counter;o&&(c=this._counter=o.slice(0),this._iv=void 0);var l=c.slice(0);s.encryptBlock(l,0),c[a-1]=c[a-1]+1|0;for(var d=0;d{(function(r,e,t){typeof Kg=="object"?c_.exports=Kg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Kg,function(r){return r.mode.CTRGladman=(function(){var e=r.lib.BlockCipherMode.extend();function t(s){if((s>>24&255)===255){var a=s>>16&255,o=s>>8&255,c=s&255;a===255?(a=0,o===255?(o=0,c===255?c=0:++c):++o):++a,s=0,s+=a<<16,s+=o<<8,s+=c}else s+=1<<24;return s}function i(s){return(s[0]=t(s[0]))===0&&(s[1]=t(s[1])),s}var n=e.Encryptor=e.extend({processBlock:function(s,a){var o=this._cipher,c=o.blockSize,l=this._iv,d=this._counter;l&&(d=this._counter=l.slice(0),this._iv=void 0),i(d);var u=d.slice(0);o.encryptBlock(u,0);for(var f=0;f{(function(r,e,t){typeof Gg=="object"?d_.exports=Gg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Gg,function(r){return r.mode.OFB=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,a=s.blockSize,o=this._iv,c=this._keystream;o&&(c=this._keystream=o.slice(0),this._iv=void 0),s.encryptBlock(c,0);for(var l=0;l{(function(r,e,t){typeof zg=="object"?f_.exports=zg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(zg,function(r){return r.mode.ECB=(function(){var e=r.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(t,i){this._cipher.encryptBlock(t,i)}}),e.Decryptor=e.extend({processBlock:function(t,i){this._cipher.decryptBlock(t,i)}}),e})(),r.mode.ECB})});var g_=ae((Jg,A_)=>{(function(r,e,t){typeof Jg=="object"?A_.exports=Jg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Jg,function(r){return r.pad.AnsiX923={pad:function(e,t){var i=e.sigBytes,n=t*4,s=n-i%n,a=i+s-1;e.clamp(),e.words[a>>>2]|=s<<24-a%4*8,e.sigBytes+=s},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Ansix923})});var m_=ae((jg,p_)=>{(function(r,e,t){typeof jg=="object"?p_.exports=jg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(jg,function(r){return r.pad.Iso10126={pad:function(e,t){var i=t*4,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Iso10126})});var I_=ae(($g,y_)=>{(function(r,e,t){typeof $g=="object"?y_.exports=$g=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})($g,function(r){return r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971})});var x_=ae((Vg,w_)=>{(function(r,e,t){typeof Vg=="object"?w_.exports=Vg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Vg,function(r){return r.pad.ZeroPadding={pad:function(e,t){var i=t*4;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){for(var t=e.words,i=e.sigBytes-1,i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},r.pad.ZeroPadding})});var E_=ae((Yg,C_)=>{(function(r,e,t){typeof Yg=="object"?C_.exports=Yg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Yg,function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding})});var b_=ae((Wg,B_)=>{(function(r,e,t){typeof Wg=="object"?B_.exports=Wg=e(lt(),Cr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Wg,function(r){return(function(e){var t=r,i=t.lib,n=i.CipherParams,s=t.enc,a=s.Hex,o=t.format,c=o.Hex={stringify:function(l){return l.ciphertext.toString(a)},parse:function(l){var d=a.parse(l);return n.create({ciphertext:d})}}})(),r.format.Hex})});var k_=ae((Xg,v_)=>{(function(r,e,t){typeof Xg=="object"?v_.exports=Xg=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Xg,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo,s=[],a=[],o=[],c=[],l=[],d=[],u=[],f=[],A=[],g=[];(function(){for(var m=[],w=0;w<256;w++)w<128?m[w]=w<<1:m[w]=w<<1^283;for(var B=0,C=0,w=0;w<256;w++){var x=C^C<<1^C<<2^C<<3^C<<4;x=x>>>8^x&255^99,s[B]=x,a[x]=B;var _=m[B],R=m[_],U=m[R],T=m[x]*257^x*16843008;o[B]=T<<24|T>>>8,c[B]=T<<16|T>>>16,l[B]=T<<8|T>>>24,d[B]=T;var T=U*16843009^R*65537^_*257^B*16843008;u[x]=T<<24|T>>>8,f[x]=T<<16|T>>>16,A[x]=T<<8|T>>>24,g[x]=T,B?(B=_^m[m[m[U^_]]],C^=m[m[C]]):B=C=1}})();var p=[0,1,2,4,8,16,32,64,128,27,54],I=n.AES=i.extend({_doReset:function(){var m;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var w=this._keyPriorReset=this._key,B=w.words,C=w.sigBytes/4,x=this._nRounds=C+6,_=(x+1)*4,R=this._keySchedule=[],U=0;U<_;U++)U6&&U%C==4&&(m=s[m>>>24]<<24|s[m>>>16&255]<<16|s[m>>>8&255]<<8|s[m&255]):(m=m<<8|m>>>24,m=s[m>>>24]<<24|s[m>>>16&255]<<16|s[m>>>8&255]<<8|s[m&255],m^=p[U/C|0]<<24),R[U]=R[U-C]^m);for(var T=this._invKeySchedule=[],D=0;D<_;D++){var U=_-D;if(D%4)var m=R[U];else var m=R[U-4];D<4||U<=4?T[D]=m:T[D]=u[s[m>>>24]]^f[s[m>>>16&255]]^A[s[m>>>8&255]]^g[s[m&255]]}}},encryptBlock:function(m,w){this._doCryptBlock(m,w,this._keySchedule,o,c,l,d,s)},decryptBlock:function(m,w){var B=m[w+1];m[w+1]=m[w+3],m[w+3]=B,this._doCryptBlock(m,w,this._invKeySchedule,u,f,A,g,a);var B=m[w+1];m[w+1]=m[w+3],m[w+3]=B},_doCryptBlock:function(m,w,B,C,x,_,R,U){for(var T=this._nRounds,D=m[w]^B[0],b=m[w+1]^B[1],Q=m[w+2]^B[2],v=m[w+3]^B[3],E=4,P=1;P>>24]^x[b>>>16&255]^_[Q>>>8&255]^R[v&255]^B[E++],j=C[b>>>24]^x[Q>>>16&255]^_[v>>>8&255]^R[D&255]^B[E++],z=C[Q>>>24]^x[v>>>16&255]^_[D>>>8&255]^R[b&255]^B[E++],L=C[v>>>24]^x[D>>>16&255]^_[b>>>8&255]^R[Q&255]^B[E++];D=N,b=j,Q=z,v=L}var N=(U[D>>>24]<<24|U[b>>>16&255]<<16|U[Q>>>8&255]<<8|U[v&255])^B[E++],j=(U[b>>>24]<<24|U[Q>>>16&255]<<16|U[v>>>8&255]<<8|U[D&255])^B[E++],z=(U[Q>>>24]<<24|U[v>>>16&255]<<16|U[D>>>8&255]<<8|U[b&255])^B[E++],L=(U[v>>>24]<<24|U[D>>>16&255]<<16|U[b>>>8&255]<<8|U[Q&255])^B[E++];m[w]=N,m[w+1]=j,m[w+2]=z,m[w+3]=L},keySize:256/32});e.AES=i._createHelper(I)})(),r.AES})});var D_=ae((Zg,S_)=>{(function(r,e,t){typeof Zg=="object"?S_.exports=Zg=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Zg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],d=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var p=this._key,I=p.words,m=[],w=0;w<56;w++){var B=a[w]-1;m[w]=I[B>>>5]>>>31-B%32&1}for(var C=this._subKeys=[],x=0;x<16;x++){for(var _=C[x]=[],R=c[x],w=0;w<24;w++)_[w/6|0]|=m[(o[w]-1+R)%28]<<31-w%6,_[4+(w/6|0)]|=m[28+(o[w+24]-1+R)%28]<<31-w%6;_[0]=_[0]<<1|_[0]>>>31;for(var w=1;w<7;w++)_[w]=_[w]>>>(w-1)*4+3;_[7]=_[7]<<5|_[7]>>>27}for(var U=this._invSubKeys=[],w=0;w<16;w++)U[w]=C[15-w]},encryptBlock:function(p,I){this._doCryptBlock(p,I,this._subKeys)},decryptBlock:function(p,I){this._doCryptBlock(p,I,this._invSubKeys)},_doCryptBlock:function(p,I,m){this._lBlock=p[I],this._rBlock=p[I+1],f.call(this,4,252645135),f.call(this,16,65535),A.call(this,2,858993459),A.call(this,8,16711935),f.call(this,1,1431655765);for(var w=0;w<16;w++){for(var B=m[w],C=this._lBlock,x=this._rBlock,_=0,R=0;R<8;R++)_|=l[R][((x^B[R])&d[R])>>>0];this._lBlock=x,this._rBlock=C^_}var U=this._lBlock;this._lBlock=this._rBlock,this._rBlock=U,f.call(this,1,1431655765),A.call(this,8,16711935),A.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),p[I]=this._lBlock,p[I+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(p,I){var m=(this._lBlock>>>p^this._rBlock)&I;this._rBlock^=m,this._lBlock^=m<>>p^this._lBlock)&I;this._lBlock^=m,this._rBlock^=m<192.");var m=I.slice(0,2),w=I.length<4?I.slice(0,2):I.slice(2,4),B=I.length<6?I.slice(0,2):I.slice(4,6);this._des1=u.createEncryptor(i.create(m)),this._des2=u.createEncryptor(i.create(w)),this._des3=u.createEncryptor(i.create(B))},encryptBlock:function(p,I){this._des1.encryptBlock(p,I),this._des2.decryptBlock(p,I),this._des3.encryptBlock(p,I)},decryptBlock:function(p,I){this._des3.decryptBlock(p,I),this._des2.encryptBlock(p,I),this._des1.decryptBlock(p,I)},keySize:192/32,ivSize:64/32,blockSize:64/32});e.TripleDES=n._createHelper(g)})(),r.TripleDES})});var Q_=ae((ep,__)=>{(function(r,e,t){typeof ep=="object"?__.exports=ep=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(ep,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=n.RC4=i.extend({_doReset:function(){for(var c=this._key,l=c.words,d=c.sigBytes,u=this._S=[],f=0;f<256;f++)u[f]=f;for(var f=0,A=0;f<256;f++){var g=f%d,p=l[g>>>2]>>>24-g%4*8&255;A=(A+u[f]+p)%256;var I=u[f];u[f]=u[A],u[A]=I}this._i=this._j=0},_doProcessBlock:function(c,l){c[l]^=a.call(this)},keySize:256/32,ivSize:0});function a(){for(var c=this._S,l=this._i,d=this._j,u=0,f=0;f<4;f++){l=(l+1)%256,d=(d+c[l])%256;var A=c[l];c[l]=c[d],c[d]=A,u|=c[(c[l]+c[d])%256]<<24-f*8}return this._i=l,this._j=d,u}e.RC4=i._createHelper(s);var o=n.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var c=this.cfg.drop;c>0;c--)a.call(this)}});e.RC4Drop=i._createHelper(o)})(),r.RC4})});var P_=ae((tp,F_)=>{(function(r,e,t){typeof tp=="object"?F_.exports=tp=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(tp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],a=[],o=[],c=n.Rabbit=i.extend({_doReset:function(){for(var d=this._key.words,u=this.cfg.iv,f=0;f<4;f++)d[f]=(d[f]<<8|d[f]>>>24)&16711935|(d[f]<<24|d[f]>>>8)&4278255360;var A=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],g=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var f=0;f<4;f++)l.call(this);for(var f=0;f<8;f++)g[f]^=A[f+4&7];if(u){var p=u.words,I=p[0],m=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,B=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,C=w>>>16|B&4294901760,x=B<<16|w&65535;g[0]^=w,g[1]^=C,g[2]^=B,g[3]^=x,g[4]^=w,g[5]^=C,g[6]^=B,g[7]^=x;for(var f=0;f<4;f++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var A=0;A<4;A++)s[A]=(s[A]<<8|s[A]>>>24)&16711935|(s[A]<<24|s[A]>>>8)&4278255360,d[u+A]^=s[A]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)a[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var A=d[f]+u[f],g=A&65535,p=A>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,m=((A&4294901760)*A|0)+((A&65535)*A|0);o[f]=I^m}d[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,d[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,d[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,d[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,d[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,d[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,d[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,d[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=i._createHelper(c)})(),r.Rabbit})});var U_=ae((rp,T_)=>{(function(r,e,t){typeof rp=="object"?T_.exports=rp=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(rp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],a=[],o=[],c=n.RabbitLegacy=i.extend({_doReset:function(){var d=this._key.words,u=this.cfg.iv,f=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],A=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var g=0;g<4;g++)l.call(this);for(var g=0;g<8;g++)A[g]^=f[g+4&7];if(u){var p=u.words,I=p[0],m=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,B=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,C=w>>>16|B&4294901760,x=B<<16|w&65535;A[0]^=w,A[1]^=C,A[2]^=B,A[3]^=x,A[4]^=w,A[5]^=C,A[6]^=B,A[7]^=x;for(var g=0;g<4;g++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var A=0;A<4;A++)s[A]=(s[A]<<8|s[A]>>>24)&16711935|(s[A]<<24|s[A]>>>8)&4278255360,d[u+A]^=s[A]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)a[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var A=d[f]+u[f],g=A&65535,p=A>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,m=((A&4294901760)*A|0)+((A&65535)*A|0);o[f]=I^m}d[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,d[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,d[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,d[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,d[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,d[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,d[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,d[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=i._createHelper(c)})(),r.RabbitLegacy})});var N_=ae((ip,R_)=>{(function(r,e,t){typeof ip=="object"?R_.exports=ip=e(lt(),fo(),ho(),ra(),Cr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(ip,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo;let s=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var c={pbox:[],sbox:[]};function l(g,p){let I=p>>24&255,m=p>>16&255,w=p>>8&255,B=p&255,C=g.sbox[0][I]+g.sbox[1][m];return C=C^g.sbox[2][w],C=C+g.sbox[3][B],C}function d(g,p,I){let m=p,w=I,B;for(let C=0;C1;--C)m=m^g.pbox[C],w=l(g,m)^w,B=m,m=w,w=B;return B=m,m=w,w=B,w=w^g.pbox[1],m=m^g.pbox[0],{left:m,right:w}}function f(g,p,I){for(let x=0;x<4;x++){g.sbox[x]=[];for(let _=0;_<256;_++)g.sbox[x][_]=o[x][_]}let m=0;for(let x=0;x=I&&(m=0);let w=0,B=0,C=0;for(let x=0;x{(function(r,e,t){typeof np=="object"?O_.exports=np=e(lt(),Lf(),UD(),ND(),fo(),MD(),ho(),AE(),_g(),zD(),gE(),$D(),YD(),XD(),Ng(),t_(),ra(),Cr(),s_(),o_(),l_(),u_(),h_(),g_(),m_(),I_(),x_(),E_(),b_(),k_(),D_(),Q_(),P_(),U_(),N_()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy","./blowfish"],e):r.CryptoJS=e(r.CryptoJS)})(np,function(r){return r})});function Ed(r){let e=[];for(let t=0;t>>2]|=r[t]<<24-t%4*8;return go.default.lib.WordArray.create(e,r.length)}function q_(r){let e=Number(r?.sigBytes??0),t=r?.words??[],i=new Uint8Array(e);for(let n=0;n>>2]>>>24-n%4*8&255;return i}function L_(r,e,t){if(t.length!==M_)throw new Error("DES IV must be 8 bytes");let i=go.default.TripleDES.encrypt(Ed(r),Ed(e),{iv:Ed(t),mode:go.default.mode.CBC,padding:go.default.pad.Pkcs7});return q_(i.ciphertext)}function H_(r,e,t){if(t.length!==M_)throw new Error("DES IV must be 8 bytes");let i=go.default.TripleDES.decrypt({ciphertext:Ed(r)},Ed(e),{iv:Ed(t),mode:go.default.mode.CBC,padding:go.default.pad.Pkcs7});return q_(i)}var go,M_,K_=J(()=>{"use strict";go=Qr(Ao(),1);M_=8});function ia(r){return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}function Er(r){return typeof r=="string"?new TextEncoder().encode(r):r}function Si(r){let e=new Uint8Array(r.length/2);for(let t=0;t>>0,!0),a.setUint32(s.length-4,Math.floor(i/4294967296),!0);let o=new Int32Array(64);for(let g=0;g<64;g++)o[g]=Math.abs(Math.sin(g+1))*4294967296|0;let c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],l=1732584193,d=4023233417,u=2562383102,f=271733878;for(let g=0;gp.getInt32(_*4,!0)),[m,w,B,C]=[l,d,u,f];for(let x=0;x<64;x++){let _,R;x<16?(_=w&B|~w&C,R=x):x<32?(_=C&w|~C&B,R=(5*x+1)%16):x<48?(_=w^B^C,R=(3*x+5)%16):(_=B^(w|~C),R=7*x%16);let U=C;C=B,B=w;let T=m+_+o[x]+I[R]|0;w=w+(T<>>32-c[x])|0,m=U}l=l+m|0,d=d+w|0,u=u+B|0,f=f+C|0}let A=new DataView(new ArrayBuffer(16));return A.setInt32(0,l,!0),A.setInt32(4,d,!0),A.setInt32(8,u,!0),A.setInt32(12,f,!0),ia(A.buffer)}function nr(r){return tz(r)}async function mo(r){let e=await crypto.subtle.digest("SHA-1",Er(r));return ia(e)}async function $_(r){let e=await crypto.subtle.digest("SHA-256",Er(r));return ia(e)}async function mE(r,e){let t=await crypto.subtle.importKey("raw",Er(e),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Er(r));return ia(i)}async function Gf(r,e){let t=await crypto.subtle.importKey("raw",Er(e),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Er(r)),n=new Uint8Array(i),s="";for(let a of n)s+=String.fromCharCode(a);return btoa(s)}async function V_(r,e="salt",t=yE){let i=Er(r),n=Er(e),s=await crypto.subtle.importKey("raw",i,"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:n,iterations:t,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function rz(r,e){let t=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),n=await V_(e,t,yE),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},n,Er(r));return`${ia(t.buffer)}:${ia(i.buffer)}:${ia(s)}`}async function iz(r,e){let t=r.split(":"),i="salt",n="",s="",a=1;if(t.length===3)i=Si(t[0]),n=t[1],s=t[2],a=yE;else if(t.length===2)n=t[0],s=t[1],a=1,G_||(G_=!0,console.warn("[Crypto] Decrypting legacy weak-KDF format. It will be re-encrypted with the current config format on the next save."));else throw new Error("Invalid encrypted data format");let o=Si(n),c=Si(s),l=await V_(e,i,a),d=await crypto.subtle.decrypt({name:"AES-GCM",iv:o},l,c);return new TextDecoder().decode(d)}async function nz(r){let e=await crypto.subtle.importKey("raw",Er(r),"HKDF",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:Er("openlist-config-encryption-v2"),info:Er("AES-256-GCM")},e,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function sz(r,e){let t=crypto.getRandomValues(new Uint8Array(12)),i=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},e,Er(r));return`${ia(t.buffer)}:${ia(i)}`}async function az(r,e){let t=r.split(":");if(t.length!==2)throw new Error("Invalid config encrypted data format");let i=Si(t[0]),n=Si(t[1]),s=await crypto.subtle.decrypt({name:"AES-GCM",iv:i},e,n);return new TextDecoder().decode(s)}async function IE(r,e,t){let i=Er(e),n=t?Er(t):i,s=await crypto.subtle.importKey("raw",i,{name:"AES-CBC"},!1,["encrypt"]),a=Er(r),c=typeof process<"u"&&process?.release?.name==="node"?a:i3(a),l=await crypto.subtle.encrypt({name:"AES-CBC",iv:n},s,c),d=new Uint8Array(l),u="";for(let f of d)u+=String.fromCharCode(f);return btoa(u)}function W_(r){let e=String(r??"").trim().toLowerCase();if(!e)return{cipher:Kf,known:!0};let t=cz[e];return t?{cipher:t,known:!0}:{cipher:Kf,known:!1}}function X_(r){return r==="none"?"":`enc:v${lz[r]}:`}function yo(r){if(typeof r!="string")return null;let e=uz.exec(r);if(!e)return null;let t=dz[Number(e[1])];return t?{cipher:t,prefix:e[0]}:null}function Hc(r){return yo(r)!==null}function ds(r){let e="";for(let t of r)e+=t.toString(16).padStart(2,"0");return e}function zf(r,e){let t=new Uint8Array(r.length+e.length);return t.set(r,0),t.set(e,r.length),t}function Z_(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i=Az){let s=Lc.keys().next().value;s!==void 0&&Lc.delete(s)}return Lc.set(i,n),n}function e3(){Lc.clear(),pE=!1}async function t3(r){let e=await crypto.subtle.digest("SHA-256",Er(r));return new Uint8Array(e)}async function Hf(r,e,t){return(await t3(`${e}|${r}`)).slice(0,t)}async function z_(r){return crypto.subtle.importKey("raw",r,{name:"HMAC",hash:"SHA-256"},!1,["sign"])}async function sp(r,e){return new Uint8Array(await crypto.subtle.sign("HMAC",r,e))}function gz(r){let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,r.length,!1),zf(e,r)}function pz(r){if(r.length<4)throw new Error("Invalid encrypted data format");let e=new DataView(r.buffer,r.byteOffset,4).getUint32(0,!1);if(e>r.length-4)throw new Error("Invalid encrypted data length");return r.slice(4,4+e)}async function mz(r,e){let t=await crypto.subtle.digest("SHA-256",Er(`${e}|${r}`));return crypto.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"])}async function yz(r,e){let t=await crypto.subtle.digest("SHA-256",Er(`${e}|${r}`));return crypto.subtle.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!1,["sign"])}async function Iz(r,e){let t=crypto.getRandomValues(new Uint8Array(16)),i=i3(gz(wE(r))),n=await crypto.subtle.encrypt({name:"AES-CBC",iv:t},e.enc,i),s=new Uint8Array(n),a=await sp(e.mac,zf(t,s));return`${ds(t)}:${ds(s)}:${ds(a)}`}async function wz(r,e){let t=r.split(":");if(t.length!==3)throw new Error("Invalid encrypted data format");let i=Si(t[0]),n=Si(t[1]),s=Si(t[2]),a=await sp(e.mac,zf(i,n));if(!Z_(a,s))throw new Error("Encrypted data failed integrity check (wrong key?)");let o=await crypto.subtle.decrypt({name:"AES-CBC",iv:i},e.enc,n);return new TextDecoder().decode(pz(new Uint8Array(o)))}async function Cz(r,e){let t=crypto.getRandomValues(new Uint8Array(12)),{ciphertext:i,tag:n}=DD(e,t,wE(r));return`${ds(t)}:${ds(i)}:${ds(n)}`}async function Ez(r,e){let t=r.split(":");if(t.length!==3)throw new Error("Invalid encrypted data format");let i=Si(t[0]),n=Si(t[1]),s=Si(t[2]);return new TextDecoder().decode(_D(e,i,n,s))}async function J_(r,e,t){let i=crypto.getRandomValues(new Uint8Array(8)),n=L_(wE(r),e,i),s=await sp(t,zf(i,n));return`${ds(i)}:${ds(n)}:${ds(s)}`}async function j_(r,e,t){let i=r.split(":");if(i.length!==3)throw new Error("Invalid encrypted data format");let n=Si(i[0]),s=Si(i[1]),a=Si(i[2]),o=await sp(t,zf(n,s));if(!Z_(o,a))throw new Error("Encrypted data failed integrity check (wrong key?)");return new TextDecoder().decode(H_(s,e,n))}async function r3(r,e){r!=="none"&&oz.includes(r)&&!pE&&(pE=!0,console.warn(`[Crypto] DB_CIPHER=${r} is for compatibility only: single DES (56-bit) is brute-forceable and 3DES is deprecated (NIST SP 800-131A). Use aes-256-gcm or chacha20-poly1305 for real data.`));let t=r==="none"?"none":await po(`fp:${r}`,e,async()=>{let d=await t3(`openlist-db-cipher-fp|${r}|${e}`);return ds(d).slice(0,16)}),i=()=>po("v2",e,()=>nz(e)),n=()=>po("v3",e,async()=>({enc:await mz(e,fz),mac:await yz(e,hz)})),s=()=>po("v4",e,()=>Hf(e,xz,32)),a=()=>po("v5",e,()=>Hf(e,Bz,8)),o=()=>po("v6",e,()=>Hf(e,bz,24)),c=()=>po("v5-mac",e,async()=>z_(await Hf(e,vz,32))),l=()=>po("v6-mac",e,async()=>z_(await Hf(e,kz,32)));return{cipher:r,fingerprint:t,async encrypt(d){switch(r){case"none":return d;case"aes-256-gcm":return await sz(d,await i());case"aes-256-gcm-pbkdf2":return await rz(d,e);case"aes-256-cbc-hmac":return await Iz(d,await n());case"chacha20-poly1305":return await Cz(d,await s());case"des-cbc-hmac":return await J_(d,await a(),await c());case"3des-cbc-hmac":return await J_(d,await o(),await l());default:throw new Error(`Unsupported DB_CIPHER: ${String(r)}`)}},async decrypt(d){let u=yo(d);if(!u)return d;let f=d.slice(u.prefix.length);switch(u.cipher){case"aes-256-gcm":return await az(f,await i());case"aes-256-gcm-pbkdf2":return await iz(f,e);case"aes-256-cbc-hmac":return await wz(f,await n());case"chacha20-poly1305":return await Ez(f,await s());case"des-cbc-hmac":return await j_(f,await a(),await c());case"3des-cbc-hmac":return await j_(f,await o(),await l());default:throw new Error(`Unsupported ciphertext: ${String(u.cipher)}`)}}}}function i3(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}var yE,G_,Kf,Y_,oz,cz,lz,dz,uz,fz,hz,Az,Lc,pE,xz,Bz,bz,vz,kz,ti=J(()=>{"use strict";QD();K_();yE=1e5,G_=!1;Kf="none",Y_=["none","aes-256-gcm","aes-256-gcm-pbkdf2","aes-256-cbc-hmac","chacha20-poly1305","des-cbc-hmac","3des-cbc-hmac"],oz=["des-cbc-hmac","3des-cbc-hmac"],cz={none:"none",off:"none",no:"none",plain:"none",plaintext:"none","aes-256-gcm":"aes-256-gcm","aes-gcm":"aes-256-gcm",aesgcm:"aes-256-gcm","aes-256-gcm-hkdf":"aes-256-gcm","gcm-hkdf":"aes-256-gcm",hkdf:"aes-256-gcm",gcm:"aes-256-gcm",v2:"aes-256-gcm","aes-256-gcm-pbkdf2":"aes-256-gcm-pbkdf2","aes-gcm-pbkdf2":"aes-256-gcm-pbkdf2",pbkdf2:"aes-256-gcm-pbkdf2",legacy:"aes-256-gcm-pbkdf2",v1:"aes-256-gcm-pbkdf2","aes-256-cbc-hmac":"aes-256-cbc-hmac","aes-cbc-hmac":"aes-256-cbc-hmac","cbc-hmac":"aes-256-cbc-hmac","aes-256-cbc":"aes-256-cbc-hmac",cbc:"aes-256-cbc-hmac",v3:"aes-256-cbc-hmac","chacha20-poly1305":"chacha20-poly1305",chacha20:"chacha20-poly1305",chacha:"chacha20-poly1305","chacha20-ietf-poly1305":"chacha20-poly1305","aead-chacha20":"chacha20-poly1305",v4:"chacha20-poly1305","des-cbc-hmac":"des-cbc-hmac","des-cbc":"des-cbc-hmac",des:"des-cbc-hmac",v5:"des-cbc-hmac","3des-cbc-hmac":"3des-cbc-hmac","3des-cbc":"3des-cbc-hmac","3des":"3des-cbc-hmac",des3:"3des-cbc-hmac",tripledes:"3des-cbc-hmac","triple-des":"3des-cbc-hmac",v6:"3des-cbc-hmac"};lz={"aes-256-gcm-pbkdf2":1,"aes-256-gcm":2,"aes-256-cbc-hmac":3,"chacha20-poly1305":4,"des-cbc-hmac":5,"3des-cbc-hmac":6},dz={1:"aes-256-gcm-pbkdf2",2:"aes-256-gcm",3:"aes-256-cbc-hmac",4:"chacha20-poly1305",5:"des-cbc-hmac",6:"3des-cbc-hmac"},uz=/^enc:v(\d+):/;fz="openlist-db-cipher-v3-enc",hz="openlist-db-cipher-v3-mac";Az=8,Lc=new Map;pE=!1;xz="openlist-db-cipher-v4-chacha20";Bz="openlist-db-cipher-v5-des",bz="openlist-db-cipher-v6-3des",vz="openlist-db-cipher-v5-des-mac",kz="openlist-db-cipher-v6-3des-mac"});function Bd(r,e){if(typeof r!="string")return null;let t=r.trim();if(!t)return null;let i;try{i=new URL(t)}catch{return null}if(i.protocol!=="http:"&&i.protocol!=="https:"||!i.hostname)return null;let n=e?.EO_KV_URLS;return!(typeof n=="string"&&n.trim()===t)&&!(i.hostname==="localhost"||i.hostname==="127.0.0.1"||i.hostname==="[::1]")&&i.protocol!=="https:"?(console.warn(`[DB] Rejecting non-HTTPS proxy origin derived from request: ${i.protocol}//${i.hostname} (would leak X-Internal-Call in clear text)`),null):`${i.protocol}//${i.host}`.replace(/\/$/,"")}var ap=J(()=>{"use strict"});var SE=ae((uAe,C3)=>{"use strict";var kE=Object.defineProperty,Sz=Object.getOwnPropertyDescriptor,Dz=Object.getOwnPropertyNames,_z=Object.prototype.hasOwnProperty,Qz=(r,e)=>{for(var t in e)kE(r,t,{get:e[t],enumerable:!0})},Fz=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Dz(e))!_z.call(r,n)&&n!==t&&kE(r,n,{get:()=>e[n],enumerable:!(i=Sz(e,n))||i.enumerable});return r},Pz=r=>Fz(kE({},"__esModule",{value:!0}),r),f3={};Qz(f3,{InvalidKeyError:()=>op,InvalidStoreNameError:()=>Wf,MissingProjectIdError:()=>h3,PagesBlobError:()=>us,PreconditionFailedError:()=>BE,QuotaExceededError:()=>Tz,RateLimitedError:()=>Uz,Store:()=>A3,getStore:()=>eJ,listStores:()=>tJ});C3.exports=Pz(f3);var us=class extends Error{code;constructor(r,e){super(`PagesBlob: ${e}`),this.name="PagesBlobError",this.code=r}},op=class extends us{constructor(r){super("INVALID_KEY",r)}},Wf=class extends us{constructor(r){super("INVALID_STORE_NAME",r)}},xE=class extends us{constructor(r){super("MISSING_ENVIRONMENT",`Environment not configured for Pages Blob. Missing: ${r.join(", ")}. Supply these properties when creating a store, or ensure the function is running in a Pages environment.`)}},Tz=class extends us{constructor(){super("QUOTA_EXCEEDED","storage quota exceeded")}},Uz=class extends us{constructor(){super("RATE_LIMITED","request rate limited, please retry later")}},h3=class extends us{constructor(){super("MISSING_PROJECT_ID","projectId is required when using API token mode. Please supply { name, projectId, token } to getStore() / listStores().")}},Io=class extends us{constructor(r){super("CREDENTIAL_ERROR",r)}},ri=class extends us{constructor(r,e){super("COS_ERROR",`COS returned ${r}: ${e}`)}},BE=class extends us{constructor(){super("PRECONDITION_FAILED","conditional write failed (key already exists)")}};function Kc(r){if(r==="")throw new op("Blob key must not be empty.");if(r.startsWith("/")||r.startsWith("%2F"))throw new op("Blob key must not start with forward slash (/).");if(new TextEncoder().encode(r).length>600)throw new op("Blob key must be a sequence of Unicode characters whose UTF-8 encoding is at most 600 bytes long.")}function Rz(r){if(r==="")throw new Wf("Store name must not be empty.");if(r.includes("/")||r.includes(":"))throw new Wf("Store name must not contain forward slashes (/) or colons (:).");if(!/^[a-zA-Z0-9_-]+$/.test(r))throw new Wf("Store name must only contain letters, digits, underscores, and hyphens.");if(new TextEncoder().encode(r).length>64)throw new Wf("Store name must be a sequence of Unicode characters whose UTF-8 encoding is at most 64 bytes long.")}var A3=class{cosClient;storeName;defaultConsistency;constructor(r,e,t="eventual"){this.cosClient=r,this.storeName=e,this.defaultConsistency=t}resolveConsistency(r){return r??this.defaultConsistency}async set(r,e,t){Kc(r);let i=await this.cosClient.putObject(this.storeName,r,e,{onlyIfNew:t?.onlyIfNew,cacheControl:t?.cacheControl});if(t?.onlyIfNew&&i.statusCode===412)throw new BE}async setJSON(r,e,t){Kc(r);let i=JSON.stringify(e),n=await this.cosClient.putObject(this.storeName,r,i,{onlyIfNew:t?.onlyIfNew,contentType:"application/json",cacheControl:t?.cacheControl});if(t?.onlyIfNew&&n.statusCode===412)throw new BE}async createUploadUrl(r,e){Kc(r);let{url:t,expiresAt:i}=await this.cosClient.createPresignedPutUrl(this.storeName,r,{expireSeconds:e?.expireSeconds,contentType:e?.contentType});return{url:t,key:r,expiresAt:i}}async get(r,e){Kc(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);if(i===null)return null;let{body:n}=i,s=e?.type??"text",a=new TextDecoder("utf-8");switch(s){case"text":return a.decode(n);case"json":return JSON.parse(a.decode(n));case"arrayBuffer":return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);case"blob":return new Blob([n]);case"stream":return new ReadableStream({start(o){o.enqueue(n),o.close()}});default:return a.decode(n)}}async getMetadata(r,e){Kc(r);let t=this.resolveConsistency(e?.consistency);return this.cosClient.headObject(this.storeName,r,t)}async getWithHeaders(r,e){Kc(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);return i?{body:new TextDecoder("utf-8").decode(i.body),headers:i.headers||{}}:null}async delete(r){Kc(r),await this.cosClient.deleteObject(this.storeName,r)}async list(r){let e=r?.paginate!==!1,t=r?.limit,i=[],n=[],s=this.resolveConsistency(r?.consistency),a=r?.cursor||"",o=!0,c;for(;o;){let l=t!==void 0?t-i.length:1e3,d=Math.min(l,1e3);if(d<=0)break;let u=await this.cosClient.listObjects(this.storeName,{prefix:r?.prefix,delimiter:r?.directories?"/":void 0,marker:a||void 0,maxKeys:d,consistency:s});for(let f of u.contents)i.push({key:f.key,etag:f.etag});n.push(...u.commonPrefixes),t!==void 0&&i.length>=t?(i.length=t,(u.isTruncated||u.contents.length===d)&&(c=u.nextMarker),o=!1):u.isTruncated?!e&&t===void 0?(c=u.nextMarker,o=!1):a=u.nextMarker:o=!1}return{blobs:i,directories:n,...c?{cursor:c}:{}}}},Nz=new TextEncoder;function bE(r){let e=Nz.encode(r),t=new ArrayBuffer(e.byteLength),i=new Uint8Array(t);return i.set(e),i}function g3(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i"%"+e.charCodeAt(0).toString(16).toUpperCase())}function lp(r){try{return decodeURIComponent(r)}catch{return r}}function p3(r){return r.split("/").map(e=>lp(e)).join("/")}function m3(r){return r.split("/").map(e=>cp(lp(e))).join("/")}var qz=new Set(["cache-control","content-disposition","content-encoding","content-length","content-md5","content-type","expect","expires","if-match","if-modified-since","if-none-match","if-unmodified-since","origin","range","transfer-encoding"]);function Mz(r){return r==="host"||r==="x-cos-security-token"?!1:!!(qz.has(r)||r.startsWith("x-cos-"))}function s3(r){if(!r)return[];let e=[];for(let[t,i]of Object.entries(r))i!=null&&e.push([t.toLowerCase(),String(i)]);return e.sort(([t],[i])=>ti?1:0),e}function a3(r){return r.map(([e,t])=>`${cp(e)}=${cp(t)}`).join("&")}function o3(r){return r.map(([e])=>cp(e)).join(";")}async function y3(r){let e=r.method.toLowerCase(),t=r.pathname.startsWith("/")?r.pathname:`/${r.pathname}`,i=Math.floor(Date.now()/1e3),n=i+(r.expireSeconds??3600),s=`${i};${n}`,a=s3(r.headers).filter(([w])=>Mz(w)),o=o3(a),c=a3(a),l=s3(r.query),d=o3(l),u=a3(l),f=`${e} ${t} ${u} ${c} -`,h=`sha1 +`,A=`sha1 ${s} -${await fH(f)} -`,g=await yk(r.secretKey,s),p=await yk(g,h),I=["q-sign-algorithm=sha1",`q-ak=${r.secretId}`,`q-sign-time=${s}`,`q-key-time=${s}`,`q-header-list=${a}`,`q-url-param-list=${d}`,`q-signature=${p}`].join("&"),y={};for(let[w,C]of o)y[w]=C;return{authorization:I,signedHeaders:y}}async function gH(r){let e=new URL(r.domain),t=J0(r.key),i=`/${Qk(t)}`,n=`/${_k(t)}`;e.pathname=n;let{authorization:s}=await Fk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey,expireSeconds:r.expireSeconds});if(r.query)for(let[o,a]of Object.entries(r.query))a!=null&&e.searchParams.set(o,String(a));for(let o of s.split("&")){let a=o.indexOf("=");if(a===-1)continue;let c=o.slice(0,a),l=o.slice(a+1);e.searchParams.set(c,l)}return r.credential.sessionToken&&e.searchParams.set("x-cos-security-token",r.credential.sessionToken),e.toString()}async function bu(r){let e=new URL(r.domain),t=r.key?J0(r.key):"",i=t?`/${Qk(t)}`:"/",n=t?`/${_k(t)}`:"/";if(e.pathname=n,r.query)for(let[u,f]of Object.entries(r.query))f!=null&&e.searchParams.set(u,String(f));let{authorization:s}=await Fk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey}),o=new Headers;if(r.headers)for(let[u,f]of Object.entries(r.headers))f!=null&&o.set(u,String(f));o.set("Authorization",s),r.credential.sessionToken&&o.set("x-cos-security-token",r.credential.sessionToken);let a=e.toString(),c={method:r.method,headers:o,body:r.body??void 0,signal:r.signal},l=2,d;for(let u=0;u<=l;u++)try{return await fetch(a,c)}catch(f){if(d=f,f instanceof DOMException&&f.name==="AbortError")throw f;usetTimeout(h,1e3*(u+1)))}throw d}var pH="blob.edgeone.site",mH="blob-nocache.edgeone.site",Pk=class Cn{credentialManager;bucket="";region="";keyPrefix="";cachedDomain="";uncachedDomain="";initialized=!1;static buildErrorDetail(e,t,i,n,s){let o=i?`${t}/${i}`:t,a=s?` [request-id: ${s}]`:"";return`${e} ${o} - ${yH(n)}${a}`}constructor(e){this.credentialManager=e}computeSubdomain(e){let t=[];if(e.appId&&t.push(e.appId),e.zoneId&&t.push(e.zoneId),e.projectId&&t.push(e.projectId),t.length>=2)return t.join("-");if(e.resourcePrefix){let i=e.resourcePrefix.replace(/\/?\*$/,"").split("/").filter(Boolean);if(i.length>=2)return i.slice(0,Math.min(i.length,3)).join("-")}return""}async ensureInitialized(){if(this.initialized)return;let e=await this.credentialManager.getCredential();!this.keyPrefix&&e.resourcePrefix&&(this.keyPrefix=e.resourcePrefix.replace(/\/?\*$/,""));let t=e.edgeRegion==="CN",i=e.cosMainland,n=e.cosOverseas,s=t?i||n:n||i;!this.bucket&&s&&(this.bucket=s.bucket,this.region=s.region);let o=this.computeSubdomain(e);if(!o)throw new Kr(0,"unable to derive tenant subdomain from credential; missing appId/zoneId/projectId or resourcePrefix");this.cachedDomain=`https://${o}.${pH}`,this.uncachedDomain=`https://${o}.${mH}`,this.initialized=!0}async resolveDomain(e){return await this.ensureInitialized(),e==="strong"?this.uncachedDomain:this.cachedDomain}async resolveCredential(){let e=await this.credentialManager.getCredential();return{secretId:e.tmpSecretId,secretKey:e.tmpSecretKey,sessionToken:e.sessionToken}}buildCosKey(e,t){return`${this.keyPrefix}/${e}/${t}`}async getDomains(){return await this.ensureInitialized(),{cached:this.cachedDomain,uncached:this.uncachedDomain}}async putObject(e,t,i,n){let s=await this.resolveDomain("strong"),o=await this.resolveCredential(),a=this.buildCosKey(e,t),c=n?.cacheControl===null?void 0:n?.cacheControl??"max-age=0, stale-while-revalidate=60",l={};n?.onlyIfNew&&(l["If-None-Match"]="*"),c&&(l["Cache-Control"]=c),n?.contentType&&(l["Content-Type"]=n.contentType);try{let d=await bu({domain:s,method:"PUT",key:a,headers:l,body:i,credential:o});if(d.status===412)return await d.arrayBuffer().catch(()=>{}),{etag:"",statusCode:412};if(!d.ok){let f=await vu(d);throw new Kr(d.status,Cn.buildErrorDetail("PUT",s,a,f||`status ${d.status}`,ku(d)))}let u=d.headers.get("etag")||"";return await d.arrayBuffer().catch(()=>{}),{etag:u,statusCode:d.status}}catch(d){throw d instanceof Kr?d:new Kr(0,Cn.buildErrorDetail("PUT",s,a,Su(d)))}}async createPresignedPutUrl(e,t,i){let n=await this.resolveDomain("strong"),s=await this.resolveCredential(),o=this.buildCosKey(e,t),a={};i?.contentType&&(a["Content-Type"]=i.contentType);let c=i?.expireSeconds??3600,l=await gH({domain:n,method:"PUT",key:o,headers:a,credential:s,expireSeconds:c}),d=Math.floor(Date.now()/1e3)+c;return{url:l,expiresAt:d}}async getObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await bu({domain:n,method:"GET",key:o,credential:s});if(a.status===404)return await a.arrayBuffer().catch(()=>{}),null;if(!a.ok){let d=await vu(a);throw new Kr(a.status,Cn.buildErrorDetail("GET",n,o,d||`status ${a.status}`,ku(a)))}let c=new Uint8Array(await a.arrayBuffer()),l=Ck(a.headers);return{body:c,contentType:l["content-type"],headers:l}}catch(a){throw a instanceof Kr?a:new Kr(0,Cn.buildErrorDetail("GET",n,o,Su(a)))}}async headObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await bu({domain:n,method:"HEAD",key:o,credential:s});if(a.status===404)return null;if(!a.ok){let l=await vu(a);throw new Kr(a.status,Cn.buildErrorDetail("HEAD",n,o,l||`status ${a.status}`,ku(a)))}let c=Ck(a.headers);return{cacheControl:c["cache-control"],contentType:c["content-type"],etag:c.etag,headers:c}}catch(a){throw a instanceof Kr?a:new Kr(0,Cn.buildErrorDetail("HEAD",n,o,Su(a)))}}async deleteObject(e,t){let i=await this.resolveDomain("strong"),n=await this.resolveCredential(),s=this.buildCosKey(e,t);try{let o=await bu({domain:i,method:"DELETE",key:s,credential:n});if(o.status===204||o.status===404||o.ok){await o.arrayBuffer().catch(()=>{});return}let a=await vu(o);throw new Kr(o.status,Cn.buildErrorDetail("DELETE",i,s,a||`status ${o.status}`,ku(o)))}catch(o){throw o instanceof Kr?o:new Kr(0,Cn.buildErrorDetail("DELETE",i,s,Su(o)))}}async listObjects(e,t){await this.ensureInitialized();let i=`${this.keyPrefix}/${e}/`,n=t?.prefix?i+t.prefix:i,s=await this.getBucketRaw({prefix:n,delimiter:t?.delimiter,marker:t?.marker,maxKeys:t?.maxKeys,consistency:t?.consistency}),o=s.contents.map(c=>{let l=c.key,d=l.startsWith(i)?l.slice(i.length):l;return d?{key:d,etag:c.etag}:null}).filter(c=>c!==null),a=s.commonPrefixes.map(c=>c.startsWith(i)?c.slice(i.length):c).filter(c=>!!c);return{contents:o,commonPrefixes:a,isTruncated:s.isTruncated,nextMarker:s.nextMarker}}async listStores(e){let t=[],i="",n=!0;for(;n;){await this.ensureInitialized();let s=`${this.keyPrefix}/`,o=await this.getBucketRaw({prefix:s,delimiter:"/",maxKeys:1e3,marker:i||void 0,consistency:e});for(let a of o.commonPrefixes){let c=a.startsWith(s)?a.slice(s.length,-1):a.slice(0,-1);c&&t.push(c)}if(n=o.isTruncated,i=o.nextMarker,!n||!i)break}return t}async getBucketRaw(e){let t=await this.resolveDomain(e.consistency),i=await this.resolveCredential(),n={prefix:e.prefix};e.delimiter&&(n.delimiter=e.delimiter),e.marker&&(n.marker=e.marker),e.maxKeys&&(n["max-keys"]=e.maxKeys);try{let s=await bu({domain:t,method:"GET",query:n,credential:i});if(!s.ok){let a=await vu(s);throw new Kr(s.status,Cn.buildErrorDetail("LIST",t,e.prefix,a||`status ${s.status}`,ku(s)))}let o=await s.text();return IH(o)}catch(s){throw s instanceof Kr?s:new Kr(0,Cn.buildErrorDetail("LIST",t,e.prefix,Su(s)))}}};function yH(r){return r.replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.myqcloud\.com/gi,"[cos-origin]").replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.tencentcos\.cn/gi,"[cos-origin]")}async function vu(r){try{return await r.text()}catch{return""}}function ku(r){return r.headers.get("x-cos-request-id")||r.headers.get("x-eo-log-id")||void 0}function Su(r){let e=r,t=e.message||String(r),i=e.cause;if(i){let n=i.message||i.code||"";return n?`${t} (${n})`:t}return t}function Ck(r){let e={};return r.forEach((t,i)=>{e[i.toLowerCase()]=t}),e}function IH(r){let e=[],t=/([\s\S]*?)<\/Contents>/g,i;for(;(i=t.exec(r))!==null;){let c=i[1],l=Du(c,"Key"),d=Du(c,"ETag");l!==null&&e.push({key:Sx(l),etag:d||""})}let n=[],s=/([\s\S]*?)<\/CommonPrefixes>/g;for(;(i=s.exec(r))!==null;){let c=i[1],l=Du(c,"Prefix");l!==null&&n.push(Sx(l))}let o=Du(r,"IsTruncated")==="true",a=Du(r,"NextMarker")||"";return{contents:e,commonPrefixes:n,isTruncated:o,nextMarker:Sx(a)}}function Du(r,e){let t=new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`).exec(r);return t?t[1]:null}function Sx(r){return r.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}var wH="X-RateLimit-Reset";async function Fx(r,e,t=2){e.signal?.throwIfAborted?.();try{let i=await fetch(r,e);if(t>0&&(i.status===429||i.status>=500)){let n=Ek(i.headers.get(wH));return await Bk(n,e.signal),Fx(r,e,t-1)}return i}catch(i){if(t===0||i instanceof DOMException&&i.name==="AbortError")throw i;let n=Ek();return await Bk(n,e.signal),Fx(r,e,t-1)}}function Ek(r){return r?Math.max(Number(r)*1e3-Date.now(),500):1500}function Bk(r,e){return new Promise((t,i)=>{if(e?.aborted)return i(e.reason);let n=setTimeout(()=>{e?.removeEventListener("abort",s),t()},r),s=()=>{clearTimeout(n),i(e.reason)};e?.addEventListener("abort",s,{once:!0})})}var xH="prod";function CH(){let r=typeof process<"u"?process.env.PAGES_BLOB_STS_ENV:void 0;return r==="test"||r==="prod"?r:xH}var EH=300,BH="https://blob-sts.edgeone.site/",Tk=class{authToken;projectId;cached=null;constructor(r,e){this.authToken=r,this.projectId=e}async getCredential(){if(this.cached&&!this.isExpired(this.cached))return this.cached;let r=await this.fetchCredential();return this.cached=r,r}clearCache(){this.cached=null}isExpired(r){let e=Math.floor(Date.now()/1e3);return r.expiredTime-ee.abort(),1e4),i;try{i=await Fx(BH,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Env":CH()},body:JSON.stringify(this.projectId?{ProjectId:this.projectId}:{}),signal:e.signal})}catch(o){if(r<3){await Dx(500*r);continue}throw new Fo(`failed to obtain STS credential: ${o.message||"timeout"}`)}finally{clearTimeout(t)}if(i.status===413)throw new Fo("storage quota exceeded");if(i.status===429)throw new Fo("rate limited, please retry later");if(!i.ok){if(i.status>=500&&r<3){await Dx(500*r);continue}let o=await i.text().catch(()=>"unknown error");throw new Fo(`failed to obtain STS credential: ${i.status} ${o}`)}let n=await i.json(),s=n.data&&typeof n.data=="object"?n.data:n;if(s.tmpSecretId&&s.tmpSecretKey&&s.sessionToken&&s.expiredTime){let o=s.cosMainland,a=s.cosOverseas,c=i.headers.get("X-Edge-Region")||void 0;return{tmpSecretId:s.tmpSecretId,tmpSecretKey:s.tmpSecretKey,sessionToken:s.sessionToken,expiredTime:s.expiredTime,appId:s.appId||void 0,zoneId:s.zoneId||void 0,projectId:s.projectId||void 0,resourcePrefix:s.resourcePrefix||void 0,cosMainland:o||void 0,cosOverseas:a||void 0,edgeRegion:c}}if(s.code!==void 0&&s.code!==0){let o=s.msg||s.message||"unknown error";throw new Fo(`credential exchange failed (code=${s.code}): ${o}`)}if(n.code!==void 0&&n.code!==0){let o=n.msg||n.message||"unknown error";throw new Fo(`credential exchange failed (code=${n.code}): ${o}`)}if(r<3){await Dx(500*r);continue}throw new Fo("invalid STS credential response")}throw new Fo("invalid STS credential response")}};function Dx(r){return new Promise(e=>setTimeout(e,r))}var bH="{{PAGES_BLOB_DEPLOY_CREDENTIAL}}";function vH(){let r={},e=kH();if(e)r.deployCredential=e;else{let i=bk("PAGES_BLOB_DEPLOY_CREDENTIAL");i&&(r.deployCredential=i)}let t=bk("PAGES_PROJECT_ID");return t&&(r.projectId=t),r}function kH(){let r=bH;if(!(r.startsWith("{{")&&r.endsWith("}}")))return r||void 0}function bk(r){if(typeof process<"u"&&process.env)return process.env[r]}function SH(r){let e=typeof r=="string"?r:r.name;dH(e);let t=Uk(typeof r=="string"?void 0:r),i=new Tk(t.authToken,t.projectId),n=new Pk(i);return new Sk(n,e,t.consistency??"eventual")}async function DH(r){let e=Uk(r?{name:"__list__",projectId:r.projectId,token:r.token,consistency:r.consistency}:void 0),t=new Tk(e.authToken,e.projectId);return{stores:(await new Pk(t).listStores(e.consistency)).map(i=>({name:i}))}}function Uk(r){let e=vH(),t=r?.token||e.deployCredential,i=r?.projectId||e.projectId;if(r?.token||e.projectId){if(!i)throw new kk;if(!t)throw new kx(["token"]);return{authToken:t,projectId:i,consistency:r?.consistency}}if(r?.projectId&&!t)throw new kx(["token"]);if(!e.deployCredential)throw new kx(["deployCredential"]);return{authToken:e.deployCredential,consistency:r?.consistency}}});var Lk={};xn(Lk,{checkProxyConfig:()=>ec,kvDriver:()=>$0});function Nk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function Za(r){let e=globalThis;return Nk(r?.KV)?r.KV:Nk(e?.KV)?e.KV:null}function Ok(r){try{let e=r?.JWT_SECRET;return typeof e=="string"&&e.length>=16?e:null}catch{return null}}function ec(r){try{if(Za(r)!==null||Ok(r))return null}catch{}return`KV proxy mode requires the JWT_SECRET environment variable with at least 16 characters. +${await Oz(f)} +`,g=await n3(r.secretKey,s),p=await n3(g,A),I=["q-sign-algorithm=sha1",`q-ak=${r.secretId}`,`q-sign-time=${s}`,`q-key-time=${s}`,`q-header-list=${o}`,`q-url-param-list=${d}`,`q-signature=${p}`].join("&"),m={};for(let[w,B]of a)m[w]=B;return{authorization:I,signedHeaders:m}}async function Lz(r){let e=new URL(r.domain),t=lp(r.key),i=`/${p3(t)}`,n=`/${m3(t)}`;e.pathname=n;let{authorization:s}=await y3({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey,expireSeconds:r.expireSeconds});if(r.query)for(let[a,o]of Object.entries(r.query))o!=null&&e.searchParams.set(a,String(o));for(let a of s.split("&")){let o=a.indexOf("=");if(o===-1)continue;let c=a.slice(0,o),l=a.slice(o+1);e.searchParams.set(c,l)}return r.credential.sessionToken&&e.searchParams.set("x-cos-security-token",r.credential.sessionToken),e.toString()}async function Jf(r){let e=new URL(r.domain),t=r.key?lp(r.key):"",i=t?`/${p3(t)}`:"/",n=t?`/${m3(t)}`:"/";if(e.pathname=n,r.query)for(let[u,f]of Object.entries(r.query))f!=null&&e.searchParams.set(u,String(f));let{authorization:s}=await y3({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey}),a=new Headers;if(r.headers)for(let[u,f]of Object.entries(r.headers))f!=null&&a.set(u,String(f));a.set("Authorization",s),r.credential.sessionToken&&a.set("x-cos-security-token",r.credential.sessionToken);let o=e.toString(),c={method:r.method,headers:a,body:r.body??void 0,signal:r.signal},l=2,d;for(let u=0;u<=l;u++)try{return await fetch(o,c)}catch(f){if(d=f,f instanceof DOMException&&f.name==="AbortError")throw f;usetTimeout(A,1e3*(u+1)))}throw d}var Hz="blob.edgeone.site",Kz="blob-nocache.edgeone.site",I3=class Ln{credentialManager;bucket="";region="";keyPrefix="";cachedDomain="";uncachedDomain="";initialized=!1;static buildErrorDetail(e,t,i,n,s){let a=i?`${t}/${i}`:t,o=s?` [request-id: ${s}]`:"";return`${e} ${a} - ${Gz(n)}${o}`}constructor(e){this.credentialManager=e}computeSubdomain(e){let t=[];if(e.appId&&t.push(e.appId),e.zoneId&&t.push(e.zoneId),e.projectId&&t.push(e.projectId),t.length>=2)return t.join("-");if(e.resourcePrefix){let i=e.resourcePrefix.replace(/\/?\*$/,"").split("/").filter(Boolean);if(i.length>=2)return i.slice(0,Math.min(i.length,3)).join("-")}return""}async ensureInitialized(){if(this.initialized)return;let e=await this.credentialManager.getCredential();!this.keyPrefix&&e.resourcePrefix&&(this.keyPrefix=e.resourcePrefix.replace(/\/?\*$/,""));let t=e.edgeRegion==="CN",i=e.cosMainland,n=e.cosOverseas,s=t?i||n:n||i;!this.bucket&&s&&(this.bucket=s.bucket,this.region=s.region);let a=this.computeSubdomain(e);if(!a)throw new ri(0,"unable to derive tenant subdomain from credential; missing appId/zoneId/projectId or resourcePrefix");this.cachedDomain=`https://${a}.${Hz}`,this.uncachedDomain=`https://${a}.${Kz}`,this.initialized=!0}async resolveDomain(e){return await this.ensureInitialized(),e==="strong"?this.uncachedDomain:this.cachedDomain}async resolveCredential(){let e=await this.credentialManager.getCredential();return{secretId:e.tmpSecretId,secretKey:e.tmpSecretKey,sessionToken:e.sessionToken}}buildCosKey(e,t){return`${this.keyPrefix}/${e}/${t}`}async getDomains(){return await this.ensureInitialized(),{cached:this.cachedDomain,uncached:this.uncachedDomain}}async putObject(e,t,i,n){let s=await this.resolveDomain("strong"),a=await this.resolveCredential(),o=this.buildCosKey(e,t),c=n?.cacheControl===null?void 0:n?.cacheControl??"max-age=0, stale-while-revalidate=60",l={};n?.onlyIfNew&&(l["If-None-Match"]="*"),c&&(l["Cache-Control"]=c),n?.contentType&&(l["Content-Type"]=n.contentType);try{let d=await Jf({domain:s,method:"PUT",key:o,headers:l,body:i,credential:a});if(d.status===412)return await d.arrayBuffer().catch(()=>{}),{etag:"",statusCode:412};if(!d.ok){let f=await jf(d);throw new ri(d.status,Ln.buildErrorDetail("PUT",s,o,f||`status ${d.status}`,$f(d)))}let u=d.headers.get("etag")||"";return await d.arrayBuffer().catch(()=>{}),{etag:u,statusCode:d.status}}catch(d){throw d instanceof ri?d:new ri(0,Ln.buildErrorDetail("PUT",s,o,Vf(d)))}}async createPresignedPutUrl(e,t,i){let n=await this.resolveDomain("strong"),s=await this.resolveCredential(),a=this.buildCosKey(e,t),o={};i?.contentType&&(o["Content-Type"]=i.contentType);let c=i?.expireSeconds??3600,l=await Lz({domain:n,method:"PUT",key:a,headers:o,credential:s,expireSeconds:c}),d=Math.floor(Date.now()/1e3)+c;return{url:l,expiresAt:d}}async getObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),a=this.buildCosKey(e,t);try{let o=await Jf({domain:n,method:"GET",key:a,credential:s});if(o.status===404)return await o.arrayBuffer().catch(()=>{}),null;if(!o.ok){let d=await jf(o);throw new ri(o.status,Ln.buildErrorDetail("GET",n,a,d||`status ${o.status}`,$f(o)))}let c=new Uint8Array(await o.arrayBuffer()),l=c3(o.headers);return{body:c,contentType:l["content-type"],headers:l}}catch(o){throw o instanceof ri?o:new ri(0,Ln.buildErrorDetail("GET",n,a,Vf(o)))}}async headObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),a=this.buildCosKey(e,t);try{let o=await Jf({domain:n,method:"HEAD",key:a,credential:s});if(o.status===404)return null;if(!o.ok){let l=await jf(o);throw new ri(o.status,Ln.buildErrorDetail("HEAD",n,a,l||`status ${o.status}`,$f(o)))}let c=c3(o.headers);return{cacheControl:c["cache-control"],contentType:c["content-type"],etag:c.etag,headers:c}}catch(o){throw o instanceof ri?o:new ri(0,Ln.buildErrorDetail("HEAD",n,a,Vf(o)))}}async deleteObject(e,t){let i=await this.resolveDomain("strong"),n=await this.resolveCredential(),s=this.buildCosKey(e,t);try{let a=await Jf({domain:i,method:"DELETE",key:s,credential:n});if(a.status===204||a.status===404||a.ok){await a.arrayBuffer().catch(()=>{});return}let o=await jf(a);throw new ri(a.status,Ln.buildErrorDetail("DELETE",i,s,o||`status ${a.status}`,$f(a)))}catch(a){throw a instanceof ri?a:new ri(0,Ln.buildErrorDetail("DELETE",i,s,Vf(a)))}}async listObjects(e,t){await this.ensureInitialized();let i=`${this.keyPrefix}/${e}/`,n=t?.prefix?i+t.prefix:i,s=await this.getBucketRaw({prefix:n,delimiter:t?.delimiter,marker:t?.marker,maxKeys:t?.maxKeys,consistency:t?.consistency}),a=s.contents.map(c=>{let l=c.key,d=l.startsWith(i)?l.slice(i.length):l;return d?{key:d,etag:c.etag}:null}).filter(c=>c!==null),o=s.commonPrefixes.map(c=>c.startsWith(i)?c.slice(i.length):c).filter(c=>!!c);return{contents:a,commonPrefixes:o,isTruncated:s.isTruncated,nextMarker:s.nextMarker}}async listStores(e){let t=[],i="",n=!0;for(;n;){await this.ensureInitialized();let s=`${this.keyPrefix}/`,a=await this.getBucketRaw({prefix:s,delimiter:"/",maxKeys:1e3,marker:i||void 0,consistency:e});for(let o of a.commonPrefixes){let c=o.startsWith(s)?o.slice(s.length,-1):o.slice(0,-1);c&&t.push(c)}if(n=a.isTruncated,i=a.nextMarker,!n||!i)break}return t}async getBucketRaw(e){let t=await this.resolveDomain(e.consistency),i=await this.resolveCredential(),n={prefix:e.prefix};e.delimiter&&(n.delimiter=e.delimiter),e.marker&&(n.marker=e.marker),e.maxKeys&&(n["max-keys"]=e.maxKeys);try{let s=await Jf({domain:t,method:"GET",query:n,credential:i});if(!s.ok){let o=await jf(s);throw new ri(s.status,Ln.buildErrorDetail("LIST",t,e.prefix,o||`status ${s.status}`,$f(s)))}let a=await s.text();return zz(a)}catch(s){throw s instanceof ri?s:new ri(0,Ln.buildErrorDetail("LIST",t,e.prefix,Vf(s)))}}};function Gz(r){return r.replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.myqcloud\.com/gi,"[cos-origin]").replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.tencentcos\.cn/gi,"[cos-origin]")}async function jf(r){try{return await r.text()}catch{return""}}function $f(r){return r.headers.get("x-cos-request-id")||r.headers.get("x-eo-log-id")||void 0}function Vf(r){let e=r,t=e.message||String(r),i=e.cause;if(i){let n=i.message||i.code||"";return n?`${t} (${n})`:t}return t}function c3(r){let e={};return r.forEach((t,i)=>{e[i.toLowerCase()]=t}),e}function zz(r){let e=[],t=/([\s\S]*?)<\/Contents>/g,i;for(;(i=t.exec(r))!==null;){let c=i[1],l=Yf(c,"Key"),d=Yf(c,"ETag");l!==null&&e.push({key:CE(l),etag:d||""})}let n=[],s=/([\s\S]*?)<\/CommonPrefixes>/g;for(;(i=s.exec(r))!==null;){let c=i[1],l=Yf(c,"Prefix");l!==null&&n.push(CE(l))}let a=Yf(r,"IsTruncated")==="true",o=Yf(r,"NextMarker")||"";return{contents:e,commonPrefixes:n,isTruncated:a,nextMarker:CE(o)}}function Yf(r,e){let t=new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`).exec(r);return t?t[1]:null}function CE(r){return r.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}var Jz="X-RateLimit-Reset";async function vE(r,e,t=2){e.signal?.throwIfAborted?.();try{let i=await fetch(r,e);if(t>0&&(i.status===429||i.status>=500)){let n=l3(i.headers.get(Jz));return await d3(n,e.signal),vE(r,e,t-1)}return i}catch(i){if(t===0||i instanceof DOMException&&i.name==="AbortError")throw i;let n=l3();return await d3(n,e.signal),vE(r,e,t-1)}}function l3(r){return r?Math.max(Number(r)*1e3-Date.now(),500):1500}function d3(r,e){return new Promise((t,i)=>{if(e?.aborted)return i(e.reason);let n=setTimeout(()=>{e?.removeEventListener("abort",s),t()},r),s=()=>{clearTimeout(n),i(e.reason)};e?.addEventListener("abort",s,{once:!0})})}var jz="prod";function $z(){let r=typeof process<"u"?process.env.PAGES_BLOB_STS_ENV:void 0;return r==="test"||r==="prod"?r:jz}var Vz=300,Yz="https://blob-sts.edgeone.site/",w3=class{authToken;projectId;cached=null;constructor(r,e){this.authToken=r,this.projectId=e}async getCredential(){if(this.cached&&!this.isExpired(this.cached))return this.cached;let r=await this.fetchCredential();return this.cached=r,r}clearCache(){this.cached=null}isExpired(r){let e=Math.floor(Date.now()/1e3);return r.expiredTime-ee.abort(),1e4),i;try{i=await vE(Yz,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Env":$z()},body:JSON.stringify(this.projectId?{ProjectId:this.projectId}:{}),signal:e.signal})}catch(a){if(r<3){await EE(500*r);continue}throw new Io(`failed to obtain STS credential: ${a.message||"timeout"}`)}finally{clearTimeout(t)}if(i.status===413)throw new Io("storage quota exceeded");if(i.status===429)throw new Io("rate limited, please retry later");if(!i.ok){if(i.status>=500&&r<3){await EE(500*r);continue}let a=await i.text().catch(()=>"unknown error");throw new Io(`failed to obtain STS credential: ${i.status} ${a}`)}let n=await i.json(),s=n.data&&typeof n.data=="object"?n.data:n;if(s.tmpSecretId&&s.tmpSecretKey&&s.sessionToken&&s.expiredTime){let a=s.cosMainland,o=s.cosOverseas,c=i.headers.get("X-Edge-Region")||void 0;return{tmpSecretId:s.tmpSecretId,tmpSecretKey:s.tmpSecretKey,sessionToken:s.sessionToken,expiredTime:s.expiredTime,appId:s.appId||void 0,zoneId:s.zoneId||void 0,projectId:s.projectId||void 0,resourcePrefix:s.resourcePrefix||void 0,cosMainland:a||void 0,cosOverseas:o||void 0,edgeRegion:c}}if(s.code!==void 0&&s.code!==0){let a=s.msg||s.message||"unknown error";throw new Io(`credential exchange failed (code=${s.code}): ${a}`)}if(n.code!==void 0&&n.code!==0){let a=n.msg||n.message||"unknown error";throw new Io(`credential exchange failed (code=${n.code}): ${a}`)}if(r<3){await EE(500*r);continue}throw new Io("invalid STS credential response")}throw new Io("invalid STS credential response")}};function EE(r){return new Promise(e=>setTimeout(e,r))}var Wz="{{PAGES_BLOB_DEPLOY_CREDENTIAL}}";function Xz(){let r={},e=Zz();if(e)r.deployCredential=e;else{let i=u3("PAGES_BLOB_DEPLOY_CREDENTIAL");i&&(r.deployCredential=i)}let t=u3("PAGES_PROJECT_ID");return t&&(r.projectId=t),r}function Zz(){let r=Wz;if(!(r.startsWith("{{")&&r.endsWith("}}")))return r||void 0}function u3(r){if(typeof process<"u"&&process.env)return process.env[r]}function eJ(r){let e=typeof r=="string"?r:r.name;Rz(e);let t=x3(typeof r=="string"?void 0:r),i=new w3(t.authToken,t.projectId),n=new I3(i);return new A3(n,e,t.consistency??"eventual")}async function tJ(r){let e=x3(r?{name:"__list__",projectId:r.projectId,token:r.token,consistency:r.consistency}:void 0),t=new w3(e.authToken,e.projectId);return{stores:(await new I3(t).listStores(e.consistency)).map(i=>({name:i}))}}function x3(r){let e=Xz(),t=r?.token||e.deployCredential,i=r?.projectId||e.projectId;if(r?.token||e.projectId){if(!i)throw new h3;if(!t)throw new xE(["token"]);return{authToken:t,projectId:i,consistency:r?.consistency}}if(r?.projectId&&!t)throw new xE(["token"]);if(!e.deployCredential)throw new xE(["deployCredential"]);return{authToken:e.deployCredential,consistency:r?.consistency}}});var k3={};An(k3,{checkProxyConfig:()=>bd,kvDriver:()=>up});function E3(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function Gc(r){let e=globalThis;return E3(r?.KV)?r.KV:E3(e?.KV)?e.KV:null}function b3(r){try{let e=r?.JWT_SECRET;return typeof e=="string"&&e.trim().length>0?e:null}catch{return null}}function bd(r){try{if(Gc(r)!==null||b3(r))return null}catch{}return`KV proxy mode requires the JWT_SECRET environment variable to be set. Reason: EdgeOne Node Functions cannot access KV directly and must go through an Edge Function proxy, whose authentication depends on this secret. Add it under Environment Variables in the EdgeOne project settings, for example: - JWT_SECRET= -Generate one with: openssl rand -hex 32`}function _u(r){let e={"Content-Type":"application/json"},t=Ok(r);t&&(e["X-Internal-Call"]=t);let i=r?._currentUserToken;return i&&(e.Authorization=`Bearer ${i}`),e}function Mk(r){if(!r)return"";let e=r.EO_KV_URLS;if(e){let i=wl(e,r);if(i)return i}let t=r.__requestOrigin;if(t){let i=wl(t,r);if(i)return i}return""}async function qk(r){let e=ec(r);if(e)return{ok:!1,status:0,error:e.split(` -`)[0]};let t=Mk(r);if(!t)return{ok:!1,status:0,error:"cannot determine deployment origin. Set EO_KV_URLS to the deployment origin."};try{let i=`${t}/kv-list?prefix=__health__`,n=await fetch(i,{method:"GET",headers:_u(r)});return{ok:n.ok,status:n.status}}catch(i){return{ok:!1,status:0,error:i?.message||String(i)}}}function j0(r){let e=ec(r);if(e)throw new Error("KV proxy misconfigured: "+e.split(` -`)[0]);let t=Mk(r);if(!t)throw new Error("KV proxy base URL unavailable: cannot determine deployment origin. Set EO_KV_URLS to the deployment origin.");return t}var $0,Ux=j(()=>{"use strict";K0();$0={name:"kv",async isAvailable(r){if(Za(r)!==null)return!0;let e=await qk(r);return!e.ok&&e.status!==401?(e.error&&console.error("[DB] KV proxy unavailable: "+e.error),!1):!0},async init(r){},async get(r,e){let t=Za(e);if(t){let s=a=>a instanceof TypeError||/not a function|invalid|unexpected|argument/i.test(String(a?.message||"")),o;try{o=await t.get(r,"text")}catch(a){if(!s(a))throw a;o=void 0}if(o==null)try{o=await t.get(r,{type:"text"})}catch(a){if(!s(a))throw a;o=null}return o==null?null:typeof o=="string"?o:JSON.stringify(o)}let n=`${j0(e)}/kv-get?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:_u(e)});if(!s.ok){if(s.status===404)return null;throw new Error(`KV proxy get failed: ${s.status}`)}let o=await s.json();return o?.value===void 0||o?.value===null?null:typeof o.value=="string"?o.value:String(o.value)}catch(s){throw console.error(`[KV] get(${r}) failed:`,s),s}},async put(r,e,t){let i=Za(t);if(i){await i.put(r,e);return}let s=`${j0(t)}/kv-put`;try{let o=await fetch(s,{method:"POST",headers:_u(t),body:JSON.stringify({key:r,value:e})});if(!o.ok)throw new Error(`KV proxy put failed: ${o.status}`)}catch(o){throw console.error(`[KV] put(${r}) failed:`,o),o}},async delete(r,e){let t=Za(e);if(t){await t.delete(r);return}let n=`${j0(e)}/kv-delete?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"DELETE",headers:_u(e)});if(!s.ok&&s.status!==404)throw new Error(`KV proxy delete failed: ${s.status}`)}catch(s){throw console.error(`[KV] delete(${r}) failed:`,s),s}},async list(r,e){let t=Za(e);if(t){let s=[],o="",a=!1,c=0;for(;!a&&c<1e3;){c+=1;let l=await t.list({prefix:r,cursor:o,limit:256}),d=Array.isArray(l?.keys)?l.keys:[];for(let u of d)u?.key&&s.push(u.key);d.length>0&&(o=d[d.length-1].key||""),a=!!l?.complete||d.length===0}return s}let n=`${j0(e)}/kv-list?prefix=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:_u(e)});if(!s.ok)throw new Error(`KV proxy list failed: ${s.status}`);return(await s.json()).keys||[]}catch(s){throw console.error(`[KV] list(${r}) failed:`,s),s}},async health(r){let e=Za(r);if(e)try{return await e.get("__health_check__"),{driver:"kv",mode:"binding",available:!0,platform:"Cloudflare KV / EdgeOne KV"}}catch(i){return{driver:"kv",mode:"binding",available:!1,error:i?.message||String(i)}}let t=await qk(r);return t.ok?{driver:"kv",mode:"proxy",available:!0,platform:"EdgeOne KV (via Edge Function proxy)"}:{driver:"kv",mode:"proxy",available:!1,error:t.error||`HTTP ${t.status}`}}}});function Hk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function xl(r){let e=globalThis,t=r?.ESA_BLOB;if(Hk(t))return t;let i=e?.ESA_BLOB;return Hk(i)?i:null}async function Cl(r="default"){try{let{getStore:e}=await Promise.resolve().then(()=>Qr(Tx(),1));return e(r)}catch{return null}}var Rx,Kk=j(()=>{"use strict";Rx={name:"blob",async isAvailable(r){return xl(r)!==null?!0:await Cl()!==null},async init(r){},async get(r,e){let t=xl(e);if(t)try{let n=await t.get(r);return n?await n.text():null}catch(n){return console.warn(`[Blob] ESA get key="${r}" failed:`,n),null}let i=await Cl();if(!i)throw new Error("Blob not available");try{let n=await i.get(r);return n==null?null:typeof n=="string"?n:JSON.stringify(n)}catch(n){return console.warn(`[Blob] EdgeOne get key="${r}" failed:`,n),null}},async put(r,e,t){let i=xl(t);if(i){await i.put(r,e);return}let n=await Cl();if(!n)throw new Error("Blob not available");await n.set(r,e)},async delete(r,e){let t=xl(e);if(t){await t.delete(r);return}let i=await Cl();if(!i)throw new Error("Blob not available");await i.delete(r)},async list(r,e){let t=xl(e);if(t){let s=[],o;do{let a=await t.list({prefix:r,cursor:o});s.push(...(a?.keys||[]).map(c=>c.name)),o=a?.cursor}while(o);return s}let i=await Cl();if(!i)throw new Error("Blob not available");return((await i.list({prefix:r,paginate:!0}))?.blobs||[]).map(s=>s.key)},async health(r){let e=xl(r),t=await Cl();if(e)try{return await e.head("__health_check__"),{driver:"blob",platform:"ESA Blob (binding)",available:!0}}catch(i){return{driver:"blob",platform:"ESA Blob (binding)",available:!1,error:i?.message||String(i)}}if(t)try{return await t.get("__health_check__"),{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!0}}catch(i){return{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!1,error:i?.message||String(i)}}return{driver:"blob",available:!1,error:"No Blob storage available"}}}});function El(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e.CF_ACCOUNT||e.CLOUDFLARE_ACCOUNT_ID,i=e.CF_KV_UUID||e.CLOUDFLARE_KV_NAMESPACE_ID,n=e.CF_API_KEY||e.CLOUDFLARE_API_TOKEN;return!t||!i||!n?null:{accountId:t,namespaceId:i,apiToken:n}}function V0(r,e){return`https://api.cloudflare.com/client/v4/accounts/${r.accountId}/storage/kv/namespaces/${r.namespaceId}${e}`}var Nx,Gk=j(()=>{"use strict";Nx={name:"cfkv",async isAvailable(r){return El(r)!==null},async init(r){},async get(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=V0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(n.status===404)return null;if(!n.ok)throw new Error(`Cloudflare KV API error: ${n.status}`);return await n.text()},async put(r,e,t){let i=El(t);if(!i)throw new Error("Cloudflare KV API not configured");let n=V0(i,`/values/${encodeURIComponent(r)}`),s=await fetch(n,{method:"PUT",headers:{Authorization:`Bearer ${i.apiToken}`},body:e});if(!s.ok)throw new Error(`Cloudflare KV API error: ${s.status}`)},async delete(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=V0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiToken}`}});if(!n.ok&&n.status!==404)throw new Error(`Cloudflare KV API error: ${n.status}`)},async list(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=[],n;do{let s=new URLSearchParams({prefix:r,limit:"1000"});n&&s.set("cursor",n);let o=V0(t,`/keys?${s}`),a=await fetch(o,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(!a.ok)throw new Error(`Cloudflare KV API error: ${a.status}`);let c=await a.json();i.push(...(c.result||[]).map(l=>l.name)),n=c.result_info?.cursor}while(n);return i},async health(r){let e=El(r);if(!e)return{configured:!1,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:"Missing CF_ACCOUNT, CF_KV_UUID, or CF_API_KEY"};try{return await this.get("__health_check__",r),{configured:!0,connected:!0,platform:"Cloudflare KV API (REST)",mode:"cfkv",accountId:e.accountId,namespaceId:e.namespaceId}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:t?.message||String(t)}}}}});function qx(r){return"x_"}function Ox(r,e){return qx(e)+_H[r]}function FH(r,e){if(e==null){if(r.pk||r.nullable)return null;switch(r.type){case"string":return"";case"number":return 0;case"bool":return 0;case"json":return"null";case"date":return"";default:return""}}switch(r.type){case"string":return String(e);case"number":return typeof e=="number"?e:Number(e);case"bool":return e?1:0;case"json":return typeof e=="string"?e:JSON.stringify(e);case"date":return e instanceof Date?e.toISOString():typeof e=="number"?new Date(e).toISOString():String(e);default:return e}}function PH(r,e){if(e==null)return r.type==="json",null;switch(r.type){case"string":{let t=String(e);return t===""?null:t}case"number":return Number(e);case"bool":return e===1||e==="1"||e===!0||e==="true";case"json":{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}case"date":return e;default:return e}}function W0(r,e){let t=Y0[r],i={};for(let n of t.columns){let s=n.key??n.name,o=PH(n,e[n.name]);o!=null&&(i[s]=o)}return i}function X0(r,e){let t=Y0[r],i=[],n=[];for(let s of t.columns){let o=s.key??s.name;i.push(s.name),n.push(FH(s,e?.[o]))}return{columns:i,values:n}}function TH(r,e){switch(r.type){case"number":return e==="mysql"?"BIGINT":"INTEGER";case"bool":return e==="mysql"?"TINYINT(1)":"INTEGER";case"string":case"json":case"date":return"TEXT";default:return"TEXT"}}function Po(r){return"`"+r+"`"}function UH(r,e,t){let i=[];for(let n of r.columns){let s=`${Po(n.name)} ${TH(n,e)}`;n.pk?s+=" PRIMARY KEY":n.nullable||(s+=" NOT NULL"),n.unique&&(s+=" UNIQUE"),i.push(s)}return`CREATE TABLE IF NOT EXISTS ${Po(t)} (${i.join(", ")})`}function RH(r){let e=r==="mysql"?"VARCHAR(255)":"TEXT";return`CREATE TABLE IF NOT EXISTS ${Po("schema_info")} (${Po("k")} ${e} PRIMARY KEY, ${Po("v")} TEXT)`}function Bl(r,e){let t=[RH(r)];for(let i of QH)t.push(UH(Y0[i],r,Ox(i,e)));return t}var To,QH,tc,Y0,_H,hle,gle,zk,Jk,Fu=j(()=>{"use strict";To=["settings","storages","users","shares","metas","plugins"],QH=[...To,"sshkeys"],tc={settings:"key",storages:"id",users:"id",shares:"id",metas:"id",plugins:"id",sshkeys:"id"},Y0={settings:{name:"settings",columns:[{name:"key",type:"string",pk:!0},{name:"value",type:"string",nullable:!0},{name:"help",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"options",type:"string",nullable:!0},{name:"group",type:"number",nullable:!0},{name:"flag",type:"number",nullable:!0},{name:"index",type:"number",nullable:!0}]},storages:{name:"storages",columns:[{name:"id",type:"number",pk:!0},{name:"mount_path",type:"string",unique:!0},{name:"order",type:"number",nullable:!0},{name:"driver",type:"string",nullable:!0},{name:"cache_expiration",type:"number",nullable:!0},{name:"custom_cache_policies",type:"string",nullable:!0},{name:"status",type:"string",nullable:!0},{name:"addition",type:"string",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"modified",type:"date",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"disable_index",type:"bool",nullable:!0},{name:"enable_sign",type:"bool",nullable:!0},{name:"seed_policy",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0},{name:"web_proxy",type:"bool",nullable:!0},{name:"webdav_policy",type:"string",nullable:!0},{name:"proxy_range",type:"bool",nullable:!0},{name:"down_proxy_url",type:"string",nullable:!0},{name:"disable_proxy_sign",type:"bool",nullable:!0}]},users:{name:"users",columns:[{name:"id",type:"number",pk:!0},{name:"username",type:"string",unique:!0},{name:"password",type:"string",nullable:!0},{name:"base_path",type:"string",nullable:!0},{name:"role",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"permission",type:"number",nullable:!0},{name:"salt",type:"string",nullable:!0},{name:"otp_secret",type:"string",nullable:!0},{name:"sso_id",type:"string",nullable:!0},{name:"authn",type:"string",nullable:!0},{name:"allow_ldap",type:"bool",nullable:!0},{name:"pwd_update_at",type:"date",nullable:!0}]},shares:{name:"shares",columns:[{name:"id",type:"string",pk:!0},{name:"files_raw",key:"files",type:"json",nullable:!0},{name:"expires",type:"date",nullable:!0},{name:"pwd",type:"string",nullable:!0},{name:"accessed",type:"number",nullable:!0},{name:"max_accessed",type:"number",nullable:!0},{name:"creator_id",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0}]},metas:{name:"metas",columns:[{name:"id",type:"number",pk:!0},{name:"path",type:"string",unique:!0},{name:"read_users",type:"json",nullable:!0},{name:"read_users_sub",type:"bool",nullable:!0},{name:"write_users",type:"json",nullable:!0},{name:"write_users_sub",type:"bool",nullable:!0},{name:"password",type:"string",nullable:!0},{name:"p_sub",type:"bool",nullable:!0},{name:"write",type:"bool",nullable:!0},{name:"w_sub",type:"bool",nullable:!0},{name:"hide",type:"string",nullable:!0},{name:"h_sub",type:"bool",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"r_sub",type:"bool",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"header_sub",type:"bool",nullable:!0}]},sshkeys:{name:"sshkeys",columns:[{name:"id",type:"number",pk:!0},{name:"user_id",type:"number",nullable:!0},{name:"title",type:"string",nullable:!0},{name:"fingerprint",type:"string",nullable:!0},{name:"key_str",type:"string",nullable:!0},{name:"added_time",type:"date",nullable:!0},{name:"last_used_time",type:"date",nullable:!0}]},plugins:{name:"plugins",columns:[{name:"id",type:"string",pk:!0},{name:"name",type:"string",nullable:!0},{name:"version",type:"string",nullable:!0},{name:"description",type:"string",nullable:!0},{name:"author",type:"string",nullable:!0},{name:"homepage",type:"string",nullable:!0},{name:"repository",type:"string",nullable:!0},{name:"icon",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"enabled",type:"bool",nullable:!0},{name:"high_privilege",type:"bool",nullable:!0},{name:"permissions",type:"json",nullable:!0},{name:"entry_url",type:"string",nullable:!0},{name:"script_content",type:"string",nullable:!0},{name:"style_content",type:"string",nullable:!0},{name:"config_schema",type:"json",nullable:!0},{name:"config_values",type:"json",nullable:!0},{name:"target_hooks",type:"json",nullable:!0},{name:"is_builtin",type:"bool",nullable:!0},{name:"tags",type:"json",nullable:!0},{name:"created_at",type:"date",nullable:!0},{name:"updated_at",type:"date",nullable:!0}]}},_H={settings:"setting_items",storages:"storages",users:"users",shares:"sharing_dbs",metas:"metas",plugins:"plugins",sshkeys:"ssh_public_keys"};hle=Bl("sqlite"),gle=Bl("mysql"),zk=[`CREATE TABLE IF NOT EXISTS ${Po("kv")} (${Po("key")} TEXT PRIMARY KEY, ${Po("value")} TEXT NOT NULL)`],Jk=["CREATE TABLE IF NOT EXISTS `kv` (`key` VARCHAR(512) PRIMARY KEY, `value` LONGTEXT NOT NULL)"]});function jk(r){if(!r||typeof r!="object")return!1;try{return typeof r.prepare=="function"}catch{return!1}}function Kn(r){let e=typeof globalThis<"u"?globalThis:{};for(let t of["DB","OPENLIST_DB"]){let i=r?.[t];if(jk(i))return i;let n=e?.[t];if(jk(n))return n}return null}async function Uo(r,e){if(!$k.get(r)){for(let t of[...zk,...Bl("sqlite",e)])await r.prepare(t).run();$k.set(r,!0)}}var $k,Mx,Vk=j(()=>{"use strict";Fu();$k=new WeakMap;Mx={name:"d1",async isAvailable(r){return Kn(r)!=null},async init(r){let e=Kn(r);e&&await Uo(e)},async get(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");return await Uo(t,e),(await t.prepare("SELECT value FROM kv WHERE key = ?").bind(r).first())?.value||null},async put(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");await Uo(i,t),await i.prepare("INSERT OR REPLACE INTO kv (key, value) VALUES (?, ?)").bind(r,e).run()},async delete(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");await Uo(t,e),await t.prepare("DELETE FROM kv WHERE key = ?").bind(r).run()},async list(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");return await Uo(t,e),((await t.prepare("SELECT key FROM kv WHERE key LIKE ? ORDER BY key").bind(`${r}%`).all()).results||[]).map(n=>n.key)},async query(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");return await Uo(i,t),(await i.prepare(r).bind(...e).all()).results||[]},async execute(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");await Uo(i,t),await i.prepare(r).bind(...e).run()},async batch(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");await Uo(t,e);let i=100,n=r.map(s=>t.prepare(s.sql).bind(...s.params));for(let s=0;s{"use strict";Hx={name:"do",async isAvailable(r){return Lx(r)!=null},async init(r){let e=Ds(r);e&&typeof e.init=="function"&&await e.init()},async get(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");return await t.kvGet(r)},async put(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");await i.kvPut(r,e)},async delete(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");await t.kvDelete(r)},async list(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");return await t.kvList(r)},async query(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");return await i.sqlQuery(r,e)},async execute(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");await i.sqlExecute(r,e)},async batch(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");await t.sqlBatch(r)},async health(r){if(!Lx(r))return{configured:!1,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:"DO binding not found (expected env.DO)"};try{return await Ds(r).health(),{configured:!0,connected:!0,platform:"Cloudflare Durable Objects (SQLite)",mode:"do",doId:Wk(r)}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:t?.message||String(t)}}}}});function Zk(){return typeof process<"u"&&process.release?.name==="node"}function Kx(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e?.MYSQL_URLS;if(t)return t;let i=e?.MYSQL_HOST;return i?{host:i,port:Number(e?.MYSQL_PORT||3306),user:e?.MYSQL_USER||"",password:e?.MYSQL_PASS||"",database:e?.MYSQL_NAME||""}:null}async function Qs(r){let e=Kx(r);if(!e)return null;let t=JSON.stringify(e);if(Z0&&eS===t)return Z0;let i="mysql2/promise",{createPool:n}=await import(i);return Z0=n(e),eS=t,Z0}async function Ro(r,e){let t=qx(e);if(tS!==t){for(let i of[...Jk,...Bl("mysql",e)])await r.query(i);tS=t}}var Z0,eS,tS,Gx,rS=j(()=>{"use strict";Fu();Z0=null,eS=null;tS=null;Gx={name:"mysql",async isAvailable(r){return Zk()?Kx(r)!=null:!1},async init(r){let e=await Qs(r);e&&await Ro(e)},async get(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let[i]=await t.query("SELECT `value` FROM `kv` WHERE `key` = ?",[r]);return i?.[0]?.value||null},async put(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t),await i.query("INSERT INTO `kv` (`key`, `value`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)",[r,e])},async delete(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e),await t.query("DELETE FROM `kv` WHERE `key` = ?",[r])},async list(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let[i]=await t.query("SELECT `key` FROM `kv` WHERE `key` LIKE ? ORDER BY `key`",[`${r}%`]);return(i||[]).map(n=>n.key)},async query(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t);let[n]=await i.query(r,e);return n||[]},async execute(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t),await i.query(r,e)},async batch(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let i=await t.getConnection();try{await i.beginTransaction();for(let n of r)await i.query(n.sql,n.params);await i.commit()}catch(n){try{await i.rollback()}catch{}throw n}finally{i.release()}},async health(r){if(!Zk())return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL backend requires Node.js runtime"};if(!Kx(r))return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL config not found (expected MYSQL_URLS or MYSQL_HOST)"};try{return await(await Qs(r)).query("SELECT 1"),{configured:!0,connected:!0,platform:"MySQL (mysql2)",mode:"mysql"}}catch(t){return{configured:!0,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:t?.message||String(t)}}}}});var Pu,eh,iS=j(()=>{"use strict";Pu=new Map,eh={name:"memory",async isAvailable(){return!0},async init(){},async get(r){return Pu.get(r)??null},async put(r,e){Pu.set(r,e)},async delete(r){Pu.delete(r)},async list(r){return[...Pu.keys()].filter(e=>e.startsWith(r))},async health(){return{configured:!0,connected:!0,platform:"Memory",mode:"memory",hasData:Pu.size>0,error:null}}}});var nS,sS,oS=j(()=>{"use strict";nS="openlist_config",sS={name:"map",async load(r,e){let t=await r.get(nS,e);if(!t)return null;try{return JSON.parse(t)}catch(i){return console.error("[mapFormat] Failed to parse JSON:",i),null}},async save(r,e,t){let i=JSON.stringify(r);return await e.put(nS,i,t),!0}}});function NH(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9"||r==="_"}function aS(r){let e=String(r??"");if(e==="")return"0";if(/^[A-Za-z0-9_]+$/.test(e))return e;let t="";for(let i of e)if(NH(i))t+=i;else for(let n of new TextEncoder().encode(i))t+="x"+n.toString(16).padStart(2,"0");return t}function zx(r){return`${aS(r)}_`}function cS(r,e){return`${zx(r)}${aS(e)}`}var lS=j(()=>{"use strict"});function th(r){return zx(r)}function Tu(r,e){return cS(r,e)}var dS,uS,fS=j(()=>{"use strict";Fu();lS();dS="openlist_config";uS={name:"key",async load(r,e){if(!await r.get(dS,e))return null;let i={};for(let n of To){let s=th(n),o=await r.list(s,e),a=[];for(let c of o){let l=await r.get(c,e);if(l)try{a.push(JSON.parse(l))}catch(d){console.warn(`[keyFormat] Failed to parse ${c}:`,d)}}i[n]=a}return i},async save(r,e,t){for(let i of To){let n=th(i),s=await e.list(n,t);for(let o of s)await e.delete(o,t)}for(let i of To){let n=tc[i],s=r?.[i]||[];for(let o of s){let a=String(o?.[n]??"");if(!a)continue;let c=Tu(i,a),l=JSON.stringify(o);await e.put(c,l,t)}}return await e.put(dS,String(Date.now()),t),!0},async getTable(r,e,t){let i=th(r),n=await e.list(i,t),s=[];for(let o of n){let a=await e.get(o,t);if(a)try{s.push(JSON.parse(a))}catch(c){console.warn(`[keyFormat] Failed to parse ${o}:`,c)}}return s},async saveTable(r,e,t,i){let n=tc[r],s=th(r),o=await t.list(s,i);for(let a of o)await t.delete(a,i);for(let a of e){let c=String(a?.[n]??"");if(!c)continue;let l=Tu(r,c),d=JSON.stringify(a);await t.put(l,d,i)}},async getRecord(r,e,t,i){let n=Tu(r,e),s=await t.get(n,i);if(!s)return null;try{return JSON.parse(s)}catch(o){return console.warn(`[keyFormat] Failed to parse ${n}:`,o),null}},async saveRecord(r,e,t,i,n){let s=Tu(r,e),o=JSON.stringify(t);await i.put(s,o,n)},async deleteRecord(r,e,t,i){let n=Tu(r,e);await t.delete(n,i)}}});function _s(r){return"`"+r+"`"}function Jx(r,e,t,i){let n=e.map(o=>_s(o)).join(", "),s=e.map(()=>"?").join(", ");if(i.name==="mysql"){let o=e.slice(1).map(c=>`${_s(c)} = VALUES(${_s(c)})`).join(", ");return{sql:o?`INSERT INTO ${r} (${n}) VALUES (${s}) ON DUPLICATE KEY UPDATE ${o}`:`INSERT INTO ${r} (${n}) VALUES (${s})`,params:t}}return{sql:`INSERT OR REPLACE INTO ${r} (${n}) VALUES (${s})`,params:t}}function Gn(r,e){return _s(Ox(r,e))}var AS,hS,gS=j(()=>{"use strict";Fu();AS="openlist_config";hS={name:"sql",async load(r,e){if(!r.query)throw new Error(`Driver ${r.name} does not support SQL queries`);let t=await r.query("SELECT v FROM schema_info WHERE k = ?",[AS],e);if(!t||t.length===0)return null;let i={};for(let n of To){let s=await r.query(`SELECT * FROM ${Gn(n,e)}`,[],e);i[n]=s.map(o=>W0(n,o))}return i},async save(r,e,t){if(!e.batch)throw new Error(`Driver ${e.name} does not support batch operations`);let i=[];for(let n of To){let s=tc[n],o=r?.[n]||[],a=[];for(let l of o){let{columns:d,values:u}=X0(n,l),f=Jx(Gn(n,t),d,u,e);i.push({sql:f.sql,params:f.params});let h=l?.[s];h!=null&&a.push(String(h))}let c=a.length>0?`DELETE FROM ${Gn(n,t)} WHERE ${_s(s)} NOT IN (${a.map(()=>"?").join(", ")})`:`DELETE FROM ${Gn(n,t)}`;i.push({sql:c,params:a})}return i.push(Jx(_s("schema_info"),["k","v"],[AS,String(Date.now())],e)),await e.batch(i,t),!0},async getTable(r,e,t){if(!e.query)throw new Error(`Driver ${e.name} does not support SQL queries`);let i=r;return(await e.query(`SELECT * FROM ${Gn(i,t)}`,[],t)).map(s=>W0(i,s))},async saveTable(r,e,t,i){if(!t.batch)throw new Error(`Driver ${t.name} does not support batch operations`);let n=r,s=[{sql:`DELETE FROM ${Gn(n,i)}`,params:[]}];for(let o of e){let{columns:a,values:c}=X0(n,o),l=a.map(()=>"?").join(", "),d=`INSERT INTO ${Gn(n,i)} (${a.map(u=>_s(u)).join(", ")}) VALUES (${l})`;s.push({sql:d,params:c})}await t.batch(s,i)},async getRecord(r,e,t,i){if(!t.query)throw new Error(`Driver ${t.name} does not support SQL queries`);let n=r,s=tc[n],o=await t.query(`SELECT * FROM ${Gn(n,i)} WHERE ${_s(s)} = ?`,[e],i);return o.length>0?W0(n,o[0]):null},async saveRecord(r,e,t,i,n){if(!i.execute)throw new Error(`Driver ${i.name} does not support SQL execution`);let s=r,{columns:o,values:a}=X0(s,t),{sql:c}=Jx(Gn(s,n),o,a,i);await i.execute(c,a,n)},async deleteRecord(r,e,t,i){if(!t.execute)throw new Error(`Driver ${t.name} does not support SQL execution`);let n=r,s=tc[n];await t.execute(`DELETE FROM ${Gn(n,i)} WHERE ${_s(s)} = ?`,[e],i)}}});var bS={};xn(bS,{NO_STORAGE_MESSAGE:()=>Fs,getStorageBackend:()=>Wx,getStoreBackend:()=>nh,getStoreConfigErrorDetail:()=>rc,getStoreStatus:()=>Jn,isPersistentStorageAvailable:()=>Xx,isServerlessRuntime:()=>zn,readDriver:()=>rh,readFormat:()=>ih});function IS(r,e,t){let i=t||(typeof process<"u"?process.env:{})||{};return String(i[r]||"").trim().toLowerCase()||e}function rh(r){let e=r||(typeof process<"u"?process.env:{})||{},t=IS("DB_DRIVER","auto",r);return t==="json"?(console.warn("[DEPRECATED] DB_DRIVER=json is deprecated. Use DB_FORMAT=map instead."),"auto"):t}function ih(r){let e=r||(typeof process<"u"?process.env:{})||{};return String(e.DB_DRIVER||"").trim().toLowerCase()==="json"?"map":String(e.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!e.DB_FORMAT?"key":IS("DB_FORMAT","map",r)}function zn(r){let e=globalThis;try{if(r?.__requestOrigin||r?.__requestContext||r?.__makersContext||r?.EDGEONE_BLOB||e?.EDGEONE_BLOB||typeof e?.EdgeOne<"u"||typeof e.WebSocketPair=="function"||typeof e.caches<"u"&&e.caches?.default||r?.ESA_BLOB||e?.ESA_BLOB||typeof e?.ESA<"u"||r?.TENCENTCLOUD_SCF_FUNCTIONNAME||typeof process<"u"&&process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME)return!0}catch{}return!1}async function wS(r){let e=[];qH(r)&&e.push(Gx),e.push(Mx,$0,Nx,Rx,Hx);for(let t of e)if(await t.isAvailable(r))return console.log(`[DB] Auto-detected driver: ${t.name}`),t;if(zn(r))throw Uu("NO_STORAGE",Fs);return console.warn("[DB] No storage binding detected, falling back to memory (data will not persist)."),eh}function qH(r){let e=r||{},t=typeof process<"u"?process.env||{}:{};return!!(e.MYSQL_URLS||t.MYSQL_URLS||e.MYSQL_HOST||t.MYSQL_HOST)}function Uu(r,e,t){let i=new Error(e);return i.storeCode=r,t&&(i.storeHint=t),i}function OH(r){let e=r?.storeHint;return typeof e=="string"&&e.trim()?e.trim():null}function xS(r){return r?.storeCode||"DRIVER_ERROR"}async function HH(r,e){let t=`${e}:${zn(r)?"sl":"local"}:${CS(r)}`;if(jx?.key===t)return jx.driver;let i=null;try{let n=await wS(r);n&&n!==eh&&n.name!==e&&(i=n)}catch{}return jx={key:t,driver:i},i}function KH(r){return r?`Auto-detection would pick: DB_DRIVER=${r.name} (or simply set DB_DRIVER=auto). -`:""}function GH(r,e){let t=r,i=!!(t.get&&t.put&&t.delete&&t.list),n=!!(r.query&&r.execute&&r.batch);if(e.name==="sql"?n:i)return;let o=[i?"map | key":null,n?"sql":null].filter(Boolean).join(" | ");throw Uu("INVALID_COMBINATION",`Invalid storage combination: DB_FORMAT="${e.name}" cannot be used with DB_DRIVER="${r.name}". -Driver "${r.name}" supports: ${o||"no format"}. + JWT_SECRET= +Generate one with: openssl rand -hex 32`}function Xf(r){let e={"Content-Type":"application/json"},t=b3(r);t&&(e["X-Internal-Call"]=t);let i=r?._currentUserToken;return i&&(e.Authorization=`Bearer ${i}`),e}function v3(r){if(!r)return"";let e=r.EO_KV_URLS;if(e){let i=Bd(e,r);if(i)return i}let t=r.__requestOrigin;if(t){let i=Bd(t,r);if(i)return i}return""}async function B3(r){let e=bd(r);if(e)return{ok:!1,status:0,error:e.split(` +`)[0]};let t=v3(r);if(!t)return{ok:!1,status:0,error:"cannot determine deployment origin. Set EO_KV_URLS to the deployment origin."};try{let i=`${t}/kv-list?prefix=__health__`,n=await fetch(i,{method:"GET",headers:Xf(r)});return{ok:n.ok,status:n.status}}catch(i){return{ok:!1,status:0,error:i?.message||String(i)}}}function rJ(r){return r.ok||r.status===401}function iJ(r){return r.ok}function dp(r){let e=bd(r);if(e)throw new Error("KV proxy misconfigured: "+e.split(` +`)[0]);let t=v3(r);if(!t)throw new Error("KV proxy base URL unavailable: cannot determine deployment origin. Set EO_KV_URLS to the deployment origin.");return t}var up,DE=J(()=>{"use strict";ap();up={name:"kv",async isAvailable(r){if(Gc(r)!==null)return!0;let e=await B3(r);return rJ(e)?!0:(e.error&&console.error("[DB] KV proxy unavailable: "+e.error),!1)},async init(r){},async get(r,e){let t=Gc(e);if(t){let s=o=>o instanceof TypeError||/not a function|invalid|unexpected|argument/i.test(String(o?.message||"")),a;try{a=await t.get(r,"text")}catch(o){if(!s(o))throw o;a=void 0}if(a==null)try{a=await t.get(r,{type:"text"})}catch(o){if(!s(o))throw o;a=null}return a==null?null:typeof a=="string"?a:JSON.stringify(a)}let n=`${dp(e)}/kv-get?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:Xf(e)});if(!s.ok){if(s.status===404)return null;throw new Error(`KV proxy get failed: ${s.status}`)}let a=await s.json();return a?.value===void 0||a?.value===null?null:typeof a.value=="string"?a.value:String(a.value)}catch(s){throw console.error(`[KV] get(${r}) failed:`,s),s}},async put(r,e,t){let i=Gc(t);if(i){await i.put(r,e);return}let s=`${dp(t)}/kv-put`;try{let a=await fetch(s,{method:"POST",headers:Xf(t),body:JSON.stringify({key:r,value:e})});if(!a.ok)throw new Error(`KV proxy put failed: ${a.status}`)}catch(a){throw console.error(`[KV] put(${r}) failed:`,a),a}},async delete(r,e){let t=Gc(e);if(t){await t.delete(r);return}let n=`${dp(e)}/kv-delete?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"DELETE",headers:Xf(e)});if(!s.ok&&s.status!==404)throw new Error(`KV proxy delete failed: ${s.status}`)}catch(s){throw console.error(`[KV] delete(${r}) failed:`,s),s}},async list(r,e){let t=Gc(e);if(t){let s=[],a="",o=!1,c=0;for(;!o&&c<1e3;){c+=1;let l=await t.list({prefix:r,cursor:a,limit:256}),d=Array.isArray(l?.keys)?l.keys:[];for(let u of d)u?.key&&s.push(u.key);d.length>0&&(a=d[d.length-1].key||""),o=!!l?.complete||d.length===0}return s}let n=`${dp(e)}/kv-list?prefix=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:Xf(e)});if(!s.ok)throw new Error(`KV proxy list failed: ${s.status}`);return(await s.json()).keys||[]}catch(s){throw console.error(`[KV] list(${r}) failed:`,s),s}},async health(r){let e=Gc(r);if(e)try{return await e.get("__health_check__"),{driver:"kv",mode:"binding",available:!0,platform:"Cloudflare KV / EdgeOne KV"}}catch(i){return{driver:"kv",mode:"binding",available:!1,error:i?.message||String(i)}}let t=await B3(r);return iJ(t)?{driver:"kv",mode:"proxy",available:!0,platform:"EdgeOne KV (via Edge Function proxy)"}:{driver:"kv",mode:"proxy",available:!1,error:t.error||`HTTP ${t.status}`}}}});function S3(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function vd(r){let e=globalThis,t=r?.ESA_BLOB;if(S3(t))return t;let i=e?.ESA_BLOB;return S3(i)?i:null}async function kd(r="default"){try{let{getStore:e}=await Promise.resolve().then(()=>Qr(SE(),1));return e(r)}catch{return null}}var _E,D3=J(()=>{"use strict";_E={name:"blob",async isAvailable(r){return vd(r)!==null?!0:await kd()!==null},async init(r){},async get(r,e){let t=vd(e);if(t)try{let n=await t.get(r);return n?await n.text():null}catch(n){return console.warn(`[Blob] ESA get key="${r}" failed:`,n),null}let i=await kd();if(!i)throw new Error("Blob not available");try{let n=await i.get(r);return n==null?null:typeof n=="string"?n:JSON.stringify(n)}catch(n){return console.warn(`[Blob] EdgeOne get key="${r}" failed:`,n),null}},async put(r,e,t){let i=vd(t);if(i){await i.put(r,e);return}let n=await kd();if(!n)throw new Error("Blob not available");await n.set(r,e)},async delete(r,e){let t=vd(e);if(t){await t.delete(r);return}let i=await kd();if(!i)throw new Error("Blob not available");await i.delete(r)},async list(r,e){let t=vd(e);if(t){let s=[],a;do{let o=await t.list({prefix:r,cursor:a});s.push(...(o?.keys||[]).map(c=>c.name)),a=o?.cursor}while(a);return s}let i=await kd();if(!i)throw new Error("Blob not available");return((await i.list({prefix:r,paginate:!0}))?.blobs||[]).map(s=>s.key)},async health(r){let e=vd(r),t=await kd();if(e)try{return await e.head("__health_check__"),{driver:"blob",platform:"ESA Blob (binding)",available:!0}}catch(i){return{driver:"blob",platform:"ESA Blob (binding)",available:!1,error:i?.message||String(i)}}if(t)try{return await t.get("__health_check__"),{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!0}}catch(i){return{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!1,error:i?.message||String(i)}}return{driver:"blob",available:!1,error:"No Blob storage available"}}}});function Sd(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e.CF_ACCOUNT||e.CLOUDFLARE_ACCOUNT_ID,i=e.CF_KV_UUID||e.CLOUDFLARE_KV_NAMESPACE_ID,n=e.CF_API_KEY||e.CLOUDFLARE_API_TOKEN;return!t||!i||!n?null:{accountId:t,namespaceId:i,apiToken:n}}function fp(r,e){return`https://api.cloudflare.com/client/v4/accounts/${r.accountId}/storage/kv/namespaces/${r.namespaceId}${e}`}var QE,_3=J(()=>{"use strict";QE={name:"cfkv",async isAvailable(r){return Sd(r)!==null},async init(r){},async get(r,e){let t=Sd(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=fp(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(n.status===404)return null;if(!n.ok)throw new Error(`Cloudflare KV API error: ${n.status}`);return await n.text()},async put(r,e,t){let i=Sd(t);if(!i)throw new Error("Cloudflare KV API not configured");let n=fp(i,`/values/${encodeURIComponent(r)}`),s=await fetch(n,{method:"PUT",headers:{Authorization:`Bearer ${i.apiToken}`},body:e});if(!s.ok)throw new Error(`Cloudflare KV API error: ${s.status}`)},async delete(r,e){let t=Sd(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=fp(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiToken}`}});if(!n.ok&&n.status!==404)throw new Error(`Cloudflare KV API error: ${n.status}`)},async list(r,e){let t=Sd(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=[],n;do{let s=new URLSearchParams({prefix:r,limit:"1000"});n&&s.set("cursor",n);let a=fp(t,`/keys?${s}`),o=await fetch(a,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(!o.ok)throw new Error(`Cloudflare KV API error: ${o.status}`);let c=await o.json();i.push(...(c.result||[]).map(l=>l.name)),n=c.result_info?.cursor}while(n);return i},async health(r){let e=Sd(r);if(!e)return{configured:!1,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:"Missing CF_ACCOUNT, CF_KV_UUID, or CF_API_KEY"};try{return await this.get("__health_check__",r),{configured:!0,connected:!0,platform:"Cloudflare KV API (REST)",mode:"cfkv",accountId:e.accountId,namespaceId:e.namespaceId}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:t?.message||String(t)}}}}});function aJ(r){return"x_"}function Jc(r,e){return aJ(e)+sJ[r]}function oJ(r,e){if(e==null){if(r.pk||r.nullable)return null;switch(r.type){case"string":return"";case"number":return 0;case"bool":return 0;case"json":return"null";case"date":return"";default:return""}}switch(r.type){case"string":return String(e);case"number":return typeof e=="number"?e:Number(e);case"bool":return e?1:0;case"json":return typeof e=="string"?e:JSON.stringify(e);case"date":return e instanceof Date?e.toISOString():typeof e=="number"?new Date(e).toISOString():String(e);default:return e}}function cJ(r,e){if(e==null)return r.type==="json",null;switch(r.type){case"string":{let t=String(e);return t===""?null:t}case"number":return Number(e);case"bool":return e===1||e==="1"||e===!0||e==="true";case"json":{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}case"date":return e;default:return e}}function hp(r,e){let t=Zf[r],i={};for(let n of t.columns){let s=n.key??n.name,a=cJ(n,e[n.name]);a!=null&&(i[s]=a)}return i}function Ap(r,e){let t=Zf[r],i=[],n=[];for(let s of t.columns){let a=s.key??s.name;i.push(s.name),n.push(oJ(s,e?.[a]))}return{columns:i,values:n}}function lJ(r,e){switch(r.type){case"number":return e==="mysql"?"BIGINT":"INTEGER";case"bool":return e==="mysql"?"TINYINT(1)":"INTEGER";case"string":case"json":case"date":return"TEXT";default:return"TEXT"}}function Q3(r,e){return e==="mysql"&&(r.pk||r.unique)&&r.type==="string"?"VARCHAR(255)":lJ(r,e)}function Hn(r){return"`"+r+"`"}function dJ(r,e,t){let i=[];for(let n of r.columns){let s=`${Hn(n.name)} ${Q3(n,e)}`;n.pk?s+=" PRIMARY KEY":n.nullable||(s+=" NOT NULL"),n.unique&&(s+=" UNIQUE"),i.push(s)}return`CREATE TABLE IF NOT EXISTS ${Hn(t)} (${i.join(", ")})`}function gp(r,e,t,i){let n=Zf[r].columns.find(a=>a.name===e);if(!n)throw new Error(`Unknown column ${r}.${e}`);let s=`${Hn(n.name)} ${Q3(n,t)}`;return n.nullable||(s+=" NOT NULL"),n.unique&&(s+=" UNIQUE"),`ALTER TABLE ${Hn(Jc(r,i))} ADD COLUMN ${s}`}function F3(r,e){return`PRAGMA table_info(${Hn(Jc(r,e))})`}function uJ(r){let e=r==="mysql"?"VARCHAR(255)":"TEXT";return`CREATE TABLE IF NOT EXISTS ${Hn("schema_info")} (${Hn("k")} ${e} PRIMARY KEY, ${Hn("v")} TEXT)`}function Dd(r,e){let t=[uJ(r)];for(let i of nJ)t.push(dJ(Zf[i],r,Jc(i,e)));return t}var wo,nJ,zc,Zf,sJ,kAe,SAe,P3,T3,eh=J(()=>{"use strict";wo=["settings","storages","users","shares","metas","plugins"],nJ=[...wo,"sshkeys"],zc={settings:"key",storages:"id",users:"id",shares:"id",metas:"id",plugins:"id",sshkeys:"id"},Zf={settings:{name:"settings",columns:[{name:"key",type:"string",pk:!0},{name:"value",type:"string",nullable:!0},{name:"help",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"options",type:"string",nullable:!0},{name:"group",type:"number",nullable:!0},{name:"flag",type:"number",nullable:!0},{name:"index",type:"number",nullable:!0}]},storages:{name:"storages",columns:[{name:"id",type:"number",pk:!0},{name:"mount_path",type:"string",unique:!0},{name:"order",type:"number",nullable:!0},{name:"driver",type:"string",nullable:!0},{name:"cache_expiration",type:"number",nullable:!0},{name:"custom_cache_policies",type:"string",nullable:!0},{name:"status",type:"string",nullable:!0},{name:"addition",type:"string",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"modified",type:"date",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"disable_index",type:"bool",nullable:!0},{name:"enable_sign",type:"bool",nullable:!0},{name:"seed_policy",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0},{name:"web_proxy",type:"bool",nullable:!0},{name:"webdav_policy",type:"string",nullable:!0},{name:"proxy_range",type:"bool",nullable:!0},{name:"down_proxy_url",type:"string",nullable:!0},{name:"disable_proxy_sign",type:"bool",nullable:!0}]},users:{name:"users",columns:[{name:"id",type:"number",pk:!0},{name:"username",type:"string",unique:!0},{name:"password",type:"string",nullable:!0},{name:"base_path",type:"string",nullable:!0},{name:"role",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"permission",type:"number",nullable:!0},{name:"salt",type:"string",nullable:!0},{name:"otp_secret",type:"string",nullable:!0},{name:"sso_id",type:"string",nullable:!0},{name:"authn",type:"string",nullable:!0},{name:"allow_ldap",type:"bool",nullable:!0},{name:"pwd_update_at",type:"date",nullable:!0}]},shares:{name:"shares",columns:[{name:"id",type:"string",pk:!0},{name:"files_raw",key:"files",type:"json",nullable:!0},{name:"expires",type:"date",nullable:!0},{name:"pwd",type:"string",nullable:!0},{name:"accessed",type:"number",nullable:!0},{name:"max_accessed",type:"number",nullable:!0},{name:"creator_id",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0}]},metas:{name:"metas",columns:[{name:"id",type:"number",pk:!0},{name:"path",type:"string",unique:!0},{name:"read_users",type:"json",nullable:!0},{name:"read_users_sub",type:"bool",nullable:!0},{name:"write_users",type:"json",nullable:!0},{name:"write_users_sub",type:"bool",nullable:!0},{name:"password",type:"string",nullable:!0},{name:"p_sub",type:"bool",nullable:!0},{name:"write",type:"bool",nullable:!0},{name:"w_sub",type:"bool",nullable:!0},{name:"hide",type:"string",nullable:!0},{name:"h_sub",type:"bool",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"r_sub",type:"bool",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"header_sub",type:"bool",nullable:!0}]},sshkeys:{name:"sshkeys",columns:[{name:"id",type:"number",pk:!0},{name:"user_id",type:"number",nullable:!0},{name:"title",type:"string",nullable:!0},{name:"fingerprint",type:"string",nullable:!0},{name:"key_str",type:"string",nullable:!0},{name:"added_time",type:"date",nullable:!0},{name:"last_used_time",type:"date",nullable:!0}]},plugins:{name:"plugins",columns:[{name:"id",type:"string",pk:!0},{name:"name",type:"string",nullable:!0},{name:"version",type:"string",nullable:!0},{name:"manifest",type:"json",nullable:!0},{name:"description",type:"string",nullable:!0},{name:"author",type:"string",nullable:!0},{name:"homepage",type:"string",nullable:!0},{name:"repository",type:"string",nullable:!0},{name:"icon",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"enabled",type:"bool",nullable:!0},{name:"high_privilege",type:"bool",nullable:!0},{name:"permissions",type:"json",nullable:!0},{name:"entry_url",type:"string",nullable:!0},{name:"script_content",type:"string",nullable:!0},{name:"style_content",type:"string",nullable:!0},{name:"config_schema",type:"json",nullable:!0},{name:"config_values",type:"json",nullable:!0},{name:"target_hooks",type:"json",nullable:!0},{name:"is_builtin",type:"bool",nullable:!0},{name:"tags",type:"json",nullable:!0},{name:"created_at",type:"date",nullable:!0},{name:"updated_at",type:"date",nullable:!0}]}},sJ={settings:"setting_items",storages:"storages",users:"users",shares:"sharing_dbs",metas:"metas",plugins:"plugins",sshkeys:"ssh_public_keys"};kAe=Dd("sqlite"),SAe=Dd("mysql"),P3=[`CREATE TABLE IF NOT EXISTS ${Hn("kv")} (${Hn("key")} TEXT PRIMARY KEY, ${Hn("value")} TEXT NOT NULL)`],T3=["CREATE TABLE IF NOT EXISTS `kv` (`key` VARCHAR(512) PRIMARY KEY, `value` LONGTEXT NOT NULL)"]});function U3(r){if(!r||typeof r!="object")return!1;try{return typeof r.prepare=="function"}catch{return!1}}function fs(r){let e=typeof globalThis<"u"?globalThis:{};for(let t of["DB","OPENLIST_DB"]){let i=r?.[t];if(U3(i))return i;let n=e?.[t];if(U3(n))return n}return null}async function R3(r,e){return((await r.prepare(F3("plugins",e)).all()).results||[]).some(i=>i.name==="manifest")}function xo(r,e){let t=pp.get(r);if(t)return t;let i=(async()=>{for(let n of[...P3,...Dd("sqlite",e)])await r.prepare(n).run();if(!await R3(r,e))try{await r.prepare(gp("plugins","manifest","sqlite",e)).run()}catch(n){if(!await R3(r,e))throw n}})();return pp.set(r,i),i.catch(()=>{pp.get(r)===i&&pp.delete(r)}),i}var pp,FE,N3=J(()=>{"use strict";eh();pp=new WeakMap;FE={name:"d1",async isAvailable(r){return fs(r)!=null},async init(r){let e=fs(r);e&&await xo(e,r)},async get(r,e){let t=fs(e);if(!t)throw new Error("D1 binding not found");return await xo(t,e),(await t.prepare("SELECT value FROM kv WHERE key = ?").bind(r).first())?.value||null},async put(r,e,t){let i=fs(t);if(!i)throw new Error("D1 binding not found");await xo(i,t),await i.prepare("INSERT OR REPLACE INTO kv (key, value) VALUES (?, ?)").bind(r,e).run()},async delete(r,e){let t=fs(e);if(!t)throw new Error("D1 binding not found");await xo(t,e),await t.prepare("DELETE FROM kv WHERE key = ?").bind(r).run()},async list(r,e){let t=fs(e);if(!t)throw new Error("D1 binding not found");return await xo(t,e),((await t.prepare("SELECT key FROM kv WHERE key LIKE ? ORDER BY key").bind(`${r}%`).all()).results||[]).map(n=>n.key)},async query(r,e,t){let i=fs(t);if(!i)throw new Error("D1 binding not found");return await xo(i,t),(await i.prepare(r).bind(...e).all()).results||[]},async execute(r,e,t){let i=fs(t);if(!i)throw new Error("D1 binding not found");await xo(i,t),await i.prepare(r).bind(...e).run()},async batch(r,e){let t=fs(e);if(!t)throw new Error("D1 binding not found");await xo(t,e);let i=r.map(n=>t.prepare(n.sql).bind(...n.params));await t.batch(i)},async health(r){let e=fs(r);if(!e)return{configured:!1,connected:!1,platform:"Cloudflare D1",mode:"d1",error:"D1 binding not found (expected env.DB or env.OPENLIST_DB)"};try{return await e.prepare("SELECT 1").first(),{configured:!0,connected:!0,platform:"Cloudflare D1",mode:"d1"}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare D1",mode:"d1",error:t?.message||String(t)}}}}});function O3(r){if(!r||typeof r!="object")return!1;try{return typeof r.idFromName=="function"}catch{return!1}}function PE(r){let e=typeof globalThis<"u"?globalThis:{};return O3(r?.DO)?r.DO:O3(e?.DO)?e.DO:null}function q3(r){let e=r||(typeof process<"u"?process.env:{})||{};return String(e?.DO_ID||"openlist-db")}function na(r){let e=PE(r);if(!e)return null;try{let t=e.idFromName(q3(r));return e.get(t)}catch{return null}}var TE,M3=J(()=>{"use strict";TE={name:"do",async isAvailable(r){return PE(r)!=null},async init(r){let e=na(r);e&&typeof e.init=="function"&&await e.init()},async get(r,e){let t=na(e);if(!t)throw new Error("DO binding not found");return await t.kvGet(r)},async put(r,e,t){let i=na(t);if(!i)throw new Error("DO binding not found");await i.kvPut(r,e)},async delete(r,e){let t=na(e);if(!t)throw new Error("DO binding not found");await t.kvDelete(r)},async list(r,e){let t=na(e);if(!t)throw new Error("DO binding not found");return await t.kvList(r)},async query(r,e,t){let i=na(t);if(!i)throw new Error("DO binding not found");return await i.sqlQuery(r,e)},async execute(r,e,t){let i=na(t);if(!i)throw new Error("DO binding not found");await i.sqlExecute(r,e)},async batch(r,e){let t=na(e);if(!t)throw new Error("DO binding not found");await t.sqlBatch(r)},async health(r){if(!PE(r))return{configured:!1,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:"DO binding not found (expected env.DO)"};try{return await na(r).health(),{configured:!0,connected:!0,platform:"Cloudflare Durable Objects (SQLite)",mode:"do",doId:q3(r)}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:t?.message||String(t)}}}}});function L3(){return typeof process<"u"&&process.release?.name==="node"}function RE(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e?.MYSQL_URLS;if(t)return t;let i=e?.MYSQL_HOST;return i?{host:i,port:Number(e?.MYSQL_PORT||3306),user:e?.MYSQL_USER||"",password:e?.MYSQL_PASS||"",database:e?.MYSQL_NAME||""}:null}async function sa(r){let e=RE(r);if(!e)return null;let t=JSON.stringify(e);if(UE&&H3===t)return UE;if(th?.key===t)return th.promise;let i=(async()=>{let n="mysql2/promise",{createPool:s}=await import(n),a=s(e);return UE=a,H3=t,a})();th={key:t,promise:i};try{return await i}finally{th?.promise===i&&(th=null)}}async function K3(r,e){let[t]=await r.query("SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ?",[Jc("plugins",e),"manifest"]);return Array.isArray(t)&&t.length>0}function Co(r,e){let t=mp.get(r);if(t)return t;let i=(async()=>{for(let n of[...T3,...Dd("mysql",e)])await r.query(n);if(!await K3(r,e))try{await r.query(gp("plugins","manifest","mysql",e))}catch(n){if(!await K3(r,e))throw n}})();return mp.set(r,i),i.catch(()=>{mp.get(r)===i&&mp.delete(r)}),i}var UE,H3,th,mp,NE,G3=J(()=>{"use strict";eh();UE=null,H3=null,th=null;mp=new WeakMap;NE={name:"mysql",async isAvailable(r){return L3()?RE(r)!=null:!1},async init(r){let e=await sa(r);e&&await Co(e,r)},async get(r,e){let t=await sa(e);if(!t)throw new Error("MySQL pool not available");await Co(t,e);let[i]=await t.query("SELECT `value` FROM `kv` WHERE `key` = ?",[r]);return i?.[0]?.value||null},async put(r,e,t){let i=await sa(t);if(!i)throw new Error("MySQL pool not available");await Co(i,t),await i.query("INSERT INTO `kv` (`key`, `value`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)",[r,e])},async delete(r,e){let t=await sa(e);if(!t)throw new Error("MySQL pool not available");await Co(t,e),await t.query("DELETE FROM `kv` WHERE `key` = ?",[r])},async list(r,e){let t=await sa(e);if(!t)throw new Error("MySQL pool not available");await Co(t,e);let[i]=await t.query("SELECT `key` FROM `kv` WHERE `key` LIKE ? ORDER BY `key`",[`${r}%`]);return(i||[]).map(n=>n.key)},async query(r,e,t){let i=await sa(t);if(!i)throw new Error("MySQL pool not available");await Co(i,t);let[n]=await i.query(r,e);return n||[]},async execute(r,e,t){let i=await sa(t);if(!i)throw new Error("MySQL pool not available");await Co(i,t),await i.query(r,e)},async batch(r,e){let t=await sa(e);if(!t)throw new Error("MySQL pool not available");await Co(t,e);let i=await t.getConnection();try{await i.beginTransaction();for(let n of r)await i.query(n.sql,n.params);await i.commit()}catch(n){try{await i.rollback()}catch{}throw n}finally{i.release()}},async health(r){if(!L3())return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL backend requires Node.js runtime"};if(!RE(r))return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL config not found (expected MYSQL_URLS or MYSQL_HOST)"};try{return await(await sa(r)).query("SELECT 1"),{configured:!0,connected:!0,platform:"MySQL (mysql2)",mode:"mysql"}}catch(t){return{configured:!0,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:t?.message||String(t)}}}}});var rh,yp,z3=J(()=>{"use strict";rh=new Map,yp={name:"memory",async isAvailable(){return!0},async init(){},async get(r){return rh.get(r)??null},async put(r,e){rh.set(r,e)},async delete(r){rh.delete(r)},async list(r){return[...rh.keys()].filter(e=>e.startsWith(r))},async health(){return{configured:!0,connected:!0,platform:"Memory",mode:"memory",hasData:rh.size>0,error:null}}}});var J3,j3,$3=J(()=>{"use strict";J3="openlist_config",j3={name:"map",async load(r,e){let t=await r.get(J3,e);if(!t)return null;try{return JSON.parse(t)}catch(i){return console.error("[mapFormat] Failed to parse JSON:",i),null}},async save(r,e,t){let i=JSON.stringify(r);return await e.put(J3,i,t),!0}}});function fJ(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9"||r==="_"}function V3(r){let e=String(r??"");if(e==="")return"0";if(/^[A-Za-z0-9_]+$/.test(e))return e;let t="";for(let i of e)if(fJ(i))t+=i;else for(let n of new TextEncoder().encode(i))t+="x"+n.toString(16).padStart(2,"0");return t}function OE(r){return`${V3(r)}_`}function Y3(r,e){return`${OE(r)}${V3(e)}`}var W3=J(()=>{"use strict"});function Ip(r){return OE(r)}function ih(r,e){return Y3(r,e)}var X3,Z3,eQ=J(()=>{"use strict";eh();W3();X3="openlist_config";Z3={name:"key",async load(r,e){if(!await r.get(X3,e))return null;let i={};for(let n of wo){let s=Ip(n),a=await r.list(s,e),o=[];for(let c of a){let l=await r.get(c,e);if(l)try{o.push(JSON.parse(l))}catch(d){console.warn(`[keyFormat] Failed to parse ${c}:`,d)}}i[n]=o}return i},async save(r,e,t){for(let i of wo){let n=Ip(i),s=await e.list(n,t);for(let a of s)await e.delete(a,t)}for(let i of wo){let n=zc[i],s=r?.[i]||[];for(let a of s){let o=String(a?.[n]??"");if(!o)continue;let c=ih(i,o),l=JSON.stringify(a);await e.put(c,l,t)}}return await e.put(X3,String(Date.now()),t),!0},async getTable(r,e,t){let i=Ip(r),n=await e.list(i,t),s=[];for(let a of n){let o=await e.get(a,t);if(o)try{s.push(JSON.parse(o))}catch(c){console.warn(`[keyFormat] Failed to parse ${a}:`,c)}}return s},async saveTable(r,e,t,i){let n=zc[r],s=Ip(r),a=await t.list(s,i);for(let o of a)await t.delete(o,i);for(let o of e){let c=String(o?.[n]??"");if(!c)continue;let l=ih(r,c),d=JSON.stringify(o);await t.put(l,d,i)}},async getRecord(r,e,t,i){let n=ih(r,e),s=await t.get(n,i);if(!s)return null;try{return JSON.parse(s)}catch(a){return console.warn(`[keyFormat] Failed to parse ${n}:`,a),null}},async saveRecord(r,e,t,i,n){let s=ih(r,e),a=JSON.stringify(t);await i.put(s,a,n)},async deleteRecord(r,e,t,i){let n=ih(r,e);await t.delete(n,i)}}});function aa(r){return"`"+r+"`"}function qE(r,e,t,i){let n=e.map(a=>aa(a)).join(", "),s=e.map(()=>"?").join(", ");if(i.name==="mysql"){let a=e.slice(1).map(c=>`${aa(c)} = VALUES(${aa(c)})`).join(", ");return{sql:a?`INSERT INTO ${r} (${n}) VALUES (${s}) ON DUPLICATE KEY UPDATE ${a}`:`INSERT INTO ${r} (${n}) VALUES (${s})`,params:t}}return{sql:`INSERT OR REPLACE INTO ${r} (${n}) VALUES (${s})`,params:t}}function hs(r,e){return aa(Jc(r,e))}var tQ,rQ,iQ=J(()=>{"use strict";eh();tQ="openlist_config";rQ={name:"sql",async load(r,e){if(!r.query)throw new Error(`Driver ${r.name} does not support SQL queries`);let t=await r.query("SELECT v FROM schema_info WHERE k = ?",[tQ],e);if(!t||t.length===0)return null;let i={};for(let n of wo){let s=await r.query(`SELECT * FROM ${hs(n,e)}`,[],e);i[n]=s.map(a=>hp(n,a))}return i},async save(r,e,t){if(!e.batch)throw new Error(`Driver ${e.name} does not support batch operations`);let i=[];for(let n of wo){let s=zc[n],a=r?.[n]||[],o=[];for(let l of a){let{columns:d,values:u}=Ap(n,l),f=qE(hs(n,t),d,u,e);i.push({sql:f.sql,params:f.params});let A=l?.[s];A!=null&&o.push(String(A))}let c=o.length>0?`DELETE FROM ${hs(n,t)} WHERE ${aa(s)} NOT IN (${o.map(()=>"?").join(", ")})`:`DELETE FROM ${hs(n,t)}`;i.push({sql:c,params:o})}return i.push(qE(aa("schema_info"),["k","v"],[tQ,String(Date.now())],e)),await e.batch(i,t),!0},async getTable(r,e,t){if(!e.query)throw new Error(`Driver ${e.name} does not support SQL queries`);let i=r;return(await e.query(`SELECT * FROM ${hs(i,t)}`,[],t)).map(s=>hp(i,s))},async saveTable(r,e,t,i){if(!t.batch)throw new Error(`Driver ${t.name} does not support batch operations`);let n=r,s=[{sql:`DELETE FROM ${hs(n,i)}`,params:[]}];for(let a of e){let{columns:o,values:c}=Ap(n,a),l=o.map(()=>"?").join(", "),d=`INSERT INTO ${hs(n,i)} (${o.map(u=>aa(u)).join(", ")}) VALUES (${l})`;s.push({sql:d,params:c})}await t.batch(s,i)},async getRecord(r,e,t,i){if(!t.query)throw new Error(`Driver ${t.name} does not support SQL queries`);let n=r,s=zc[n],a=await t.query(`SELECT * FROM ${hs(n,i)} WHERE ${aa(s)} = ?`,[e],i);return a.length>0?hp(n,a[0]):null},async saveRecord(r,e,t,i,n){if(!i.execute)throw new Error(`Driver ${i.name} does not support SQL execution`);let s=r,{columns:a,values:o}=Ap(s,t),{sql:c}=qE(hs(s,n),a,o,i);await i.execute(c,o,n)},async deleteRecord(r,e,t,i){if(!t.execute)throw new Error(`Driver ${t.name} does not support SQL execution`);let n=r,s=zc[n];await t.execute(`DELETE FROM ${hs(n,i)} WHERE ${aa(s)} = ?`,[e],i)}}});var hQ={};An(hQ,{MEMORY_SERVERLESS_MESSAGE:()=>cQ,NO_STORAGE_MESSAGE:()=>Eo,getStorageBackend:()=>zE,getStoreBackend:()=>xp,getStoreConfigErrorDetail:()=>$c,getStoreStatus:()=>gs,isPersistentStorageAvailable:()=>Cp,isServerlessRuntime:()=>As,readCipher:()=>jc,readDriver:()=>wp,readFormat:()=>_d});function GE(r,e,t){let i=t||(typeof process<"u"?process.env:{})||{};return String(i[r]||"").trim().toLowerCase()||e}function wp(r){let e=r||(typeof process<"u"?process.env:{})||{},t=GE("DB_DRIVER","auto",r);return t==="json"?(console.warn("[DEPRECATED] DB_DRIVER=json is deprecated. Use DB_FORMAT=map instead."),"auto"):t}function _d(r){let e=r||(typeof process<"u"?process.env:{})||{};return String(e.DB_DRIVER||"").trim().toLowerCase()==="json"?"map":GE("DB_FORMAT","map",r)}function jc(r){let e=GE("DB_CIPHER",Kf,r),{cipher:t,known:i}=W_(e);return i||console.warn(`[DB] Unknown DB_CIPHER "${e}"; falling back to "${Kf}". Valid values: ${Y_.join(", ")}.`),t}function As(r){let e=globalThis;try{if(r?.__requestOrigin||r?.__requestContext||r?.__makersContext||r?.EDGEONE_BLOB||e?.EDGEONE_BLOB||typeof e?.EdgeOne<"u"||typeof e.WebSocketPair=="function"||typeof e.caches<"u"&&e.caches?.default||r?.ESA_BLOB||e?.ESA_BLOB||typeof e?.ESA<"u"||r?.TENCENTCLOUD_SCF_FUNCTIONNAME||typeof process<"u"&&process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME)return!0}catch{}return!1}async function oQ(r){let e=[];hJ(r)&&e.push(NE),e.push(FE,up,QE,_E,TE);for(let t of e)if(await t.isAvailable(r))return console.log(`[DB] Auto-detected driver: ${t.name}`),t;if(As(r))throw nh("NO_STORAGE",Eo,AJ(r));return console.warn("[DB] No storage binding detected, falling back to memory (data will not persist)."),yp}function hJ(r){let e=r||{},t=typeof process<"u"?process.env||{}:{};return!!(e.MYSQL_URLS||t.MYSQL_URLS||e.MYSQL_HOST||t.MYSQL_HOST)}function AJ(r){let e=globalThis,t=!!(r?.EDGEONE_BLOB||e?.EDGEONE_BLOB)||typeof e?.EdgeOne<"u"||!!(r?.TENCENTCLOUD_SCF_FUNCTIONNAME||typeof process<"u"&&process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME),i=!!(r?.ESA_BLOB||e?.ESA_BLOB)||typeof e?.ESA<"u",n=!t&&!i;return t?"DB_DRIVER=auto already probed every driver. On EdgeOne, bind a Blob store (or enable the EdgeOne Blob SDK), or bind a KV namespace to an Edge Function and proxy it (Node functions do not receive KV bindings).":i?"DB_DRIVER=auto already probed every driver. On Alibaba ESA, bind an ESA_BLOB store, or set DB_DRIVER=blob.":n?'DB_DRIVER=auto already probed every driver. On Cloudflare Workers, add a binding to wrangler.jsonc: D1 as {"d1_databases":[{"binding":"DB"}]} or KV as {"kv_namespaces":[{"binding":"KV"}]}, then redeploy so the binding is injected.':"DB_DRIVER=auto already probed every driver. Bind a persistent backend (Cloudflare: D1/KV; EdgeOne: Blob; ESA: ESA_BLOB), then redeploy."}function nh(r,e,t){let i=new Error(e);return i.storeCode=r,t&&(i.storeHint=t),i}function gJ(r){let e=r?.storeHint;return typeof e=="string"&&e.trim()?e.trim():null}function lQ(r){return r?.storeCode||"DRIVER_ERROR"}async function yJ(r,e){let t=`${e}:${As(r)?"sl":"local"}:${dQ(r)}`;if(ME?.key===t)return ME.driver;let i=null;try{let n=await oQ(r);n&&n!==yp&&n.name!==e&&(i=n)}catch{}return ME={key:t,driver:i},i}function IJ(r){return r?`Auto-detection would pick: DB_DRIVER=${r.name} (or simply set DB_DRIVER=auto). +`:""}function xJ(r,e){let t=r,i=!!(t.get&&t.put&&t.delete&&t.list),n=!!(r.query&&r.execute&&r.batch),s=e.name==="sql"?n:i,a=wJ[r.name],o=!a||a.includes(e.name);if(s&&o)return;let c=(a??[i?"map | key":null,n?"sql":null].filter(Boolean)).join(" | ");throw nh("INVALID_COMBINATION",`Invalid storage combination: DB_FORMAT="${e.name}" cannot be used with DB_DRIVER="${r.name}". +Driver "${r.name}" supports: ${c||"no format"}. `+(e.name==="sql"?`The "sql" format needs a relational driver (SQL query support): d1 | do | mysql. -`:`The "${e.name}" format needs a key-value driver (get/put/delete/list): kv | cfkv | blob | d1 | do | mysql. -`)+`Fix DB_FORMAT or DB_DRIVER. See ${MH}`)}async function zH(r,e){if(r==="auto")return await wS(e);let t=pS[r];if(!t)throw Uu("UNKNOWN_DRIVER",`Unknown DB_DRIVER "${r}". Valid values: auto, ${Object.keys(pS).join(", ")}`);let i=!1;try{i=await t.isAvailable(e)}catch{i=!1}if(t===eh&&zn(e))throw Uu("NO_STORAGE",Fs);if(!i){let n=await HH(e,r);throw Uu("DRIVER_UNAVAILABLE",`DB_DRIVER is set to "${r}", but that driver is not available in this runtime. +`:`The "${e.name}" format needs a key-value driver (get/put/delete/list): kv | cfkv | d1 | do | mysql. +`)+`Fix DB_FORMAT or DB_DRIVER. See ${pJ}`,e.name==="sql"?"Set DB_FORMAT=map (or key), or switch to a relational driver (DB_DRIVER=d1 | do | mysql).":`Set DB_FORMAT=map for DB_DRIVER="${r.name}"`+(c.includes("|")?`, or one of: ${c}.`:"."))}async function CJ(r,e){if(r==="auto")return await oQ(e);if(r==="memory"){if(!As(e))return console.log("[DB] Using explicitly configured driver: memory"),yp;throw nh("NO_STORAGE",cQ,"Use DB_DRIVER=auto, or bind a persistent backend (D1 / KV / Blob).")}let t=nQ[r];if(!t)throw nh("UNKNOWN_DRIVER",`Unknown DB_DRIVER "${r}". Valid values: auto, memory, ${Object.keys(nQ).join(", ")}`);let i=!1;try{i=await t.isAvailable(e)}catch{i=!1}if(!i){let n=await yJ(e,r);throw nh("DRIVER_UNAVAILABLE",`DB_DRIVER is set to "${r}", but that driver is not available in this runtime. No fallback is performed for an explicitly configured driver. -`+KH(n)+`Check the binding/credentials for "${r}", or set DB_DRIVER=auto to let the platform pick an available backend. -`+(LH[r]||"")+`Environment: ${zn(e)?"serverless/worker":"local/container"}`,n?`Set DB_DRIVER=${n.name} (or DB_DRIVER=auto) in your deployment variables.`:`Set DB_DRIVER=auto in your deployment variables, or provide the binding/credentials required by "${r}".`)}return console.log(`[DB] Using explicitly configured driver: ${t.name}`),t}function JH(r){switch(r){case"map":return sS;case"key":return uS;case"sql":return hS;default:throw new Error(`Unknown format: ${r}`)}}function CS(r){if(r&&(typeof r=="object"||typeof r=="function")){let e=yS.get(r);return e===void 0&&(e=++jH,yS.set(r,e)),String(e)}return"none"}async function Wx(r){let e=rh(r),t=ih(r),i=zn(r)?"sl":"local",n=`${e}:${t}:${i}:${CS(r)}`;if($x&&Vx&&mS===n)return{driver:$x,format:Vx};let s=await zH(e,r),o=JH(t);if(GH(s,o),s.init)try{await s.init(r)}catch(a){console.warn(`[DB] Driver init failed (${s.name}):`,a)}return $x=s,Vx=o,mS=n,console.log(`[DB] Using driver=${s.name}, format=${o.name}`),{driver:s,format:o}}async function nh(r){let{driver:e,format:t}=await Wx(r);return{name:e.name,load:i=>t.load(e,i),save:(i,n)=>t.save(i,e,n),isConfigured:i=>e.isAvailable(i),init:i=>e.init(i),health:i=>e.health(i)}}async function Jn(r){let e=null,t=null,i=null,n=null;try{let o=await Wx(r);e=o.driver,t=o.format}catch(o){let a=String(o?.message||o),c=a.includes("No storage backend is available");return{driver:"none",format:"none",available:!1,configError:c?Fs:a,configErrorCode:xS(o),configSuggestion:OH(o)||(c?"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.":null)}}let s=null;try{s=await e.health(r)}catch(o){s={connected:!1,error:o?.message||String(o)}}if(e.name==="kv"){try{i=ec(r)}catch{i=null}i&&(n="PROXY_CONFIG",console.error(`[DB] KV proxy configuration error: -`+i))}return{driver:e.name,format:t.name,...s||{},...i?{configError:i,configErrorCode:n,available:!1}:{}}}async function Xx(r){let e=await ES(r);return BS(e)}async function ES(r){try{return await Jn(r)}catch(e){return{driver:"none",format:"none",available:!1,configError:String(e?.message||e),configErrorCode:xS(e)}}}function BS(r){let e=String(r?.driver??"none"),t=e!=="none"&&e!=="",i=e==="memory",n=!!r?.configError,s=r?.available!==!1;return t&&!i&&!n&&s}async function rc(r,e={}){let t=(l,d)=>{if(e.silent)return;let u=l+d;Yx!==u&&(Yx=u,console.error(l+d))};if(!r||typeof r!="object")return{code:null,message:null,suggestion:null};let i=String(r?.DB_DRIVER||"").trim().toLowerCase()==="kv";if(i){let l=ec(r);if(l)return t(`[DB] KV proxy configuration error: -`,l),{code:"PROXY_CONFIG",message:l,suggestion:"Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto."}}let n=await ES(r);if(BS(n))return Yx=null,{code:null,message:null,suggestion:null};if(!i&&String(n?.driver??"")==="kv"){let l=ec(r);if(l)return t(`[DB] KV proxy configuration error: -`,l),{code:"PROXY_CONFIG",message:l,suggestion:"Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto."};if(n?.mode==="proxy"&&n?.error?.includes("401")){let d=`KV proxy rejected the internal call (HTTP 401). The JWT_SECRET used by this deployment does not match the one configured on the Edge Functions serving the proxy. Make sure both use the same JWT_SECRET. +`+IJ(n)+`Check the binding/credentials for "${r}", or set DB_DRIVER=auto to let the platform pick an available backend. +`+(mJ[r]||"")+`Environment: ${As(e)?"serverless/worker":"local/container"}`,n?`Set DB_DRIVER=${n.name} (or DB_DRIVER=auto) in your deployment variables.`:`Set DB_DRIVER=auto in your deployment variables, or provide the binding/credentials required by "${r}".`)}return console.log(`[DB] Using explicitly configured driver: ${t.name}`),t}function EJ(r){switch(r){case"map":return j3;case"key":return Z3;case"sql":return rQ;default:throw new Error(`Unknown format: ${r}`)}}function dQ(r){if(r&&(typeof r=="object"||typeof r=="function")){let e=aQ.get(r);return e===void 0&&(e=++BJ,aQ.set(r,e)),String(e)}return"none"}async function zE(r){let e=wp(r),t=_d(r),i=As(r)?"sl":"local",n=`${e}:${t}:${i}:${dQ(r)}`;if(LE&&HE&&sQ===n)return{driver:LE,format:HE};let s=await CJ(e,r),a=EJ(t);if(xJ(s,a),s.init)try{await s.init(r)}catch(o){console.warn(`[DB] Driver init failed (${s.name}):`,o)}return LE=s,HE=a,sQ=n,console.log(`[DB] Using driver=${s.name}, format=${a.name}`),{driver:s,format:a}}async function xp(r){let{driver:e,format:t}=await zE(r);return{name:e.name,load:i=>t.load(e,i),save:(i,n)=>t.save(i,e,n),isConfigured:i=>e.isAvailable(i),init:i=>e.init(i),health:i=>e.health(i)}}async function gs(r){let e=null,t=null,i=null,n=null;try{let a=await zE(r);e=a.driver,t=a.format}catch(a){let o=String(a?.message||a),c=o.includes("No storage backend is available");return{driver:"none",format:"none",available:!1,configError:c?Eo:o,configErrorCode:lQ(a),configSuggestion:gJ(a)||(c?"Bind a persistent storage backend, then redeploy.":null)}}let s=null;try{s=await e.health(r)}catch(a){s={connected:!1,error:a?.message||String(a)}}return{driver:e.name,format:t.name,...s||{}}}async function Cp(r){let e=await uQ(r);return fQ(e)}async function uQ(r){try{return await gs(r)}catch(e){return{driver:"none",format:"none",available:!1,configError:String(e?.message||e),configErrorCode:lQ(e)}}}function fQ(r){let e=String(r?.driver??"none"),t=e!=="none"&&e!=="",i=e==="memory",n=!!r?.configError,s=r?.available!==!1;return t&&!i&&!n&&s}async function $c(r,e={}){let t=(d,u)=>{if(e.silent)return;let f=d+u;KE!==f&&(KE=f,console.error(d+u))};if(!r||typeof r!="object")return{code:null,message:null,suggestion:null};let i=d=>(t(`[DB] KV proxy configuration error: +`,d),{code:"PROXY_CONFIG",message:d,suggestion:"Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto."}),n=String(r?.DB_DRIVER||"").trim().toLowerCase()==="kv";if(n){let d=bd(r);if(d)return i(d)}let s=await uQ(r);if(fQ(s))return KE=null,{code:null,message:null,suggestion:null};if(!n&&String(s?.driver??"")==="kv"){let d=bd(r);if(d)return i(d);if(s?.mode==="proxy"&&s?.error?.includes("401")){let u=`KV proxy rejected the internal call (HTTP 401). The JWT_SECRET used by this deployment does not match the one configured on the Edge Functions serving the proxy. Make sure both use the same JWT_SECRET. Alternatively set EO_KV_URLS to the correct deployment origin.`;return t(`[DB] KV proxy authentication failed: -`,d),{code:"PROXY_CONFIG",message:d,suggestion:"Use the same JWT_SECRET (>=16 chars) on the Edge Function and this deployment."}}}let s=n?.configError?String(n.configError):null;if(s)return t(`[DB] Storage configuration error: -`,s),{code:n?.configErrorCode||"DRIVER_ERROR",message:s,suggestion:n?.configSuggestion||null};if(String(n?.driver??"none")==="memory")return t(`[DB] Storage configuration error: -`,Fs),{code:"NO_STORAGE",message:Fs,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."};let o=n?.error?String(n.error):null;if(o)return t(`[DB] Storage unhealthy: -`,o),{code:"HEALTH_ERROR",message:o,suggestion:"Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto."};let a=String(n?.driver??"none"),c=a==="none"||a===""?Fs:`Storage driver "${a}" is not available in this runtime. Check its configuration and bindings, or set DB_DRIVER=auto.`;return t(`[DB] Storage unavailable: -`,c),{code:a==="none"||a===""?"NO_STORAGE":"DRIVER_ERROR",message:c,suggestion:a==="none"||a===""?"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.":`Set DB_DRIVER=auto, or provide the binding/credentials required by "${a}".`}}var Fs,pS,MH,LH,jx,$x,Vx,mS,yS,jH,Yx,ic=j(()=>{"use strict";Kk();Gk();Ux();Vk();Xk();rS();iS();oS();fS();gS();Fs=`No storage backend is available. Data cannot be persisted in this runtime (serverless environments cannot use in-memory storage). +`,u),{code:"PROXY_CONFIG",message:u,suggestion:"Use the same JWT_SECRET on the Edge Function and this deployment."}}}let a=s?.configError?String(s.configError):null;if(a)return t(`[DB] Storage configuration error: +`,a),{code:s?.configErrorCode||"DRIVER_ERROR",message:a,suggestion:s?.configSuggestion||null};if(String(s?.driver??"none")==="memory")return t(`[DB] Storage configuration error: +`,Eo),{code:"NO_STORAGE",message:Eo,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."};let o=s?.error?String(s.error):null;if(o)return t(`[DB] Storage unhealthy: +`,o),{code:"HEALTH_ERROR",message:o,suggestion:"Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto."};let c=String(s?.driver??"none"),l=c==="none"||c===""?Eo:`Storage driver "${c}" is not available in this runtime. Check its configuration and bindings, or set DB_DRIVER=auto.`;return t(`[DB] Storage unavailable: +`,l),{code:c==="none"||c===""?"NO_STORAGE":"DRIVER_ERROR",message:l,suggestion:c==="none"||c===""?"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.":`Set DB_DRIVER=auto, or provide the binding/credentials required by "${c}".`}}var Eo,cQ,nQ,pJ,mJ,ME,wJ,LE,HE,sQ,aQ,BJ,KE,Bo=J(()=>{"use strict";D3();_3();DE();N3();M3();G3();z3();$3();eQ();iQ();ti();Eo=`No storage backend is available. Data cannot be persisted in this runtime (serverless environments cannot use in-memory storage). Configure one of the following: 1. EdgeOne Blob (recommended, zero config if the project provides it) 2. EdgeOne KV: bind a KV namespace to Edge Functions, then set DB_DRIVER=kv (DB_FORMAT=map or key) and JWT_SECRET 3. Cloudflare KV / D1: bind the namespace and set DB_DRIVER accordingly Environment variables to set in the project settings: DB_DRIVER=blob | kv | cfkv | d1 | do | mysql - DB_FORMAT=map | key | sql`,pS={blob:Rx,cfkv:Nx,kv:$0,d1:Mx,do:Hx,mysql:Gx};MH="https://doc.oplist.org/ecosystem/official_worker/guide",LH={kv:`The "kv" driver requires one of the following: + DB_FORMAT=map | key | sql`,cQ=`DB_DRIVER="memory" is only valid on a local Node runtime. +This deployment is serverless, where in-memory storage loses all data immediately. +Set DB_DRIVER=auto, or bind a persistent backend (D1 / KV / Blob).`,nQ={blob:_E,cfkv:QE,kv:up,d1:FE,do:TE,mysql:NE};pJ="https://doc.oplist.org/ecosystem/official_worker/guide",mJ={kv:`The "kv" driver requires one of the following: - Cloudflare Workers: a KV namespace binding named exactly "KV" (wrangler.jsonc: "kv_namespaces": [{ "binding": "KV" }]); - - EdgeOne Node Functions: KV is NOT injected into Node functions, so the Edge Function KV proxy must be reachable (known request origin / EO_KV_URLS) and JWT_SECRET (>=16 chars, identical on the Edge Function side) must be set. + - EdgeOne Node Functions: KV is NOT injected into Node functions, so the Edge Function KV proxy must be reachable (known request origin / EO_KV_URLS) and JWT_SECRET (identical on the Edge Function side) must be set. If neither applies, use DB_DRIVER=auto, DB_DRIVER=blob (EdgeOne) or DB_DRIVER=d1 (Cloudflare). `,d1:`The "d1" driver requires a Cloudflare D1 binding named "DB" (wrangler.jsonc: "d1_databases": [{ "binding": "DB", ... }]). EdgeOne has no D1 \u2014 use DB_DRIVER=blob there instead. @@ -45,27 +45,29 @@ EdgeOne has no D1 \u2014 use DB_DRIVER=blob there instead. `,do:`The "do" driver requires a Durable Objects namespace binding named "DO" (wrangler.jsonc: "durable_objects": { "bindings": [{ "name": "DO", "class_name": "..." }] } plus a matching migration). `,mysql:`The "mysql" driver requires a Node runtime plus connection info (MYSQL_URLS, or MYSQL_HOST/MYSQL_PORT/MYSQL_USER/MYSQL_PASS/MYSQL_NAME). Cloudflare Workers cannot open raw TCP connections to MySQL. `,blob:`The "blob" driver requires either the EdgeOne Blob SDK (only present inside the EdgeOne Makers runtime) or an ESA_BLOB binding on Alibaba ESA. -`},jx=null;$x=null,Vx=null,mS=null,yS=new WeakMap,jH=0;Yx=null});async function $H(){if(sh)return sh;if(vS>=3)return null;vS++;try{let{getStore:r}=await Promise.resolve().then(()=>Qr(Tx(),1));sh=r({name:"openlist_db",consistency:"strong"})}catch{return null}return sh}function SS(){kS||(kS=!0,!(typeof process>"u"||typeof process.on!="function")&&process.on("uncaughtException",r=>{(r?.message?.includes("RESP")||r?.message?.includes("Unknown type")||r?.stack?.includes("processResponses"))&&console.error("[KV/RESP] Caught uncaught exception from storage binding, continuing:",r.message)}))}function QS(r){r&&(Zx=r)}function DS(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function VH(r,e){let t=async()=>(await Promise.resolve().then(()=>(Ux(),Lk))).kvDriver;return{async get(i){return(await t()).get(i,e)},async put(i,n){return(await t()).put(i,n,e)},async delete(i){return(await t()).delete(i,e)},async list(i={}){return{keys:(await(await t()).list(i?.prefix||"",e)).map(s=>({name:s,key:s}))}}}}async function eC(r){r&&(Zx=r);let e=r||Zx||(typeof process<"u"?process.env:{}),t=typeof globalThis<"u"?globalThis:{};if(e&&typeof e=="object"){let a=Ru.get(e);if(a)return a}let i=DS(e?.KV)?e.KV:DS(t?.KV)?t.KV:null;if(String(e?.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!i){let a;try{a=e?.EO_KV_URLS||e?.__requestOrigin}catch{a=void 0}let c=wl(a,e);if(c){let l={binding:VH(c,e),platform:"EdgeOne KV (via Edge Function proxy)",mode:"proxy"};return e&&typeof e=="object"&&Ru.set(e,l),l}console.warn("[DB] getKvBinding: KV proxy requested but no origin available (set EO_KV_URLS or ensure request origin is injected)")}try{let a=await $H();if(a){SS();let c={binding:a,platform:"EdgeOne Blob (@edgeone/pages-blob, strong consistency)",mode:"blob"};return e&&typeof e=="object"&&Ru.set(e,c),c}}catch(a){console.error(`[DB] getKvBinding: EdgeOne Blob init failed: ${a?.message||a}`,`stack=${a?.stack?.substring(0,300)||""}`)}if(i){let a=!!(e&&(e.EDGEONE||e.EO_REGION))||!!(t.EDGEONE||typeof t.EdgeOne<"u");a&&SS();let l={binding:i,platform:a?"EdgeOne KV (KV)":"Cloudflare / EdgeOne KV (KV)",mode:"binding"};return e&&typeof e=="object"&&Ru.set(e,l),l}{let a=e.CF_ACCOUNT||(typeof process<"u"?process.env.CF_ACCOUNT:""),c=e.CF_KV_UUID||(typeof process<"u"?process.env.CF_KV_UUID:""),l=e.CF_API_KEY||(typeof process<"u"?process.env.CF_API_KEY:"");if(a&&c&&l){let d={binding:{type:"cf_rest",accountId:a,namespaceId:c,token:l},platform:"Cloudflare KV (REST API)",mode:"api"};return e&&typeof e=="object"&&Ru.set(e,d),d}}let s=String(e?.DB_DRIVER||"").trim().toLowerCase();return(!s||s==="auto"||s==="kv"||s==="cfkv"||s==="blob")&&console.warn(s&&s!=="auto"?`[DB] getKvBinding: no KV-style binding found; DB_DRIVER="${s}" is served by getStorageBackend() instead. This is expected.`:"[DB] getKvBinding: no KV/Blob binding found in auto detection."),{binding:null,platform:"none",mode:"none"}}async function YH(r,e="openlist_config"){let{binding:t,mode:i}=r;if(i==="none"||!t)return null;try{if(i==="blob"){let n=await t.get(e,{type:"json"});if(n)return n;let s=await t.get(e);if(s)return typeof s=="string"?JSON.parse(s):s}else if(i==="binding"||i==="proxy"){let n=null;try{n=await t.get(e,"text")}catch{n=await t.get(e)}if(n==null&&(n=await t.get(e)),n)return typeof n=="string"?JSON.parse(n):n}else if(t.type==="cf_rest"){let n=`https://api.cloudflare.com/client/v4/accounts/${t.accountId}/storage/kv/namespaces/${t.namespaceId}/values/${e}`,s=await fetch(n,{headers:{Authorization:`Bearer ${t.token}`}});if(s.ok){let o=await s.text();return JSON.parse(o)}}}catch(n){console.error("[KV/Blob Store] Error reading key:",e,n)}return null}async function bl(r){let e=await eC(r),t=e.mode!=="none",i=!1,n=null;if(t)try{let s=await YH(e,"openlist_config");return i=!0,{configured:!0,connected:!0,platform:e.platform,mode:e.mode,hasData:!!s,error:null}}catch(s){n=s.message||String(s)}return{configured:t,connected:i,platform:e.platform,mode:e.mode,hasData:!1,error:n}}async function _S(r){let{getStorageBackend:e}=await Promise.resolve().then(()=>(ic(),bS)),{driver:t}=await e(r);return t}async function nc(r,e){try{let i=await(await _S(r)).get(e,r);if(i==null)return null;let n=typeof i?.text=="function"?await i.text():i;return String(n).trim()||null}catch(t){return console.warn(`[Secret] read "${e}" failed:`,t),null}}async function oh(r,e,t){try{return await(await _S(r)).put(e,t,r),!0}catch(i){return console.warn(`[Secret] cannot persist "${e}": ${i?.message||i}`),!1}}function FS(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}var sh,vS,kS,Zx,Ru,tC=j(()=>{"use strict";K0();K0();sh=null,vS=0;kS=!1;Zx=null,Ru=new WeakMap});var Gr={};xn(Gr,{ENCRYPTION_SECRET_KV_KEY:()=>kl,__resetDbCacheForTest:()=>iK,__setStoreBackendLoaderForTest:()=>nK,defaultDb:()=>ac,ensureEncryptionSecret:()=>aC,getDb:()=>ne,getDbLoadError:()=>Ah,getKvBinding:()=>eC,getKvStatus:()=>bl,getMetas:()=>fK,getPlugins:()=>AK,getSettings:()=>jn,getStorages:()=>uK,getStoreStatus:()=>Jn,getUsers:()=>dK,isDbShell:()=>NS,isDbTrusted:()=>nC,isDbWriteBlocked:()=>eK,isEncryptionReady:()=>gh,readPersistedSecret:()=>nc,resolvePath:()=>tt,saveDb:()=>fe,setEnvCtx:()=>sC,writePersistedSecret:()=>oh});function nC(){return No}function Ah(){return oc}function eK(){return iC}function NS(r){if(!r||typeof r!="object")return!0;let e=Array.isArray(r.storages)?r.storages.length:0,t=Array.isArray(r.shares)?r.shares.length:0,i=Array.isArray(r.metas)?r.metas.length:0,n=Array.isArray(r.plugins)?r.plugins.length:0;if(e+t+i+n>0||(Array.isArray(r.users)?r.users:[]).some(d=>String(d?.password||"").trim()!==""))return!1;let a=Array.isArray(r.settings)?r.settings:[],c=Array.isArray(ac.settings)?ac.settings:[],l=new Map(c.map(d=>[String(d.key),d.value]));return a.every(d=>l.has(String(d.key))&&l.get(String(d.key))===d.value)}function sC(r){r&&(oi=r,QS(r))}function oC(r){let e=r?.JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");return typeof e=="string"&&e.length>=16?e:null}async function MS(r){let e=r||oi||(typeof process<"u"?process.env:{}),t=oC(e);if(t)return(!sc||qo!==t)&&(qo=t,sc=!0),t;if(qo&&!sc)return qo;try{let i=await nc(e,kl);if(i&&i.length>=16)return qo=i,sc=!1,i}catch{}return TS||(TS=!0,console.error("[DB] No encryption key available: set JWT_SECRET. Sensitive fields would otherwise be written in plaintext.")),null}async function gh(r){let e=r||oi||(typeof process<"u"?process.env:{});if(oC(e))return!0;try{let t=await nc(e,kl);return!!(t&&t.length>=16)}catch{return!1}}function aK(r){return new Promise(e=>setTimeout(e,r))}async function aC(r){if(Nu)return Nu;Nu=(async()=>{let e=r||oi||(typeof process<"u"?process.env:{}),t=oC(e);if(t)return t;let i=await nc(e,kl);if(i&&i.length>=16)return qo=i,sc=!1,i;let n=FS();if(!await oh(e,kl,n))return console.error("[DB] Failed to persist an encryption key. Sensitive fields will be stored in plaintext until JWT_SECRET is configured via environment variable."),null;qo=n,sc=!1;let o=sK;for(let a=0;a=16&&c!==n)return console.warn("[DB] A different encryption key already exists; adopting it to keep encrypt/decrypt symmetric."),qo=c,sc=!1,c;await aK(o),o=Math.min(o*2,oK)}return console.warn(`[DB] Encryption key written but not yet readable after ${US} retries. Cross-instance reads may lag briefly due to eventual consistency; retry shortly.`),n})();try{return await Nu}finally{Nu=null}}async function uh(r,e){return!r||r.startsWith(Oo)?r:Oo+await pk(r,e)}async function fh(r,e){if(!r||!r.startsWith(Oo))return r;try{return await mk(r.slice(Oo.length),e)}catch(t){return console.warn("[DB] Failed to decrypt a sealed secret (wrong JWT_SECRET?):",t),r}}async function cK(r,e){if(!e||!r)return r;let t=JSON.parse(JSON.stringify(r));for(let i of t.storages||[]){if(!i||!i.addition)continue;let n=typeof i.addition=="string"?i.addition:JSON.stringify(i.addition);n&&n!=="{}"&&(i.addition=await uh(n,e))}for(let i of t.settings||[])i&&OS.has(i.key)&&i.value&&(i.value=await uh(String(i.value),e));for(let i of t.users||[])i&&i.otp_secret&&(i.otp_secret=await uh(String(i.otp_secret),e)),i&&i.password&&(i.password=await uh(String(i.password),e));return t}async function lK(r,e){if(!e||!r)return;let t=[];for(let i of r.storages||[])if(i&&typeof i.addition=="string"&&i.addition.startsWith(Oo)){let n=i,s=n.addition;t.push(fh(s,e).then(o=>{n.addition=o}))}for(let i of r.settings||[])if(i&&OS.has(i.key)&&typeof i.value=="string"&&i.value.startsWith(Oo)){let n=i,s=n.value;t.push(fh(s,e).then(o=>{n.value=o}))}for(let i of r.users||[])if(i){if(typeof i.otp_secret=="string"&&i.otp_secret.startsWith(Oo)){let n=i,s=n.otp_secret;t.push(fh(s,e).then(o=>{n.otp_secret=o}))}if(typeof i.password=="string"&&i.password.startsWith(Oo)){let n=i,s=n.password;t.push(fh(s,e).then(o=>{n.password=o}))}}t.length>0&&await Promise.all(t)}async function tt(r,e){let t=await ne(e),i=r;try{i=decodeURIComponent(String(i||""))}catch{}let n="",s=0;for(;i!==n&&s<3;){n=i;try{let f=decodeURIComponent(i);if(f===i)break;i=f,s++}catch{break}}i=i.replace(/\\/g,"/").replace(/%5c/gi,"/").replace(/%2f/gi,"/").replace(/\.{3,}/g,"..").replace(/\/+/g,"/");let o=["\0","\r",` -`," "];for(let f of o)if(i.includes(f))throw new Error(`invalid path: illegal character detected (0x${f.charCodeAt(0).toString(16)})`);if(/^[A-Za-z]:/.test(i))throw new Error("invalid path: absolute Windows path not allowed");if(i.startsWith("//")||i.startsWith("\\\\"))throw new Error("invalid path: UNC path not allowed");let a=[];for(let f of i.split("/"))if(!(f===""||f===".")){if(f===".."){a.pop();continue}a.push(f)}let c="/"+a.join("/");c===""&&(c="/");let l=(t.storages||[]).filter(f=>!f.disabled&&typeof f.driver=="string"&&f.driver.trim()!==""&&f.driver!=="undefined"&&f.driver!=="null"&&typeof f.mount_path=="string"&&f.mount_path.trim()!=="");if(l.length===0)throw new Error("failed get storage: storage not found; please add a storage first");let d=[...l].sort((f,h)=>{let g="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");return("/"+(h.mount_path||"").split("/").filter(Boolean).join("/")).length-g.length});for(let f of d){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/"),g=h==="/";if(g||c===h||c.startsWith(h+"/")){let I=c;g||(I=c.slice(h.length)),I.startsWith("/")||(I="/"+I);let y={};try{y=typeof f.addition=="string"?JSON.parse(f.addition||"{}"):f.addition||{}}catch{y={}}let C=y.root_folder_path!==void 0?y.root_folder_path:"/",x=([C,I].map(R=>R.replace(/\\/g,"/")).filter(R=>!!R&&R!=="/").join("/")||"/").replace(/\/{2,}/g,"/"),_=String(C||"/").replace(/\\/g,"/").replace(/\/+$/,"")||"/";if(_!=="/"&&x!==_&&!x.startsWith(_+"/"))throw new Error("path traversal blocked: escapes storage root");if(x.split("/").includes(".."))throw new Error("path traversal blocked: illegal '..' segment");return{storage:f,relative:I,physical:x,rootFolder:C,cleanPath:c,isVirtual:!1}}}let u=!1;for(let f of l){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");if(h!=="/"&&h.startsWith(c==="/"?"/":c+"/")){u=!0;break}}if(u)return{storage:null,relative:c,physical:null,rootFolder:null,cleanPath:c,isVirtual:!0};throw new Error("failed get storage: storage not found")}async function jn(){let r=await ne(),e={};return r.settings&&r.settings.forEach(t=>{e[t.key]=t.value}),e}async function dK(){return(await ne()).users||[]}async function uK(){return(await ne()).storages||[]}async function fK(){return(await ne()).metas||[]}async function AK(){return(await ne()).plugins||[]}var RS,WH,XH,ZH,ac,ht,oi,No,iC,oc,tK,rC,ah,ch,lh,dh,rK,Ou,qu,hh,iK,nK,vl,qS,PS,ne,Oo,OS,TS,kl,qo,sc,Nu,US,sK,oK,fe,Ve=j(()=>{"use strict";si();tC();ic();tC();ic();RS="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini,md,bat,gitignore,h,hpp,tsx,vtt,srt,ass,rs,lrc,strm",WH="m3u8,url",XH="authorization,referer",ZH="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini",ac={settings:[{key:"version",value:"v4.2.3",type:"string",help:"Application Version",group:1,flag:1},{key:"site_title",value:"OpenList",type:"string",help:"Site Title",group:1,flag:0},{key:"announcement",value:"",type:"text",help:"Site Announcement",group:1,flag:0},{key:"pagination_type",value:"pagination",type:"select",options:"all,pagination,load_more,auto_load_more",help:"Pagination Type",group:1,flag:0},{key:"default_page_size",value:"20",type:"number",help:"Default Page Size",group:1,flag:0},{key:"allow_indexed",value:"false",type:"bool",help:"Allow Search Engine Indexing",group:1,flag:0},{key:"allow_mounted",value:"true",type:"bool",help:"Allow Mounted Storages",group:1,flag:0},{key:"robots_txt",value:`User-agent: * -Disallow: /`,type:"text",help:"Robots Txt Content",group:1,flag:0},{key:"logo",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Site Logo URL",group:2,flag:0},{key:"favicon",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Favicon URL",group:2,flag:0},{key:"main_color",value:"#1890ff",type:"string",help:"Main Theme Color",group:2,flag:0},{key:"home_icon",value:"openlist",type:"string",help:"Home Icon Name",group:2,flag:0},{key:"home_container",value:"max_980px",type:"select",options:"max_980px,hope_container",help:"Home Container Width",group:2,flag:0},{key:"settings_layout",value:"responsive",type:"select",options:"list,responsive",help:"Settings Layout Mode",group:2,flag:0},{key:"text_types",value:RS,type:"text",help:"Text File Extensions",group:3,flag:0},{key:"audio_types",value:"mp3,ogg,aac,wav,wma,flac,m4a,opus",type:"text",help:"Audio File Extensions",group:3,flag:0},{key:"video_types",value:"mp4,mkv,webm,avi,mov,flv,m3u8,ts",type:"text",help:"Video File Extensions",group:3,flag:0},{key:"image_types",value:"jpg,png,jpeg,gif,bmp,svg,ico,webp,avif,tiff",type:"text",help:"Image File Extensions",group:3,flag:0},{key:"proxy_types",value:WH,type:"text",help:"Proxy File Extensions",group:3,flag:0},{key:"proxy_ignore_headers",value:XH,type:"text",help:"Proxy Ignore Headers",group:3,flag:0},{key:"external_previews",value:"{}",type:"text",help:"External Previews JSON Config",group:3,flag:0},{key:"iframe_previews",value:"{}",type:"text",help:"Iframe Previews JSON Config",group:3,flag:0},{key:"audio_cover",value:"https://file.nn.ci/alist/cover.png",type:"string",help:"Audio Default Cover Image URL",group:3,flag:0},{key:"audio_autoplay",value:"false",type:"bool",help:"Autoplay Audio",group:3,flag:0},{key:"video_autoplay",value:"false",type:"bool",help:"Autoplay Video",group:3,flag:0},{key:"preview_archives_by_default",value:"false",type:"bool",help:"Preview Archives By Default",group:3,flag:0},{key:"readme_autorender",value:"true",type:"bool",help:"Readme Autorender",group:3,flag:0},{key:"filter_readme_scripts",value:"true",type:"bool",help:"Filter Readme Scripts",group:3,flag:0},{key:"force_preview",value:"",type:"text",help:"Force Preview Config",group:3,flag:0},{key:"specify_preview",value:"",type:"text",help:"Specify Preview Layout Config",group:3,flag:0},{key:"markdown_autorender",value:"true",type:"bool",help:"Autorender Markdown",group:3,flag:0},{key:"code_editor_theme",value:"vs-dark",type:"select",options:"vs,vs-dark,hc-black",help:"Monaco Theme",group:3,flag:0},{key:"office_preview",value:"true",type:"bool",help:"Enable Office Document Preview",group:3,flag:0},{key:"pdf_preview",value:"true",type:"bool",help:"Enable PDF Preview",group:3,flag:0},{key:"hide_files",value:"",type:"text",help:"Files Regex to Hide",group:4,flag:0},{key:"package_download",value:"true",type:"bool",help:"Package Download Enabled",group:4,flag:0},{key:"customize_head",value:"",type:"text",help:"Custom Head HTML/CSS",group:4,flag:0},{key:"customize_body",value:"",type:"text",help:"Custom Body Script",group:4,flag:0},{key:"link_expiration",value:"0",type:"number",help:"Link Expiration in Seconds",group:4,flag:0},{key:"sign_all",value:"false",type:"bool",help:"Sign All Download Links",group:4,flag:0},{key:"seed_site_url",value:"",type:"string",help:"Public site URL used by transfer seed sources",group:4,flag:1},{key:"seed_default_matrix",value:'{"md5":{"whole":true,"pieces":false},"sha1":{"whole":true,"pieces":false},"sha256":{"whole":true,"pieces":false}}',type:"text",help:"Default transfer seed hash matrix",group:4,flag:1},{key:"seed_format_policies",value:'{"oss":"off","torrent":"off","cas":"off"}',type:"text",help:"Automatic transfer seed format policies",group:4,flag:1},{key:"seed_auto_generate_policy",value:"off",type:"select",options:"off,on",help:"Global automatic transfer seed policy",group:4,flag:1},{key:"seed_single_direct_preview",value:"false",type:"bool",help:"Open single-file transfer seeds directly in preview",group:4,flag:0},{key:"seed_cas_direct_access",value:"false",type:"bool",help:"When opening a single-file CAS seed, immediately rapid-upload it into the same folder and preview the restored file",group:4,flag:0},{key:"seed_default_trackers",value:"",type:"text",help:"Default tracker list offered when generating torrent seeds (one tracker per line)",group:4,flag:1},{key:"privacy_regs",value:"",type:"text",help:"Privacy Regex Rules",group:4,flag:0},{key:"ocr_api",value:"",type:"string",help:"OCR API Endpoint",group:4,flag:0},{key:"filename_char_mapping",value:"{}",type:"text",help:"Filename Char Mapping JSON",group:4,flag:0},{key:"forward_direct_link_params",value:"",type:"string",help:"Forward Direct Link Params",group:4,flag:0},{key:"ignore_direct_link_params",value:"",type:"string",help:"Ignore Direct Link Params",group:4,flag:0},{key:"webauthn_login_enabled",value:"false",type:"bool",help:"Webauthn Login Enabled",group:4,flag:0},{key:"allow_previewing_sharing_files",value:"true",type:"bool",help:"Allow Previewing Sharing Files",group:4,flag:0},{key:"allow_previewing_sharing_archives",value:"true",type:"bool",help:"Allow Previewing Sharing Archives",group:4,flag:0},{key:"force_proxy_sharing_files",value:"false",type:"bool",help:"Force Proxy Sharing Files",group:4,flag:0},{key:"share_summary_content",value:"",type:"text",help:"Share Summary Content",group:4,flag:0},{key:"handle_hook_after_writing",value:"",type:"string",help:"Handle Hook After Writing",group:4,flag:0},{key:"handle_hook_rate_limit",value:"0",type:"number",help:"Handle Hook Rate Limit",group:4,flag:0},{key:"ignore_system_files",value:"true",type:"bool",help:"Ignore System Files (.DS_Store, desktop.ini, etc.)",group:4,flag:0},{key:"auto_update_index",value:"false",type:"bool",help:"Auto Update Search Index",group:4,flag:0},{key:"sso_login_enabled",value:"false",type:"bool",help:"Enable SSO Login",group:7,flag:0},{key:"sso_login_platform",value:"",type:"select",options:"Github,Microsoft,Google,Dingtalk,Casdoor,OIDC",help:"SSO Platform",group:7,flag:0},{key:"sso_client_id",value:"",type:"string",help:"SSO Client ID",group:7,flag:0},{key:"sso_client_secret",value:"",type:"string",help:"SSO Client Secret",group:7,flag:0},{key:"sso_login_url",value:"",type:"string",help:"SSO Authorization Endpoint",group:7,flag:0},{key:"sso_token_url",value:"",type:"string",help:"SSO Token Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_userinfo_url",value:"",type:"string",help:"SSO UserInfo Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_scopes",value:"",type:"string",help:"SSO OAuth2 Scopes (optional, space separated)",group:7,flag:0},{key:"sso_oidc_discovery_url",value:"",type:"string",help:"OIDC Discovery URL (for OIDC platform)",group:7,flag:0},{key:"sso_login_callback_url",value:"",type:"string",help:"SSO Redirect/Callback URL (optional, defaults to /api/auth/sso_callback)",group:7,flag:0},{key:"sso_compatibility_mode",value:"false",type:"bool",help:"SSO Compatibility Mode (postMessage token handoff)",group:7,flag:0},{key:"sso_auto_register",value:"false",type:"bool",help:"Auto Register New SSO Users",group:7,flag:0},{key:"sso_default_dir",value:"/",type:"string",help:"SSO Default Directory for New Users",group:7,flag:0},{key:"sso_default_permission",value:"0",type:"number",help:"SSO Default Permission for New Users",group:7,flag:0},{key:"ldap_host",value:"",type:"string",help:"LDAP Server Host",group:8,flag:0},{key:"ldap_port",value:"389",type:"number",help:"LDAP Server Port",group:8,flag:0},{key:"traffic_limit",value:"0",type:"number",help:"Traffic Limit in MB",group:10,flag:0},{key:"ip_limit",value:"0",type:"number",help:"IP Rate Limit Per Minute",group:10,flag:0},{key:"115_temp_dir",value:"",type:"string",help:"115 Temp Directory",group:14,flag:0},{key:"115_open_temp_dir",value:"",type:"string",help:"115 Open Temp Directory",group:14,flag:0},{key:"123_temp_dir",value:"",type:"string",help:"123 Pan Temp Directory",group:14,flag:0},{key:"123_open_temp_dir",value:"",type:"string",help:"123 Open Temp Directory",group:14,flag:0},{key:"123_open_callback_url",value:"",type:"string",help:"123 Open Callback URL",group:14,flag:0},{key:"pikpak_temp_dir",value:"",type:"string",help:"PikPak Temp Directory",group:14,flag:0},{key:"thunder_temp_dir",value:"",type:"string",help:"Thunder Temp Directory",group:14,flag:0},{key:"thunder_browser_temp_dir",value:"",type:"string",help:"Thunder Browser Temp Directory",group:14,flag:0},{key:"thunderx_temp_dir",value:"",type:"string",help:"ThunderX Temp Directory",group:14,flag:0},{key:"token",value:"",type:"string",help:"115 / PikPak / Thunder Token",group:14,flag:0},{key:"package_download_disabled",value:"false",type:"bool",help:"Disable Package Download",group:14,flag:0}],storages:[],users:[{id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()},{id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()}],metas:[],shares:[],plugins:[]},ht=null,oi=null,No=!1,iC=!1,oc=null;tK={logo:{from:["","/logo.png","https://res.oplist.org/logo/logo.png"],to:"https://res.oplist.org/logo/logo.svg"},favicon:{from:["","/favicon.png"],to:"https://res.oplist.org/logo/logo.svg"},home_container:{from:["hope_container"],to:"max_980px"},text_types:{from:[ZH],to:RS}},rC=r=>{if(!r)return;r.settings||(r.settings=[]);let e=!1,t=[],i=new Set;for(let n of ac.settings){i.add(n.key);let s=r.settings.filter(o=>o.key===n.key);if(s.length===0)t.push(JSON.parse(JSON.stringify(n))),e=!0;else{let o=s.find(c=>c.value&&c.value.trim()!=="")||s[0];(o.group!==n.group||o.help!==n.help||o.type!==n.type||o.options!==n.options||o.flag!==n.flag)&&(o.group=n.group,o.help=n.help,o.type=n.type,o.options=n.options,o.flag=n.flag,e=!0),s.length>1&&(e=!0);let a=tK[n.key];a&&a.from.includes(o.value)&&(o.value=a.to,e=!0),t.push(o)}}for(let n of r.settings)n.key&&!i.has(n.key)&&(i.add(n.key),t.push(n));r.settings=t},ah=r=>{r&&(!r.storages||!Array.isArray(r.storages)?r.storages=[]:r.storages=r.storages.filter(e=>e&&typeof e=="object"&&typeof e.driver=="string"&&e.driver.trim()!==""&&e.driver!=="undefined"&&e.driver!=="null"&&typeof e.mount_path=="string"&&e.mount_path.trim()!==""))},ch=r=>{r&&(r.shares||(r.shares=[]))},lh=r=>{r&&(r.plugins||(r.plugins=[]))},dh=r=>{r&&(!r.metas||!Array.isArray(r.metas))&&(r.metas=[])},rK=1e3,Ou=new WeakMap,qu=new WeakMap,hh=r=>nh(r),iK=()=>{oi&&typeof oi=="object"&&(Ou.delete(oi),qu.delete(oi)),vl&&(Ou.delete(vl),qu.delete(vl)),vl=null,oi=null,ht=null,hh=r=>nh(r)},nK=r=>{hh=r},vl=null,qS=()=>{let r=oi;return!r||typeof r!="object"?null:(vl=r,vl)},PS=async r=>{r&&(oi=r);let e=r||oi,t=null;try{t=await hh(e);let i=await t.load(e);if(i)return await lK(i,await MS(e)),ht=i,rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),No=!0,oc=null,ht;if(No&&ht)return console.warn(`[DB] Backend ${t?.name??"storage"} returned empty while a trusted snapshot exists; keeping the in-memory snapshot to avoid overwriting real config.`),rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),ht;No=!1,oc=null}catch(i){console.error(`[DB] Error reading config from ${t?.name??"storage"}:`,i?.message||i),oc=String(i?.message||i),No=!1}return ht&&No?(rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),ht):(ht=JSON.parse(JSON.stringify(ac)),ah(ht),ch(ht),lh(ht),dh(ht),ht)},ne=async r=>{r&&(oi=r);let e=r||qS();if(!e)return PS(r);let t=qu.get(e);if(t)return t;let i=Ou.get(e);if(i&&Date.now()-i.ts(Ou.set(e,{ts:Date.now(),db:s}),s)).finally(()=>{qu.delete(e)});return qu.set(e,n),n},Oo="enc:v1:",OS=new Set(["token","sso_client_secret","sso_client_id","ldap_bind_password","ldap_bind_dn","ocr_api","handle_hook_after_writing"]),TS=!1,kl="openlist_encryption_secret";qo=null,sc=!1;Nu=null,US=6,sK=100,oK=1e3;fe=async(r,e,t)=>{e&&(oi=e);let i=e||oi;if(NS(r)&&!t?.force){iC=!0;let c=oc?`last load failed: ${oc}`:No?"payload is an empty/shell database":"database was never successfully loaded from the persistence backend";return console.error(`[DB] saveDb BLOCKED: refusing to persist an empty/shell database (${c}). This guard prevents an empty payload from wiping real config. Pass saveDb(db, env, { force: true }) to override intentionally.`),!1}ht=r,iC=!1;let s=e||qS();s&&Ou.set(s,{ts:Date.now(),db:r});let o=await hh(i);if(!(o.isConfigured?await o.isConfigured(i):!0))return console.warn("[DB] WARNING: No persistence backend configured! Storage configuration changes will exist only in memory!"),!1;try{console.log(`[DB] saveDb: sealing and persisting to ${o.name}, storages=${r.storages?.length||0}`);let c=await cK(r,await MS(i));console.log(`[DB] saveDb: sealed data size=${JSON.stringify(c).length} bytes`),await o.save(c,i)}catch(c){throw console.error(`[DB] saveDb FAILED: backend=${o.name}, error=${c?.message||c}`,`stack=${c?.stack?.substring(0,500)||""}`),new Error(`[DB] Failed to persist config (${o.name}); the change was NOT saved: ${c?.message||c}`)}return console.log(`[DB] Successfully persisted ${r.storages?.length||0} storages to ${o.name}`),No=!0,oc=null,!0}});function X(r,e){if(e)return 1;let t=(r.split(".").pop()||"").toLowerCase();return["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm","3gp","asf","vob","ogv","rm","f4v"].includes(t)?2:["mp3","flac","aac","wav","ogg","m4a","opus","wma","ape","alac","aiff","mid","midi"].includes(t)?3:["txt","md","markdown","json","js","ts","jsx","tsx","css","scss","html","htm","xml","yaml","yml","ini","conf","env","log","sql","py","java","c","cpp","h","hpp","go","rs","sh","bat","cmd","ps1","php","rb","swift","kt","cs","vue","svelte","json5","toml"].includes(t)?4:["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","heic","heif","avif","vvc","avc","psd","ai"].includes(t)?5:0}var Be=j(()=>{"use strict"});function de(r,e,t){let i=t!=="desc",n=String(e||"name").toLowerCase(),s=[...r];return s.sort((o,a)=>{if(o.is_dir!==a.is_dir)return o.is_dir?-1:1;let c;return n.includes("size")?c=(o.size||0)-(a.size||0):n.includes("time")||n.includes("modified")||n.includes("created")?c=new Date(o.modified).getTime()-new Date(a.modified).getTime():c=String(o.name).localeCompare(String(a.name)),i?c:-c}),s}var He=j(()=>{"use strict"});var $n,cC=j(()=>{"use strict";$n={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.partner.microsoftonline.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function lC(r,e){let t="";return r.thumbnails&&r.thumbnails.length>0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var LS=j(()=>{"use strict"});async function dC(r){if(r.use_online_api&&r.api_url_address){let s=new URLSearchParams({refresh_ui:r.refresh_token,server_use:"true",driver_txt:"onedrive_pr"}).toString(),a=await(await fetch(`${r.api_url_address}?${s}`)).json();if(!a.refresh_token||!a.access_token)throw a.text?new Error(`failed to refresh token: ${a.text}`):new Error("empty token returned from official API");r.accessToken=a.access_token,r.refresh_token=a.refresh_token,r.onTokenUpdate?.(r.refresh_token);return}if(!r.client_id||!r.client_secret)throw new Error("empty ClientID or ClientSecret");let t=`${($n[r.region]||$n.global).oauth}/common/oauth2/v2.0/token`,n=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:r.client_id,client_secret:r.client_secret,redirect_uri:r.redirect_uri,refresh_token:r.refresh_token}).toString()})).json();if(!n.refresh_token)throw new Error("Empty token");r.refresh_token=n.refresh_token,r.accessToken=n.access_token,r.onTokenUpdate?.(r.refresh_token)}async function Ui(r,e,t,i,n){let s=i!==void 0&&(i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0?{"Content-Type":s?"application/octet-stream":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await dC(r),Ui(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}function HS(r,e,t){let i=e.replace(/\\/g,"/");if(!i||i==="/")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let n=i.startsWith("/")?i.slice(1):i;if(n.endsWith("/")&&(n=n.slice(0,-1)),!n||n==="")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let s=n.split("/").map(encodeURIComponent).join("/");return t?`${r}/drive/root:/${s}:/${t}`:`${r}/drive/root:/${s}:`}async function KS(r,e){let t=$n[r.region]||$n.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,s=HS(i,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,@microsoft.graph.downloadUrl,file,folder,parentReference"),o=[];for(;s;){let a=await Ui(r,s,"GET");a.value&&o.push(...a.value),s=a["@odata.nextLink"]}return o}async function GS(r,e){let t=$n[r.region]||$n.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,n=HS(i,e);return Ui(r,n,"GET")}var zS=j(()=>{"use strict";cC()});var ph,JS=j(()=>{"use strict";He();cC();LS();zS();ph=class{root_folder_path="/";region="global";is_sharepoint=!1;use_online_api=!0;api_url_address="https://api.oplist.org/onedrive/renewapi";client_id="";client_secret="";redirect_uri="https://api.oplist.org/onedrive/callback";refresh_token="";site_id="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.is_sharepoint!==void 0&&(this.is_sharepoint=!!e.is_sharepoint),e.use_online_api!==void 0&&(this.use_online_api=!!e.use_online_api),e.api_url_address!==void 0&&(this.api_url_address=String(e.api_url_address)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.redirect_uri!==void 0&&(this.redirect_uri=String(e.redirect_uri)),e.refresh_token!==void 0&&(this.refresh_token=String(e.refresh_token)),e.site_id!==void 0&&(this.site_id=String(e.site_id)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.is_sharepoint=="string"&&(this.is_sharepoint=this.is_sharepoint.toLowerCase()==="true"),typeof this.use_online_api=="string"&&(this.use_online_api=this.use_online_api.toLowerCase()==="true"),typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.refresh_token&&await dC(this)}getMetaUrl(e,t,i){let n=$n[this.region]||$n.global;if(e)return n.oauth;let s=this.is_sharepoint?`${n.api}/v1.0/sites/${this.site_id}`:`${n.api}/v1.0/me`,o=t.replace(/\\/g,"/");if(!o||o==="/")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let a=o.startsWith("/")?o.slice(1):o;if(a.endsWith("/")&&(a=a.slice(0,-1)),!a||a==="")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let c=a.split("/").map(l=>{try{return encodeURIComponent(decodeURIComponent(l))}catch{return encodeURIComponent(l)}}).join("/");return i?`${s}/drive/root:/${c}:/${i}`:`${s}/drive/root:/${c}:`}async list(e,t){let n=(await KS(this,t)).map(s=>{let o=lC(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await GS(this,t),n=lC(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=this.getMetaUrl(!1,i,"children");await Ui(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=this.getMetaUrl(!1,t);await Ui(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=this.getMetaUrl(!1,s);await Ui(this,o,"DELETE")}}async move(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ui(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u);await Ui(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ui(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u,"copy");await Ui(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=this.getMetaUrl(!1,t,"content");await Ui(this,n,"PUT",i)}else{let n=this.getMetaUrl(!1,t,"createUploadSession"),a=(await Ui(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var jS=j(()=>{"use strict"});var cc,$S=j(()=>{"use strict";cc={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.chinacloudapi.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function Ri(r,e,t,i){let n=cc[r.region]||cc.global;if(e)return n.oauth;let s=t?t.replace(/\\/g,"/"):"";if(!s||s==="/")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let o=s.startsWith("/")?s.slice(1):s;if(o.endsWith("/")&&(o=o.slice(0,-1)),!o||o==="")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let a=o.split("/").map(c=>{try{return encodeURIComponent(decodeURIComponent(c))}catch{return encodeURIComponent(c)}}).join("/");return i?`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:`}async function fC(r){let e=null;for(let t=0;t<3;t++)try{await hK(r);return}catch(i){e=i}throw e||new Error("Failed to get access token")}async function hK(r){if(!r.client_id||!r.client_secret)throw new Error("empty client_id or client_secret");if(!r.tenant_id)throw new Error("empty tenant_id");let e=cc[r.region]||cc.global,t=`${e.oauth}/${r.tenant_id}/oauth2/token`,i=new URLSearchParams({grant_type:"client_credentials",client_id:r.client_id,client_secret:r.client_secret,resource:`${e.api}/`,scope:`${e.api}/.default`}).toString(),s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i})).json();if(s.error)throw new Error(s.error_description||s.error);if(!s.access_token)throw new Error("empty token returned from Microsoft identity platform");r.accessToken=s.access_token,r.onTokenUpdate?.(r.accessToken)}async function ai(r,e,t,i,n){let s=i!==void 0&&(typeof i=="string"||i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0&&!s?{"Content-Type":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await fC(r),ai(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}async function VS(r,e){let i=Ri(r,!1,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,lastModifiedDateTime,@microsoft.graph.downloadUrl,file,folder,parentReference"),n=[];for(;i;){let s=await ai(r,i,"GET");s.value&&n.push(...s.value),i=s["@odata.nextLink"]}return n}async function YS(r,e){let t=Ri(r,!1,e);return ai(r,t,"GET")}async function WS(r){let t=`${(cc[r.region]||cc.global).api}/v1.0/users/${r.email}/drive`;return ai(r,t,"GET",void 0,!0)}async function XS(r,e){let t=Ri(r,!1,e,"createUploadSession"),s=(await ai(r,t,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl;if(!s)throw new Error("failed to get upload URL from response");return{UploadURL:s,ChunkSize:(r.chunk_size||5)*1024*1024,Method:"PUT"}}var ZS=j(()=>{"use strict";$S()});var mh,eD=j(()=>{"use strict";He();jS();ZS();mh=class{root_folder_path="/";region="global";client_id="";client_secret="";tenant_id="";email="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.tenant_id!==void 0&&(this.tenant_id=String(e.tenant_id)),e.email!==void 0&&(this.email=String(e.email)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.client_id&&this.client_secret&&this.tenant_id&&await fC(this)}async list(e,t){let n=(await VS(this,t)).map(s=>{let o=uC(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await YS(this,t),n=uC(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=Ri(this,!1,i,"children");await ai(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=Ri(this,!1,t);await ai(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=Ri(this,!1,s);await ai(this,o,"DELETE")}}async move(e,t,i,n,s){let o=Ri(this,!1,s),a=await ai(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ri(this,!1,u);await ai(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=Ri(this,!1,s),a=await ai(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ri(this,!1,u,"copy");await ai(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=Ri(this,!1,t,"content");await ai(this,n,"PUT",i)}else{let n=Ri(this,!1,t,"createUploadSession"),a=(await ai(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l255||g>255||p>255||I>255||h===0||h===127||h===10||h===172&&g>=16&&g<=31||h===192&&g===168||h===169&&g===254||h===100&&g>=64&&g<=127||h===100&&g===100||h===224&&g===0&&p===0||h>=240)return!1}if(/^\d{8,}$/.test(i)||/^0x[0-9a-fA-F]{6,}$/i.test(i))return!1;let c=[/(^|\.)\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}(\.|$)/,/(^|\.)0x[0-9a-f]{6,8}(\.|$)/i,/(^|\.)\d{8,}(\.|$)/,/(^|\.)127\.0\.0\.1\.nip\.io$/,/(^|\.)localtest\.me$/,/(^|\.)vcap\.me$/,/(^|\.)xip\.io$/];for(let l of c)if(l.test(i))return!1;return!0}catch{return!1}}function zr(r,e="Request",t){if(!gK(r,t))throw new Error(`${e} blocked: URL points to a restricted or private network destination (SSRF protection)`)}function pK(r){let e=new Set;if(r==null)return e;let t=r;if(typeof r=="string")try{t=JSON.parse(r)}catch{return e}if(typeof t!="object"||Array.isArray(t))return e;let i=/(url|host|address|endpoint|server|domain|site|base|gateway|api)/i,n=s=>{if(!(s==null||typeof s!="object"))for(let[o,a]of Object.entries(s))if(typeof a=="string"){if(i.test(o)){let c=tD(a);c&&e.add(c)}}else a!=null&&typeof a=="object"&&n(a)};return n(t),e}function tD(r){let e=r.trim();if(!e)return;let t=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?[e]:[`http://${e}`];for(let i of t)try{let n=new URL(i);if(n.protocol!=="http:"&&n.protocol!=="https:")continue;let s=n.hostname.toLowerCase().trim();if(s)return s}catch{}}function mK(r){let e=new Set;if(!r)return e;for(let t of r.split(/[,;\s]+/)){let i=tD(t);i&&e.add(i)}return e}function yh(r,e){let t=pK(r),i=e?.SSRF_ALLOWED_HOSTS??(typeof process<"u"?process.env?.SSRF_ALLOWED_HOSTS:void 0);if(typeof i=="string"&&i.trim())for(let n of mK(i))t.add(n);return t}var lc=j(()=>{"use strict"});var yK,Ih,rD=j(()=>{"use strict";lc();yK="https://openapi.aliyundrive.com/adrive/v1.0",Ih=class{addition;accessToken="";refreshTokenVal="";driveId="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.driveId=e.drive_id||""}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[AliyundriveOpen] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken(),this.driveId||await this.resolveDriveId()}catch(e){console.warn("[AliyundriveOpen] init warning:",e.message)}}async resolveDriveId(e=!1){if(!e&&this.addition.drive_id&&this.addition.drive_id.trim()){this.driveId=this.addition.drive_id.trim();return}try{let t=await this.openApiRequest("/user/getDriveInfo",{}),i=e?"resource":this.addition.drive_type||"resource",n="";i==="resource"&&t.resource_drive_id?n=t.resource_drive_id:i==="backup"&&t.backup_drive_id?n=t.backup_drive_id:i==="default"&&t.default_drive_id&&(n=t.default_drive_id),n||(n=t.resource_drive_id||t.default_drive_id||t.backup_drive_id||""),this.driveId=n,console.log(`[AliyundriveOpen] Resolved drive_id: ${this.driveId} (driveType: ${i})`)}catch(t){console.warn("[AliyundriveOpen] resolveDriveId failed:",t.message)}}async refreshAccessToken(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim())return;let e=this.refreshTokenVal.trim(),t=[];if(this.addition.api_url_address&&this.addition.api_url_address.trim()){let o=this.addition.api_url_address.trim();try{zr(o,"AliyundriveOpen api_url_address"),t.push(o)}catch(a){console.warn(`[AliyundriveOpen] Skipping unsafe api_url_address: ${a.message}`)}}t.push("https://api.oplist.org/alicloud/renewapi","https://api.oplist.org/ali_open/token","https://api.oplist.org/aliyundrive/token","https://api.alist.nn.ci/alist/ali_open/token","https://api.alist.nn.ci/aliyundrive/token","https://api-sam.oplist.org/aliyundrive/token");let i=this.addition.alipan_type==="alipanTV"?"alicloud_tv":"alicloud_qr";for(let o of t)try{let a=new URLSearchParams({refresh_ui:e,refresh_token:e,server_use:"true",driver_txt:i}),c=await fetch(`${o}?${a.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.refresh_token||l.data?.refresh_token||"",u=l.access_token||l.data?.access_token||"";if(!u)throw new Error(`Empty access_token from online API: ${JSON.stringify(l)}`);this.accessToken=u,d&&(this.refreshTokenVal=d),this.tokenExpiresAt=Date.now()+(l.expires_in||7200)*1e3-6e4;return}catch(a){console.warn(`[AliyundriveOpen] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"25ab4837190e48718a28f80073574a4d",s=(this.addition.client_secret||"").trim();try{let o={grant_type:"refresh_token",refresh_token:e,client_id:n};s&&(o.client_secret=s);let a=await fetch("https://openapi.aliyundrive.com/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let l=await a.text().catch(()=>"");throw new Error(`[Status ${a.status}] ${l}`)}let c=await a.json();if(!c.access_token)throw new Error(`Invalid response: ${JSON.stringify(c)}`);this.accessToken=c.access_token,c.refresh_token&&(this.refreshTokenVal=c.refresh_token),this.tokenExpiresAt=Date.now()+(c.expires_in||7200)*1e3-6e4;return}catch(o){console.warn(`[AliyundriveOpen] Direct OAuth failed: ${o.message}`)}throw new Error("[AliyundriveOpen] All token refresh strategies failed. Please check: 1) refresh_token is valid and not expired, 2) api_url_address is accessible, 3) If using direct OAuth, client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async openApiRequest(e,t,i=!0){await this.ensureToken();let n=e.startsWith("http")?e:`${yK}${e}`;try{zr(n,"AliyundriveOpen openApiRequest")}catch(o){throw new Error(`[AliyundriveOpen] blocked unsafe URL: ${o.message}`)}let s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)});if(s.status===401&&i)return await this.refreshAccessToken(),this.openApiRequest(e,t,!1);if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`[AliyundriveOpen] API error [${s.status}] ${e}: ${o}`)}return s.json()}async listFiles(e){this.driveId||await this.resolveDriveId();let t=[],i,n=this.addition.order_by||"updated_at",s=this.addition.order_direction||"DESC";do{let o={drive_id:this.driveId,parent_file_id:e,limit:100,order_by:n,order_direction:s};i&&(o.marker=i);let a;try{a=await this.openApiRequest("/openFile/list",o)}catch(c){if(c.message?.includes("UserNotAllowedAccessDrive"))console.warn(`[AliyundriveOpen] UserNotAllowedAccessDrive for drive ${this.driveId}, auto re-resolving drive_id...`),await this.resolveDriveId(!0),o.drive_id=this.driveId,a=await this.openApiRequest("/openFile/list",o);else throw c}t.push(...a.items||[]),i=a.next_marker||void 0}while(i);return t}async getFile(e){return this.driveId||await this.resolveDriveId(),this.openApiRequest("/openFile/get",{drive_id:this.driveId,file_id:e})}async getDownloadUrl(e){let t=await this.openApiRequest("/openFile/getDownloadUrl",{drive_id:this.driveId,file_id:e,expire_sec:14400});return t.url||t.download_url||""}async mkdir(e,t){await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"folder",check_name_mode:"refuse"})}async rename(e,t){await this.openApiRequest("/openFile/update",{drive_id:this.driveId,file_id:e,name:t,check_name_mode:"refuse"})}async remove(e){let t=this.addition.remove_way||"trash";await this.openApiRequest(t==="trash"?"/openFile/recyclebin":"/openFile/delete",{drive_id:this.driveId,file_id:e})}async move(e,t){await this.openApiRequest("/openFile/move",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,check_name_mode:"refuse"})}async copy(e,t){await this.openApiRequest("/openFile/copy",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,auto_rename:!0})}async putFile(e,t,i){let n=i.length,s=await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"file",size:n,check_name_mode:"auto_rename",part_info_list:[{part_number:1}]}),o=s.part_info_list?.[0]?.upload_url;if(!o)return;let a=await fetch(o,{method:"PUT",body:i});if(!a.ok)throw new Error(`[AliyundriveOpen] Upload failed: ${a.status}`);await this.openApiRequest("/openFile/complete",{drive_id:this.driveId,file_id:s.file_id,upload_id:s.upload_id})}}});function iD(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||r.created_at||new Date().toISOString(),sign:"",type:X(r.name,e),thumb:r.thumbnail||"",raw_url:r.download_url||""}}var wh,nD=j(()=>{"use strict";Be();He();rD();wh=class{client;addition;pathFileIdCache=new Map;constructor(e){this.addition=e,this.client=new Ih(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t),s=(await this.client.listFiles(i)).map(iD);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null),s=await this.client.getDownloadUrl(i).catch(()=>"");if(n){let c=iD(n);return c.raw_url=s||c.raw_url,c}try{await this.client.listFiles(i);let c=t.split("/").filter(Boolean);return{name:c[c.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}let o=t.split("/").filter(Boolean);return{name:o[o.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:s}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move(o,a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy(o,a)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o="/"+n.join("/"),a=await this.resolveFileId(o);await this.client.putFile(a,s,i)}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFileIdCache.has(c)){n=this.pathFileIdCache.get(c);continue}let d=(await this.client.listFiles(n)).find(u=>u.name===o||u.name===a||u.file_id===o);if(!d)throw new Error(`[AliyundriveOpen] Path '${o}' not found`);n=d.file_id,this.pathFileIdCache.set(c,n)}return n}}});var Mu,sD,oD,AC=j(()=>{"use strict";Mu="application/vnd.google-apps.folder",sD="application/vnd.google-apps.shortcut",oD="files(id,name,mimeType,size,modifiedTime,createdTime,thumbnailLink,shortcutDetails,md5Checksum,sha1Checksum,sha256Checksum),nextPageToken"});var Mo,aD,IK,xh,cD=j(()=>{"use strict";AC();Mo="https://www.googleapis.com/drive/v3",aD="https://www.googleapis.com/upload/drive/v3",IK="https://oauth2.googleapis.com/token",xh=class{addition;accessToken="";refreshTokenVal="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||""}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[GoogleDrive] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken()}catch(e){console.warn("[GoogleDrive] init token refresh warning:",e.message)}}async refreshAccessToken(){let e=this.refreshTokenVal.trim();if(!e)return;let t=this.addition.use_online_api!==!1,i=[];t&&(this.addition.api_url_address?.trim()&&i.push(this.addition.api_url_address.trim()),i.push("https://api.oplist.org/google/token","https://api.oplist.org/google/renewapi","https://api.oplist.org/googledrive/token","https://api-sam.oplist.org/google/token","https://api-sam.oplist.org/googledrive/token","https://api.alist.nn.ci/google/token","https://api.alist.nn.ci/googledrive/token"));for(let o of i)try{let a=new URLSearchParams({refresh_ui:e,server_use:"true",driver_txt:"googleui_go"}),c=await fetch(`${o}?${a.toString()}`,{method:"GET"});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.access_token||l.data?.access_token||"",u=l.refresh_token||l.data?.refresh_token||"";if(!d){let f=l.text||l.error||"empty access_token";throw new Error(f)}this.accessToken=d,u&&(this.refreshTokenVal=u),this.tokenExpiresAt=Date.now()+(l.expires_in||3600)*1e3-6e4;return}catch(a){console.warn(`[GoogleDrive] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"202264815644-2n82p2e49c7o6026u87j9e22v1n25c27.apps.googleusercontent.com",s=(this.addition.client_secret||"").trim()||"GOCSPX-4bH5Kx3s_89_j6j2x-2x3-8x";if(n&&s)try{let o=await fetch(IK,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:n,client_secret:s,refresh_token:e,grant_type:"refresh_token"}).toString()});if(!o.ok){let c=await o.text().catch(()=>"");throw new Error(`[Status ${o.status}] ${c}`)}let a=await o.json();if(!a.access_token)throw new Error(`Invalid OAuth response: ${JSON.stringify(a)}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token),this.tokenExpiresAt=Date.now()+(a.expires_in||3600)*1e3-6e4;return}catch(o){console.warn(`[GoogleDrive] Direct OAuth failed: ${o.message}`)}throw new Error("[GoogleDrive] All token refresh strategies failed. Please check: 1) refresh_token is valid, 2) api_url_address is accessible, 3) If using direct OAuth: client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}async request(e,t={},i=!0){await this.ensureToken();let n=await fetch(e,{...t,headers:{Authorization:`Bearer ${this.accessToken}`,...t.headers||{}}});if(n.status===401&&i)return console.warn("[GoogleDrive] 401 Unauthorized, refreshing token..."),await this.refreshAccessToken(),this.request(e,t,!1);if(!n.ok){let s=await n.text().catch(()=>"");throw new Error(`[GoogleDrive] API error [${n.status}]: ${s}`)}return n.status===204?null:n.json()}async listFiles(e){let t=[],i,n=this.addition.order_by||"folder,name,modifiedTime desc";do{let s=new URLSearchParams({q:`'${e}' in parents and trashed = false`,fields:oD,orderBy:n,pageSize:"1000",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});i&&s.set("pageToken",i);let o=`${Mo}/files?${s.toString()}`,a=await this.request(o),c=a.files||[];for(let l of c)l.mimeType===sD&&l.shortcutDetails?.targetId&&(l.id=l.shortcutDetails.targetId,l.mimeType=l.shortcutDetails.targetMimeType||l.mimeType);t.push(...c),i=a.nextPageToken}while(i);return t}async getFile(e){let t=new URLSearchParams({fields:"id,name,mimeType,size,modifiedTime,md5Checksum",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});return this.request(`${Mo}/files/${e}?${t.toString()}`)}getDownloadUrl(e){return`${Mo}/files/${e}?includeItemsFromAllDrives=true&supportsAllDrives=true&alt=media&acknowledgeAbuse=true`}getDownloadHeaders(){return{Authorization:`Bearer ${this.accessToken}`}}async mkdir(e,t){await this.request(`${Mo}/files?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,parents:[e],mimeType:Mu})})}async rename(e,t){await this.request(`${Mo}/files/${e}?supportsAllDrives=true`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})}async remove(e){await this.request(`${Mo}/files/${e}?supportsAllDrives=true`,{method:"DELETE"})}async move(e,t,i){let n=new URLSearchParams({addParents:i,removeParents:t,supportsAllDrives:"true"});await this.request(`${Mo}/files/${e}?${n.toString()}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:"{}"})}async copy(e,t,i){await this.request(`${Mo}/files/${e}/copy?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i,parents:[t]})})}async putFile(e,t,i,n="application/octet-stream"){let s=(this.addition.chunk_size||5)*1024*1024;if(i.length<=s){let o=new URLSearchParams({uploadType:"multipart",supportsAllDrives:"true"}),a=`----GoogleDriveBoundary${Date.now()}`,c=JSON.stringify({name:t,parents:[e]}),l=`--${a}\r +`},ME=null;wJ={blob:["map"],kv:["map","key"],cfkv:["map","key"],d1:["map","key","sql"],do:["map","key","sql"],mysql:["map","key","sql"],memory:["map","key"]};LE=null,HE=null,sQ=null,aQ=new WeakMap,BJ=0;KE=null});async function bJ(){if(Ep)return Ep;if(AQ>=3)return null;AQ++;try{let{getStore:r}=await Promise.resolve().then(()=>Qr(SE(),1));Ep=r({name:"openlist_db",consistency:"strong"})}catch{return null}return Ep}function pQ(){gQ||(gQ=!0,!(typeof process>"u"||typeof process.on!="function")&&process.on("uncaughtException",r=>{(r?.message?.includes("RESP")||r?.message?.includes("Unknown type")||r?.stack?.includes("processResponses"))&&console.error("[KV/RESP] Caught uncaught exception from storage binding, continuing:",r.message)}))}function kJ(r){if(!r||typeof r!="object")return null;let e=IQ.get(r);return!e||e.mode==="none"&&Date.now()-e.ts>=vJ?null:e}function sh(r,e){let t={...e,ts:Date.now()};return r&&typeof r=="object"&&IQ.set(r,t),t}function wQ(r){r&&(JE=r)}function mQ(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function SJ(r,e){let t=async()=>(await Promise.resolve().then(()=>(DE(),k3))).kvDriver;return{async get(i){return(await t()).get(i,e)},async put(i,n){return(await t()).put(i,n,e)},async delete(i){return(await t()).delete(i,e)},async list(i={}){return{keys:(await(await t()).list(i?.prefix||"",e)).map(s=>({name:s,key:s}))}}}}async function jE(r){r&&(JE=r);let e=r||JE||(typeof process<"u"?process.env:{}),t=typeof globalThis<"u"?globalThis:{},i=kJ(e);if(i)return i;let n=mQ(e?.KV)?e.KV:mQ(t?.KV)?t.KV:null;if(String(e?.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!n){let c;try{c=e?.EO_KV_URLS||e?.__requestOrigin}catch{c=void 0}let l=Bd(c,e);if(l){let d={binding:SJ(l,e),platform:"EdgeOne KV (via Edge Function proxy)",mode:"proxy"};return sh(e,d)}console.warn("[DB] getKvBinding: KV proxy requested but no origin available (set EO_KV_URLS or ensure request origin is injected)")}try{let c=await bJ();if(c)return pQ(),sh(e,{binding:c,platform:"EdgeOne Blob (@edgeone/pages-blob, strong consistency)",mode:"blob"})}catch(c){console.error(`[DB] getKvBinding: EdgeOne Blob init failed: ${c?.message||c}`,`stack=${c?.stack?.substring(0,300)||""}`)}if(n){let c=!!(e&&(e.EDGEONE||e.EO_REGION))||!!(t.EDGEONE||typeof t.EdgeOne<"u");return c&&pQ(),sh(e,{binding:n,platform:c?"EdgeOne KV (KV)":"Cloudflare / EdgeOne KV (KV)",mode:"binding"})}{let c=e.CF_ACCOUNT||(typeof process<"u"?process.env.CF_ACCOUNT:""),l=e.CF_KV_UUID||(typeof process<"u"?process.env.CF_KV_UUID:""),d=e.CF_API_KEY||(typeof process<"u"?process.env.CF_API_KEY:"");if(c&&l&&d)return sh(e,{binding:{type:"cf_rest",accountId:c,namespaceId:l,token:d},platform:"Cloudflare KV (REST API)",mode:"api"})}let a=String(e?.DB_DRIVER||"").trim().toLowerCase();return(!a||a==="auto"||a==="kv"||a==="cfkv"||a==="blob")&&!yQ&&(yQ=!0,console.warn(a&&a!=="auto"?`[DB] getKvBinding: no KV-style binding found; DB_DRIVER="${a}" is served by getStorageBackend() instead. This is expected.`:"[DB] getKvBinding: no KV/Blob binding found in auto detection.")),sh(e,{binding:null,platform:"none",mode:"none"})}async function DJ(r,e="openlist_config"){let{binding:t,mode:i}=r;if(i==="none"||!t)return null;try{if(i==="blob"){let n=await t.get(e,{type:"json"});if(n)return n;let s=await t.get(e);if(s)return typeof s=="string"?JSON.parse(s):s}else if(i==="binding"||i==="proxy"){let n=null;try{n=await t.get(e,"text")}catch{n=await t.get(e)}if(n==null&&(n=await t.get(e)),n)return typeof n=="string"?JSON.parse(n):n}else if(t.type==="cf_rest"){let n=`https://api.cloudflare.com/client/v4/accounts/${t.accountId}/storage/kv/namespaces/${t.namespaceId}/values/${e}`,s=await fetch(n,{headers:{Authorization:`Bearer ${t.token}`}});if(s.ok){let a=await s.text();return JSON.parse(a)}}}catch(n){console.error("[KV/Blob Store] Error reading key:",e,n)}return null}async function Qd(r){let e=await jE(r),t=e.mode!=="none",i=!1,n=null;if(t)try{let s=await DJ(e,"openlist_config");return i=!0,{configured:!0,connected:!0,platform:e.platform,mode:e.mode,hasData:!!s,error:null}}catch(s){n=s.message||String(s)}return{configured:t,connected:i,platform:e.platform,mode:e.mode,hasData:!1,error:n}}async function xQ(r){let{getStorageBackend:e}=await Promise.resolve().then(()=>(Bo(),hQ)),{driver:t}=await e(r);return t}async function oa(r,e){try{let i=await(await xQ(r)).get(e,r);if(i==null)return null;let n=typeof i?.text=="function"?await i.text():i;return String(n).trim()||null}catch(t){return console.warn(`[Secret] read "${e}" failed:`,t),null}}async function Bp(r,e,t){try{return await(await xQ(r)).put(e,t,r),!0}catch(i){return console.warn(`[Secret] cannot persist "${e}": ${i?.message||i}`),!1}}function CQ(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}var Ep,AQ,gQ,JE,vJ,IQ,yQ,$E=J(()=>{"use strict";ap();ap();Ep=null,AQ=0;gQ=!1;JE=null,vJ=1e3,IQ=new WeakMap;yQ=!1});var ii={};An(ii,{ENCRYPTION_SECRET_KV_KEY:()=>ko,RECOMMENDED_JWT_SECRET_LENGTH:()=>SQ,__resetDbCacheForTest:()=>RJ,__setStoreBackendLoaderForTest:()=>NJ,defaultDb:()=>Vc,ensureEncryptionSecret:()=>sB,getDb:()=>ne,getDbLoadError:()=>Fp,getKvBinding:()=>jE,getKvStatus:()=>Qd,getMetas:()=>YJ,getPlugins:()=>WJ,getSettings:()=>ps,getStorages:()=>VJ,getStoreStatus:()=>gs,getUsers:()=>$J,isDbShell:()=>vQ,isDbTrusted:()=>tB,isDbWriteBlocked:()=>PJ,isEncryptionReady:()=>Tp,isJwtSecretShort:()=>OJ,readPersistedSecret:()=>oa,reloadDb:()=>Kn,resolvePath:()=>yt,saveDb:()=>he,setEnvCtx:()=>rB,writePersistedSecret:()=>Bp});function tB(){return ca}function Fp(){return vo}function PJ(){return Qp}function vQ(r){if(!r||typeof r!="object")return!0;let e=Array.isArray(r.storages)?r.storages.length:0,t=Array.isArray(r.shares)?r.shares.length:0,i=Array.isArray(r.metas)?r.metas.length:0,n=Array.isArray(r.plugins)?r.plugins.length:0;if(e+t+i+n>0||(Array.isArray(r.users)?r.users:[]).some(d=>String(d?.password||"").trim()!==""))return!1;let o=Array.isArray(r.settings)?r.settings:[],c=Array.isArray(Vc.settings)?Vc.settings:[],l=new Map(c.map(d=>[String(d.key),d.value]));return o.every(d=>l.has(String(d.key))&&l.get(String(d.key))===d.value)}function rB(r){r&&(Ii=r,wQ(r))}function nB(r){let e=r?.JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");return typeof e=="string"&&e.trim().length>0?e:null}function OJ(r){return typeof r=="string"&&r.length>0&&r.length0)return la=i,bo=!1,i}catch{}return WE||(WE=!0,console.error("[DB] No encryption key available: set JWT_SECRET. Encrypted fields cannot be decrypted and new sensitive fields will be stored in plaintext until a key becomes available.")),null}async function Tp(r){let e=r||Ii||(typeof process<"u"?process.env:{});if(nB(e))return!0;try{let t=await oa(e,ko);return!!(t&&t.trim().length>0)}catch{return!1}}function HJ(r){return new Promise(e=>setTimeout(e,r))}async function sB(r){if(ah)return ah;ah=(async()=>{let e=r||Ii||(typeof process<"u"?process.env:{}),t=nB(e);if(t)return t;let i=await oa(e,ko);if(i&&i.trim().length>0)return la=i,bo=!1,i;let n=CQ();if(!await Bp(e,ko,n))return console.error("[DB] Failed to persist an encryption key. Sensitive fields will be stored in plaintext until JWT_SECRET is configured via environment variable."),null;la=n,bo=!1;let a=MJ;for(let o=0;o0&&c!==n)return console.warn("[DB] A different encryption key already exists; adopting it to keep encrypt/decrypt symmetric."),la=c,bo=!1,c;await HJ(a),a=Math.min(a*2,LJ)}return console.warn(`[DB] Encryption key written but not yet readable after ${EQ} retries. Cross-instance reads may lag briefly due to eventual consistency; retry shortly.`),n})();try{return await ah}finally{ah=null}}function DQ(r,e,t,i,n){if(Fd.size>=KJ){let s=Fd.keys().next().value;s!==void 0&&Fd.delete(s)}Fd.set(r,{plain:e,sealed:t,fp:i,cipher:n})}function GJ(r,e,t,i){let n=Fd.get(r);return!n||n.fp!==t||n.cipher!==i||n.plain!==e?null:n.sealed}async function Dp(r,e,t){if(!r||!e||e.cipher==="none"||Hc(r))return r;let i=GJ(t,r,e.fingerprint,e.cipher);if(i)return i;let n=X_(e.cipher)+await e.encrypt(r);return DQ(t,r,n,e.fingerprint,e.cipher),n}async function _p(r,e,t){if(!r||!Hc(r))return r;if(!e)return XE||(XE=!0,console.error("[DB] Sealed values found in storage but no encryption key is available; they will be left as-is (set JWT_SECRET, or restore the original openlist_encryption_secret).")),r;let i=yo(r);try{let n=await e.decrypt(r);return i&&i.cipher===e.cipher&&DQ(t,n,r,e.fingerprint,i.cipher),n}catch(n){return console.warn("[DB] Failed to decrypt a sealed secret (wrong JWT_SECRET?):",n),r}}function zJ(r){if(!r)return!1;for(let e of r.storages||[])if(e&&yo(e.addition))return!0;for(let e of r.settings||[])if(e&&iB.has(e.key)&&yo(e.value))return!0;for(let e of r.users||[])if(e&&(yo(e.otp_secret)||yo(e.password)))return!0;return!1}async function _Q(r,e){let t=jc(r);if(t==="none"&&!e?.needDecrypt)return null;let i=await qJ(r);return i?r3(t,i):null}async function JJ(r,e){if(!e||e.cipher==="none"||!r)return r;let t,i,n,s=Array.isArray(r.storages)?r.storages:[];for(let l=0;l{c.addition=await _p(l,e,d)})}}let n=Array.isArray(r.settings)?r.settings:[];for(let a=0;a{c.value=await _p(l,e,d)})}}let s=Array.isArray(r.users)?r.users:[];for(let a=0;a{c.otp_secret=await _p(l,e,d)})}if(typeof o.password=="string"&&Hc(o.password)){let c=o,l=c.password,d=`users:${o.id??a}:password`;t.push(async()=>{c.password=await _p(l,e,d)})}}}for(let a=0;ao()))}async function Kn(r){return r&&typeof r=="object"&&(ch.delete(r),oh.delete(r)),YE(r)}async function yt(r,e){let t=await ne(e),i=r;try{i=decodeURIComponent(String(i||""))}catch{}let n="",s=0;for(;i!==n&&s<3;){n=i;try{let f=decodeURIComponent(i);if(f===i)break;i=f,s++}catch{break}}i=i.replace(/\\/g,"/").replace(/%5c/gi,"/").replace(/%2f/gi,"/").replace(/\.{3,}/g,"..").replace(/\/+/g,"/");let a=["\0","\r",` +`," "];for(let f of a)if(i.includes(f))throw new Error(`invalid path: illegal character detected (0x${f.charCodeAt(0).toString(16)})`);if(/^[A-Za-z]:/.test(i))throw new Error("invalid path: absolute Windows path not allowed");if(i.startsWith("//")||i.startsWith("\\\\"))throw new Error("invalid path: UNC path not allowed");let o=[];for(let f of i.split("/"))if(!(f===""||f===".")){if(f===".."){o.pop();continue}o.push(f)}let c="/"+o.join("/");c===""&&(c="/");let l=(t.storages||[]).filter(f=>!f.disabled&&typeof f.driver=="string"&&f.driver.trim()!==""&&f.driver!=="undefined"&&f.driver!=="null"&&typeof f.mount_path=="string"&&f.mount_path.trim()!=="");if(l.length===0)throw new Error("failed get storage: storage not found; please add a storage first");let d=[...l].sort((f,A)=>{let g="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");return("/"+(A.mount_path||"").split("/").filter(Boolean).join("/")).length-g.length});for(let f of d){let A="/"+(f.mount_path||"").split("/").filter(Boolean).join("/"),g=A==="/";if(g||c===A||c.startsWith(A+"/")){let I=c;g||(I=c.slice(A.length)),I.startsWith("/")||(I="/"+I);let m={};try{m=typeof f.addition=="string"?JSON.parse(f.addition||"{}"):f.addition||{}}catch{m={}}let B=m.root_folder_path!==void 0?m.root_folder_path:"/",x=([B,I].map(R=>R.replace(/\\/g,"/")).filter(R=>!!R&&R!=="/").join("/")||"/").replace(/\/{2,}/g,"/"),_=String(B||"/").replace(/\\/g,"/").replace(/\/+$/,"")||"/";if(_!=="/"&&x!==_&&!x.startsWith(_+"/"))throw new Error("path traversal blocked: escapes storage root");if(x.split("/").includes(".."))throw new Error("path traversal blocked: illegal '..' segment");return{storage:f,relative:I,physical:x,rootFolder:B,cleanPath:c,isVirtual:!1}}}let u=!1;for(let f of l){let A="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");if(A!=="/"&&A.startsWith(c==="/"?"/":c+"/")){u=!0;break}}if(u)return{storage:null,relative:c,physical:null,rootFolder:null,cleanPath:c,isVirtual:!0};throw new Error("failed get storage: storage not found")}async function ps(){let r=await ne(),e={};return r.settings&&r.settings.forEach(t=>{e[t.key]=t.value}),e}async function $J(){return(await ne()).users||[]}async function VJ(){return(await ne()).storages||[]}async function YJ(){return(await ne()).metas||[]}async function WJ(){return(await ne()).plugins||[]}var bQ,_J,QJ,FJ,Vc,Bt,Ii,ca,Qp,vo,TJ,VE,bp,vp,kp,Sp,UJ,ch,oh,Pp,RJ,NJ,kQ,YE,ne,iB,WE,XE,ZE,eB,ko,SQ,la,bo,ah,EQ,MJ,LJ,KJ,Fd,BQ,he,nt=J(()=>{"use strict";ti();$E();Bo();$E();Bo();bQ="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini,md,bat,gitignore,h,hpp,tsx,vtt,srt,ass,rs,lrc,strm",_J="m3u8,url",QJ="authorization,referer",FJ="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini",Vc={settings:[{key:"version",value:"v4.2.3",type:"string",help:"Application Version",group:1,flag:1},{key:"site_title",value:"OpenList",type:"string",help:"Site Title",group:1,flag:0},{key:"announcement",value:"",type:"text",help:"Site Announcement",group:1,flag:0},{key:"pagination_type",value:"pagination",type:"select",options:"all,pagination,load_more,auto_load_more",help:"Pagination Type",group:1,flag:0},{key:"default_page_size",value:"20",type:"number",help:"Default Page Size",group:1,flag:0},{key:"allow_indexed",value:"false",type:"bool",help:"Allow Search Engine Indexing",group:1,flag:0},{key:"allow_mounted",value:"true",type:"bool",help:"Allow Mounted Storages",group:1,flag:0},{key:"robots_txt",value:`User-agent: * +Disallow: /`,type:"text",help:"Robots Txt Content",group:1,flag:0},{key:"logo",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Site Logo URL",group:2,flag:0},{key:"favicon",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Favicon URL",group:2,flag:0},{key:"main_color",value:"#1890ff",type:"string",help:"Main Theme Color",group:2,flag:0},{key:"home_icon",value:"openlist",type:"string",help:"Home Icon Name",group:2,flag:0},{key:"home_container",value:"max_980px",type:"select",options:"max_980px,hope_container",help:"Home Container Width",group:2,flag:0},{key:"settings_layout",value:"responsive",type:"select",options:"list,responsive",help:"Settings Layout Mode",group:2,flag:0},{key:"text_types",value:bQ,type:"text",help:"Text File Extensions",group:3,flag:0},{key:"audio_types",value:"mp3,ogg,aac,wav,wma,flac,m4a,opus",type:"text",help:"Audio File Extensions",group:3,flag:0},{key:"video_types",value:"mp4,mkv,webm,avi,mov,flv,m3u8,ts",type:"text",help:"Video File Extensions",group:3,flag:0},{key:"image_types",value:"jpg,png,jpeg,gif,bmp,svg,ico,webp,avif,tiff",type:"text",help:"Image File Extensions",group:3,flag:0},{key:"proxy_types",value:_J,type:"text",help:"Proxy File Extensions",group:3,flag:0},{key:"proxy_ignore_headers",value:QJ,type:"text",help:"Proxy Ignore Headers",group:3,flag:0},{key:"external_previews",value:"{}",type:"text",help:"External Previews JSON Config",group:3,flag:0},{key:"iframe_previews",value:"{}",type:"text",help:"Iframe Previews JSON Config",group:3,flag:0},{key:"audio_cover",value:"https://file.nn.ci/alist/cover.png",type:"string",help:"Audio Default Cover Image URL",group:3,flag:0},{key:"audio_autoplay",value:"false",type:"bool",help:"Autoplay Audio",group:3,flag:0},{key:"video_autoplay",value:"false",type:"bool",help:"Autoplay Video",group:3,flag:0},{key:"preview_archives_by_default",value:"false",type:"bool",help:"Preview Archives By Default",group:3,flag:0},{key:"readme_autorender",value:"true",type:"bool",help:"Readme Autorender",group:3,flag:0},{key:"filter_readme_scripts",value:"true",type:"bool",help:"Filter Readme Scripts",group:3,flag:0},{key:"force_preview",value:"",type:"text",help:"Force Preview Config",group:3,flag:0},{key:"specify_preview",value:"",type:"text",help:"Specify Preview Layout Config",group:3,flag:0},{key:"markdown_autorender",value:"true",type:"bool",help:"Autorender Markdown",group:3,flag:0},{key:"code_editor_theme",value:"vs-dark",type:"select",options:"vs,vs-dark,hc-black",help:"Monaco Theme",group:3,flag:0},{key:"office_preview",value:"true",type:"bool",help:"Enable Office Document Preview",group:3,flag:0},{key:"pdf_preview",value:"true",type:"bool",help:"Enable PDF Preview",group:3,flag:0},{key:"hide_files",value:"",type:"text",help:"Files Regex to Hide",group:4,flag:0},{key:"package_download",value:"true",type:"bool",help:"Package Download Enabled",group:4,flag:0},{key:"customize_head",value:"",type:"text",help:"Custom Head HTML/CSS",group:4,flag:0},{key:"customize_body",value:"",type:"text",help:"Custom Body Script",group:4,flag:0},{key:"link_expiration",value:"0",type:"number",help:"Link Expiration in Hours (0 = never expire)",group:4,flag:0},{key:"sign_all",value:"false",type:"bool",help:"Sign All Download Links",group:4,flag:0},{key:"seed_site_url",value:"",type:"string",help:"Public site URL used by transfer seed sources",group:4,flag:1},{key:"seed_default_matrix",value:'{"md5":{"whole":true,"pieces":false},"sha1":{"whole":true,"pieces":false},"sha256":{"whole":true,"pieces":false}}',type:"text",help:"Default transfer seed hash matrix",group:4,flag:1},{key:"seed_format_policies",value:'{"oss":"off","torrent":"off","cas":"off"}',type:"text",help:"Automatic transfer seed format policies",group:4,flag:1},{key:"seed_auto_generate_policy",value:"off",type:"select",options:"off,on",help:"Global automatic transfer seed policy",group:4,flag:1},{key:"seed_single_direct_preview",value:"false",type:"bool",help:"Open single-file transfer seeds directly in preview",group:4,flag:0},{key:"seed_cas_direct_access",value:"false",type:"bool",help:"When opening a single-file CAS seed, immediately rapid-upload it into the same folder and preview the restored file",group:4,flag:0},{key:"seed_default_trackers",value:"",type:"text",help:"Default tracker list offered when generating torrent seeds (one tracker per line)",group:4,flag:1},{key:"privacy_regs",value:"",type:"text",help:"Privacy Regex Rules",group:4,flag:0},{key:"ocr_api",value:"",type:"string",help:"OCR API Endpoint",group:4,flag:0},{key:"filename_char_mapping",value:"{}",type:"text",help:"Filename Char Mapping JSON",group:4,flag:0},{key:"forward_direct_link_params",value:"",type:"string",help:"Forward Direct Link Params",group:4,flag:0},{key:"ignore_direct_link_params",value:"",type:"string",help:"Ignore Direct Link Params",group:4,flag:0},{key:"webauthn_login_enabled",value:"false",type:"bool",help:"Webauthn Login Enabled",group:4,flag:0},{key:"allow_previewing_sharing_files",value:"true",type:"bool",help:"Allow Previewing Sharing Files",group:4,flag:0},{key:"allow_previewing_sharing_archives",value:"true",type:"bool",help:"Allow Previewing Sharing Archives",group:4,flag:0},{key:"force_proxy_sharing_files",value:"false",type:"bool",help:"Force Proxy Sharing Files",group:4,flag:0},{key:"share_summary_content",value:"",type:"text",help:"Share Summary Content",group:4,flag:0},{key:"handle_hook_after_writing",value:"",type:"string",help:"Handle Hook After Writing",group:4,flag:0},{key:"handle_hook_rate_limit",value:"0",type:"number",help:"Handle Hook Rate Limit",group:4,flag:0},{key:"ignore_system_files",value:"true",type:"bool",help:"Ignore System Files (.DS_Store, desktop.ini, etc.)",group:4,flag:0},{key:"auto_update_index",value:"false",type:"bool",help:"Auto Update Search Index",group:4,flag:0},{key:"sso_login_enabled",value:"false",type:"bool",help:"Enable SSO Login",group:7,flag:0},{key:"sso_login_platform",value:"",type:"select",options:"Github,Microsoft,Google,Dingtalk,Casdoor,OIDC",help:"SSO Platform",group:7,flag:0},{key:"sso_client_id",value:"",type:"string",help:"SSO Client ID",group:7,flag:0},{key:"sso_client_secret",value:"",type:"string",help:"SSO Client Secret",group:7,flag:0},{key:"sso_login_url",value:"",type:"string",help:"SSO Authorization Endpoint",group:7,flag:0},{key:"sso_token_url",value:"",type:"string",help:"SSO Token Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_userinfo_url",value:"",type:"string",help:"SSO UserInfo Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_scopes",value:"",type:"string",help:"SSO OAuth2 Scopes (optional, space separated)",group:7,flag:0},{key:"sso_oidc_discovery_url",value:"",type:"string",help:"OIDC Discovery URL (for OIDC platform)",group:7,flag:0},{key:"sso_login_callback_url",value:"",type:"string",help:"SSO Redirect/Callback URL (optional, defaults to /api/auth/sso_callback)",group:7,flag:0},{key:"sso_compatibility_mode",value:"false",type:"bool",help:"SSO Compatibility Mode (postMessage token handoff)",group:7,flag:0},{key:"sso_auto_register",value:"false",type:"bool",help:"Auto Register New SSO Users",group:7,flag:0},{key:"sso_default_dir",value:"/",type:"string",help:"SSO Default Directory for New Users",group:7,flag:0},{key:"sso_default_permission",value:"0",type:"number",help:"SSO Default Permission for New Users",group:7,flag:0},{key:"ldap_host",value:"",type:"string",help:"LDAP Server Host",group:8,flag:0},{key:"ldap_port",value:"389",type:"number",help:"LDAP Server Port",group:8,flag:0},{key:"traffic_limit",value:"0",type:"number",help:"Traffic Limit in MB",group:10,flag:0},{key:"ip_limit",value:"0",type:"number",help:"IP Rate Limit Per Minute",group:10,flag:0},{key:"115_temp_dir",value:"",type:"string",help:"115 Temp Directory",group:14,flag:0},{key:"115_open_temp_dir",value:"",type:"string",help:"115 Open Temp Directory",group:14,flag:0},{key:"123_temp_dir",value:"",type:"string",help:"123 Pan Temp Directory",group:14,flag:0},{key:"123_open_temp_dir",value:"",type:"string",help:"123 Open Temp Directory",group:14,flag:0},{key:"123_open_callback_url",value:"",type:"string",help:"123 Open Callback URL",group:14,flag:0},{key:"pikpak_temp_dir",value:"",type:"string",help:"PikPak Temp Directory",group:14,flag:0},{key:"thunder_temp_dir",value:"",type:"string",help:"Thunder Temp Directory",group:14,flag:0},{key:"thunder_browser_temp_dir",value:"",type:"string",help:"Thunder Browser Temp Directory",group:14,flag:0},{key:"thunderx_temp_dir",value:"",type:"string",help:"ThunderX Temp Directory",group:14,flag:0},{key:"token",value:"",type:"string",help:"115 / PikPak / Thunder Token",group:14,flag:0},{key:"package_download_disabled",value:"false",type:"bool",help:"Disable Package Download",group:14,flag:0}],storages:[],users:[{id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()},{id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()}],metas:[],shares:[],plugins:[]},Bt=null,Ii=null,ca=!1,Qp=!1,vo=null;TJ={logo:{from:["","/logo.png","https://res.oplist.org/logo/logo.png"],to:"https://res.oplist.org/logo/logo.svg"},favicon:{from:["","/favicon.png"],to:"https://res.oplist.org/logo/logo.svg"},home_container:{from:["hope_container"],to:"max_980px"},text_types:{from:[FJ],to:bQ}},VE=r=>{if(!r)return;r.settings||(r.settings=[]);let e=!1,t=[],i=new Set;for(let n of Vc.settings){i.add(n.key);let s=r.settings.filter(a=>a.key===n.key);if(s.length===0)t.push(JSON.parse(JSON.stringify(n))),e=!0;else{let a=s.find(c=>c.value&&c.value.trim()!=="")||s[0];(a.group!==n.group||a.help!==n.help||a.type!==n.type||a.options!==n.options||a.flag!==n.flag)&&(a.group=n.group,a.help=n.help,a.type=n.type,a.options=n.options,a.flag=n.flag,e=!0),s.length>1&&(e=!0);let o=TJ[n.key];o&&o.from.includes(a.value)&&(a.value=o.to,e=!0),t.push(a)}}for(let n of r.settings)n.key&&!i.has(n.key)&&(i.add(n.key),t.push(n));r.settings=t},bp=r=>{r&&(!r.storages||!Array.isArray(r.storages)?r.storages=[]:r.storages=r.storages.filter(e=>e&&typeof e=="object"&&typeof e.driver=="string"&&e.driver.trim()!==""&&e.driver!=="undefined"&&e.driver!=="null"&&typeof e.mount_path=="string"&&e.mount_path.trim()!==""))},vp=r=>{r&&(r.shares||(r.shares=[]))},kp=r=>{r&&(r.plugins||(r.plugins=[]))},Sp=r=>{r&&(!r.metas||!Array.isArray(r.metas))&&(r.metas=[])},UJ=1e3,ch=new WeakMap,oh=new WeakMap,Pp=r=>xp(r),RJ=()=>{Ii&&typeof Ii=="object"&&(ch.delete(Ii),oh.delete(Ii)),Ii=null,Bt=null,Pp=r=>xp(r),ca=!1,vo=null,Qp=!1,la=null,bo=!1,WE=!1,XE=!1,ZE=!1,eB=!1,e3(),Fd.clear()},NJ=r=>{Pp=r},kQ=()=>{let r=Ii;return r&&typeof r=="object"?r:null},YE=async r=>{r&&(Ii=r);let e=r||Ii,t=null;try{t=await Pp(e);let i=await t.load(e);if(i){let n=zJ(i);n&&jc(e)==="none"&&!eB&&(eB=!0,console.log("[DB] DB_CIPHER=none: existing encrypted values were decrypted; the next save will write them back as PLAINTEXT (per-field migration, no explicit step needed). Set DB_CIPHER to keep them encrypted."));let s=n?await _Q(e,{needDecrypt:!0}):null;return await jJ(i,s),Bt=i,VE(Bt),bp(Bt),vp(Bt),kp(Bt),Sp(Bt),ca=!0,vo=null,Bt}if(ca&&Bt)return console.warn(`[DB] Backend ${t?.name??"storage"} returned empty while a trusted snapshot exists; keeping the in-memory snapshot to avoid overwriting real config.`),VE(Bt),bp(Bt),vp(Bt),kp(Bt),Sp(Bt),Bt;ca=!1,vo=null}catch(i){console.error(`[DB] Error reading config from ${t?.name??"storage"}:`,i?.message||i),vo=String(i?.message||i),ca=!1}return Bt&&ca?(VE(Bt),bp(Bt),vp(Bt),kp(Bt),Sp(Bt),Bt):(Bt=JSON.parse(JSON.stringify(Vc)),bp(Bt),vp(Bt),kp(Bt),Sp(Bt),Bt)},ne=async r=>{r&&(Ii=r);let e=r||kQ();if(!e)return YE(r);let t=oh.get(e);if(t)return t;let i=ch.get(e);if(i&&Date.now()-i.ts(ch.set(e,{ts:Date.now(),db:s}),s)).finally(()=>{oh.delete(e)});return oh.set(e,n),n},iB=new Set(["token","sso_client_secret","sso_client_id","ldap_bind_password","ldap_bind_dn","ocr_api","handle_hook_after_writing"]),WE=!1,XE=!1,ZE=!1,eB=!1,ko="openlist_encryption_secret";SQ=32;la=null,bo=!1;ah=null,EQ=6,MJ=100,LJ=1e3;KJ=4096,Fd=new Map;BQ=16;he=async(r,e,t)=>{e&&(Ii=e);let i=e||Ii;if(vQ(r)&&!t?.force){Qp=!0;let d=vo?`last load failed: ${vo}`:ca?"payload is an empty/shell database":"database was never successfully loaded from the persistence backend";return console.error(`[DB] saveDb BLOCKED: refusing to persist an empty/shell database (${d}). This guard prevents an empty payload from wiping real config. Pass saveDb(db, env, { force: true }) to override intentionally.`),!1}let s=t?.publishOnSuccess===!0,a=e||kQ(),o=()=>{Bt=r,Qp=!1,a&&ch.set(a,{ts:Date.now(),db:r})};s||o();let c=await Pp(i);if(!(c.isConfigured?await c.isConfigured(i):!0))return console.warn("[DB] WARNING: No persistence backend configured! Storage configuration changes will exist only in memory!"),!1;try{let d=jc(i);console.log(`[DB] saveDb: cipher=${d}, persisting to ${c.name}, storages=${r.storages?.length||0}`);let u=d==="none"?null:await _Q(i);d!=="none"&&!u&&!ZE&&(ZE=!0,console.error(`[DB] DB_CIPHER=${d} but no encryption key is available; sensitive fields will be stored in PLAINTEXT. Set JWT_SECRET.`));let f=await JJ(r,u);if(console.log(`[DB] saveDb: sealed data size=${JSON.stringify(f).length} bytes`),!await c.save(f,i))return console.warn(`[DB] saveDb FAILED: backend=${c.name} returned false`),!1}catch(d){throw console.error(`[DB] saveDb FAILED: backend=${c.name}, error=${d?.message||d}`,`stack=${d?.stack?.substring(0,500)||""}`),new Error(`[DB] Failed to persist config (${c.name}); the change was NOT saved: ${d?.message||d}`)}return s&&o(),console.log(`[DB] Successfully persisted ${r.storages?.length||0} storages to ${c.name}`),ca=!0,vo=null,!0}});function da(r){return(r.startsWith("/")?r:`/${r}`).replace(/[^A-Za-z0-9\-_.~$&+,:;=@/]/gu,t=>{try{return encodeURIComponent(t)}catch{return t}})}var Pd=J(()=>{"use strict"});function FQ(r){if(!r)return{};if(typeof r=="object")return r;if(typeof r=="string")try{let e=JSON.parse(r||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}return{}}function aB(r){return typeof r=="string"?r.toLowerCase()==="true":r===!0}function Yc(r){if(typeof r=="number"&&Number.isFinite(r))return Math.trunc(r);if(typeof r=="string"&&r.trim()!==""){let e=parseInt(r,10);if(Number.isFinite(e))return e}return null}function PQ(r){let e=r?.proxy_range??r?.proxyRange;return e==null||e===""?!0:aB(e)}function TQ(r){return r?aB(r.enable_sign??r.enableSign):!1}function UQ(r){return r?aB(r.disable_index??r.disableIndex):!1}function XJ(r){let e=Yc(r?.cache_expiration??r?.cacheExpiration);return e===null||e<0?30:e}function ZJ(r){let e=r?.custom_cache_policies??r?.customCachePolicies;if(!e)return[];if(typeof e=="string"){let i=e.trim();if(!i)return[];try{e=JSON.parse(i)}catch{let n=[];for(let s of i.split(",")){let a=s.lastIndexOf(":");if(a<=0)continue;let o=s.slice(0,a).trim(),c=Yc(s.slice(a+1).trim());o&&c!==null&&n.push({path:o,cacheExpiration:c})}return n}}let t=[];if(Array.isArray(e)){for(let i of e)if(i){if(typeof i=="string"){let n=i.lastIndexOf(":");if(n<=0)continue;let s=i.slice(0,n).trim(),a=Yc(i.slice(n+1).trim());s&&a!==null&&t.push({path:s,cacheExpiration:a});continue}if(typeof i=="object"){let n=i.path??i.Path,s=Yc(i.cache_expiration??i.cacheExpiration)??Yc(i.max_age??i.maxAge);if(typeof n=="string"&&n&&s!==null){let a=Yc(i.max_age??i.maxAge);t.push({path:n,cacheExpiration:s,...a!==null?{maxAge:a}:{}})}}}return t}if(typeof e=="object")for(let[i,n]of Object.entries(e)){let s=Yc(n);i&&s!==null&&t.push({path:i,cacheExpiration:s})}return t}function QQ(r,e){if(!r)return!1;if(r===e)return!0;if(r.length>ej||e.length>tj)return!1;let t=r.split("/"),i=e.split("/"),n=t.length,s=i.length,a=new Array(s+1).fill(!1);a[s]=!0;for(let o=n-1;o>=0;o--){let c=t[o],l=new Array(s+1).fill(!1);if(/^\*{2,}$/.test(c)){l[s]=a[s];for(let u=s-1;u>=0;u--)l[u]=a[u]||l[u+1]}else for(let u=s-1;u>=0;u--)l[u]=rj(c,i[u])&&a[u+1];a=l}return a[0]}function rj(r,e){let t=0,i=0,n=-1,s=-1,a=r.length,o=e.length;for(;i{"use strict";ej=1024,tj=4096});function Wc(r){return String(r??"").toLowerCase().replace(/[^a-z0-9]/g,"")}function Xc(r){let e=Array.isArray(r)?r.join(","):r;return String(e??"").split(",").map(t=>t.trim().toLowerCase().replace(/^\./,"")).filter(Boolean)}function qQ(r){let e=String(r??"").split("/").pop()?.trim();if(!e)return"";let t=e.lastIndexOf(".");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase()}function MQ(r){return NQ.has(Wc(r))}function sj(r){let e=FQ(r?.addition),t=String(e.storage_zone_name??"").trim(),i=String(e.cdn_base_url??"").trim();return t!==""&&i===""}function Up(r,e){let t=Wc(e??r?.driver);return NQ.has(t)?!0:t==="bunnystorage"?sj(r):!1}function cB(r){return ij.has(Wc(r))}function LQ(r){if(!r)return"";let e=r.webdav_policy??r.webdavPolicy??r.policy??r.webdavPolicyType;return typeof e=="string"?e.trim():""}function HQ(r){if(!r)return"";for(let t of["down_proxy_url","downProxyUrl"]){let i=r[t];if(typeof i=="string"&&i.trim())return i.split(` +`)[0].trim()}let e=r.addition;if(typeof e=="string")try{e=JSON.parse(e||"{}")}catch{return""}if(!e||typeof e!="object")return"";for(let t of nj){let i=e[t];if(typeof i=="string"&&i.trim())return i.split(` +`)[0].trim()}return""}function KQ(r){if(!r)return!1;let e=r.disable_proxy_sign??r.disableProxySign;return typeof e=="string"?e.toLowerCase()==="true":!!e}function GQ(r,e){let t=r?.web_proxy??r?.webProxy;return t===!0||t==="true"?!0:t===!1||t==="false"?!1:cB(e)}function zQ(r,e,t,i={}){let n=Wc(e);if(Up(r,n))return{mode:"native_proxy",needsProxy:!0,source:"force"};if(GQ(r,n))return{mode:"native_proxy",needsProxy:!0,source:"web_proxy"};if(t)return{mode:"native_proxy",needsProxy:!0,source:"proxy_path"};if(oB(qQ(i.filename),i.proxyTypes))return{mode:"native_proxy",needsProxy:!0,source:"proxy_types"};let s=LQ(r);return s?{mode:s,needsProxy:s!=="302_redirect",source:"storage_policy"}:{mode:"302_redirect",needsProxy:!1,source:"driver_default"}}function oB(r,e){return r?Xc(e).includes(r):!1}function Rp(r){let e=Wc(r.driver);if(Up(r.storage,e)||GQ(r.storage,e)||LQ(r.storage)==="use_proxy_url")return!0;let t=qQ(r.filename);return t?oB(t,r.proxyTypes)||oB(t,r.textTypes):!1}var NQ,ij,OQ,nj,dh=J(()=>{"use strict";lh();NQ=new Set(["weiyun","sftp","ftp","smb","crypt","virtual","strm","meganz","protondrive","chunk","googledrive","googlephoto","quarkopen","quarkuc","chaoxing","local"]),ij=new Set(["webdav","baidunetdisk","123pan","123open","123panshare"]),OQ=new Set(["139yun","alias","alistv3","openlist"]),nj=["down_proxy_url","download_proxy_url","proxy_url"]});function X(r,e){if(e)return 1;let t=(r.split(".").pop()||"").toLowerCase();return["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm","3gp","asf","vob","ogv","rm","f4v"].includes(t)?2:["mp3","flac","aac","wav","ogg","m4a","opus","wma","ape","alac","aiff","mid","midi"].includes(t)?3:["txt","md","markdown","json","js","ts","jsx","tsx","css","scss","html","htm","xml","yaml","yml","ini","conf","env","log","sql","py","java","c","cpp","h","hpp","go","rs","sh","bat","cmd","ps1","php","rb","swift","kt","cs","vue","svelte","json5","toml"].includes(t)?4:["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","heic","heif","avif","vvc","avc","psd","ai"].includes(t)?5:0}var ve=J(()=>{"use strict"});function ue(r,e,t){let i=t!=="desc",n=String(e||"name").toLowerCase(),s=[...r];return s.sort((a,o)=>{if(a.is_dir!==o.is_dir)return a.is_dir?-1:1;let c;return n.includes("size")?c=(a.size||0)-(o.size||0):n.includes("time")||n.includes("modified")||n.includes("created")?c=new Date(a.modified).getTime()-new Date(o.modified).getTime():c=String(a.name).localeCompare(String(o.name)),i?c:-c}),s}var $e=J(()=>{"use strict"});var ms,lB=J(()=>{"use strict";ms={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.partner.microsoftonline.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function dB(r,e){let t="";return r.thumbnails&&r.thumbnails.length>0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var JQ=J(()=>{"use strict"});async function uB(r){if(r.use_online_api&&r.api_url_address){let s=new URLSearchParams({refresh_ui:r.refresh_token,server_use:"true",driver_txt:"onedrive_pr"}).toString(),o=await(await fetch(`${r.api_url_address}?${s}`)).json();if(!o.refresh_token||!o.access_token)throw o.text?new Error(`failed to refresh token: ${o.text}`):new Error("empty token returned from official API");r.accessToken=o.access_token,r.refresh_token=o.refresh_token,await r.onTokenUpdate?.(r.refresh_token);return}if(!r.client_id||!r.client_secret)throw new Error("empty ClientID or ClientSecret");let t=`${(ms[r.region]||ms.global).oauth}/common/oauth2/v2.0/token`,n=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:r.client_id,client_secret:r.client_secret,redirect_uri:r.redirect_uri,refresh_token:r.refresh_token}).toString()})).json();if(!n.refresh_token)throw new Error("Empty token");r.refresh_token=n.refresh_token,r.accessToken=n.access_token,await r.onTokenUpdate?.(r.refresh_token)}async function Xi(r,e,t,i,n){let s=i!==void 0&&(i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),a={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0?{"Content-Type":s?"application/octet-stream":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},o=await fetch(e,a);if(!o.ok){let c;try{c=(await o.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||o.status===401)&&!n)return await uB(r),Xi(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${o.status}`)}if(o.status!==204)return o.json()}function jQ(r,e,t){let i=e.replace(/\\/g,"/");if(!i||i==="/")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let n=i.startsWith("/")?i.slice(1):i;if(n.endsWith("/")&&(n=n.slice(0,-1)),!n||n==="")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let s=n.split("/").map(encodeURIComponent).join("/");return t?`${r}/drive/root:/${s}:/${t}`:`${r}/drive/root:/${s}:`}async function $Q(r,e){let t=ms[r.region]||ms.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,s=jQ(i,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,@microsoft.graph.downloadUrl,file,folder,parentReference"),a=[];for(;s;){let o=await Xi(r,s,"GET");o.value&&a.push(...o.value),s=o["@odata.nextLink"]}return a}async function VQ(r,e){let t=ms[r.region]||ms.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,n=jQ(i,e);return Xi(r,n,"GET")}var YQ=J(()=>{"use strict";lB()});var Np,WQ=J(()=>{"use strict";$e();lB();JQ();YQ();Np=class{root_folder_path="/";region="global";is_sharepoint=!1;use_online_api=!0;api_url_address="https://api.oplist.org/onedrive/renewapi";client_id="";client_secret="";redirect_uri="https://api.oplist.org/onedrive/callback";refresh_token="";site_id="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.is_sharepoint!==void 0&&(this.is_sharepoint=!!e.is_sharepoint),e.use_online_api!==void 0&&(this.use_online_api=!!e.use_online_api),e.api_url_address!==void 0&&(this.api_url_address=String(e.api_url_address)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.redirect_uri!==void 0&&(this.redirect_uri=String(e.redirect_uri)),e.refresh_token!==void 0&&(this.refresh_token=String(e.refresh_token)),e.site_id!==void 0&&(this.site_id=String(e.site_id)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.is_sharepoint=="string"&&(this.is_sharepoint=this.is_sharepoint.toLowerCase()==="true"),typeof this.use_online_api=="string"&&(this.use_online_api=this.use_online_api.toLowerCase()==="true"),typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.refresh_token&&await uB(this)}getMetaUrl(e,t,i){let n=ms[this.region]||ms.global;if(e)return n.oauth;let s=this.is_sharepoint?`${n.api}/v1.0/sites/${this.site_id}`:`${n.api}/v1.0/me`,a=t.replace(/\\/g,"/");if(!a||a==="/")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let o=a.startsWith("/")?a.slice(1):a;if(o.endsWith("/")&&(o=o.slice(0,-1)),!o||o==="")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let c=o.split("/").map(l=>{try{return encodeURIComponent(decodeURIComponent(l))}catch{return encodeURIComponent(l)}}).join("/");return i?`${s}/drive/root:/${c}:/${i}`:`${s}/drive/root:/${c}:`}async list(e,t){let n=(await $Q(this,t)).map(s=>{let a=dB(s,""),o=s["@microsoft.graph.downloadUrl"]||a.url||"";if(this.custom_host&&o)try{let c=new URL(o);c.host=this.custom_host,o=c.toString()}catch{}return{name:a.name,size:a.size,is_dir:a.isFolder,modified:a.modified,sign:"",type:a.isFolder?1:0,thumb:a.thumbnail||"",raw_url:o}});return ue(n,this.order_by,this.order_direction)}async get(e,t){let i=await VQ(this,t),n=dB(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let a=new URL(s);a.host=this.custom_host,s=a.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=this.getMetaUrl(!1,i,"children");await Xi(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=this.getMetaUrl(!1,t);await Xi(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,a=this.getMetaUrl(!1,s);await Xi(this,a,"DELETE")}}async move(e,t,i,n,s){let a=this.getMetaUrl(!1,s),o=await Xi(this,a,"GET"),c=o.id,l=o.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},A=this.getMetaUrl(!1,u);await Xi(this,A,"PATCH",f)}}async copy(e,t,i,n,s){let a=this.getMetaUrl(!1,s),o=await Xi(this,a,"GET"),c=o.id,l=o.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},A=this.getMetaUrl(!1,u,"copy");await Xi(this,A,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=this.getMetaUrl(!1,t,"content");await Xi(this,n,"PUT",i)}else{let n=this.getMetaUrl(!1,t,"createUploadSession"),o=(await Xi(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var XQ=J(()=>{"use strict"});var Zc,ZQ=J(()=>{"use strict";Zc={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.chinacloudapi.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function Zi(r,e,t,i){let n=Zc[r.region]||Zc.global;if(e)return n.oauth;let s=t?t.replace(/\\/g,"/"):"";if(!s||s==="/")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let a=s.startsWith("/")?s.slice(1):s;if(a.endsWith("/")&&(a=a.slice(0,-1)),!a||a==="")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let o=a.split("/").map(c=>{try{return encodeURIComponent(decodeURIComponent(c))}catch{return encodeURIComponent(c)}}).join("/");return i?`${n.api}/v1.0/users/${r.email}/drive/root:/${o}:/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root:/${o}:`}async function hB(r){let e=null;for(let t=0;t<3;t++)try{await aj(r);return}catch(i){e=i}throw e||new Error("Failed to get access token")}async function aj(r){if(!r.client_id||!r.client_secret)throw new Error("empty client_id or client_secret");if(!r.tenant_id)throw new Error("empty tenant_id");let e=Zc[r.region]||Zc.global,t=`${e.oauth}/${r.tenant_id}/oauth2/token`,i=new URLSearchParams({grant_type:"client_credentials",client_id:r.client_id,client_secret:r.client_secret,resource:`${e.api}/`,scope:`${e.api}/.default`}).toString(),s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i})).json();if(s.error)throw new Error(s.error_description||s.error);if(!s.access_token)throw new Error("empty token returned from Microsoft identity platform");r.accessToken=s.access_token,r.onTokenUpdate?.(r.accessToken)}async function wi(r,e,t,i,n){let s=i!==void 0&&(typeof i=="string"||i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),a={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0&&!s?{"Content-Type":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},o=await fetch(e,a);if(!o.ok){let c;try{c=(await o.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||o.status===401)&&!n)return await hB(r),wi(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${o.status}`)}if(o.status!==204)return o.json()}async function e8(r,e){let i=Zi(r,!1,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,lastModifiedDateTime,@microsoft.graph.downloadUrl,file,folder,parentReference"),n=[];for(;i;){let s=await wi(r,i,"GET");s.value&&n.push(...s.value),i=s["@odata.nextLink"]}return n}async function t8(r,e){let t=Zi(r,!1,e);return wi(r,t,"GET")}async function r8(r){let t=`${(Zc[r.region]||Zc.global).api}/v1.0/users/${r.email}/drive`;return wi(r,t,"GET",void 0,!0)}async function i8(r,e){let t=Zi(r,!1,e,"createUploadSession"),s=(await wi(r,t,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl;if(!s)throw new Error("failed to get upload URL from response");return{UploadURL:s,ChunkSize:(r.chunk_size||5)*1024*1024,Method:"PUT"}}var n8=J(()=>{"use strict";ZQ()});var Op,s8=J(()=>{"use strict";$e();XQ();n8();Op=class{root_folder_path="/";region="global";client_id="";client_secret="";tenant_id="";email="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.tenant_id!==void 0&&(this.tenant_id=String(e.tenant_id)),e.email!==void 0&&(this.email=String(e.email)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.client_id&&this.client_secret&&this.tenant_id&&await hB(this)}async list(e,t){let n=(await e8(this,t)).map(s=>{let a=fB(s,""),o=s["@microsoft.graph.downloadUrl"]||a.url||"";if(this.custom_host&&o)try{let c=new URL(o);c.host=this.custom_host,o=c.toString()}catch{}return{name:a.name,size:a.size,is_dir:a.isFolder,modified:a.modified,sign:"",type:a.isFolder?1:0,thumb:a.thumbnail||"",raw_url:o}});return ue(n,this.order_by,this.order_direction)}async get(e,t){let i=await t8(this,t),n=fB(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let a=new URL(s);a.host=this.custom_host,s=a.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=Zi(this,!1,i,"children");await wi(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=Zi(this,!1,t);await wi(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,a=Zi(this,!1,s);await wi(this,a,"DELETE")}}async move(e,t,i,n,s){let a=Zi(this,!1,s),o=await wi(this,a,"GET"),c=o.id,l=o.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},A=Zi(this,!1,u);await wi(this,A,"PATCH",f)}}async copy(e,t,i,n,s){let a=Zi(this,!1,s),o=await wi(this,a,"GET"),c=o.id,l=o.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},A=Zi(this,!1,u,"copy");await wi(this,A,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=Zi(this,!1,t,"content");await wi(this,n,"PUT",i)}else{let n=Zi(this,!1,t,"createUploadSession"),o=(await wi(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l255||g>255||p>255||I>255||A===0||A===127||A===10||A===172&&g>=16&&g<=31||A===192&&g===168||A===169&&g===254||A===100&&g>=64&&g<=127||A===100&&g===100||A===224&&g===0&&p===0||A>=240)return!1}if(/^\d{8,}$/.test(i)||/^0x[0-9a-fA-F]{6,}$/i.test(i))return!1;let c=[/(^|\.)\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}(\.|$)/,/(^|\.)0x[0-9a-f]{6,8}(\.|$)/i,/(^|\.)\d{8,}(\.|$)/,/(^|\.)127\.0\.0\.1\.nip\.io$/,/(^|\.)localtest\.me$/,/(^|\.)vcap\.me$/,/(^|\.)xip\.io$/];for(let l of c)if(l.test(i))return!1;return!0}catch{return!1}}function ni(r,e="Request",t){if(!oj(r,t))throw new Error(`${e} blocked: URL points to a restricted or private network destination (SSRF protection)`)}function cj(r){let e=new Set;if(r==null)return e;let t=r;if(typeof r=="string")try{t=JSON.parse(r)}catch{return e}if(typeof t!="object"||Array.isArray(t))return e;let i=/(url|host|address|endpoint|server|domain|site|base|gateway|api)/i,n=s=>{if(!(s==null||typeof s!="object"))for(let[a,o]of Object.entries(s))if(typeof o=="string"){if(i.test(a)){let c=a8(o);c&&e.add(c)}}else o!=null&&typeof o=="object"&&n(o)};return n(t),e}function a8(r){let e=r.trim();if(!e)return;let t=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?[e]:[`http://${e}`];for(let i of t)try{let n=new URL(i);if(n.protocol!=="http:"&&n.protocol!=="https:")continue;let s=n.hostname.toLowerCase().trim();if(s)return s}catch{}}function lj(r){let e=new Set;if(!r)return e;for(let t of r.split(/[,;\s]+/)){let i=a8(t);i&&e.add(i)}return e}function qp(r,e){let t=cj(r),i=e?.SSRF_ALLOWED_HOSTS??(typeof process<"u"?process.env?.SSRF_ALLOWED_HOSTS:void 0);if(typeof i=="string"&&i.trim())for(let n of lj(i))t.add(n);return t}var el=J(()=>{"use strict"});var dj,Mp,o8=J(()=>{"use strict";el();dj="https://openapi.aliyundrive.com/adrive/v1.0",Mp=class{addition;accessToken="";refreshTokenVal="";driveId="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.driveId=e.drive_id||""}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[AliyundriveOpen] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken(),this.driveId||await this.resolveDriveId()}catch(e){console.warn("[AliyundriveOpen] init warning:",e.message)}}async resolveDriveId(e=!1){if(!e&&this.addition.drive_id&&this.addition.drive_id.trim()){this.driveId=this.addition.drive_id.trim();return}try{let t=await this.openApiRequest("/user/getDriveInfo",{}),i=e?"resource":this.addition.drive_type||"resource",n="";i==="resource"&&t.resource_drive_id?n=t.resource_drive_id:i==="backup"&&t.backup_drive_id?n=t.backup_drive_id:i==="default"&&t.default_drive_id&&(n=t.default_drive_id),n||(n=t.resource_drive_id||t.default_drive_id||t.backup_drive_id||""),this.driveId=n,console.log(`[AliyundriveOpen] Resolved drive_id: ${this.driveId} (driveType: ${i})`)}catch(t){console.warn("[AliyundriveOpen] resolveDriveId failed:",t.message)}}async refreshAccessToken(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim())return;let e=this.refreshTokenVal.trim(),t=[];if(this.addition.api_url_address&&this.addition.api_url_address.trim()){let a=this.addition.api_url_address.trim();try{ni(a,"AliyundriveOpen api_url_address"),t.push(a)}catch(o){console.warn(`[AliyundriveOpen] Skipping unsafe api_url_address: ${o.message}`)}}t.push("https://api.oplist.org/alicloud/renewapi","https://api.oplist.org/ali_open/token","https://api.oplist.org/aliyundrive/token","https://api.alist.nn.ci/alist/ali_open/token","https://api.alist.nn.ci/aliyundrive/token","https://api-sam.oplist.org/aliyundrive/token");let i=this.addition.alipan_type==="alipanTV"?"alicloud_tv":"alicloud_qr";for(let a of t)try{let o=new URLSearchParams({refresh_ui:e,refresh_token:e,server_use:"true",driver_txt:i}),c=await fetch(`${a}?${o.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.refresh_token||l.data?.refresh_token||"",u=l.access_token||l.data?.access_token||"";if(!u)throw new Error(`Empty access_token from online API: ${JSON.stringify(l)}`);this.accessToken=u,d&&(this.refreshTokenVal=d),this.tokenExpiresAt=Date.now()+(l.expires_in||7200)*1e3-6e4;return}catch(o){console.warn(`[AliyundriveOpen] Online API '${a}' failed: ${o.message}`)}let n=(this.addition.client_id||"").trim()||"25ab4837190e48718a28f80073574a4d",s=(this.addition.client_secret||"").trim();try{let a={grant_type:"refresh_token",refresh_token:e,client_id:n};s&&(a.client_secret=s);let o=await fetch("https://openapi.aliyundrive.com/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!o.ok){let l=await o.text().catch(()=>"");throw new Error(`[Status ${o.status}] ${l}`)}let c=await o.json();if(!c.access_token)throw new Error(`Invalid response: ${JSON.stringify(c)}`);this.accessToken=c.access_token,c.refresh_token&&(this.refreshTokenVal=c.refresh_token),this.tokenExpiresAt=Date.now()+(c.expires_in||7200)*1e3-6e4;return}catch(a){console.warn(`[AliyundriveOpen] Direct OAuth failed: ${a.message}`)}throw new Error("[AliyundriveOpen] All token refresh strategies failed. Please check: 1) refresh_token is valid and not expired, 2) api_url_address is accessible, 3) If using direct OAuth, client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async openApiRequest(e,t,i=!0){await this.ensureToken();let n=e.startsWith("http")?e:`${dj}${e}`;try{ni(n,"AliyundriveOpen openApiRequest")}catch(a){throw new Error(`[AliyundriveOpen] blocked unsafe URL: ${a.message}`)}let s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)});if(s.status===401&&i)return await this.refreshAccessToken(),this.openApiRequest(e,t,!1);if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`[AliyundriveOpen] API error [${s.status}] ${e}: ${a}`)}return s.json()}async listFiles(e){this.driveId||await this.resolveDriveId();let t=[],i,n=this.addition.order_by||"updated_at",s=this.addition.order_direction||"DESC";do{let a={drive_id:this.driveId,parent_file_id:e,limit:100,order_by:n,order_direction:s};i&&(a.marker=i);let o;try{o=await this.openApiRequest("/openFile/list",a)}catch(c){if(c.message?.includes("UserNotAllowedAccessDrive"))console.warn(`[AliyundriveOpen] UserNotAllowedAccessDrive for drive ${this.driveId}, auto re-resolving drive_id...`),await this.resolveDriveId(!0),a.drive_id=this.driveId,o=await this.openApiRequest("/openFile/list",a);else throw c}t.push(...o.items||[]),i=o.next_marker||void 0}while(i);return t}async getFile(e){return this.driveId||await this.resolveDriveId(),this.openApiRequest("/openFile/get",{drive_id:this.driveId,file_id:e})}async getDownloadUrl(e){let t=await this.openApiRequest("/openFile/getDownloadUrl",{drive_id:this.driveId,file_id:e,expire_sec:14400});return t.url||t.download_url||""}async mkdir(e,t){await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"folder",check_name_mode:"refuse"})}async rename(e,t){await this.openApiRequest("/openFile/update",{drive_id:this.driveId,file_id:e,name:t,check_name_mode:"refuse"})}async remove(e){let t=this.addition.remove_way||"trash";await this.openApiRequest(t==="trash"?"/openFile/recyclebin":"/openFile/delete",{drive_id:this.driveId,file_id:e})}async move(e,t){await this.openApiRequest("/openFile/move",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,check_name_mode:"refuse"})}async copy(e,t){await this.openApiRequest("/openFile/copy",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,auto_rename:!0})}async putFile(e,t,i){let n=i.length,s=await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"file",size:n,check_name_mode:"auto_rename",part_info_list:[{part_number:1}]}),a=s.part_info_list?.[0]?.upload_url;if(!a)return;let o=await fetch(a,{method:"PUT",body:i});if(!o.ok)throw new Error(`[AliyundriveOpen] Upload failed: ${o.status}`);await this.openApiRequest("/openFile/complete",{drive_id:this.driveId,file_id:s.file_id,upload_id:s.upload_id})}}});function c8(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||r.created_at||new Date().toISOString(),sign:"",type:X(r.name,e),thumb:r.thumbnail||"",raw_url:r.download_url||""}}var Lp,l8=J(()=>{"use strict";ve();$e();o8();Lp=class{client;addition;pathFileIdCache=new Map;constructor(e){this.addition=e,this.client=new Mp(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t),s=(await this.client.listFiles(i)).map(c8);return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null),s=await this.client.getDownloadUrl(i).catch(()=>"");if(n){let c=c8(n);return c.raw_url=s||c.raw_url,c}try{await this.client.listFiles(i);let c=t.split("/").filter(Boolean);return{name:c[c.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}let a=t.split("/").filter(Boolean);return{name:a[a.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:s}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFileId(s);await this.client.mkdir(a,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let a=await this.resolveFileId(n),o=await this.resolveFileId(t);await this.client.move(a,o)}async copy(e,t,i,n,s){let a=await this.resolveFileId(n),o=await this.resolveFileId(t);await this.client.copy(a,o)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",a="/"+n.join("/"),o=await this.resolveFileId(a);await this.client.putFile(o,s,i)}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(a)}catch{return a}})(),c=i.slice(0,s+1).join("/");if(this.pathFileIdCache.has(c)){n=this.pathFileIdCache.get(c);continue}let d=(await this.client.listFiles(n)).find(u=>u.name===a||u.name===o||u.file_id===a);if(!d)throw new Error(`[AliyundriveOpen] Path '${a}' not found`);n=d.file_id,this.pathFileIdCache.set(c,n)}return n}}});var uh,d8,u8,AB=J(()=>{"use strict";uh="application/vnd.google-apps.folder",d8="application/vnd.google-apps.shortcut",u8="files(id,name,mimeType,size,modifiedTime,createdTime,thumbnailLink,shortcutDetails,md5Checksum,sha1Checksum,sha256Checksum),nextPageToken"});var So,f8,uj,Hp,h8=J(()=>{"use strict";AB();So="https://www.googleapis.com/drive/v3",f8="https://www.googleapis.com/upload/drive/v3",uj="https://oauth2.googleapis.com/token",Hp=class{addition;accessToken="";refreshTokenVal="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||""}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[GoogleDrive] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken()}catch(e){console.warn("[GoogleDrive] init token refresh warning:",e.message)}}async refreshAccessToken(){let e=this.refreshTokenVal.trim();if(!e)return;let t=this.addition.use_online_api!==!1,i=[];t&&(this.addition.api_url_address?.trim()&&i.push(this.addition.api_url_address.trim()),i.push("https://api.oplist.org/google/token","https://api.oplist.org/google/renewapi","https://api.oplist.org/googledrive/token","https://api-sam.oplist.org/google/token","https://api-sam.oplist.org/googledrive/token","https://api.alist.nn.ci/google/token","https://api.alist.nn.ci/googledrive/token"));for(let a of i)try{let o=new URLSearchParams({refresh_ui:e,server_use:"true",driver_txt:"googleui_go"}),c=await fetch(`${a}?${o.toString()}`,{method:"GET"});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.access_token||l.data?.access_token||"",u=l.refresh_token||l.data?.refresh_token||"";if(!d){let f=l.text||l.error||"empty access_token";throw new Error(f)}this.accessToken=d,u&&(this.refreshTokenVal=u),this.tokenExpiresAt=Date.now()+(l.expires_in||3600)*1e3-6e4;return}catch(o){console.warn(`[GoogleDrive] Online API '${a}' failed: ${o.message}`)}let n=(this.addition.client_id||"").trim()||"202264815644-2n82p2e49c7o6026u87j9e22v1n25c27.apps.googleusercontent.com",s=(this.addition.client_secret||"").trim()||"GOCSPX-4bH5Kx3s_89_j6j2x-2x3-8x";if(n&&s)try{let a=await fetch(uj,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:n,client_secret:s,refresh_token:e,grant_type:"refresh_token"}).toString()});if(!a.ok){let c=await a.text().catch(()=>"");throw new Error(`[Status ${a.status}] ${c}`)}let o=await a.json();if(!o.access_token)throw new Error(`Invalid OAuth response: ${JSON.stringify(o)}`);this.accessToken=o.access_token,o.refresh_token&&(this.refreshTokenVal=o.refresh_token),this.tokenExpiresAt=Date.now()+(o.expires_in||3600)*1e3-6e4;return}catch(a){console.warn(`[GoogleDrive] Direct OAuth failed: ${a.message}`)}throw new Error("[GoogleDrive] All token refresh strategies failed. Please check: 1) refresh_token is valid, 2) api_url_address is accessible, 3) If using direct OAuth: client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}async request(e,t={},i=!0){await this.ensureToken();let n=await fetch(e,{...t,headers:{Authorization:`Bearer ${this.accessToken}`,...t.headers||{}}});if(n.status===401&&i)return console.warn("[GoogleDrive] 401 Unauthorized, refreshing token..."),await this.refreshAccessToken(),this.request(e,t,!1);if(!n.ok){let s=await n.text().catch(()=>"");throw new Error(`[GoogleDrive] API error [${n.status}]: ${s}`)}return n.status===204?null:n.json()}async listFiles(e){let t=[],i,n=this.addition.order_by||"folder,name,modifiedTime desc";do{let s=new URLSearchParams({q:`'${e}' in parents and trashed = false`,fields:u8,orderBy:n,pageSize:"1000",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});i&&s.set("pageToken",i);let a=`${So}/files?${s.toString()}`,o=await this.request(a),c=o.files||[];for(let l of c)l.mimeType===d8&&l.shortcutDetails?.targetId&&(l.id=l.shortcutDetails.targetId,l.mimeType=l.shortcutDetails.targetMimeType||l.mimeType);t.push(...c),i=o.nextPageToken}while(i);return t}async getFile(e){let t=new URLSearchParams({fields:"id,name,mimeType,size,modifiedTime,md5Checksum",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});return this.request(`${So}/files/${e}?${t.toString()}`)}getDownloadUrl(e){return`${So}/files/${e}?includeItemsFromAllDrives=true&supportsAllDrives=true&alt=media&acknowledgeAbuse=true`}getDownloadHeaders(){return{Authorization:`Bearer ${this.accessToken}`}}async mkdir(e,t){await this.request(`${So}/files?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,parents:[e],mimeType:uh})})}async rename(e,t){await this.request(`${So}/files/${e}?supportsAllDrives=true`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})}async remove(e){await this.request(`${So}/files/${e}?supportsAllDrives=true`,{method:"DELETE"})}async move(e,t,i){let n=new URLSearchParams({addParents:i,removeParents:t,supportsAllDrives:"true"});await this.request(`${So}/files/${e}?${n.toString()}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:"{}"})}async copy(e,t,i){await this.request(`${So}/files/${e}/copy?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i,parents:[t]})})}async putFile(e,t,i,n="application/octet-stream"){let s=(this.addition.chunk_size||5)*1024*1024;if(i.length<=s){let a=new URLSearchParams({uploadType:"multipart",supportsAllDrives:"true"}),o=`----GoogleDriveBoundary${Date.now()}`,c=JSON.stringify({name:t,parents:[e]}),l=`--${o}\r Content-Type: application/json\r \r ${c}\r ---${a}\r +--${o}\r Content-Type: ${n}\r \r `,d=Buffer.from(l),u=Buffer.from(`\r ---${a}--`),f=Buffer.concat([d,i,u]);await this.request(`${aD}/files?${o.toString()}`,{method:"POST",headers:{"Content-Type":`multipart/related; boundary=${a}`},body:f})}else{let o=new URLSearchParams({uploadType:"resumable",supportsAllDrives:"true"});await this.ensureToken();let a=await fetch(`${aD}/files?${o.toString()}`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json","X-Upload-Content-Type":n,"X-Upload-Content-Length":String(i.length)},body:JSON.stringify({name:t,parents:[e]})});if(!a.ok)throw new Error(`[GoogleDrive] Resumable upload init failed: ${a.status}`);let c=a.headers.get("location");if(!c)throw new Error("[GoogleDrive] No upload URL returned");let l=0;for(;l{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathCache.has(c)){n=this.pathCache.get(c);continue}let d=(await this.listFiles(n)).find(u=>u.name===o||u.name===a||u.id===o);if(!d)throw new Error(`[GoogleDrive] Path '${o}' not found`);n=d.id,this.pathCache.set(c,n)}return n}async resolveParentAndName(e){let t=e.split("/").filter(Boolean),i=t.pop()||"unnamed",n="/"+t.join("/");return{parentId:await this.resolveFileId(n),name:i}}}});function lD(r){return{name:r.name,size:r.size?parseInt(r.size,10):0,is_dir:r.mimeType===Mu,modified:r.modifiedTime||r.createdTime||new Date().toISOString(),sign:"",type:r.mimeType===Mu?1:0,thumb:r.thumbnailLink||"",raw_url:""}}var Ch,dD=j(()=>{"use strict";He();AC();cD();Ch=class{client;addition;constructor(e){this.addition=e,this.client=new xh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolveFileId(t),s=(await this.client.listFiles(i)).map(lD);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.client.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null);if(n){let a=lD(n);return a.raw_url=this.client.getDownloadUrl(i),a.raw_url_headers=this.client.getDownloadHeaders(),a}let s=t.split("/").filter(Boolean),o=s[s.length-1]||"root";try{return await this.client.listFiles(i),{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(e,t){let{parentId:i,name:n}=await this.client.resolveParentAndName(t);await this.client.mkdir(i,n)}async rename(e,t,i){let n=await this.client.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean);a.pop();let c=await this.client.resolveFileId("/"+a.join("/")),l=await this.client.resolveFileId(t);await this.client.move(o,c,l)}async copy(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean).pop()||"copy",c=await this.client.resolveFileId(t);await this.client.copy(o,c,a)}async put(e,t,i){let{parentId:n,name:s}=await this.client.resolveParentAndName(t);await this.client.putFile(n,s,i)}}});function CK(r="Quark"){return r==="UC"?xK:wK}function uD(r,e,t){let i=r.split(";").map(o=>o.trim()).filter(Boolean),n=i.findIndex(o=>{let a=o.indexOf("=");return a!==-1&&o.substring(0,a).trim()===e}),s=`${e}=${t}`;return n!==-1?i[n]=s:i.push(s),i.join("; ")}function fD(r,e){let t=r.split(/,(?=[^;]+=[^;]+)/);for(let i of t){let s=i.split(";")[0].trim(),o=s.indexOf("=");if(o!==-1&&s.substring(0,o).trim()===e)return s.substring(o+1).trim()}return null}function EK(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/'/g,"'")}function BK(r){let e=r.split(".").pop()?.toLowerCase()||"",t=["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm"],i=["mp3","flac","aac","wav","ogg","m4a","opus"],n=["jpg","jpeg","png","gif","bmp","webp","heic","tiff"],s=["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","md"];return t.includes(e)?"video":i.includes(e)?"audio":n.includes(e)?"image":s.includes(e)?"doc":"others"}var wK,xK,Eh,AD=j(()=>{"use strict";wK={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://pan.quark.cn",api:"https://drive-m.quark.cn/1/clouddrive",pr:"ucpro"},xK={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://drive.uc.cn",api:"https://pc-api.uc.cn/1/clouddrive",pr:"UCBrowser"};Eh=class{addition;conf;cookie;onCookieUpdate;constructor(e,t){this.addition=e,this.conf=CK(e.variant||"Quark"),this.cookie=e.cookie||"",this.onCookieUpdate=t}getRootFolderId(){return(this.addition.root_folder_id||"").trim()||"0"}getVariant(){return this.addition.variant||"Quark"}getConf(){return this.conf}getCookie(){return this.cookie}async request(e,t,i,n){let s=new URL(this.conf.api+e);if(s.searchParams.set("pr",this.conf.pr),s.searchParams.set("fr","pc"),i)for(let[u,f]of Object.entries(i))s.searchParams.set(u,f);let o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:this.conf.referer,"Content-Type":"application/json","User-Agent":this.conf.ua},a={method:t,headers:o};n!==void 0&&t!=="GET"&&(a.body=JSON.stringify(n));let c=await fetch(s.toString(),a),l=c.headers.get("set-cookie");if(l){let u=fD(l,"__puus");if(u&&(this.cookie=uD(this.cookie,"__puus",u),this.onCookieUpdate?.(this.cookie)),this.addition.variant==="Quark"){let f=fD(l,"__pus");f&&(this.cookie=uD(this.cookie,"__pus",f),this.onCookieUpdate?.(this.cookie))}}let d=await c.json();if(!c.ok||d.status!==void 0&&d.status>=400||d.code!==void 0&&d.code!==0){let u=d.message||d.msg||`HTTP ${c.status}`;throw new Error(`[Quark/UC] API error [${c.status}] ${e}: ${u}`)}return d}async getFiles(e){let t=[],i=1,n=100,s={pdir_fid:e,_size:String(n),_fetch_total:"1",fetch_all_file:"1",fetch_risk_file_name:"1"};if(this.addition.order_by&&this.addition.order_by!=="none"){let o=this.addition.order_direction||"asc";s._sort=`file_type:asc,${this.addition.order_by}:${o}`}for(;;){s._page=String(i);let o=await this.request("/file/sort","GET",s),a=o?.data?.list||[];if(a.length===0)break;for(let l of a)l.file_name=EK(l.file_name),this.addition.only_list_video_file?(!l.file||l.category===1)&&t.push(l):t.push(l);let c=o.metadata?.total??0;if(c>0&&i*n>=c||a.length{"use strict";Be();AD();Bh=class{client;pathFileIdCache=new Map;constructor(e){this.client=new Eh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t);return(await this.client.getFiles(i)).map(hD)}async get(e,t){let i=t.split("/").filter(Boolean),n=await this.resolveFileId(t),s=i[i.length-1]||"root",o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+i.slice(0,i.length-1).join("/"),c=await this.resolveFileId(a),d=(await this.client.getFiles(c)).find(h=>h.fid===n||h.file_name===s||h.file_name===o),u="",f;try{let h=await this.client.getDownloadUrl(n,o);u=h.url,f=h.headers}catch(h){console.warn(`[Quark/UC] getDownloadUrl warning for ${s}:`,h.message)}if(d){let h=hD(d);return h.raw_url=u,h.raw_url_headers=f,h}try{return await this.client.getFiles(n),{name:o||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:u,raw_url_headers:f}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy([o],a)}async put(e,t,i){throw new Error("[Quark/UC] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),l=(await this.client.getFiles(n)).find(u=>u.file_name===o||u.file_name===a||u.fid===o);if(!l)throw new Error(`[Quark/UC] Path '${o}' not found in folder '${n}'`);n=l.fid;let d="/"+i.slice(0,s+1).join("/");this.pathFileIdCache.set(d,n)}return n}}});var pD,bK,mD,bh,yD=j(()=>{"use strict";pD="https://proapi.115.com/open",bK="https://passportapi.115.com",mD="Mozilla/5.0 115disk/42.0.0.2",bh=class{accessToken;refreshToken;addition;rootId;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.rootId=e.root_folder_id||"0"}getRootFolderId(){return this.rootId}async init(){if(!this.accessToken)throw new Error("[115] access_token is required");await this.getUserInfo()}async request(e,t={},i=pD){let n=`${i}${e}`,o=await(await fetch(n,{method:"POST",headers:{"User-Agent":mD,Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)})).json().catch(()=>({}));if(o?.state===!1||o?.errno){if(o.errno===990001||o.errcode===990001||o.errno===10008)return await this.refreshAccessToken(),this.request(e,t,i);throw new Error(`[115] ${o.error||o.errmsg||"API error"} (${o.errno||o.errcode||""})`)}return o}async getUserInfo(){return this.request("/user/info",{},bK)}async refreshAccessToken(){let e=`${pD}/oauth2/token`,i=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":mD},body:JSON.stringify({grant_type:"refresh_token",refresh_token:this.refreshToken})})).json().catch(()=>({}));if(i?.access_token)this.accessToken=i.access_token,this.addition.access_token=i.access_token,i.refresh_token&&(this.refreshToken=i.refresh_token,this.addition.refresh_token=i.refresh_token);else throw new Error(`[115] refresh token failed: ${JSON.stringify(i)}`)}async getFiles(e){let t=await this.request("/open/ufile/files",{cid:e,limit:1e3,offset:0,order:this.addition.order_by||"user_utime",asc:this.addition.order_direction==="asc"?1:0,show_dir:1,fc_mix:1});return t?.data&&Array.isArray(t.data)?t.data:t?.files&&Array.isArray(t.files)?t.files.map(i=>({Fid:i.fid??i.id,Fn:i.n??i.file_name??i.name,Fc:String(i.fc??i.category??(i.pid!==void 0&&!i.pid?"0":"1")),FS:Number(i.s??i.size??0),Sha1:i.sha1,Pc:i.pc??i.pick_code,Thumbnail:i.thumb??i.thumbnail,Upt:i.tu??i.upt??i.updated_at,Pid:i.pid??i.cid})):[]}async resolvePathId(e,t){let i=e.split("/").filter(Boolean).join("/");if(!i)return this.rootId;if(t.has(i))return t.get(i);let n=i.split("/"),s=this.rootId;for(let o=0;o{try{return decodeURIComponent(a)}catch{return a}})(),d=(await this.getFiles(s)).find(f=>f.Fn===a||f.Fn===c||f.Fid===a);if(!d)throw new Error(`[115] Path '${a}' not found in '${s}'`);s=d.Fid;let u="/"+n.slice(0,o+1).join("/");t.set(u,s)}return s}async mkdir(e,t){await this.request("/open/ufile/add",{pid:e,cname:t})}async rename(e,t){await this.request("/open/ufile/edit",{fid:e,fname:t})}async move(e,t){await this.request("/open/ufile/move",{pid:e,fid:t,no_dupli:"1"})}async copy(e,t){await this.request("/open/ufile/copy",{pid:e,fid:t,no_dupli:"1"})}async remove(e){await this.request("/open/ufile/delete",{fid:e,ignore_warn:1})}async getDownloadUrl(e){let t=await this.request("/open/ufile/downurl",{pickcode:e}),i=t?.url||t?.data?.url||"";if(!i)throw new Error("[115] empty download url");return i}}});function ID(r){let e=r.Fc==="0",t=r.Upt?new Date(r.Upt*1e3).toISOString():new Date().toISOString();return{name:r.Fn,size:r.FS||0,is_dir:e,modified:t,sign:"",type:X(r.Fn,e),thumb:r.Thumbnail||"",raw_url:""}}var vh,wD=j(()=>{"use strict";Be();yD();vh=class{client;pathCache=new Map;constructor(e){this.client=new bh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolvePathId(t,this.pathCache);return(await this.client.getFiles(i)).map(ID)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,-1).join("/"),a=await this.client.resolvePathId(o,this.pathCache),l=(await this.client.getFiles(a)).find(d=>d.Fn===n||d.Fn===s||d.Fid===n);if(l){let d=ID(l);if(!d.is_dir&&l.Pc)try{let u=await this.client.getDownloadUrl(l.Pc);d.raw_url=u}catch(u){d.raw_url_error=u.message}return d}try{let d=await this.client.resolvePathId(t,this.pathCache);return await this.client.getFiles(d),{name:s||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.client.resolvePathId(s,this.pathCache);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.move(a,[o])}async copy(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.copy(a,[o])}async put(e,t,i){throw new Error("[115] Direct put not supported in stateless environment")}}});var kh,xD=j(()=>{"use strict";kh=class{address;addition;accessToken="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.accessToken=e.access_token||""}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.addition.username&&this.addition.password?await this.login():this.addition.refresh_token&&await this.refreshToken()}async login(){let t=await(await fetch(`${this.address}/api/v4/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.token)this.accessToken=t.token,t.refresh_token&&(this.addition.refresh_token=t.refresh_token);else throw new Error("[Cloudreve] login failed")}async refreshToken(){let t=await(await fetch(`${this.address}/api/v4/session/renew`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.addition.refresh_token}`}})).json().catch(()=>({}));t?.token&&(this.accessToken=t.token)}async request(e,t,i,n=!1){let s={Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"};this.addition.custom_ua&&(s["User-Agent"]=this.addition.custom_ua);let o={method:e,headers:s};i&&(o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v4${t}`,o);if(a.status===401&&!n)return this.addition.refresh_token?await this.refreshToken():this.addition.username&&await this.login(),this.request(e,t,i,!0);if(e==="DELETE"&&a.ok)return{};let c=await a.json().catch(()=>({}));if(a.status>=400)throw new Error(`[Cloudreve] ${c?.msg||c?.message||`HTTP ${a.status}`}`);return c}async listFiles(e){let t=[],i="",n=e==="/"?"/":e;do{let s={page_size:"100",uri:n,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"asc",page:"0"};i&&(s.next_page_token=i);let o=new URLSearchParams(s).toString(),a=await this.request("GET",`/file?${o}`);a?.files&&t.push(...a.files),i=a?.pagination?.next_token||""}while(i);return t}async getDownloadUrl(e){let i=(await this.request("POST","/file/url",{uris:[e],download:!0}))?.urls?.[0]?.url||"";if(!i)throw new Error("[Cloudreve] empty download url");return i}async mkdir(e,t){let i=`${e.replace(/\/+$/,"")}/${t}`;await this.request("POST","/file/create",{type:"folder",uri:i,error_on_conflict:!0})}async rename(e,t){let i=e.lastIndexOf("/"),s=`${i>=0?e.slice(0,i+1):"/"}${t}`;await this.request("POST","/file/rename",{uris:[e],new_uri:s})}async move(e,t,i){await this.request("POST","/file/move",{uris:e,dst:t,copy:i})}async remove(e){await this.request("DELETE","/file",{uris:e,unlink:!1,skip_soft_delete:!0})}}});function CD(r){let e=r.type===1;return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}function Ps(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Sh,ED=j(()=>{"use strict";Be();xD();Sh=class{client;constructor(e){this.client=new kh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Ps(t))).map(CD)}async get(e,t){let i=Ps(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s||l.path===i);if(c){let l=CD(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(i)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{let a=await this.client.listFiles(i);return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let n=Ps(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.mkdir(o==="//"?"/":o,s)}async rename(e,t,i){await this.client.rename(Ps(t),i)}async remove(e,t,i){await this.client.remove([Ps(t)])}async move(e,t,i,n,s){await this.client.move([Ps(n)],Ps(t),!1)}async copy(e,t,i,n,s){await this.client.move([Ps(n)],Ps(t),!0)}async put(e,t,i){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}}});var vK,Dh,BD=j(()=>{"use strict";vK="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Dh=class{addition;address;cookie;persistCookie;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.cookie||await this.login()}getCookie(){return this.cookie}getUA(){return this.addition.custom_ua||vK}async login(){if(!this.addition.username||!this.addition.password)throw new Error("[Cloudreve] username/password or cookie is required");let e=await fetch(`${this.address}/api/v3/user/session`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.getUA()},body:JSON.stringify({username:this.addition.username,Password:this.addition.password,captchaCode:""})}),t=await e.json().catch(()=>({}));if(t.code!==0)throw new Error(`[Cloudreve] login failed: ${t.msg}`);let i=this.extractSessionCookie(e);if(!i)throw new Error("[Cloudreve] login failed: no session cookie");this.cookie=i,this.persistCookie&&await this.persistCookie(this.cookie)}extractSessionCookie(e){let t=typeof e.headers.getSetCookie=="function"?e.headers.getSetCookie():[];if(Array.isArray(t)){for(let s of t)if(s&&s.includes("cloudreve-session="))return s.split(";")[0].split("=")[1]}let i=e.headers.get("set-cookie")||"",n=/cloudreve-session=([^;]+)/.exec(i);return n?n[1]:""}async request(e,t,i,n=!1){let s={Cookie:`cloudreve-session=${this.cookie}`,Accept:"application/json, text/plain, */*","User-Agent":this.getUA()},o={method:e,headers:s};i!==void 0&&(s["Content-Type"]="application/json",o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v3${t}`,o),c=await a.json().catch(()=>({}));if(c.code===401&&t!=="/user/session"&&!n&&this.addition.username&&this.addition.password)return await this.login(),this.request(e,t,i,!0);if(c.code!==0)throw new Error(`[Cloudreve] ${c.msg||`HTTP ${a.status}`}`);let l=this.extractSessionCookie(a);return l&&(this.cookie=l),c.data}async listFiles(e){return(await this.request("GET",`/directory${e}`))?.objects||[]}async getDownloadUrl(e){let t=await this.request("PUT",`/file/download/${e}`);if(!t)throw new Error("[Cloudreve] empty download url");return t.startsWith("/api")?this.address+t:t}downloadHeaders(){return{Referer:this.address,"User-Agent":this.getUA()}}async mkdir(e){await this.request("PUT","/directory",{path:e})}async move(e,t,i){await this.request("PATCH","/object",{action:"move",src_dir:e,dst:t,src:i})}async rename(e,t){await this.request("PATCH","/object/rename",{action:"rename",new_name:t,src:e})}async copy(e,t,i){await this.request("POST","/object/copy",{src_dir:e,dst:t,src:i})}async remove(e){await this.request("DELETE","/object",e)}}});function bD(r){let e=r.type==="dir";return{name:r.name,size:r.size||0,is_dir:e,modified:r.date||r.create_date||new Date().toISOString(),sign:r.id,type:X(r.name,e),raw_url:""}}function Sl(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Qh,vD=j(()=>{"use strict";Be();BD();Qh=class{client;constructor(e,t){this.client=new Dh(e,t)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Sl(t))).map(bD)}async get(e,t){let n=Sl(t).split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=bD(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.id),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){await this.client.mkdir(Sl(t))}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.src,i)}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.src)}async move(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.move(c,Sl(t),o.src)}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.copy(c,Sl(t),o.src)}async put(){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}async resolveEntry(e){let i=Sl(e).split("/").filter(Boolean),n=i[i.length-1],s="/"+i.slice(0,-1).join("/"),a=(await this.client.listFiles(s==="//"?"/":s)).find(d=>d.name===n);if(!a)throw new Error(`[Cloudreve] '${n}' not found`);let c=a.type==="dir";return{src:c?{dirs:[a.id],items:[]}:{dirs:[],items:[a.id]},isDir:c}}}});var _h,kD=j(()=>{"use strict";_h=class{url;addition;token="";constructor(e){this.addition=e,this.url=(e.url||"").replace(/\/+$/,""),this.token=e.token||""}async init(){if(!this.url)throw new Error("[OpenList] url is required");this.addition.username&&this.addition.password&&await this.login()}async login(){let t=await(await fetch(`${this.url}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.data?.token)this.token=t.data.token;else throw new Error("[OpenList] login failed")}async request(e,t="POST",i){let n={"Content-Type":"application/json"};this.token&&(n.Authorization=this.token),this.addition.meta_password&&(n["Meta-Password"]=this.addition.meta_password);let s={method:t,headers:n};return i&&(s.body=JSON.stringify(i)),await(await fetch(`${this.url}${e}`,s)).json()}async list(e){let t=await this.request("/api/fs/list","POST",{path:e,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data?.content||[]}async get(e){let t=await this.request("/api/fs/get","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data}async mkdir(e){let t=await this.request("/api/fs/mkdir","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`)}async rename(e,t){let i=await this.request("/api/fs/rename","POST",{path:e,name:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}async move(e,t,i){let n=await this.request("/api/fs/move","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async copy(e,t,i){let n=await this.request("/api/fs/copy","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async remove(e,t){let i=await this.request("/api/fs/remove","POST",{dir:e,names:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}}});var Fh,SD=j(()=>{"use strict";Be();kD();Fh=class{client;constructor(e){this.client=new _h(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size||0,is_dir:!!n.is_dir,modified:n.modified||new Date().toISOString(),sign:n.sign||"",type:X(n.name,!!n.is_dir),thumb:n.thumb||"",raw_url:n.raw_url||""}))}async get(e,t){try{let i=await this.client.get(t);return{name:i.name,size:i.size||0,is_dir:!!i.is_dir,modified:i.modified||new Date().toISOString(),sign:i.sign||"",type:X(i.name,!!i.is_dir),raw_url:i.raw_url||""}}catch{try{await this.client.list(t);let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){await this.client.rename(t,i)}async remove(e,t,i){let n=t.split("/").filter(Boolean),s="/"+n.slice(0,-1).join("/");await this.client.remove(s,i.length?i:[n[n.length-1]])}async move(e,t,i,n,s){await this.client.move(e,t,i)}async copy(e,t,i,n,s){await this.client.copy(e,t,i)}async put(e,t,i){throw new Error("[OpenList] Direct put not supported in stateless environment")}}});var Ph,DD=j(()=>{"use strict";Ph=class{url;sid;pwd;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.sid=e.sid||"",this.pwd=e.pwd||""}init(){if(!this.url)throw new Error("[OpenListShare] url is required");if(!this.sid)throw new Error("[OpenListShare] sid is required")}async request(e,t="POST",i){return await(await fetch(`${this.url}${e}`,{method:t,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0})).json()}sharePath(e){return"/@s/"+this.sid+(e==="/"?"":e)}async list(e){let t=await this.request("/api/fs/list","POST",{path:this.sharePath(e),password:this.pwd,refresh:!1,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenListShare] ${t.message}`);return t.data?.content||[]}downloadUrl(e){let t="/"+this.sid+e;return`${this.url}/sd${t}?pwd=${encodeURIComponent(this.pwd)}`}}});function QD(r){return{name:r.name,size:r.size||0,is_dir:r.is_dir,modified:r.modified||new Date().toISOString(),sign:r.sign||"",type:X(r.name,r.is_dir),thumb:r.thumb||"",raw_url:""}}function _D(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Th,FD=j(()=>{"use strict";Be();DD();Th=class{client;constructor(e){this.client=new Ph(e)}async init(){this.client.init()}async list(e,t){return(await this.client.list(_D(t))).map(QD)}async get(e,t){let i=_D(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=QD(c);return l.is_dir||(l.raw_url=this.client.downloadUrl(i)),l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[OpenListShare] read-only share, mkdir not supported")}async rename(){throw new Error("[OpenListShare] read-only share, rename not supported")}async remove(){throw new Error("[OpenListShare] read-only share, remove not supported")}async move(){throw new Error("[OpenListShare] read-only share, move not supported")}async copy(){throw new Error("[OpenListShare] read-only share, copy not supported")}async put(){throw new Error("[OpenListShare] read-only share, upload not supported")}}});var Uh,PD=j(()=>{"use strict";Uh=class{url;token;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.url)throw new Error("[TelDrive] url is required");if(!this.token)throw new Error("[TelDrive] access_token is required")}async request(e,t="GET",i){let n={Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},s={method:t,headers:n};i&&(s.body=JSON.stringify(i));let o=await fetch(`${this.url}${e}`,s);if(t==="DELETE"&&o.ok)return{};let a=await o.json().catch(()=>({}));if(o.status>=400)throw new Error(`[TelDrive] ${a?.message||`HTTP ${o.status}`}`);return a}async listFiles(e){let t=await this.request(`/api/files?path=${encodeURIComponent(e)}`);return Array.isArray(t)?t:t?.files||[]}async mkdir(e){await this.request("/api/files/mkdir","POST",{path:e})}async move(e,t){await this.request("/api/files/move","POST",{ids:e,destination:t})}async remove(e){await this.request(`/api/files/${e}`,"DELETE")}downloadUrl(e){return`${this.url}/api/files/${e}`}downloadHeaders(){return{Authorization:`Bearer ${this.token}`}}}});function TD(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updatedAt||r.createdAt||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}var Rh,UD=j(()=>{"use strict";Be();PD();Rh=class{client;pathCache=new Map;constructor(e){this.client=new Uh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(t)).map(TD)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.listFiles(s==="//"?"/":s)).find(c=>c.name===n);if(a){let c=TD(a);return c.is_dir||(c.raw_url=this.client.downloadUrl(a.id),c.raw_url_headers=this.client.downloadHeaders()),c}}catch{}try{return await this.client.listFiles(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){throw new Error("[TelDrive] rename not supported")}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){throw new Error("[TelDrive] copy not supported")}async put(e,t,i){throw new Error("[TelDrive] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"/";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="",s="/";for(let o=0;ol.name===i[o]);if(!c)throw new Error(`[TelDrive] Path '${i[o]}' not found`);s=c.id,n=n?`${n}/${i[o]}`:`/${i[o]}`,this.pathCache.set(n,s)}return s}}});var kK,Lu,Nh,RD=j(()=>{"use strict";kK="https://www.mediafire.com/api/1.5",Lu="https://www.mediafire.com",Nh=class{cookie;sessionToken;chunkSize;orderBy;orderDirection;constructor(e){this.cookie=e.cookie||"",this.sessionToken=e.session_token||"",this.chunkSize=e.chunk_size||200,this.orderBy=e.order_by||"name",this.orderDirection=e.order_direction||"asc"}async init(){if(!this.cookie)throw new Error("[MediaFire] cookie is required");this.sessionToken||await this.getSessionToken()}async postForm(e,t){let i=new URLSearchParams({session_token:this.sessionToken,response_format:"json",...t});return await(await fetch(`${kK}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Cookie:this.cookie,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",Origin:Lu,Referer:`${Lu}/`},body:i.toString()})).json().catch(()=>({}))}async getSessionToken(){let i=(await(await fetch(`${Lu}/application/get_session_token.php`,{method:"POST",headers:{Cookie:this.cookie,Origin:Lu,Referer:`${Lu}/`,"Content-Length":"0"}})).json().catch(()=>({})))?.response?.session_token;if(!i)throw new Error("[MediaFire] failed to get session token from cookie");this.sessionToken=i,this.addition_session_token=i}addition_session_token="";checkResult(e){if(e&&e!=="Success")throw new Error(`[MediaFire] API error: ${e}`)}async list(e){let t=[],i=1,n=!0;for(;n;){let s=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"folders",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),o=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"files",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),a=s.response?.folder_content?.folders||[],c=o.response?.folder_content?.files||[];for(let l of a)t.push({id:l.folderkey,name:l.name,size:0,isDir:!0,created:l.created});for(let l of c)t.push({id:l.quickkey,name:l.filename,size:parseInt(l.size,10)||0,isDir:!1,created:l.created});n=s.response?.folder_content?.more_chunks==="yes"||o.response?.folder_content?.more_chunks==="yes",i++}return t}async getDownloadUrl(e){let t=await this.postForm("/file/get_links.php",{quick_key:e,link_type:"direct_download"});this.checkResult(t.response?.result);let i=t.response?.links?.[0]?.direct_download||t.response?.links?.[0]?.normal_download;if(!i)throw new Error("[MediaFire] no download link found");return i}async mkdir(e,t){let i=await this.postForm("/folder/create.php",{parent_key:e,foldername:t});return this.checkResult(i.response?.result),i.response?.folder_key||""}async rename(e,t,i){if(i){let n=await this.postForm("/folder/update.php",{folder_key:e,foldername:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/update.php",{quick_key:e,filename:t});this.checkResult(n.response?.result)}}async move(e,t,i){if(i){let n=await this.postForm("/folder/move.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/move.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async copy(e,t,i){if(i){let n=await this.postForm("/folder/copy.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/copy.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async remove(e,t){if(t){let i=await this.postForm("/folder/delete.php",{folder_key:e});this.checkResult(i.response?.result)}else{let i=await this.postForm("/file/delete.php",{quick_key:e});this.checkResult(i.response?.result)}}}});var qh,ND=j(()=>{"use strict";Be();RD();qh=class{client;pathCache=new Map;constructor(e){this.client=new Nh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t);return(await this.client.list(i)).map(s=>({name:s.name,size:s.size,is_dir:s.isDir,modified:s.created?new Date(s.created).toISOString():new Date().toISOString(),sign:"",type:X(s.name,s.isDir),raw_url:""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),c=(await this.client.list(o)).find(l=>l.name===n);if(c){let l={name:c.name,size:c.size,is_dir:c.isDir,modified:c.created?new Date(c.created).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.isDir),raw_url:""};if(!c.isDir)try{l.raw_url=await this.client.getDownloadUrl(c.id)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.rename(n,i,s)}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.remove(n,s)}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.move(o,c,a)}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.copy(o,c,a)}async put(e,t,i){throw new Error("[MediaFire] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.isDir&&l.name===i[s]);if(!a)throw new Error(`[MediaFire] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),a=(await this.client.list(s)).find(c=>c.name===i);if(!a)throw new Error(`[MediaFire] '${i}' not found`);return{id:a.id,isDir:a.isDir}}}});function Lo(...r){return"/"+r.filter(Boolean).map(t=>t.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}var SK,Oh,qD=j(()=>{"use strict";SK="https://api.github.com",Oh=class{addition;mounts;constructor(e){this.addition=e,this.mounts=this.parseMounts(e.repo_structure||"")}parseMounts(e){let t=[];for(let i of e.split(";")){let n=i.trim();if(!n)continue;let s=n.indexOf(":");s>0&&n.slice(0,s).includes("/");let o="/",a=n;s>0&&!n.slice(s+1).startsWith("/")&&!n.slice(0,s).includes(".")&&(o="/"+n.slice(0,s).replace(/^\/+|\/+$/g,""),a=n.slice(s+1)),t.push({point:o==="/"?"/":o,repo:a})}return t}async init(){if(this.mounts.length===0)throw new Error("[GitHub Releases] repo_structure is required (format: [path:]org/repo)")}async get(e){let t={Accept:"application/vnd.github+json","User-Agent":"OpenList-TSWorker"};this.addition.token&&(t.Authorization=`Bearer ${this.addition.token}`);let i=await fetch(`${SK}${e}`,{headers:t});if(i.status===404)return null;if(i.status>=400)throw new Error(`[GitHub Releases] HTTP ${i.status}`);return await i.json().catch(()=>null)}proxy(e){let t=this.addition.gh_proxy||"";return!t||e.startsWith("http")?e:t+e}mountForPath(e){let t=e.startsWith("/")?e:"/"+e,i=null;for(let n of this.mounts){let s=n.point==="/"?"/":n.point;(t===s||t.startsWith(s+"/"))&&(!i||s.length>(i.point==="/"?0:i.point.length))&&(i=n)}return i}async latestRelease(e){return this.get(`/repos/${e}/releases/latest`)}async allReleases(e){return await this.get(`/repos/${e}/releases`)||[]}async repoFiles(e){return await this.get(`/repos/${e}/contents`)||[]}async list(e){let t=this.mountForPath(e);if(!t)return[];let i=this.relPath(t,e),n=[];if(i===""&&e==="/"){for(let c of this.mounts)n.push({path:c.point,name:c.point==="/"?c.repo:c.point.split("/").filter(Boolean).pop()||c.repo,size:0,isDir:!0,modified:new Date().toISOString(),url:""});return n}let s=this.addition.show_all_version;if(i===""){let c=await this.latestRelease(t.repo);if(c){for(let l of c.assets)n.push({path:Lo(t.point,l.name),name:l.name,size:l.size,isDir:!1,modified:l.updated_at||l.created_at||new Date().toISOString(),url:this.proxy(l.browser_download_url)});this.addition.show_source_code&&(n.push({path:Lo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.zipball_url)}),n.push({path:Lo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.tarball_url)}))}if(s){let l=await this.allReleases(t.repo);for(let d of l)n.push({path:Lo(t.point,d.tag_name),name:d.tag_name,size:0,isDir:!0,modified:d.published_at||d.created_at,url:d.html_url})}if(this.addition.show_readme!==!1){let l=await this.repoFiles(t.repo);for(let d of l)(d.name.toLowerCase().endsWith(".md")||d.name.toUpperCase().startsWith("LICENSE"))&&n.push({path:Lo(t.point,d.name),name:d.name,size:d.size,isDir:!1,modified:"1970-01-01T00:00:00Z",url:this.proxy(d.download_url)})}return n}let a=(await this.allReleases(t.repo)).find(c=>c.tag_name===i.split("/")[0]);if(a){for(let c of a.assets)n.push({path:Lo(t.point,a.tag_name,c.name),name:c.name,size:c.size,isDir:!1,modified:c.updated_at||c.created_at||new Date().toISOString(),url:this.proxy(c.browser_download_url)});this.addition.show_source_code&&(n.push({path:Lo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.zipball_url)}),n.push({path:Lo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.tarball_url)}))}return n}async getDownloadUrl(e){let t=this.mountForPath(e);if(!t)return"";let n=this.relPath(t,e).split("/").pop()||"",s=await this.latestRelease(t.repo);if(s){let l=s.assets.find(d=>d.name===n);if(l)return this.proxy(l.browser_download_url)}let o=await this.allReleases(t.repo);for(let l of o){let d=l.assets.find(u=>u.name===n);if(d)return this.proxy(d.browser_download_url)}let c=(await this.repoFiles(t.repo)).find(l=>l.name===n);return c?this.proxy(c.download_url):""}relPath(e,t){let i=e.point==="/"?"/":e.point,n=t.startsWith("/")?t:"/"+t;return i==="/"?n.replace(/^\/+/,""):n.slice(i.length).replace(/^\/+/,"")}}});var Mh,OD=j(()=>{"use strict";Be();qD();Mh=class{client;constructor(e){this.client=new Oh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified||new Date().toISOString(),sign:"",type:X(n.name,n.isDir),raw_url:n.url||""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=await this.client.list(t);if(s.length>0||t==="/")return!s.find(c=>c.isDir&&c.name===n)&&s.some(c=>!c.isDir),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=await this.client.getDownloadUrl(t);return o?{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:o}:{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){throw new Error("[GitHub Releases] read-only storage")}async rename(){throw new Error("[GitHub Releases] read-only storage")}async remove(){throw new Error("[GitHub Releases] read-only storage")}async move(){throw new Error("[GitHub Releases] read-only storage")}async copy(){throw new Error("[GitHub Releases] read-only storage")}async put(){throw new Error("[GitHub Releases] read-only storage")}}});var DK,QK,Lh,MD=j(()=>{"use strict";DK="https://api.cnb.cool",QK="https://cnb.cool",Lh=class{repo;token;useTagName;constructor(e){this.repo=e.repo||"",this.token=e.token||"",this.useTagName=!!e.use_tag_name}async init(){if(!this.repo)throw new Error("[CNB Releases] repo is required");if(!this.token)throw new Error("[CNB Releases] token is required")}async request(e,t,i,n=!1){let s={Accept:"application/json",Authorization:`Bearer ${this.token}`},o={method:e,headers:s};i!==void 0&&(n?(o.body=new URLSearchParams(i).toString(),s["Content-Type"]="application/x-www-form-urlencoded"):(o.body=JSON.stringify(i),s["Content-Type"]="application/json"));let a=await fetch(`${DK}${t}`,o);if(a.status!==200&&a.status!==201&&a.status!==204)throw new Error(`[CNB Releases] ${a.status} ${await a.text().catch(()=>"")}`);return a.status===204?{}:await a.json().catch(()=>({}))}async listReleases(){return this.request("GET",`/${this.repo}/-/releases`)}async getRelease(e){return this.request("GET",`/${this.repo}/-/releases/${e}`)}releaseName(e){return this.useTagName?e.tag_name:e.name}createRelease(e,t){return this.request("POST",`/${this.repo}/-/releases`,{name:e,tag_name:e,target_commitish:t||"main"})}renameRelease(e,t){return this.request("PATCH",`/${this.repo}/-/releases/${e}`,{name:t},!0)}deleteRelease(e){return this.request("DELETE",`/${this.repo}/-/releases/${e}`)}deleteAsset(e,t){return this.request("DELETE",`/${this.repo}/-/releases/${e}/assets/${t}`)}assetDownloadUrl(e){return`${QK}${e.path}`}}});var Hh,LD=j(()=>{"use strict";Be();MD();Hh=class{client;addition;constructor(e){this.addition=e,this.client=new Lh(e)}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return(await this.client.listReleases()).map(a=>({name:this.client.releaseName(a),size:a.assets.reduce((c,l)=>c+l.size,0),is_dir:!0,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:1,raw_url:""}));let n=i.split("/")[0];return(await this.client.getRelease(n)).assets.map(o=>({name:o.name,size:o.size,is_dir:!1,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:X(o.name,!1),raw_url:this.client.assetDownloadUrl(o)}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.join("/");if(i.length===1)try{let o=await this.client.getRelease(i[0]);return{name:this.client.releaseName(o),size:o.assets.reduce((a,c)=>a+c.size,0),is_dir:!0,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:1,raw_url:""}}catch{}if(i.length===2){let a=(await this.client.getRelease(i[0])).assets.find(c=>c.name===i[1]);if(a)return{name:a.name,size:a.size,is_dir:!1,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:X(a.name,!1),raw_url:this.client.assetDownloadUrl(a)}}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean);if(i.length===1){await this.client.createRelease(i[0],this.addition.default_branch||"main");return}throw new Error("[CNB Releases] only supports creating releases at root")}async rename(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1&&!this.addition.use_tag_name){await this.client.renameRelease(n[0],i);return}throw new Error("[CNB Releases] only release name can be renamed")}async remove(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1){await this.client.deleteRelease(n[0]);return}if(n.length===2){await this.client.deleteAsset(n[0],n[1]);return}throw new Error("[CNB Releases] invalid path")}async move(){throw new Error("[CNB Releases] move not supported")}async copy(){throw new Error("[CNB Releases] copy not supported")}async put(){throw new Error("[CNB Releases] asset upload not supported in stateless environment")}}});var Kh,HD=j(()=>{"use strict";Kh=class{address;addition;authorization="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,"")}async init(){if(!this.address)throw new Error("[KodBox] address is required");await this.getToken()}async getToken(){let e=new URLSearchParams({name:this.addition.username||"",password:this.addition.password||""}),i=await(await fetch(`${this.address}/?user/index/loginSubmit`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json().catch(()=>({code:!1}));if(i.code===!1)throw new Error(`[KodBox] login failed: ${JSON.stringify(i.data||i)}`);this.authorization=String(i.info||"")}async request(e,t){let i=new URLSearchParams({accessToken:this.authorization,...t}),s=await(await fetch(`${this.address}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString(),redirect:"follow"})).json().catch(()=>({code:!1}));if(s.code==="10001")return await this.getToken(),this.request(e,t);if(s.code===!1)throw new Error(`[KodBox] ${s.data||"request failed"}`);return s}async list(e){let i=(await this.request("/?explorer/list/path",{path:e})).data;return i?[...i.folderList||[],...i.fileList||[]]:[]}downloadUrl(e){return`${this.address}/?explorer/index/fileOut&path=${encodeURIComponent(e)}&download=1&accessToken=${encodeURIComponent(this.authorization)}`}async mkdir(e){await this.request("/?explorer/index/mkdir",{path:e})}async rename(e,t){await this.request("/?explorer/index/pathRename",{path:e,newName:t})}async move(e,t,i){await this.request("/?explorer/index/pathCuteTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async copy(e,t,i){await this.request("/?explorer/index/pathCopyTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async remove(e,t){await this.request("/?explorer/index/pathDelete",{dataArr:JSON.stringify([{path:e,name:t}]),shiftDelete:"1"})}async put(e,t,i){let n=new FormData;n.append("accessToken",this.authorization),n.append("path",e),n.append("file",new Blob([i]),t);let o=await(await fetch(`${this.address}/?explorer/upload/fileUpload`,{method:"POST",body:n})).json().catch(()=>({code:!1}));if(o.code===!1)throw new Error(`[KodBox] ${o.data||"upload failed"}`)}}});var Gh,KD=j(()=>{"use strict";Be();HD();Gh=class{client;addition;constructor(e){this.addition=e,this.client=new Kh(e)}async init(){await this.client.init()}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){return(await this.client.list(this.fullPath(t))).map(n=>({name:n.name,size:n.size||0,is_dir:n.type==="folder",modified:n.modifyTime?new Date(n.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,n.type==="folder"),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l={name:c.name,size:c.size||0,is_dir:c.type==="folder",modified:c.modifyTime?new Date(c.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.type==="folder"),raw_url:""};return l.is_dir||(l.raw_url=this.client.downloadUrl(c.path||i)),l}}catch{}try{return await this.client.list(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(this.fullPath(t))}async rename(e,t,i){await this.client.rename(this.fullPath(t),i)}async remove(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1],a=i.length?i:[o];for(let c of a){let l=s.length>1?`/${s.slice(0,-1).join("/")}/${c}`:`/${c}`;await this.client.remove(l,c)}}async move(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.move(f,u,l)}}async copy(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.copy(f,u,l)}}async put(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1]||"file",a="/"+s.slice(0,-1).join("/");await this.client.put(a==="//"?"/":a,o,i)}}});var zh,GD=j(()=>{"use strict";zh=class{endpoint;gateway;mode;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.gateway=(e.gateway||"").replace(/\/+$/,""),this.mode=e.mode||"ipfs"}async init(){if(!this.endpoint)throw new Error("[IPFS] endpoint is required");if(!this.gateway)throw new Error("[IPFS] gateway is required")}async post(e,t){let i=new URLSearchParams;for(let s of t)i.append("arg",s);let n=await fetch(`${this.endpoint}/api/v0/${e}?${i.toString()}`,{method:"POST"});if(n.status>=400)throw new Error(`[IPFS] ${n.status} ${await n.text().catch(()=>"")}`);return await n.json().catch(()=>({}))}async ls(e){return this.post("ls",[`/ipfs/${e}`])}async filesStat(e){return this.post("files/stat",[e])}async filesMkdir(e){await this.post("files/mkdir",[e,"parents=true"])}async filesMv(e,t){await this.post("files/mv",[e,t])}async filesCp(e,t){await this.post("files/cp",[e,t])}async filesRm(e){await this.post("files/rm",[e,"recursive=true"])}async add(e,t){let i=new FormData;i.append("file",new Blob([e]),t);let s=await(await fetch(`${this.endpoint}/api/v0/add`,{method:"POST",body:i})).json().catch(()=>({Hash:""}));if(!s.Hash)throw new Error("[IPFS] add failed");return s.Hash}downloadUrl(e,t){return`${this.gateway}/ipfs/${e}?filename=${encodeURIComponent(t)}`}async resolveIpfsPath(e,t){if(t)return`/ipfs/${t}`;let i=e.replace(/^\/+|\/+$/g,"");switch(this.mode){case"ipfs":return`/ipfs/${i}`;case"ipns":return`/ipns/${i}`;case"mfs":return`/ipfs/${(await this.filesStat(i?`/${i}`:"/")).Hash}`;default:throw new Error("[IPFS] invalid mode")}}}});var Jh,zD=j(()=>{"use strict";Be();GD();Jh=class{client;addition;constructor(e){this.addition=e,this.client=new zh(e)}async init(){await this.client.init()}isMfs(){return this.addition.mode==="mfs"}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){let i=this.fullPath(t),s=(await this.client.resolveIpfsPath(i)).replace(/^\/ipfs\//,"");return((await this.client.ls(s)).Objects?.[0]?.Links||[]).map(c=>({name:c.Name,size:c.Size||0,is_dir:c.Type===1,modified:new Date().toISOString(),sign:c.Hash,type:X(c.Name,c.Type===1),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root";if(this.isMfs())try{let a=await this.client.filesStat(i),c=a.Type==="directory",l={name:s,size:a.Size||0,is_dir:c,modified:new Date().toISOString(),sign:a.Hash,type:X(s,c),raw_url:""};return c||(l.raw_url=this.client.downloadUrl(a.Hash,s)),l}catch{}let o="/"+n.slice(0,-1).join("/");try{let c=(await this.list(e,o)).find(l=>l.name===s);if(c)return c.is_dir||(c.raw_url=this.client.downloadUrl(c.sign,s)),c}catch{}try{return await this.client.resolveIpfsPath(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesMkdir(this.fullPath(t))}async rename(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),o="/"+n.split("/").filter(Boolean).slice(0,-1).join("/")+"/"+i;await this.client.filesMv(n,o)}async remove(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesRm(this.fullPath(t))}async move(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),a=this.fullPath(t);await this.client.filesMv(o,a)}async copy(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),c=`/ipfs/${(await this.client.filesStat(o)).Hash}`,l=this.fullPath(t);await this.client.filesCp(c,l)}async put(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),s=n.split("/").filter(Boolean),o=s[s.length-1]||"file",a=await this.client.add(i,o);await this.client.filesCp(`/ipfs/${a}`,n)}}});var _K,jh,JD=j(()=>{"use strict";_K="https://siot-share.lenovo.com.cn",jh=class{host;shareId;sharePwd;stoken="";expireAt=0;constructor(e){this.host=(e.host||_K).replace(/\/+$/,""),this.shareId=(e.share_id||"").split("/").pop()||"",this.sharePwd=e.share_pwd||""}async init(){if(!this.shareId)throw new Error("[Lenovo NAS Share] share_id is required");await this.getStoken()}async request(e){let i=await(await fetch(e,{method:"GET",headers:{origin:"https://siot-share.lenovo.com.cn",referer:"https://siot-share.lenovo.com.cn/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"}})).json().catch(()=>({result:!1}));if(!i.result)throw new Error(`[Lenovo NAS Share] ${i.error?.msg||"request failed"}`);return i.data}async getStoken(){let e=new URLSearchParams({code:this.shareId,password:this.sharePwd}),t=await this.request(`${this.host}/oneproxy/api/share/v1/access?${e.toString()}`);this.stoken=t.stoken||"",this.expireAt=Date.now()+(t.expires_in||3600)*1e3-6e4}async checkStoken(){Date.now()>=this.expireAt&&await this.getStoken()}async list(e){await this.checkStoken();let t=e.startsWith("/")?e:"/"+e,i=new URLSearchParams({code:this.shareId,num:"5000",stoken:this.stoken,path:t});return(await this.request(`${this.host}/oneproxy/api/share/v1/files?${i.toString()}`)).list||[]}async getDownloadUrl(e){await this.checkStoken();let t=new URLSearchParams({code:this.shareId,stoken:this.stoken,path:e.startsWith("/")?e:"/"+e}),n=(await this.request(`${this.host}/oneproxy/api/share/v1/file/link?${t.toString()}`)).param?.dtoken||"";return`${this.host}/oneproxy/api/share/v1/file/download?code=${encodeURIComponent(this.shareId)}&dtoken=${encodeURIComponent(n)}`}downloadHeaders(){return{Referer:"https://siot-share.lenovo.com.cn"}}}});var $h,jD=j(()=>{"use strict";Be();JD();$h=class{client;constructor(e){this.client=new jh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>{let s=n.type==="dir";return{name:n.name,size:n.size||0,is_dir:s,modified:n.chtime?new Date(n.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,s),raw_url:""}})}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.list(s==="//"?"/":s)).find(c=>c.name===n||c.path===t);if(a){let c=a.type==="dir",l={name:a.name,size:a.size||0,is_dir:c,modified:a.chtime?new Date(a.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(a.name,c),raw_url:""};return c||(l.raw_url=await this.client.getDownloadUrl(a.path),l.raw_url_headers=this.client.downloadHeaders()),l}}catch{}try{return await this.client.list(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[Lenovo NAS Share] read-only storage")}async rename(){throw new Error("[Lenovo NAS Share] read-only storage")}async remove(){throw new Error("[Lenovo NAS Share] read-only storage")}async move(){throw new Error("[Lenovo NAS Share] read-only storage")}async copy(){throw new Error("[Lenovo NAS Share] read-only storage")}async put(){throw new Error("[Lenovo NAS Share] read-only storage")}}});var Vh,$D=j(()=>{"use strict";Vh=class{endpoint;token;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.endpoint)throw new Error("[Misskey] endpoint is required");if(!this.token)throw new Error("[Misskey] access_token is required")}async post(e,t){let i=await fetch(`${this.endpoint}/api/drive${e}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify(t||{})});if(i.status>=400)throw new Error(`[Misskey] ${i.status} ${await i.text().catch(()=>"")}`);return await i.json().catch(()=>({}))}async getFiles(e){return this.post("/files",e?{folderId:e}:{})}async getFolders(e){return this.post("/folders",e?{folderId:e}:{})}async showFile(e){return this.post("/files/show",{fileId:e})}async createFolder(e,t){return this.post("/folders/create",{name:e,...t?{parentId:t}:{}})}async updateFolder(e,t){return this.post("/folders/update",{folderId:e,...t})}async updateFile(e,t){return this.post("/files/update",{fileId:e,...t})}async deleteFolder(e){await this.post("/folders/delete",{folderId:e})}async deleteFile(e){await this.post("/files/delete",{fileId:e})}async uploadFromUrl(e,t){return this.post("/files/upload-from-url",{url:e,...t?{folderId:t}:{}})}}});var Yh,VD=j(()=>{"use strict";Be();$D();Yh=class{client;pathCache=new Map;constructor(e){this.client=new Vh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t),[n,s]=await Promise.all([this.client.getFiles(i),this.client.getFolders(i)]),o=n.map(c=>({name:c.name,size:c.size||0,is_dir:!1,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:X(c.name,!1),raw_url:c.url||"",thumb:c.thumbnailUrl||""}));return[...s.map(c=>({name:c.name,size:0,is_dir:!0,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:1,raw_url:""})),...o]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),[a,c]=await Promise.all([this.client.getFiles(o),this.client.getFolders(o)]),l=a.find(u=>u.name===n);if(l)return{name:l.name,size:l.size||0,is_dir:!1,modified:l.createdAt||new Date().toISOString(),sign:l.id,type:X(l.name,!1),raw_url:l.url||"",thumb:l.thumbnailUrl||""};let d=c.find(u=>u.name===n);if(d)return{name:d.name,size:0,is_dir:!0,modified:d.createdAt||new Date().toISOString(),sign:d.id,type:1,raw_url:""}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o),this.pathCache.clear()}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.updateFolder(n,{name:i}):await this.client.updateFile(n,{name:i}),this.pathCache.clear()}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.deleteFolder(n):await this.client.deleteFile(n),this.pathCache.clear()}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);a?await this.client.updateFolder(o,{parentId:c}):await this.client.updateFile(o,{folderId:c}),this.pathCache.clear()}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);if(a)throw new Error("[Misskey] folder copy not supported");let l=await this.client.showFile(o);await this.client.uploadFromUrl(l.url,c),this.pathCache.clear()}async put(e,t,i){throw new Error("[Misskey] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n;for(let s=0;sl.name===i[s]);if(!a)throw new Error(`[Misskey] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),[o,a]=await Promise.all([this.client.getFiles(s),this.client.getFolders(s)]),c=o.find(d=>d.name===i);if(c)return{id:c.id,isDir:!1};let l=a.find(d=>d.name===i);if(l)return{id:l.id,isDir:!0};throw new Error(`[Misskey] '${i}' not found`)}}});var hC,YD,FK,PK,TK,UK,Wh,WD=j(()=>{"use strict";hC="https://www.doubao.com",YD="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",FK=1,PK=6,TK=7,UK={1:"directory",2:"file",3:"link",4:"image",5:"pages",6:"video",7:"audio",8:"meeting_minutes"},Wh=class{cookie;downloadApi;constructor(e){this.cookie=e.cookie||"",this.downloadApi=e.download_api||"get_file_url"}async init(){if(!this.cookie)throw new Error("[Doubao] cookie is required")}async request(e,t={}){let n=await(await fetch(`${hC}${e}`,{method:"POST",headers:{"Content-Type":"application/json",Cookie:this.cookie,"User-Agent":YD,Origin:hC,Referer:`${hC}/`},body:JSON.stringify(t)})).json().catch(()=>({code:-1}));if(n.code!==0){let s=n.message||n.msg||n.error?.message||`code ${n.code}`;throw new Error(`[Doubao] ${s}`)}return n}async getFiles(e){let t=[],i="";do{let n={node_id:e};i?(n.cursor=i,n.size=50):n.need_full_path=!1;let o=(await this.request("/samantha/aispace/node_info",n)).data;o?.children&&t.push(...o.children),i=o?.next_cursor&&o.next_cursor!=="-1"?o.next_cursor:""}while(i);return t}async getDownloadUrl(e){if(this.downloadApi==="get_download_info"){let a=(await this.request("/samantha/aispace/get_download_info",{requests:[{node_id:e.id}]})).data.download_infos?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}if(e.node_type===PK||e.node_type===TK){let o=(await this.request("/samantha/media/get_play_info",{key:e.key,node_id:e.id})).data,a=o.original_media_info?.main_url||o.media_info?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}let n=(await this.request("/alice/message/get_file_url",{uris:[e.key],type:UK[e.node_type]||"file"})).data.file_urls?.[0]?.main_url||"";if(!n)throw new Error("[Doubao] empty download url");return n}downloadHeaders(){return{"User-Agent":YD}}async mkdir(e,t){await this.request("/samantha/aispace/upload_node",{node_list:[{local_id:crypto.randomUUID(),name:t,parent_id:e,node_type:FK}]})}async rename(e,t){await this.request("/samantha/aispace/rename_node",{node_id:e,node_name:t})}async move(e,t,i){await this.request("/samantha/aispace/move_node",{node_list:[{id:e}],current_parent_id:t,target_parent_id:i})}async remove(e){await this.request("/samantha/aispace/delete_node",{node_list:[{id:e}]})}}});var XD,Xh,ZD=j(()=>{"use strict";Be();WD();XD="0",Xh=class{client;pathCache=new Map;constructor(e){this.client=new Wh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.node_type===1;return{name:e.name,size:e.size||0,is_dir:t,modified:e.update_time?new Date(e.update_time*1e3).toISOString():new Date().toISOString(),sign:"",type:X(e.name,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.name===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,o.parentId,a),this.pathCache.clear()}async copy(){throw new Error("[Doubao] copy not supported")}async put(){throw new Error("[Doubao] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return XD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=XD;for(let s=0;sl.node_type===1&&l.name===i[s]);if(!a)throw new Error(`[Doubao] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.name===i);if(!a)throw new Error(`[Doubao] '${i}' not found`);return{id:a.id,parentId:a.parent_id||s,isDir:a.node_type===1}}}});async function qK(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}var RK,NK,Zh,e3=j(()=>{"use strict";RK="https://open-api-drive.quark.cn",NK="go-resty/3.0.0-beta.1 (https://resty.dev)";Zh=class{addition;accessToken;refreshToken;appId;signKey;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.appId=e.app_id||"",this.signKey=e.sign_key||""}async init(){if(!this.refreshToken)throw new Error("[QuarkOpen] refresh_token is required")}async generateSign(e,t){let i=String(Date.now()),n=`${e}&${t}&${i}&${this.signKey}`,s=await qK(n),o=typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;return{tm:i,token:s,reqId:o}}async request(e,t,i){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken}),c={Accept:"application/json, text/plain, */*","User-Agent":NK,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.appId},l={method:t,headers:c};i!==void 0&&(l.body=JSON.stringify(i),c["Content-Type"]="application/json");let u=await(await fetch(`${RK}${e}?${a.toString()}`,l)).json().catch(()=>({status:-1,errno:-1}));if(u.status===-1&&(u.errno===11001||u.errno===14001&&(u.error_info||"").includes("access_token")))return await this.refreshAccessToken(),this.request(e,t,i);if(u.status>=400||u.errno!==0)throw new Error(`[QuarkOpen] ${u.error_info||`errno ${u.errno}`}`);return u}async refreshAccessToken(){let e=this.addition.api_url_address||"https://api.oplist.org/quarkyun/renewapi",t=new URLSearchParams({refresh_ui:this.refreshToken,server_use:"true",driver_txt:"quarkyun_oa"}),n=await(await fetch(`${e}?${t.toString()}`)).json().catch(()=>({}));if(!n.refresh_token||!n.access_token)throw new Error(`[QuarkOpen] refresh token failed: ${n.text||"empty token"}`);this.refreshToken=n.refresh_token,this.accessToken=n.access_token,n.app_id&&(this.appId=n.app_id),n.sign_key&&(this.signKey=n.sign_key),this.addition.refresh_token=n.refresh_token,this.addition.access_token=n.access_token}async getFiles(e){let t=[],i;do{let n={parent_fid:e,size:100,sort:this.addition.order_by&&this.addition.order_by!=="none"?`${this.addition.order_by}:${this.addition.order_direction||"asc"}`:"file_name:asc"};i?.token&&(n.query_cursor=i);let o=(await this.request("/open/v1/file/list","POST",n)).data;if(o?.file_list&&t.push(...o.file_list),o?.last_page)break;i=o?.next_query_cursor}while(i?.token);return t}async getDownloadUrl(e){let i=(await this.request("/open/v1/file/get_download_url","POST",{fid:e})).data;if(!i.download_url)throw new Error("[QuarkOpen] empty download url");return i.download_url}downloadCookie(){return`x_pan_client_id=${this.appId}; x_pan_access_token=${this.accessToken}`}async mkdir(e,t){await this.request("/open/v1/dir","POST",{dir_path:t,pdir_fid:e})}async rename(e,t){await this.request("/open/v1/file/rename","POST",{fid:e,file_name:t,conflict_mode:"REUSE"})}async move(e,t){await this.request("/open/v1/file/move","POST",{action_type:1,fid_list:[e],to_pdir_fid:t})}async remove(e){await this.request("/open/v1/file/delete","POST",{action_type:1,fid_list:[e]})}}});var t3,eg,r3=j(()=>{"use strict";Be();e3();t3="0",eg=class{client;pathCache=new Map;constructor(e){this.client=new Zh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.file_type==="0";return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid),l.raw_url_headers={Cookie:this.client.downloadCookie()}}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveDirId(n),a=await this.resolveDirId(t);await this.client.move(o,a),this.pathCache.clear()}async copy(){throw new Error("[QuarkOpen] copy not supported")}async put(){throw new Error("[QuarkOpen] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return t3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=t3;for(let s=0;sl.file_type==="0"&&l.filename===i[s]);if(!a)throw new Error(`[QuarkOpen] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var OK,MK,LK,HK,KK,GK,zK,JK,jK,$K,tg,i3=j(()=>{"use strict";si();OK="Mozilla/5.0 (Linux; U; Android 13; zh-cn; M2004J7AC Build/UKQ1.231108.001) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1",MK="Xiaomi",LK="tv",HK="M2004J7AC",KK="M2004J7AC",GK="M2004J7AC",zK="M2004J7AC",JK="Adreno (TM) 550",jK="{}",$K={quark:{api:"https://open-api-drive.quark.cn",clientID:"d3194e61504e493eb6222857bccfed94",signKey:"kw2dvtd7p4t3pjl2d9ed9yc8yej8kw2d",appVer:"1.8.2.2",channel:"GENERAL",codeApi:"http://api.extscreen.com/quarkdrive"},uc:{api:"https://open-api-drive.uc.cn",clientID:"5acf882d27b74502b7040b0c65519aa7",signKey:"l3srvtd7p42l0d0x1u8d7yc8ye9kki4d",appVer:"1.7.2.2",channel:"UCTVOFFICIALWEB",codeApi:"http://api.extscreen.com/ucdrive"}},tg=class{conf;addition;accessToken="";deviceId;constructor(e){this.addition=e,this.conf=$K[e.variant||"quark"],this.deviceId=e.device_id||$t(String(Date.now())),this.addition.device_id=this.deviceId}async init(){if(!this.addition.refresh_token)throw new Error("[QuarkTV] refresh_token is required");await this.refreshToken()}async generateSign(e,t){let i=String(Date.now()),n=$t(this.deviceId+i),s=await hk(`${e}&${t}&${i}&${this.conf.signKey}`);return{tm:i,token:s,reqId:n}}deviceQuery(){return{app_ver:this.conf.appVer,device_id:this.deviceId,device_brand:MK,platform:LK,device_name:HK,device_model:KK,build_device:GK,build_product:zK,device_gpu:JK,activity_rect:jK,channel:this.conf.channel}}async request(e,t,i={}){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken,...this.deviceQuery(),...i}),l=await(await fetch(`${this.conf.api}${e}?${a.toString()}`,{method:t,headers:{Accept:"application/json, text/plain, */*","User-Agent":OK,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.conf.clientID}})).json().catch(()=>({status:-1,errno:-1})),d=(l.error_info||"").toLowerCase();if(l.status===-1&&(l.errno===10001||l.errno===11001)||d.includes("access token")||d.includes("access_token")||d.includes("token\u65E0\u6548")||d.includes("token \u65E0\u6548"))return await this.refreshToken(),this.request(e,t,i);if(l.status>=400||l.errno!==0)throw new Error(`[QuarkTV] ${l.error_info||`errno ${l.errno}`}`);return l}async refreshToken(){let e="/token",{reqId:t}=await this.generateSign("POST",e),i={req_id:t,...this.deviceQuery()};this.accessToken?i.refresh_token=this.addition.refresh_token:i.refresh_token=this.addition.refresh_token;let s=await(await fetch(`${this.conf.codeApi}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).json().catch(()=>({}));if(s?.code!==200)throw new Error(`[QuarkTV] ${s?.message||"token refresh failed"}`);let o=s.data||{};if(!o.access_token)throw new Error("[QuarkTV] refresh token empty");this.accessToken=o.access_token,o.refresh_token&&(this.addition.refresh_token=o.refresh_token)}async getFiles(e){let t=[],i=0,n=100,s=this.addition.order_direction==="asc"?"0":"1",o=this.addition.order_by==="file_name"?"1":"3";for(;;){let c=(await this.request("/file","GET",{method:"list",parent_fid:e,order_by:o,desc:s,category:"",source:"",ex_source:"",list_all:"0",page_size:String(n),page_index:String(i)})).data;c?.files&&t.push(...c.files);let l=c?.total_count||0;if(i*n>=l)break;i++}return t}async getDownloadUrl(e){if(this.addition.link_method==="streaming"){let o=(await this.request("/file","GET",{method:"streaming",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data?.video_info?.find(a=>a.url)?.url||"";if(!o)throw new Error("[QuarkTV] no streaming link found");return o}let i=(await this.request("/file","GET",{method:"download",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data;if(!i?.download_url)throw new Error("[QuarkTV] empty download url");return i.download_url}}});var n3,rg,s3=j(()=>{"use strict";Be();i3();n3="0",rg=class{client;pathCache=new Map;constructor(e){this.client=new tg(e)}async init(){await this.client.init()}fileToItem(e){let t=e.isdir===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[QuarkTV] read-only storage")}async rename(){throw new Error("[QuarkTV] read-only storage")}async remove(){throw new Error("[QuarkTV] read-only storage")}async move(){throw new Error("[QuarkTV] read-only storage")}async copy(){throw new Error("[QuarkTV] read-only storage")}async put(){throw new Error("[QuarkTV] read-only storage")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return n3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=n3;for(let s=0;sl.isdir===1&&l.filename===i[s]);if(!a)throw new Error(`[QuarkTV] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var dc,ig,o3=j(()=>{"use strict";dc="https://open-api.123pan.com",ig=class{addition;accessToken="";constructor(e){this.addition=e,this.accessToken=e.access_token||""}async init(){this.accessToken||await this.getAccessToken()}async getAccessToken(){if(this.addition.use_online_api!==!1&&this.addition.refresh_token&&this.addition.api_url_address){let e=new URLSearchParams({refresh_ui:this.addition.refresh_token,server_use:"true",driver_txt:"123cloud_oa"}),i=await(await fetch(`${this.addition.api_url_address}?${e.toString()}`)).json().catch(()=>({}));if(i.access_token&&i.refresh_token){this.accessToken=i.access_token,this.addition.access_token=i.access_token,this.addition.refresh_token=i.refresh_token;return}let n=i.error_description||i.text||i.message||i.error;if(n)throw new Error(`[123Open] ${n}`)}if(this.addition.client_id&&this.addition.client_secret){let t=await(await fetch(`${dc}/api/v1/access_token`,{method:"POST",headers:{platform:"open_platform","Content-Type":"application/json"},body:JSON.stringify({clientID:this.addition.client_id,clientSecret:this.addition.client_secret})})).json().catch(()=>({code:-1}));if(t.code!==0)throw new Error(`[123Open] ${t.message}`);if(!t.data?.access_token)throw new Error("[123Open] empty access token");this.accessToken=t.data.access_token,this.addition.access_token=this.accessToken;return}throw new Error("[123Open] no valid authentication method (access_token / refresh_token / client_id+client_secret)")}async request(e,t,i){let n={Authorization:`Bearer ${this.accessToken}`,platform:"open_platform","Content-Type":"application/json"},s={method:t,headers:n};i!==void 0&&(s.body=JSON.stringify(i));let a=await(await fetch(e,s)).json().catch(()=>({code:-1}));return a.code===401?(await this.getAccessToken(),this.request(e,t,i)):a}async getFiles(e){let t=[],i=0;do{let n=new URLSearchParams({parentFileId:e,limit:"100",lastFileId:String(i),trashed:"false",searchMode:"",searchData:""}),s=await this.request(`${dc}/api/v2/file/list?${n.toString()}`,"GET");if(s.code!==0)throw new Error(`[123Open] ${s.message}`);let o=s.data,a=(o.file_list||[]).filter(c=>(c.trashed??0)===0);t.push(...a),i=o.last_file_id??-1}while(i!==-1);return t}async getDownloadUrl(e){let t=new URLSearchParams({fileId:String(e)}),i=await this.request(`${dc}/api/v1/file/download_info?${t.toString()}`,"GET");if(i.code!==0)throw new Error(`[123Open] ${i.message}`);let n=i.data?.download_url||"";if(!n)throw new Error("[123Open] empty download url");return n}async mkdir(e,t){let i=await this.request(`${dc}/upload/v1/file/mkdir`,"POST",{parentID:e,name:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async move(e,t){let i=await this.request(`${dc}/api/v1/file/move`,"POST",{fileIDs:[e],toParentFileID:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async rename(e,t){let i=await this.request(`${dc}/api/v1/file/name`,"PUT",{fileId:e,fileName:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async remove(e){let t=await this.request(`${dc}/api/v1/file/trash`,"POST",{fileIDs:[e]});if(t.code!==0)throw new Error(`[123Open] ${t.message}`)}}});function VK(r){if(!r)return new Date().toISOString();let e=new Date(r.replace(" ","T")+"+08:00");return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var a3,ng,c3=j(()=>{"use strict";Be();o3();a3="0";ng=class{client;pathCache=new Map;constructor(e){this.client=new ig(e)}async init(){await this.client.init()}fileToItem(e){let t=e.type===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:VK(e.update_at),sign:"",type:X(e.filename,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fileId)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,a),this.pathCache.clear()}async copy(){throw new Error("[123Open] copy not supported")}async put(){throw new Error("[123Open] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return a3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=a3;for(let s=0;sl.type===1&&l.filename===i[s]);if(!a)throw new Error(`[123Open] Directory '${i[s]}' not found`);n=String(a.fileId);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.filename===i);if(!a)throw new Error(`[123Open] '${i}' not found`);return{id:a.fileId,isDir:a.type===1}}}});var sg,l3=j(()=>{"use strict";sg=class{addition;baseUrl;constructor(e){this.addition=e,this.baseUrl=e.region==="international"?"https://us.teambition.com":"https://www.teambition.com"}async init(){if(!this.addition.cookie)throw new Error("[Teambition] cookie is required");if(!this.addition.project_id)throw new Error("[Teambition] project_id is required");let e=await fetch(`${this.baseUrl}/api/v2/roles`,{headers:{Cookie:this.addition.cookie}});if(e.status>=400)throw new Error(`[Teambition] init failed: HTTP ${e.status}`)}async request(e,t,i,n){let s=n?"?"+new URLSearchParams(n).toString():"",o={Cookie:this.addition.cookie},a={method:t,headers:o};i!==void 0&&(a.body=JSON.stringify(i),o["Content-Type"]="application/json");let c=await fetch(`${this.baseUrl}${e}${s}`,a);if(c.status===204||c.status===201)return{};let l=await c.json().catch(()=>({}));if(l.name||l.message)throw new Error(`[Teambition] ${l.message||l.name}`);return l}async getFiles(e){let t=`${this.addition.order_by||"fileName"}${this.addition.order_direction||"Asc"}`,i={_parentId:e,_projectId:this.addition.project_id,order:t,count:"50"},n=[],s=1;for(;;){let a=await this.request("/api/collections","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(n.push(...a.filter(c=>c.title)),s++,a.length<50))break}let o=[];for(s=1;;){let a=await this.request("/api/works","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(o.push(...a),s++,a.length<50))break}return{folders:n,works:o}}async resolveDownloadUrl(e){let t=await fetch(e,{headers:{Cookie:this.addition.cookie},redirect:"manual"});if(t.status===302){let i=t.headers.get("location");if(i)return i}return e}async mkdir(e,t){await this.request("/api/collections","POST",{objectType:"collection",_projectId:this.addition.project_id,_creatorId:"",created:"",updated:"",title:t,color:"blue",description:"",workCount:0,collectionType:"",recentWorks:[],_parentId:e,subCount:null})}async move(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/move`,"PUT",{_parentId:t})}async rename(e,t,i){i?await this.request(`/api/collections/${e}`,"PUT",{title:t}):await this.request(`/api/works/${e}`,"PUT",{fileName:t})}async copy(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/fork`,"PUT",{_parentId:t})}async remove(e,t){let i=t?"/api/collections/":"/api/works/";await this.request(`${i}${e}/archive`,"POST")}}});var og,d3=j(()=>{"use strict";Be();l3();og=class{client;pathCache=new Map;constructor(e){this.client=new sg(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t),{folders:n,works:s}=await this.client.getFiles(i),o=n.map(c=>({name:c.title,size:0,is_dir:!0,modified:c.updated||new Date().toISOString(),sign:c._id,type:1,raw_url:""})),a=s.map(c=>({name:c.fileName,size:c.fileSize||0,is_dir:!1,modified:c.updated||new Date().toISOString(),sign:c._id,type:X(c.fileName,!1),thumb:c.thumbnail||c.thumbnailUrl||"",raw_url:c.downloadUrl||""}));return[...o,...a]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),{folders:a,works:c}=await this.client.getFiles(o),l=a.find(u=>u.title===n);if(l)return{name:l.title,size:0,is_dir:!0,modified:l.updated||new Date().toISOString(),sign:l._id,type:1,raw_url:""};let d=c.find(u=>u.fileName===n);if(d){let u=d.downloadUrl||"";if(u)try{u=await this.client.resolveDownloadUrl(u)}catch{}return{name:d.fileName,size:d.fileSize||0,is_dir:!1,modified:d.updated||new Date().toISOString(),sign:d._id,type:X(d.fileName,!1),thumb:d.thumbnail||d.thumbnailUrl||"",raw_url:u}}}catch{}try{return await this.client.getFiles(await this.pathToId(t)),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i,n.isDir),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async put(){throw new Error("[Teambition] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),{folders:o,works:a}=await this.client.getFiles(s),c=o.find(d=>d.title===i);if(c)return{id:c._id,isDir:!0};let l=a.find(d=>d.fileName===i);if(l)return{id:l._id,isDir:!1};throw new Error(`[Teambition] '${i}' not found`)}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.title===i[s]);if(!a)throw new Error(`[Teambition] Directory '${i[s]}' not found`);n=a._id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var u3,gC,YK,f3,A3,ag,h3=j(()=>{"use strict";si();u3="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",gC="https://chaoxing.com/",YK="https://groupweb.chaoxing.com",f3="https://noteyd.chaoxing.com",A3="u2oh6Vu^HWe4_AES",ag=class{addition;cookie;persistCookie;constructor(e,t){this.addition=e,this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.addition.bbsid)throw new Error("[ChaoXing] bbsid is required");this.cookie||(this.cookie=await this.login(),this.persistCookie&&await this.persistCookie(this.cookie))}getCookie(){return this.cookie}downloadHeaders(){return{Cookie:this.cookie,Referer:gC,"User-Agent":u3}}async login(){let e=await vx(this.addition.user_name,A3),t=await vx(this.addition.password,A3),i=new FormData;i.append("uname",e),i.append("password",t),i.append("t","true");let n=await fetch("https://passport2.chaoxing.com/fanyalogin",{method:"POST",body:i}),s=[],o=typeof n.headers.getSetCookie=="function"?n.headers.getSetCookie():[];if(Array.isArray(o)&&o.length>0)for(let a of o)a&&s.push(a.split(";")[0]);else{let a=n.headers.get("set-cookie");a&&s.push(a.split(";")[0])}if(s.length===0)throw new Error("[ChaoXing] login failed: no cookie returned");return s.join("; ")}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:gC,...n},a=await fetch(`${YK}${e}${s}`,{method:t,headers:o});if(a.status>=400)throw new Error(`[ChaoXing] request failed: HTTP ${a.status}`);return await a.json()}async requestDownload(e,t){let i={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:gC,"User-Agent":u3},n=await fetch(`${f3}${e}`,{method:t,headers:i});if(n.status>=400)throw new Error(`[ChaoXing] download request failed: HTTP ${n.status}`);return await n.json()}async getFiles(e){let t=[],i=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"1"});if(i.result!==1)throw new Error(`[ChaoXing] list failed: result=${i.result}`);i.list&&i.list.length>0&&t.push(...i.list);let n=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"2"});for(let s of n.list||[])s.content.fileId||(s.content.fileId=s.content.objectId||""),t.push(s);return t}async link(e){let t=await this.requestDownload("/screen/note_note/files/status/"+e,"POST");if(!t.download)throw new Error(`[ChaoXing] link failed: ${t.msg||"no download url"}`);return t}async mkdir(e,t){let i=await this.request("/pc/resource/addResourceFolder","GET",{bbsid:this.addition.bbsid,name:t,pid:e});if(i.result!==1)throw new Error(`[ChaoXing] mkdir failed: ${i.msg}`)}async move(e,t,i){let n=i?{bbsid:this.addition.bbsid,folderIds:e,targetId:t}:{bbsid:this.addition.bbsid,recIds:e,targetId:t},s=await this.request("/pc/resource/moveResource","GET",n);if(!s.status)throw new Error(`[ChaoXing] move failed: ${s.msg}`)}async renameFolder(e,t){let i=await this.request("/pc/resource/updateResourceFolderName","GET",{bbsid:this.addition.bbsid,folderId:e,name:t});if(i.result!==1)throw new Error(`[ChaoXing] rename failed: ${i.msg}`)}async remove(e,t){let i=t?"/pc/resource/deleteResourceFolder":"/pc/resource/deleteResourceFile",n=t?{bbsid:this.addition.bbsid,folderIds:e}:{bbsid:this.addition.bbsid,recIds:e},s=await this.request(i,"GET",n);if(s.result!==1)throw new Error(`[ChaoXing] remove failed: ${s.msg}`)}async upload(e,t,i){let s=await(await fetch(`${f3}/pc/files/getUploadConfig`,{method:"GET"})).json();if(s.result!==1||!s.msg?.token)throw new Error("[ChaoXing] get upload config failed");let o=new FormData,a=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);o.append("file",new Blob([a]),t),o.append("_token",s.msg.token),o.append("puid",String(s.msg.puid||""));let l=await(await fetch("https://pan-yz.chaoxing.com/upload",{method:"POST",body:o})).json();if(l.msg!=="success"||!l.objectId)throw new Error(`[ChaoXing] upload failed: ${l.msg}`);let d={cataid:"100000019",key:l.objectId,param:l.data||{}},u=JSON.stringify(d),f=await this.request("/pc/resource/addResource","GET",{bbsid:this.addition.bbsid,pid:e,type:"yunpan",params:encodeURIComponent("["+u+"]")});if(f.result!==1)throw new Error(`[ChaoXing] add resource failed: ${f.msg}`)}}});function g3(r){let e=r.content;if(e.folderName)return{name:e.folderName,size:0,is_dir:!0,modified:r.inserttime?new Date(r.inserttime).toISOString():new Date().toISOString(),sign:String(r.id),type:1};let t=e.fileId||e.objectId||"";return{name:e.name||"",size:Number(e.size)||0,is_dir:!1,modified:e.uploadDate?new Date(e.uploadDate).toISOString():new Date().toISOString(),sign:`${r.id}$${t}`,type:X(e.name||"",!1),raw_url:""}}var cg,p3=j(()=>{"use strict";Be();h3();cg=class{client;pathCache=new Map;constructor(e,t){this.client=new ag(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>g3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.content.folderName||l.content.name)===n);if(c){let l=g3(c);if(!l.is_dir){let d=l.sign.split("$")[1]||"";if(d)try{let u=await this.client.link(d);l.raw_url=u.download,l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[ChaoXing] failed to resolve download url"}}return l}}catch{}try{let o=await this.pathToId(t);return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(!n.isDir)throw new Error("[ChaoXing] \u6B64\u7F51\u76D8\u4E0D\u652F\u6301\u4FEE\u6539\u6587\u4EF6\u540D");await this.client.renameFolder(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(){throw new Error("[ChaoXing] copy not supported")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=await this.pathToId(o);await this.client.upload(a,s,new Uint8Array(i)),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s)).find(c=>(c.content.folderName||c.content.name)===i);if(!a)throw new Error(`[ChaoXing] '${i}' not found`);return{id:String(a.id),isDir:!!a.content.folderName}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"-1";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="-1";for(let s=0;sl.content.folderName===i[s]);if(!a)throw new Error(`[ChaoXing] Directory '${i[s]}' not found`);n=String(a.id);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var pC,mC,yC,WK,lg,m3=j(()=>{"use strict";pC="all",mC="albums",yC="share_albums",WK="root",lg=class{addition;accessToken="";constructor(e){this.addition=e}async init(){await this.refreshToken()}async refreshToken(){let e=new URLSearchParams({client_id:this.addition.client_id,client_secret:this.addition.client_secret,refresh_token:this.addition.refresh_token,grant_type:"refresh_token"}),i=await(await fetch("https://www.googleapis.com/oauth2/v4/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(!i.access_token)throw new Error("[GooglePhoto] refresh token failed");this.accessToken=i.access_token}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Authorization:"Bearer "+this.accessToken,"Accept-Encoding":"gzip"},a={method:t,headers:o};n!==void 0&&(o["Content-Type"]="application/json",a.body=JSON.stringify(n));let c=await fetch(`${e}${s}`,a);if(c.status===401&&(await this.refreshToken(),o.Authorization="Bearer "+this.accessToken,c=await fetch(`${e}${s}`,a)),c.status>=400){let l=await c.json().catch(()=>({}));throw new Error(`[GooglePhoto] request failed: ${l.error?.message||`HTTP ${c.status}`}`)}return c}async getFiles(e){switch(e){case pC:return this.getAllMedias();case mC:return this.getAlbums();case yC:return this.getShareAlbums();case WK:return this.getFakeRoot();default:return this.getMedias(e)}}getFakeRoot(){return[{id:pC,title:pC},{id:mC,title:mC},{id:yC,title:yC}]}getAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/albums",{fields:"albums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getShareAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/sharedAlbums",{fields:"sharedAlbums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getMedias(e){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems:search",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",albumId:e,pageToken:"first"},"POST")}getAllMedias(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",pageToken:"first"},"GET")}async getMedia(e){return await(await this.request(`https://photoslibrary.googleapis.com/v1/mediaItems/${e}`,"GET",{fields:"mediaMetadata,baseUrl,mimeType"})).json()}async fetchItems(e,t,i){let n=[],s=t.pageToken;for(;s!=="";){let o={...t};o.pageToken==="first"&&(o.pageToken="");let c=await(await this.request(e,i,o)).json();s=c.nextPageToken||"",c.mediaItems&&n.push(...c.mediaItems),c.albums&&n.push(...c.albums),c.sharedAlbums&&n.push(...c.sharedAlbums)}return n}async link(e){let t=await this.getMedia(e),i=t.mimeType||"";return i.includes("image/")?(t.baseUrl||"")+"=d":i.includes("video/")?(t.baseUrl||"")+"=dv":t.baseUrl||""}}});function y3(r){return r.filename?{name:r.filename,size:0,is_dir:!1,modified:r.mediaMetadata?.creationTime||new Date().toISOString(),sign:r.id,type:X(r.filename,!1),thumb:r.baseUrl?r.baseUrl+"=w100-h100-c":"",raw_url:""}:{name:r.title||r.id,size:0,is_dir:!0,modified:new Date().toISOString(),sign:r.id,type:1}}var dg,I3=j(()=>{"use strict";Be();m3();dg=class{client;pathCache=new Map;constructor(e){this.client=new lg(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>y3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.filename||l.title)===n);if(c){let l=y3(c);if(!l.is_dir)try{l.raw_url=await this.client.link(c.id)}catch{l.raw_url_error="[GooglePhoto] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[GooglePhoto] mkdir not supported")}async rename(){throw new Error("[GooglePhoto] rename not supported")}async remove(){throw new Error("[GooglePhoto] remove not supported")}async move(){throw new Error("[GooglePhoto] move not supported")}async copy(){throw new Error("[GooglePhoto] copy not supported")}async put(){throw new Error("[GooglePhoto] upload not supported")}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"root";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=i[0];for(let s=1;s(l.filename||l.title)===i[s]);if(!a)throw new Error(`[GooglePhoto] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return this.pathCache.set(t,n),n}}});var ug,w3=j(()=>{"use strict";ug=class{addition;accessToken="";tokenType="Bearer";persist;constructor(e,t){this.addition=e,this.persist=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[FebBox] client_id and client_secret are required");await this.refreshToken()}async refreshToken(){let e=new URLSearchParams;this.addition.refresh_token?(e.set("grant_type","refresh_token"),e.set("refresh_token",this.addition.refresh_token)):e.set("grant_type","client_credentials"),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let i=await(await fetch("https://api.febbox.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==1||!i.data?.access_token)throw new Error(`[FebBox] token fetch failed: ${i.msg}`);this.accessToken=i.data.access_token,this.tokenType=i.data.token_type||"Bearer",i.data.refresh_token&&(this.addition.refresh_token=i.data.refresh_token,this.persist&&await this.persist(i.data.refresh_token))}async request(e){let t=new FormData;for(let[s,o]of Object.entries(e))t.append(s,o);let n=await(await fetch("https://api.febbox.com/oauth",{method:"POST",headers:{Authorization:`${this.tokenType} ${this.accessToken}`},body:t})).json().catch(()=>({}));if(n.code===-10001&&n.server_name)return await this.refreshToken(),this.request(e);if(n.code!==0&&n.code!==1)throw new Error(`[FebBox] ${n.msg||n.code}`);return n}async getFilesList(e){let t=this.addition.page_size||100,i=[],n=1;for(;;){let o=(await this.request({module:"file_list",parent_id:e,page:String(n),pagelimit:String(t),order:this.addition.sort_rule||"name_asc"})).data?.file_list||[];if(i.push(...o),o.length{"use strict";Be();w3();fg=class{client;userIp;pathCache=new Map;constructor(e,t){this.client=new ug(e,t),this.userIp=e.user_ip||""}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFilesList(i)).map(s=>x3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFilesList(o)).find(l=>l.file_name===n);if(c){let l=x3(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadLink(l.sign,this.userIp)}catch{l.raw_url_error="[FebBox] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.makeDir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t)),this.pathCache.clear()}async put(){throw new Error("[FebBox] upload not supported")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFilesList(s)).find(c=>c.file_name===i);if(!a)throw new Error(`[FebBox] '${i}' not found`);return{id:String(a.fid),isDir:a.is_dir===1}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"0";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="0";for(let s=0;sl.file_name===i[s]&&l.is_dir===1);if(!a)throw new Error(`[FebBox] Directory '${i[s]}' not found`);n=String(a.fid);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var XK,ZK,eG,tG,rG,Ag,E3=j(()=>{"use strict";XK="https://rest-api.degoo.com/login",ZK="https://rest-api.degoo.com/access-token/v2",eG="https://production-appsync.degoo.com/graphql",tG="da2-vs6twz5vnjdavpqndtbzg3prra",rG="CgAQAg",Ag=class{addition;accessToken="";refreshToken="";rootId="0";persist;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.persist=t}async init(){await this.ensureValidToken(),await this.getDevices()}getRootId(){return this.rootId}async saveTokens(){this.persist&&await this.persist({accessToken:this.accessToken,refreshToken:this.refreshToken})}isTokenExpired(){if(!this.accessToken)return!0;try{let e=this.accessToken.split(".");if(e.length!==3)return!0;let t=JSON.parse(atob(e[1].replace(/-/g,"+").replace(/_/g,"/"))),i=Number(t.exp)*1e3;return Date.now()+300*1e3>i}catch{return!0}}async ensureValidToken(){if(this.isTokenExpired()){if(this.refreshToken)try{await this.refreshAccessToken();return}catch{}this.addition.username&&this.addition.password&&await this.login()}}async refreshAccessToken(){let t=await(await fetch(ZK,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({RefreshToken:this.refreshToken})})).json();if(!t.AccessToken)throw new Error("[Degoo] refresh token failed");this.accessToken=t.AccessToken,await this.saveTokens()}async login(){let t=await(await fetch(XK,{method:"POST",headers:{"Content-Type":"application/json",Origin:"https://app.degoo.com"},body:JSON.stringify({GenerateToken:!0,Username:this.addition.username,Password:this.addition.password})})).json();if(t.RefreshToken)this.refreshToken=t.RefreshToken,await this.refreshAccessToken();else if(t.Token)this.accessToken=t.Token,this.refreshToken="";else throw new Error("[Degoo] login failed: no valid token");await this.saveTokens()}async apiCall(e,t,i){await this.ensureValidToken(),i.Token!==void 0&&(i.Token=this.accessToken);let s=await(await fetch(eG,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":tG,Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify({operationName:e,query:t,variables:i})})).json();if(s.errors&&s.errors.length>0){let o=s.errors[0];if(o.errorType==="Unauthorized")return await this.login(),i.Token=this.accessToken,this.apiCall(e,t,i);throw new Error(`[Degoo] GraphQL error: ${o.message}`)}return s.data}async getDevices(){let t=await this.apiCall("GetFileChildren5","query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ParentID } NextToken } }",{Token:this.accessToken,ParentID:"0",Limit:10,Order:3});if(this.rootId==="0"){let i=t?.getFileChildren5?.Items;i&&i.length>0&&(this.rootId=i[0].ParentID)}}async getFileChildren5(e){let t="query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime FilePath IsInRecycleBin DeviceID MetadataID } NextToken } }",i=[],n="";for(;;){let s={Token:this.accessToken,ParentID:e,Limit:1e3,Order:3};n&&(s.NextToken=n);let o=await this.apiCall("GetFileChildren5",t,s),a=o?.getFileChildren5?.Items||[];if(i.push(...a),n=o?.getFileChildren5?.NextToken||"",!n)break}return i}async getOverlay4(e){return(await this.apiCall("GetOverlay4","query GetOverlay4($Token: String!, $ID: IDType!) { getOverlay4(Token: $Token, ID: $ID) { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime URL FilePath IsInRecycleBin DeviceID MetadataID } }",{Token:this.accessToken,ID:{FileID:e}}))?.getOverlay4}async mkdir(e,t){await this.apiCall("SetUploadFile3","mutation SetUploadFile3($Token: String!, $FileInfos: [FileInfoUpload3]!) { setUploadFile3(Token: $Token, FileInfos: $FileInfos) }",{Token:this.accessToken,FileInfos:[{Checksum:rG,Name:t,CreationTime:Date.now(),ParentID:e,Size:0}]})}async move(e,t){await this.apiCall("SetMoveFile","mutation SetMoveFile($Token: String!, $Copy: Boolean, $NewParentID: String!, $FileIDs: [String]!) { setMoveFile(Token: $Token, Copy: $Copy, NewParentID: $NewParentID, FileIDs: $FileIDs) }",{Token:this.accessToken,Copy:!1,NewParentID:t,FileIDs:[e]})}async rename(e,t){await this.apiCall("SetRenameFile","mutation SetRenameFile($Token: String!, $FileRenames: [FileRenameInfo]!) { setRenameFile(Token: $Token, FileRenames: $FileRenames) }",{Token:this.accessToken,FileRenames:[{ID:e,NewName:t}]})}async remove(e){await this.apiCall("SetDeleteFile5","mutation SetDeleteFile5($Token: String!, $IsInRecycleBin: Boolean!, $IDs: [IDType]!) { setDeleteFile5(Token: $Token, IsInRecycleBin: $IsInRecycleBin, IDs: $IDs) }",{Token:this.accessToken,IsInRecycleBin:!1,IDs:[{FileID:e}]})}}});function IC(r){return r===1||r===2||r===10}function B3(r){let e=IC(r.Category),t=Number(r.Size)||0,i=Number(r.LastModificationTime);return{name:r.Name,size:e?0:t,is_dir:e,modified:i?new Date(i).toISOString():new Date().toISOString(),sign:r.ID,type:X(r.Name,e),raw_url:""}}var hg,b3=j(()=>{"use strict";Be();E3();hg=class{client;pathCache=new Map;constructor(e,t){this.client=new Ag(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFileChildren5(i)).map(s=>B3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFileChildren5(o)).find(l=>l.Name===n);if(c){let l=B3(c);if(!l.is_dir)try{let d=await this.client.getOverlay4(c.ID);l.raw_url=d.URL||""}catch{l.raw_url_error="[Degoo] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(){throw new Error("[Degoo] copy not supported")}async put(){throw new Error("[Degoo] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFileChildren5(s)).find(c=>c.Name===i);if(!a)throw new Error(`[Degoo] '${i}' not found`);return{id:a.ID,isDir:IC(a.Category)}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootId();if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.client.getRootId();for(let s=0;sl.Name===i[s]&&IC(l.Category));if(!a)throw new Error(`[Degoo] Directory '${i[s]}' not found`);n=a.ID;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Dl(r){return new TextEncoder().encode(r)}function Q3(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}function aG(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function _3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function S3(r,e,t){if(D3){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-cbc",Buffer.from(e),Buffer.from(t));return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let i=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),n=Q3(r),s=await crypto.subtle.encrypt({name:"AES-CBC",iv:t},i,n);return new Uint8Array(s)}async function cG(r,e){if(D3){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-ecb",Buffer.from(e),null);return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let t=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),i=Q3(r),n=new Uint8Array(i.length),s=new Uint8Array(16);for(let o=0;o0n;)e&1n&&(i=i*r%t),r=r*r%t,e>>=1n;return i}function fG(r){let e=new Uint8Array(128);e.set(r,112);let t=lG(e),i=BigInt("0x"+sG),n=uG(t,oG,i);return dG(n,128)}function AG(){let r=new Uint8Array(16),e=new Uint8Array(16);for(let t=0;t<16;t++){let i=Math.floor(Math.random()*k3.length),n=k3.charCodeAt(i);r[t]=n,e[15-t]=n}return{key:r,reversed:e}}async function F3(r){let e=Dl(JSON.stringify(r)),{key:t,reversed:i}=AG(),n=await S3(e,Dl(iG),Dl(v3)),s=await S3(n,i,Dl(v3));return{params:aG(s),encSecKey:_3(fG(t))}}async function P3(r){let e=Dl(JSON.stringify(r)),t=await cG(e,Dl(nG));return{eparams:_3(t).toUpperCase()}}var iG,nG,v3,k3,sG,oG,D3,T3=j(()=>{"use strict";iG="0CoJUm6Qyw8W8jud",nG="rFgB&h#%2?^eDg:Q",v3="0102030405060708",k3="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",sG="e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7",oG=65537n,D3=typeof process<"u"&&process?.release?.name==="node"});var gg,U3=j(()=>{"use strict";T3();gg=class{addition;csrfToken="";musicU="";constructor(e){this.addition=e}init(){if(this.csrfToken=this.getCookie("__csrf"),this.musicU=this.getCookie("MUSIC_U"),!this.csrfToken||!this.musicU)throw new Error("[NeteaseMusic] cookie must contain __csrf and MUSIC_U")}getCookie(e){let i=new RegExp(e+"=([^(;|$)]+)").exec(this.addition.cookie);return i?i[1]:""}async request(e,t,i){let n={Cookie:this.addition.cookie};e.includes("music.163.com")&&(n.Referer="https://music.163.com");let s;if(i.crypto==="weapi"?(s=await F3(i.data),e=e.replace(/\/\w*api\//,"/weapi/")):(s=await P3({url:e.replace(/\/\w*api\//,"/api/"),method:t,params:i.data}),n["User-Agent"]="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",e="https://music.163.com/api/linux/forward"),i.cookies){let a=i.cookies.map(c=>`${c.name}=${c.value}`).join("; ");n.Cookie=n.Cookie+"; "+a}return(await fetch(e,{method:t,headers:{...n,"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()})).json()}async getSongObjs(e){return(await this.request("https://music.163.com/weapi/v1/cloud/get","POST",{crypto:"weapi",data:{limit:String(e),offset:"0"},cookies:[{name:"os",value:"pc"}]})).data||[]}async getSongLink(e){let t=await this.request("https://music.163.com/api/song/enhance/player/url","POST",{crypto:"linuxapi",data:{ids:"["+e+"]",br:"999000"},cookies:[{name:"os",value:"pc"}]});if(!t.data||t.data.length<1)throw new Error("[NeteaseMusic] song url not found");return t.data[0].url||""}async removeSong(e){await this.request("http://music.163.com/weapi/cloud/del","POST",{crypto:"weapi",data:{songIds:"["+e+"]"}})}}});function R3(r){return{name:r.fileName,size:r.fileSize,is_dir:!1,modified:r.addTime?new Date(r.addTime).toISOString():new Date().toISOString(),sign:String(r.songId),type:X(r.fileName,!1),thumb:r.simpleSong?.al?.picUrl||"",raw_url:""}}var pg,N3=j(()=>{"use strict";Be();U3();pg=class{client;songLimit;constructor(e){this.client=new gg(e),this.songLimit=e.song_limit||200}async init(){this.client.init()}async list(){return(await this.client.getSongObjs(this.songLimit)).map(t=>R3(t))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"";if(!n)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=(await this.client.getSongObjs(this.songLimit)).find(a=>a.fileName===n);if(o){let a=R3(o);try{a.raw_url=await this.client.getSongLink(a.sign)}catch{a.raw_url_error="[NeteaseMusic] failed to resolve song url"}return a}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(){throw new Error("[NeteaseMusic] mkdir not supported")}async rename(){throw new Error("[NeteaseMusic] rename not supported")}async remove(e,t,i){let n=t.split("/").filter(Boolean),s=n[n.length-1],a=(await this.client.getSongObjs(this.songLimit)).find(c=>c.fileName===s);if(!a)throw new Error(`[NeteaseMusic] '${s}' not found`);await this.client.removeSong(String(a.songId))}async move(){throw new Error("[NeteaseMusic] move not supported")}async copy(){throw new Error("[NeteaseMusic] copy not supported")}async put(){throw new Error("[NeteaseMusic] upload not supported in stateless environment")}}});function Ho(r){return new TextEncoder().encode(r)}function K3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function M3(r){let e=typeof r=="string"?Ho(r):r,t=await crypto.subtle.digest("SHA-256",e);return K3(new Uint8Array(t))}async function mg(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,r);return new Uint8Array(i)}function L3(r){return encodeURIComponent(r).replace(/%20/g,"%20").replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}async function H3(r){let e=r.now??new Date,t=e.toISOString().slice(0,10),i=e.toISOString(),n=(BigInt(Math.floor(e.getTime()))*1000000n+BigInt(Math.floor(Math.random()*1e6))).toString(36),s=r.bodyRaw.length>0,o={host:r.apiHost,"x-hl-nonce":n,"x-hl-timestamp":i},a=[];s&&(o["content-type"]="application/json; charset=utf-8",a.push("content-type"));let c=[...a].sort(),l=c.map(R=>`${R}:${o[R]} -`).join(""),d=c.join(";"),u="";r.query&&Object.keys(r.query).length>0&&(u=Object.keys(r.query).sort().map(U=>`${L3(U)}=${L3(r.query[U]??"")}`).join("&"));let f=await M3(r.bodyRaw),h=[r.method,r.apiPath,u,l,d,f].join(` -`),g=`${t}/${r.accessToken}/${O3}`,p=[q3,i,g,await M3(h)].join(` -`),I=Ho(hG+r.secretKey),y=await mg(Ho(t),I),w=await mg(Ho(r.accessToken),y),C=await mg(Ho(O3),w),b=K3(await mg(Ho(p),C)),x=`${q3} Credential=${r.secretId}/${g}, SignedHeaders=${d}, Signature=${b}`;o.authorization=x;let _=`https://${r.apiHost}${r.apiPath}${u?"?"+u:""}`;return{headers:o,url:_}}function gG(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var q3,hG,O3,yg,G3=j(()=>{"use strict";q3="HL6-HMAC-SHA256",hG="HL6",O3="hl6_request";yg=class{addition;accessToken="";host;persistRefreshToken;constructor(e,t){this.addition=e,this.host=e.host||"openapi.2dland.cn",this.persistRefreshToken=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[HalalCloud] client_id and client_secret are required");if(!this.addition.refresh_token)throw new Error("[HalalCloud] refresh_token \u4E3A\u7A7A\uFF1A\u8BF7\u4ECE HalalCloud \u5B98\u65B9\u83B7\u53D6 refresh_token");await this.refreshToken()}async refreshToken(){let e={refresh_token:this.addition.refresh_token,grant_type:"refresh_token",client_id:this.addition.client_id},t=Ho(JSON.stringify(e)),i=await H3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:"/v6/oauth/refresh_token",bodyRaw:t}),s=await(await fetch(i.url,{method:"POST",headers:i.headers,body:t})).json().catch(()=>({}));if(!s.access_token)throw new Error("[HalalCloud] refresh token failed");this.accessToken=s.access_token,s.refresh_token&&(this.addition.refresh_token=s.refresh_token,this.persistRefreshToken&&await this.persistRefreshToken(s.refresh_token))}async request(e,t,i=!1){let n=t!==void 0?Ho(JSON.stringify(t)):new Uint8Array(0),s=await H3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:e,bodyRaw:n}),o=await fetch(s.url,{method:"POST",headers:s.headers,body:n.length>0?n:void 0});if(o.status===401&&!i)return await this.refreshToken(),this.request(e,t,!0);let a=await o.text(),c;try{c=JSON.parse(a)}catch{c={}}if(o.status>=300)throw new Error(`[HalalCloud] API error: ${c.message||c.msg||`HTTP ${o.status}`}`);return c}async listFiles(e){let t=[],i="";for(;;){let n={parent:{path:e},list_info:{limit:100,token:i}},s=await this.request("/v6/userfile/list",n),o=s.files||[];if(t.push(...o),i=s.list_info?.token||"",!i||o.length===0)break}return t}async getFile(e){let t=await this.request("/v6/userfile/get",{path:e});return t.identity?t:null}async createDir(e,t){let i=gG(e,t);await this.request("/v6/userfile/create",{parent:e,path:i,name:t,dir:!0})}async rename(e,t){await this.request("/v6/userfile/rename",{path:e,name:t})}async move(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/move",n)}async copy(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/copy",n)}async remove(e,t,i){let n={source:[{path:e,identity:t,dir:i}]};await this.request("/v6/userfile/delete",n)}async getDownloadUrl(e,t){let i=await this.request("/v6/userfile/get_direct_download_address",{path:e,identity:t});if(!i.download_address)throw new Error("[HalalCloud] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return i.download_address}}});function wC(r){return typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):0}function z3(r){let e=r.dir===!0,t=wC(r.update_ts),i=wC(r.create_ts),n=t||i;return{name:r.name||"",size:e?0:wC(r.size),is_dir:e,modified:n?new Date(n*1e3).toISOString():new Date().toISOString(),sign:r.identity||r.path||"",type:X(r.name||"",e),raw_url:""}}function J3(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}function j3(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var Ig,$3=j(()=>{"use strict";Be();G3();Ig=class{client;rootPath;constructor(e,t){this.client=new yg(e,t),this.rootPath=J3(e.root_folder_id||"/")}async init(){await this.client.init()}fullPath(e){let t=J3(e);return this.rootPath==="/"?t:t==="/"?this.rootPath:this.rootPath+t}async list(e,t){return(await this.client.listFiles(this.fullPath(t))).map(z3)}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=z3(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.path||i,c.identity||"")}catch{l.raw_url_error="[HalalCloud] failed to resolve download url"}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let n=this.fullPath(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.createDir(o==="//"?"/":o,s)}async rename(e,t,i){let n=this.fullPath(t);await this.client.rename(n,i)}async remove(e,t,i){let n=this.fullPath(t),s=await this.resolveEntry(n);await this.client.remove(s.path,s.identity,s.isDir)}async move(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.move(c.path,j3(a,l),c.identity)}async copy(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.copy(c.path,j3(a,l),c.identity)}async put(){throw new Error("[HalalCloud] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),o=(await this.client.listFiles(n==="//"?"/":n)).find(a=>a.name===i);if(!o)throw new Error(`[HalalCloud] '${i}' not found`);return{path:o.path||e,identity:o.identity||"",isDir:o.dir===!0}}}});function yG(r){let e=(r||"").trim();if(!e)return"";if(/^Bearer\s+/i.test(e))return e.replace(/^Bearer\s+/i,"").trim();if(/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(e))return e;let t={};for(let n of e.split(";")){let s=n.indexOf("=");if(s<0)continue;let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&(t[o]=a)}let i=n=>{let s=t[n]||"";return/^Bearer\s+/i.test(s)?s.replace(/^Bearer\s+/i,"").trim():s};return i("sso-token")||i("token")||i("authorization")||""}function V3(r){let e=4294967295;for(let t=0;t>>8;return(e^4294967295)>>>0}function FG(r){let e=Math.round(1e7*Math.random()).toString(),t=new Date,n=Math.round((t.getTime()+8*36e5)/1e3).toString(),s=t.getUTCFullYear(),o=String(t.getUTCMonth()+1).padStart(2,"0"),a=String(t.getUTCDate()).padStart(2,"0"),c=String(t.getUTCHours()+8).padStart(2,"0"),l=String(t.getUTCMinutes()).padStart(2,"0"),u=`${s}${o}${a}${c}${l}`.split("").map(p=>_G[parseInt(p)]).join(""),f=(V3(u)>>>0).toString(),h=[n,e,r,"web","3",f].join("|"),g=(V3(h)>>>0).toString();return`${f}=${n}-${e}-${g}`}function PG(r){let e=r.indexOf("?"),t=e>=0?r.substring(0,e):r,i=e>=0?r.substring(e+1):"",n=new URL(r),s=FG(n.pathname);return`${t}?${i}${i?"&":""}${s}`}var En,pG,mG,IG,wG,xG,CG,EG,BG,bG,vG,kG,SG,DG,QG,_G,wg,Y3=j(()=>{"use strict";En="https://yun.123pan.com/b/api",pG="https://login.123pan.com/api",mG=pG+"/user/sign_in";IG=En+"/user/info",wG=En+"/file/list/new",xG=En+"/file/download_info",CG=En+"/file/upload_request",EG=En+"/file/mod_pid",BG=En+"/file/rename",bG=En+"/file/trash",vG=En+"/file/upload_request",kG=En+"/file/s3_upload_object/auth",SG=En+"/file/s3_repare_upload_parts_batch",DG=En+"/file/upload_complete/v2",QG=(()=>{let r=new Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();_G=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"];wg=class{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=e,this.onTokenUpdate=t}getRootId(){return(this.addition.root_id||"0").trim()||"0"}async login(){if(this.addition.access_token){this.accessToken=this.addition.access_token;try{await this.userInfo(!0);return}catch{this.accessToken=""}}if(this.addition.cookie){let e=yG(this.addition.cookie);if(e){this.accessToken=e;try{await this.userInfo(!0),this.addition.access_token=e,this.onTokenUpdate?.(e);return}catch{this.accessToken=""}}}if(!this.addition.username||!this.addition.password)throw new Error("123 \u7F51\u76D8\u767B\u5F55\u51ED\u8BC1\u7F3A\u5931\uFF1A\u8BF7\u586B\u5199 123 \u7F51\u76D8\u624B\u673A\u53F7 + \u5BC6\u7801\uFF1B\u82E5\u90E8\u7F72\u73AF\u5883\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\uFF0C\u53EF\u5728\u300CCookie\u300D\u5B57\u6BB5\u7C98\u8D34\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u7684 Cookie\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u586B\u5199\u6709\u6548\u7684\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/ \u540E\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u83B7\u53D6\uFF09\u3002");await this.signIn()}async signIn(){let t=/@/.test(this.addition.username)?{mail:this.addition.username,password:this.addition.password,type:2}:{passport:this.addition.username,password:this.addition.password,remember:!0},n=await(await fetch(mG,{method:"POST",headers:{"Content-Type":"application/json",origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"},body:JSON.stringify(t)})).json();if(n.code!==200)throw new Error(`123 \u7F51\u76D8\u767B\u5F55\u5931\u8D25\uFF08${n.message||`code ${n.code}`}\uFF09\u3002\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP \u88AB 123 \u5224\u5B9A\u4E3A\u5883\u5916/\u964C\u751F\u8BBE\u5907\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\uFF0C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\u62E6\u622A\u3002\u53EF\u9760\u65B9\u6848\uFF1A\u2460 \u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/\uFF08\u767B\u5F55\u4E00\u6B21\u6216\u4FEE\u6539\u5BC6\u7801\u53EF\u89E3\u9664\u8D26\u53F7\u98CE\u9669\uFF09\uFF0C\u6253\u5F00\u5F00\u53D1\u8005\u5DE5\u5177 \u2192 Application/Network \u2192 \u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Bearer \u4EE4\u724C\uFF0C\u586B\u5165\u5B58\u50A8\u8BBE\u7F6E\u7684 access_token \u5B57\u6BB5\uFF08\u4EE4\u724C\u6709\u6548\u671F\u5185 API \u8BF7\u6C42\u4E0D\u53D7 IP \u98CE\u63A7\u5F71\u54CD\uFF09\uFF1B\u2461 \u6216\u5C06\u8BE5\u7F51\u76D8\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08Node \u5BB9\u5668\u6A21\u5F0F\uFF09\u540E\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u3002`);if(this.accessToken=n.data?.token||"",!this.accessToken)throw new Error("login returned empty token");this.addition.access_token=this.accessToken,this.onTokenUpdate?.(this.accessToken)}async request(e,t,i,n,s=!1){let o=async()=>{let l=PG(e),d={origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/",authorization:this.accessToken?`Bearer ${this.accessToken}`:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:this.addition.platform||"web","app-version":"3",Accept:"application/json"},u={method:t,headers:d};return i!==void 0&&t!=="GET"&&(d["Content-Type"]="application/json",u.body=JSON.stringify(i)),(await fetch(l,u)).json()},a=await o(),c=a?.code;if(c!==0&&c!==200){if(c===401&&!s){await this.login(),a=await o();let l=a?.code;if(l!==0&&l!==200)throw new Error(a?.message||`api error: code ${l}`);return a}throw new Error(a?.message||`api error: code ${c}`)}return a}async userInfo(e=!1){return(await this.request(IG,"GET",void 0,void 0,e)).data}async getFiles(e,t){let i=[],n=1,s="0",o=t?.maxPages??45;for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn(`[123Pan] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${t.budget.limit} \u6B21)\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\u6216\u8DEF\u5F84\u8FC7\u6DF1\uFF09`);break}t.budget.used++}if(n>o){console.warn(`[123Pan] \u5206\u9875\u8D85\u8FC7 ${o} \u9875\uFF0C\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\uFF09`);break}let a=new URLSearchParams({driveId:"0",limit:"100",next:s,orderBy:this.addition.order_by||"file_id",orderDirection:this.addition.order_direction||"desc",parentFileId:e,trashed:"false",SearchData:"",Page:String(n),OnlyLookAbnormalFile:"0",event:"homeListFile",operateType:"4",inDirectSpace:"false"}),c=`${wG}?${a.toString()}`,l=await this.request(c,"GET"),d=l.data?.InfoList||[];if(i.push(...d),t?.findName){let f=d.find(h=>h.FileName===t.findName&&(t.findIsDir===void 0||h.Type===1===t.findIsDir));if(f)return[f]}let u=String(l.data?.Next??"-1");if(!l.data||d.length===0||u==="-1")break;s=u,n++}return i}async getDownloadLink(e){let t={driveId:0,etag:e.Etag,fileId:e.FileId,fileName:e.FileName,s3keyFlag:e.S3KeyFlag,size:e.Size,type:e.Type},n=(await this.request(xG,"POST",t)).data?.DownloadUrl||"";if(!n)throw new Error("no download url");try{let a=new URL(n).searchParams.get("params");if(a){let c=atob(a);n=new URL(c).toString()}}catch{}let s=await fetch(n,{method:"GET",redirect:"manual",headers:{Referer:"https://yun.123pan.com/"}});return s.status===302?s.headers.get("location")||n:s.status<300&&(await s.json().catch(()=>({}))).data?.redirect_url||n}async mkdir(e,t){let i=await this.request(CG,"POST",{driveId:0,etag:"",fileName:t,parentFileId:parseInt(e,10)||0,size:0,type:1});return i.data?.FileId!=null?String(i.data.FileId):""}async rename(e,t){await this.request(BG,"POST",{driveId:0,fileId:parseInt(e,10),fileName:t})}async move(e,t){await this.request(EG,"POST",{fileIdList:e.map(i=>({FileId:parseInt(i,10)})),parentFileId:parseInt(t,10)})}async remove(e,t){await this.request(bG,"POST",{driveId:0,operation:!0,fileTrashInfoList:[t]})}async getPartUploadUrl(e,t,i){let s=(i===1?await this.getS3Auth(e,t,t+1):await this.getS3PreSignedUrls(e,t,t+1)).presignedUrls[String(t)];if(!s)throw new Error(`[123Pan] \u672A\u8FD4\u56DE\u7B2C ${t} \u5206\u7247\u7684\u4E0A\u4F20 URL`);return s}async completeUpload(e,t,i){await this.completeS3(e,t,i)}async createUpload(e,t,i,n){let s={driveId:0,duplicate:2,etag:n,fileName:e,parentFileId:t,size:i,type:0};return(await this.request(vG,"POST",s)).data}async getS3Auth(e,t,i){let n={StorageNode:e.StorageNode,bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId};return(await this.request(kG,"POST",n)).data}async getS3PreSignedUrls(e,t,i){let n={bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId,StorageNode:e.StorageNode};return(await this.request(SG,"POST",n)).data}async completeS3(e,t,i){await this.request(DG,"POST",{StorageNode:e.StorageNode,bucket:e.Bucket,fileId:e.FileId,fileSize:t,isMultipart:i,key:e.Key,uploadId:e.UploadId})}async uploadFile(e,t,i){let n="";try{n=(await import("node:crypto")).createHash("md5").update(i).digest("hex")}catch{n=""}let s=await this.createUpload(t,e,i.length,n);if(s.Reuse||s.Key==="")return;let o=16*1024*1024,a=1;i.length>o&&(a=Math.ceil(i.length/o));let c=i.length%o;c===0&&(c=o);let l;a===1?l=(await this.getS3Auth(s,1,2)).presignedUrls:l=(await this.getS3PreSignedUrls(s,1,a+1)).presignedUrls;for(let d=1;d<=a;d++){let u=(d-1)*o,f=d===a?c:o,h=l[String(d)];if(!h)throw new Error(`[123Pan] \u7F3A\u5C11\u7B2C ${d} \u5206\u7247\u7684\u4E0A\u4F20 URL`);let g=i.subarray(u,u+f),p=await fetch(h,{method:"PUT",body:g});if(p.status!==200){let I=await p.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${d}/${a} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${p.status} ${I}`)}}await this.completeS3(s,i.length,a>1)}}});function TG(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function W3(r){let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.bucket||!e.key||!e.uploadId)throw new Error("[123Pan] invalid upload session");return e}function X3(r){return{AccessKeyId:"",SecretAccessKey:"",SessionToken:"",Bucket:r.bucket,Key:r.key,UploadId:r.uploadId,FileId:r.fileId,StorageNode:r.storageNode,EndPoint:"",Reuse:!1}}function Z3(r){let e=r.Type===1;return{name:r.FileName,size:r.Size||0,is_dir:e,modified:r.UpdateAt?new Date(r.UpdateAt).toISOString():new Date().toISOString(),sign:String(r.FileId),type:X(r.FileName,e),thumb:"",raw_url:""}}var xg,eQ=j(()=>{"use strict";Be();He();Y3();xg=class{client;addition;pathIdCache=new Map;budget={used:0,limit:45};constructor(e,t){this.addition=e,this.client=new wg(e,t)}async init(){await this.client.login()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c{try{return decodeURIComponent(l)}catch{return l}})(),f=(await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget})).find(h=>h.Type===1&&(h.FileName===l||h.FileName===d||String(h.FileId)===l||String(h.FileId)===d));if(!f)throw new Error(`folder not found: ${l}`);o=String(f.FileId),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async ensureFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=t,o="";for(let a=0;a{try{return decodeURIComponent(c)}catch{return c}})();o="/"+n.slice(0,a+1).join("/");let d=this.pathIdCache.get(o);if(d===void 0){let u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&(h.FileName===c||h.FileName===l));if(f)d=String(f.FileId);else{try{let h=await this.client.mkdir(s,l);h&&(d=h)}catch{}if(d===void 0){if(u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&h.FileName===l),!f)throw new Error(`[123Pan] \u81EA\u52A8\u521B\u5EFA\u76EE\u5F55\u5931\u8D25: ${c}`);d=String(f.FileId)}}this.pathIdCache.set(o,d)}s=d}return s}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("invalid path");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),c=(await this.client.getFiles(o,{findName:n,budget:this.budget})).find(l=>String(l.FileId)===i||String(l.FileId)===n||l.FileName===i||l.FileName===n);if(!c)throw new Error(`file not found: ${i}`);return{file:c,parentId:o,name:i}}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),s=(await this.client.getFiles(i,{budget:this.budget})).map(Z3);return de(s,this.addition.order_by||"file_name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let o=this.client.getRootId();return{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}let{file:n}=await this.resolveFile(t),s=Z3(n);if(n.Type!==1)try{s.raw_url=await this.client.getDownloadLink(n),s.raw_url||(s.raw_url_error="123 \u7F51\u76D8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08DownloadUrl \u4E3A\u7A7A\uFF09\u3002\u5E38\u89C1\u539F\u56E0\uFF1Aaccess_token/cookie \u5931\u6548\uFF0C\u6216\u8BE5\u6587\u4EF6\u5DF2\u5220\u9664/\u88AB\u9650\u5236\u4E0B\u8F7D\u3002\u8BF7\u5230\u7BA1\u7406\u540E\u53F0\u66F4\u65B0 access_token \u540E\u91CD\u8BD5\u3002")}catch(o){s.raw_url_error=`123 \u7F51\u76D8\u83B7\u53D6\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25\uFF1A${o?.message||String(o)}\u3002`+(String(o?.message||"").includes("\u767B\u5F55\u5931\u8D25")?"\u5F53\u524D\u90E8\u7F72\u51FA\u53E3 IP \u53EF\u80FD\u88AB 123 \u98CE\u63A7\uFF0C\u8BF7\u914D\u7F6E\u6709\u6548\u7684 access_token\uFF08\u6D4F\u89C8\u5668\u767B\u5F55 123 \u7F51\u76D8\u540E\u590D\u5236 Bearer \u4EE4\u724C\uFF09\u3002":"\u8BF7\u68C0\u67E5 access_token/cookie \u662F\u5426\u6709\u6548\uFF0C\u6216\u5728 123 \u7F51\u76D8\u7F51\u9875\u7AEF\u786E\u8BA4\u8BE5\u6587\u4EF6\u53EF\u4E0B\u8F7D\u3002"),console.warn(`[123Pan] getDownloadLink warning for ${n.FileName}:`,o.message)}else s.raw_url_error="\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002";return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.rename(String(n.FileId),i)}async remove(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.remove(String(n.FileId),n)}async move(e,t,i,n,s){this.budget.used=0;let{file:o}=await this.resolveFile(n),a=String(t).split("/").filter(Boolean),c=await this.resolveFolderId("/"+a.join("/"));await this.client.move([String(o.FileId)],c)}async copy(){throw new Error("[123Pan] Copy is not supported by 123 Cloud Drive API")}async put(e,t,i){this.budget.used=0;let n=String(t||"").split("/").filter(Boolean);if(n.length===0)throw new Error("invalid upload path");let s=n[n.length-1],o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+n.slice(0,n.length-1).join("/"),c=await this.ensureFolderId(a);await this.client.uploadFile(c,o,i)}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.ensureFolderId(t||"/"),a=await this.client.createUpload(i,o,n,s||""),c=16*1024*1024;if(a.Reuse||a.Key==="")return{reuse:!0,partCount:0,chunkSize:c,session:""};let l=Math.max(1,Math.ceil(n/c)),d=TG({bucket:a.Bucket,key:a.Key,uploadId:a.UploadId,fileId:a.FileId,storageNode:a.StorageNode,size:n,partCount:l,chunkSize:c});return{reuse:!1,partCount:l,chunkSize:c,session:d}}async uploadPart(e,t,i){this.budget.used=0;let n=W3(e),s=await this.client.getPartUploadUrl(X3(n),t,n.partCount),o=await fetch(s,{method:"PUT",body:i});if(o.status!==200){let a=await o.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${o.status} ${a}`)}}async completeUploadSession(e){this.budget.used=0;let t=W3(e);await this.client.completeUpload(X3(t),t.size,t.partCount>1)}}});function OG(r){return new Promise(e=>setTimeout(e,r))}function BC(r){if(!r)return r;try{let e=new URL(r);return e.searchParams.delete("access_token"),e.toString()}catch{return r}}function Pl(r){let e={...r||{}},t=(i,n)=>i==null||i===""?n:typeof i=="boolean"?i:String(i).toLowerCase()==="true";return e.use_online_api=t(e.use_online_api,!0),e.api_url_address=e.api_url_address||"https://api.oplist.org/baiduyun/renewapi",e.download_api=e.download_api||"official",e.custom_crack_ua=e.custom_crack_ua||"netdisk",e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"3",e.upload_api=e.upload_api||_l,e.use_dynamic_upload_api=t(e.use_dynamic_upload_api,!0),e.custom_upload_part_size=e.custom_upload_part_size||0,e.low_bandwith_upload_mode=t(e.low_bandwith_upload_mode,!1),e.only_list_video_file=t(e.only_list_video_file,!1),e}function rQ(r,e,t){r.local_mtime=String(t),r.local_ctime=String(e)}var UG,tQ,Ql,xC,CC,EC,RG,_l,NG,Hu,bC,iQ,qG,Cg,Fl,vC=j(()=>{"use strict";UG="https://openapi.baidu.com/oauth/2.0/token",tQ="https://pan.baidu.com/rest/2.0",Ql=4*1024*1024,xC=16*1024*1024,CC=32*1024*1024,EC=2048,RG=1*1024*1024,_l="https://d.pcs.baidu.com",NG=60*1e3,Hu=3,bC=1e3,iQ=5e3,qG=new Set([111,-6,20016]);Cg=class r{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=Pl(e),this.onTokenUpdate=t,this.addition.access_token&&(this.accessToken=this.addition.access_token)}static apiUA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30";async refreshToken(){let e=this.addition;if(e.use_online_api&&e.api_url_address){let s=new URL(e.api_url_address);s.searchParams.set("refresh_ui",e.refresh_token),s.searchParams.set("server_use","true"),s.searchParams.set("driver_txt","baiduyun_go");let o=await fetch(s.toString(),{headers:{"User-Agent":r.apiUA}}),a,c=await o.text();try{a=JSON.parse(c)}catch{throw new Error(`\u5728\u7EBF API \u5237\u65B0\u5931\u8D25 (HTTP ${o.status})\uFF1A${c.slice(0,300)||"\u975E JSON \u54CD\u5E94"}\u3002\u8BF7\u786E\u8BA4 refresh_token \u662F\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u7684\u6709\u6548\u4EE4\u724C\u3002`)}if(!a.refresh_token||!a.access_token)throw new Error(a.text||(o.status!==200?`\u5728\u7EBF API \u8FD4\u56DE HTTP ${o.status}`:"empty token returned from official API, a wrong refresh token may have been used"));this.accessToken=a.access_token,e.refresh_token=a.refresh_token,e.access_token=a.access_token,this.onTokenUpdate?.({access_token:a.access_token,refresh_token:a.refresh_token});return}if(!e.client_id||!e.client_secret)throw new Error("empty ClientID or ClientSecret");let t=new URL(UG);t.searchParams.set("grant_type","refresh_token"),t.searchParams.set("refresh_token",e.refresh_token),t.searchParams.set("client_id",e.client_id),t.searchParams.set("client_secret",e.client_secret);let n=await(await fetch(t.toString())).json();if(n.error)throw new Error(`${n.error}: ${n.error_description||""}`);if(!n.refresh_token)throw new Error("empty refresh token returned from OAuth");this.accessToken=n.access_token||"",e.refresh_token=n.refresh_token,e.access_token=n.access_token||"",this.onTokenUpdate?.({access_token:n.access_token||"",refresh_token:n.refresh_token})}async login(){this.accessToken||await this.refreshToken()}async ensureToken(){this.accessToken||await this.refreshToken()}async request(e,t,i,n){await this.ensureToken();let s=async()=>{let a=new URL(e);a.searchParams.set("access_token",this.accessToken);for(let[g,p]of Object.entries(i||{}))a.searchParams.set(g,p);let c={"User-Agent":r.apiUA,Accept:"application/json"},l={method:t,headers:c};if(n&&t==="POST"){let g=new URLSearchParams;for(let[p,I]of Object.entries(n))g.set(p,I);c["Content-Type"]="application/x-www-form-urlencoded",l.body=g.toString()}let d=await fetch(a.toString(),l),u=await d.text(),f;try{f=JSON.parse(u)}catch{throw new Error(`req: [${e}] invalid JSON response, status ${d.status}`)}let h=typeof f.errno=="number"?f.errno:0;if(h!==0){if(qG.has(h)&&await this.refreshToken(),h===31023&&this.addition.download_api==="crack_video")return f;let g=`req: [${e}] ,errno: ${h}, refer to https://pan.baidu.com/union/doc/`;throw h===31023?new Error(`${g} \u767E\u5EA6\u7F51\u76D8\u98CE\u63A7 (Trigger security policy: Please try again later) \u2014 \u89E6\u53D1\u539F\u56E0\u901A\u5E38\u662F\uFF1A\u2460 \u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u88AB\u767E\u5EA6\u5B89\u5168\u7B56\u7565\u62E6\u622A\uFF1B\u2461 refresh_token \u65E0\u6548\u6216\u4ECE\u975E\u5B98\u65B9\u6E20\u9053\u83B7\u53D6\uFF0C\u5BFC\u81F4\u8D26\u53F7\u88AB\u98CE\u63A7\u3002\u8BF7\u786E\u8BA4\uFF1Arefresh_token \u5FC5\u987B\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\uFF08\u672C\u9A71\u52A8\u9ED8\u8BA4\u5DF2\u5F00\u542F"\u4F7F\u7528\u5728\u7EBF API"\uFF09\uFF1B\u98CE\u63A7\u4E3A\u4E34\u65F6\u6027\uFF0C\u7B49\u5F85\u6570\u5206\u949F\u81F3\u6570\u5C0F\u65F6\u540E\u81EA\u52A8\u89E3\u9664\uFF1B\u957F\u671F\u4F7F\u7528\u8BF7\u5C06\u540E\u7AEF\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08\u6216\u914D\u7F6E HTTPS_PROXY \u5883\u5185\u4EE3\u7406\uFF09\u3002`):new Error(g)}return f},o;for(let a=0;ac.abort(),s>0?s:NG);try{let u=await(await fetch(o.toString(),{method:"POST",body:a,signal:c.signal})).text(),f=u.toLowerCase();if(f.includes("uploadid")&&(f.includes("invalid")||f.includes("expired")||f.includes("not found")))throw new Fl;let h;try{h=JSON.parse(u)}catch{h={}}let g=h?.error_code??0,p=h?.errno??0;if(g!==0||p!==0)throw new Error(`error uploading to baidu, response=${u}`)}finally{clearTimeout(l)}}getUploadUrl(e,t){let i=this.addition;return!i.use_dynamic_upload_api||!t,i.upload_api||_l}async requestForUploadUrl(e,t){let i=await this.request("https://d.pcs.baidu.com/rest/2.0/pcs/file","GET",{method:"locateupload",appid:"250528",path:e,uploadid:t,upload_version:"2.0"}),n="";if(i.servers&&i.servers.length>0?n=i.servers[0].server:i.bak_servers&&i.bak_servers.length>0&&(n=i.bak_servers[0].server),!n)throw new Error("upload URL is empty");return n}getSliceSize(e,t){let i=this.addition,n=i.custom_upload_part_size||0;if(t===0)return n!==0&&console.warn("[baidu_netdisk] CustomUploadPartSize is not supported for non-vip user, use DefaultSliceSize"),e>EC*Ql&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),Ql;if(n!==0)return nxC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than VipSliceSize, use VipSliceSize`),xC):t===2&&n>CC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than SVipSliceSize, use SVipSliceSize`),CC):n;let s=Ql;if(t===1&&(s=xC),t===2&&(s=CC),i.low_bandwith_upload_mode){let o=Ql;for(;o<=s;){if(e<=EC*o)return o;o+=RG}}return e>EC*s&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),s}async quota(){let e=await this.request("https://pan.baidu.com/api/quota","GET");return{total:e.total||0,used:e.used||0}}},Fl=class extends Error{constructor(){super("uploadid expired"),this.name="ErrUploadIDExpired"}}});function LG(r){return new Promise(e=>setTimeout(e,r))}function nQ(r){let e=r.server_filename||Ku(r.path),t=r.server_ctime||r.ctime||0,i=r.server_mtime||r.mtime||0,n=r.isdir===1;return{name:e,size:r.size||0,is_dir:n,created:t?new Date(t*1e3).toISOString():void 0,modified:i?new Date(i*1e3).toISOString():new Date().toISOString(),sign:String(r.fs_id),type:X(e,n),thumb:r.thumbs?.url3||"",raw_url:""}}function Ku(r){let e=String(r||"").split("/");return e[e.length-1]||""}function sQ(r){let e=r.lastIndexOf("/");return e<=0?"/":r.slice(0,e)}var MG,Eg,oQ=j(()=>{"use strict";Be();He();si();vC();vC();MG=new Error("empty files are not allowed by baidu netdisk");Eg=class{client;addition;uploadThread=3;vipType=0;pathCache=new Map;constructor(e,t){this.addition=Pl(e),this.client=new Cg(this.addition,t)}async init(){let e=this.addition,t=parseInt(e.upload_thread||"3",10);if(t<1&&(t=1),t>32&&(t=32),this.uploadThread=t,!this.client.accessToken)throw new Error("\u767E\u5EA6\u7F51\u76D8\u7F3A\u5C11\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5FC5\u586B\uFF09\uFF1A\u8BF7\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u540E\u586B\u5199\u3002");this.vipType=await this.client.uinfo()}baiduPath(e){let t="/"+String(e||"").replace(/\/+/g,"/");return t==="/"?"/":t.replace(/\/$/,"")}async list(e,t){let i=await this.client.getFiles(this.baiduPath(t)),n=i.map(nQ);for(let s of i)this.pathCache.set(s.path,{fsId:s.fs_id,parent:sQ(s.path)});return de(n,this.addition.order_by||"name",this.addition.order_direction)}async get(e,t){let i=this.baiduPath(t);if(i==="/")return{name:"/",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let n=sQ(i),s=Ku(i),o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),c=(await this.client.getFiles(n)).find(d=>d.server_filename===s||d.server_filename===o||d.path===i||String(d.fs_id)===s);if(!c)throw new Error(`file not found: ${s}`);this.pathCache.set(c.path,{fsId:c.fs_id,parent:n});let l=nQ(c);if(c.isdir!==1)try{let d=await this.getDownloadLink(c);l.raw_url=d.url,l.raw_url_headers=d.headers}catch(d){console.warn(`[baidu_netdisk] getDownloadLink warning for ${c.server_filename}:`,d.message)}return l}async getDownloadLink(e){let t=this.addition.download_api||"official";return t==="crack"?this.client.getCrackLink(e.path):t==="crack_video"?this.client.getCrackVideoLink(e.path,e.fs_id):this.client.getOfficialLink(e.fs_id)}async mkdir(e,t){await this.client.create(this.baiduPath(t),0,1,"","",0,0)}async rename(e,t,i){await this.client.manage("rename",[{path:this.baiduPath(t),newname:i}])}async remove(e,t,i){await this.client.manage("delete",[this.baiduPath(t)])}async move(e,t,i,n,s){let o=i[0]||Ku(n),a=this.baiduPath(t);await this.client.manage("move",[{path:this.baiduPath(n),dest:a,newname:o}])}async copy(e,t,i,n,s){let o=i[0]||Ku(n),a=this.baiduPath(t);await this.client.manage("copy",[{path:this.baiduPath(n),dest:a,newname:o}])}async put(e,t,i){if(i.length<1)throw MG;let n=i.length,s=this.baiduPath(t),o=Ku(s),a=Math.floor(Date.now()/1e3),c=a,l=a,d=$t(i),u=JSON.stringify([d]);try{await this.client.create(s,n,0,"",u,c,l);return}catch{}let f=this.client.getSliceSize(n,this.vipType),h=Math.max(1,Math.ceil(n/f)),g=n%f||f,p=[];for(let w=0;w{for(;;){let T=_++;if(T>=b.length)return;let D=b[T];if(D<0)continue;let B=D*f,Q=D+1===h?g:f,v=i.subarray(B,B+Q),E={method:"upload",access_token:this.client.accessToken,type:"tmpfile",path:s,uploadid:y.uploadid,partseq:String(D)},P=!1;for(let N=0;NU())),x)throw new Error("upload slice failed")}catch(T){if(T instanceof Fl){let D=await this.client.precreate(s,n,I,"","",l,c);if(D.return_type===2&&D.info)return;y=D;continue}throw T}await this.client.create(s,n,0,y.uploadid,I,c,l);return}throw new Error("upload failed after retries")}}}});function zG(){let r=Math.floor(Date.now()/1e3),e=Math.floor(9e6*Math.random()+1e6);return`3${r}${e}`}function aQ(r){return"["+r.map(e=>`{"fsid":${e}}`).join(",")+"]"}var vg,Yi,Bg,HG,KG,kC,Gu,GG,bg,cQ=j(()=>{"use strict";si();vg="https://photo.baidu.com/youai",Yi=vg+"/album/v1",Bg=vg+"/file/v1",HG=vg+"/file/v2",KG=vg+"/user/v1",kC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Gu=4*1024*1024,GG=256*1024;bg=class{cookie;uk="";bdstoken="";showType;constructor(e){this.cookie=e.cookie||"",this.showType=e.show_type||"root"}async init(){if(!this.cookie)throw new Error("[BaiduPhoto] cookie is required");let e=await this.uInfo();this.uk=e.youa_id||"",this.bdstoken=await this.getBDStoken()}async request(e,t,i={}){let n=new URL(t);if(i.query)for(let[c,l]of Object.entries(i.query))l!==void 0&&n.searchParams.set(c,l);let s={Cookie:this.cookie,"User-Agent":kC,Referer:"https://photo.baidu.com/"},o;return i.form&&(s["Content-Type"]="application/x-www-form-urlencoded",o=new URLSearchParams(i.form).toString()),await fetch(n.toString(),{method:e,headers:s,body:o,redirect:i.redirect??"follow"})}async requestJson(e,t,i={}){let s=await(await this.request(e,t,i)).json().catch(()=>({})),o=s.errno;if(o!==void 0&&o!==0)throw new Error(`[BaiduPhoto] errno: ${o}, refer to https://photo.baidu.com/union/doc`);return s}async uInfo(){return this.requestJson(KG+"/getuinfo","GET")}async getBDStoken(){return(await this.requestJson("GET","https://pan.baidu.com/api/gettemplatevariable",{query:{fields:'["bdstoken","token","uk"]'}}))?.result?.bdstoken||""}async getAllFile(){let e=[],t="";for(;;){let i=await this.requestJson("GET",Bg+"/list",{query:{need_thumbnail:"1",need_filter_hidden:"0",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbum(){let e=[],t="";for(;;){let i=await this.requestJson("GET",Yi+"/list",{query:{need_amount:"1",limit:"100",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbumFile(e,t){let i=[],n="";for(;;){let s=await this.requestJson("GET",Yi+"/listfile",{query:{album_id:e,need_amount:"1",limit:"1000",passwd:"",cursor:n}});if(i.push(...s.list||[]),s.has_more!==1)break;n=s.cursor||""}return i}async getAlbumDetail(e){return this.requestJson("GET",Yi+"/detail",{query:{album_id:e}})}async linkFile(e){let t=await this.requestJson("GET",HG+"/download",{query:{fsid:String(e)}});if(!t.dlink)throw new Error("[BaiduPhoto] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return t.dlink}async linkAlbumFile(e,t,i,n){let o=(await this.request("HEAD",Yi+"/download",{query:{fsid:String(e),album_id:t,tid:String(i),uk:String(n)},redirect:"manual"})).headers.get("location");if(!o)throw new Error("[BaiduPhoto] \u76F8\u518C\u6587\u4EF6\u672A\u8FD4\u56DE 302 \u8DF3\u8F6C");return o}downloadHeaders(){return{Referer:"https://photo.baidu.com/","User-Agent":kC}}async createAlbum(e){let t=await this.requestJson("POST",Yi+"/create",{query:{title:e,tid:zG(),source:"0"}});if(!t.album_id)throw new Error("[BaiduPhoto] \u521B\u5EFA\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(t.album_id)}async joinAlbum(e){let t=await this.requestJson("GET",Yi+"/querypcode",{query:{pcode:e,web:"1"}});if(!t.pdata?.invite_code)throw new Error("[BaiduPhoto] \u9080\u8BF7\u7801\u65E0\u6548");let i=await this.requestJson("GET",Yi+"/join",{query:{invite_code:t.pdata.invite_code}});if(!i.album_id)throw new Error("[BaiduPhoto] \u52A0\u5165\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(i.album_id)}async setAlbumName(e,t,i){await this.requestJson("POST",Yi+"/settitle",{form:{title:i,album_id:e,tid:String(t)}})}async deleteAlbum(e,t,i){await this.requestJson("POST",Yi+"/delete",{form:{album_id:e,tid:String(t),delete_origin_image:i?"1":"0"}})}async deleteFile(e){await this.requestJson("GET",Bg+"/delete",{query:{fsid_list:`[${e}]`}})}async deleteAlbumFile(e,t,i,n,s){await this.requestJson("POST",Yi+"/delfile",{form:{album_id:t,tid:String(i),list:`[{"fsid":${e},"uk":${n}}]`,del_origin:s?"1":"0"}})}async addAlbumFile(e,t,i){await this.requestJson("GET",Yi+"/addfile",{query:{album_id:e,tid:String(t),list:aQ([i])}})}async copyAlbumFile(e,t,i,n){let s=await this.requestJson("POST",Yi+"/copyfile",{form:{album_id:t,tid:String(i),uk:String(n),list:aQ([e])}});if(!s.list||s.list.length===0)throw new Error("[BaiduPhoto] \u590D\u5236\u76F8\u518C\u6587\u4EF6\u5931\u8D25");return s.list[0].fsid}async upload(e,t,i){if(i.length===0)throw new Error("[BaiduPhoto] file size cannot be zero");let n=$t(i),s=$t(i.subarray(0,Math.min(GG,i.length))),o=[];for(let u=0;u0?r.thumburl[0]:"",raw_url:""}}function uQ(r){return{name:Ko(r.path),size:r.size,is_dir:!1,modified:DC(r.mtime),sign:`albumfile:${r.fsid}|${r.album_id}|${r.tid}|${r.uk}`,type:X(Ko(r.path),!1),thumb:r.thumburl&&r.thumburl.length>0?r.thumburl[0]:"",raw_url:""}}function SC(r){if(r.startsWith("albumfile:")){let[e,t,i,n]=r.slice(10).split("|");return{kind:"albumfile",fsid:Number(e),albumId:t,tid:Number(i),uk:Number(n)}}if(r.startsWith("album:")){let[e,t]=r.slice(6).split("|");return{kind:"album",fsid:0,albumId:e,tid:Number(t),uk:0}}return{kind:"file",fsid:Number(r.slice(5)),albumId:"",tid:0,uk:0}}var kg,fQ=j(()=>{"use strict";Be();cQ();kg=class{client;showType;albumCache=new Map;constructor(e){this.client=new bg(e),this.showType=e.show_type||"root"}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i){let o=[];if(this.showType!=="root_only_file"){let a=await this.client.getAllAlbum();for(let c of a)this.albumCache.set(c.title,c),o.push(lQ(c))}if(this.showType!=="root_only_album"){let a=await this.client.getAllFile();o.push(...a.map(dQ))}return o}let n=await this.findAlbum(i);if(!n)throw new Error(`[BaiduPhoto] \u76F8\u518C '${i}' \u672A\u627E\u5230`);return(await this.client.getAllAlbumFile(n.album_id,n.tid)).map(uQ)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.slice(0,-1).join("/");if(s){let o=await this.findAlbum(s);if(o){let c=(await this.client.getAllAlbumFile(o.album_id,o.tid)).find(l=>Ko(l.path)===n);if(c){let l=uQ(c);try{l.raw_url=await this.client.linkAlbumFile(c.fsid,c.album_id,c.tid,c.uk),l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[BaiduPhoto] failed to resolve download url"}return l}}}else{if(this.showType!=="root_only_file"){let a=(await this.client.getAllAlbum()).find(c=>c.title===n);if(a)return lQ(a)}if(this.showType!=="root_only_album"){let a=(await this.client.getAllFile()).find(c=>Ko(c.path)===n);if(a){let c=dQ(a);try{c.raw_url=await this.client.linkFile(a.fsid),c.raw_url_headers=this.client.downloadHeaders()}catch{c.raw_url_error="[BaiduPhoto] failed to resolve download url"}return c}}}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){if(t.split("/").filter(Boolean).join("/"))throw new Error("[BaiduPhoto] \u76F8\u518C\u4E0D\u652F\u6301\u521B\u5EFA\u5B50\u76EE\u5F55");let s=await this.client.createAlbum("new_album");this.albumCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(n.kind!=="album")throw new Error("[BaiduPhoto] \u4EC5\u652F\u6301\u91CD\u547D\u540D\u76F8\u518C");await this.client.setAlbumName(n.albumId,n.tid,i),this.albumCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);n.kind==="album"?await this.client.deleteAlbum(n.albumId,n.tid,!1):n.kind==="file"?await this.client.deleteFile(n.fsid):await this.client.deleteAlbumFile(n.fsid,n.albumId,n.tid,n.uk,!1),this.albumCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="albumfile"){if(!a)await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);else{let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);let l=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);await this.client.addAlbumFile(c.album_id,c.tid,l)}await this.client.deleteAlbumFile(o.fsid,o.albumId,o.tid,o.uk,!1);return}throw new Error("[BaiduPhoto] \u4EC5\u76F8\u518C\u6587\u4EF6\u652F\u6301\u79FB\u52A8")}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="file"&&a){let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(c.album_id,c.tid,o.fsid);return}if(o.kind==="albumfile"){let c=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);if(a){let l=await this.findAlbum(a);if(!l)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(l.album_id,l.tid,c)}return}throw new Error("[BaiduPhoto] \u4E0D\u652F\u6301\u8BE5\u590D\u5236\u64CD\u4F5C")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o=n.join("/"),a=null;if(o&&(a=await this.findAlbum(o),!a))throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);await this.client.upload(a,s,new Uint8Array(i)),this.albumCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n=t.slice(0,-1).join("/");if(n){let s=await this.findAlbum(n);if(s){let a=(await this.client.getAllAlbumFile(s.album_id,s.tid)).find(c=>Ko(c.path)===i);if(a)return SC(`albumfile:${a.fsid}|${a.album_id}|${a.tid}|${a.uk}`)}}else{if(this.showType!=="root_only_file"){let o=(await this.client.getAllAlbum()).find(a=>a.title===i);if(o)return SC(`album:${o.album_id}|${o.tid}`)}if(this.showType!=="root_only_album"){let o=(await this.client.getAllFile()).find(a=>Ko(a.path)===i);if(o)return SC(`file:${o.fsid}`)}}throw new Error(`[BaiduPhoto] '${i}' not found`)}async findAlbum(e){if(this.albumCache.has(e))return this.albumCache.get(e);let t=await this.client.getAllAlbum();for(let i of t)this.albumCache.set(i.title,i);return this.albumCache.get(e)||null}}});function nz(r){return r===99||String(r).startsWith("401")}var Bn,JG,jG,$G,VG,YG,AQ,WG,XG,ZG,ez,tz,rz,iz,zu,Sg,hQ=j(()=>{"use strict";Bn="https://proapi.115.com",JG="https://passportapi.115.com",jG=Bn+"/open/upload/get_token",$G=Bn+"/open/upload/init",VG=Bn+"/open/folder/add",YG=Bn+"/open/ufile/files",AQ=Bn+"/open/folder/get_info",WG=Bn+"/open/ufile/copy",XG=Bn+"/open/ufile/move",ZG=Bn+"/open/ufile/downurl",ez=Bn+"/open/ufile/update",tz=Bn+"/open/ufile/delete",rz=Bn+"/open/user/info",iz=JG+"/open/refreshToken";zu=430004,Sg=class r{addition;accessToken="";refreshTokenValue="";onTokenUpdate;rateLimitMs=0;lastRequestAt=0;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t;let i=e.limit_rate||0;i>0&&(this.rateLimitMs=1e3/i)}async waitRateLimit(){if(this.rateLimitMs<=0)return;let e=Date.now(),t=this.lastRequestAt+this.rateLimitMs-e;t>0&&await new Promise(i=>setTimeout(i,t)),this.lastRequestAt=Date.now()}async fetchWithRetry(e,t){let i;for(let n=0;n<3;n++)try{let s=new AbortController,o=setTimeout(()=>s.abort(),2e4);try{return await fetch(e,{...t,signal:s.signal})}finally{clearTimeout(o)}}catch(s){i=s,n<2&&await new Promise(o=>setTimeout(o,500*(n+1)))}throw i}static describeNetError(e){let t=e,i=t?.cause?.code||t?.cause?.cause?.code,n=t?.cause?.message||t?.cause?.cause?.message;return i?`${t?.message||"fetch failed"}\uFF08${i}\uFF09`:n?`${t?.message||"fetch failed"}\uFF08${n}\uFF09`:t?.message||String(e)}async refreshToken(){if(!this.refreshTokenValue)throw new Error("115 \u7F51\u76D8\u7F3A\u5C11 refresh_token\uFF08\u5FC5\u586B\uFF09");let e=new URLSearchParams;e.set("refresh_token",this.refreshTokenValue);let i=await(await this.fetchWithRetry(iz,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==0||!i.data?.access_token||!i.data?.refresh_token)throw new Error(`115 \u7F51\u76D8 token \u5237\u65B0\u5931\u8D25\uFF08code ${i.code} ${i.message}\uFF09\uFF1A\u8BF7\u786E\u8BA4 refresh_token \u6709\u6548\u3002`);this.accessToken=i.data.access_token,this.refreshTokenValue=i.data.refresh_token,this.addition.access_token=this.accessToken,this.addition.refresh_token=this.refreshTokenValue,this.onTokenUpdate?.({access_token:this.accessToken,refresh_token:this.refreshTokenValue})}async request(e,t,i,n,s,o=!1){await this.waitRateLimit();let a=async()=>{let d=new URL(e);for(let[I,y]of Object.entries(i||{}))y!==""&&d.searchParams.set(I,y);let u={Accept:"application/json","User-Agent":s||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30"};this.accessToken&&(u.Authorization=`Bearer ${this.accessToken}`);let f={method:t,headers:u};if(n&&t==="POST"){let I=new URLSearchParams;for(let[y,w]of Object.entries(n))w!==""&&I.set(y,w);u["Content-Type"]="application/x-www-form-urlencoded",f.body=I.toString()}let h=await this.fetchWithRetry(d.toString(),f),g=await h.text(),p;try{p=JSON.parse(g)}catch{p={state:!1,code:h.status,message:g.slice(0,200)}}return{body:p,rawText:g}},c;try{({body:c}=await a())}catch(d){throw new Error(r.describeNetError(d))}let l=c?.state;if(l===!1||l===void 0){let d=Number(c?.code??0);if(nz(d)&&!o){await this.refreshToken(),c=(await a()).body;let f=c?.state;if(f!==!1&&f!==void 0)return c;throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${c?.code} ${c?.message}\uFF09`)}if(d===zu){let u=new Error("115 object not found");throw u.code=zu,u}throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${d} ${c?.message||""}\uFF09`)}return c}async userInfo(){return(await this.request(rz,"GET"))?.data}async getFiles(e){let t=await this.request(YG,"GET",{cid:e.cid,limit:String(e.limit),offset:String(e.offset),asc:e.asc?"1":"0",o:e.o||"",show_dir:e.showDir?"1":"0",cur:"1"});return{files:t.data||[],count:t.count||0}}async getFolderInfo(e){return(await this.request(AQ,"GET",{file_id:e}))?.data}async getFolderInfoByPath(e){return(await this.request(AQ,"POST",void 0,{path:e}))?.data}async mkdir(e,t){return(await this.request(VG,"POST",void 0,{pid:e,file_name:t}))?.data}async move(e,t){await this.request(XG,"POST",void 0,{file_ids:e,to_cid:t})}async updateFile(e,t){await this.request(ez,"POST",void 0,{file_id:e,file_name:t})}async copy(e,t){await this.request(WG,"POST",void 0,{pid:e,file_id:t,no_dupli:"1"})}async delFile(e,t){await this.request(tz,"POST",void 0,{file_ids:e,parent_id:t})}async downUrl(e,t){return(await this.request(ZG,"POST",void 0,{pick_code:e},t))?.data}async uploadGetToken(){return(await this.request(jG,"GET"))?.data}async uploadInit(e){return(await this.request($G,"POST",void 0,{file_name:e.fileName,file_size:String(e.fileSize),target:`U_1_${e.target}`,fileid:e.fileId,preid:e.preId,sign_key:e.signKey||"",sign_val:e.signVal||""}))?.data}}});function gQ(r){let e=r.fc==="0";return{name:r.fn,size:r.fs||0,is_dir:e,created:r.uppt?new Date(r.uppt*1e3).toISOString():void 0,modified:r.upt?new Date(r.upt*1e3).toISOString():new Date().toISOString(),sign:r.fid,type:X(r.fn,e),thumb:r.thumbnail||r.fco||"",raw_url:""}}function oz(r){let e={...r||{}};return e.order_by=e.order_by||"file_name",e.order_direction=e.order_direction||"asc",e.page_size=e.page_size||200,(e.root_folder_id||e.root_folder_id==="0")&&!e.root_id&&(e.root_id=String(e.root_folder_id)),e}var Dg,sz,Qg,pQ=j(()=>{"use strict";Be();He();si();hQ();Dg="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30",sz=45;Qg=class r{client;addition;pageSize=200;parentPath="/";fidCache=new Map;budget={used:0,limit:sz};linkCache=new Map;static LINK_TTL_MS=1800*1e3;constructor(e,t){this.addition=oz(e),this.client=new Sg(this.addition,t)}async init(){let t=this.addition.page_size||200;t<=0&&(t=200),t>1150&&(t=1150),this.pageSize=t;try{await this.client.userInfo()}catch(n){if(n?.code===zu)throw n;let s=String(n?.message||n);throw s.includes("fetch")||s.includes("ECONN")||s.includes("abort")?new Error(`115 \u7F51\u76D8\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF08${s}\uFF09\uFF1Aproapi.115.com \u53EF\u80FD\u65E0\u6CD5\u4ECE\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u8BBF\u95EE\uFF08\u6570\u636E\u4E2D\u5FC3 IP \u53EF\u80FD\u88AB 115 \u62E6\u622A\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u66F4\u6362\u90E8\u7F72\u73AF\u5883\u3002`):new Error(`115 \u7F51\u76D8 token \u9A8C\u8BC1\u5931\u8D25\uFF1A${s}\u3002\u8BF7\u786E\u8BA4 access_token / refresh_token \u6709\u6548\u3002`)}let i=this.getRootId();if(i!=="0")try{let n=await this.client.getFolderInfo(i);if(n.file_id!=="0"){this.parentPath=`/${n.file_name}`;let s=[...n.paths||[]].reverse();for(let o of s)this.parentPath=`/${o.file_name}${this.parentPath}`}}catch(n){console.warn("[115open] init root path resolve failed:",n.message)}}getRootId(){return(this.addition.root_id||"0").trim()||"0"}reserve(){return this.budget.used>=this.budget.limit?(console.warn(`[115open] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${this.budget.limit})\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD`),!1):(this.budget.used++,!0)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),n=[],s=0;for(;this.reserve();){let{files:o,count:a}=await this.client.getFiles({cid:i,limit:this.pageSize,offset:s,asc:this.addition.order_direction==="asc",o:this.addition.order_by||"file_name",showDir:!0});for(let c of o)n.push(gQ(c)),this.fidCache.set(c.fid,c.fid);if(n.length>=a||o.length===0)break;s+=o.length}return de(n,this.addition.order_by||"file_name",this.addition.order_direction)}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=this.fidCache.get(i);if(n)return n;let s=`/${t==="0"?"":t}${i==="/"?"":i}`;try{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=await this.client.getFolderInfoByPath(s);if(l.file_id)return this.fidCache.set(i,l.file_id),l.file_id}catch(l){if(l?.code!==zu&&l?.code!==990002)throw l}let o=i.split("/").filter(Boolean),a=t,c="";for(let l of o){let d=(()=>{try{return decodeURIComponent(l)}catch{return l}})();c=`${c}/${l}`;let u=this.fidCache.get(c);if(u){a=u;continue}if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:f}=await this.client.getFiles({cid:a,limit:1e3,offset:0,asc:!0,o:"file_name",showDir:!0}),h=f.find(g=>g.fc==="0"&&(g.fn===l||g.fn===d||g.fid===l));if(!h)throw new Error(`folder not found: ${l}`);a=h.fid,this.fidCache.set(c,a)}return a}async resolveFile(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean),n=i.pop()||"";if(!n)throw new Error(`file not found: ${t}`);let s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.join("/"),a=await this.resolveFolderId(o),c=0;for(;;){if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:l,count:d}=await this.client.getFiles({cid:a,limit:Math.max(this.pageSize,1e3),offset:c,asc:!0,o:"file_name",showDir:!0}),u=l.find(f=>f.fn===n||f.fn===s||f.fid===n||f.fid===s);if(u)return u;if(l.length===0||c+l.length>=d)break;c+=l.length}throw new Error(`file not found: ${n}`)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.getRootId()}`)return{name:this.getRootId(),size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveFile(t),s=gQ(n);if(n.fc!=="0"&&n.pc)try{let o=`${n.fid}|${Dg}`,a=this.linkCache.get(o);if(a&&a.expire>Date.now())s.raw_url=a.url,s.raw_url_headers={"User-Agent":Dg};else{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=(await this.client.downUrl(n.pc,Dg))[n.fid];l?.url?.url&&(s.raw_url=l.url.url,s.raw_url_headers={"User-Agent":Dg},this.linkCache.set(o,{url:l.url.url,expire:Date.now()+r.LINK_TTL_MS}))}}catch(o){String(o?.message||o).includes("406")?console.warn("[115open] downurl \u914D\u989D\u7528\u5C3D\uFF08406\uFF09\uFF1A\u5DF2\u4F7F\u7528\u7F13\u5B58\u6216\u7A0D\u540E\u91CD\u8BD5"):console.warn(`[115open] downUrl warning for ${n.fn}:`,o.message)}return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.updateFile(n.fid,i)}async remove(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.delFile(n.fid,n.pid||this.getRootId())}async move(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.move(o.fid,a)}async copy(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.copy(a,o.fid)}async put(e,t,i){if(i.length<1)throw new Error("115 \u7F51\u76D8\u4E0D\u5141\u8BB8\u4E0A\u4F20\u7A7A\u6587\u4EF6");this.budget.used=0;let n=String(t||"").split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),c=await this.resolveFolderId(o),l=i.length,d=(await _o(i)).toUpperCase(),u=Math.min(128*1024,l),f=(await _o(i.subarray(0,u))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");let h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f});if(h.status===2)return;if([6,7,8].includes(h.status)&&h.sign_check){let p=h.sign_check.split("-"),I=parseInt(p[0],10),y=parseInt(p[1],10);if(Number.isFinite(I)&&Number.isFinite(y)){let w=(await _o(i.subarray(I,y+1))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");if(h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f,signKey:h.sign_key,signVal:w}),h.status===2)return}}if(!this.reserve())throw new Error("subrequest budget exceeded");let g=await this.client.uploadGetToken();if(!h.bucket||!h.object||!g.endpoint)throw new Error("115 \u4E0A\u4F20\u521D\u59CB\u5316\u5931\u8D25\uFF1A\u7F3A\u5C11 OSS \u4E0A\u4F20\u4FE1\u606F");await this.ossPutObject(g,h,i)}async ossPutObject(e,t,i){let s=`${(e.endpoint.startsWith("http")?e.endpoint:`https://${e.endpoint}`).replace(/\/$/,"")}/${t.object}`,o=Buffer.from(t.callback?.callback||"","utf8").toString("base64"),a=Buffer.from(t.callback?.callback_var||"","utf8").toString("base64"),c=new Date().toUTCString(),l="application/octet-stream",d=`x-oss-callback:${o} -x-oss-callback-var:${a} +--${o}--`),f=Buffer.concat([d,i,u]);await this.request(`${f8}/files?${a.toString()}`,{method:"POST",headers:{"Content-Type":`multipart/related; boundary=${o}`},body:f})}else{let a=new URLSearchParams({uploadType:"resumable",supportsAllDrives:"true"});await this.ensureToken();let o=await fetch(`${f8}/files?${a.toString()}`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json","X-Upload-Content-Type":n,"X-Upload-Content-Length":String(i.length)},body:JSON.stringify({name:t,parents:[e]})});if(!o.ok)throw new Error(`[GoogleDrive] Resumable upload init failed: ${o.status}`);let c=o.headers.get("location");if(!c)throw new Error("[GoogleDrive] No upload URL returned");let l=0;for(;l{try{return decodeURIComponent(a)}catch{return a}})(),c=i.slice(0,s+1).join("/");if(this.pathCache.has(c)){n=this.pathCache.get(c);continue}let d=(await this.listFiles(n)).find(u=>u.name===a||u.name===o||u.id===a);if(!d)throw new Error(`[GoogleDrive] Path '${a}' not found`);n=d.id,this.pathCache.set(c,n)}return n}async resolveParentAndName(e){let t=e.split("/").filter(Boolean),i=t.pop()||"unnamed",n="/"+t.join("/");return{parentId:await this.resolveFileId(n),name:i}}}});function A8(r){return{name:r.name,size:r.size?parseInt(r.size,10):0,is_dir:r.mimeType===uh,modified:r.modifiedTime||r.createdTime||new Date().toISOString(),sign:"",type:r.mimeType===uh?1:0,thumb:r.thumbnailLink||"",raw_url:""}}var Kp,g8=J(()=>{"use strict";$e();AB();h8();Kp=class{client;addition;constructor(e){this.addition=e,this.client=new Hp(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolveFileId(t),s=(await this.client.listFiles(i)).map(A8);return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.client.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null);if(n){let o=A8(n);return o.raw_url=this.client.getDownloadUrl(i),o.raw_url_headers=this.client.getDownloadHeaders(),o}let s=t.split("/").filter(Boolean),a=s[s.length-1]||"root";try{return await this.client.listFiles(i),{name:a,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:a,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(e,t){let{parentId:i,name:n}=await this.client.resolveParentAndName(t);await this.client.mkdir(i,n)}async rename(e,t,i){let n=await this.client.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let a=await this.client.resolveFileId(n),o=n.split("/").filter(Boolean);o.pop();let c=await this.client.resolveFileId("/"+o.join("/")),l=await this.client.resolveFileId(t);await this.client.move(a,c,l)}async copy(e,t,i,n,s){let a=await this.client.resolveFileId(n),o=n.split("/").filter(Boolean).pop()||"copy",c=await this.client.resolveFileId(t);await this.client.copy(a,c,o)}async put(e,t,i){let{parentId:n,name:s}=await this.client.resolveParentAndName(t);await this.client.putFile(n,s,i)}}});function Aj(r="Quark"){return r==="UC"?hj:fj}function p8(r,e,t){let i=r.split(";").map(a=>a.trim()).filter(Boolean),n=i.findIndex(a=>{let o=a.indexOf("=");return o!==-1&&a.substring(0,o).trim()===e}),s=`${e}=${t}`;return n!==-1?i[n]=s:i.push(s),i.join("; ")}function m8(r,e){let t=r.split(/,(?=[^;]+=[^;]+)/);for(let i of t){let s=i.split(";")[0].trim(),a=s.indexOf("=");if(a!==-1&&s.substring(0,a).trim()===e)return s.substring(a+1).trim()}return null}function gj(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/'/g,"'")}function pj(r){let e=r.split(".").pop()?.toLowerCase()||"",t=["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm"],i=["mp3","flac","aac","wav","ogg","m4a","opus"],n=["jpg","jpeg","png","gif","bmp","webp","heic","tiff"],s=["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","md"];return t.includes(e)?"video":i.includes(e)?"audio":n.includes(e)?"image":s.includes(e)?"doc":"others"}var fj,hj,Gp,y8=J(()=>{"use strict";fj={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://pan.quark.cn",api:"https://drive-m.quark.cn/1/clouddrive",pr:"ucpro"},hj={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://drive.uc.cn",api:"https://pc-api.uc.cn/1/clouddrive",pr:"UCBrowser"};Gp=class{addition;conf;cookie;onCookieUpdate;constructor(e,t){this.addition=e,this.conf=Aj(e.variant||"Quark"),this.cookie=e.cookie||"",this.onCookieUpdate=t}getRootFolderId(){return(this.addition.root_folder_id||"").trim()||"0"}getVariant(){return this.addition.variant||"Quark"}getConf(){return this.conf}getCookie(){return this.cookie}async request(e,t,i,n){let s=new URL(this.conf.api+e);if(s.searchParams.set("pr",this.conf.pr),s.searchParams.set("fr","pc"),i)for(let[u,f]of Object.entries(i))s.searchParams.set(u,f);let a={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:this.conf.referer,"Content-Type":"application/json","User-Agent":this.conf.ua},o={method:t,headers:a};n!==void 0&&t!=="GET"&&(o.body=JSON.stringify(n));let c=await fetch(s.toString(),o),l=c.headers.get("set-cookie");if(l){let u=m8(l,"__puus");if(u&&(this.cookie=p8(this.cookie,"__puus",u),this.onCookieUpdate?.(this.cookie)),this.addition.variant==="Quark"){let f=m8(l,"__pus");f&&(this.cookie=p8(this.cookie,"__pus",f),this.onCookieUpdate?.(this.cookie))}}let d=await c.json();if(!c.ok||d.status!==void 0&&d.status>=400||d.code!==void 0&&d.code!==0){let u=d.message||d.msg||`HTTP ${c.status}`;throw new Error(`[Quark/UC] API error [${c.status}] ${e}: ${u}`)}return d}async getFiles(e){let t=[],i=1,n=100,s={pdir_fid:e,_size:String(n),_fetch_total:"1",fetch_all_file:"1",fetch_risk_file_name:"1"};if(this.addition.order_by&&this.addition.order_by!=="none"){let a=this.addition.order_direction||"asc";s._sort=`file_type:asc,${this.addition.order_by}:${a}`}for(;;){s._page=String(i);let a=await this.request("/file/sort","GET",s),o=a?.data?.list||[];if(o.length===0)break;for(let l of o)l.file_name=gj(l.file_name),this.addition.only_list_video_file?(!l.file||l.category===1)&&t.push(l):t.push(l);let c=a.metadata?.total??0;if(c>0&&i*n>=c||o.length{"use strict";ve();y8();zp=class{client;pathFileIdCache=new Map;constructor(e){this.client=new Gp(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t);return(await this.client.getFiles(i)).map(I8)}async get(e,t){let i=t.split("/").filter(Boolean),n=await this.resolveFileId(t),s=i[i.length-1]||"root",a=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),o="/"+i.slice(0,i.length-1).join("/"),c=await this.resolveFileId(o),d=(await this.client.getFiles(c)).find(A=>A.fid===n||A.file_name===s||A.file_name===a),u="",f;try{let A=await this.client.getDownloadUrl(n,a);u=A.url,f=A.headers}catch(A){console.warn(`[Quark/UC] getDownloadUrl warning for ${s}:`,A.message)}if(d){let A=I8(d);return A.raw_url=u,A.raw_url_headers=f,A}try{return await this.client.getFiles(n),{name:a||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:a||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:u,raw_url_headers:f}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFileId(s);await this.client.mkdir(a,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove([n])}async move(e,t,i,n,s){let a=await this.resolveFileId(n),o=await this.resolveFileId(t);await this.client.move([a],o)}async copy(e,t,i,n,s){let a=await this.resolveFileId(n),o=await this.resolveFileId(t);await this.client.copy([a],o)}async put(e,t,i){throw new Error("[Quark/UC] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(a)}catch{return a}})(),l=(await this.client.getFiles(n)).find(u=>u.file_name===a||u.file_name===o||u.fid===a);if(!l)throw new Error(`[Quark/UC] Path '${a}' not found in folder '${n}'`);n=l.fid;let d="/"+i.slice(0,s+1).join("/");this.pathFileIdCache.set(d,n)}return n}}});var x8,mj,C8,Jp,E8=J(()=>{"use strict";x8="https://proapi.115.com/open",mj="https://passportapi.115.com",C8="Mozilla/5.0 115disk/42.0.0.2",Jp=class{accessToken;refreshToken;addition;rootId;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.rootId=e.root_folder_id||"0"}getRootFolderId(){return this.rootId}async init(){if(!this.accessToken)throw new Error("[115] access_token is required");await this.getUserInfo()}async request(e,t={},i=x8){let n=`${i}${e}`,a=await(await fetch(n,{method:"POST",headers:{"User-Agent":C8,Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)})).json().catch(()=>({}));if(a?.state===!1||a?.errno){if(a.errno===990001||a.errcode===990001||a.errno===10008)return await this.refreshAccessToken(),this.request(e,t,i);throw new Error(`[115] ${a.error||a.errmsg||"API error"} (${a.errno||a.errcode||""})`)}return a}async getUserInfo(){return this.request("/user/info",{},mj)}async refreshAccessToken(){let e=`${x8}/oauth2/token`,i=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":C8},body:JSON.stringify({grant_type:"refresh_token",refresh_token:this.refreshToken})})).json().catch(()=>({}));if(i?.access_token)this.accessToken=i.access_token,this.addition.access_token=i.access_token,i.refresh_token&&(this.refreshToken=i.refresh_token,this.addition.refresh_token=i.refresh_token);else throw new Error(`[115] refresh token failed: ${JSON.stringify(i)}`)}async getFiles(e){let t=await this.request("/open/ufile/files",{cid:e,limit:1e3,offset:0,order:this.addition.order_by||"user_utime",asc:this.addition.order_direction==="asc"?1:0,show_dir:1,fc_mix:1});return t?.data&&Array.isArray(t.data)?t.data:t?.files&&Array.isArray(t.files)?t.files.map(i=>({Fid:i.fid??i.id,Fn:i.n??i.file_name??i.name,Fc:String(i.fc??i.category??(i.pid!==void 0&&!i.pid?"0":"1")),FS:Number(i.s??i.size??0),Sha1:i.sha1,Pc:i.pc??i.pick_code,Thumbnail:i.thumb??i.thumbnail,Upt:i.tu??i.upt??i.updated_at,Pid:i.pid??i.cid})):[]}async resolvePathId(e,t){let i=e.split("/").filter(Boolean).join("/");if(!i)return this.rootId;if(t.has(i))return t.get(i);let n=i.split("/"),s=this.rootId;for(let a=0;a{try{return decodeURIComponent(o)}catch{return o}})(),d=(await this.getFiles(s)).find(f=>f.Fn===o||f.Fn===c||f.Fid===o);if(!d)throw new Error(`[115] Path '${o}' not found in '${s}'`);s=d.Fid;let u="/"+n.slice(0,a+1).join("/");t.set(u,s)}return s}async mkdir(e,t){await this.request("/open/ufile/add",{pid:e,cname:t})}async rename(e,t){await this.request("/open/ufile/edit",{fid:e,fname:t})}async move(e,t){await this.request("/open/ufile/move",{pid:e,fid:t,no_dupli:"1"})}async copy(e,t){await this.request("/open/ufile/copy",{pid:e,fid:t,no_dupli:"1"})}async remove(e){await this.request("/open/ufile/delete",{fid:e,ignore_warn:1})}async getDownloadUrl(e){let t=await this.request("/open/ufile/downurl",{pickcode:e}),i=t?.url||t?.data?.url||"";if(!i)throw new Error("[115] empty download url");return i}}});function B8(r){let e=r.Fc==="0",t=r.Upt?new Date(r.Upt*1e3).toISOString():new Date().toISOString();return{name:r.Fn,size:r.FS||0,is_dir:e,modified:t,sign:"",type:X(r.Fn,e),thumb:r.Thumbnail||"",raw_url:""}}var jp,b8=J(()=>{"use strict";ve();E8();jp=class{client;pathCache=new Map;constructor(e){this.client=new Jp(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolvePathId(t,this.pathCache);return(await this.client.getFiles(i)).map(B8)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),a="/"+i.slice(0,-1).join("/"),o=await this.client.resolvePathId(a,this.pathCache),l=(await this.client.getFiles(o)).find(d=>d.Fn===n||d.Fn===s||d.Fid===n);if(l){let d=B8(l);if(!d.is_dir&&l.Pc)try{let u=await this.client.getDownloadUrl(l.Pc);d.raw_url=u}catch(u){d.raw_url_error=u.message}return d}try{let d=await this.client.resolvePathId(t,this.pathCache);return await this.client.getFiles(d),{name:s||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.client.resolvePathId(s,this.pathCache);await this.client.mkdir(a,n)}async rename(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.remove([n])}async move(e,t,i,n,s){let a=await this.client.resolvePathId(n,this.pathCache),o=await this.client.resolvePathId(t,this.pathCache);await this.client.move(o,[a])}async copy(e,t,i,n,s){let a=await this.client.resolvePathId(n,this.pathCache),o=await this.client.resolvePathId(t,this.pathCache);await this.client.copy(o,[a])}async put(e,t,i){throw new Error("[115] Direct put not supported in stateless environment")}}});var $p,v8=J(()=>{"use strict";$p=class{address;addition;accessToken="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.accessToken=e.access_token||""}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.addition.username&&this.addition.password?await this.login():this.addition.refresh_token&&await this.refreshToken()}async login(){let t=await(await fetch(`${this.address}/api/v4/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.token)this.accessToken=t.token,t.refresh_token&&(this.addition.refresh_token=t.refresh_token);else throw new Error("[Cloudreve] login failed")}async refreshToken(){let t=await(await fetch(`${this.address}/api/v4/session/renew`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.addition.refresh_token}`}})).json().catch(()=>({}));t?.token&&(this.accessToken=t.token)}async request(e,t,i,n=!1){let s={Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"};this.addition.custom_ua&&(s["User-Agent"]=this.addition.custom_ua);let a={method:e,headers:s};i&&(a.body=JSON.stringify(i));let o=await fetch(`${this.address}/api/v4${t}`,a);if(o.status===401&&!n)return this.addition.refresh_token?await this.refreshToken():this.addition.username&&await this.login(),this.request(e,t,i,!0);if(e==="DELETE"&&o.ok)return{};let c=await o.json().catch(()=>({}));if(o.status>=400)throw new Error(`[Cloudreve] ${c?.msg||c?.message||`HTTP ${o.status}`}`);return c}async listFiles(e){let t=[],i="",n=e==="/"?"/":e;do{let s={page_size:"100",uri:n,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"asc",page:"0"};i&&(s.next_page_token=i);let a=new URLSearchParams(s).toString(),o=await this.request("GET",`/file?${a}`);o?.files&&t.push(...o.files),i=o?.pagination?.next_token||""}while(i);return t}async getDownloadUrl(e){let i=(await this.request("POST","/file/url",{uris:[e],download:!0}))?.urls?.[0]?.url||"";if(!i)throw new Error("[Cloudreve] empty download url");return i}async mkdir(e,t){let i=`${e.replace(/\/+$/,"")}/${t}`;await this.request("POST","/file/create",{type:"folder",uri:i,error_on_conflict:!0})}async rename(e,t){let i=e.lastIndexOf("/"),s=`${i>=0?e.slice(0,i+1):"/"}${t}`;await this.request("POST","/file/rename",{uris:[e],new_uri:s})}async move(e,t,i){await this.request("POST","/file/move",{uris:e,dst:t,copy:i})}async remove(e){await this.request("DELETE","/file",{uris:e,unlink:!1,skip_soft_delete:!0})}}});function k8(r){let e=r.type===1;return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}function ua(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Vp,S8=J(()=>{"use strict";ve();v8();Vp=class{client;constructor(e){this.client=new $p(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(ua(t))).map(k8)}async get(e,t){let i=ua(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",a="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(a==="//"?"/":a)).find(l=>l.name===s||l.path===i);if(c){let l=k8(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(i)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{let o=await this.client.listFiles(i);return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let n=ua(t).split("/").filter(Boolean),s=n.pop()||"new_folder",a="/"+n.join("/");await this.client.mkdir(a==="//"?"/":a,s)}async rename(e,t,i){await this.client.rename(ua(t),i)}async remove(e,t,i){await this.client.remove([ua(t)])}async move(e,t,i,n,s){await this.client.move([ua(n)],ua(t),!1)}async copy(e,t,i,n,s){await this.client.move([ua(n)],ua(t),!0)}async put(e,t,i){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}}});var yj,Yp,D8=J(()=>{"use strict";yj="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Yp=class{addition;address;cookie;persistCookie;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.cookie||await this.login()}getCookie(){return this.cookie}getUA(){return this.addition.custom_ua||yj}async login(){if(!this.addition.username||!this.addition.password)throw new Error("[Cloudreve] username/password or cookie is required");let e=await fetch(`${this.address}/api/v3/user/session`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.getUA()},body:JSON.stringify({username:this.addition.username,Password:this.addition.password,captchaCode:""})}),t=await e.json().catch(()=>({}));if(t.code!==0)throw new Error(`[Cloudreve] login failed: ${t.msg}`);let i=this.extractSessionCookie(e);if(!i)throw new Error("[Cloudreve] login failed: no session cookie");this.cookie=i,this.persistCookie&&await this.persistCookie(this.cookie)}extractSessionCookie(e){let t=typeof e.headers.getSetCookie=="function"?e.headers.getSetCookie():[];if(Array.isArray(t)){for(let s of t)if(s&&s.includes("cloudreve-session="))return s.split(";")[0].split("=")[1]}let i=e.headers.get("set-cookie")||"",n=/cloudreve-session=([^;]+)/.exec(i);return n?n[1]:""}async request(e,t,i,n=!1){let s={Cookie:`cloudreve-session=${this.cookie}`,Accept:"application/json, text/plain, */*","User-Agent":this.getUA()},a={method:e,headers:s};i!==void 0&&(s["Content-Type"]="application/json",a.body=JSON.stringify(i));let o=await fetch(`${this.address}/api/v3${t}`,a),c=await o.json().catch(()=>({}));if(c.code===401&&t!=="/user/session"&&!n&&this.addition.username&&this.addition.password)return await this.login(),this.request(e,t,i,!0);if(c.code!==0)throw new Error(`[Cloudreve] ${c.msg||`HTTP ${o.status}`}`);let l=this.extractSessionCookie(o);return l&&(this.cookie=l),c.data}async listFiles(e){return(await this.request("GET",`/directory${e}`))?.objects||[]}async getDownloadUrl(e){let t=await this.request("PUT",`/file/download/${e}`);if(!t)throw new Error("[Cloudreve] empty download url");return t.startsWith("/api")?this.address+t:t}downloadHeaders(){return{Referer:this.address,"User-Agent":this.getUA()}}async mkdir(e){await this.request("PUT","/directory",{path:e})}async move(e,t,i){await this.request("PATCH","/object",{action:"move",src_dir:e,dst:t,src:i})}async rename(e,t){await this.request("PATCH","/object/rename",{action:"rename",new_name:t,src:e})}async copy(e,t,i){await this.request("POST","/object/copy",{src_dir:e,dst:t,src:i})}async remove(e){await this.request("DELETE","/object",e)}}});function _8(r){let e=r.type==="dir";return{name:r.name,size:r.size||0,is_dir:e,modified:r.date||r.create_date||new Date().toISOString(),sign:r.id,type:X(r.name,e),raw_url:""}}function Td(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Wp,Q8=J(()=>{"use strict";ve();D8();Wp=class{client;constructor(e,t){this.client=new Yp(e,t)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Td(t))).map(_8)}async get(e,t){let n=Td(t).split("/").filter(Boolean),s=n[n.length-1]||"root",a="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(a==="//"?"/":a)).find(l=>l.name===s);if(c){let l=_8(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.id),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){await this.client.mkdir(Td(t))}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.src,i)}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.src)}async move(e,t,i,n,s){let a=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.move(c,Td(t),a.src)}async copy(e,t,i,n,s){let a=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.copy(c,Td(t),a.src)}async put(){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}async resolveEntry(e){let i=Td(e).split("/").filter(Boolean),n=i[i.length-1],s="/"+i.slice(0,-1).join("/"),o=(await this.client.listFiles(s==="//"?"/":s)).find(d=>d.name===n);if(!o)throw new Error(`[Cloudreve] '${n}' not found`);let c=o.type==="dir";return{src:c?{dirs:[o.id],items:[]}:{dirs:[],items:[o.id]},isDir:c}}}});var Xp,F8=J(()=>{"use strict";Xp=class{url;addition;token="";constructor(e){this.addition=e,this.url=(e.url||"").replace(/\/+$/,""),this.token=e.token||""}async init(){if(!this.url)throw new Error("[OpenList] url is required");this.addition.username&&this.addition.password&&await this.login()}async login(){let t=await(await fetch(`${this.url}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.data?.token)this.token=t.data.token;else throw new Error("[OpenList] login failed")}async request(e,t="POST",i){let n={"Content-Type":"application/json"};this.token&&(n.Authorization=this.token),this.addition.meta_password&&(n["Meta-Password"]=this.addition.meta_password);let s={method:t,headers:n};return i&&(s.body=JSON.stringify(i)),await(await fetch(`${this.url}${e}`,s)).json()}async list(e){let t=await this.request("/api/fs/list","POST",{path:e,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data?.content||[]}async get(e){let t=await this.request("/api/fs/get","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data}async mkdir(e){let t=await this.request("/api/fs/mkdir","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`)}async rename(e,t){let i=await this.request("/api/fs/rename","POST",{path:e,name:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}async move(e,t,i){let n=await this.request("/api/fs/move","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async copy(e,t,i){let n=await this.request("/api/fs/copy","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async remove(e,t){let i=await this.request("/api/fs/remove","POST",{dir:e,names:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}}});var Zp,P8=J(()=>{"use strict";ve();F8();Zp=class{client;constructor(e){this.client=new Xp(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size||0,is_dir:!!n.is_dir,modified:n.modified||new Date().toISOString(),sign:n.sign||"",type:X(n.name,!!n.is_dir),thumb:n.thumb||"",raw_url:n.raw_url||""}))}async get(e,t){try{let i=await this.client.get(t);return{name:i.name,size:i.size||0,is_dir:!!i.is_dir,modified:i.modified||new Date().toISOString(),sign:i.sign||"",type:X(i.name,!!i.is_dir),raw_url:i.raw_url||""}}catch{try{await this.client.list(t);let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){await this.client.rename(t,i)}async remove(e,t,i){let n=t.split("/").filter(Boolean),s="/"+n.slice(0,-1).join("/");await this.client.remove(s,i.length?i:[n[n.length-1]])}async move(e,t,i,n,s){await this.client.move(e,t,i)}async copy(e,t,i,n,s){await this.client.copy(e,t,i)}async put(e,t,i){throw new Error("[OpenList] Direct put not supported in stateless environment")}}});var em,T8=J(()=>{"use strict";em=class{url;sid;pwd;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.sid=e.sid||"",this.pwd=e.pwd||""}init(){if(!this.url)throw new Error("[OpenListShare] url is required");if(!this.sid)throw new Error("[OpenListShare] sid is required")}async request(e,t="POST",i){return await(await fetch(`${this.url}${e}`,{method:t,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0})).json()}sharePath(e){return"/@s/"+this.sid+(e==="/"?"":e)}async list(e){let t=await this.request("/api/fs/list","POST",{path:this.sharePath(e),password:this.pwd,refresh:!1,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenListShare] ${t.message}`);return t.data?.content||[]}downloadUrl(e){let t="/"+this.sid+e;return`${this.url}/sd${t}?pwd=${encodeURIComponent(this.pwd)}`}}});function U8(r){return{name:r.name,size:r.size||0,is_dir:r.is_dir,modified:r.modified||new Date().toISOString(),sign:r.sign||"",type:X(r.name,r.is_dir),thumb:r.thumb||"",raw_url:""}}function R8(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var tm,N8=J(()=>{"use strict";ve();T8();tm=class{client;constructor(e){this.client=new em(e)}async init(){this.client.init()}async list(e,t){return(await this.client.list(R8(t))).map(U8)}async get(e,t){let i=R8(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",a="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(a==="//"?"/":a)).find(l=>l.name===s);if(c){let l=U8(c);return l.is_dir||(l.raw_url=this.client.downloadUrl(i)),l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[OpenListShare] read-only share, mkdir not supported")}async rename(){throw new Error("[OpenListShare] read-only share, rename not supported")}async remove(){throw new Error("[OpenListShare] read-only share, remove not supported")}async move(){throw new Error("[OpenListShare] read-only share, move not supported")}async copy(){throw new Error("[OpenListShare] read-only share, copy not supported")}async put(){throw new Error("[OpenListShare] read-only share, upload not supported")}}});var rm,O8=J(()=>{"use strict";rm=class{url;token;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.url)throw new Error("[TelDrive] url is required");if(!this.token)throw new Error("[TelDrive] access_token is required")}async request(e,t="GET",i){let n={Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},s={method:t,headers:n};i&&(s.body=JSON.stringify(i));let a=await fetch(`${this.url}${e}`,s);if(t==="DELETE"&&a.ok)return{};let o=await a.json().catch(()=>({}));if(a.status>=400)throw new Error(`[TelDrive] ${o?.message||`HTTP ${a.status}`}`);return o}async listFiles(e){let t=await this.request(`/api/files?path=${encodeURIComponent(e)}`);return Array.isArray(t)?t:t?.files||[]}async mkdir(e){await this.request("/api/files/mkdir","POST",{path:e})}async move(e,t){await this.request("/api/files/move","POST",{ids:e,destination:t})}async remove(e){await this.request(`/api/files/${e}`,"DELETE")}downloadUrl(e){return`${this.url}/api/files/${e}`}downloadHeaders(){return{Authorization:`Bearer ${this.token}`}}}});function q8(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updatedAt||r.createdAt||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}var im,M8=J(()=>{"use strict";ve();O8();im=class{client;pathCache=new Map;constructor(e){this.client=new rm(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(t)).map(q8)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=(await this.client.listFiles(s==="//"?"/":s)).find(c=>c.name===n);if(o){let c=q8(o);return c.is_dir||(c.raw_url=this.client.downloadUrl(o.id),c.raw_url_headers=this.client.downloadHeaders()),c}}catch{}try{return await this.client.listFiles(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){throw new Error("[TelDrive] rename not supported")}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let a=await this.resolveFileId(n),o=await this.resolveFileId(t);await this.client.move([a],o)}async copy(e,t,i,n,s){throw new Error("[TelDrive] copy not supported")}async put(e,t,i){throw new Error("[TelDrive] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"/";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="",s="/";for(let a=0;al.name===i[a]);if(!c)throw new Error(`[TelDrive] Path '${i[a]}' not found`);s=c.id,n=n?`${n}/${i[a]}`:`/${i[a]}`,this.pathCache.set(n,s)}return s}}});var Ij,fh,nm,L8=J(()=>{"use strict";Ij="https://www.mediafire.com/api/1.5",fh="https://www.mediafire.com",nm=class{cookie;sessionToken;chunkSize;orderBy;orderDirection;constructor(e){this.cookie=e.cookie||"",this.sessionToken=e.session_token||"",this.chunkSize=e.chunk_size||200,this.orderBy=e.order_by||"name",this.orderDirection=e.order_direction||"asc"}async init(){if(!this.cookie)throw new Error("[MediaFire] cookie is required");this.sessionToken||await this.getSessionToken()}async postForm(e,t){let i=new URLSearchParams({session_token:this.sessionToken,response_format:"json",...t});return await(await fetch(`${Ij}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Cookie:this.cookie,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",Origin:fh,Referer:`${fh}/`},body:i.toString()})).json().catch(()=>({}))}async getSessionToken(){let i=(await(await fetch(`${fh}/application/get_session_token.php`,{method:"POST",headers:{Cookie:this.cookie,Origin:fh,Referer:`${fh}/`,"Content-Length":"0"}})).json().catch(()=>({})))?.response?.session_token;if(!i)throw new Error("[MediaFire] failed to get session token from cookie");this.sessionToken=i,this.addition_session_token=i}addition_session_token="";checkResult(e){if(e&&e!=="Success")throw new Error(`[MediaFire] API error: ${e}`)}async list(e){let t=[],i=1,n=!0;for(;n;){let s=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"folders",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),a=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"files",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),o=s.response?.folder_content?.folders||[],c=a.response?.folder_content?.files||[];for(let l of o)t.push({id:l.folderkey,name:l.name,size:0,isDir:!0,created:l.created});for(let l of c)t.push({id:l.quickkey,name:l.filename,size:parseInt(l.size,10)||0,isDir:!1,created:l.created});n=s.response?.folder_content?.more_chunks==="yes"||a.response?.folder_content?.more_chunks==="yes",i++}return t}async getDownloadUrl(e){let t=await this.postForm("/file/get_links.php",{quick_key:e,link_type:"direct_download"});this.checkResult(t.response?.result);let i=t.response?.links?.[0]?.direct_download||t.response?.links?.[0]?.normal_download;if(!i)throw new Error("[MediaFire] no download link found");return i}async mkdir(e,t){let i=await this.postForm("/folder/create.php",{parent_key:e,foldername:t});return this.checkResult(i.response?.result),i.response?.folder_key||""}async rename(e,t,i){if(i){let n=await this.postForm("/folder/update.php",{folder_key:e,foldername:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/update.php",{quick_key:e,filename:t});this.checkResult(n.response?.result)}}async move(e,t,i){if(i){let n=await this.postForm("/folder/move.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/move.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async copy(e,t,i){if(i){let n=await this.postForm("/folder/copy.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/copy.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async remove(e,t){if(t){let i=await this.postForm("/folder/delete.php",{folder_key:e});this.checkResult(i.response?.result)}else{let i=await this.postForm("/file/delete.php",{quick_key:e});this.checkResult(i.response?.result)}}}});var sm,H8=J(()=>{"use strict";ve();L8();sm=class{client;pathCache=new Map;constructor(e){this.client=new nm(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t);return(await this.client.list(i)).map(s=>({name:s.name,size:s.size,is_dir:s.isDir,modified:s.created?new Date(s.created).toISOString():new Date().toISOString(),sign:"",type:X(s.name,s.isDir),raw_url:""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveFolderId(s),c=(await this.client.list(a)).find(l=>l.name===n);if(c){let l={name:c.name,size:c.size,is_dir:c.isDir,modified:c.created?new Date(c.created).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.isDir),raw_url:""};if(!c.isDir)try{l.raw_url=await this.client.getDownloadUrl(c.id)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.resolveFolderId(s);await this.client.mkdir(a,n)}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.rename(n,i,s)}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.remove(n,s)}async move(e,t,i,n,s){let{id:a,isDir:o}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.move(a,c,o)}async copy(e,t,i,n,s){let{id:a,isDir:o}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.copy(a,c,o)}async put(e,t,i){throw new Error("[MediaFire] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.isDir&&l.name===i[s]);if(!o)throw new Error(`[MediaFire] Folder '${i[s]}' not found`);n=o.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),o=(await this.client.list(s)).find(c=>c.name===i);if(!o)throw new Error(`[MediaFire] '${i}' not found`);return{id:o.id,isDir:o.isDir}}}});function Do(...r){return"/"+r.filter(Boolean).map(t=>t.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}var wj,am,K8=J(()=>{"use strict";wj="https://api.github.com",am=class{addition;mounts;constructor(e){this.addition=e,this.mounts=this.parseMounts(e.repo_structure||"")}parseMounts(e){let t=[];for(let i of e.split(";")){let n=i.trim();if(!n)continue;let s=n.indexOf(":");s>0&&n.slice(0,s).includes("/");let a="/",o=n;s>0&&!n.slice(s+1).startsWith("/")&&!n.slice(0,s).includes(".")&&(a="/"+n.slice(0,s).replace(/^\/+|\/+$/g,""),o=n.slice(s+1)),t.push({point:a==="/"?"/":a,repo:o})}return t}async init(){if(this.mounts.length===0)throw new Error("[GitHub Releases] repo_structure is required (format: [path:]org/repo)")}async get(e){let t={Accept:"application/vnd.github+json","User-Agent":"OpenList-TSWorker"};this.addition.token&&(t.Authorization=`Bearer ${this.addition.token}`);let i=await fetch(`${wj}${e}`,{headers:t});if(i.status===404)return null;if(i.status>=400)throw new Error(`[GitHub Releases] HTTP ${i.status}`);return await i.json().catch(()=>null)}proxy(e){let t=this.addition.gh_proxy||"";return!t||e.startsWith("http")?e:t+e}mountForPath(e){let t=e.startsWith("/")?e:"/"+e,i=null;for(let n of this.mounts){let s=n.point==="/"?"/":n.point;(t===s||t.startsWith(s+"/"))&&(!i||s.length>(i.point==="/"?0:i.point.length))&&(i=n)}return i}async latestRelease(e){return this.get(`/repos/${e}/releases/latest`)}async allReleases(e){return await this.get(`/repos/${e}/releases`)||[]}async repoFiles(e){return await this.get(`/repos/${e}/contents`)||[]}async list(e){let t=this.mountForPath(e);if(!t)return[];let i=this.relPath(t,e),n=[];if(i===""&&e==="/"){for(let c of this.mounts)n.push({path:c.point,name:c.point==="/"?c.repo:c.point.split("/").filter(Boolean).pop()||c.repo,size:0,isDir:!0,modified:new Date().toISOString(),url:""});return n}let s=this.addition.show_all_version;if(i===""){let c=await this.latestRelease(t.repo);if(c){for(let l of c.assets)n.push({path:Do(t.point,l.name),name:l.name,size:l.size,isDir:!1,modified:l.updated_at||l.created_at||new Date().toISOString(),url:this.proxy(l.browser_download_url)});this.addition.show_source_code&&(n.push({path:Do(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.zipball_url)}),n.push({path:Do(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.tarball_url)}))}if(s){let l=await this.allReleases(t.repo);for(let d of l)n.push({path:Do(t.point,d.tag_name),name:d.tag_name,size:0,isDir:!0,modified:d.published_at||d.created_at,url:d.html_url})}if(this.addition.show_readme!==!1){let l=await this.repoFiles(t.repo);for(let d of l)(d.name.toLowerCase().endsWith(".md")||d.name.toUpperCase().startsWith("LICENSE"))&&n.push({path:Do(t.point,d.name),name:d.name,size:d.size,isDir:!1,modified:"1970-01-01T00:00:00Z",url:this.proxy(d.download_url)})}return n}let o=(await this.allReleases(t.repo)).find(c=>c.tag_name===i.split("/")[0]);if(o){for(let c of o.assets)n.push({path:Do(t.point,o.tag_name,c.name),name:c.name,size:c.size,isDir:!1,modified:c.updated_at||c.created_at||new Date().toISOString(),url:this.proxy(c.browser_download_url)});this.addition.show_source_code&&(n.push({path:Do(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:o.created_at,url:this.proxy(o.zipball_url)}),n.push({path:Do(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:o.created_at,url:this.proxy(o.tarball_url)}))}return n}async getDownloadUrl(e){let t=this.mountForPath(e);if(!t)return"";let n=this.relPath(t,e).split("/").pop()||"",s=await this.latestRelease(t.repo);if(s){let l=s.assets.find(d=>d.name===n);if(l)return this.proxy(l.browser_download_url)}let a=await this.allReleases(t.repo);for(let l of a){let d=l.assets.find(u=>u.name===n);if(d)return this.proxy(d.browser_download_url)}let c=(await this.repoFiles(t.repo)).find(l=>l.name===n);return c?this.proxy(c.download_url):""}relPath(e,t){let i=e.point==="/"?"/":e.point,n=t.startsWith("/")?t:"/"+t;return i==="/"?n.replace(/^\/+/,""):n.slice(i.length).replace(/^\/+/,"")}}});var om,G8=J(()=>{"use strict";ve();K8();om=class{client;constructor(e){this.client=new am(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified||new Date().toISOString(),sign:"",type:X(n.name,n.isDir),raw_url:n.url||""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=await this.client.list(t);if(s.length>0||t==="/")return!s.find(c=>c.isDir&&c.name===n)&&s.some(c=>!c.isDir),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let a=await this.client.getDownloadUrl(t);return a?{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:a}:{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){throw new Error("[GitHub Releases] read-only storage")}async rename(){throw new Error("[GitHub Releases] read-only storage")}async remove(){throw new Error("[GitHub Releases] read-only storage")}async move(){throw new Error("[GitHub Releases] read-only storage")}async copy(){throw new Error("[GitHub Releases] read-only storage")}async put(){throw new Error("[GitHub Releases] read-only storage")}}});var xj,Cj,cm,z8=J(()=>{"use strict";xj="https://api.cnb.cool",Cj="https://cnb.cool",cm=class{repo;token;useTagName;constructor(e){this.repo=e.repo||"",this.token=e.token||"",this.useTagName=!!e.use_tag_name}async init(){if(!this.repo)throw new Error("[CNB Releases] repo is required");if(!this.token)throw new Error("[CNB Releases] token is required")}async request(e,t,i,n=!1){let s={Accept:"application/json",Authorization:`Bearer ${this.token}`},a={method:e,headers:s};i!==void 0&&(n?(a.body=new URLSearchParams(i).toString(),s["Content-Type"]="application/x-www-form-urlencoded"):(a.body=JSON.stringify(i),s["Content-Type"]="application/json"));let o=await fetch(`${xj}${t}`,a);if(o.status!==200&&o.status!==201&&o.status!==204)throw new Error(`[CNB Releases] ${o.status} ${await o.text().catch(()=>"")}`);return o.status===204?{}:await o.json().catch(()=>({}))}async listReleases(){return this.request("GET",`/${this.repo}/-/releases`)}async getRelease(e){return this.request("GET",`/${this.repo}/-/releases/${e}`)}releaseName(e){return this.useTagName?e.tag_name:e.name}createRelease(e,t){return this.request("POST",`/${this.repo}/-/releases`,{name:e,tag_name:e,target_commitish:t||"main"})}renameRelease(e,t){return this.request("PATCH",`/${this.repo}/-/releases/${e}`,{name:t},!0)}deleteRelease(e){return this.request("DELETE",`/${this.repo}/-/releases/${e}`)}deleteAsset(e,t){return this.request("DELETE",`/${this.repo}/-/releases/${e}/assets/${t}`)}assetDownloadUrl(e){return`${Cj}${e.path}`}}});var lm,J8=J(()=>{"use strict";ve();z8();lm=class{client;addition;constructor(e){this.addition=e,this.client=new cm(e)}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return(await this.client.listReleases()).map(o=>({name:this.client.releaseName(o),size:o.assets.reduce((c,l)=>c+l.size,0),is_dir:!0,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:1,raw_url:""}));let n=i.split("/")[0];return(await this.client.getRelease(n)).assets.map(a=>({name:a.name,size:a.size,is_dir:!1,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:X(a.name,!1),raw_url:this.client.assetDownloadUrl(a)}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.join("/");if(i.length===1)try{let a=await this.client.getRelease(i[0]);return{name:this.client.releaseName(a),size:a.assets.reduce((o,c)=>o+c.size,0),is_dir:!0,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:1,raw_url:""}}catch{}if(i.length===2){let o=(await this.client.getRelease(i[0])).assets.find(c=>c.name===i[1]);if(o)return{name:o.name,size:o.size,is_dir:!1,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:X(o.name,!1),raw_url:this.client.assetDownloadUrl(o)}}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean);if(i.length===1){await this.client.createRelease(i[0],this.addition.default_branch||"main");return}throw new Error("[CNB Releases] only supports creating releases at root")}async rename(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1&&!this.addition.use_tag_name){await this.client.renameRelease(n[0],i);return}throw new Error("[CNB Releases] only release name can be renamed")}async remove(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1){await this.client.deleteRelease(n[0]);return}if(n.length===2){await this.client.deleteAsset(n[0],n[1]);return}throw new Error("[CNB Releases] invalid path")}async move(){throw new Error("[CNB Releases] move not supported")}async copy(){throw new Error("[CNB Releases] copy not supported")}async put(){throw new Error("[CNB Releases] asset upload not supported in stateless environment")}}});var dm,j8=J(()=>{"use strict";dm=class{address;addition;authorization="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,"")}async init(){if(!this.address)throw new Error("[KodBox] address is required");await this.getToken()}async getToken(){let e=new URLSearchParams({name:this.addition.username||"",password:this.addition.password||""}),i=await(await fetch(`${this.address}/?user/index/loginSubmit`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json().catch(()=>({code:!1}));if(i.code===!1)throw new Error(`[KodBox] login failed: ${JSON.stringify(i.data||i)}`);this.authorization=String(i.info||"")}async request(e,t){let i=new URLSearchParams({accessToken:this.authorization,...t}),s=await(await fetch(`${this.address}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString(),redirect:"follow"})).json().catch(()=>({code:!1}));if(s.code==="10001")return await this.getToken(),this.request(e,t);if(s.code===!1)throw new Error(`[KodBox] ${s.data||"request failed"}`);return s}async list(e){let i=(await this.request("/?explorer/list/path",{path:e})).data;return i?[...i.folderList||[],...i.fileList||[]]:[]}downloadUrl(e){return`${this.address}/?explorer/index/fileOut&path=${encodeURIComponent(e)}&download=1&accessToken=${encodeURIComponent(this.authorization)}`}async mkdir(e){await this.request("/?explorer/index/mkdir",{path:e})}async rename(e,t){await this.request("/?explorer/index/pathRename",{path:e,newName:t})}async move(e,t,i){await this.request("/?explorer/index/pathCuteTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async copy(e,t,i){await this.request("/?explorer/index/pathCopyTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async remove(e,t){await this.request("/?explorer/index/pathDelete",{dataArr:JSON.stringify([{path:e,name:t}]),shiftDelete:"1"})}async put(e,t,i){let n=new FormData;n.append("accessToken",this.authorization),n.append("path",e),n.append("file",new Blob([i]),t);let a=await(await fetch(`${this.address}/?explorer/upload/fileUpload`,{method:"POST",body:n})).json().catch(()=>({code:!1}));if(a.code===!1)throw new Error(`[KodBox] ${a.data||"upload failed"}`)}}});var um,$8=J(()=>{"use strict";ve();j8();um=class{client;addition;constructor(e){this.addition=e,this.client=new dm(e)}async init(){await this.client.init()}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){return(await this.client.list(this.fullPath(t))).map(n=>({name:n.name,size:n.size||0,is_dir:n.type==="folder",modified:n.modifyTime?new Date(n.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,n.type==="folder"),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",a="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(a==="//"?"/":a)).find(l=>l.name===s);if(c){let l={name:c.name,size:c.size||0,is_dir:c.type==="folder",modified:c.modifyTime?new Date(c.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.type==="folder"),raw_url:""};return l.is_dir||(l.raw_url=this.client.downloadUrl(c.path||i)),l}}catch{}try{return await this.client.list(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(this.fullPath(t))}async rename(e,t,i){await this.client.rename(this.fullPath(t),i)}async remove(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),a=s[s.length-1],o=i.length?i:[a];for(let c of o){let l=s.length>1?`/${s.slice(0,-1).join("/")}/${c}`:`/${c}`;await this.client.remove(l,c)}}async move(e,t,i,n,s){let o=this.fullPath(n).split("/").filter(Boolean),c=o[o.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=o.length>1?`/${o.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.move(f,u,l)}}async copy(e,t,i,n,s){let o=this.fullPath(n).split("/").filter(Boolean),c=o[o.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=o.length>1?`/${o.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.copy(f,u,l)}}async put(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),a=s[s.length-1]||"file",o="/"+s.slice(0,-1).join("/");await this.client.put(o==="//"?"/":o,a,i)}}});var fm,V8=J(()=>{"use strict";fm=class{endpoint;gateway;mode;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.gateway=(e.gateway||"").replace(/\/+$/,""),this.mode=e.mode||"ipfs"}async init(){if(!this.endpoint)throw new Error("[IPFS] endpoint is required");if(!this.gateway)throw new Error("[IPFS] gateway is required")}async post(e,t){let i=new URLSearchParams;for(let s of t)i.append("arg",s);let n=await fetch(`${this.endpoint}/api/v0/${e}?${i.toString()}`,{method:"POST"});if(n.status>=400)throw new Error(`[IPFS] ${n.status} ${await n.text().catch(()=>"")}`);return await n.json().catch(()=>({}))}async ls(e){return this.post("ls",[`/ipfs/${e}`])}async filesStat(e){return this.post("files/stat",[e])}async filesMkdir(e){await this.post("files/mkdir",[e,"parents=true"])}async filesMv(e,t){await this.post("files/mv",[e,t])}async filesCp(e,t){await this.post("files/cp",[e,t])}async filesRm(e){await this.post("files/rm",[e,"recursive=true"])}async add(e,t){let i=new FormData;i.append("file",new Blob([e]),t);let s=await(await fetch(`${this.endpoint}/api/v0/add`,{method:"POST",body:i})).json().catch(()=>({Hash:""}));if(!s.Hash)throw new Error("[IPFS] add failed");return s.Hash}downloadUrl(e,t){return`${this.gateway}/ipfs/${e}?filename=${encodeURIComponent(t)}`}async resolveIpfsPath(e,t){if(t)return`/ipfs/${t}`;let i=e.replace(/^\/+|\/+$/g,"");switch(this.mode){case"ipfs":return`/ipfs/${i}`;case"ipns":return`/ipns/${i}`;case"mfs":return`/ipfs/${(await this.filesStat(i?`/${i}`:"/")).Hash}`;default:throw new Error("[IPFS] invalid mode")}}}});var hm,Y8=J(()=>{"use strict";ve();V8();hm=class{client;addition;constructor(e){this.addition=e,this.client=new fm(e)}async init(){await this.client.init()}isMfs(){return this.addition.mode==="mfs"}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){let i=this.fullPath(t),s=(await this.client.resolveIpfsPath(i)).replace(/^\/ipfs\//,"");return((await this.client.ls(s)).Objects?.[0]?.Links||[]).map(c=>({name:c.Name,size:c.Size||0,is_dir:c.Type===1,modified:new Date().toISOString(),sign:c.Hash,type:X(c.Name,c.Type===1),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root";if(this.isMfs())try{let o=await this.client.filesStat(i),c=o.Type==="directory",l={name:s,size:o.Size||0,is_dir:c,modified:new Date().toISOString(),sign:o.Hash,type:X(s,c),raw_url:""};return c||(l.raw_url=this.client.downloadUrl(o.Hash,s)),l}catch{}let a="/"+n.slice(0,-1).join("/");try{let c=(await this.list(e,a)).find(l=>l.name===s);if(c)return c.is_dir||(c.raw_url=this.client.downloadUrl(c.sign,s)),c}catch{}try{return await this.client.resolveIpfsPath(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesMkdir(this.fullPath(t))}async rename(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),a="/"+n.split("/").filter(Boolean).slice(0,-1).join("/")+"/"+i;await this.client.filesMv(n,a)}async remove(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesRm(this.fullPath(t))}async move(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let a=this.fullPath(n),o=this.fullPath(t);await this.client.filesMv(a,o)}async copy(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let a=this.fullPath(n),c=`/ipfs/${(await this.client.filesStat(a)).Hash}`,l=this.fullPath(t);await this.client.filesCp(c,l)}async put(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),s=n.split("/").filter(Boolean),a=s[s.length-1]||"file",o=await this.client.add(i,a);await this.client.filesCp(`/ipfs/${o}`,n)}}});var Ej,Am,W8=J(()=>{"use strict";Ej="https://siot-share.lenovo.com.cn",Am=class{host;shareId;sharePwd;stoken="";expireAt=0;constructor(e){this.host=(e.host||Ej).replace(/\/+$/,""),this.shareId=(e.share_id||"").split("/").pop()||"",this.sharePwd=e.share_pwd||""}async init(){if(!this.shareId)throw new Error("[Lenovo NAS Share] share_id is required");await this.getStoken()}async request(e){let i=await(await fetch(e,{method:"GET",headers:{origin:"https://siot-share.lenovo.com.cn",referer:"https://siot-share.lenovo.com.cn/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"}})).json().catch(()=>({result:!1}));if(!i.result)throw new Error(`[Lenovo NAS Share] ${i.error?.msg||"request failed"}`);return i.data}async getStoken(){let e=new URLSearchParams({code:this.shareId,password:this.sharePwd}),t=await this.request(`${this.host}/oneproxy/api/share/v1/access?${e.toString()}`);this.stoken=t.stoken||"",this.expireAt=Date.now()+(t.expires_in||3600)*1e3-6e4}async checkStoken(){Date.now()>=this.expireAt&&await this.getStoken()}async list(e){await this.checkStoken();let t=e.startsWith("/")?e:"/"+e,i=new URLSearchParams({code:this.shareId,num:"5000",stoken:this.stoken,path:t});return(await this.request(`${this.host}/oneproxy/api/share/v1/files?${i.toString()}`)).list||[]}async getDownloadUrl(e){await this.checkStoken();let t=new URLSearchParams({code:this.shareId,stoken:this.stoken,path:e.startsWith("/")?e:"/"+e}),n=(await this.request(`${this.host}/oneproxy/api/share/v1/file/link?${t.toString()}`)).param?.dtoken||"";return`${this.host}/oneproxy/api/share/v1/file/download?code=${encodeURIComponent(this.shareId)}&dtoken=${encodeURIComponent(n)}`}downloadHeaders(){return{Referer:"https://siot-share.lenovo.com.cn"}}}});var gm,X8=J(()=>{"use strict";ve();W8();gm=class{client;constructor(e){this.client=new Am(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>{let s=n.type==="dir";return{name:n.name,size:n.size||0,is_dir:s,modified:n.chtime?new Date(n.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,s),raw_url:""}})}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=(await this.client.list(s==="//"?"/":s)).find(c=>c.name===n||c.path===t);if(o){let c=o.type==="dir",l={name:o.name,size:o.size||0,is_dir:c,modified:o.chtime?new Date(o.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(o.name,c),raw_url:""};return c||(l.raw_url=await this.client.getDownloadUrl(o.path),l.raw_url_headers=this.client.downloadHeaders()),l}}catch{}try{return await this.client.list(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[Lenovo NAS Share] read-only storage")}async rename(){throw new Error("[Lenovo NAS Share] read-only storage")}async remove(){throw new Error("[Lenovo NAS Share] read-only storage")}async move(){throw new Error("[Lenovo NAS Share] read-only storage")}async copy(){throw new Error("[Lenovo NAS Share] read-only storage")}async put(){throw new Error("[Lenovo NAS Share] read-only storage")}}});var pm,Z8=J(()=>{"use strict";pm=class{endpoint;token;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.endpoint)throw new Error("[Misskey] endpoint is required");if(!this.token)throw new Error("[Misskey] access_token is required")}async post(e,t){let i=await fetch(`${this.endpoint}/api/drive${e}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify(t||{})});if(i.status>=400)throw new Error(`[Misskey] ${i.status} ${await i.text().catch(()=>"")}`);return await i.json().catch(()=>({}))}async getFiles(e){return this.post("/files",e?{folderId:e}:{})}async getFolders(e){return this.post("/folders",e?{folderId:e}:{})}async showFile(e){return this.post("/files/show",{fileId:e})}async createFolder(e,t){return this.post("/folders/create",{name:e,...t?{parentId:t}:{}})}async updateFolder(e,t){return this.post("/folders/update",{folderId:e,...t})}async updateFile(e,t){return this.post("/files/update",{fileId:e,...t})}async deleteFolder(e){await this.post("/folders/delete",{folderId:e})}async deleteFile(e){await this.post("/files/delete",{fileId:e})}async uploadFromUrl(e,t){return this.post("/files/upload-from-url",{url:e,...t?{folderId:t}:{}})}}});var mm,e4=J(()=>{"use strict";ve();Z8();mm=class{client;pathCache=new Map;constructor(e){this.client=new pm(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t),[n,s]=await Promise.all([this.client.getFiles(i),this.client.getFolders(i)]),a=n.map(c=>({name:c.name,size:c.size||0,is_dir:!1,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:X(c.name,!1),raw_url:c.url||"",thumb:c.thumbnailUrl||""}));return[...s.map(c=>({name:c.name,size:0,is_dir:!0,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:1,raw_url:""})),...a]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveFolderId(s),[o,c]=await Promise.all([this.client.getFiles(a),this.client.getFolders(a)]),l=o.find(u=>u.name===n);if(l)return{name:l.name,size:l.size||0,is_dir:!1,modified:l.createdAt||new Date().toISOString(),sign:l.id,type:X(l.name,!1),raw_url:l.url||"",thumb:l.thumbnailUrl||""};let d=c.find(u=>u.name===n);if(d)return{name:d.name,size:0,is_dir:!0,modified:d.createdAt||new Date().toISOString(),sign:d.id,type:1,raw_url:""}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.resolveFolderId(s);await this.client.createFolder(n,a),this.pathCache.clear()}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.updateFolder(n,{name:i}):await this.client.updateFile(n,{name:i}),this.pathCache.clear()}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.deleteFolder(n):await this.client.deleteFile(n),this.pathCache.clear()}async move(e,t,i,n,s){let{id:a,isDir:o}=await this.resolveEntry(n),c=await this.resolveFolderId(t);o?await this.client.updateFolder(a,{parentId:c}):await this.client.updateFile(a,{folderId:c}),this.pathCache.clear()}async copy(e,t,i,n,s){let{id:a,isDir:o}=await this.resolveEntry(n),c=await this.resolveFolderId(t);if(o)throw new Error("[Misskey] folder copy not supported");let l=await this.client.showFile(a);await this.client.uploadFromUrl(l.url,c),this.pathCache.clear()}async put(e,t,i){throw new Error("[Misskey] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n;for(let s=0;sl.name===i[s]);if(!o)throw new Error(`[Misskey] Folder '${i[s]}' not found`);n=o.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),[a,o]=await Promise.all([this.client.getFiles(s),this.client.getFolders(s)]),c=a.find(d=>d.name===i);if(c)return{id:c.id,isDir:!1};let l=o.find(d=>d.name===i);if(l)return{id:l.id,isDir:!0};throw new Error(`[Misskey] '${i}' not found`)}}});var gB,t4,Bj,bj,vj,kj,ym,r4=J(()=>{"use strict";gB="https://www.doubao.com",t4="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Bj=1,bj=6,vj=7,kj={1:"directory",2:"file",3:"link",4:"image",5:"pages",6:"video",7:"audio",8:"meeting_minutes"},ym=class{cookie;downloadApi;constructor(e){this.cookie=e.cookie||"",this.downloadApi=e.download_api||"get_file_url"}async init(){if(!this.cookie)throw new Error("[Doubao] cookie is required")}async request(e,t={}){let n=await(await fetch(`${gB}${e}`,{method:"POST",headers:{"Content-Type":"application/json",Cookie:this.cookie,"User-Agent":t4,Origin:gB,Referer:`${gB}/`},body:JSON.stringify(t)})).json().catch(()=>({code:-1}));if(n.code!==0){let s=n.message||n.msg||n.error?.message||`code ${n.code}`;throw new Error(`[Doubao] ${s}`)}return n}async getFiles(e){let t=[],i="";do{let n={node_id:e};i?(n.cursor=i,n.size=50):n.need_full_path=!1;let a=(await this.request("/samantha/aispace/node_info",n)).data;a?.children&&t.push(...a.children),i=a?.next_cursor&&a.next_cursor!=="-1"?a.next_cursor:""}while(i);return t}async getDownloadUrl(e){if(this.downloadApi==="get_download_info"){let o=(await this.request("/samantha/aispace/get_download_info",{requests:[{node_id:e.id}]})).data.download_infos?.[0]?.main_url||"";if(!o)throw new Error("[Doubao] empty download url");return o}if(e.node_type===bj||e.node_type===vj){let a=(await this.request("/samantha/media/get_play_info",{key:e.key,node_id:e.id})).data,o=a.original_media_info?.main_url||a.media_info?.[0]?.main_url||"";if(!o)throw new Error("[Doubao] empty download url");return o}let n=(await this.request("/alice/message/get_file_url",{uris:[e.key],type:kj[e.node_type]||"file"})).data.file_urls?.[0]?.main_url||"";if(!n)throw new Error("[Doubao] empty download url");return n}downloadHeaders(){return{"User-Agent":t4}}async mkdir(e,t){await this.request("/samantha/aispace/upload_node",{node_list:[{local_id:crypto.randomUUID(),name:t,parent_id:e,node_type:Bj}]})}async rename(e,t){await this.request("/samantha/aispace/rename_node",{node_id:e,node_name:t})}async move(e,t,i){await this.request("/samantha/aispace/move_node",{node_list:[{id:e}],current_parent_id:t,target_parent_id:i})}async remove(e){await this.request("/samantha/aispace/delete_node",{node_list:[{id:e}]})}}});var i4,Im,n4=J(()=>{"use strict";ve();r4();i4="0",Im=class{client;pathCache=new Map;constructor(e){this.client=new ym(e)}async init(){await this.client.init()}fileToItem(e){let t=e.node_type===1;return{name:e.name,size:e.size||0,is_dir:t,modified:e.update_time?new Date(e.update_time*1e3).toISOString():new Date().toISOString(),sign:"",type:X(e.name,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveDirId(s),c=(await this.client.getFiles(a)).find(l=>l.name===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.resolveDirId(s);await this.client.mkdir(a,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n),o=await this.resolveDirId(t);await this.client.move(a.id,a.parentId,o),this.pathCache.clear()}async copy(){throw new Error("[Doubao] copy not supported")}async put(){throw new Error("[Doubao] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return i4;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=i4;for(let s=0;sl.node_type===1&&l.name===i[s]);if(!o)throw new Error(`[Doubao] Directory '${i[s]}' not found`);n=o.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),o=(await this.client.getFiles(s)).find(c=>c.name===i);if(!o)throw new Error(`[Doubao] '${i}' not found`);return{id:o.id,parentId:o.parent_id||s,isDir:o.node_type===1}}}});async function _j(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}var Sj,Dj,wm,s4=J(()=>{"use strict";Sj="https://open-api-drive.quark.cn",Dj="go-resty/3.0.0-beta.1 (https://resty.dev)";wm=class{addition;accessToken;refreshToken;appId;signKey;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.appId=e.app_id||"",this.signKey=e.sign_key||""}async init(){if(!this.refreshToken)throw new Error("[QuarkOpen] refresh_token is required")}async generateSign(e,t){let i=String(Date.now()),n=`${e}&${t}&${i}&${this.signKey}`,s=await _j(n),a=typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;return{tm:i,token:s,reqId:a}}async request(e,t,i){let{tm:n,token:s,reqId:a}=await this.generateSign(t,e),o=new URLSearchParams({req_id:a,access_token:this.accessToken}),c={Accept:"application/json, text/plain, */*","User-Agent":Dj,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.appId},l={method:t,headers:c};i!==void 0&&(l.body=JSON.stringify(i),c["Content-Type"]="application/json");let u=await(await fetch(`${Sj}${e}?${o.toString()}`,l)).json().catch(()=>({status:-1,errno:-1}));if(u.status===-1&&(u.errno===11001||u.errno===14001&&(u.error_info||"").includes("access_token")))return await this.refreshAccessToken(),this.request(e,t,i);if(u.status>=400||u.errno!==0)throw new Error(`[QuarkOpen] ${u.error_info||`errno ${u.errno}`}`);return u}async refreshAccessToken(){let e=this.addition.api_url_address||"https://api.oplist.org/quarkyun/renewapi",t=new URLSearchParams({refresh_ui:this.refreshToken,server_use:"true",driver_txt:"quarkyun_oa"}),n=await(await fetch(`${e}?${t.toString()}`)).json().catch(()=>({}));if(!n.refresh_token||!n.access_token)throw new Error(`[QuarkOpen] refresh token failed: ${n.text||"empty token"}`);this.refreshToken=n.refresh_token,this.accessToken=n.access_token,n.app_id&&(this.appId=n.app_id),n.sign_key&&(this.signKey=n.sign_key),this.addition.refresh_token=n.refresh_token,this.addition.access_token=n.access_token}async getFiles(e){let t=[],i;do{let n={parent_fid:e,size:100,sort:this.addition.order_by&&this.addition.order_by!=="none"?`${this.addition.order_by}:${this.addition.order_direction||"asc"}`:"file_name:asc"};i?.token&&(n.query_cursor=i);let a=(await this.request("/open/v1/file/list","POST",n)).data;if(a?.file_list&&t.push(...a.file_list),a?.last_page)break;i=a?.next_query_cursor}while(i?.token);return t}async getDownloadUrl(e){let i=(await this.request("/open/v1/file/get_download_url","POST",{fid:e})).data;if(!i.download_url)throw new Error("[QuarkOpen] empty download url");return i.download_url}downloadCookie(){return`x_pan_client_id=${this.appId}; x_pan_access_token=${this.accessToken}`}async mkdir(e,t){await this.request("/open/v1/dir","POST",{dir_path:t,pdir_fid:e})}async rename(e,t){await this.request("/open/v1/file/rename","POST",{fid:e,file_name:t,conflict_mode:"REUSE"})}async move(e,t){await this.request("/open/v1/file/move","POST",{action_type:1,fid_list:[e],to_pdir_fid:t})}async remove(e){await this.request("/open/v1/file/delete","POST",{action_type:1,fid_list:[e]})}}});var a4,xm,o4=J(()=>{"use strict";ve();s4();a4="0",xm=class{client;pathCache=new Map;constructor(e){this.client=new wm(e)}async init(){await this.client.init()}fileToItem(e){let t=e.file_type==="0";return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveDirId(s),c=(await this.client.getFiles(a)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid),l.raw_url_headers={Cookie:this.client.downloadCookie()}}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.resolveDirId(s);await this.client.mkdir(a,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveDirId(n),o=await this.resolveDirId(t);await this.client.move(a,o),this.pathCache.clear()}async copy(){throw new Error("[QuarkOpen] copy not supported")}async put(){throw new Error("[QuarkOpen] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return a4;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=a4;for(let s=0;sl.file_type==="0"&&l.filename===i[s]);if(!o)throw new Error(`[QuarkOpen] Directory '${i[s]}' not found`);n=o.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var Qj,Fj,Pj,Tj,Uj,Rj,Nj,Oj,qj,Mj,Cm,c4=J(()=>{"use strict";ti();Qj="Mozilla/5.0 (Linux; U; Android 13; zh-cn; M2004J7AC Build/UKQ1.231108.001) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1",Fj="Xiaomi",Pj="tv",Tj="M2004J7AC",Uj="M2004J7AC",Rj="M2004J7AC",Nj="M2004J7AC",Oj="Adreno (TM) 550",qj="{}",Mj={quark:{api:"https://open-api-drive.quark.cn",clientID:"d3194e61504e493eb6222857bccfed94",signKey:"kw2dvtd7p4t3pjl2d9ed9yc8yej8kw2d",appVer:"1.8.2.2",channel:"GENERAL",codeApi:"http://api.extscreen.com/quarkdrive"},uc:{api:"https://open-api-drive.uc.cn",clientID:"5acf882d27b74502b7040b0c65519aa7",signKey:"l3srvtd7p42l0d0x1u8d7yc8ye9kki4d",appVer:"1.7.2.2",channel:"UCTVOFFICIALWEB",codeApi:"http://api.extscreen.com/ucdrive"}},Cm=class{conf;addition;accessToken="";deviceId;constructor(e){this.addition=e,this.conf=Mj[e.variant||"quark"],this.deviceId=e.device_id||nr(String(Date.now())),this.addition.device_id=this.deviceId}async init(){if(!this.addition.refresh_token)throw new Error("[QuarkTV] refresh_token is required");await this.refreshToken()}async generateSign(e,t){let i=String(Date.now()),n=nr(this.deviceId+i),s=await $_(`${e}&${t}&${i}&${this.conf.signKey}`);return{tm:i,token:s,reqId:n}}deviceQuery(){return{app_ver:this.conf.appVer,device_id:this.deviceId,device_brand:Fj,platform:Pj,device_name:Tj,device_model:Uj,build_device:Rj,build_product:Nj,device_gpu:Oj,activity_rect:qj,channel:this.conf.channel}}async request(e,t,i={}){let{tm:n,token:s,reqId:a}=await this.generateSign(t,e),o=new URLSearchParams({req_id:a,access_token:this.accessToken,...this.deviceQuery(),...i}),l=await(await fetch(`${this.conf.api}${e}?${o.toString()}`,{method:t,headers:{Accept:"application/json, text/plain, */*","User-Agent":Qj,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.conf.clientID}})).json().catch(()=>({status:-1,errno:-1})),d=(l.error_info||"").toLowerCase();if(l.status===-1&&(l.errno===10001||l.errno===11001)||d.includes("access token")||d.includes("access_token")||d.includes("token\u65E0\u6548")||d.includes("token \u65E0\u6548"))return await this.refreshToken(),this.request(e,t,i);if(l.status>=400||l.errno!==0)throw new Error(`[QuarkTV] ${l.error_info||`errno ${l.errno}`}`);return l}async refreshToken(){let e="/token",{reqId:t}=await this.generateSign("POST",e),i={req_id:t,...this.deviceQuery()};this.accessToken?i.refresh_token=this.addition.refresh_token:i.refresh_token=this.addition.refresh_token;let s=await(await fetch(`${this.conf.codeApi}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).json().catch(()=>({}));if(s?.code!==200)throw new Error(`[QuarkTV] ${s?.message||"token refresh failed"}`);let a=s.data||{};if(!a.access_token)throw new Error("[QuarkTV] refresh token empty");this.accessToken=a.access_token,a.refresh_token&&(this.addition.refresh_token=a.refresh_token)}async getFiles(e){let t=[],i=0,n=100,s=this.addition.order_direction==="asc"?"0":"1",a=this.addition.order_by==="file_name"?"1":"3";for(;;){let c=(await this.request("/file","GET",{method:"list",parent_fid:e,order_by:a,desc:s,category:"",source:"",ex_source:"",list_all:"0",page_size:String(n),page_index:String(i)})).data;c?.files&&t.push(...c.files);let l=c?.total_count||0;if(i*n>=l)break;i++}return t}async getDownloadUrl(e){if(this.addition.link_method==="streaming"){let a=(await this.request("/file","GET",{method:"streaming",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data?.video_info?.find(o=>o.url)?.url||"";if(!a)throw new Error("[QuarkTV] no streaming link found");return a}let i=(await this.request("/file","GET",{method:"download",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data;if(!i?.download_url)throw new Error("[QuarkTV] empty download url");return i.download_url}}});var l4,Em,d4=J(()=>{"use strict";ve();c4();l4="0",Em=class{client;pathCache=new Map;constructor(e){this.client=new Cm(e)}async init(){await this.client.init()}fileToItem(e){let t=e.isdir===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveDirId(s),c=(await this.client.getFiles(a)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[QuarkTV] read-only storage")}async rename(){throw new Error("[QuarkTV] read-only storage")}async remove(){throw new Error("[QuarkTV] read-only storage")}async move(){throw new Error("[QuarkTV] read-only storage")}async copy(){throw new Error("[QuarkTV] read-only storage")}async put(){throw new Error("[QuarkTV] read-only storage")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return l4;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=l4;for(let s=0;sl.isdir===1&&l.filename===i[s]);if(!o)throw new Error(`[QuarkTV] Directory '${i[s]}' not found`);n=o.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var tl,Bm,u4=J(()=>{"use strict";tl="https://open-api.123pan.com",Bm=class{addition;accessToken="";constructor(e){this.addition=e,this.accessToken=e.access_token||""}async init(){this.accessToken||await this.getAccessToken()}async getAccessToken(){if(this.addition.use_online_api!==!1&&this.addition.refresh_token&&this.addition.api_url_address){let e=new URLSearchParams({refresh_ui:this.addition.refresh_token,server_use:"true",driver_txt:"123cloud_oa"}),i=await(await fetch(`${this.addition.api_url_address}?${e.toString()}`)).json().catch(()=>({}));if(i.access_token&&i.refresh_token){this.accessToken=i.access_token,this.addition.access_token=i.access_token,this.addition.refresh_token=i.refresh_token;return}let n=i.error_description||i.text||i.message||i.error;if(n)throw new Error(`[123Open] ${n}`)}if(this.addition.client_id&&this.addition.client_secret){let t=await(await fetch(`${tl}/api/v1/access_token`,{method:"POST",headers:{platform:"open_platform","Content-Type":"application/json"},body:JSON.stringify({clientID:this.addition.client_id,clientSecret:this.addition.client_secret})})).json().catch(()=>({code:-1}));if(t.code!==0)throw new Error(`[123Open] ${t.message}`);if(!t.data?.access_token)throw new Error("[123Open] empty access token");this.accessToken=t.data.access_token,this.addition.access_token=this.accessToken;return}throw new Error("[123Open] no valid authentication method (access_token / refresh_token / client_id+client_secret)")}async request(e,t,i){let n={Authorization:`Bearer ${this.accessToken}`,platform:"open_platform","Content-Type":"application/json"},s={method:t,headers:n};i!==void 0&&(s.body=JSON.stringify(i));let o=await(await fetch(e,s)).json().catch(()=>({code:-1}));return o.code===401?(await this.getAccessToken(),this.request(e,t,i)):o}async getFiles(e){let t=[],i=0;do{let n=new URLSearchParams({parentFileId:e,limit:"100",lastFileId:String(i),trashed:"false",searchMode:"",searchData:""}),s=await this.request(`${tl}/api/v2/file/list?${n.toString()}`,"GET");if(s.code!==0)throw new Error(`[123Open] ${s.message}`);let a=s.data,o=(a.file_list||[]).filter(c=>(c.trashed??0)===0);t.push(...o),i=a.last_file_id??-1}while(i!==-1);return t}async getDownloadUrl(e){let t=new URLSearchParams({fileId:String(e)}),i=await this.request(`${tl}/api/v1/file/download_info?${t.toString()}`,"GET");if(i.code!==0)throw new Error(`[123Open] ${i.message}`);let n=i.data?.download_url||"";if(!n)throw new Error("[123Open] empty download url");return n}async mkdir(e,t){let i=await this.request(`${tl}/upload/v1/file/mkdir`,"POST",{parentID:e,name:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async move(e,t){let i=await this.request(`${tl}/api/v1/file/move`,"POST",{fileIDs:[e],toParentFileID:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async rename(e,t){let i=await this.request(`${tl}/api/v1/file/name`,"PUT",{fileId:e,fileName:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async remove(e){let t=await this.request(`${tl}/api/v1/file/trash`,"POST",{fileIDs:[e]});if(t.code!==0)throw new Error(`[123Open] ${t.message}`)}}});function Lj(r){if(!r)return new Date().toISOString();let e=new Date(r.replace(" ","T")+"+08:00");return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var f4,bm,h4=J(()=>{"use strict";ve();u4();f4="0";bm=class{client;pathCache=new Map;constructor(e){this.client=new Bm(e)}async init(){await this.client.init()}fileToItem(e){let t=e.type===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:Lj(e.update_at),sign:"",type:X(e.filename,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.resolveDirId(s),c=(await this.client.getFiles(a)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fileId)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=await this.resolveDirId(s);await this.client.mkdir(a,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n),o=await this.resolveDirId(t);await this.client.move(a.id,o),this.pathCache.clear()}async copy(){throw new Error("[123Open] copy not supported")}async put(){throw new Error("[123Open] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return f4;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=f4;for(let s=0;sl.type===1&&l.filename===i[s]);if(!o)throw new Error(`[123Open] Directory '${i[s]}' not found`);n=String(o.fileId);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),o=(await this.client.getFiles(s)).find(c=>c.filename===i);if(!o)throw new Error(`[123Open] '${i}' not found`);return{id:o.fileId,isDir:o.type===1}}}});var vm,A4=J(()=>{"use strict";vm=class{addition;baseUrl;constructor(e){this.addition=e,this.baseUrl=e.region==="international"?"https://us.teambition.com":"https://www.teambition.com"}async init(){if(!this.addition.cookie)throw new Error("[Teambition] cookie is required");if(!this.addition.project_id)throw new Error("[Teambition] project_id is required");let e=await fetch(`${this.baseUrl}/api/v2/roles`,{headers:{Cookie:this.addition.cookie}});if(e.status>=400)throw new Error(`[Teambition] init failed: HTTP ${e.status}`)}async request(e,t,i,n){let s=n?"?"+new URLSearchParams(n).toString():"",a={Cookie:this.addition.cookie},o={method:t,headers:a};i!==void 0&&(o.body=JSON.stringify(i),a["Content-Type"]="application/json");let c=await fetch(`${this.baseUrl}${e}${s}`,o);if(c.status===204||c.status===201)return{};let l=await c.json().catch(()=>({}));if(l.name||l.message)throw new Error(`[Teambition] ${l.message||l.name}`);return l}async getFiles(e){let t=`${this.addition.order_by||"fileName"}${this.addition.order_direction||"Asc"}`,i={_parentId:e,_projectId:this.addition.project_id,order:t,count:"50"},n=[],s=1;for(;;){let o=await this.request("/api/collections","GET",void 0,{...i,page:String(s)});if(!Array.isArray(o)||o.length===0||(n.push(...o.filter(c=>c.title)),s++,o.length<50))break}let a=[];for(s=1;;){let o=await this.request("/api/works","GET",void 0,{...i,page:String(s)});if(!Array.isArray(o)||o.length===0||(a.push(...o),s++,o.length<50))break}return{folders:n,works:a}}async resolveDownloadUrl(e){let t=await fetch(e,{headers:{Cookie:this.addition.cookie},redirect:"manual"});if(t.status===302){let i=t.headers.get("location");if(i)return i}return e}async mkdir(e,t){await this.request("/api/collections","POST",{objectType:"collection",_projectId:this.addition.project_id,_creatorId:"",created:"",updated:"",title:t,color:"blue",description:"",workCount:0,collectionType:"",recentWorks:[],_parentId:e,subCount:null})}async move(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/move`,"PUT",{_parentId:t})}async rename(e,t,i){i?await this.request(`/api/collections/${e}`,"PUT",{title:t}):await this.request(`/api/works/${e}`,"PUT",{fileName:t})}async copy(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/fork`,"PUT",{_parentId:t})}async remove(e,t){let i=t?"/api/collections/":"/api/works/";await this.request(`${i}${e}/archive`,"POST")}}});var km,g4=J(()=>{"use strict";ve();A4();km=class{client;pathCache=new Map;constructor(e){this.client=new vm(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t),{folders:n,works:s}=await this.client.getFiles(i),a=n.map(c=>({name:c.title,size:0,is_dir:!0,modified:c.updated||new Date().toISOString(),sign:c._id,type:1,raw_url:""})),o=s.map(c=>({name:c.fileName,size:c.fileSize||0,is_dir:!1,modified:c.updated||new Date().toISOString(),sign:c._id,type:X(c.fileName,!1),thumb:c.thumbnail||c.thumbnailUrl||"",raw_url:c.downloadUrl||""}));return[...a,...o]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),{folders:o,works:c}=await this.client.getFiles(a),l=o.find(u=>u.title===n);if(l)return{name:l.title,size:0,is_dir:!0,modified:l.updated||new Date().toISOString(),sign:l._id,type:1,raw_url:""};let d=c.find(u=>u.fileName===n);if(d){let u=d.downloadUrl||"";if(u)try{u=await this.client.resolveDownloadUrl(u)}catch{}return{name:d.fileName,size:d.fileSize||0,is_dir:!1,modified:d.updated||new Date().toISOString(),sign:d._id,type:X(d.fileName,!1),thumb:d.thumbnail||d.thumbnailUrl||"",raw_url:u}}}catch{}try{return await this.client.getFiles(await this.pathToId(t)),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i,n.isDir),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.move(a.id,await this.pathToId(t),a.isDir),this.pathCache.clear()}async copy(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.copy(a.id,await this.pathToId(t),a.isDir),this.pathCache.clear()}async put(){throw new Error("[Teambition] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),{folders:a,works:o}=await this.client.getFiles(s),c=a.find(d=>d.title===i);if(c)return{id:c._id,isDir:!0};let l=o.find(d=>d.fileName===i);if(l)return{id:l._id,isDir:!1};throw new Error(`[Teambition] '${i}' not found`)}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.title===i[s]);if(!o)throw new Error(`[Teambition] Directory '${i[s]}' not found`);n=o._id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var p4,pB,Hj,m4,y4,Sm,I4=J(()=>{"use strict";ti();p4="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",pB="https://chaoxing.com/",Hj="https://groupweb.chaoxing.com",m4="https://noteyd.chaoxing.com",y4="u2oh6Vu^HWe4_AES",Sm=class{addition;cookie;persistCookie;constructor(e,t){this.addition=e,this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.addition.bbsid)throw new Error("[ChaoXing] bbsid is required");this.cookie||(this.cookie=await this.login(),this.persistCookie&&await this.persistCookie(this.cookie))}getCookie(){return this.cookie}downloadHeaders(){return{Cookie:this.cookie,Referer:pB,"User-Agent":p4}}async login(){let e=await IE(this.addition.user_name,y4),t=await IE(this.addition.password,y4),i=new FormData;i.append("uname",e),i.append("password",t),i.append("t","true");let n=await fetch("https://passport2.chaoxing.com/fanyalogin",{method:"POST",body:i}),s=[],a=typeof n.headers.getSetCookie=="function"?n.headers.getSetCookie():[];if(Array.isArray(a)&&a.length>0)for(let o of a)o&&s.push(o.split(";")[0]);else{let o=n.headers.get("set-cookie");o&&s.push(o.split(";")[0])}if(s.length===0)throw new Error("[ChaoXing] login failed: no cookie returned");return s.join("; ")}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",a={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:pB,...n},o=await fetch(`${Hj}${e}${s}`,{method:t,headers:a});if(o.status>=400)throw new Error(`[ChaoXing] request failed: HTTP ${o.status}`);return await o.json()}async requestDownload(e,t){let i={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:pB,"User-Agent":p4},n=await fetch(`${m4}${e}`,{method:t,headers:i});if(n.status>=400)throw new Error(`[ChaoXing] download request failed: HTTP ${n.status}`);return await n.json()}async getFiles(e){let t=[],i=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"1"});if(i.result!==1)throw new Error(`[ChaoXing] list failed: result=${i.result}`);i.list&&i.list.length>0&&t.push(...i.list);let n=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"2"});for(let s of n.list||[])s.content.fileId||(s.content.fileId=s.content.objectId||""),t.push(s);return t}async link(e){let t=await this.requestDownload("/screen/note_note/files/status/"+e,"POST");if(!t.download)throw new Error(`[ChaoXing] link failed: ${t.msg||"no download url"}`);return t}async mkdir(e,t){let i=await this.request("/pc/resource/addResourceFolder","GET",{bbsid:this.addition.bbsid,name:t,pid:e});if(i.result!==1)throw new Error(`[ChaoXing] mkdir failed: ${i.msg}`)}async move(e,t,i){let n=i?{bbsid:this.addition.bbsid,folderIds:e,targetId:t}:{bbsid:this.addition.bbsid,recIds:e,targetId:t},s=await this.request("/pc/resource/moveResource","GET",n);if(!s.status)throw new Error(`[ChaoXing] move failed: ${s.msg}`)}async renameFolder(e,t){let i=await this.request("/pc/resource/updateResourceFolderName","GET",{bbsid:this.addition.bbsid,folderId:e,name:t});if(i.result!==1)throw new Error(`[ChaoXing] rename failed: ${i.msg}`)}async remove(e,t){let i=t?"/pc/resource/deleteResourceFolder":"/pc/resource/deleteResourceFile",n=t?{bbsid:this.addition.bbsid,folderIds:e}:{bbsid:this.addition.bbsid,recIds:e},s=await this.request(i,"GET",n);if(s.result!==1)throw new Error(`[ChaoXing] remove failed: ${s.msg}`)}async upload(e,t,i){let s=await(await fetch(`${m4}/pc/files/getUploadConfig`,{method:"GET"})).json();if(s.result!==1||!s.msg?.token)throw new Error("[ChaoXing] get upload config failed");let a=new FormData,o=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);a.append("file",new Blob([o]),t),a.append("_token",s.msg.token),a.append("puid",String(s.msg.puid||""));let l=await(await fetch("https://pan-yz.chaoxing.com/upload",{method:"POST",body:a})).json();if(l.msg!=="success"||!l.objectId)throw new Error(`[ChaoXing] upload failed: ${l.msg}`);let d={cataid:"100000019",key:l.objectId,param:l.data||{}},u=JSON.stringify(d),f=await this.request("/pc/resource/addResource","GET",{bbsid:this.addition.bbsid,pid:e,type:"yunpan",params:encodeURIComponent("["+u+"]")});if(f.result!==1)throw new Error(`[ChaoXing] add resource failed: ${f.msg}`)}}});function w4(r){let e=r.content;if(e.folderName)return{name:e.folderName,size:0,is_dir:!0,modified:r.inserttime?new Date(r.inserttime).toISOString():new Date().toISOString(),sign:String(r.id),type:1};let t=e.fileId||e.objectId||"";return{name:e.name||"",size:Number(e.size)||0,is_dir:!1,modified:e.uploadDate?new Date(e.uploadDate).toISOString():new Date().toISOString(),sign:`${r.id}$${t}`,type:X(e.name||"",!1),raw_url:""}}var Dm,x4=J(()=>{"use strict";ve();I4();Dm=class{client;pathCache=new Map;constructor(e,t){this.client=new Sm(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>w4(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),c=(await this.client.getFiles(a)).find(l=>(l.content.folderName||l.content.name)===n);if(c){let l=w4(c);if(!l.is_dir){let d=l.sign.split("$")[1]||"";if(d)try{let u=await this.client.link(d);l.raw_url=u.download,l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[ChaoXing] failed to resolve download url"}}return l}}catch{}try{let a=await this.pathToId(t);return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(!n.isDir)throw new Error("[ChaoXing] \u6B64\u7F51\u76D8\u4E0D\u652F\u6301\u4FEE\u6539\u6587\u4EF6\u540D");await this.client.renameFolder(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.move(a.id,await this.pathToId(t),a.isDir),this.pathCache.clear()}async copy(){throw new Error("[ChaoXing] copy not supported")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",a="/"+n.join("/"),o=await this.pathToId(a);await this.client.upload(o,s,new Uint8Array(i)),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),o=(await this.client.getFiles(s)).find(c=>(c.content.folderName||c.content.name)===i);if(!o)throw new Error(`[ChaoXing] '${i}' not found`);return{id:String(o.id),isDir:!!o.content.folderName}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"-1";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="-1";for(let s=0;sl.content.folderName===i[s]);if(!o)throw new Error(`[ChaoXing] Directory '${i[s]}' not found`);n=String(o.id);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var mB,yB,IB,Kj,_m,C4=J(()=>{"use strict";mB="all",yB="albums",IB="share_albums",Kj="root",_m=class{addition;accessToken="";constructor(e){this.addition=e}async init(){await this.refreshToken()}async refreshToken(){let e=new URLSearchParams({client_id:this.addition.client_id,client_secret:this.addition.client_secret,refresh_token:this.addition.refresh_token,grant_type:"refresh_token"}),i=await(await fetch("https://www.googleapis.com/oauth2/v4/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(!i.access_token)throw new Error("[GooglePhoto] refresh token failed");this.accessToken=i.access_token}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",a={Authorization:"Bearer "+this.accessToken,"Accept-Encoding":"gzip"},o={method:t,headers:a};n!==void 0&&(a["Content-Type"]="application/json",o.body=JSON.stringify(n));let c=await fetch(`${e}${s}`,o);if(c.status===401&&(await this.refreshToken(),a.Authorization="Bearer "+this.accessToken,c=await fetch(`${e}${s}`,o)),c.status>=400){let l=await c.json().catch(()=>({}));throw new Error(`[GooglePhoto] request failed: ${l.error?.message||`HTTP ${c.status}`}`)}return c}async getFiles(e){switch(e){case mB:return this.getAllMedias();case yB:return this.getAlbums();case IB:return this.getShareAlbums();case Kj:return this.getFakeRoot();default:return this.getMedias(e)}}getFakeRoot(){return[{id:mB,title:mB},{id:yB,title:yB},{id:IB,title:IB}]}getAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/albums",{fields:"albums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getShareAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/sharedAlbums",{fields:"sharedAlbums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getMedias(e){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems:search",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",albumId:e,pageToken:"first"},"POST")}getAllMedias(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",pageToken:"first"},"GET")}async getMedia(e){return await(await this.request(`https://photoslibrary.googleapis.com/v1/mediaItems/${e}`,"GET",{fields:"mediaMetadata,baseUrl,mimeType"})).json()}async fetchItems(e,t,i){let n=[],s=t.pageToken;for(;s!=="";){let a={...t};a.pageToken==="first"&&(a.pageToken="");let c=await(await this.request(e,i,a)).json();s=c.nextPageToken||"",c.mediaItems&&n.push(...c.mediaItems),c.albums&&n.push(...c.albums),c.sharedAlbums&&n.push(...c.sharedAlbums)}return n}async link(e){let t=await this.getMedia(e),i=t.mimeType||"";return i.includes("image/")?(t.baseUrl||"")+"=d":i.includes("video/")?(t.baseUrl||"")+"=dv":t.baseUrl||""}}});function E4(r){return r.filename?{name:r.filename,size:0,is_dir:!1,modified:r.mediaMetadata?.creationTime||new Date().toISOString(),sign:r.id,type:X(r.filename,!1),thumb:r.baseUrl?r.baseUrl+"=w100-h100-c":"",raw_url:""}:{name:r.title||r.id,size:0,is_dir:!0,modified:new Date().toISOString(),sign:r.id,type:1}}var Qm,B4=J(()=>{"use strict";ve();C4();Qm=class{client;pathCache=new Map;constructor(e){this.client=new _m(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>E4(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),c=(await this.client.getFiles(a)).find(l=>(l.filename||l.title)===n);if(c){let l=E4(c);if(!l.is_dir)try{l.raw_url=await this.client.link(c.id)}catch{l.raw_url_error="[GooglePhoto] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[GooglePhoto] mkdir not supported")}async rename(){throw new Error("[GooglePhoto] rename not supported")}async remove(){throw new Error("[GooglePhoto] remove not supported")}async move(){throw new Error("[GooglePhoto] move not supported")}async copy(){throw new Error("[GooglePhoto] copy not supported")}async put(){throw new Error("[GooglePhoto] upload not supported")}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"root";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=i[0];for(let s=1;s(l.filename||l.title)===i[s]);if(!o)throw new Error(`[GooglePhoto] Directory '${i[s]}' not found`);n=o.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return this.pathCache.set(t,n),n}}});var Fm,b4=J(()=>{"use strict";Fm=class{addition;accessToken="";tokenType="Bearer";persist;constructor(e,t){this.addition=e,this.persist=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[FebBox] client_id and client_secret are required");await this.refreshToken()}async refreshToken(){let e=new URLSearchParams;this.addition.refresh_token?(e.set("grant_type","refresh_token"),e.set("refresh_token",this.addition.refresh_token)):e.set("grant_type","client_credentials"),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let i=await(await fetch("https://api.febbox.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==1||!i.data?.access_token)throw new Error(`[FebBox] token fetch failed: ${i.msg}`);this.accessToken=i.data.access_token,this.tokenType=i.data.token_type||"Bearer",i.data.refresh_token&&(this.addition.refresh_token=i.data.refresh_token,this.persist&&await this.persist(i.data.refresh_token))}async request(e){let t=new FormData;for(let[s,a]of Object.entries(e))t.append(s,a);let n=await(await fetch("https://api.febbox.com/oauth",{method:"POST",headers:{Authorization:`${this.tokenType} ${this.accessToken}`},body:t})).json().catch(()=>({}));if(n.code===-10001&&n.server_name)return await this.refreshToken(),this.request(e);if(n.code!==0&&n.code!==1)throw new Error(`[FebBox] ${n.msg||n.code}`);return n}async getFilesList(e){let t=this.addition.page_size||100,i=[],n=1;for(;;){let a=(await this.request({module:"file_list",parent_id:e,page:String(n),pagelimit:String(t),order:this.addition.sort_rule||"name_asc"})).data?.file_list||[];if(i.push(...a),a.length{"use strict";ve();b4();Pm=class{client;userIp;pathCache=new Map;constructor(e,t){this.client=new Fm(e,t),this.userIp=e.user_ip||""}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFilesList(i)).map(s=>v4(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),c=(await this.client.getFilesList(a)).find(l=>l.file_name===n);if(c){let l=v4(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadLink(l.sign,this.userIp)}catch{l.raw_url_error="[FebBox] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.makeDir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.move(a.id,await this.pathToId(t)),this.pathCache.clear()}async copy(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.copy(a.id,await this.pathToId(t)),this.pathCache.clear()}async put(){throw new Error("[FebBox] upload not supported")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),o=(await this.client.getFilesList(s)).find(c=>c.file_name===i);if(!o)throw new Error(`[FebBox] '${i}' not found`);return{id:String(o.fid),isDir:o.is_dir===1}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"0";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="0";for(let s=0;sl.file_name===i[s]&&l.is_dir===1);if(!o)throw new Error(`[FebBox] Directory '${i[s]}' not found`);n=String(o.fid);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var Gj,zj,Jj,jj,$j,Tm,S4=J(()=>{"use strict";Gj="https://rest-api.degoo.com/login",zj="https://rest-api.degoo.com/access-token/v2",Jj="https://production-appsync.degoo.com/graphql",jj="da2-vs6twz5vnjdavpqndtbzg3prra",$j="CgAQAg",Tm=class{addition;accessToken="";refreshToken="";rootId="0";persist;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.persist=t}async init(){await this.ensureValidToken(),await this.getDevices()}getRootId(){return this.rootId}async saveTokens(){this.persist&&await this.persist({accessToken:this.accessToken,refreshToken:this.refreshToken})}isTokenExpired(){if(!this.accessToken)return!0;try{let e=this.accessToken.split(".");if(e.length!==3)return!0;let t=JSON.parse(atob(e[1].replace(/-/g,"+").replace(/_/g,"/"))),i=Number(t.exp)*1e3;return Date.now()+300*1e3>i}catch{return!0}}async ensureValidToken(){if(this.isTokenExpired()){if(this.refreshToken)try{await this.refreshAccessToken();return}catch{}this.addition.username&&this.addition.password&&await this.login()}}async refreshAccessToken(){let t=await(await fetch(zj,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({RefreshToken:this.refreshToken})})).json();if(!t.AccessToken)throw new Error("[Degoo] refresh token failed");this.accessToken=t.AccessToken,await this.saveTokens()}async login(){let t=await(await fetch(Gj,{method:"POST",headers:{"Content-Type":"application/json",Origin:"https://app.degoo.com"},body:JSON.stringify({GenerateToken:!0,Username:this.addition.username,Password:this.addition.password})})).json();if(t.RefreshToken)this.refreshToken=t.RefreshToken,await this.refreshAccessToken();else if(t.Token)this.accessToken=t.Token,this.refreshToken="";else throw new Error("[Degoo] login failed: no valid token");await this.saveTokens()}async apiCall(e,t,i){await this.ensureValidToken(),i.Token!==void 0&&(i.Token=this.accessToken);let s=await(await fetch(Jj,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":jj,Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify({operationName:e,query:t,variables:i})})).json();if(s.errors&&s.errors.length>0){let a=s.errors[0];if(a.errorType==="Unauthorized")return await this.login(),i.Token=this.accessToken,this.apiCall(e,t,i);throw new Error(`[Degoo] GraphQL error: ${a.message}`)}return s.data}async getDevices(){let t=await this.apiCall("GetFileChildren5","query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ParentID } NextToken } }",{Token:this.accessToken,ParentID:"0",Limit:10,Order:3});if(this.rootId==="0"){let i=t?.getFileChildren5?.Items;i&&i.length>0&&(this.rootId=i[0].ParentID)}}async getFileChildren5(e){let t="query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime FilePath IsInRecycleBin DeviceID MetadataID } NextToken } }",i=[],n="";for(;;){let s={Token:this.accessToken,ParentID:e,Limit:1e3,Order:3};n&&(s.NextToken=n);let a=await this.apiCall("GetFileChildren5",t,s),o=a?.getFileChildren5?.Items||[];if(i.push(...o),n=a?.getFileChildren5?.NextToken||"",!n)break}return i}async getOverlay4(e){return(await this.apiCall("GetOverlay4","query GetOverlay4($Token: String!, $ID: IDType!) { getOverlay4(Token: $Token, ID: $ID) { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime URL FilePath IsInRecycleBin DeviceID MetadataID } }",{Token:this.accessToken,ID:{FileID:e}}))?.getOverlay4}async mkdir(e,t){await this.apiCall("SetUploadFile3","mutation SetUploadFile3($Token: String!, $FileInfos: [FileInfoUpload3]!) { setUploadFile3(Token: $Token, FileInfos: $FileInfos) }",{Token:this.accessToken,FileInfos:[{Checksum:$j,Name:t,CreationTime:Date.now(),ParentID:e,Size:0}]})}async move(e,t){await this.apiCall("SetMoveFile","mutation SetMoveFile($Token: String!, $Copy: Boolean, $NewParentID: String!, $FileIDs: [String]!) { setMoveFile(Token: $Token, Copy: $Copy, NewParentID: $NewParentID, FileIDs: $FileIDs) }",{Token:this.accessToken,Copy:!1,NewParentID:t,FileIDs:[e]})}async rename(e,t){await this.apiCall("SetRenameFile","mutation SetRenameFile($Token: String!, $FileRenames: [FileRenameInfo]!) { setRenameFile(Token: $Token, FileRenames: $FileRenames) }",{Token:this.accessToken,FileRenames:[{ID:e,NewName:t}]})}async remove(e){await this.apiCall("SetDeleteFile5","mutation SetDeleteFile5($Token: String!, $IsInRecycleBin: Boolean!, $IDs: [IDType]!) { setDeleteFile5(Token: $Token, IsInRecycleBin: $IsInRecycleBin, IDs: $IDs) }",{Token:this.accessToken,IsInRecycleBin:!1,IDs:[{FileID:e}]})}}});function wB(r){return r===1||r===2||r===10}function D4(r){let e=wB(r.Category),t=Number(r.Size)||0,i=Number(r.LastModificationTime);return{name:r.Name,size:e?0:t,is_dir:e,modified:i?new Date(i).toISOString():new Date().toISOString(),sign:r.ID,type:X(r.Name,e),raw_url:""}}var Um,_4=J(()=>{"use strict";ve();S4();Um=class{client;pathCache=new Map;constructor(e,t){this.client=new Tm(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFileChildren5(i)).map(s=>D4(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),c=(await this.client.getFileChildren5(a)).find(l=>l.Name===n);if(c){let l=D4(c);if(!l.is_dir)try{let d=await this.client.getOverlay4(c.ID);l.raw_url=d.URL||""}catch{l.raw_url_error="[Degoo] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n);await this.client.move(a.id,await this.pathToId(t)),this.pathCache.clear()}async copy(){throw new Error("[Degoo] copy not supported")}async put(){throw new Error("[Degoo] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),o=(await this.client.getFileChildren5(s)).find(c=>c.Name===i);if(!o)throw new Error(`[Degoo] '${i}' not found`);return{id:o.ID,isDir:wB(o.Category)}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootId();if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.client.getRootId();for(let s=0;sl.Name===i[s]&&wB(l.Category));if(!o)throw new Error(`[Degoo] Directory '${i[s]}' not found`);n=o.ID;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Ud(r){return new TextEncoder().encode(r)}function U4(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}function Zj(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function R4(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function P4(r,e,t){if(T4){let{createCipheriv:a}=await import("node:crypto"),o=a("aes-128-cbc",Buffer.from(e),Buffer.from(t));return new Uint8Array(Buffer.concat([o.update(Buffer.from(r)),o.final()]))}let i=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),n=U4(r),s=await crypto.subtle.encrypt({name:"AES-CBC",iv:t},i,n);return new Uint8Array(s)}async function e$(r,e){if(T4){let{createCipheriv:a}=await import("node:crypto"),o=a("aes-128-ecb",Buffer.from(e),null);return new Uint8Array(Buffer.concat([o.update(Buffer.from(r)),o.final()]))}let t=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),i=U4(r),n=new Uint8Array(i.length),s=new Uint8Array(16);for(let a=0;a0n;)e&1n&&(i=i*r%t),r=r*r%t,e>>=1n;return i}function n$(r){let e=new Uint8Array(128);e.set(r,112);let t=t$(e),i=BigInt("0x"+Wj),n=i$(t,Xj,i);return r$(n,128)}function s$(){let r=new Uint8Array(16),e=new Uint8Array(16);for(let t=0;t<16;t++){let i=Math.floor(Math.random()*F4.length),n=F4.charCodeAt(i);r[t]=n,e[15-t]=n}return{key:r,reversed:e}}async function N4(r){let e=Ud(JSON.stringify(r)),{key:t,reversed:i}=s$(),n=await P4(e,Ud(Vj),Ud(Q4)),s=await P4(n,i,Ud(Q4));return{params:Zj(s),encSecKey:R4(n$(t))}}async function O4(r){let e=Ud(JSON.stringify(r)),t=await e$(e,Ud(Yj));return{eparams:R4(t).toUpperCase()}}var Vj,Yj,Q4,F4,Wj,Xj,T4,q4=J(()=>{"use strict";Vj="0CoJUm6Qyw8W8jud",Yj="rFgB&h#%2?^eDg:Q",Q4="0102030405060708",F4="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",Wj="e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7",Xj=65537n,T4=typeof process<"u"&&process?.release?.name==="node"});var Rm,M4=J(()=>{"use strict";q4();Rm=class{addition;csrfToken="";musicU="";constructor(e){this.addition=e}init(){if(this.csrfToken=this.getCookie("__csrf"),this.musicU=this.getCookie("MUSIC_U"),!this.csrfToken||!this.musicU)throw new Error("[NeteaseMusic] cookie must contain __csrf and MUSIC_U")}getCookie(e){let i=new RegExp(e+"=([^(;|$)]+)").exec(this.addition.cookie);return i?i[1]:""}async request(e,t,i){let n={Cookie:this.addition.cookie};e.includes("music.163.com")&&(n.Referer="https://music.163.com");let s;if(i.crypto==="weapi"?(s=await N4(i.data),e=e.replace(/\/\w*api\//,"/weapi/")):(s=await O4({url:e.replace(/\/\w*api\//,"/api/"),method:t,params:i.data}),n["User-Agent"]="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",e="https://music.163.com/api/linux/forward"),i.cookies){let o=i.cookies.map(c=>`${c.name}=${c.value}`).join("; ");n.Cookie=n.Cookie+"; "+o}return(await fetch(e,{method:t,headers:{...n,"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()})).json()}async getSongObjs(e){return(await this.request("https://music.163.com/weapi/v1/cloud/get","POST",{crypto:"weapi",data:{limit:String(e),offset:"0"},cookies:[{name:"os",value:"pc"}]})).data||[]}async getSongLink(e){let t=await this.request("https://music.163.com/api/song/enhance/player/url","POST",{crypto:"linuxapi",data:{ids:"["+e+"]",br:"999000"},cookies:[{name:"os",value:"pc"}]});if(!t.data||t.data.length<1)throw new Error("[NeteaseMusic] song url not found");return t.data[0].url||""}async removeSong(e){await this.request("http://music.163.com/weapi/cloud/del","POST",{crypto:"weapi",data:{songIds:"["+e+"]"}})}}});function L4(r){return{name:r.fileName,size:r.fileSize,is_dir:!1,modified:r.addTime?new Date(r.addTime).toISOString():new Date().toISOString(),sign:String(r.songId),type:X(r.fileName,!1),thumb:r.simpleSong?.al?.picUrl||"",raw_url:""}}var Nm,H4=J(()=>{"use strict";ve();M4();Nm=class{client;songLimit;constructor(e){this.client=new Rm(e),this.songLimit=e.song_limit||200}async init(){this.client.init()}async list(){return(await this.client.getSongObjs(this.songLimit)).map(t=>L4(t))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"";if(!n)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let a=(await this.client.getSongObjs(this.songLimit)).find(o=>o.fileName===n);if(a){let o=L4(a);try{o.raw_url=await this.client.getSongLink(o.sign)}catch{o.raw_url_error="[NeteaseMusic] failed to resolve song url"}return o}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(){throw new Error("[NeteaseMusic] mkdir not supported")}async rename(){throw new Error("[NeteaseMusic] rename not supported")}async remove(e,t,i){let n=t.split("/").filter(Boolean),s=n[n.length-1],o=(await this.client.getSongObjs(this.songLimit)).find(c=>c.fileName===s);if(!o)throw new Error(`[NeteaseMusic] '${s}' not found`);await this.client.removeSong(String(o.songId))}async move(){throw new Error("[NeteaseMusic] move not supported")}async copy(){throw new Error("[NeteaseMusic] copy not supported")}async put(){throw new Error("[NeteaseMusic] upload not supported in stateless environment")}}});function _o(r){return new TextEncoder().encode(r)}function $4(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function z4(r){let e=typeof r=="string"?_o(r):r,t=await crypto.subtle.digest("SHA-256",e);return $4(new Uint8Array(t))}async function Om(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,r);return new Uint8Array(i)}function J4(r){return encodeURIComponent(r).replace(/%20/g,"%20").replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}async function j4(r){let e=r.now??new Date,t=e.toISOString().slice(0,10),i=e.toISOString(),n=(BigInt(Math.floor(e.getTime()))*1000000n+BigInt(Math.floor(Math.random()*1e6))).toString(36),s=r.bodyRaw.length>0,a={host:r.apiHost,"x-hl-nonce":n,"x-hl-timestamp":i},o=[];s&&(a["content-type"]="application/json; charset=utf-8",o.push("content-type"));let c=[...o].sort(),l=c.map(R=>`${R}:${a[R]} +`).join(""),d=c.join(";"),u="";r.query&&Object.keys(r.query).length>0&&(u=Object.keys(r.query).sort().map(U=>`${J4(U)}=${J4(r.query[U]??"")}`).join("&"));let f=await z4(r.bodyRaw),A=[r.method,r.apiPath,u,l,d,f].join(` +`),g=`${t}/${r.accessToken}/${G4}`,p=[K4,i,g,await z4(A)].join(` +`),I=_o(a$+r.secretKey),m=await Om(_o(t),I),w=await Om(_o(r.accessToken),m),B=await Om(_o(G4),w),C=$4(await Om(_o(p),B)),x=`${K4} Credential=${r.secretId}/${g}, SignedHeaders=${d}, Signature=${C}`;a.authorization=x;let _=`https://${r.apiHost}${r.apiPath}${u?"?"+u:""}`;return{headers:a,url:_}}function o$(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var K4,a$,G4,qm,V4=J(()=>{"use strict";K4="HL6-HMAC-SHA256",a$="HL6",G4="hl6_request";qm=class{addition;accessToken="";host;persistRefreshToken;constructor(e,t){this.addition=e,this.host=e.host||"openapi.2dland.cn",this.persistRefreshToken=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[HalalCloud] client_id and client_secret are required");if(!this.addition.refresh_token)throw new Error("[HalalCloud] refresh_token \u4E3A\u7A7A\uFF1A\u8BF7\u4ECE HalalCloud \u5B98\u65B9\u83B7\u53D6 refresh_token");await this.refreshToken()}async refreshToken(){let e={refresh_token:this.addition.refresh_token,grant_type:"refresh_token",client_id:this.addition.client_id},t=_o(JSON.stringify(e)),i=await j4({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:"/v6/oauth/refresh_token",bodyRaw:t}),s=await(await fetch(i.url,{method:"POST",headers:i.headers,body:t})).json().catch(()=>({}));if(!s.access_token)throw new Error("[HalalCloud] refresh token failed");this.accessToken=s.access_token,s.refresh_token&&(this.addition.refresh_token=s.refresh_token,this.persistRefreshToken&&await this.persistRefreshToken(s.refresh_token))}async request(e,t,i=!1){let n=t!==void 0?_o(JSON.stringify(t)):new Uint8Array(0),s=await j4({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:e,bodyRaw:n}),a=await fetch(s.url,{method:"POST",headers:s.headers,body:n.length>0?n:void 0});if(a.status===401&&!i)return await this.refreshToken(),this.request(e,t,!0);let o=await a.text(),c;try{c=JSON.parse(o)}catch{c={}}if(a.status>=300)throw new Error(`[HalalCloud] API error: ${c.message||c.msg||`HTTP ${a.status}`}`);return c}async listFiles(e){let t=[],i="";for(;;){let n={parent:{path:e},list_info:{limit:100,token:i}},s=await this.request("/v6/userfile/list",n),a=s.files||[];if(t.push(...a),i=s.list_info?.token||"",!i||a.length===0)break}return t}async getFile(e){let t=await this.request("/v6/userfile/get",{path:e});return t.identity?t:null}async createDir(e,t){let i=o$(e,t);await this.request("/v6/userfile/create",{parent:e,path:i,name:t,dir:!0})}async rename(e,t){await this.request("/v6/userfile/rename",{path:e,name:t})}async move(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/move",n)}async copy(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/copy",n)}async remove(e,t,i){let n={source:[{path:e,identity:t,dir:i}]};await this.request("/v6/userfile/delete",n)}async getDownloadUrl(e,t){let i=await this.request("/v6/userfile/get_direct_download_address",{path:e,identity:t});if(!i.download_address)throw new Error("[HalalCloud] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return i.download_address}}});function xB(r){return typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):0}function Y4(r){let e=r.dir===!0,t=xB(r.update_ts),i=xB(r.create_ts),n=t||i;return{name:r.name||"",size:e?0:xB(r.size),is_dir:e,modified:n?new Date(n*1e3).toISOString():new Date().toISOString(),sign:r.identity||r.path||"",type:X(r.name||"",e),raw_url:""}}function W4(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}function X4(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var Mm,Z4=J(()=>{"use strict";ve();V4();Mm=class{client;rootPath;constructor(e,t){this.client=new qm(e,t),this.rootPath=W4(e.root_folder_id||"/")}async init(){await this.client.init()}fullPath(e){let t=W4(e);return this.rootPath==="/"?t:t==="/"?this.rootPath:this.rootPath+t}async list(e,t){return(await this.client.listFiles(this.fullPath(t))).map(Y4)}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",a="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(a==="//"?"/":a)).find(l=>l.name===s);if(c){let l=Y4(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.path||i,c.identity||"")}catch{l.raw_url_error="[HalalCloud] failed to resolve download url"}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let n=this.fullPath(t).split("/").filter(Boolean),s=n.pop()||"new_folder",a="/"+n.join("/");await this.client.createDir(a==="//"?"/":a,s)}async rename(e,t,i){let n=this.fullPath(t);await this.client.rename(n,i)}async remove(e,t,i){let n=this.fullPath(t),s=await this.resolveEntry(n);await this.client.remove(s.path,s.identity,s.isDir)}async move(e,t,i,n,s){let a=this.fullPath(n),o=this.fullPath(t),c=await this.resolveEntry(a),l=a.split("/").filter(Boolean).pop()||"";await this.client.move(c.path,X4(o,l),c.identity)}async copy(e,t,i,n,s){let a=this.fullPath(n),o=this.fullPath(t),c=await this.resolveEntry(a),l=a.split("/").filter(Boolean).pop()||"";await this.client.copy(c.path,X4(o,l),c.identity)}async put(){throw new Error("[HalalCloud] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),a=(await this.client.listFiles(n==="//"?"/":n)).find(o=>o.name===i);if(!a)throw new Error(`[HalalCloud] '${i}' not found`);return{path:a.path||e,identity:a.identity||"",isDir:a.dir===!0}}}});function d$(r){let e=(r||"").trim();if(!e)return"";if(/^Bearer\s+/i.test(e))return e.replace(/^Bearer\s+/i,"").trim();if(/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(e))return e;let t={};for(let n of e.split(";")){let s=n.indexOf("=");if(s<0)continue;let a=n.slice(0,s).trim(),o=n.slice(s+1).trim();a&&(t[a]=o)}let i=n=>{let s=t[n]||"";return/^Bearer\s+/i.test(s)?s.replace(/^Bearer\s+/i,"").trim():s};return i("sso-token")||i("token")||i("authorization")||""}function eF(r){let e=4294967295;for(let t=0;t>>8;return(e^4294967295)>>>0}function B$(r){let e=Math.round(1e7*Math.random()).toString(),t=new Date,n=Math.round((t.getTime()+8*36e5)/1e3).toString(),s=t.getUTCFullYear(),a=String(t.getUTCMonth()+1).padStart(2,"0"),o=String(t.getUTCDate()).padStart(2,"0"),c=String(t.getUTCHours()+8).padStart(2,"0"),l=String(t.getUTCMinutes()).padStart(2,"0"),u=`${s}${a}${o}${c}${l}`.split("").map(p=>E$[parseInt(p)]).join(""),f=(eF(u)>>>0).toString(),A=[n,e,r,"web","3",f].join("|"),g=(eF(A)>>>0).toString();return`${f}=${n}-${e}-${g}`}function b$(r){let e=r.indexOf("?"),t=e>=0?r.substring(0,e):r,i=e>=0?r.substring(e+1):"",n=new URL(r),s=B$(n.pathname);return`${t}?${i}${i?"&":""}${s}`}var Gn,c$,l$,u$,f$,h$,A$,g$,p$,m$,y$,I$,w$,x$,C$,E$,Lm,tF=J(()=>{"use strict";Gn="https://yun.123pan.com/b/api",c$="https://login.123pan.com/api",l$=c$+"/user/sign_in";u$=Gn+"/user/info",f$=Gn+"/file/list/new",h$=Gn+"/file/download_info",A$=Gn+"/file/upload_request",g$=Gn+"/file/mod_pid",p$=Gn+"/file/rename",m$=Gn+"/file/trash",y$=Gn+"/file/upload_request",I$=Gn+"/file/s3_upload_object/auth",w$=Gn+"/file/s3_repare_upload_parts_batch",x$=Gn+"/file/upload_complete/v2",C$=(()=>{let r=new Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();E$=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"];Lm=class{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=e,this.onTokenUpdate=t}getRootId(){return(this.addition.root_id||"0").trim()||"0"}async login(){if(this.addition.access_token){this.accessToken=this.addition.access_token;try{await this.userInfo(!0);return}catch{this.accessToken=""}}if(this.addition.cookie){let e=d$(this.addition.cookie);if(e){this.accessToken=e;try{await this.userInfo(!0),this.addition.access_token=e,this.onTokenUpdate?.(e);return}catch{this.accessToken=""}}}if(!this.addition.username||!this.addition.password)throw new Error("123 \u7F51\u76D8\u767B\u5F55\u51ED\u8BC1\u7F3A\u5931\uFF1A\u8BF7\u586B\u5199 123 \u7F51\u76D8\u624B\u673A\u53F7 + \u5BC6\u7801\uFF1B\u82E5\u90E8\u7F72\u73AF\u5883\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\uFF0C\u53EF\u5728\u300CCookie\u300D\u5B57\u6BB5\u7C98\u8D34\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u7684 Cookie\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u586B\u5199\u6709\u6548\u7684\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/ \u540E\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u83B7\u53D6\uFF09\u3002");await this.signIn()}async signIn(){let t=/@/.test(this.addition.username)?{mail:this.addition.username,password:this.addition.password,type:2}:{passport:this.addition.username,password:this.addition.password,remember:!0},n=await(await fetch(l$,{method:"POST",headers:{"Content-Type":"application/json",origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"},body:JSON.stringify(t)})).json();if(n.code!==200)throw new Error(`123 \u7F51\u76D8\u767B\u5F55\u5931\u8D25\uFF08${n.message||`code ${n.code}`}\uFF09\u3002\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP \u88AB 123 \u5224\u5B9A\u4E3A\u5883\u5916/\u964C\u751F\u8BBE\u5907\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\uFF0C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\u62E6\u622A\u3002\u53EF\u9760\u65B9\u6848\uFF1A\u2460 \u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/\uFF08\u767B\u5F55\u4E00\u6B21\u6216\u4FEE\u6539\u5BC6\u7801\u53EF\u89E3\u9664\u8D26\u53F7\u98CE\u9669\uFF09\uFF0C\u6253\u5F00\u5F00\u53D1\u8005\u5DE5\u5177 \u2192 Application/Network \u2192 \u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Bearer \u4EE4\u724C\uFF0C\u586B\u5165\u5B58\u50A8\u8BBE\u7F6E\u7684 access_token \u5B57\u6BB5\uFF08\u4EE4\u724C\u6709\u6548\u671F\u5185 API \u8BF7\u6C42\u4E0D\u53D7 IP \u98CE\u63A7\u5F71\u54CD\uFF09\uFF1B\u2461 \u6216\u5C06\u8BE5\u7F51\u76D8\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08Node \u5BB9\u5668\u6A21\u5F0F\uFF09\u540E\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u3002`);if(this.accessToken=n.data?.token||"",!this.accessToken)throw new Error("login returned empty token");this.addition.access_token=this.accessToken,this.onTokenUpdate?.(this.accessToken)}async request(e,t,i,n,s=!1){let a=async()=>{let l=b$(e),d={origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/",authorization:this.accessToken?`Bearer ${this.accessToken}`:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:this.addition.platform||"web","app-version":"3",Accept:"application/json"},u={method:t,headers:d};return i!==void 0&&t!=="GET"&&(d["Content-Type"]="application/json",u.body=JSON.stringify(i)),(await fetch(l,u)).json()},o=await a(),c=o?.code;if(c!==0&&c!==200){if(c===401&&!s){await this.login(),o=await a();let l=o?.code;if(l!==0&&l!==200)throw new Error(o?.message||`api error: code ${l}`);return o}throw new Error(o?.message||`api error: code ${c}`)}return o}async userInfo(e=!1){return(await this.request(u$,"GET",void 0,void 0,e)).data}async getFiles(e,t){let i=[],n=1,s="0",a=t?.maxPages??45;for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn(`[123Pan] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${t.budget.limit} \u6B21)\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\u6216\u8DEF\u5F84\u8FC7\u6DF1\uFF09`);break}t.budget.used++}if(n>a){console.warn(`[123Pan] \u5206\u9875\u8D85\u8FC7 ${a} \u9875\uFF0C\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\uFF09`);break}let o=new URLSearchParams({driveId:"0",limit:"100",next:s,orderBy:this.addition.order_by||"file_id",orderDirection:this.addition.order_direction||"desc",parentFileId:e,trashed:"false",SearchData:"",Page:String(n),OnlyLookAbnormalFile:"0",event:"homeListFile",operateType:"4",inDirectSpace:"false"}),c=`${f$}?${o.toString()}`,l=await this.request(c,"GET"),d=l.data?.InfoList||[];if(i.push(...d),t?.findName){let f=d.find(A=>A.FileName===t.findName&&(t.findIsDir===void 0||A.Type===1===t.findIsDir));if(f)return[f]}let u=String(l.data?.Next??"-1");if(!l.data||d.length===0||u==="-1")break;s=u,n++}return i}async getDownloadLink(e){let t={driveId:0,etag:e.Etag,fileId:e.FileId,fileName:e.FileName,s3keyFlag:e.S3KeyFlag,size:e.Size,type:e.Type},n=(await this.request(h$,"POST",t)).data?.DownloadUrl||"";if(!n)throw new Error("no download url");try{let o=new URL(n).searchParams.get("params");if(o){let c=atob(o);n=new URL(c).toString()}}catch{}let s=await fetch(n,{method:"GET",redirect:"manual",headers:{Referer:"https://yun.123pan.com/"}});return s.status===302?s.headers.get("location")||n:s.status<300&&(await s.json().catch(()=>({}))).data?.redirect_url||n}async mkdir(e,t){let i=await this.request(A$,"POST",{driveId:0,etag:"",fileName:t,parentFileId:parseInt(e,10)||0,size:0,type:1});return i.data?.FileId!=null?String(i.data.FileId):""}async rename(e,t){await this.request(p$,"POST",{driveId:0,fileId:parseInt(e,10),fileName:t})}async move(e,t){await this.request(g$,"POST",{fileIdList:e.map(i=>({FileId:parseInt(i,10)})),parentFileId:parseInt(t,10)})}async remove(e,t){await this.request(m$,"POST",{driveId:0,operation:!0,fileTrashInfoList:[t]})}async getPartUploadUrl(e,t,i){let s=(i===1?await this.getS3Auth(e,t,t+1):await this.getS3PreSignedUrls(e,t,t+1)).presignedUrls[String(t)];if(!s)throw new Error(`[123Pan] \u672A\u8FD4\u56DE\u7B2C ${t} \u5206\u7247\u7684\u4E0A\u4F20 URL`);return s}async completeUpload(e,t,i){await this.completeS3(e,t,i)}async createUpload(e,t,i,n){let s={driveId:0,duplicate:2,etag:n,fileName:e,parentFileId:t,size:i,type:0};return(await this.request(y$,"POST",s)).data}async getS3Auth(e,t,i){let n={StorageNode:e.StorageNode,bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId};return(await this.request(I$,"POST",n)).data}async getS3PreSignedUrls(e,t,i){let n={bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId,StorageNode:e.StorageNode};return(await this.request(w$,"POST",n)).data}async completeS3(e,t,i){await this.request(x$,"POST",{StorageNode:e.StorageNode,bucket:e.Bucket,fileId:e.FileId,fileSize:t,isMultipart:i,key:e.Key,uploadId:e.UploadId})}async uploadFile(e,t,i){let n="";try{n=(await import("node:crypto")).createHash("md5").update(i).digest("hex")}catch{n=""}let s=await this.createUpload(t,e,i.length,n);if(s.Reuse||s.Key==="")return;let a=16*1024*1024,o=1;i.length>a&&(o=Math.ceil(i.length/a));let c=i.length%a;c===0&&(c=a);let l;o===1?l=(await this.getS3Auth(s,1,2)).presignedUrls:l=(await this.getS3PreSignedUrls(s,1,o+1)).presignedUrls;for(let d=1;d<=o;d++){let u=(d-1)*a,f=d===o?c:a,A=l[String(d)];if(!A)throw new Error(`[123Pan] \u7F3A\u5C11\u7B2C ${d} \u5206\u7247\u7684\u4E0A\u4F20 URL`);let g=i.subarray(u,u+f),p=await fetch(A,{method:"PUT",body:g});if(p.status!==200){let I=await p.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${d}/${o} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${p.status} ${I}`)}}await this.completeS3(s,i.length,o>1)}}});function v$(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function rF(r){let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.bucket||!e.key||!e.uploadId)throw new Error("[123Pan] invalid upload session");return e}function iF(r){return{AccessKeyId:"",SecretAccessKey:"",SessionToken:"",Bucket:r.bucket,Key:r.key,UploadId:r.uploadId,FileId:r.fileId,StorageNode:r.storageNode,EndPoint:"",Reuse:!1}}function nF(r){let e=r.Type===1;return{name:r.FileName,size:r.Size||0,is_dir:e,modified:r.UpdateAt?new Date(r.UpdateAt).toISOString():new Date().toISOString(),sign:String(r.FileId),type:X(r.FileName,e),thumb:"",raw_url:""}}var Hm,sF=J(()=>{"use strict";ve();$e();tF();Hm=class{client;addition;pathIdCache=new Map;budget={used:0,limit:45};constructor(e,t){this.addition=e,this.client=new Lm(e,t)}async init(){await this.client.login()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,a=t,o="";for(let c=0;c{try{return decodeURIComponent(l)}catch{return l}})(),f=(await this.client.getFiles(a,{findName:d,findIsDir:!0,budget:this.budget})).find(A=>A.Type===1&&(A.FileName===l||A.FileName===d||String(A.FileId)===l||String(A.FileId)===d));if(!f)throw new Error(`folder not found: ${l}`);a=String(f.FileId),o="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(o,a)}return a}async ensureFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=t,a="";for(let o=0;o{try{return decodeURIComponent(c)}catch{return c}})();a="/"+n.slice(0,o+1).join("/");let d=this.pathIdCache.get(a);if(d===void 0){let u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(A=>A.Type===1&&(A.FileName===c||A.FileName===l));if(f)d=String(f.FileId);else{try{let A=await this.client.mkdir(s,l);A&&(d=A)}catch{}if(d===void 0){if(u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(A=>A.Type===1&&A.FileName===l),!f)throw new Error(`[123Pan] \u81EA\u52A8\u521B\u5EFA\u76EE\u5F55\u5931\u8D25: ${c}`);d=String(f.FileId)}}this.pathIdCache.set(a,d)}s=d}return s}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("invalid path");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),a=await this.resolveFolderId(s),c=(await this.client.getFiles(a,{findName:n,budget:this.budget})).find(l=>String(l.FileId)===i||String(l.FileId)===n||l.FileName===i||l.FileName===n);if(!c)throw new Error(`file not found: ${i}`);return{file:c,parentId:a,name:i}}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),s=(await this.client.getFiles(i,{budget:this.budget})).map(nF);return ue(s,this.addition.order_by||"file_name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let a=this.client.getRootId();return{name:a,size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}let{file:n}=await this.resolveFile(t),s=nF(n);if(n.Type!==1)try{s.raw_url=await this.client.getDownloadLink(n),s.raw_url||(s.raw_url_error="123 \u7F51\u76D8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08DownloadUrl \u4E3A\u7A7A\uFF09\u3002\u5E38\u89C1\u539F\u56E0\uFF1Aaccess_token/cookie \u5931\u6548\uFF0C\u6216\u8BE5\u6587\u4EF6\u5DF2\u5220\u9664/\u88AB\u9650\u5236\u4E0B\u8F7D\u3002\u8BF7\u5230\u7BA1\u7406\u540E\u53F0\u66F4\u65B0 access_token \u540E\u91CD\u8BD5\u3002")}catch(a){s.raw_url_error=`123 \u7F51\u76D8\u83B7\u53D6\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25\uFF1A${a?.message||String(a)}\u3002`+(String(a?.message||"").includes("\u767B\u5F55\u5931\u8D25")?"\u5F53\u524D\u90E8\u7F72\u51FA\u53E3 IP \u53EF\u80FD\u88AB 123 \u98CE\u63A7\uFF0C\u8BF7\u914D\u7F6E\u6709\u6548\u7684 access_token\uFF08\u6D4F\u89C8\u5668\u767B\u5F55 123 \u7F51\u76D8\u540E\u590D\u5236 Bearer \u4EE4\u724C\uFF09\u3002":"\u8BF7\u68C0\u67E5 access_token/cookie \u662F\u5426\u6709\u6548\uFF0C\u6216\u5728 123 \u7F51\u76D8\u7F51\u9875\u7AEF\u786E\u8BA4\u8BE5\u6587\u4EF6\u53EF\u4E0B\u8F7D\u3002"),console.warn(`[123Pan] getDownloadLink warning for ${n.FileName}:`,a.message)}else s.raw_url_error="\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002";return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFolderId(s);await this.client.mkdir(a,n)}async rename(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.rename(String(n.FileId),i)}async remove(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.remove(String(n.FileId),n)}async move(e,t,i,n,s){this.budget.used=0;let{file:a}=await this.resolveFile(n),o=String(t).split("/").filter(Boolean),c=await this.resolveFolderId("/"+o.join("/"));await this.client.move([String(a.FileId)],c)}async copy(){throw new Error("[123Pan] Copy is not supported by 123 Cloud Drive API")}async put(e,t,i){this.budget.used=0;let n=String(t||"").split("/").filter(Boolean);if(n.length===0)throw new Error("invalid upload path");let s=n[n.length-1],a=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),o="/"+n.slice(0,n.length-1).join("/"),c=await this.ensureFolderId(o);await this.client.uploadFile(c,a,i)}async createUploadSession(e,t,i,n,s){this.budget.used=0;let a=await this.ensureFolderId(t||"/"),o=await this.client.createUpload(i,a,n,s||""),c=16*1024*1024;if(o.Reuse||o.Key==="")return{reuse:!0,partCount:0,chunkSize:c,session:""};let l=Math.max(1,Math.ceil(n/c)),d=v$({bucket:o.Bucket,key:o.Key,uploadId:o.UploadId,fileId:o.FileId,storageNode:o.StorageNode,size:n,partCount:l,chunkSize:c});return{reuse:!1,partCount:l,chunkSize:c,session:d}}async uploadPart(e,t,i){this.budget.used=0;let n=rF(e),s=await this.client.getPartUploadUrl(iF(n),t,n.partCount),a=await fetch(s,{method:"PUT",body:i});if(a.status!==200){let o=await a.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${a.status} ${o}`)}}async completeUploadSession(e){this.budget.used=0;let t=rF(e);await this.client.completeUpload(iF(t),t.size,t.partCount>1)}}});function Q$(r){return new Promise(e=>setTimeout(e,r))}function bB(r){if(!r)return r;try{let e=new URL(r);return e.searchParams.delete("access_token"),e.toString()}catch{return r}}function qd(r){let e={...r||{}},t=(i,n)=>i==null||i===""?n:typeof i=="boolean"?i:String(i).toLowerCase()==="true";return e.use_online_api=t(e.use_online_api,!0),e.api_url_address=e.api_url_address||"https://api.oplist.org/baiduyun/renewapi",e.download_api=e.download_api||"official",e.custom_crack_ua=e.custom_crack_ua||"netdisk",e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"3",e.upload_api=e.upload_api||Nd,e.use_dynamic_upload_api=t(e.use_dynamic_upload_api,!0),e.custom_upload_part_size=e.custom_upload_part_size||0,e.low_bandwith_upload_mode=t(e.low_bandwith_upload_mode,!1),e.only_list_video_file=t(e.only_list_video_file,!1),e}function oF(r,e,t){r.local_mtime=String(t),r.local_ctime=String(e)}var k$,aF,Rd,CB,EB,BB,S$,Nd,D$,hh,vB,cF,_$,Km,Od,kB=J(()=>{"use strict";k$="https://openapi.baidu.com/oauth/2.0/token",aF="https://pan.baidu.com/rest/2.0",Rd=4*1024*1024,CB=16*1024*1024,EB=32*1024*1024,BB=2048,S$=1*1024*1024,Nd="https://d.pcs.baidu.com",D$=60*1e3,hh=3,vB=1e3,cF=5e3,_$=new Set([111,-6,20016]);Km=class r{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=qd(e),this.onTokenUpdate=t,this.addition.access_token&&(this.accessToken=this.addition.access_token)}static apiUA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30";async refreshToken(){let e=this.addition;if(e.use_online_api&&e.api_url_address){let s=new URL(e.api_url_address);s.searchParams.set("refresh_ui",e.refresh_token),s.searchParams.set("server_use","true"),s.searchParams.set("driver_txt","baiduyun_go");let a=await fetch(s.toString(),{headers:{"User-Agent":r.apiUA}}),o,c=await a.text();try{o=JSON.parse(c)}catch{throw new Error(`\u5728\u7EBF API \u5237\u65B0\u5931\u8D25 (HTTP ${a.status})\uFF1A${c.slice(0,300)||"\u975E JSON \u54CD\u5E94"}\u3002\u8BF7\u786E\u8BA4 refresh_token \u662F\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u7684\u6709\u6548\u4EE4\u724C\u3002`)}if(!o.refresh_token||!o.access_token)throw new Error(o.text||(a.status!==200?`\u5728\u7EBF API \u8FD4\u56DE HTTP ${a.status}`:"empty token returned from official API, a wrong refresh token may have been used"));this.accessToken=o.access_token,e.refresh_token=o.refresh_token,e.access_token=o.access_token,this.onTokenUpdate?.({access_token:o.access_token,refresh_token:o.refresh_token});return}if(!e.client_id||!e.client_secret)throw new Error("empty ClientID or ClientSecret");let t=new URL(k$);t.searchParams.set("grant_type","refresh_token"),t.searchParams.set("refresh_token",e.refresh_token),t.searchParams.set("client_id",e.client_id),t.searchParams.set("client_secret",e.client_secret);let n=await(await fetch(t.toString())).json();if(n.error)throw new Error(`${n.error}: ${n.error_description||""}`);if(!n.refresh_token)throw new Error("empty refresh token returned from OAuth");this.accessToken=n.access_token||"",e.refresh_token=n.refresh_token,e.access_token=n.access_token||"",this.onTokenUpdate?.({access_token:n.access_token||"",refresh_token:n.refresh_token})}async login(){this.accessToken||await this.refreshToken()}async ensureToken(){this.accessToken||await this.refreshToken()}async request(e,t,i,n){await this.ensureToken();let s=async()=>{let o=new URL(e);o.searchParams.set("access_token",this.accessToken);for(let[g,p]of Object.entries(i||{}))o.searchParams.set(g,p);let c={"User-Agent":r.apiUA,Accept:"application/json"},l={method:t,headers:c};if(n&&t==="POST"){let g=new URLSearchParams;for(let[p,I]of Object.entries(n))g.set(p,I);c["Content-Type"]="application/x-www-form-urlencoded",l.body=g.toString()}let d=await fetch(o.toString(),l),u=await d.text(),f;try{f=JSON.parse(u)}catch{throw new Error(`req: [${e}] invalid JSON response, status ${d.status}`)}let A=typeof f.errno=="number"?f.errno:0;if(A!==0){if(_$.has(A)&&await this.refreshToken(),A===31023&&this.addition.download_api==="crack_video")return f;let g=`req: [${e}] ,errno: ${A}, refer to https://pan.baidu.com/union/doc/`;throw A===31023?new Error(`${g} \u767E\u5EA6\u7F51\u76D8\u98CE\u63A7 (Trigger security policy: Please try again later) \u2014 \u89E6\u53D1\u539F\u56E0\u901A\u5E38\u662F\uFF1A\u2460 \u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u88AB\u767E\u5EA6\u5B89\u5168\u7B56\u7565\u62E6\u622A\uFF1B\u2461 refresh_token \u65E0\u6548\u6216\u4ECE\u975E\u5B98\u65B9\u6E20\u9053\u83B7\u53D6\uFF0C\u5BFC\u81F4\u8D26\u53F7\u88AB\u98CE\u63A7\u3002\u8BF7\u786E\u8BA4\uFF1Arefresh_token \u5FC5\u987B\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\uFF08\u672C\u9A71\u52A8\u9ED8\u8BA4\u5DF2\u5F00\u542F"\u4F7F\u7528\u5728\u7EBF API"\uFF09\uFF1B\u98CE\u63A7\u4E3A\u4E34\u65F6\u6027\uFF0C\u7B49\u5F85\u6570\u5206\u949F\u81F3\u6570\u5C0F\u65F6\u540E\u81EA\u52A8\u89E3\u9664\uFF1B\u957F\u671F\u4F7F\u7528\u8BF7\u5C06\u540E\u7AEF\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08\u6216\u914D\u7F6E HTTPS_PROXY \u5883\u5185\u4EE3\u7406\uFF09\u3002`):new Error(g)}return f},a;for(let o=0;oc.abort(),s>0?s:D$);try{let u=await(await fetch(a.toString(),{method:"POST",body:o,signal:c.signal})).text(),f=u.toLowerCase();if(f.includes("uploadid")&&(f.includes("invalid")||f.includes("expired")||f.includes("not found")))throw new Od;let A;try{A=JSON.parse(u)}catch{A={}}let g=A?.error_code??0,p=A?.errno??0;if(g!==0||p!==0)throw new Error(`error uploading to baidu, response=${u}`)}finally{clearTimeout(l)}}getUploadUrl(e,t){let i=this.addition;return!i.use_dynamic_upload_api||!t,i.upload_api||Nd}async requestForUploadUrl(e,t){let i=await this.request("https://d.pcs.baidu.com/rest/2.0/pcs/file","GET",{method:"locateupload",appid:"250528",path:e,uploadid:t,upload_version:"2.0"}),n="";if(i.servers&&i.servers.length>0?n=i.servers[0].server:i.bak_servers&&i.bak_servers.length>0&&(n=i.bak_servers[0].server),!n)throw new Error("upload URL is empty");return n}getSliceSize(e,t){let i=this.addition,n=i.custom_upload_part_size||0;if(t===0)return n!==0&&console.warn("[baidu_netdisk] CustomUploadPartSize is not supported for non-vip user, use DefaultSliceSize"),e>BB*Rd&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),Rd;if(n!==0)return nCB?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than VipSliceSize, use VipSliceSize`),CB):t===2&&n>EB?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than SVipSliceSize, use SVipSliceSize`),EB):n;let s=Rd;if(t===1&&(s=CB),t===2&&(s=EB),i.low_bandwith_upload_mode){let a=Rd;for(;a<=s;){if(e<=BB*a)return a;a+=S$}}return e>BB*s&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),s}async quota(){let e=await this.request("https://pan.baidu.com/api/quota","GET");return{total:e.total||0,used:e.used||0}}},Od=class extends Error{constructor(){super("uploadid expired"),this.name="ErrUploadIDExpired"}}});function P$(r){return new Promise(e=>setTimeout(e,r))}function lF(r){let e=r.server_filename||Ah(r.path),t=r.server_ctime||r.ctime||0,i=r.server_mtime||r.mtime||0,n=r.isdir===1;return{name:e,size:r.size||0,is_dir:n,created:t?new Date(t*1e3).toISOString():void 0,modified:i?new Date(i*1e3).toISOString():new Date().toISOString(),sign:String(r.fs_id),type:X(e,n),thumb:r.thumbs?.url3||"",raw_url:""}}function Ah(r){let e=String(r||"").split("/");return e[e.length-1]||""}function dF(r){let e=r.lastIndexOf("/");return e<=0?"/":r.slice(0,e)}var F$,Gm,uF=J(()=>{"use strict";ve();$e();ti();kB();kB();F$=new Error("empty files are not allowed by baidu netdisk");Gm=class{client;addition;uploadThread=3;vipType=0;pathCache=new Map;constructor(e,t){this.addition=qd(e),this.client=new Km(this.addition,t)}async init(){let e=this.addition,t=parseInt(e.upload_thread||"3",10);if(t<1&&(t=1),t>32&&(t=32),this.uploadThread=t,!this.client.accessToken)throw new Error("\u767E\u5EA6\u7F51\u76D8\u7F3A\u5C11\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5FC5\u586B\uFF09\uFF1A\u8BF7\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u540E\u586B\u5199\u3002");this.vipType=await this.client.uinfo()}baiduPath(e){let t="/"+String(e||"").replace(/\/+/g,"/");return t==="/"?"/":t.replace(/\/$/,"")}async list(e,t){let i=await this.client.getFiles(this.baiduPath(t)),n=i.map(lF);for(let s of i)this.pathCache.set(s.path,{fsId:s.fs_id,parent:dF(s.path)});return ue(n,this.addition.order_by||"name",this.addition.order_direction)}async get(e,t){let i=this.baiduPath(t);if(i==="/")return{name:"/",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let n=dF(i),s=Ah(i),a=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),c=(await this.client.getFiles(n)).find(d=>d.server_filename===s||d.server_filename===a||d.path===i||String(d.fs_id)===s);if(!c)throw new Error(`file not found: ${s}`);this.pathCache.set(c.path,{fsId:c.fs_id,parent:n});let l=lF(c);if(c.isdir!==1)try{let d=await this.getDownloadLink(c);l.raw_url=d.url,l.raw_url_headers=d.headers}catch(d){console.warn(`[baidu_netdisk] getDownloadLink warning for ${c.server_filename}:`,d.message)}return l}async getDownloadLink(e){let t=this.addition.download_api||"official";return t==="crack"?this.client.getCrackLink(e.path):t==="crack_video"?this.client.getCrackVideoLink(e.path,e.fs_id):this.client.getOfficialLink(e.fs_id)}async mkdir(e,t){await this.client.create(this.baiduPath(t),0,1,"","",0,0)}async rename(e,t,i){await this.client.manage("rename",[{path:this.baiduPath(t),newname:i}])}async remove(e,t,i){await this.client.manage("delete",[this.baiduPath(t)])}async move(e,t,i,n,s){let a=i[0]||Ah(n),o=this.baiduPath(t);await this.client.manage("move",[{path:this.baiduPath(n),dest:o,newname:a}])}async copy(e,t,i,n,s){let a=i[0]||Ah(n),o=this.baiduPath(t);await this.client.manage("copy",[{path:this.baiduPath(n),dest:o,newname:a}])}async put(e,t,i){if(i.length<1)throw F$;let n=i.length,s=this.baiduPath(t),a=Ah(s),o=Math.floor(Date.now()/1e3),c=o,l=o,d=nr(i),u=JSON.stringify([d]);try{await this.client.create(s,n,0,"",u,c,l);return}catch{}let f=this.client.getSliceSize(n,this.vipType),A=Math.max(1,Math.ceil(n/f)),g=n%f||f,p=[];for(let w=0;w{for(;;){let T=_++;if(T>=C.length)return;let D=C[T];if(D<0)continue;let b=D*f,Q=D+1===A?g:f,v=i.subarray(b,b+Q),E={method:"upload",access_token:this.client.accessToken,type:"tmpfile",path:s,uploadid:m.uploadid,partseq:String(D)},P=!1;for(let N=0;NU())),x)throw new Error("upload slice failed")}catch(T){if(T instanceof Od){let D=await this.client.precreate(s,n,I,"","",l,c);if(D.return_type===2&&D.info)return;m=D;continue}throw T}await this.client.create(s,n,0,m.uploadid,I,c,l);return}throw new Error("upload failed after retries")}}}});function N$(){let r=Math.floor(Date.now()/1e3),e=Math.floor(9e6*Math.random()+1e6);return`3${r}${e}`}function fF(r){return"["+r.map(e=>`{"fsid":${e}}`).join(",")+"]"}var jm,gn,zm,T$,U$,SB,gh,R$,Jm,hF=J(()=>{"use strict";ti();jm="https://photo.baidu.com/youai",gn=jm+"/album/v1",zm=jm+"/file/v1",T$=jm+"/file/v2",U$=jm+"/user/v1",SB="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",gh=4*1024*1024,R$=256*1024;Jm=class{cookie;uk="";bdstoken="";showType;constructor(e){this.cookie=e.cookie||"",this.showType=e.show_type||"root"}async init(){if(!this.cookie)throw new Error("[BaiduPhoto] cookie is required");let e=await this.uInfo();this.uk=e.youa_id||"",this.bdstoken=await this.getBDStoken()}async request(e,t,i={}){let n=new URL(t);if(i.query)for(let[c,l]of Object.entries(i.query))l!==void 0&&n.searchParams.set(c,l);let s={Cookie:this.cookie,"User-Agent":SB,Referer:"https://photo.baidu.com/"},a;return i.form&&(s["Content-Type"]="application/x-www-form-urlencoded",a=new URLSearchParams(i.form).toString()),await fetch(n.toString(),{method:e,headers:s,body:a,redirect:i.redirect??"follow"})}async requestJson(e,t,i={}){let s=await(await this.request(e,t,i)).json().catch(()=>({})),a=s.errno;if(a!==void 0&&a!==0)throw new Error(`[BaiduPhoto] errno: ${a}, refer to https://photo.baidu.com/union/doc`);return s}async uInfo(){return this.requestJson(U$+"/getuinfo","GET")}async getBDStoken(){return(await this.requestJson("GET","https://pan.baidu.com/api/gettemplatevariable",{query:{fields:'["bdstoken","token","uk"]'}}))?.result?.bdstoken||""}async getAllFile(){let e=[],t="";for(;;){let i=await this.requestJson("GET",zm+"/list",{query:{need_thumbnail:"1",need_filter_hidden:"0",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbum(){let e=[],t="";for(;;){let i=await this.requestJson("GET",gn+"/list",{query:{need_amount:"1",limit:"100",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbumFile(e,t){let i=[],n="";for(;;){let s=await this.requestJson("GET",gn+"/listfile",{query:{album_id:e,need_amount:"1",limit:"1000",passwd:"",cursor:n}});if(i.push(...s.list||[]),s.has_more!==1)break;n=s.cursor||""}return i}async getAlbumDetail(e){return this.requestJson("GET",gn+"/detail",{query:{album_id:e}})}async linkFile(e){let t=await this.requestJson("GET",T$+"/download",{query:{fsid:String(e)}});if(!t.dlink)throw new Error("[BaiduPhoto] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return t.dlink}async linkAlbumFile(e,t,i,n){let a=(await this.request("HEAD",gn+"/download",{query:{fsid:String(e),album_id:t,tid:String(i),uk:String(n)},redirect:"manual"})).headers.get("location");if(!a)throw new Error("[BaiduPhoto] \u76F8\u518C\u6587\u4EF6\u672A\u8FD4\u56DE 302 \u8DF3\u8F6C");return a}downloadHeaders(){return{Referer:"https://photo.baidu.com/","User-Agent":SB}}async createAlbum(e){let t=await this.requestJson("POST",gn+"/create",{query:{title:e,tid:N$(),source:"0"}});if(!t.album_id)throw new Error("[BaiduPhoto] \u521B\u5EFA\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(t.album_id)}async joinAlbum(e){let t=await this.requestJson("GET",gn+"/querypcode",{query:{pcode:e,web:"1"}});if(!t.pdata?.invite_code)throw new Error("[BaiduPhoto] \u9080\u8BF7\u7801\u65E0\u6548");let i=await this.requestJson("GET",gn+"/join",{query:{invite_code:t.pdata.invite_code}});if(!i.album_id)throw new Error("[BaiduPhoto] \u52A0\u5165\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(i.album_id)}async setAlbumName(e,t,i){await this.requestJson("POST",gn+"/settitle",{form:{title:i,album_id:e,tid:String(t)}})}async deleteAlbum(e,t,i){await this.requestJson("POST",gn+"/delete",{form:{album_id:e,tid:String(t),delete_origin_image:i?"1":"0"}})}async deleteFile(e){await this.requestJson("GET",zm+"/delete",{query:{fsid_list:`[${e}]`}})}async deleteAlbumFile(e,t,i,n,s){await this.requestJson("POST",gn+"/delfile",{form:{album_id:t,tid:String(i),list:`[{"fsid":${e},"uk":${n}}]`,del_origin:s?"1":"0"}})}async addAlbumFile(e,t,i){await this.requestJson("GET",gn+"/addfile",{query:{album_id:e,tid:String(t),list:fF([i])}})}async copyAlbumFile(e,t,i,n){let s=await this.requestJson("POST",gn+"/copyfile",{form:{album_id:t,tid:String(i),uk:String(n),list:fF([e])}});if(!s.list||s.list.length===0)throw new Error("[BaiduPhoto] \u590D\u5236\u76F8\u518C\u6587\u4EF6\u5931\u8D25");return s.list[0].fsid}async upload(e,t,i){if(i.length===0)throw new Error("[BaiduPhoto] file size cannot be zero");let n=nr(i),s=nr(i.subarray(0,Math.min(R$,i.length))),a=[];for(let u=0;u0?r.thumburl[0]:"",raw_url:""}}function pF(r){return{name:Qo(r.path),size:r.size,is_dir:!1,modified:_B(r.mtime),sign:`albumfile:${r.fsid}|${r.album_id}|${r.tid}|${r.uk}`,type:X(Qo(r.path),!1),thumb:r.thumburl&&r.thumburl.length>0?r.thumburl[0]:"",raw_url:""}}function DB(r){if(r.startsWith("albumfile:")){let[e,t,i,n]=r.slice(10).split("|");return{kind:"albumfile",fsid:Number(e),albumId:t,tid:Number(i),uk:Number(n)}}if(r.startsWith("album:")){let[e,t]=r.slice(6).split("|");return{kind:"album",fsid:0,albumId:e,tid:Number(t),uk:0}}return{kind:"file",fsid:Number(r.slice(5)),albumId:"",tid:0,uk:0}}var $m,mF=J(()=>{"use strict";ve();hF();$m=class{client;showType;albumCache=new Map;constructor(e){this.client=new Jm(e),this.showType=e.show_type||"root"}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i){let a=[];if(this.showType!=="root_only_file"){let o=await this.client.getAllAlbum();for(let c of o)this.albumCache.set(c.title,c),a.push(AF(c))}if(this.showType!=="root_only_album"){let o=await this.client.getAllFile();a.push(...o.map(gF))}return a}let n=await this.findAlbum(i);if(!n)throw new Error(`[BaiduPhoto] \u76F8\u518C '${i}' \u672A\u627E\u5230`);return(await this.client.getAllAlbumFile(n.album_id,n.tid)).map(pF)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.slice(0,-1).join("/");if(s){let a=await this.findAlbum(s);if(a){let c=(await this.client.getAllAlbumFile(a.album_id,a.tid)).find(l=>Qo(l.path)===n);if(c){let l=pF(c);try{l.raw_url=await this.client.linkAlbumFile(c.fsid,c.album_id,c.tid,c.uk),l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[BaiduPhoto] failed to resolve download url"}return l}}}else{if(this.showType!=="root_only_file"){let o=(await this.client.getAllAlbum()).find(c=>c.title===n);if(o)return AF(o)}if(this.showType!=="root_only_album"){let o=(await this.client.getAllFile()).find(c=>Qo(c.path)===n);if(o){let c=gF(o);try{c.raw_url=await this.client.linkFile(o.fsid),c.raw_url_headers=this.client.downloadHeaders()}catch{c.raw_url_error="[BaiduPhoto] failed to resolve download url"}return c}}}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){if(t.split("/").filter(Boolean).join("/"))throw new Error("[BaiduPhoto] \u76F8\u518C\u4E0D\u652F\u6301\u521B\u5EFA\u5B50\u76EE\u5F55");let s=await this.client.createAlbum("new_album");this.albumCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(n.kind!=="album")throw new Error("[BaiduPhoto] \u4EC5\u652F\u6301\u91CD\u547D\u540D\u76F8\u518C");await this.client.setAlbumName(n.albumId,n.tid,i),this.albumCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);n.kind==="album"?await this.client.deleteAlbum(n.albumId,n.tid,!1):n.kind==="file"?await this.client.deleteFile(n.fsid):await this.client.deleteAlbumFile(n.fsid,n.albumId,n.tid,n.uk,!1),this.albumCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n),o=t.split("/").filter(Boolean).join("/");if(a.kind==="albumfile"){if(!o)await this.client.copyAlbumFile(a.fsid,a.albumId,a.tid,a.uk);else{let c=await this.findAlbum(o);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);let l=await this.client.copyAlbumFile(a.fsid,a.albumId,a.tid,a.uk);await this.client.addAlbumFile(c.album_id,c.tid,l)}await this.client.deleteAlbumFile(a.fsid,a.albumId,a.tid,a.uk,!1);return}throw new Error("[BaiduPhoto] \u4EC5\u76F8\u518C\u6587\u4EF6\u652F\u6301\u79FB\u52A8")}async copy(e,t,i,n,s){let a=await this.resolveEntry(n),o=t.split("/").filter(Boolean).join("/");if(a.kind==="file"&&o){let c=await this.findAlbum(o);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);await this.client.addAlbumFile(c.album_id,c.tid,a.fsid);return}if(a.kind==="albumfile"){let c=await this.client.copyAlbumFile(a.fsid,a.albumId,a.tid,a.uk);if(o){let l=await this.findAlbum(o);if(!l)throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);await this.client.addAlbumFile(l.album_id,l.tid,c)}return}throw new Error("[BaiduPhoto] \u4E0D\u652F\u6301\u8BE5\u590D\u5236\u64CD\u4F5C")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",a=n.join("/"),o=null;if(a&&(o=await this.findAlbum(a),!o))throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.upload(o,s,new Uint8Array(i)),this.albumCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n=t.slice(0,-1).join("/");if(n){let s=await this.findAlbum(n);if(s){let o=(await this.client.getAllAlbumFile(s.album_id,s.tid)).find(c=>Qo(c.path)===i);if(o)return DB(`albumfile:${o.fsid}|${o.album_id}|${o.tid}|${o.uk}`)}}else{if(this.showType!=="root_only_file"){let a=(await this.client.getAllAlbum()).find(o=>o.title===i);if(a)return DB(`album:${a.album_id}|${a.tid}`)}if(this.showType!=="root_only_album"){let a=(await this.client.getAllFile()).find(o=>Qo(o.path)===i);if(a)return DB(`file:${a.fsid}`)}}throw new Error(`[BaiduPhoto] '${i}' not found`)}async findAlbum(e){if(this.albumCache.has(e))return this.albumCache.get(e);let t=await this.client.getAllAlbum();for(let i of t)this.albumCache.set(i.title,i);return this.albumCache.get(e)||null}}});function Y$(r){return r===99||String(r).startsWith("401")}var zn,O$,q$,M$,L$,H$,yF,K$,G$,z$,J$,j$,$$,V$,ph,Vm,IF=J(()=>{"use strict";zn="https://proapi.115.com",O$="https://passportapi.115.com",q$=zn+"/open/upload/get_token",M$=zn+"/open/upload/init",L$=zn+"/open/folder/add",H$=zn+"/open/ufile/files",yF=zn+"/open/folder/get_info",K$=zn+"/open/ufile/copy",G$=zn+"/open/ufile/move",z$=zn+"/open/ufile/downurl",J$=zn+"/open/ufile/update",j$=zn+"/open/ufile/delete",$$=zn+"/open/user/info",V$=O$+"/open/refreshToken";ph=430004,Vm=class r{addition;accessToken="";refreshTokenValue="";onTokenUpdate;rateLimitMs=0;lastRequestAt=0;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t;let i=e.limit_rate||0;i>0&&(this.rateLimitMs=1e3/i)}async waitRateLimit(){if(this.rateLimitMs<=0)return;let e=Date.now(),t=this.lastRequestAt+this.rateLimitMs-e;t>0&&await new Promise(i=>setTimeout(i,t)),this.lastRequestAt=Date.now()}async fetchWithRetry(e,t){let i;for(let n=0;n<3;n++)try{let s=new AbortController,a=setTimeout(()=>s.abort(),2e4);try{return await fetch(e,{...t,signal:s.signal})}finally{clearTimeout(a)}}catch(s){i=s,n<2&&await new Promise(a=>setTimeout(a,500*(n+1)))}throw i}static describeNetError(e){let t=e,i=t?.cause?.code||t?.cause?.cause?.code,n=t?.cause?.message||t?.cause?.cause?.message;return i?`${t?.message||"fetch failed"}\uFF08${i}\uFF09`:n?`${t?.message||"fetch failed"}\uFF08${n}\uFF09`:t?.message||String(e)}async refreshToken(){if(!this.refreshTokenValue)throw new Error("115 \u7F51\u76D8\u7F3A\u5C11 refresh_token\uFF08\u5FC5\u586B\uFF09");let e=new URLSearchParams;e.set("refresh_token",this.refreshTokenValue);let i=await(await this.fetchWithRetry(V$,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==0||!i.data?.access_token||!i.data?.refresh_token)throw new Error(`115 \u7F51\u76D8 token \u5237\u65B0\u5931\u8D25\uFF08code ${i.code} ${i.message}\uFF09\uFF1A\u8BF7\u786E\u8BA4 refresh_token \u6709\u6548\u3002`);this.accessToken=i.data.access_token,this.refreshTokenValue=i.data.refresh_token,this.addition.access_token=this.accessToken,this.addition.refresh_token=this.refreshTokenValue,this.onTokenUpdate?.({access_token:this.accessToken,refresh_token:this.refreshTokenValue})}async request(e,t,i,n,s,a=!1){await this.waitRateLimit();let o=async()=>{let d=new URL(e);for(let[I,m]of Object.entries(i||{}))m!==""&&d.searchParams.set(I,m);let u={Accept:"application/json","User-Agent":s||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30"};this.accessToken&&(u.Authorization=`Bearer ${this.accessToken}`);let f={method:t,headers:u};if(n&&t==="POST"){let I=new URLSearchParams;for(let[m,w]of Object.entries(n))w!==""&&I.set(m,w);u["Content-Type"]="application/x-www-form-urlencoded",f.body=I.toString()}let A=await this.fetchWithRetry(d.toString(),f),g=await A.text(),p;try{p=JSON.parse(g)}catch{p={state:!1,code:A.status,message:g.slice(0,200)}}return{body:p,rawText:g}},c;try{({body:c}=await o())}catch(d){throw new Error(r.describeNetError(d))}let l=c?.state;if(l===!1||l===void 0){let d=Number(c?.code??0);if(Y$(d)&&!a){await this.refreshToken(),c=(await o()).body;let f=c?.state;if(f!==!1&&f!==void 0)return c;throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${c?.code} ${c?.message}\uFF09`)}if(d===ph){let u=new Error("115 object not found");throw u.code=ph,u}throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${d} ${c?.message||""}\uFF09`)}return c}async userInfo(){return(await this.request($$,"GET"))?.data}async getFiles(e){let t=await this.request(H$,"GET",{cid:e.cid,limit:String(e.limit),offset:String(e.offset),asc:e.asc?"1":"0",o:e.o||"",show_dir:e.showDir?"1":"0",cur:"1"});return{files:t.data||[],count:t.count||0}}async getFolderInfo(e){return(await this.request(yF,"GET",{file_id:e}))?.data}async getFolderInfoByPath(e){return(await this.request(yF,"POST",void 0,{path:e}))?.data}async mkdir(e,t){return(await this.request(L$,"POST",void 0,{pid:e,file_name:t}))?.data}async move(e,t){await this.request(G$,"POST",void 0,{file_ids:e,to_cid:t})}async updateFile(e,t){await this.request(J$,"POST",void 0,{file_id:e,file_name:t})}async copy(e,t){await this.request(K$,"POST",void 0,{pid:e,file_id:t,no_dupli:"1"})}async delFile(e,t){await this.request(j$,"POST",void 0,{file_ids:e,parent_id:t})}async downUrl(e,t){return(await this.request(z$,"POST",void 0,{pick_code:e},t))?.data}async uploadGetToken(){return(await this.request(q$,"GET"))?.data}async uploadInit(e){return(await this.request(M$,"POST",void 0,{file_name:e.fileName,file_size:String(e.fileSize),target:`U_1_${e.target}`,fileid:e.fileId,preid:e.preId,sign_key:e.signKey||"",sign_val:e.signVal||""}))?.data}}});function wF(r){let e=r.fc==="0";return{name:r.fn,size:r.fs||0,is_dir:e,created:r.uppt?new Date(r.uppt*1e3).toISOString():void 0,modified:r.upt?new Date(r.upt*1e3).toISOString():new Date().toISOString(),sign:r.fid,type:X(r.fn,e),thumb:r.thumbnail||r.fco||"",raw_url:""}}function X$(r){let e={...r||{}};return e.order_by=e.order_by||"file_name",e.order_direction=e.order_direction||"asc",e.page_size=e.page_size||200,(e.root_folder_id||e.root_folder_id==="0")&&!e.root_id&&(e.root_id=String(e.root_folder_id)),e}var Ym,W$,Wm,xF=J(()=>{"use strict";ve();$e();ti();IF();Ym="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30",W$=45;Wm=class r{client;addition;pageSize=200;parentPath="/";fidCache=new Map;budget={used:0,limit:W$};linkCache=new Map;static LINK_TTL_MS=1800*1e3;constructor(e,t){this.addition=X$(e),this.client=new Vm(this.addition,t)}async init(){let t=this.addition.page_size||200;t<=0&&(t=200),t>1150&&(t=1150),this.pageSize=t;try{await this.client.userInfo()}catch(n){if(n?.code===ph)throw n;let s=String(n?.message||n);throw s.includes("fetch")||s.includes("ECONN")||s.includes("abort")?new Error(`115 \u7F51\u76D8\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF08${s}\uFF09\uFF1Aproapi.115.com \u53EF\u80FD\u65E0\u6CD5\u4ECE\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u8BBF\u95EE\uFF08\u6570\u636E\u4E2D\u5FC3 IP \u53EF\u80FD\u88AB 115 \u62E6\u622A\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u66F4\u6362\u90E8\u7F72\u73AF\u5883\u3002`):new Error(`115 \u7F51\u76D8 token \u9A8C\u8BC1\u5931\u8D25\uFF1A${s}\u3002\u8BF7\u786E\u8BA4 access_token / refresh_token \u6709\u6548\u3002`)}let i=this.getRootId();if(i!=="0")try{let n=await this.client.getFolderInfo(i);if(n.file_id!=="0"){this.parentPath=`/${n.file_name}`;let s=[...n.paths||[]].reverse();for(let a of s)this.parentPath=`/${a.file_name}${this.parentPath}`}}catch(n){console.warn("[115open] init root path resolve failed:",n.message)}}getRootId(){return(this.addition.root_id||"0").trim()||"0"}reserve(){return this.budget.used>=this.budget.limit?(console.warn(`[115open] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${this.budget.limit})\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD`),!1):(this.budget.used++,!0)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),n=[],s=0;for(;this.reserve();){let{files:a,count:o}=await this.client.getFiles({cid:i,limit:this.pageSize,offset:s,asc:this.addition.order_direction==="asc",o:this.addition.order_by||"file_name",showDir:!0});for(let c of a)n.push(wF(c)),this.fidCache.set(c.fid,c.fid);if(n.length>=o||a.length===0)break;s+=a.length}return ue(n,this.addition.order_by||"file_name",this.addition.order_direction)}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=this.fidCache.get(i);if(n)return n;let s=`/${t==="0"?"":t}${i==="/"?"":i}`;try{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=await this.client.getFolderInfoByPath(s);if(l.file_id)return this.fidCache.set(i,l.file_id),l.file_id}catch(l){if(l?.code!==ph&&l?.code!==990002)throw l}let a=i.split("/").filter(Boolean),o=t,c="";for(let l of a){let d=(()=>{try{return decodeURIComponent(l)}catch{return l}})();c=`${c}/${l}`;let u=this.fidCache.get(c);if(u){o=u;continue}if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:f}=await this.client.getFiles({cid:o,limit:1e3,offset:0,asc:!0,o:"file_name",showDir:!0}),A=f.find(g=>g.fc==="0"&&(g.fn===l||g.fn===d||g.fid===l));if(!A)throw new Error(`folder not found: ${l}`);o=A.fid,this.fidCache.set(c,o)}return o}async resolveFile(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean),n=i.pop()||"";if(!n)throw new Error(`file not found: ${t}`);let s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),a="/"+i.join("/"),o=await this.resolveFolderId(a),c=0;for(;;){if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:l,count:d}=await this.client.getFiles({cid:o,limit:Math.max(this.pageSize,1e3),offset:c,asc:!0,o:"file_name",showDir:!0}),u=l.find(f=>f.fn===n||f.fn===s||f.fid===n||f.fid===s);if(u)return u;if(l.length===0||c+l.length>=d)break;c+=l.length}throw new Error(`file not found: ${n}`)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.getRootId()}`)return{name:this.getRootId(),size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveFile(t),s=wF(n);if(n.fc!=="0"&&n.pc)try{let a=`${n.fid}|${Ym}`,o=this.linkCache.get(a);if(o&&o.expire>Date.now())s.raw_url=o.url,s.raw_url_headers={"User-Agent":Ym};else{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=(await this.client.downUrl(n.pc,Ym))[n.fid];l?.url?.url&&(s.raw_url=l.url.url,s.raw_url_headers={"User-Agent":Ym},this.linkCache.set(a,{url:l.url.url,expire:Date.now()+r.LINK_TTL_MS}))}}catch(a){String(a?.message||a).includes("406")?console.warn("[115open] downurl \u914D\u989D\u7528\u5C3D\uFF08406\uFF09\uFF1A\u5DF2\u4F7F\u7528\u7F13\u5B58\u6216\u7A0D\u540E\u91CD\u8BD5"):console.warn(`[115open] downUrl warning for ${n.fn}:`,a.message)}return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFolderId(s);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.mkdir(a,n)}async rename(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.updateFile(n.fid,i)}async remove(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.delFile(n.fid,n.pid||this.getRootId())}async move(e,t,i,n,s){this.budget.used=0;let a=await this.resolveFile(n),o=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.move(a.fid,o)}async copy(e,t,i,n,s){this.budget.used=0;let a=await this.resolveFile(n),o=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.copy(o,a.fid)}async put(e,t,i){if(i.length<1)throw new Error("115 \u7F51\u76D8\u4E0D\u5141\u8BB8\u4E0A\u4F20\u7A7A\u6587\u4EF6");this.budget.used=0;let n=String(t||"").split("/").filter(Boolean),s=n.pop()||"file",a="/"+n.join("/"),c=await this.resolveFolderId(a),l=i.length,d=(await mo(i)).toUpperCase(),u=Math.min(128*1024,l),f=(await mo(i.subarray(0,u))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");let A=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f});if(A.status===2)return;if([6,7,8].includes(A.status)&&A.sign_check){let p=A.sign_check.split("-"),I=parseInt(p[0],10),m=parseInt(p[1],10);if(Number.isFinite(I)&&Number.isFinite(m)){let w=(await mo(i.subarray(I,m+1))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");if(A=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f,signKey:A.sign_key,signVal:w}),A.status===2)return}}if(!this.reserve())throw new Error("subrequest budget exceeded");let g=await this.client.uploadGetToken();if(!A.bucket||!A.object||!g.endpoint)throw new Error("115 \u4E0A\u4F20\u521D\u59CB\u5316\u5931\u8D25\uFF1A\u7F3A\u5C11 OSS \u4E0A\u4F20\u4FE1\u606F");await this.ossPutObject(g,A,i)}async ossPutObject(e,t,i){let s=`${(e.endpoint.startsWith("http")?e.endpoint:`https://${e.endpoint}`).replace(/\/$/,"")}/${t.object}`,a=Buffer.from(t.callback?.callback||"","utf8").toString("base64"),o=Buffer.from(t.callback?.callback_var||"","utf8").toString("base64"),c=new Date().toUTCString(),l="application/octet-stream",d=`x-oss-callback:${a} +x-oss-callback-var:${o} x-oss-security-token:${e.SecurityToken} `,u=`/${t.bucket}/${t.object}`,f=`PUT ${l} ${c} -${d}${u}`,h=await Bu(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:{"Content-Type":l,Date:c,Authorization:`OSS ${e.AccessKeyId}:${h}`,"x-oss-security-token":e.SecurityToken,"x-oss-callback":o,"x-oss-callback-var":a,"Content-Length":String(i.length)},body:i});if(!g.ok){let p=(await g.text()).slice(0,300);throw new Error(`115 OSS \u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${g.status}\uFF09\uFF1A${p}`)}}}});function Vt(r){if(!r)return"/";let t=r.replace(/\\/g,"/").replace(/\/+/g,"/").replace(/^\/|\/$/g,"");return t?"/"+t:"/"}function Vn(r){let e=Vt(r);if(e==="/")return"/";let t=e.split("/").filter(Boolean);return t.pop(),t.length?"/"+t.join("/"):"/"}function _r(r){let e=Vt(r);if(e==="/")return"";let t=e.split("/").filter(Boolean);return t[t.length-1]||""}function Tl(...r){return Vt(r.join("/"))}function uc(r,e,t){if(!r||!r.trim())return`${e.UserName} ${t} ${e.ObjPath}`;let i=r;return i=i.replace(/\{\{\.UserName\}\}/g,e.UserName||""),i=i.replace(/\{\{\.ObjName\}\}/g,e.ObjName||""),i=i.replace(/\{\{\.ObjPath\}\}/g,e.ObjPath||""),i=i.replace(/\{\{\.ParentName\}\}/g,e.ParentName||""),i=i.replace(/\{\{\.ParentPath\}\}/g,e.ParentPath||""),i=i.replace(/\{\{\.TargetName\}\}/g,e.TargetName||""),i=i.replace(/\{\{\.TargetPath\}\}/g,e.TargetPath||""),i}function mQ(r,e){let t=Vt(r),i=Vt(e),n=1;for(;n0&&t[n]!=="/";)n--;let a=Vt(t.slice(0,n)),c=t.slice(n+1,s),l=i.slice(n+1,o),d=t.slice(n+1),u=i.slice(n+1);return{ancestor:a,aChildName:c,bChildName:l,aRest:d,bRest:u}}var _g,yQ=j(()=>{"use strict";_g=class{addition;token;owner;repo;constructor(e){this.addition=e,this.token=(e.token||"").trim(),this.owner=(e.owner||"").trim(),this.repo=(e.repo||"").trim()}get headers(){let e={Accept:"application/vnd.github.object+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"OpenList-Github-Driver"};return this.token&&(e.Authorization=`Bearer ${this.token}`),e}async request(e,t={}){let i={...this.headers,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["Content-Type"]||(i["Content-Type"]="application/json")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n});if(!s.ok){let o=`${s.status} ${s.statusText}`;try{let a=await s.json();a?.message&&(o=`${s.status} ${s.statusText}: ${a.message}`)}catch{}throw new Error(o)}return s.status===204?{}:await s.json()}getContentApiUrl(e){let t=Vt(e);return`https://api.github.com/repos/${this.owner}/${this.repo}/contents${t==="/"?"":t}`}async getContents(e,t){let i=new URL(this.getContentApiUrl(e));return t&&i.searchParams.set("ref",t),this.request(i.toString())}async getRepo(){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}`)}async getBranchHead(e){return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/branches/${encodeURIComponent(e)}`)).commit.sha}async getAuthenticatedUser(){return this.request("https://api.github.com/user")}async getTree(e){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees/${e}`)}async getTreeDirectly(e,t){let i=await this.getContents(e,t);if(!i.entries&&i.type!=="dir")throw new Error(`${e} is not a folder`);let n=await this.getTree(i.sha);if(n.truncated)throw new Error(`tree ${e} is truncated`);return{tree:n,dirSha:i.sha}}async newTree(e,t){let i={tree:t};return e&&(i.base_tree=e),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees`,{method:"POST",body:i,headers:{Accept:"application/vnd.github+json"}})).sha}async putBlob(e){let t=Buffer.from(e).toString("base64");return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/blobs`,{method:"POST",body:{encoding:"base64",content:t},headers:{Accept:"application/vnd.github+json"}})).sha}async createCommit(e,t,i,n,s){let o={message:e,tree:t,parents:[i]};return n?.name&&(o.committer={name:n.name,email:n.email,date:new Date().toISOString()}),s?.name&&(o.author={name:s.name,email:s.email,date:new Date().toISOString()}),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/commits`,{method:"POST",body:o,headers:{Accept:"application/vnd.github+json"}})).sha}async updateRef(e,t){await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/refs/heads/${encodeURIComponent(e)}`,{method:"PATCH",body:{sha:t,force:!1},headers:{Accept:"application/vnd.github+json"}})}async renewParentTrees(e,t,i,n,s){let o=Vt(e),a=Vt(n);for(;o!==a;){o=Vn(o);let{tree:c,dirSha:l}=await this.getTreeDirectly(o,s),d=c.tree.find(f=>f.sha===t);if(!d)throw new Error(`Object with sha ${t} not found in ${o}`);let u={path:d.path,mode:d.mode,type:d.type,sha:i};i=await this.newTree(l,[u]),t=l}return i}}});var Fg,IQ=j(()=>{"use strict";Be();He();yQ();Fg=class{addition;client;isOnBranch=!1;commitLock=Promise.resolve();constructor(e){this.addition=e,this.client=new _g(e)}async acquireLock(e){let t=this.commitLock,i;this.commitLock=new Promise(n=>{i=n}),await t;try{return await e()}finally{i()}}formatDownloadUrl(e){if(!e)return"";let t=(this.addition.gh_proxy||"").trim();return t?e.replace("https://raw.githubusercontent.com",t):e}async commitAndPush(e,t){let i=this.addition.ref,n=await this.client.getBranchHead(i),s=this.addition.committer_name&&this.addition.committer_email?{name:this.addition.committer_name,email:this.addition.committer_email}:void 0,o=this.addition.author_name&&this.addition.author_email?{name:this.addition.author_name,email:this.addition.author_email}:void 0,a=await this.client.createCommit(e,t,n,s,o);await this.client.updateRef(i,a)}async init(){if(this.addition.root_folder_path=Vt(this.addition.root_folder_path||"/"),this.addition.committer_name&&!this.addition.committer_email||!this.addition.committer_name&&this.addition.committer_email)throw new Error("committer_name and committer_email must both be set or empty");if(this.addition.author_name&&!this.addition.author_email||!this.addition.author_name&&this.addition.author_email)throw new Error("author_name and author_email must both be set or empty");if(!this.addition.ref||!this.addition.ref.trim()){let e=await this.client.getRepo();this.addition.ref=e.default_branch,this.isOnBranch=!0}else try{await this.client.getBranchHead(this.addition.ref),this.isOnBranch=!0}catch{this.isOnBranch=!1}}async list(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(!n.entries&&n.type!=="dir")throw new Error(`${t} is not a folder`);let s=[];if(n.entries&&n.entries.length>=1e3){let o=await this.client.getTree(n.sha);if(o.truncated)throw new Error(`Tree ${t} is truncated (>100,000 items)`);for(let a of o.tree){if(a.path===".gitkeep")continue;let c=a.type==="tree";s.push({name:a.path,size:a.size||0,is_dir:c,modified:new Date(0).toISOString(),sign:"",type:X(a.path,c),raw_url:""})}}else if(n.entries)for(let o of n.entries){if(o.name===".gitkeep")continue;let a=o.type==="dir";s.push({name:o.name,size:o.size||0,is_dir:a,modified:new Date(0).toISOString(),sign:"",type:X(o.name,a),raw_url:this.formatDownloadUrl(o.download_url)})}return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(n.type==="submodule")throw new Error("cannot download a submodule");let s=n.type==="dir"||!!n.entries,o=n.name||_r(i)||"root";return{name:o,size:n.size||0,is_dir:s,modified:new Date(0).toISOString(),sign:"",type:X(o,s),raw_url:this.formatDownloadUrl(n.download_url)}}async mkdir(e,t){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let i=Vt(t),n=Vn(i),s=_r(i);await this.acquireLock(async()=>{let o=await this.client.getContents(n,this.addition.ref);if(!o.entries&&o.type!=="dir")throw new Error(`${n} is not a folder`);let a=await this.client.newTree("",[{path:".gitkeep",mode:"100644",type:"blob",content:""}]),c=[{path:s,mode:"040000",type:"tree",sha:a}];o.entries?.length===1&&o.entries[0].name===".gitkeep"&&c.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let l=await this.client.newTree(o.sha,c),d=await this.client.renewParentTrees(n,o.sha,l,"/",this.addition.ref),u=uc(this.addition.mkdir_commit_message,{UserName:"OpenList",ObjName:s,ObjPath:i,ParentName:_r(n),ParentPath:n},"mkdir");await this.commitAndPush(u,d)})}async put(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let a=await this.client.putBlob(i),c=await this.client.getContents(s,this.addition.ref);if(!c.entries&&c.type!=="dir")throw new Error(`${s} is not a folder`);let l=[{path:o,mode:"100644",type:"blob",sha:a}];c.entries?.length===1&&c.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(c.sha,l),u=await this.client.renewParentTrees(s,c.sha,d,"/",this.addition.ref),f=uc(this.addition.put_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s},"upload");await this.commitAndPush(f,u)})}async rename(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(p=>p.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot rename a submodule");let d={path:o,mode:l.mode,type:l.type,sha:null},u={path:i,mode:l.mode,type:l.type,sha:l.sha},f=await this.client.newTree(c,[d,u]),h=await this.client.renewParentTrees(s,c,f,"/",this.addition.ref),g=uc(this.addition.rename_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s,TargetName:i,TargetPath:Tl(s,i)},"rename");await this.commitAndPush(g,h)})}async remove(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(g=>g.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot remove a submodule");let d=[{path:o,mode:l.mode,type:l.type,sha:null}];a.tree.length===1&&d.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let u=await this.client.newTree(c,d),f=await this.client.renewParentTrees(s,c,u,"/",this.addition.ref),h=uc(this.addition.delete_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s},"remove");await this.commitAndPush(h,f)})}async move(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot move parent dir to child");await this.acquireLock(async()=>{let c="",l=Vn(o),d=_r(o);if(a.startsWith(l)){let{dstOldSha:f,dstNewSha:h,ancestorOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),y=a.slice(l.length).replace(/^\//,"").split("/")[0],w=Tl(l,y),C=await this.client.renewParentTrees(a,f,h,w,this.addition.ref),b=p.tree.find(R=>R.path===d),x=p.tree.find(R=>R.path===y);if(!b||!x)throw new Error("Object not found during move");let _=await this.client.newTree(g,[{path:b.path,mode:b.mode,type:b.type,sha:null},{path:x.path,mode:x.mode,type:x.type,sha:C}]);c=await this.client.renewParentTrees(l,g,_,"/",this.addition.ref)}else if(o.startsWith(a)){let{tree:f,dirSha:h}=await this.client.getTreeDirectly(l,this.addition.ref),g=f.tree.find(T=>T.path===d);if(!g)throw new Error("Object not found");if(g.type==="commit")throw new Error("cannot move a submodule");let p=[{path:g.path,mode:g.mode,type:g.type,sha:null}];f.tree.length===1&&p.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let I=await this.client.newTree(h,p),w=o.slice(a.length).replace(/^\//,"").split("/")[0];if(!w)throw new Error("cannot move in place");let C=Tl(a,w),b=await this.client.renewParentTrees(l,h,I,C,this.addition.ref),{tree:x,dirSha:_}=await this.client.getTreeDirectly(a,this.addition.ref),R=x.tree.find(T=>T.path===w);if(!R)throw new Error("Object not found");let U=await this.client.newTree(_,[{path:R.path,mode:R.mode,type:R.type,sha:b},{path:g.path,mode:g.mode,type:g.type,sha:g.sha}]);c=await this.client.renewParentTrees(a,_,U,"/",this.addition.ref)}else{let{dstOldSha:f,dstNewSha:h,srcParentOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),I=p.tree.find(v=>v.path===d);if(!I)throw new Error("Object not found");let y=[{path:I.path,mode:I.mode,type:I.type,sha:null}];p.tree.length===1&&y.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let w=await this.client.newTree(g,y),{ancestor:C,aChildName:b,bChildName:x}=mQ(o,a),_=await this.client.renewParentTrees(a,f,h,Tl(C,x),this.addition.ref),R=await this.client.renewParentTrees(l,g,w,Tl(C,b),this.addition.ref),{tree:U,dirSha:T}=await this.client.getTreeDirectly(C,this.addition.ref),D=U.tree.find(v=>v.path===b),B=U.tree.find(v=>v.path===x);if(!D||!B)throw new Error("Ancestor child tree not found");let Q=await this.client.newTree(T,[{path:D.path,mode:D.mode,type:D.type,sha:R},{path:B.path,mode:B.mode,type:B.type,sha:_}]);c=await this.client.renewParentTrees(C,T,Q,"/",this.addition.ref)}let u=uc(this.addition.move_commit_message,{UserName:"OpenList",ObjName:d,ObjPath:o,ParentName:_r(l),ParentPath:l,TargetName:_r(a),TargetPath:a},"move");await this.commitAndPush(u,c)})}async copy(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot copy parent dir to child");await this.acquireLock(async()=>{let{dstOldSha:c,dstNewSha:l}=await this.copyWithoutRenewTree(o,a),d=await this.client.renewParentTrees(a,c,l,"/",this.addition.ref),u=uc(this.addition.copy_commit_message,{UserName:"OpenList",ObjName:_r(o),ObjPath:o,ParentName:_r(Vn(o)),ParentPath:Vn(o),TargetName:_r(a),TargetPath:a},"copy");await this.commitAndPush(u,d)})}async copyWithoutRenewTree(e,t){let i=await this.client.getContents(t,this.addition.ref);if(!i.entries&&i.type!=="dir")throw new Error(`${t} is not a folder`);let n=Vn(e),s=_r(e),{tree:o,dirSha:a}=await this.client.getTreeDirectly(n,this.addition.ref),c=o.tree.find(u=>u.path===s);if(!c)throw new Error(`Object not found: ${e}`);if(c.type==="commit")throw new Error("cannot copy a submodule");let l=[{path:c.path,mode:c.mode,type:c.type,sha:c.sha}];i.entries?.length===1&&i.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(i.sha,l);return{dstOldSha:i.sha,dstNewSha:d,srcParentOldSha:a,srcParentTree:o,ancestorOldSha:a}}}});var et=oe((Pg,wQ)=>{(function(r,e){typeof Pg=="object"?wQ.exports=Pg=e():typeof define=="function"&&define.amd?define([],e):r.CryptoJS=e()})(Pg,function(){var r=r||(function(e,t){var i;if(typeof window<"u"&&window.crypto&&(i=window.crypto),typeof self<"u"&&self.crypto&&(i=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<"u"&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<"u"&&global.crypto&&(i=global.crypto),!i&&typeof wt=="function")try{i=wt("crypto")}catch{}var n=function(){if(i){if(typeof i.getRandomValues=="function")try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes=="function")try{return i.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||(function(){function y(){}return function(w){var C;return y.prototype=w,C=new y,y.prototype=null,C}})(),o={},a=o.lib={},c=a.Base=(function(){return{extend:function(y){var w=s(this);return y&&w.mixIn(y),(!w.hasOwnProperty("init")||this.init===w.init)&&(w.init=function(){w.$super.init.apply(this,arguments)}),w.init.prototype=w,w.$super=this,w},create:function(){var y=this.extend();return y.init.apply(y,arguments),y},init:function(){},mixIn:function(y){for(var w in y)y.hasOwnProperty(w)&&(this[w]=y[w]);y.hasOwnProperty("toString")&&(this.toString=y.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),l=a.WordArray=c.extend({init:function(y,w){y=this.words=y||[],w!=t?this.sigBytes=w:this.sigBytes=y.length*4},toString:function(y){return(y||u).stringify(this)},concat:function(y){var w=this.words,C=y.words,b=this.sigBytes,x=y.sigBytes;if(this.clamp(),b%4)for(var _=0;_>>2]>>>24-_%4*8&255;w[b+_>>>2]|=R<<24-(b+_)%4*8}else for(var U=0;U>>2]=C[U>>>2];return this.sigBytes+=x,this},clamp:function(){var y=this.words,w=this.sigBytes;y[w>>>2]&=4294967295<<32-w%4*8,y.length=e.ceil(w/4)},clone:function(){var y=c.clone.call(this);return y.words=this.words.slice(0),y},random:function(y){for(var w=[],C=0;C>>2]>>>24-x%4*8&255;b.push((_>>>4).toString(16)),b.push((_&15).toString(16))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>3]|=parseInt(y.substr(b,2),16)<<24-b%8*4;return new l.init(C,w/2)}},f=d.Latin1={stringify:function(y){for(var w=y.words,C=y.sigBytes,b=[],x=0;x>>2]>>>24-x%4*8&255;b.push(String.fromCharCode(_))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>2]|=(y.charCodeAt(b)&255)<<24-b%4*8;return new l.init(C,w)}},h=d.Utf8={stringify:function(y){try{return decodeURIComponent(escape(f.stringify(y)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(y){return f.parse(unescape(encodeURIComponent(y)))}},g=a.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(y){typeof y=="string"&&(y=h.parse(y)),this._data.concat(y),this._nDataBytes+=y.sigBytes},_process:function(y){var w,C=this._data,b=C.words,x=C.sigBytes,_=this.blockSize,R=_*4,U=x/R;y?U=e.ceil(U):U=e.max((U|0)-this._minBufferSize,0);var T=U*_,D=e.min(T*4,x);if(T){for(var B=0;B{(function(r,e){typeof Tg=="object"?xQ.exports=Tg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Tg,function(r){return(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=t.x64={},a=o.Word=n.extend({init:function(l,d){this.high=l,this.low=d}}),c=o.WordArray=n.extend({init:function(l,d){l=this.words=l||[],d!=e?this.sigBytes=d:this.sigBytes=l.length*8},toX32:function(){for(var l=this.words,d=l.length,u=[],f=0;f{(function(r,e){typeof Ug=="object"?CQ.exports=Ug=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ug,function(r){return(function(){if(typeof ArrayBuffer=="function"){var e=r,t=e.lib,i=t.WordArray,n=i.init,s=i.init=function(o){if(o instanceof ArrayBuffer&&(o=new Uint8Array(o)),(o instanceof Int8Array||typeof Uint8ClampedArray<"u"&&o instanceof Uint8ClampedArray||o instanceof Int16Array||o instanceof Uint16Array||o instanceof Int32Array||o instanceof Uint32Array||o instanceof Float32Array||o instanceof Float64Array)&&(o=new Uint8Array(o.buffer,o.byteOffset,o.byteLength)),o instanceof Uint8Array){for(var a=o.byteLength,c=[],l=0;l>>2]|=o[l]<<24-l%4*8;n.call(this,c,a)}else n.apply(this,arguments)};s.prototype=i}})(),r.lib.WordArray})});var bQ=oe((Rg,BQ)=>{(function(r,e){typeof Rg=="object"?BQ.exports=Rg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Rg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Utf16=n.Utf16BE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535;d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=a.charCodeAt(d)<<16-d%2*16;return i.create(l,c*2)}};n.Utf16LE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535);d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=o(a.charCodeAt(d)<<16-d%2*16);return i.create(l,c*2)}};function o(a){return a<<8&4278255360|a>>>8&16711935}})(),r.enc.Utf16})});var Go=oe((Ng,vQ)=>{(function(r,e){typeof Ng=="object"?vQ.exports=Ng=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ng,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64={stringify:function(a){var c=a.words,l=a.sigBytes,d=this._map;a.clamp();for(var u=[],f=0;f>>2]>>>24-f%4*8&255,g=c[f+1>>>2]>>>24-(f+1)%4*8&255,p=c[f+2>>>2]>>>24-(f+2)%4*8&255,I=h<<16|g<<8|p,y=0;y<4&&f+y*.75>>6*(3-y)&63));var w=d.charAt(64);if(w)for(;u.length%4;)u.push(w);return u.join("")},parse:function(a){var c=a.length,l=this._map,d=this._reverseMap;if(!d){d=this._reverseMap=[];for(var u=0;u>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64})});var SQ=oe((qg,kQ)=>{(function(r,e){typeof qg=="object"?kQ.exports=qg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(qg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64url={stringify:function(a,c){c===void 0&&(c=!0);var l=a.words,d=a.sigBytes,u=c?this._safe_map:this._map;a.clamp();for(var f=[],h=0;h>>2]>>>24-h%4*8&255,p=l[h+1>>>2]>>>24-(h+1)%4*8&255,I=l[h+2>>>2]>>>24-(h+2)%4*8&255,y=g<<16|p<<8|I,w=0;w<4&&h+w*.75>>6*(3-w)&63));var C=u.charAt(64);if(C)for(;f.length%4;)f.push(C);return f.join("")},parse:function(a,c){c===void 0&&(c=!0);var l=a.length,d=c?this._safe_map:this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var f=0;f>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64url})});var zo=oe((Og,DQ)=>{(function(r,e){typeof Og=="object"?DQ.exports=Og=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Og,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[];(function(){for(var h=0;h<64;h++)a[h]=e.abs(e.sin(h+1))*4294967296|0})();var c=o.MD5=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(h,g){for(var p=0;p<16;p++){var I=g+p,y=h[I];h[I]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360}var w=this._hash.words,C=h[g+0],b=h[g+1],x=h[g+2],_=h[g+3],R=h[g+4],U=h[g+5],T=h[g+6],D=h[g+7],B=h[g+8],Q=h[g+9],v=h[g+10],E=h[g+11],P=h[g+12],N=h[g+13],J=h[g+14],z=h[g+15],L=w[0],G=w[1],K=w[2],$=w[3];L=l(L,G,K,$,C,7,a[0]),$=l($,L,G,K,b,12,a[1]),K=l(K,$,L,G,x,17,a[2]),G=l(G,K,$,L,_,22,a[3]),L=l(L,G,K,$,R,7,a[4]),$=l($,L,G,K,U,12,a[5]),K=l(K,$,L,G,T,17,a[6]),G=l(G,K,$,L,D,22,a[7]),L=l(L,G,K,$,B,7,a[8]),$=l($,L,G,K,Q,12,a[9]),K=l(K,$,L,G,v,17,a[10]),G=l(G,K,$,L,E,22,a[11]),L=l(L,G,K,$,P,7,a[12]),$=l($,L,G,K,N,12,a[13]),K=l(K,$,L,G,J,17,a[14]),G=l(G,K,$,L,z,22,a[15]),L=d(L,G,K,$,b,5,a[16]),$=d($,L,G,K,T,9,a[17]),K=d(K,$,L,G,E,14,a[18]),G=d(G,K,$,L,C,20,a[19]),L=d(L,G,K,$,U,5,a[20]),$=d($,L,G,K,v,9,a[21]),K=d(K,$,L,G,z,14,a[22]),G=d(G,K,$,L,R,20,a[23]),L=d(L,G,K,$,Q,5,a[24]),$=d($,L,G,K,J,9,a[25]),K=d(K,$,L,G,_,14,a[26]),G=d(G,K,$,L,B,20,a[27]),L=d(L,G,K,$,N,5,a[28]),$=d($,L,G,K,x,9,a[29]),K=d(K,$,L,G,D,14,a[30]),G=d(G,K,$,L,P,20,a[31]),L=u(L,G,K,$,U,4,a[32]),$=u($,L,G,K,B,11,a[33]),K=u(K,$,L,G,E,16,a[34]),G=u(G,K,$,L,J,23,a[35]),L=u(L,G,K,$,b,4,a[36]),$=u($,L,G,K,R,11,a[37]),K=u(K,$,L,G,D,16,a[38]),G=u(G,K,$,L,v,23,a[39]),L=u(L,G,K,$,N,4,a[40]),$=u($,L,G,K,C,11,a[41]),K=u(K,$,L,G,_,16,a[42]),G=u(G,K,$,L,T,23,a[43]),L=u(L,G,K,$,Q,4,a[44]),$=u($,L,G,K,P,11,a[45]),K=u(K,$,L,G,z,16,a[46]),G=u(G,K,$,L,x,23,a[47]),L=f(L,G,K,$,C,6,a[48]),$=f($,L,G,K,D,10,a[49]),K=f(K,$,L,G,J,15,a[50]),G=f(G,K,$,L,U,21,a[51]),L=f(L,G,K,$,P,6,a[52]),$=f($,L,G,K,_,10,a[53]),K=f(K,$,L,G,v,15,a[54]),G=f(G,K,$,L,b,21,a[55]),L=f(L,G,K,$,B,6,a[56]),$=f($,L,G,K,z,10,a[57]),K=f(K,$,L,G,T,15,a[58]),G=f(G,K,$,L,N,21,a[59]),L=f(L,G,K,$,R,6,a[60]),$=f($,L,G,K,E,10,a[61]),K=f(K,$,L,G,x,15,a[62]),G=f(G,K,$,L,Q,21,a[63]),w[0]=w[0]+L|0,w[1]=w[1]+G|0,w[2]=w[2]+K|0,w[3]=w[3]+$|0},_doFinalize:function(){var h=this._data,g=h.words,p=this._nDataBytes*8,I=h.sigBytes*8;g[I>>>5]|=128<<24-I%32;var y=e.floor(p/4294967296),w=p;g[(I+64>>>9<<4)+15]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,g[(I+64>>>9<<4)+14]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,h.sigBytes=(g.length+1)*4,this._process();for(var C=this._hash,b=C.words,x=0;x<4;x++){var _=b[x];b[x]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}return C},clone:function(){var h=s.clone.call(this);return h._hash=this._hash.clone(),h}});function l(h,g,p,I,y,w,C){var b=h+(g&p|~g&I)+y+C;return(b<>>32-w)+g}function d(h,g,p,I,y,w,C){var b=h+(g&I|p&~I)+y+C;return(b<>>32-w)+g}function u(h,g,p,I,y,w,C){var b=h+(g^p^I)+y+C;return(b<>>32-w)+g}function f(h,g,p,I,y,w,C){var b=h+(p^(g|~I))+y+C;return(b<>>32-w)+g}t.MD5=s._createHelper(c),t.HmacMD5=s._createHmacHelper(c)})(Math),r.MD5})});var QC=oe((Mg,QQ)=>{(function(r,e){typeof Mg=="object"?QQ.exports=Mg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Mg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.Hasher,s=e.algo,o=[],a=s.SHA1=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,l){for(var d=this._hash.words,u=d[0],f=d[1],h=d[2],g=d[3],p=d[4],I=0;I<80;I++){if(I<16)o[I]=c[l+I]|0;else{var y=o[I-3]^o[I-8]^o[I-14]^o[I-16];o[I]=y<<1|y>>>31}var w=(u<<5|u>>>27)+p+o[I];I<20?w+=(f&h|~f&g)+1518500249:I<40?w+=(f^h^g)+1859775393:I<60?w+=(f&h|f&g|h&g)-1894007588:w+=(f^h^g)-899497514,p=g,g=h,h=f<<30|f>>>2,f=u,u=w}d[0]=d[0]+u|0,d[1]=d[1]+f|0,d[2]=d[2]+h|0,d[3]=d[3]+g|0,d[4]=d[4]+p|0},_doFinalize:function(){var c=this._data,l=c.words,d=this._nDataBytes*8,u=c.sigBytes*8;return l[u>>>5]|=128<<24-u%32,l[(u+64>>>9<<4)+14]=Math.floor(d/4294967296),l[(u+64>>>9<<4)+15]=d,c.sigBytes=l.length*4,this._process(),this._hash},clone:function(){var c=n.clone.call(this);return c._hash=this._hash.clone(),c}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)})(),r.SHA1})});var Hg=oe((Lg,_Q)=>{(function(r,e){typeof Lg=="object"?_Q.exports=Lg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Lg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],c=[];(function(){function u(p){for(var I=e.sqrt(p),y=2;y<=I;y++)if(!(p%y))return!1;return!0}function f(p){return(p-(p|0))*4294967296|0}for(var h=2,g=0;g<64;)u(h)&&(g<8&&(a[g]=f(e.pow(h,1/2))),c[g]=f(e.pow(h,1/3)),g++),h++})();var l=[],d=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(u,f){for(var h=this._hash.words,g=h[0],p=h[1],I=h[2],y=h[3],w=h[4],C=h[5],b=h[6],x=h[7],_=0;_<64;_++){if(_<16)l[_]=u[f+_]|0;else{var R=l[_-15],U=(R<<25|R>>>7)^(R<<14|R>>>18)^R>>>3,T=l[_-2],D=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;l[_]=U+l[_-7]+D+l[_-16]}var B=w&C^~w&b,Q=g&p^g&I^p&I,v=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),E=(w<<26|w>>>6)^(w<<21|w>>>11)^(w<<7|w>>>25),P=x+E+B+c[_]+l[_],N=v+Q;x=b,b=C,C=w,w=y+P|0,y=I,I=p,p=g,g=P+N|0}h[0]=h[0]+g|0,h[1]=h[1]+p|0,h[2]=h[2]+I|0,h[3]=h[3]+y|0,h[4]=h[4]+w|0,h[5]=h[5]+C|0,h[6]=h[6]+b|0,h[7]=h[7]+x|0},_doFinalize:function(){var u=this._data,f=u.words,h=this._nDataBytes*8,g=u.sigBytes*8;return f[g>>>5]|=128<<24-g%32,f[(g+64>>>9<<4)+14]=e.floor(h/4294967296),f[(g+64>>>9<<4)+15]=h,u.sigBytes=f.length*4,this._process(),this._hash},clone:function(){var u=s.clone.call(this);return u._hash=this._hash.clone(),u}});t.SHA256=s._createHelper(d),t.HmacSHA256=s._createHmacHelper(d)})(Math),r.SHA256})});var PQ=oe((Kg,FQ)=>{(function(r,e,t){typeof Kg=="object"?FQ.exports=Kg=e(et(),Hg()):typeof define=="function"&&define.amd?define(["./core","./sha256"],e):e(r.CryptoJS)})(Kg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=s._doFinalize.call(this);return a.sigBytes-=4,a}});e.SHA224=s._createHelper(o),e.HmacSHA224=s._createHmacHelper(o)})(),r.SHA224})});var _C=oe((Gg,TQ)=>{(function(r,e,t){typeof Gg=="object"?TQ.exports=Gg=e(et(),Ju()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Gg,function(r){return(function(){var e=r,t=e.lib,i=t.Hasher,n=e.x64,s=n.Word,o=n.WordArray,a=e.algo;function c(){return s.create.apply(s,arguments)}var l=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],d=[];(function(){for(var f=0;f<80;f++)d[f]=c()})();var u=a.SHA512=i.extend({_doReset:function(){this._hash=new o.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(f,h){for(var g=this._hash.words,p=g[0],I=g[1],y=g[2],w=g[3],C=g[4],b=g[5],x=g[6],_=g[7],R=p.high,U=p.low,T=I.high,D=I.low,B=y.high,Q=y.low,v=w.high,E=w.low,P=C.high,N=C.low,J=b.high,z=b.low,L=x.high,G=x.low,K=_.high,$=_.low,te=R,re=U,ee=T,Z=D,me=B,le=Q,Ae=v,ve=E,qe=P,_e=N,se=J,it=z,ce=L,dr=G,Or=K,ct=$,we=0;we<80;we++){var Ee,Gi,xo=d[we];if(we<16)Gi=xo.high=f[h+we*2]|0,Ee=xo.low=f[h+we*2+1]|0;else{var Se=d[we-15],Dt=Se.high,Bs=Se.low,Ce=(Dt>>>1|Bs<<31)^(Dt>>>8|Bs<<24)^Dt>>>7,zi=(Bs>>>1|Dt<<31)^(Bs>>>8|Dt<<24)^(Bs>>>7|Dt<<25),ii=d[we-2],Ir=ii.high,tr=ii.low,ur=(Ir>>>19|tr<<13)^(Ir<<3|tr>>>29)^Ir>>>6,Qe=(tr>>>19|Ir<<13)^(tr<<3|Ir>>>29)^(tr>>>6|Ir<<26),be=d[we-7],Al=be.high,Ai=be.low,Mr=d[we-16],Mn=Mr.high,mn=Mr.low;Ee=zi+Ai,Gi=Ce+Al+(Ee>>>0>>0?1:0),Ee=Ee+Qe,Gi=Gi+ur+(Ee>>>0>>0?1:0),Ee=Ee+mn,Gi=Gi+Mn+(Ee>>>0>>0?1:0),xo.high=Gi,xo.low=Ee}var Le=qe&se^~qe&ce,Ja=_e&it^~_e&dr,Ji=te&ee^te&me^ee&me,Co=re&Z^re&le^Z&le,Ti=(te>>>28|re<<4)^(te<<30|re>>>2)^(te<<25|re>>>7),A=(re>>>28|te<<4)^(re<<30|te>>>2)^(re<<25|te>>>7),k=(qe>>>14|_e<<18)^(qe>>>18|_e<<14)^(qe<<23|_e>>>9),O=(_e>>>14|qe<<18)^(_e>>>18|qe<<14)^(_e<<23|qe>>>9),V=l[we],H=V.high,W=V.low,ue=ct+O,Re=Or+k+(ue>>>0>>0?1:0),ue=ue+Ja,Re=Re+Le+(ue>>>0>>0?1:0),ue=ue+W,Re=Re+H+(ue>>>0>>0?1:0),ue=ue+Ee,Re=Re+Gi+(ue>>>0>>0?1:0),Ye=A+Co,Ie=Ti+Ji+(Ye>>>0>>0?1:0);Or=ce,ct=dr,ce=se,dr=it,se=qe,it=_e,_e=ve+ue|0,qe=Ae+Re+(_e>>>0>>0?1:0)|0,Ae=me,ve=le,me=ee,le=Z,ee=te,Z=re,re=ue+Ye|0,te=Re+Ie+(re>>>0>>0?1:0)|0}U=p.low=U+re,p.high=R+te+(U>>>0>>0?1:0),D=I.low=D+Z,I.high=T+ee+(D>>>0>>0?1:0),Q=y.low=Q+le,y.high=B+me+(Q>>>0>>0?1:0),E=w.low=E+ve,w.high=v+Ae+(E>>>0>>0?1:0),N=C.low=N+_e,C.high=P+qe+(N>>>0<_e>>>0?1:0),z=b.low=z+it,b.high=J+se+(z>>>0>>0?1:0),G=x.low=G+dr,x.high=L+ce+(G>>>0>>0?1:0),$=_.low=$+ct,_.high=K+Or+($>>>0>>0?1:0)},_doFinalize:function(){var f=this._data,h=f.words,g=this._nDataBytes*8,p=f.sigBytes*8;h[p>>>5]|=128<<24-p%32,h[(p+128>>>10<<5)+30]=Math.floor(g/4294967296),h[(p+128>>>10<<5)+31]=g,f.sigBytes=h.length*4,this._process();var I=this._hash.toX32();return I},clone:function(){var f=i.clone.call(this);return f._hash=this._hash.clone(),f},blockSize:1024/32});e.SHA512=i._createHelper(u),e.HmacSHA512=i._createHmacHelper(u)})(),r.SHA512})});var RQ=oe((zg,UQ)=>{(function(r,e,t){typeof zg=="object"?UQ.exports=zg=e(et(),Ju(),_C()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./sha512"],e):e(r.CryptoJS)})(zg,function(r){return(function(){var e=r,t=e.x64,i=t.Word,n=t.WordArray,s=e.algo,o=s.SHA512,a=s.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new i.init(3418070365,3238371032),new i.init(1654270250,914150663),new i.init(2438529370,812702999),new i.init(355462360,4144912697),new i.init(1731405415,4290775857),new i.init(2394180231,1750603025),new i.init(3675008525,1694076839),new i.init(1203062813,3204075428)])},_doFinalize:function(){var c=o._doFinalize.call(this);return c.sigBytes-=16,c}});e.SHA384=o._createHelper(a),e.HmacSHA384=o._createHmacHelper(a)})(),r.SHA384})});var qQ=oe((Jg,NQ)=>{(function(r,e,t){typeof Jg=="object"?NQ.exports=Jg=e(et(),Ju()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Jg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64,a=o.Word,c=t.algo,l=[],d=[],u=[];(function(){for(var g=1,p=0,I=0;I<24;I++){l[g+5*p]=(I+1)*(I+2)/2%64;var y=p%5,w=(2*g+3*p)%5;g=y,p=w}for(var g=0;g<5;g++)for(var p=0;p<5;p++)d[g+5*p]=p+(2*g+3*p)%5*5;for(var C=1,b=0;b<24;b++){for(var x=0,_=0,R=0;R<7;R++){if(C&1){var U=(1<>>24)&16711935|(C<<24|C>>>8)&4278255360,b=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;var x=I[w];x.high^=b,x.low^=C}for(var _=0;_<24;_++){for(var R=0;R<5;R++){for(var U=0,T=0,D=0;D<5;D++){var x=I[R+5*D];U^=x.high,T^=x.low}var B=f[R];B.high=U,B.low=T}for(var R=0;R<5;R++)for(var Q=f[(R+4)%5],v=f[(R+1)%5],E=v.high,P=v.low,U=Q.high^(E<<1|P>>>31),T=Q.low^(P<<1|E>>>31),D=0;D<5;D++){var x=I[R+5*D];x.high^=U,x.low^=T}for(var N=1;N<25;N++){var U,T,x=I[N],J=x.high,z=x.low,L=l[N];L<32?(U=J<>>32-L,T=z<>>32-L):(U=z<>>64-L,T=J<>>64-L);var G=f[d[N]];G.high=U,G.low=T}var K=f[0],$=I[0];K.high=$.high,K.low=$.low;for(var R=0;R<5;R++)for(var D=0;D<5;D++){var N=R+5*D,x=I[N],te=f[N],re=f[(R+1)%5+5*D],ee=f[(R+2)%5+5*D];x.high=te.high^~re.high&ee.high,x.low=te.low^~re.low&ee.low}var x=I[0],Z=u[_];x.high^=Z.high,x.low^=Z.low}},_doFinalize:function(){var g=this._data,p=g.words,I=this._nDataBytes*8,y=g.sigBytes*8,w=this.blockSize*32;p[y>>>5]|=1<<24-y%32,p[(e.ceil((y+1)/w)*w>>>5)-1]|=128,g.sigBytes=p.length*4,this._process();for(var C=this._state,b=this.cfg.outputLength/8,x=b/8,_=[],R=0;R>>24)&16711935|(T<<24|T>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,_.push(D),_.push(T)}return new n.init(_,b)},clone:function(){for(var g=s.clone.call(this),p=g._state=this._state.slice(0),I=0;I<25;I++)p[I]=p[I].clone();return g}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)})(Math),r.SHA3})});var MQ=oe((jg,OQ)=>{(function(r,e){typeof jg=="object"?OQ.exports=jg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(jg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),d=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(b,x){for(var _=0;_<16;_++){var R=x+_,U=b[R];b[R]=(U<<8|U>>>24)&16711935|(U<<24|U>>>8)&4278255360}var T=this._hash.words,D=u.words,B=f.words,Q=a.words,v=c.words,E=l.words,P=d.words,N,J,z,L,G,K,$,te,re,ee;K=N=T[0],$=J=T[1],te=z=T[2],re=L=T[3],ee=G=T[4];for(var Z,_=0;_<80;_+=1)Z=N+b[x+Q[_]]|0,_<16?Z+=g(J,z,L)+D[0]:_<32?Z+=p(J,z,L)+D[1]:_<48?Z+=I(J,z,L)+D[2]:_<64?Z+=y(J,z,L)+D[3]:Z+=w(J,z,L)+D[4],Z=Z|0,Z=C(Z,E[_]),Z=Z+G|0,N=G,G=L,L=C(z,10),z=J,J=Z,Z=K+b[x+v[_]]|0,_<16?Z+=w($,te,re)+B[0]:_<32?Z+=y($,te,re)+B[1]:_<48?Z+=I($,te,re)+B[2]:_<64?Z+=p($,te,re)+B[3]:Z+=g($,te,re)+B[4],Z=Z|0,Z=C(Z,P[_]),Z=Z+ee|0,K=ee,ee=re,re=C(te,10),te=$,$=Z;Z=T[1]+z+re|0,T[1]=T[2]+L+ee|0,T[2]=T[3]+G+K|0,T[3]=T[4]+N+$|0,T[4]=T[0]+J+te|0,T[0]=Z},_doFinalize:function(){var b=this._data,x=b.words,_=this._nDataBytes*8,R=b.sigBytes*8;x[R>>>5]|=128<<24-R%32,x[(R+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,b.sigBytes=(x.length+1)*4,this._process();for(var U=this._hash,T=U.words,D=0;D<5;D++){var B=T[D];T[D]=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360}return U},clone:function(){var b=s.clone.call(this);return b._hash=this._hash.clone(),b}});function g(b,x,_){return b^x^_}function p(b,x,_){return b&x|~b&_}function I(b,x,_){return(b|~x)^_}function y(b,x,_){return b&_|x&~_}function w(b,x,_){return b^(x|~_)}function C(b,x){return b<>>32-x}t.RIPEMD160=s._createHelper(h),t.HmacRIPEMD160=s._createHmacHelper(h)})(Math),r.RIPEMD160})});var Vg=oe(($g,LQ)=>{(function(r,e){typeof $g=="object"?LQ.exports=$g=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})($g,function(r){(function(){var e=r,t=e.lib,i=t.Base,n=e.enc,s=n.Utf8,o=e.algo,a=o.HMAC=i.extend({init:function(c,l){c=this._hasher=new c.init,typeof l=="string"&&(l=s.parse(l));var d=c.blockSize,u=d*4;l.sigBytes>u&&(l=c.finalize(l)),l.clamp();for(var f=this._oKey=l.clone(),h=this._iKey=l.clone(),g=f.words,p=h.words,I=0;I{(function(r,e,t){typeof Yg=="object"?HQ.exports=Yg=e(et(),Hg(),Vg()):typeof define=="function"&&define.amd?define(["./core","./sha256","./hmac"],e):e(r.CryptoJS)})(Yg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.SHA256,a=s.HMAC,c=s.PBKDF2=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(l){this.cfg=this.cfg.extend(l)},compute:function(l,d){for(var u=this.cfg,f=a.create(u.hasher,l),h=n.create(),g=n.create([1]),p=h.words,I=g.words,y=u.keySize,w=u.iterations;p.length{(function(r,e,t){typeof Wg=="object"?GQ.exports=Wg=e(et(),QC(),Vg()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],e):e(r.CryptoJS)})(Wg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.MD5,a=s.EvpKDF=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,l){for(var d,u=this.cfg,f=u.hasher.create(),h=n.create(),g=h.words,p=u.keySize,I=u.iterations;g.length{(function(r,e,t){typeof Xg=="object"?zQ.exports=Xg=e(et(),Ts()):typeof define=="function"&&define.amd?define(["./core","./evpkdf"],e):e(r.CryptoJS)})(Xg,function(r){r.lib.Cipher||(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=i.BufferedBlockAlgorithm,a=t.enc,c=a.Utf8,l=a.Base64,d=t.algo,u=d.EvpKDF,f=i.Cipher=o.extend({cfg:n.extend(),createEncryptor:function(B,Q){return this.create(this._ENC_XFORM_MODE,B,Q)},createDecryptor:function(B,Q){return this.create(this._DEC_XFORM_MODE,B,Q)},init:function(B,Q,v){this.cfg=this.cfg.extend(v),this._xformMode=B,this._key=Q,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(B){return this._append(B),this._process()},finalize:function(B){B&&this._append(B);var Q=this._doFinalize();return Q},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:(function(){function B(Q){return typeof Q=="string"?D:R}return function(Q){return{encrypt:function(v,E,P){return B(E).encrypt(Q,v,E,P)},decrypt:function(v,E,P){return B(E).decrypt(Q,v,E,P)}}}})()}),h=i.StreamCipher=f.extend({_doFinalize:function(){var B=this._process(!0);return B},blockSize:1}),g=t.mode={},p=i.BlockCipherMode=n.extend({createEncryptor:function(B,Q){return this.Encryptor.create(B,Q)},createDecryptor:function(B,Q){return this.Decryptor.create(B,Q)},init:function(B,Q){this._cipher=B,this._iv=Q}}),I=g.CBC=(function(){var B=p.extend();B.Encryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize;Q.call(this,v,E,N),P.encryptBlock(v,E),this._prevBlock=v.slice(E,E+N)}}),B.Decryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize,J=v.slice(E,E+N);P.decryptBlock(v,E),Q.call(this,v,E,N),this._prevBlock=J}});function Q(v,E,P){var N,J=this._iv;J?(N=J,this._iv=e):N=this._prevBlock;for(var z=0;z>>2]&255;B.sigBytes-=Q}},C=i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:I,padding:w}),reset:function(){var B;f.reset.call(this);var Q=this.cfg,v=Q.iv,E=Q.mode;this._xformMode==this._ENC_XFORM_MODE?B=E.createEncryptor:(B=E.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==B?this._mode.init(this,v&&v.words):(this._mode=B.call(E,this,v&&v.words),this._mode.__creator=B)},_doProcessBlock:function(B,Q){this._mode.processBlock(B,Q)},_doFinalize:function(){var B,Q=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(Q.pad(this._data,this.blockSize),B=this._process(!0)):(B=this._process(!0),Q.unpad(B)),B},blockSize:128/32}),b=i.CipherParams=n.extend({init:function(B){this.mixIn(B)},toString:function(B){return(B||this.formatter).stringify(this)}}),x=t.format={},_=x.OpenSSL={stringify:function(B){var Q,v=B.ciphertext,E=B.salt;return E?Q=s.create([1398893684,1701076831]).concat(E).concat(v):Q=v,Q.toString(l)},parse:function(B){var Q,v=l.parse(B),E=v.words;return E[0]==1398893684&&E[1]==1701076831&&(Q=s.create(E.slice(2,4)),E.splice(0,4),v.sigBytes-=16),b.create({ciphertext:v,salt:Q})}},R=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=B.createEncryptor(v,E),N=P.finalize(Q),J=P.cfg;return b.create({ciphertext:N,key:v,iv:J.iv,algorithm:B,mode:J.mode,padding:J.padding,blockSize:B.blockSize,formatter:E.format})},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=B.createDecryptor(v,E).finalize(Q.ciphertext);return P},_parse:function(B,Q){return typeof B=="string"?Q.parse(B,this):B}}),U=t.kdf={},T=U.OpenSSL={execute:function(B,Q,v,E,P){if(E||(E=s.random(64/8)),P)var N=u.create({keySize:Q+v,hasher:P}).compute(B,E);else var N=u.create({keySize:Q+v}).compute(B,E);var J=s.create(N.words.slice(Q),v*4);return N.sigBytes=Q*4,b.create({key:N,iv:J,salt:E})}},D=i.PasswordBasedCipher=R.extend({cfg:R.cfg.extend({kdf:T}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=E.kdf.execute(v,B.keySize,B.ivSize,E.salt,E.hasher);E.iv=P.iv;var N=R.encrypt.call(this,B,Q,P.key,E);return N.mixIn(P),N},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=E.kdf.execute(v,B.keySize,B.ivSize,Q.salt,E.hasher);E.iv=P.iv;var N=R.decrypt.call(this,B,Q,P.key,E);return N}})})()})});var jQ=oe((Zg,JQ)=>{(function(r,e,t){typeof Zg=="object"?JQ.exports=Zg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Zg,function(r){return r.mode.CFB=(function(){var e=r.lib.BlockCipherMode.extend();e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize;t.call(this,i,n,o,s),this._prevBlock=i.slice(n,n+o)}}),e.Decryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=i.slice(n,n+o);t.call(this,i,n,o,s),this._prevBlock=a}});function t(i,n,s,o){var a,c=this._iv;c?(a=c.slice(0),this._iv=void 0):a=this._prevBlock,o.encryptBlock(a,0);for(var l=0;l{(function(r,e,t){typeof ep=="object"?$Q.exports=ep=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ep,function(r){return r.mode.CTR=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._counter;a&&(c=this._counter=a.slice(0),this._iv=void 0);var l=c.slice(0);s.encryptBlock(l,0),c[o-1]=c[o-1]+1|0;for(var d=0;d{(function(r,e,t){typeof tp=="object"?YQ.exports=tp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(tp,function(r){return r.mode.CTRGladman=(function(){var e=r.lib.BlockCipherMode.extend();function t(s){if((s>>24&255)===255){var o=s>>16&255,a=s>>8&255,c=s&255;o===255?(o=0,a===255?(a=0,c===255?c=0:++c):++a):++o,s=0,s+=o<<16,s+=a<<8,s+=c}else s+=1<<24;return s}function i(s){return(s[0]=t(s[0]))===0&&(s[1]=t(s[1])),s}var n=e.Encryptor=e.extend({processBlock:function(s,o){var a=this._cipher,c=a.blockSize,l=this._iv,d=this._counter;l&&(d=this._counter=l.slice(0),this._iv=void 0),i(d);var u=d.slice(0);a.encryptBlock(u,0);for(var f=0;f{(function(r,e,t){typeof rp=="object"?XQ.exports=rp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(rp,function(r){return r.mode.OFB=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._keystream;a&&(c=this._keystream=a.slice(0),this._iv=void 0),s.encryptBlock(c,0);for(var l=0;l{(function(r,e,t){typeof ip=="object"?e_.exports=ip=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ip,function(r){return r.mode.ECB=(function(){var e=r.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(t,i){this._cipher.encryptBlock(t,i)}}),e.Decryptor=e.extend({processBlock:function(t,i){this._cipher.decryptBlock(t,i)}}),e})(),r.mode.ECB})});var i_=oe((np,r_)=>{(function(r,e,t){typeof np=="object"?r_.exports=np=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(np,function(r){return r.pad.AnsiX923={pad:function(e,t){var i=e.sigBytes,n=t*4,s=n-i%n,o=i+s-1;e.clamp(),e.words[o>>>2]|=s<<24-o%4*8,e.sigBytes+=s},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Ansix923})});var s_=oe((sp,n_)=>{(function(r,e,t){typeof sp=="object"?n_.exports=sp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(sp,function(r){return r.pad.Iso10126={pad:function(e,t){var i=t*4,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Iso10126})});var a_=oe((op,o_)=>{(function(r,e,t){typeof op=="object"?o_.exports=op=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(op,function(r){return r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971})});var l_=oe((ap,c_)=>{(function(r,e,t){typeof ap=="object"?c_.exports=ap=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ap,function(r){return r.pad.ZeroPadding={pad:function(e,t){var i=t*4;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){for(var t=e.words,i=e.sigBytes-1,i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},r.pad.ZeroPadding})});var u_=oe((cp,d_)=>{(function(r,e,t){typeof cp=="object"?d_.exports=cp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(cp,function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding})});var A_=oe((lp,f_)=>{(function(r,e,t){typeof lp=="object"?f_.exports=lp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(lp,function(r){return(function(e){var t=r,i=t.lib,n=i.CipherParams,s=t.enc,o=s.Hex,a=t.format,c=a.Hex={stringify:function(l){return l.ciphertext.toString(o)},parse:function(l){var d=o.parse(l);return n.create({ciphertext:d})}}})(),r.format.Hex})});var g_=oe((dp,h_)=>{(function(r,e,t){typeof dp=="object"?h_.exports=dp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(dp,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo,s=[],o=[],a=[],c=[],l=[],d=[],u=[],f=[],h=[],g=[];(function(){for(var y=[],w=0;w<256;w++)w<128?y[w]=w<<1:y[w]=w<<1^283;for(var C=0,b=0,w=0;w<256;w++){var x=b^b<<1^b<<2^b<<3^b<<4;x=x>>>8^x&255^99,s[C]=x,o[x]=C;var _=y[C],R=y[_],U=y[R],T=y[x]*257^x*16843008;a[C]=T<<24|T>>>8,c[C]=T<<16|T>>>16,l[C]=T<<8|T>>>24,d[C]=T;var T=U*16843009^R*65537^_*257^C*16843008;u[x]=T<<24|T>>>8,f[x]=T<<16|T>>>16,h[x]=T<<8|T>>>24,g[x]=T,C?(C=_^y[y[y[U^_]]],b^=y[y[b]]):C=b=1}})();var p=[0,1,2,4,8,16,32,64,128,27,54],I=n.AES=i.extend({_doReset:function(){var y;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var w=this._keyPriorReset=this._key,C=w.words,b=w.sigBytes/4,x=this._nRounds=b+6,_=(x+1)*4,R=this._keySchedule=[],U=0;U<_;U++)U6&&U%b==4&&(y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255]):(y=y<<8|y>>>24,y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255],y^=p[U/b|0]<<24),R[U]=R[U-b]^y);for(var T=this._invKeySchedule=[],D=0;D<_;D++){var U=_-D;if(D%4)var y=R[U];else var y=R[U-4];D<4||U<=4?T[D]=y:T[D]=u[s[y>>>24]]^f[s[y>>>16&255]]^h[s[y>>>8&255]]^g[s[y&255]]}}},encryptBlock:function(y,w){this._doCryptBlock(y,w,this._keySchedule,a,c,l,d,s)},decryptBlock:function(y,w){var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C,this._doCryptBlock(y,w,this._invKeySchedule,u,f,h,g,o);var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C},_doCryptBlock:function(y,w,C,b,x,_,R,U){for(var T=this._nRounds,D=y[w]^C[0],B=y[w+1]^C[1],Q=y[w+2]^C[2],v=y[w+3]^C[3],E=4,P=1;P>>24]^x[B>>>16&255]^_[Q>>>8&255]^R[v&255]^C[E++],J=b[B>>>24]^x[Q>>>16&255]^_[v>>>8&255]^R[D&255]^C[E++],z=b[Q>>>24]^x[v>>>16&255]^_[D>>>8&255]^R[B&255]^C[E++],L=b[v>>>24]^x[D>>>16&255]^_[B>>>8&255]^R[Q&255]^C[E++];D=N,B=J,Q=z,v=L}var N=(U[D>>>24]<<24|U[B>>>16&255]<<16|U[Q>>>8&255]<<8|U[v&255])^C[E++],J=(U[B>>>24]<<24|U[Q>>>16&255]<<16|U[v>>>8&255]<<8|U[D&255])^C[E++],z=(U[Q>>>24]<<24|U[v>>>16&255]<<16|U[D>>>8&255]<<8|U[B&255])^C[E++],L=(U[v>>>24]<<24|U[D>>>16&255]<<16|U[B>>>8&255]<<8|U[Q&255])^C[E++];y[w]=N,y[w+1]=J,y[w+2]=z,y[w+3]=L},keySize:256/32});e.AES=i._createHelper(I)})(),r.AES})});var m_=oe((up,p_)=>{(function(r,e,t){typeof up=="object"?p_.exports=up=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(up,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],d=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var p=this._key,I=p.words,y=[],w=0;w<56;w++){var C=o[w]-1;y[w]=I[C>>>5]>>>31-C%32&1}for(var b=this._subKeys=[],x=0;x<16;x++){for(var _=b[x]=[],R=c[x],w=0;w<24;w++)_[w/6|0]|=y[(a[w]-1+R)%28]<<31-w%6,_[4+(w/6|0)]|=y[28+(a[w+24]-1+R)%28]<<31-w%6;_[0]=_[0]<<1|_[0]>>>31;for(var w=1;w<7;w++)_[w]=_[w]>>>(w-1)*4+3;_[7]=_[7]<<5|_[7]>>>27}for(var U=this._invSubKeys=[],w=0;w<16;w++)U[w]=b[15-w]},encryptBlock:function(p,I){this._doCryptBlock(p,I,this._subKeys)},decryptBlock:function(p,I){this._doCryptBlock(p,I,this._invSubKeys)},_doCryptBlock:function(p,I,y){this._lBlock=p[I],this._rBlock=p[I+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var w=0;w<16;w++){for(var C=y[w],b=this._lBlock,x=this._rBlock,_=0,R=0;R<8;R++)_|=l[R][((x^C[R])&d[R])>>>0];this._lBlock=x,this._rBlock=b^_}var U=this._lBlock;this._lBlock=this._rBlock,this._rBlock=U,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),p[I]=this._lBlock,p[I+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(p,I){var y=(this._lBlock>>>p^this._rBlock)&I;this._rBlock^=y,this._lBlock^=y<>>p^this._lBlock)&I;this._lBlock^=y,this._rBlock^=y<192.");var y=I.slice(0,2),w=I.length<4?I.slice(0,2):I.slice(2,4),C=I.length<6?I.slice(0,2):I.slice(4,6);this._des1=u.createEncryptor(i.create(y)),this._des2=u.createEncryptor(i.create(w)),this._des3=u.createEncryptor(i.create(C))},encryptBlock:function(p,I){this._des1.encryptBlock(p,I),this._des2.decryptBlock(p,I),this._des3.encryptBlock(p,I)},decryptBlock:function(p,I){this._des3.decryptBlock(p,I),this._des2.encryptBlock(p,I),this._des1.decryptBlock(p,I)},keySize:192/32,ivSize:64/32,blockSize:64/32});e.TripleDES=n._createHelper(g)})(),r.TripleDES})});var I_=oe((fp,y_)=>{(function(r,e,t){typeof fp=="object"?y_.exports=fp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(fp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=n.RC4=i.extend({_doReset:function(){for(var c=this._key,l=c.words,d=c.sigBytes,u=this._S=[],f=0;f<256;f++)u[f]=f;for(var f=0,h=0;f<256;f++){var g=f%d,p=l[g>>>2]>>>24-g%4*8&255;h=(h+u[f]+p)%256;var I=u[f];u[f]=u[h],u[h]=I}this._i=this._j=0},_doProcessBlock:function(c,l){c[l]^=o.call(this)},keySize:256/32,ivSize:0});function o(){for(var c=this._S,l=this._i,d=this._j,u=0,f=0;f<4;f++){l=(l+1)%256,d=(d+c[l])%256;var h=c[l];c[l]=c[d],c[d]=h,u|=c[(c[l]+c[d])%256]<<24-f*8}return this._i=l,this._j=d,u}e.RC4=i._createHelper(s);var a=n.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var c=this.cfg.drop;c>0;c--)o.call(this)}});e.RC4Drop=i._createHelper(a)})(),r.RC4})});var x_=oe((Ap,w_)=>{(function(r,e,t){typeof Ap=="object"?w_.exports=Ap=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Ap,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.Rabbit=i.extend({_doReset:function(){for(var d=this._key.words,u=this.cfg.iv,f=0;f<4;f++)d[f]=(d[f]<<8|d[f]>>>24)&16711935|(d[f]<<24|d[f]>>>8)&4278255360;var h=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],g=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var f=0;f<4;f++)l.call(this);for(var f=0;f<8;f++)g[f]^=h[f+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;g[0]^=w,g[1]^=b,g[2]^=C,g[3]^=x,g[4]^=w,g[5]^=b,g[6]^=C,g[7]^=x;for(var f=0;f<4;f++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=i._createHelper(c)})(),r.Rabbit})});var E_=oe((hp,C_)=>{(function(r,e,t){typeof hp=="object"?C_.exports=hp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(hp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.RabbitLegacy=i.extend({_doReset:function(){var d=this._key.words,u=this.cfg.iv,f=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],h=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var g=0;g<4;g++)l.call(this);for(var g=0;g<8;g++)h[g]^=f[g+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;h[0]^=w,h[1]^=b,h[2]^=C,h[3]^=x,h[4]^=w,h[5]^=b,h[6]^=C,h[7]^=x;for(var g=0;g<4;g++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=i._createHelper(c)})(),r.RabbitLegacy})});var b_=oe((gp,B_)=>{(function(r,e,t){typeof gp=="object"?B_.exports=gp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(gp,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo;let s=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var c={pbox:[],sbox:[]};function l(g,p){let I=p>>24&255,y=p>>16&255,w=p>>8&255,C=p&255,b=g.sbox[0][I]+g.sbox[1][y];return b=b^g.sbox[2][w],b=b+g.sbox[3][C],b}function d(g,p,I){let y=p,w=I,C;for(let b=0;b1;--b)y=y^g.pbox[b],w=l(g,y)^w,C=y,y=w,w=C;return C=y,y=w,w=C,w=w^g.pbox[1],y=y^g.pbox[0],{left:y,right:w}}function f(g,p,I){for(let x=0;x<4;x++){g.sbox[x]=[];for(let _=0;_<256;_++)g.sbox[x][_]=a[x][_]}let y=0;for(let x=0;x=I&&(y=0);let w=0,C=0,b=0;for(let x=0;x{(function(r,e,t){typeof pp=="object"?v_.exports=pp=e(et(),Ju(),EQ(),bQ(),Go(),SQ(),zo(),QC(),Hg(),PQ(),_C(),RQ(),qQ(),MQ(),Vg(),KQ(),Ts(),fr(),jQ(),VQ(),WQ(),ZQ(),t_(),i_(),s_(),a_(),l_(),u_(),A_(),g_(),m_(),I_(),x_(),E_(),b_()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy","./blowfish"],e):r.CryptoJS=e(r.CryptoJS)})(pp,function(r){return r})});function Ac(r){return Wi.default.MD5(r).toString(Wi.default.enc.Hex)}function k_(r,e){let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/),i=t?t[1]:e;return`${r}:${i}`}function S_(r,e){let t=`${r}${e}${F_}${cz}`,i=Wi.default.SHA1(t).toString(Wi.default.enc.Hex),n=Wi.default.MD5(i).toString(Wi.default.enc.Hex);return`div101.${r}${n}`}function P_(r){let e=r.length,t=262144;for(;e/t>512&&t<2097152;)t=t<<1;let i=[];for(let s=0;s{"use strict";Wi=Qr(fc(),1),D_="https://api-pan.xunlei.com/drive/v1",Us=`${D_}/files`,g0e=`${D_}/tasks`,Q_="https://xluser-ssl.xunlei.com",mp=`${Q_}/v1`,FC="drive#folder",__="drive#file",PC="UPLOAD_TYPE_RESUMABLE",az="access_end_point_token",F_="40",cz="34a062aaa22f906fca4fefe9fb3a3021";ju=class{options;tokenResp=null;coreLoginResp=null;captchaToken="";creditKey="";constructor(e){this.options=e,this.captchaToken=e.captchaToken||"",this.creditKey=e.creditKey||""}getCaptchaSign(){if(!this.options.algorithms||this.options.algorithms.length===0)return{timestamp:this.options.timestamp||"",sign:this.options.captchaSign||""};let e=Date.now().toString(),t=`${this.options.clientId}${this.options.clientVersion}${this.options.packageName}${this.options.deviceId}${e}`;for(let i of this.options.algorithms)t=Ac(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaToken,client_id:this.options.clientId,device_id:this.options.deviceId,meta:t,redirect_uri:"xlaccsdk01://xunlei.com/callback?state=harbor"},n=await this.rawRequest(`${mp}/shield/captcha/init`,{method:"POST",body:i});if(n.error_code||n.error&&n.error!=="success")throw new Error(`Captcha error: ${n.error_code} ${n.error} ${n.error_description||""}`);if(n.url)throw new Error(`need verify: Click Here`);if(!n.captcha_token)throw new Error("empty captchaToken");this.captchaToken=n.captcha_token,this.options.onPersistCaptchaToken&&await this.options.onPersistCaptchaToken(n.captcha_token)}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.options.clientVersion,package_name:this.options.packageName,user_id:t,timestamp:i,captcha_sign:n};await this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,await this.refreshCaptchaToken(e,i)}formatReviewData(e){let t=S_(this.options.deviceId,this.options.packageName),i={creditkey:e.creditkey,reviewurl:`${e.reviewurl}&deviceid=${t}`,deviceid:t,devicesign:t},s=` +${d}${u}`,A=await Gf(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:{"Content-Type":l,Date:c,Authorization:`OSS ${e.AccessKeyId}:${A}`,"x-oss-security-token":e.SecurityToken,"x-oss-callback":a,"x-oss-callback-var":o,"Content-Length":String(i.length)},body:i});if(!g.ok){let p=(await g.text()).slice(0,300);throw new Error(`115 OSS \u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${g.status}\uFF09\uFF1A${p}`)}}}});function sr(r){if(!r)return"/";let t=r.replace(/\\/g,"/").replace(/\/+/g,"/").replace(/^\/|\/$/g,"");return t?"/"+t:"/"}function ys(r){let e=sr(r);if(e==="/")return"/";let t=e.split("/").filter(Boolean);return t.pop(),t.length?"/"+t.join("/"):"/"}function Hr(r){let e=sr(r);if(e==="/")return"";let t=e.split("/").filter(Boolean);return t[t.length-1]||""}function Md(...r){return sr(r.join("/"))}function rl(r,e,t){if(!r||!r.trim())return`${e.UserName} ${t} ${e.ObjPath}`;let i=r;return i=i.replace(/\{\{\.UserName\}\}/g,e.UserName||""),i=i.replace(/\{\{\.ObjName\}\}/g,e.ObjName||""),i=i.replace(/\{\{\.ObjPath\}\}/g,e.ObjPath||""),i=i.replace(/\{\{\.ParentName\}\}/g,e.ParentName||""),i=i.replace(/\{\{\.ParentPath\}\}/g,e.ParentPath||""),i=i.replace(/\{\{\.TargetName\}\}/g,e.TargetName||""),i=i.replace(/\{\{\.TargetPath\}\}/g,e.TargetPath||""),i}function CF(r,e){let t=sr(r),i=sr(e),n=1;for(;n0&&t[n]!=="/";)n--;let o=sr(t.slice(0,n)),c=t.slice(n+1,s),l=i.slice(n+1,a),d=t.slice(n+1),u=i.slice(n+1);return{ancestor:o,aChildName:c,bChildName:l,aRest:d,bRest:u}}var Xm,EF=J(()=>{"use strict";Xm=class{addition;token;owner;repo;constructor(e){this.addition=e,this.token=(e.token||"").trim(),this.owner=(e.owner||"").trim(),this.repo=(e.repo||"").trim()}get headers(){let e={Accept:"application/vnd.github.object+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"OpenList-Github-Driver"};return this.token&&(e.Authorization=`Bearer ${this.token}`),e}async request(e,t={}){let i={...this.headers,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["Content-Type"]||(i["Content-Type"]="application/json")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n});if(!s.ok){let a=`${s.status} ${s.statusText}`;try{let o=await s.json();o?.message&&(a=`${s.status} ${s.statusText}: ${o.message}`)}catch{}throw new Error(a)}return s.status===204?{}:await s.json()}getContentApiUrl(e){let t=sr(e);return`https://api.github.com/repos/${this.owner}/${this.repo}/contents${t==="/"?"":t}`}async getContents(e,t){let i=new URL(this.getContentApiUrl(e));return t&&i.searchParams.set("ref",t),this.request(i.toString())}async getRepo(){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}`)}async getBranchHead(e){return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/branches/${encodeURIComponent(e)}`)).commit.sha}async getAuthenticatedUser(){return this.request("https://api.github.com/user")}async getTree(e){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees/${e}`)}async getTreeDirectly(e,t){let i=await this.getContents(e,t);if(!i.entries&&i.type!=="dir")throw new Error(`${e} is not a folder`);let n=await this.getTree(i.sha);if(n.truncated)throw new Error(`tree ${e} is truncated`);return{tree:n,dirSha:i.sha}}async newTree(e,t){let i={tree:t};return e&&(i.base_tree=e),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees`,{method:"POST",body:i,headers:{Accept:"application/vnd.github+json"}})).sha}async putBlob(e){let t=Buffer.from(e).toString("base64");return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/blobs`,{method:"POST",body:{encoding:"base64",content:t},headers:{Accept:"application/vnd.github+json"}})).sha}async createCommit(e,t,i,n,s){let a={message:e,tree:t,parents:[i]};return n?.name&&(a.committer={name:n.name,email:n.email,date:new Date().toISOString()}),s?.name&&(a.author={name:s.name,email:s.email,date:new Date().toISOString()}),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/commits`,{method:"POST",body:a,headers:{Accept:"application/vnd.github+json"}})).sha}async updateRef(e,t){await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/refs/heads/${encodeURIComponent(e)}`,{method:"PATCH",body:{sha:t,force:!1},headers:{Accept:"application/vnd.github+json"}})}async renewParentTrees(e,t,i,n,s){let a=sr(e),o=sr(n);for(;a!==o;){a=ys(a);let{tree:c,dirSha:l}=await this.getTreeDirectly(a,s),d=c.tree.find(f=>f.sha===t);if(!d)throw new Error(`Object with sha ${t} not found in ${a}`);let u={path:d.path,mode:d.mode,type:d.type,sha:i};i=await this.newTree(l,[u]),t=l}return i}}});var Zm,BF=J(()=>{"use strict";ve();$e();EF();Zm=class{addition;client;isOnBranch=!1;commitLock=Promise.resolve();constructor(e){this.addition=e,this.client=new Xm(e)}async acquireLock(e){let t=this.commitLock,i;this.commitLock=new Promise(n=>{i=n}),await t;try{return await e()}finally{i()}}formatDownloadUrl(e){if(!e)return"";let t=(this.addition.gh_proxy||"").trim();return t?e.replace("https://raw.githubusercontent.com",t):e}async commitAndPush(e,t){let i=this.addition.ref,n=await this.client.getBranchHead(i),s=this.addition.committer_name&&this.addition.committer_email?{name:this.addition.committer_name,email:this.addition.committer_email}:void 0,a=this.addition.author_name&&this.addition.author_email?{name:this.addition.author_name,email:this.addition.author_email}:void 0,o=await this.client.createCommit(e,t,n,s,a);await this.client.updateRef(i,o)}async init(){if(this.addition.root_folder_path=sr(this.addition.root_folder_path||"/"),this.addition.committer_name&&!this.addition.committer_email||!this.addition.committer_name&&this.addition.committer_email)throw new Error("committer_name and committer_email must both be set or empty");if(this.addition.author_name&&!this.addition.author_email||!this.addition.author_name&&this.addition.author_email)throw new Error("author_name and author_email must both be set or empty");if(!this.addition.ref||!this.addition.ref.trim()){let e=await this.client.getRepo();this.addition.ref=e.default_branch,this.isOnBranch=!0}else try{await this.client.getBranchHead(this.addition.ref),this.isOnBranch=!0}catch{this.isOnBranch=!1}}async list(e,t){let i=sr(t),n=await this.client.getContents(i,this.addition.ref);if(!n.entries&&n.type!=="dir")throw new Error(`${t} is not a folder`);let s=[];if(n.entries&&n.entries.length>=1e3){let a=await this.client.getTree(n.sha);if(a.truncated)throw new Error(`Tree ${t} is truncated (>100,000 items)`);for(let o of a.tree){if(o.path===".gitkeep")continue;let c=o.type==="tree";s.push({name:o.path,size:o.size||0,is_dir:c,modified:new Date(0).toISOString(),sign:"",type:X(o.path,c),raw_url:""})}}else if(n.entries)for(let a of n.entries){if(a.name===".gitkeep")continue;let o=a.type==="dir";s.push({name:a.name,size:a.size||0,is_dir:o,modified:new Date(0).toISOString(),sign:"",type:X(a.name,o),raw_url:this.formatDownloadUrl(a.download_url)})}return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=sr(t),n=await this.client.getContents(i,this.addition.ref);if(n.type==="submodule")throw new Error("cannot download a submodule");let s=n.type==="dir"||!!n.entries,a=n.name||Hr(i)||"root";return{name:a,size:n.size||0,is_dir:s,modified:new Date(0).toISOString(),sign:"",type:X(a,s),raw_url:this.formatDownloadUrl(n.download_url)}}async mkdir(e,t){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let i=sr(t),n=ys(i),s=Hr(i);await this.acquireLock(async()=>{let a=await this.client.getContents(n,this.addition.ref);if(!a.entries&&a.type!=="dir")throw new Error(`${n} is not a folder`);let o=await this.client.newTree("",[{path:".gitkeep",mode:"100644",type:"blob",content:""}]),c=[{path:s,mode:"040000",type:"tree",sha:o}];a.entries?.length===1&&a.entries[0].name===".gitkeep"&&c.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let l=await this.client.newTree(a.sha,c),d=await this.client.renewParentTrees(n,a.sha,l,"/",this.addition.ref),u=rl(this.addition.mkdir_commit_message,{UserName:"OpenList",ObjName:s,ObjPath:i,ParentName:Hr(n),ParentPath:n},"mkdir");await this.commitAndPush(u,d)})}async put(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=sr(t),s=ys(n),a=Hr(n);await this.acquireLock(async()=>{let o=await this.client.putBlob(i),c=await this.client.getContents(s,this.addition.ref);if(!c.entries&&c.type!=="dir")throw new Error(`${s} is not a folder`);let l=[{path:a,mode:"100644",type:"blob",sha:o}];c.entries?.length===1&&c.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(c.sha,l),u=await this.client.renewParentTrees(s,c.sha,d,"/",this.addition.ref),f=rl(this.addition.put_commit_message,{UserName:"OpenList",ObjName:a,ObjPath:n,ParentName:Hr(s),ParentPath:s},"upload");await this.commitAndPush(f,u)})}async rename(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=sr(t),s=ys(n),a=Hr(n);await this.acquireLock(async()=>{let{tree:o,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=o.tree.find(p=>p.path===a);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot rename a submodule");let d={path:a,mode:l.mode,type:l.type,sha:null},u={path:i,mode:l.mode,type:l.type,sha:l.sha},f=await this.client.newTree(c,[d,u]),A=await this.client.renewParentTrees(s,c,f,"/",this.addition.ref),g=rl(this.addition.rename_commit_message,{UserName:"OpenList",ObjName:a,ObjPath:n,ParentName:Hr(s),ParentPath:s,TargetName:i,TargetPath:Md(s,i)},"rename");await this.commitAndPush(g,A)})}async remove(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=sr(t),s=ys(n),a=Hr(n);await this.acquireLock(async()=>{let{tree:o,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=o.tree.find(g=>g.path===a);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot remove a submodule");let d=[{path:a,mode:l.mode,type:l.type,sha:null}];o.tree.length===1&&d.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let u=await this.client.newTree(c,d),f=await this.client.renewParentTrees(s,c,u,"/",this.addition.ref),A=rl(this.addition.delete_commit_message,{UserName:"OpenList",ObjName:a,ObjPath:n,ParentName:Hr(s),ParentPath:s},"remove");await this.commitAndPush(A,f)})}async move(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let a=sr(n),o=sr(t);if(o.startsWith(a))throw new Error("cannot move parent dir to child");await this.acquireLock(async()=>{let c="",l=ys(a),d=Hr(a);if(o.startsWith(l)){let{dstOldSha:f,dstNewSha:A,ancestorOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(a,o),m=o.slice(l.length).replace(/^\//,"").split("/")[0],w=Md(l,m),B=await this.client.renewParentTrees(o,f,A,w,this.addition.ref),C=p.tree.find(R=>R.path===d),x=p.tree.find(R=>R.path===m);if(!C||!x)throw new Error("Object not found during move");let _=await this.client.newTree(g,[{path:C.path,mode:C.mode,type:C.type,sha:null},{path:x.path,mode:x.mode,type:x.type,sha:B}]);c=await this.client.renewParentTrees(l,g,_,"/",this.addition.ref)}else if(a.startsWith(o)){let{tree:f,dirSha:A}=await this.client.getTreeDirectly(l,this.addition.ref),g=f.tree.find(T=>T.path===d);if(!g)throw new Error("Object not found");if(g.type==="commit")throw new Error("cannot move a submodule");let p=[{path:g.path,mode:g.mode,type:g.type,sha:null}];f.tree.length===1&&p.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let I=await this.client.newTree(A,p),w=a.slice(o.length).replace(/^\//,"").split("/")[0];if(!w)throw new Error("cannot move in place");let B=Md(o,w),C=await this.client.renewParentTrees(l,A,I,B,this.addition.ref),{tree:x,dirSha:_}=await this.client.getTreeDirectly(o,this.addition.ref),R=x.tree.find(T=>T.path===w);if(!R)throw new Error("Object not found");let U=await this.client.newTree(_,[{path:R.path,mode:R.mode,type:R.type,sha:C},{path:g.path,mode:g.mode,type:g.type,sha:g.sha}]);c=await this.client.renewParentTrees(o,_,U,"/",this.addition.ref)}else{let{dstOldSha:f,dstNewSha:A,srcParentOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(a,o),I=p.tree.find(v=>v.path===d);if(!I)throw new Error("Object not found");let m=[{path:I.path,mode:I.mode,type:I.type,sha:null}];p.tree.length===1&&m.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let w=await this.client.newTree(g,m),{ancestor:B,aChildName:C,bChildName:x}=CF(a,o),_=await this.client.renewParentTrees(o,f,A,Md(B,x),this.addition.ref),R=await this.client.renewParentTrees(l,g,w,Md(B,C),this.addition.ref),{tree:U,dirSha:T}=await this.client.getTreeDirectly(B,this.addition.ref),D=U.tree.find(v=>v.path===C),b=U.tree.find(v=>v.path===x);if(!D||!b)throw new Error("Ancestor child tree not found");let Q=await this.client.newTree(T,[{path:D.path,mode:D.mode,type:D.type,sha:R},{path:b.path,mode:b.mode,type:b.type,sha:_}]);c=await this.client.renewParentTrees(B,T,Q,"/",this.addition.ref)}let u=rl(this.addition.move_commit_message,{UserName:"OpenList",ObjName:d,ObjPath:a,ParentName:Hr(l),ParentPath:l,TargetName:Hr(o),TargetPath:o},"move");await this.commitAndPush(u,c)})}async copy(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let a=sr(n),o=sr(t);if(o.startsWith(a))throw new Error("cannot copy parent dir to child");await this.acquireLock(async()=>{let{dstOldSha:c,dstNewSha:l}=await this.copyWithoutRenewTree(a,o),d=await this.client.renewParentTrees(o,c,l,"/",this.addition.ref),u=rl(this.addition.copy_commit_message,{UserName:"OpenList",ObjName:Hr(a),ObjPath:a,ParentName:Hr(ys(a)),ParentPath:ys(a),TargetName:Hr(o),TargetPath:o},"copy");await this.commitAndPush(u,d)})}async copyWithoutRenewTree(e,t){let i=await this.client.getContents(t,this.addition.ref);if(!i.entries&&i.type!=="dir")throw new Error(`${t} is not a folder`);let n=ys(e),s=Hr(e),{tree:a,dirSha:o}=await this.client.getTreeDirectly(n,this.addition.ref),c=a.tree.find(u=>u.path===s);if(!c)throw new Error(`Object not found: ${e}`);if(c.type==="commit")throw new Error("cannot copy a submodule");let l=[{path:c.path,mode:c.mode,type:c.type,sha:c.sha}];i.entries?.length===1&&i.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(i.sha,l);return{dstOldSha:i.sha,dstNewSha:d,srcParentOldSha:o,srcParentTree:a,ancestorOldSha:o}}}});function il(r){return pn.default.MD5(r).toString(pn.default.enc.Hex)}function bF(r,e){let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/),i=t?t[1]:e;return`${r}:${i}`}function vF(r,e){let t=`${r}${e}${_F}${eV}`,i=pn.default.SHA1(t).toString(pn.default.enc.Hex),n=pn.default.MD5(i).toString(pn.default.enc.Hex);return`div101.${r}${n}`}function QF(r){let e=r.length,t=262144;for(;e/t>512&&t<2097152;)t=t<<1;let i=[];for(let s=0;s{"use strict";pn=Qr(Ao(),1),kF="https://api-pan.xunlei.com/drive/v1",fa=`${kF}/files`,Fye=`${kF}/tasks`,SF="https://xluser-ssl.xunlei.com",ey=`${SF}/v1`,QB="drive#folder",DF="drive#file",FB="UPLOAD_TYPE_RESUMABLE",Z$="access_end_point_token",_F="40",eV="34a062aaa22f906fca4fefe9fb3a3021";mh=class{options;tokenResp=null;coreLoginResp=null;captchaToken="";creditKey="";constructor(e){this.options=e,this.captchaToken=e.captchaToken||"",this.creditKey=e.creditKey||""}getCaptchaSign(){if(!this.options.algorithms||this.options.algorithms.length===0)return{timestamp:this.options.timestamp||"",sign:this.options.captchaSign||""};let e=Date.now().toString(),t=`${this.options.clientId}${this.options.clientVersion}${this.options.packageName}${this.options.deviceId}${e}`;for(let i of this.options.algorithms)t=il(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaToken,client_id:this.options.clientId,device_id:this.options.deviceId,meta:t,redirect_uri:"xlaccsdk01://xunlei.com/callback?state=harbor"},n=await this.rawRequest(`${ey}/shield/captcha/init`,{method:"POST",body:i});if(n.error_code||n.error&&n.error!=="success")throw new Error(`Captcha error: ${n.error_code} ${n.error} ${n.error_description||""}`);if(n.url)throw new Error(`need verify: Click Here`);if(!n.captcha_token)throw new Error("empty captchaToken");this.captchaToken=n.captcha_token,this.options.onPersistCaptchaToken&&await this.options.onPersistCaptchaToken(n.captcha_token)}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.options.clientVersion,package_name:this.options.packageName,user_id:t,timestamp:i,captcha_sign:n};await this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,await this.refreshCaptchaToken(e,i)}formatReviewData(e){let t=vF(this.options.deviceId,this.options.packageName),i={creditkey:e.creditkey,reviewurl:`${e.reviewurl}&deviceid=${t}`,deviceid:t,devicesign:t},s=`

\u{1F512} \u672C\u6B21\u767B\u5F55\u9700\u8981\u9A8C\u8BC1
@@ -76,10 +78,10 @@ ${d}${u}`,h=await Bu(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:
${JSON.stringify(i,null,2)}
-

`;return new Error(s)}async rawRequest(e,t={}){let i={"user-agent":this.options.userAgent,accept:"application/json;charset=UTF-8","x-device-id":this.options.deviceId,"x-client-id":this.options.clientId,"x-client-version":this.options.clientVersion,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["content-type"]||(i["content-type"]="application/json;charset=UTF-8")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n}),o=await s.text(),a={};try{a=JSON.parse(o)}catch{if(!s.ok)throw new Error(`${s.status} ${s.statusText}: ${o}`);return o}if(a.error==="review_panel")throw this.formatReviewData(a);return a}async authRequest(e,t={}){if(!this.tokenResp?.access_token)throw new Error("empty token");let i={Authorization:`${this.tokenResp.token_type} ${this.tokenResp.access_token}`,"X-Captcha-Token":this.captchaToken,...t.headers||{}},n=await this.rawRequest(e,{...t,headers:i}),s=n?.error_code||0;if(s===4122||s===4121||s===10||s===16){if(this.tokenResp?.refresh_token){let o=await this.refreshToken(this.tokenResp.refresh_token);return this.tokenResp=o,this.options.onPersistToken&&await this.options.onPersistToken(o),this.authRequest(e,t)}throw new Error(`Token expired error ${s}`)}else if(s===9){let o=k_(t.method||"GET",e);return await this.refreshCaptchaTokenAtLogin(o,this.tokenResp.user_id||""),this.authRequest(e,t)}else if(s!==0||n.error&&n.error!=="success")throw new Error(`ErrorCode: ${n.error_code||0}, Error: ${n.error||""}, ErrorDescription: ${n.error_description||""}`);return n}async coreLogin(e,t){let i=`${Q_}/xluser.core.login/v3/login`,n={protocolVersion:"301",sequenceNo:"1000012",platformVersion:"10",isCompressed:"0",appid:F_,clientVersion:this.options.clientVersion,peerID:"00000000000000000000000000000000",appName:"ANDROID-com.xunlei.downloadprovider",sdkVersion:"512000",devicesign:S_(this.options.deviceId,this.options.packageName),netWorkType:"WIFI",providerName:"NONE",deviceModel:"M2004J7AC",deviceName:"Xiaomi_M2004j7ac",OSVersion:"12",creditkey:this.creditKey,hl:"zh-CN",userName:e,passWord:t,verifyKey:"",verifyCode:"",isMd5Pwd:"0"},s=await this.rawRequest(i,{method:"POST",body:n,headers:{"user-agent":"android-ok-http-client/xl-acc-sdk/version-5.0.12.512000"}});return this.coreLoginResp=s,s}async login(e,t){let n=(await this.coreLogin(e,t)).sessionID,s=`${mp}/auth/signin/token`;await this.refreshCaptchaTokenInLogin(k_("POST",s),e);let o=await this.rawRequest(s,{method:"POST",body:{client_id:this.options.clientId,client_secret:this.options.clientSecret,provider:az,signin_token:n}});return this.tokenResp=o,this.creditKey="",this.options.onPersistToken&&await this.options.onPersistToken(o),o}async refreshToken(e){let t=`${mp}/auth/token`,i=await this.rawRequest(t,{method:"POST",body:{grant_type:"refresh_token",refresh_token:e,client_id:this.options.clientId,client_secret:this.options.clientSecret}});return this.tokenResp=i,this.options.onPersistToken&&await this.options.onPersistToken(i),i}async isLogin(){if(!this.tokenResp?.access_token)return!1;try{return await this.authRequest(`${mp}/user/me`,{method:"GET"}),!0}catch{return!1}}}});function U_(r,e,t){let i=r.kind===FC,n=r.web_content_link||"";if(t&&r.medias&&r.medias.length>0){for(let s of r.medias)if(s.link?.url){n=s.link.url;break}}return{name:r.name,size:parseInt(r.size||"0",10),is_dir:i,modified:r.modified_time||r.created_time||new Date().toISOString(),sign:"",type:X(r.name,i),thumb:r.thumbnail_link||r.icon_link||"",raw_url:n,raw_url_headers:{"User-Agent":e}}}function R_(r){if(r?.device_id&&r.device_id.trim().length===32)return r.device_id.trim();let e=`${r?.username||""}${r?.password||""}`;return e.trim()?Ac(e):Ac(Math.random().toString(36)+Date.now().toString(36))}var $u,yp,N_=j(()=>{"use strict";Be();He();T_();$u=class{client;addition;identity="";onPersistCallback;constructor(e,t){this.addition=e,this.onPersistCallback=t;let i=R_(e);e.device_id=i,this.client=new ju({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:"8.31.0.9726",packageName:"com.xunlei.downloadprovider",userAgent:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:["9uJNVj/wLmdwKrJaVj/omlQ","Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf","Eb+L7Ce+Ej48u","jKY0","ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd","wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK","gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O","5IiCoM9B1/788ntB","P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf","+oK0AN"],space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:n.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:n})}})}get downloadUserAgent(){return this.addition.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)"}get useVideoUrl(){return!!this.addition.use_video_url}async init(){let e=this.addition.username||"",t=this.addition.password||"",i=Ac(`${e}${t}`);(this.identity!==i||!await this.client.isLogin())&&(this.identity=i,await this.client.login(e,t))}resolveFolderId(e){if(!e||e==="/"||e==="0")return this.addition.root_folder_id||"";let t=e.split("/").filter(Boolean);return t[t.length-1]||this.addition.root_folder_id||""}async list(e,t){let i=this.resolveFolderId(t),n=[],s="";for(;;){let o=new URL(Us);o.searchParams.set("space",this.addition.space||""),o.searchParams.set("__type","drive"),o.searchParams.set("refresh","true"),o.searchParams.set("__sync","true"),o.searchParams.set("parent_id",i),o.searchParams.set("page_token",s),o.searchParams.set("with_audit","true"),o.searchParams.set("limit","100"),o.searchParams.set("filters",JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}}));let a=await this.client.authRequest(o.toString(),{method:"GET"});if(a.files&&a.files.length>0)for(let c of a.files)n.push(U_(c,this.downloadUserAgent,this.useVideoUrl));if(!a.next_page_token)break;s=a.next_page_token}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.resolveFolderId(t),n=new URL(`${Us}/${i}`);n.searchParams.set("space",this.addition.space||"");let s=await this.client.authRequest(n.toString(),{method:"GET"});return U_(s,this.downloadUserAgent,this.useVideoUrl)}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=this.resolveFolderId(s);await this.client.authRequest(Us,{method:"POST",body:{kind:FC,name:n,parent_id:o,space:this.addition.space||""}})}async rename(e,t,i){let n=this.resolveFolderId(t);await this.client.authRequest(`${Us}/${n}`,{method:"PATCH",body:{name:i,space:this.addition.space||""}})}async remove(e,t,i){let n=this.resolveFolderId(t),s=new URL(`${Us}/${n}/trash`);s.searchParams.set("space",this.addition.space||""),await this.client.authRequest(s.toString(),{method:"PATCH",body:{}})}async move(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Us}:batchMove`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async copy(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Us}:batchCopy`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=this.resolveFolderId(o),c=P_(i),l=await this.client.authRequest(Us,{method:"POST",body:{kind:__,parent_id:a,name:s,size:i.length.toString(),hash:c,upload_type:PC,space:this.addition.space||""}});if(l.upload_type===PC&&l.resumable?.params){let d=l.resumable.params,u=d.endpoint;u.startsWith(d.bucket+".")&&(u=u.slice(d.bucket.length+1)),!u.startsWith("http://")&&!u.startsWith("https://")&&(u=`https://${u}`);let f=`${u.replace(/\/$/,"")}/${d.bucket}/${d.key}`,h={"x-amz-security-token":d.security_token},g=await fetch(f,{method:"PUT",headers:h,body:i});if(!g.ok)throw new Error(`S3 Upload failed: ${g.status} ${g.statusText}`)}}},yp=class extends $u{constructor(e,t){super(e,t);let i=R_(e);e.device_id=i;let n=e.sign_type==="captcha_sign"?void 0:(e.algorithms||"").split(",").map(s=>s.trim()).filter(Boolean);this.client=new ju({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:e.client_version||"8.31.0.9726",packageName:e.package_name||"com.xunlei.downloadprovider",userAgent:e.user_agent||"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:e.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:n&&n.length>0?n:void 0,timestamp:e.timestamp,captchaSign:e.captcha_sign,useVideoUrl:e.use_video_url,space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:s.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:s})}})}async init(){let e=this.addition,t="";e.login_type==="refresh_token"?t=Ac(e.refresh_token||""):t=Ac(`${e.username||""}${e.password||""}`),(this.identity!==t||!await this.client.isLogin())&&(this.identity=t,e.login_type==="refresh_token"&&e.refresh_token?await this.client.refreshToken(e.refresh_token):e.username&&e.password&&await this.client.login(e.username,e.password))}}});function q_(r){if(!r)return new Date().toISOString();let e=r.trim(),t=new Date(e);if(!isNaN(t.getTime()))return t.toISOString();let i=Date.now(),n=864e5,s=e.match(lz);if(s){let o=parseFloat(s[1])||0,a=s[2];if(a.includes("\u79D2\u524D"))return new Date(i-o*1e3).toISOString();if(a.includes("\u5206")||a.includes("\u5206\u949F\u524D"))return new Date(i-o*6e4).toISOString();if(a.includes("\u5C0F\u65F6\u524D")||a.includes("\u5C0F\u65F6"))return new Date(i-o*36e5).toISOString();if(a.includes("\u5929\u524D")||a.includes("\u5929"))return new Date(i-o*n).toISOString();if(a.includes("\u6628\u5929"))return new Date(i-n).toISOString();if(a.includes("\u524D\u5929"))return new Date(i-n*2).toISOString()}return new Date().toISOString()}function O_(r){if(!r)return 0;let e=r.trim().match(dz);if(!e)return 0;let t=parseFloat(e[1]);switch(e[2].toUpperCase()){case"B":return Math.floor(t);case"K":return Math.floor(t*1024);case"M":return Math.floor(t*1048576);case"G":return Math.floor(t*1073741824);default:return 0}}function Vu(r){return r.replace(/|[^:]\/\/.*|\/\*[\s\S]*?\*\//g,e=>e.slice(1,3)==="//"?e.slice(0,1):` -`)}function M_(r){let e="",t=!1,i=!1;for(let n=0;n{for(let n=i.length-1;n>=0;n--){let s=(i[n][1]||"").trim().replace(/^['"]|['"]$/g,"");if(s)return s}return""};if(r!=="sasign"){let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)\\s+${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length){let o=t(i);if(o)return o}let n=Array.from(e.matchAll(new RegExp(`(?:^|[;,\\s])${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gim")));if(n.length){let o=t(n);if(o)return o}let s=Array.from(e.matchAll(new RegExp(`['"]?${r}['"]?\\s*:\\s*['"]?([\\s\\S]*?)['"]?`,"gi")));if(s.length){let o=t(s);if(o)return o}}else{let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)?\\s*${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length===3)return i[1][1].trim().replace(/^['"]|['"]$/g,"");if(i.length>0)return t(i)}return""}function gz(r,e){let t={},i=/['"]?([a-zA-Z0-9_$]+)['"]?\s*:\s*(['"]?([^'",}\s]+)['"]?)/g,n=r.matchAll(i);for(let s of n){let o=s[1],a=s[2],c=s[3];if(!c)t[o]="";else if(a.includes("'")||a.includes('"')||/^\d+$/.test(a))t[o]=c;else{let l=hz(c,e);t[o]=l!==""?l:c}}return t}function pz(r){let e={},t=r.split("&");for(let i of t){let[n,s]=i.split("=");n&&(e[decodeURIComponent(n)]=decodeURIComponent(s||""))}return e}function Ul(r,e){let t=e||r,i=Array.from(r.matchAll(/data\s*:\s*({[\s\S]*?})/g));if(i.length>0){let s=i[0][1];for(let a of i)a[1].length>s.length&&(s=a[1]);let o=gz(s,t);if(Object.keys(o).length>0)return o}let n=r.match(/data\s*:\s*['"]([^'"]+)['"]/);if(n&&n[1].includes("="))return pz(n[1]);throw new Error("[Lanzou] \u672A\u80FD\u627E\u5230\u8BF7\u6C42\u53C2\u6570 data \u5BF9\u8C61")}function L_(r,e){let t=new RegExp(`function\\s+${e}\\s*\\([^)]*\\)\\s*\\{`,"i"),i=r.search(t);if(i===-1)throw new Error(`[Lanzou] \u672A\u627E\u5230\u51FD\u6570 ${e}`);let n=0,s=-1;for(let o=i;o{"use strict";lz=/([0-9.]*)\s*([\u4e00-\u9fa5]+)/,dz=/([0-9.]+)\s*([bkm]+)/i,uz=/arg1='([0-9A-Z]+)'/i});function xp(r,e){try{let t=new URL(r);return t.host=e,t.toString()}catch{return r}}function Cp(r){try{return new URL(r).host}catch{return""}}var wp,UC,Ep,H_=j(()=>{"use strict";TC();wp=["pan.lanzoui.com","lanzouw.com","lanzoux.com","lanzouy.com","lanzou.com"],UC="[Lanzou] Cookie \u5DF2\u8FC7\u671F\u6216\u5931\u6548\uFF0C\u8BF7\u5728\u7BA1\u7406\u540E\u53F0\u91CD\u65B0\u586B\u5199 Cookie\uFF08\u6709\u6548\u671F\u7EA6 15 \u5929\uFF09",Ep=class{addition;cookie="";uid="";vei="";onCookieUpdate;acwMap=new Map;workingShareHost="";constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim(),this.onCookieUpdate=t}getBaseUrl(){return(this.addition.baseUrl||this.addition.base_url||"https://pc.woozooo.com").replace(/\/$/,"")}getShareUrl(){return(this.addition.shareUrl||this.addition.share_url||"https://pan.lanzoui.com").replace(/\/$/,"")}shareHost(){try{return new URL(this.getShareUrl()).host}catch{return"pan.lanzoui.com"}}getUserAgent(){return this.addition.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}getCookie(){return this.cookie}updateCookie(e,t){if(!e)return;let i=e.match(/(?:^|,\s*)acw_sc__v2=([^;,\s]+)/i);i&&i[1]&&this.acwMap.set(t||this.shareHost(),i[1]);let n=this.cookie?this.cookie.split(";").map(a=>a.trim()):[],s=e.split(/,(?=[a-zA-Z0-9_\-]+=[^;]+)/);for(let a of s){let c=a.split(";")[0].trim(),l=c.indexOf("=");if(l>0){let d=c.slice(0,l).trim(),u=c.slice(l+1).trim(),f=n.findIndex(h=>h.startsWith(`${d}=`));f!==-1?n[f]=`${d}=${u}`:n.push(`${d}=${u}`)}}let o=n.filter(Boolean).join("; ");o!==this.cookie&&(this.cookie=o,this.onCookieUpdate?.(this.cookie))}async init(){let e=this.addition.type||"cookie";if(e==="account"?(await this.login(),await this.initVeiAndUid()):e==="cookie"&&this.cookie&&await this.initVeiAndUid(),!this.acwMap.has(this.shareHost()))try{await this.request(`${this.getShareUrl()}/`,"GET")}catch{}}async probeShareDomain(e){let t=(e||"").replace(/^\//,"");if(!t)return this.getShareUrl();try{let i=await this.request(`${this.getShareUrl()}/${t}`,"GET");return this.extractRealShareDomain(i)||this.getShareUrl()}catch{return this.getShareUrl()}}extractRealShareDomain(e){let t=[],i=e.match(/]*?src=["'](https?:\/\/[^"'/]+)/i);i&&t.push(i[1]);let n=e.match(/["'](https?:\/\/[^"']*?\/fn\?[^"']*)["']/i);n&&t.push(n[1]);let s=e.match(/["']?(?:dom|url)\s*[:=]\s*["']?(https?:\/\/[^"'\s]+)/i);s&&t.push(s[1]);for(let o of t)try{let a=new URL(o);return`${a.protocol}//${a.host}`}catch{}return""}async login(){if(!this.addition.account||!this.addition.password)throw new Error("[Lanzou] \u8D26\u53F7\u6A21\u5F0F\u4E0B\u5FC5\u987B\u63D0\u4F9B\u8D26\u53F7\u4E0E\u5BC6\u7801");for(let e=0;e<3;e++){let t={"User-Agent":this.getUserAgent(),Referer:"https://pc.woozooo.com","Content-Type":"application/x-www-form-urlencoded"};this.acwMap.has("up.woozooo.com")&&(t.Cookie=`acw_sc__v2=${this.acwMap.get("up.woozooo.com")}`);let i=await fetch("https://up.woozooo.com/mlogin.php",{method:"POST",headers:t,body:new URLSearchParams({task:"3",uid:this.addition.account,pwd:this.addition.password,setSessionId:"",setSig:"",setScene:"",setTocen:"",formhash:""})});this.updateCookie(i.headers.get("set-cookie"),"up.woozooo.com");let n=await i.text();if(n.includes("acw_sc__v2")){this.acwMap.set("up.woozooo.com",Ip(n));continue}let s;try{s=JSON.parse(n)}catch{throw new Error(`[Lanzou] \u767B\u5F55\u54CD\u5E94\u5F02\u5E38: ${n.slice(0,200)}`)}if(s.zt!==1)throw new Error(`[Lanzou] \u767B\u5F55\u5931\u8D25: ${s.info||n}`);return}throw new Error("[Lanzou] \u767B\u5F55\u591A\u6B21\u89E6\u53D1 WAF \u6821\u9A8C\u5931\u8D25")}async initVeiAndUid(){let e=await this.request(`${this.getBaseUrl()}/mydisk.php?item=files&action=index`,"GET"),t=e.match(/uid=([^'"&;]+)/);if(!t)throw new Error(UC);this.uid=t[1];let i=Vu(e);try{let n=Ul(i);this.vei=n.vei||""}catch{let n=e.match(/['"]?vei['"]?\s*:\s*['"]?([^'",\s]+)['"]?/);n&&(this.vei=n[1])}}async request(e,t="GET",i,n){let s=e,o=Cp(e),a=o===this.shareHost()||wp.includes(o);a&&this.workingShareHost&&o!==this.workingShareHost&&(s=xp(e,this.workingShareHost));let c=a,l=c?wp.filter(u=>!e.includes(u)):[],d=u=>{let f=Cp(u),h=f===this.shareHost()||wp.includes(f),g;return h?n&&wp.includes(Cp(n))||n&&Cp(n)===this.shareHost()?g=xp(n,f):g=`${new URL(u).origin}/`:g=n||this.getBaseUrl(),this.requestOnce(u,t,i,g,f)};try{return await d(s)}catch(u){if(!(c&&(u?.status===403||u?.status===405||/403|405/.test(u?.message||""))))throw u;for(let h of l){let g=xp(s,h);try{let p=await d(g);return this.workingShareHost=h,p}catch(p){if(!(p?.status===403||p?.status===405||/403|405/.test(p?.message||"")))throw p}}throw u}}async requestOnce(e,t,i,n,s){for(let o=0;o<3;o++){let a={Referer:n,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","X-Requested-With":"XMLHttpRequest","Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin",Accept:"*/*"},c=(()=>{try{return new URL(n).host}catch{return""}})();c===s&&(a.Origin=n.slice(0,n.indexOf(c)+c.length));let l=this.cookie;e.includes("/file/")&&(l=(l?l+"; ":"")+"down_ip=1");let d=this.acwMap.get(s);d&&(l=(l?l+"; ":"")+`acw_sc__v2=${d}`),l&&(a.Cookie=l);let u;i&&t==="POST"&&(a["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(i).toString());let f=await fetch(e,{method:t,headers:a,body:u});if(this.updateCookie(f.headers.get("set-cookie"),s),f.status===403||f.status===405){let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}`);throw g.status=f.status,g}if(f.status===429||f.status>=500||f.status===408){if(o<2){await new Promise(p=>setTimeout(p,300*(o+1)));continue}let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}\uFF08\u591A\u6B21\u91CD\u8BD5\u4ECD\u5931\u8D25\uFF09`);throw g.status=f.status,g}let h=await f.text();if(h.includes("acw_sc__v2")){this.acwMap.set(s,Ip(h));continue}return h}throw new Error("[Lanzou] \u8BF7\u6C42\u89E6\u53D1 acw_sc__v2 \u6821\u9A8C\u8D85\u9650")}async doupload(e){let t=`${this.getBaseUrl()}/doupload.php?uid=${this.uid}&vei=${this.vei}`,i=await this.request(t,"POST",e),n;try{n=JSON.parse(i)}catch{throw new Error(`[Lanzou] \u975E JSON \u54CD\u5E94: ${i.slice(0,200)}`)}if(n.zt===9){if(this.addition.type==="account")return await this.login(),await this.initVeiAndUid(),this.doupload(e);throw new Error(UC)}if(n.zt!==1&&n.zt!==2&&n.zt!==4)throw new Error(n.inf||n.info||`[Lanzou] API \u9519\u8BEF (zt: ${n.zt})`);return n}async checkCookieValid(){if(this.addition.type==="url")return{valid:!0};try{return this.addition.type==="account"?{valid:!0}:(await this.getFiles("-1"),{valid:!0})}catch(e){let t=e?.message||String(e);return{valid:!1,error:/Cookie 已过期|未能获取到 uid|请检查 Cookie|zt=9/i.test(t)?UC:t}}}async getAllFiles(e){let t=await this.getFolders(e),i=await this.getFiles(e);return[...t,...i]}async getFolders(e){return((await this.doupload({task:"47",folder_id:e||"-1"})).text||[]).map(n=>({...n,name:n.name,fol_id:n.fol_id||n.id,is_folder:!0}))}async getFiles(e){let t=[];for(let i=1;;i++){let s=(await this.doupload({task:"5",folder_id:e||"-1",pg:String(i)})).text||[];if(s.length===0)break;t.push(...s.map(o=>({...o,name_all:o.name_all||o.name,id:o.id,size:o.size,time:o.time,is_folder:!1})))}return t}async getFileShareUrlById(e){return(await this.doupload({task:"22",file_id:e})).info||{}}async getFileOrFolderByShareUrl(e,t=""){let i=e.replace(/^\//,""),n=await this.request(`${this.getShareUrl()}/${i}`,"GET");if(n.includes("\u53D6\u6D88\u5206\u4EAB"))throw new Error("[Lanzou] \u8BE5\u6587\u4EF6\u5DF2\u53D6\u6D88\u5206\u4EAB");if(n.includes("\u6587\u4EF6\u4E0D\u5B58\u5728"))throw new Error("[Lanzou] \u6587\u4EF6\u4E0D\u5B58\u5728");return/class="fileinfo"|id="file"|文件描述/i.test(n)?[await this.getFilesByShareUrl(i,t,n)]:this.getFolderByShareUrl(t,n)}async getFolderByShareUrl(e,t){let i=Vu(t),n={};try{n=Ul(i)}catch{n={}}let s=[],o=Array.from(t.matchAll(/(?:folderlink|mbxfolder)[^>]*href=["']\/?([^"']+)["'][^>]*>(.+?)<\//gi));for(let a of o)s.push({id:a[1],name_all:a[2].trim(),is_folder:!0});n.pwd=e||this.addition.share_password||"";for(let a=1;;a++){n.pg=String(a);let c=await this.request(`${this.getShareUrl()}/filemoreajax.php`,"POST",n),l;try{l=JSON.parse(c)}catch{break}if(l.zt!==1||!Array.isArray(l.text)||l.text.length===0)break;let d=l.text;s.push(...d.map(u=>({id:u.id,name_all:u.name_all||u.name,size:u.size,time:u.time,is_folder:!1,pwd:n.pwd})))}return s}async getFilesByShareUrl(e,t="",i,n){let s=e.replace(/^\//,""),o=(n||await this.probeShareDomain(s)).replace(/\/+$/,""),a=`${o}/${s}`,c=i;c||(c=await this.request(a,"GET")),c=Vu(c),c=M_(c);let l={},d="",u="",f={id:s,is_folder:!1};if(c.includes("pwdload")||c.includes("passwddiv")){let C=L_(c,"down_p");l=Ul(C,c),l.p=t||this.addition.share_password||"";let b=C.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||c.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||C.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||c.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||C.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/)||c.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),x=b?b[1]:"";if(!x)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let _=await this.request(`${o}/ajaxfile.php?file=${x}`,"POST",l,a),R;try{R=JSON.parse(_)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${_}`)}if(R.zt!==1)throw new Error(R.info||R.text||`[Lanzou] \u5BC6\u7801\u9519\u8BEF\u6216\u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${R.zt})`);f.name_all=R.inf||"download",d=`${R.dom}/file`,u=`${d}/${R.url}`}else{let C=c.match(/]*?src=["']([^"']+)["']/i)||c.match(/href=["'](\/fn\?[^"']+)["']/i)||c.match(/["'](\/fn\?[^"']+)["']/i);if(!C)throw new Error("[Lanzou] \u672A\u627E\u5230\u4E0B\u8F7D\u9875\u9762 iframe \u53C2\u6570");let b=C[1],x=`${o}${b.startsWith("/")?"":"/"}${b}`,_=await this.request(x,"GET",void 0,a),R=Vu(_);l=Ul(R,R);let U=R.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||R.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||R.match(/file=(\d+)/)||R.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),T=U?U[1]:"";if(!T)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let D=await this.request(`${o}/ajaxfile.php?file=${T}`,"POST",l,x),B;try{B=JSON.parse(D)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${D}`)}if(B.zt!==1)throw new Error(B.info||B.text||`[Lanzou] \u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${B.zt})`);d=`${B.dom}/file`,u=`${d}/${B.url}`;let Q=c.match(/(.+?) - 蓝奏云<\/title>|id="filenajax">(.+?)<\/div>|var filename = ['"](.+?)['"];|<div style="font-size[^>]*>([^<>]+)<\/div>|<div class="filethetext"[^>]*>([^<>]+)<\/div>/i);if(Q){for(let v=1;v<Q.length;v++)if(Q[v]){f.name_all=Q[v].trim();break}}}let g=c.match(/大小\W*([0-9.]+\s*[bkm]+)/i);g&&(f.size=g[1]);let p=c.match(/\d+\s*[秒天分小][钟时]?前|[昨前]天|\d{4}-\d{2}-\d{2}/);p&&(f.time=p[0]);let I=u,y="",w=!1;for(let C=0;C<3;C++){let b={Referer:d,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"},x="down_ip=1";y&&(x+=`; acw_sc__v2=${y}`),b.Cookie=x;let _;try{_=await fetch(u,{method:"GET",headers:b,redirect:"manual"})}catch{if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error("[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")}if(_.status===301||_.status===302||_.status===303||_.status===307||_.status===308){let U=_.headers.get("location");if(U){I=new URL(U,u).toString(),w=!0;break}}if(_.status===200&&_.url&&_.url!==u){I=_.url,w=!0;break}if(_.status===429||_.status>=500){if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error(`[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u8FD4\u56DE HTTP ${_.status}\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5`)}let R=await _.text();if(R.includes("acw_sc__v2")){y=Ip(R);continue}try{let U=Ul(R,R);U.el="2",await new Promise(B=>setTimeout(B,1500));let T=await this.request(`${d}/ajax.php`,"POST",U,d),D=JSON.parse(T);if(D.url){I=D.url.startsWith("http")?D.url:new URL(D.url,d).toString(),w=!0;break}}catch{if(C<2){await new Promise(U=>setTimeout(U,600*(C+1)));continue}}break}if(!w)throw new Error("[Lanzou] \u76F4\u94FE\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");return f.url=I,f}async getFileRealInfo(e){try{let t=await fetch(e,{method:"HEAD",headers:{"User-Agent":this.getUserAgent()}}),i=t.headers.get("content-length"),n=t.headers.get("last-modified");return{size:i?parseInt(i,10):void 0,time:n?new Date(n).toISOString():void 0}}catch{return{}}}async mkdir(e,t){await this.doupload({task:"2",parent_id:e||"-1",folder_name:t,folder_description:""})}async rename(e,t){await this.doupload({task:"46",file_id:e,file_name:t,type:"2"})}async move(e,t){await this.doupload({task:"20",file_id:e,folder_id:t})}async remove(e,t){t?await this.doupload({task:"3",folder_id:e}):await this.doupload({task:"6",file_id:e})}}});function mz(r){let e={...r||{}};return e.type=e.type||"cookie",e.account=e.account||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||(e.type==="url"?"":"-1"),e.share_password=e.share_password||"",e.baseUrl=e.baseUrl||"https://pc.woozooo.com",e.shareUrl=e.shareUrl||"https://pan.lanzoui.com",e.user_agent=e.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",e.repair_file_info=!!e.repair_file_info,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}function RC(r,e){let t=!!r.is_folder||!!r.fol_id,i=r.name_all||r.name||"",n=e?.size!==void 0?e.size:O_(r.size||"0"),s=e?.time?e.time:q_(r.time||""),o=r.fol_id||r.id||"";return{name:i,size:n,is_dir:t,modified:s,sign:o,type:X(i,t),thumb:"",raw_url:r.url||""}}var Bp,K_=j(()=>{"use strict";Be();He();H_();TC();Bp=class{client;addition;pathIdCache=new Map;constructor(e,t){this.addition=mz(e),this.client=new Ep(this.addition,t)}async init(){await this.client.init()}async checkCookieValid(){return this.client.checkCookieValid()}isUrlMode(){return this.addition.type==="url"}getRootId(){return this.addition.root_folder_id||(this.isUrlMode()?"":"-1")}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),f=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(o,this.addition.share_password):await this.client.getFolders(o)).find(h=>{if(!h.is_folder&&!h.fol_id)return!1;let g=h.name||h.name_all||"",p=h.fol_id||h.id||"";return g===l||g===d||p===l||p===d});if(!f)throw new Error(`[Lanzou] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=f.fol_id||f.id||"",a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveItem(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean);if(i.length===0)throw new Error("[Lanzou] \u8DEF\u5F84\u65E0\u6548");let n=i[i.length-1],s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,i.length-1).join("/"),a=await this.resolveFolderId(o),l=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(a,this.addition.share_password):await this.client.getAllFiles(a)).find(u=>{let f=u.name_all||u.name||"",h=u.fol_id||u.id||"";return f===n||f===s||h===n||h===s});if(!l)throw new Error(`[Lanzou] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${n}`);let d=!!(l.is_folder||l.fol_id);return d&&this.pathIdCache.set(t,l.fol_id||l.id||""),{item:l,parentId:a,isDir:d}}async list(e,t){let i=await this.resolveFolderId(t),s=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(i,this.addition.share_password):await this.client.getAllFiles(i)).map(o=>RC(o));return de(s,this.addition.order_by==="name"?"file_name":this.addition.order_by==="size"?"size":"updated_at",this.addition.order_direction)}async get(e,t){let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.getRootId()){let l=this.getRootId();return{name:l||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""}}let{item:n,isDir:s}=await this.resolveItem(t);if(s)return RC(n);let o=n.url;if(!o)try{if(this.isUrlMode()){let l=await this.client.getFilesByShareUrl(n.id||"",n.pwd||this.addition.share_password||"",void 0,await this.client.probeShareDomain(n.id||""));o=l.url,n.name_all=l.name_all||n.name_all,n.size=l.size||n.size}else{let l=await this.client.getFileShareUrlById(n.id||""),d=l?.f_id||l?.id;if(d){let u=await this.client.getFilesByShareUrl(d,l.pwd||"",void 0);o=u.url,u.name_all&&(n.name_all=u.name_all),u.size&&(n.size=u.size)}}}catch(l){throw console.error(`[Lanzou] \u89E3\u6790\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25 (${n.name_all||n.name}):`,l.message),new Error(`[Lanzou] \u83B7\u53D6\u4E0B\u8F7D\u76F4\u94FE\u5931\u8D25 (${n.name_all||n.name}): ${l.message}`)}if(!o)throw new Error(`[Lanzou] \u672A\u80FD\u83B7\u53D6\u5230\u4E0B\u8F7D\u76F4\u94FE (${n.name_all||n.name||t})`);let a;if(this.addition.repair_file_info&&o)try{a=await this.client.getFileRealInfo(o)}catch{}let c=RC(n,a);return c.raw_url=o||"",c.raw_url_headers={"User-Agent":this.client.getUserAgent()},c}async mkdir(e,t){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u65B0\u5EFA\u6587\u4EF6\u5939");let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u91CD\u547D\u540D");let{item:n,isDir:s}=await this.resolveItem(t);if(s)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u91CD\u547D\u540D\u6587\u4EF6\u5939");await this.client.rename(n.id||"",i)}async remove(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u5220\u9664");let{item:n,isDir:s}=await this.resolveItem(t);await this.client.remove(n.fol_id||n.id||"",s)}async move(e,t,i,n,s){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u79FB\u52A8");let{item:o,isDir:a}=await this.resolveItem(n);if(a)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u79FB\u52A8\u6587\u4EF6\u5939");let c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(o.id||"",l)}async copy(){throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u76F4\u63A5\u590D\u5236\u6587\u4EF6")}async put(){throw new Error("[Lanzou] Cloudflare Worker \u73AF\u5883\u6682\u4E0D\u652F\u6301\u76F4\u63A5\u6D41\u5F0F\u5199\u5165\uFF0C\u8BF7\u4F7F\u7528\u7F51\u9875\u7AEF\u8FDB\u884C\u6587\u4EF6\u4E0A\u4F20")}}});function yz(r){let e=r.replace(/\s+/g,""),t=atob(e),i=new Uint8Array(t.length);for(let n=0;n<t.length;n++)i[n]=t.charCodeAt(n);return i}function Iz(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function wz(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function NC(r){let e=0n;for(let t=0;t<r.length;t++)e=e<<8n|BigInt(r[t]);return e}function xz(r,e){let t=new Uint8Array(e),i=r;for(let n=e-1;n>=0;n--)t[n]=Number(i&0xffn),i>>=8n;return t}function Cz(r,e,t){let i=1n;for(r=r%t;e>0n;)e%2n===1n&&(i=i*r%t),r=r*r%t,e/=2n;return i}function Ez(r){let e=r.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,""),t=yz(e),i=0;function n(){let l=t[i++],d=t[i++];if(d&128){let f=d&127;d=0;for(let h=0;h<f;h++)d=d<<8|t[i++]}return{tag:l,length:d,dataStart:i}}let s=[];function o(l,d){let u=l;for(;u<d;){let f=t[u++],h=t[u++];if(h&128){let p=h&127;h=0;for(let I=0;I<p;I++)h=h<<8|t[u++]}let g=u;if(u+=h,f===2){let p=t.subarray(g,g+h);p[0]===0&&p.length>1&&(p=p.subarray(1)),s.push(p)}else f===48||(f&32)!==0?o(g,g+h):f===3&&t[g]===0&&o(g+1,g+h)}}if(o(0,t.length),s.length<2)throw new Error("Failed to parse RSA public key: insufficient integers found");let a=s[0],c=s[1];if(a.length<c.length){let l=a;a=c,c=l}return{n:NC(a),e:NC(c),keyLength:a.length}}function bp(r,e,t=!1){let{n:i,e:n,keyLength:s}=Ez(e),o=typeof r=="string"?new TextEncoder().encode(r):r;if(o.length>s-11)throw new Error(`Data too long for RSA key size: ${o.length} > ${s-11}`);let a=s-o.length-3,c=new Uint8Array(a),l=new Uint8Array(a*2);crypto.getRandomValues(l);let d=0;for(let p=0;p<a;p++){let I=l[d++];for(;I===0;)d>=l.length&&(crypto.getRandomValues(l),d=0),I=l[d++];c[p]=I}let u=new Uint8Array(s);u[0]=0,u[1]=2,u.set(c,2),u[2+a]=0,u.set(o,3+a);let f=NC(u),h=Cz(f,n,i),g=xz(h,s);return t?wz(g):Iz(g)}function G_(r,e){let t=typeof e=="string"?Jr.default.enc.Utf8.parse(e.slice(0,16)):Jr.default.lib.WordArray.create(Array.from(e.slice(0,16)),16),i=Jr.default.enc.Utf8.parse(r);return Jr.default.AES.encrypt(i,t,{mode:Jr.default.mode.ECB,padding:Jr.default.pad.Pkcs7}).ciphertext.toString(Jr.default.enc.Hex)}function Yu(r,e){return Jr.default.HmacSHA1(r,e).toString(Jr.default.enc.Hex)}function z_(r){return typeof r=="string"?Jr.default.enc.Utf8.parse(r):Jr.default.lib.WordArray.create(r)}function Rl(r){return Jr.default.MD5(z_(r)).toString(Jr.default.enc.Hex)}function J_(r){return Jr.default.MD5(z_(r)).toString(Jr.default.enc.Base64)}function Nl(r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"){return r.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function qC(){return"0."+Math.floor(Math.random()*1e17).toString().padStart(17,"0")}var Jr,vp=j(()=>{"use strict";Jr=Qr(fc(),1)});function Bz(r,e,t){let i=r?r.split(";").map(o=>o.trim()):[],n=`${e}=${t}`,s=i.findIndex(o=>o.startsWith(`${e}=`));return s!==-1?i[s]=n:i.push(n),i.filter(Boolean).join("; ")}function bz(r,e){if(!e)return r;let t=r,i=e.split(/,(?=\s*[a-zA-Z0-9_\-]+=[^;]+)/);for(let n of i){let s=n.split(";")[0].trim(),o=s.indexOf("=");if(o>0){let a=s.slice(0,o).trim(),c=s.slice(o+1).trim();t=Bz(t,a,c)}}return t}function vz(r){let e=r;if(typeof e.getSetCookie=="function"){let i=e.getSetCookie();if(i.length>0)return i}let t=r.get("set-cookie");return t?[t]:[]}function j_(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function OC(r){return r.protocol==="https:"&&kz.has(r.hostname)}function MC(r){try{let e=new URL(r,"https://open.e.189.cn");return!!e.searchParams.get("lt")&&!!e.searchParams.get("reqId")}catch{return!1}}function LC(r){try{let e=new URL(r,"https://open.e.189.cn");return e.hostname==="cloud.189.cn"&&(e.pathname==="/web/main"||e.pathname==="/main.action")}catch{return!1}}var kz,kp,$_=j(()=>{"use strict";vp();kz=new Set(["cloud.189.cn","open.e.189.cn"]);kp=class{addition;cookie="";cookieDirty=!1;sessionKey="";rsa={pubKey:"",pkId:"",expire:0};constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim()}getCookie(){return this.cookie}consumePendingCookie(){return this.cookieDirty?(this.cookieDirty=!1,this.cookie):null}getRootId(){return this.addition.root_folder_id||"-11"}setSessionKey(e){this.sessionKey=e}getDownloadHeaders(){let e={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};return this.cookie&&(e.Cookie=this.cookie),e}async updateCookie(e){let t=vz(e);if(t.length===0)return;let i=t.reduce((n,s)=>bz(n,s),this.cookie);i!==this.cookie&&(this.cookie=i,this.cookieDirty=!0)}async followRedirectsWithCookies(e,t){let i=e,n=[i];for(let s=0;s<=8;s++){let o=new URL(i);if(!OC(o))throw new Error(o.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${o.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${o.origin}`);let a={...t};s>0&&(a.Referer=i),this.cookie&&(a.Cookie=this.cookie);let c=await fetch(i,{method:"GET",headers:a,redirect:"manual"});await this.updateCookie(c.headers);let l=c.headers.get("location");if(!(c.status>=300&&c.status<400)||!l){let f=i;if(c.url&&c.url!==i){let h=new URL(c.url,i);if(MC(h.toString())||LC(h.toString())){if(!OC(h))throw new Error(h.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${h.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${h.origin}`);f=h.toString(),n.push(f)}}return{response:c,url:f,urls:n}}if(s===8)throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u6B21\u6570\u8FC7\u591A");let u=new URL(l,i);if(!OC(u))throw new Error(u.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${u.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${u.origin}`);i=u.toString(),n.push(i)}throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5931\u8D25")}async resolveLoginUrl(e,t){let i=e;for(let n=0;n<3;n++){let s=new URL(e);s.searchParams.set("noCache",qC());let o=await this.followRedirectsWithCookies(s.toString(),t);if(i=o.url,MC(o.url)||LC(o.url))return o.url;let a=o.urls.find(c=>MC(c));if(a)return a;n<2&&await new Promise(c=>setTimeout(c,150*(n+1)))}return i}async login(e={}){if(this.cookie&&!e.force)return;let t="https://cloud.189.cn/api/portal/loginUrl.action?redirectURL=https%3A%2F%2Fcloud.189.cn%2Fmain.action",i={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};this.cookie&&(i.Cookie=this.cookie);let n=await this.resolveLoginUrl(t,i);if(LC(n))return;if(!this.addition.username||!this.addition.password){if(this.cookie)return;throw new Error("[189Cloud] \u8D26\u53F7\u6216\u5BC6\u7801\u4E3A\u7A7A\uFF0C\u4E14\u672A\u63D0\u4F9B\u6709\u6548 Cookie")}let s;try{s=new URL(n,"https://open.e.189.cn")}catch{s=new URL("https://open.e.189.cn"+n)}let o=s.searchParams.get("lt")||"",a=s.searchParams.get("reqId")||"",c=s.searchParams.get("appId")||"cloud";if(!o||!a)throw new Error("[189Cloud] \u767B\u5F55\u8DF3\u8F6C\u53C2\u6570\u4E0D\u5B8C\u6574\uFF0C\u672A\u83B7\u53D6\u5230 lt \u6216 reqId");let l=()=>{let x={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",lt:o,reqid:a,referer:n,origin:"https://open.e.189.cn","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json;charset=UTF-8"};return this.cookie&&(x.Cookie=this.cookie),x},d=await fetch("https://open.e.189.cn/api/logbox/oauth2/appConf.do",{method:"POST",headers:l(),body:new URLSearchParams({version:"2.0",appKey:c})});await this.updateCookie(d.headers);let u=await d.json();if(u.result!=="0"||!u.data)throw new Error(`[189Cloud] \u83B7\u53D6 AppConf \u5931\u8D25: ${u.msg||JSON.stringify(u)}`);let f=await fetch("https://open.e.189.cn/api/logbox/config/encryptConf.do",{method:"POST",headers:l(),body:new URLSearchParams({appId:c})});await this.updateCookie(f.headers);let h=await f.json();if(h.result!==0||!h.data?.pubKey)throw new Error(`[189Cloud] \u83B7\u53D6 EncryptConf \u5931\u8D25: ${JSON.stringify(h)}`);let g=h.data.pre||"",p=h.data.pubKey,I=g+bp(this.addition.username,p,!0),y=g+bp(this.addition.password,p,!0),w={version:"v2.0",apToken:"",appKey:c,accountType:u.data.accountType||"01",userName:I,epd:y,captchaType:"",validateCode:"",smsValidateCode:"",captchaToken:"",returnUrl:u.data.returnUrl||"https://cloud.189.cn/main.action",mailSuffix:u.data.mailSuffix||"@189.cn",dynamicCheck:"FALSE",clientType:String(u.data.clientType??"10010"),cb_SaveName:"3",isOauth2:String(u.data.isOauth2??!1),state:"",paramId:u.data.paramId||""},C=await fetch("https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do",{method:"POST",headers:{...l()},body:new URLSearchParams(w)});await this.updateCookie(C.headers);let b=await C.json();if(b.result!==0){let x=b.msg||"\u767B\u5F55\u5931\u8D25";throw x.includes("\u9A8C\u8BC1\u7801")||x.includes("\u6ED1\u5757")||x.includes("\u8BBE\u5907\u9501")?new Error(`[189Cloud] \u767B\u5F55\u89E6\u53D1\u9A8C\u8BC1\u7801/\u8BBE\u5907\u4FDD\u62A4: ${x}\u3002\u8BF7\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165\u914D\u7F6E\u3002`):new Error(`[189Cloud] \u767B\u5F55\u5931\u8D25: ${x}`)}b.toUrl&&await this.followRedirectsWithCookies(b.toUrl,{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"})}async request(e,t={}){let i=t.method||"GET",n=t.retryOnInvalidSession!==!1,s=new URL(e);if(s.searchParams.set("noCache",qC()),t.params)for(let[f,h]of Object.entries(t.params))h!==void 0&&s.searchParams.set(f,h);let o={Accept:"application/json;charset=UTF-8",Referer:"https://cloud.189.cn/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"};this.cookie&&(o.Cookie=this.cookie);let a;t.body&&(o["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",a=new URLSearchParams(t.body).toString());let c=await fetch(s.toString(),{method:i,headers:o,body:a});await this.updateCookie(c.headers);let l=await c.text(),d;try{d=j_(l)}catch{throw new Error(`[189Cloud] \u975E\u9884\u671F\u54CD\u5E94: ${l.slice(0,200)}`)}if(d.errorCode==="InvalidSessionKey"||d.res_code==="InvalidSessionKey"||String(d.res_code)==="1010"){if(n)return await this.login({force:!0}),this.request(e,{...t,retryOnInvalidSession:!1});throw new Error(d.errorMsg||d.res_message||"[189Cloud] \u767B\u5F55\u4F1A\u8BDD\u5DF2\u5931\u6548")}if(d.errorCode)throw new Error(d.errorMsg||`[189Cloud] API \u9519\u8BEF: ${d.errorCode}`);if(!c.ok)throw new Error(d.errorMsg||d.res_message||`[189Cloud] HTTP \u8BF7\u6C42\u5931\u8D25 (${c.status})`);if(d.res_code!==void 0&&String(d.res_code)!=="0")throw new Error(d.res_message||`189 API \u9519\u8BEF (res_code: ${d.res_code})`);return d}async getFilesPage(e,t,i){let n=this.addition.order_by||"lastOpTime",s=(this.addition.order_direction||"desc")==="desc"?"true":"false",o=await this.request("https://cloud.189.cn/api/open/file/listFiles.action",{method:"GET",params:{pageSize:i,pageNum:String(t),mediaType:"0",folderId:e||this.getRootId(),iconOption:"5",orderBy:n,descending:s}}),a=o.fileListAO?.count,c=typeof a=="number"?a:typeof a=="string"&&a.trim()!==""?Number(a):NaN;if(!o.fileListAO||typeof o.fileListAO!="object"||Array.isArray(o.fileListAO)||!Number.isFinite(c)||c<0||!Array.isArray(o.fileListAO.fileList)||!Array.isArray(o.fileListAO.folderList))throw new Error("[189Cloud] \u6587\u4EF6\u5217\u8868\u54CD\u5E94\u7F3A\u5C11\u6709\u6548\u7684 fileListAO \u6570\u7EC4\u5B57\u6BB5");return o}async validateRoot(e){await this.getFilesPage(e,1,"1")}async getFiles(e,t){let i=[],n=[],s=1,o="60";for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn("[189Cloud] Cloudflare Worker subrequest budget limit reached.");break}t.budget.used++}let c=(await this.getFilesPage(e,s,o)).fileListAO;if(Number(c.count)===0)break;let l=c.fileList||[],d=c.folderList||[];if(n.push(...d),i.push(...l),t?.findName&&(t.findIsDir&&d.some(u=>u.name===t.findName)||!t.findIsDir&&l.some(u=>u.name===t.findName))||l.length+d.length<parseInt(o,10))break;s++}return{files:i,folders:n}}async getDownloadUrl(e){let t=await this.request("https://cloud.189.cn/api/portal/getFileInfo.action",{method:"GET",params:{fileId:e}}),i=t.fileDownloadUrl||t.downloadUrl;if(!i)throw new Error(`[189Cloud] \u83B7\u53D6\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25 (fileId: ${e})`);let n=i.startsWith("//")?"https:"+i:i;n=n.replace(/^http:\/\//i,"https://");try{let s=await fetch(n,{method:"GET",headers:this.getDownloadHeaders(),redirect:"manual"}),o=s.headers.get("location");s.status===302&&o&&(n=o.replace(/^http:\/\//i,"https://"))}catch{}return n}async getSessionKey(){let e=await this.request("https://cloud.189.cn/v2/getUserBriefInfo.action",{method:"GET"}),t=String(e.sessionKey||"");if(!t)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 SessionKey \u5931\u8D25");return t}async getResKey(){if(this.rsa.pubKey&&this.rsa.pkId&&this.rsa.expire>Date.now())return this.rsa;let e=await this.request("https://cloud.189.cn/api/security/generateRsaKey.action",{method:"GET"}),t=String(e.pubKey||""),i=String(e.pkId||"");if(!t||!i)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 RSA \u516C\u94A5\u5931\u8D25");return this.rsa={pubKey:t,pkId:i,expire:Number(e.expire)||Date.now()+5*6e4},this.rsa}async uploadRequest(e,t){this.sessionKey||(this.sessionKey=await this.getSessionKey());let i=String(Date.now()),n=Nl(),s=Nl("xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").slice(0,16+Math.floor(Math.random()*17)),o=Object.keys(t).sort().map(p=>`${p}=${t[p]}`).join("&"),a=G_(o,s.slice(0,16)),c=Yu(`SessionKey=${this.sessionKey}&Operate=GET&RequestURI=${e}&Date=${i}¶ms=${a}`,s),{pubKey:l,pkId:d}=await this.getResKey(),u={accept:"application/json;charset=UTF-8",SessionKey:this.sessionKey,Signature:c,"X-Request-Date":i,"X-Request-ID":n,EncryptionText:bp(s,l,!1),PkId:d};this.cookie&&(u.Cookie=this.cookie);let f=await fetch(`https://upload.cloud.189.cn${e}?params=${a}`,{method:"GET",headers:u});await this.updateCookie(f.headers);let h=await f.text();if(!f.ok)throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3 HTTP ${f.status}: ${h.slice(0,200)}`);let g;try{g=j_(h)}catch{throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${h.slice(0,200)}`)}if(g.code!=="SUCCESS")throw new Error(g.msg||g.message||`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u5931\u8D25: ${e}`);return g}async createMultiUpload(e,t,i,n){let s=await this.getSessionKey();this.sessionKey=s;let o={parentFolderId:e,fileName:encodeURIComponent(t).replace(/%20/g,"+"),fileSize:String(i),sliceSize:String(10*1024*1024)},a;try{a=await this.uploadRequest("/person/initMultiUpload",{...o,fileMd5:n,sliceMd5:n})}catch(l){let d=String(l?.message||l);if(!/InfoSecurityErrorCode|file md5 is in black list|security check not pass/i.test(d))throw l;a=await this.uploadRequest("/person/initMultiUpload",{...o,lazyCheck:"1"})}let c=String(a.data?.uploadFileId||"");if(!c)throw new Error("[189Cloud] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25\uFF1A\u7F3A\u5C11 uploadFileId");return{uploadFileId:c,fileDataExists:String(a.data?.fileDataExists||"0")==="1",sessionKey:s}}async getMultiUploadUrls(e,t,i){let s=(await this.uploadRequest("/person/getMultiUploadUrls",{partInfo:`${t}-${J_(i)}`,uploadFileId:e})).uploadUrls?.[`partNumber_${t}`];if(!s?.requestURL)throw new Error(`[189Cloud] \u83B7\u53D6\u7B2C ${t} \u4E2A\u5206\u7247\u4E0A\u4F20\u5730\u5740\u5931\u8D25`);return s}async commitMultiUpload(e,t,i){await this.uploadRequest("/person/commitMultiUploadFile",{uploadFileId:e,fileMd5:t,sliceMd5:i,lazyCheck:"1",opertype:"3"})}async mkdir(e,t){await this.request("https://cloud.189.cn/api/open/file/createFolder.action",{method:"POST",body:{parentFolderId:e||this.getRootId(),folderName:t}})}async rename(e,t,i){let n=t?"https://cloud.189.cn/api/open/file/renameFolder.action":"https://cloud.189.cn/api/open/file/renameFile.action",s=t?{folderId:e,destFolderName:i}:{fileId:e,destFileName:i};await this.request(n,{method:"POST",body:s})}async batchTask(e,t,i=""){let n=t.map(s=>({fileId:s.id,fileName:s.name,isFolder:s.isFolder?1:0}));await this.request("https://cloud.189.cn/api/open/batch/createBatchTask.action",{method:"POST",body:{type:e,targetFolderId:i,taskInfos:JSON.stringify(n)}})}async move(e,t,i,n){await this.batchTask("MOVE",[{id:e,name:i,isFolder:t}],n)}async copy(e,t,i,n){await this.batchTask("COPY",[{id:e,name:i,isFolder:t}],n)}async remove(e,t,i){await this.batchTask("DELETE",[{id:e,name:i,isFolder:t}],"")}async getCapacityInfo(){return this.request("https://cloud.189.cn/api/portal/getUserSizeInfo.action",{method:"GET"})}}});function Qz(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function V_(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadFileId||!e.sessionKey||!e.fileMd5||!Number.isInteger(e.partCount)||e.partCount<1||!Number.isInteger(e.chunkSize)||e.chunkSize<1)throw new Error("invalid upload session");return e}catch{throw new Error("[189Cloud] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function X_(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function Y_(r){return{name:r.name,size:0,is_dir:!0,modified:X_(r.lastOpTime),sign:String(r.id),type:1,thumb:"",raw_url:""}}function W_(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:X_(r.lastOpTime),sign:String(r.id),type:X(r.name,!1),thumb:r.icon?.smallUrl||r.icon?.largeUrl||"",raw_url:""}}function _z(r){let e={...r||{}};return e.username=e.username||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||"-11",e.order_by=e.order_by||"lastOpTime",e.order_direction=e.order_direction||"desc",e}var Sz,Dz,Sp,Z_=j(()=>{"use strict";Be();He();$_();vp();Sz=45,Dz=10*1024*1024;Sp=class{client;addition;pathIdCache=new Map;budget={used:0,limit:Sz};constructor(e,t){this.addition=_z(e),this.client=new kp(this.addition,t)}async init(){await this.client.login()}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),{folders:u}=await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.name===l||h.name===d||String(h.id)===l||String(h.id)===d);if(!f)throw new Error(`[189Cloud] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=String(f.id),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[189Cloud] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),{files:a,folders:c}=await this.client.getFiles(o,{findName:n,budget:this.budget}),l=a.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(l)return{file:l,parentId:o,isDir:!1};let d=c.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(d)return{file:d,parentId:o,isDir:!0};throw new Error(`[189Cloud] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),{files:n,folders:s}=await this.client.getFiles(i,{budget:this.budget}),o=[...s.map(Y_),...n.map(W_)];return de(o,this.addition.order_by==="filename"?"file_name":this.addition.order_by==="fileSize"?"size":"updated_at",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let a=this.client.getRootId();return{name:a,size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}let{file:n,isDir:s}=await this.resolveFile(t);if(s)return Y_(n);let o=W_(n);try{o.raw_url=await this.client.getDownloadUrl(String(n.id)),o.raw_url_headers=this.client.getDownloadHeaders()}catch(a){console.warn(`[189Cloud] \u83B7\u53D6 ${n.name} \u4E0B\u8F7D\u5730\u5740\u5931\u8D25:`,a.message)}return o}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.rename(String(n.id),s,i)}async remove(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.remove(String(n.id),s,n.name)}async move(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(String(o.id),a,o.name,l)}async copy(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.copy(String(o.id),a,o.name,l)}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[189Cloud] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.createUploadSession(o,o,s,i.length,Rl(i));if(a.reuse)return;let c=[];for(let l=1;l<=a.partCount;l++){let d=(l-1)*a.chunkSize,u=i.subarray(d,Math.min(d+a.chunkSize,i.length)),f=await this.uploadPart(a.session,l,u);c.push(f.partMd5)}await this.completeUploadSession(a.session,c)}async createUploadSession(e,t,i,n,s){let o=Dz,a=String(s||"").trim().toLowerCase();if(!/^[a-f0-9]{32}$/.test(a))return{reuse:!1,requiresMd5:!0,partCount:0,chunkSize:o,session:""};this.budget.used=0;let c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/o)),l=await this.resolveFolderId(t||"/"),d=await this.client.createMultiUpload(l,i,Math.max(0,Number(n)||0),a);return d.fileDataExists?(await this.client.commitMultiUpload(d.uploadFileId,a,a),{reuse:!0,partCount:0,chunkSize:o,session:""}):{reuse:!1,partCount:c,chunkSize:o,session:Qz({uploadFileId:d.uploadFileId,sessionKey:d.sessionKey,fileMd5:a,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:o})}}async uploadPart(e,t,i){let n=V_(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[189Cloud] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);this.client.setSessionKey(n.sessionKey);let s=await this.client.getMultiUploadUrls(n.uploadFileId,t,i),o={};if(s.requestHeader){let c=s.requestHeader;try{c=decodeURIComponent(c)}catch{}for(let l of c.split("&")){let d=l.indexOf("=");d<=0||(o[l.slice(0,d)]=l.slice(d+1))}}let a=await fetch(s.requestURL,{method:"PUT",headers:o,body:i});if(!a.ok){let c=await a.text().catch(()=>"");throw new Error(`[189Cloud] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25: HTTP ${a.status} ${c}`)}return{partMd5:Rl(i)}}async completeUploadSession(e,t=[]){let i=V_(e);this.client.setSessionKey(i.sessionKey);let n=t.map(o=>String(o||"").trim().toLowerCase()).filter(o=>/^[a-f0-9]{32}$/.test(o));if(n.length!==i.partCount)throw new Error("[189Cloud] \u5206\u7247\u6821\u9A8C\u4FE1\u606F\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u4E0A\u4F20");let s=i.partCount===1?i.fileMd5:Rl(n.join(` -`)).toUpperCase();await this.client.commitMultiUpload(i.uploadFileId,i.fileMd5,s)}}});function Rz(){return{clientType:Tz,version:Pz,channelId:Uz,clientSn:"unknown",model:"PJX110",osFamily:"Android",osVersion:"35",networkAccessMode:"WIFI",telecomsOperator:"46011"}}function t8(r){try{return new URL(r).pathname}catch{return r}}function Nz(r,e,t,i,n){let s=`SessionKey=${e}&Operate=${t}&RequestURI=${t8(i)}&Date=${n}`;return Yu(s,r).toUpperCase()}function qz(r,e,t,i,n){let s=`AppKey=${e}&Operate=${t}&RequestURI=${t8(i)}&Timestamp=${n}`;return Yu(s,r).toUpperCase()}function Oz(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function Mz(r){let e=r.res_code;return typeof e=="number"?e!==0:typeof e=="string"?e!==""&&e!=="0":!!(r.code&&r.code!=="SUCCESS"||r.errorCode||r.error)}function Lz(r){switch(r){case"filename":return"1";case"filesize":return"2";case"lastOpTime":return"3";default:return"1"}}function Hz(r){return r==="desc"?"true":"false"}var e8,Fz,Pz,Tz,Uz,Ni,HC,Dp,r8=j(()=>{"use strict";vp();e8="600100885",Fz="fe5734c74c2f96a38157f420b32dc995",Pz="6.5.5",Tz="FAMILY_TV",Uz="home02",Ni="https://api.cloud.189.cn",HC="EcloudTV/6.5.5 (PJX110; unknown; home02) Android/35";Dp=class{addition;tokenInfo=null;persistAccessToken;constructor(e,t){this.addition=e,this.persistAccessToken=t}isFamily(){return this.addition.type==="family"}getFamilyId(){return this.addition.family_id||""}async init(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF1A\u8BF7\u5148\u5728\u522B\u5904\u626B\u7801\u767B\u5F55\u83B7\u53D6 access_token \u540E\u586B\u5165\u914D\u7F6E");await this.login()}signatureHeader(e,t,i){let n=new Date().toUTCString(),s=i?this.tokenInfo?.familySessionKey||"":this.tokenInfo?.sessionKey||"",o=i?this.tokenInfo?.familySessionSecret||"":this.tokenInfo?.sessionSecret||"";return{Date:n,SessionKey:s,"X-Request-ID":Nl(),Signature:Nz(o,s,t,e,n)}}appKeySignatureHeader(e,t){let i=Date.now();return{Timestamp:String(i),"X-Request-ID":Nl(),AppKey:e8,AppSignature:qz(Fz,e8,t,e,i)}}async request(e,t,i={}){let{query:n,form:s,isFamily:o=!1,isAppKey:a=!1}=i,c=i.retryCount??0,l=new URL(e);for(let[p,I]of Object.entries(Rz()))l.searchParams.set(p,I);if(n)for(let[p,I]of Object.entries(n))I!==void 0&&l.searchParams.set(p,I);let d={Accept:"application/json;charset=UTF-8","User-Agent":HC};a?Object.assign(d,this.appKeySignatureHeader(e,t)):Object.assign(d,this.signatureHeader(e,t,o));let u;s&&(d["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(s).toString());let h=await(await fetch(l.toString(),{method:t,headers:d,body:u})).text();if(h.includes("userSessionBO is null")||h.includes("InvalidSessionKey")){if(c>=3)throw new Error("[189TV] session expired after retry");return await this.login(),this.request(e,t,{...i,retryCount:c+1})}let g;try{g=Oz(h)}catch{throw new Error(`[189TV] \u975E\u9884\u671F\u54CD\u5E94: ${h.slice(0,200)}`)}if(Mz(g))throw new Error(`[189TV] API \u9519\u8BEF: ${g.res_message||g.errorMsg||g.msg||h.slice(0,200)}`);return g}async login(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u767B\u5F55");let e=await this.request(Ni+"/family/manage/loginFamilyMerge.action","GET",{query:{e189AccessToken:this.addition.access_token},isAppKey:!0});this.tokenInfo=e,e.accessToken&&e.accessToken!==this.addition.access_token&&(this.addition.access_token=e.accessToken,this.persistAccessToken&&await this.persistAccessToken(e.accessToken))}async getFiles(e,t){let n=(t?Ni+"/family/file":Ni)+"/listFiles.action",s=this.addition.order_by||"lastOpTime",o=Hz(this.addition.order_direction||"asc"),a=[];for(let c=1;;c++){let l={folderId:e,fileType:"0",mediaAttr:"0",iconOption:"5",pageNum:String(c),pageSize:"130"};t?(l.familyId=this.addition.family_id||"",l.orderBy=Lz(s),l.descending=o):(l.recursive="0",l.orderBy=s,l.descending=o);let u=(await this.request(n,"GET",{query:l,isFamily:t})).fileListAO;if(!u||Number(u.count)===0)break;let f=u.folderList||[],h=u.fileList||[];if(a.push(...f,...h),f.length+h.length<130)break}return a}async getFileDownloadUrl(e,t){let n=(t?Ni+"/family/file":Ni)+"/getFileDownloadUrl.action",s={fileId:e};t?s.familyId=this.addition.family_id||"":(s.dt="3",s.flag="1");let a=(await this.request(n,"GET",{query:s,isFamily:t})).fileDownloadUrl||"";if(!a)throw new Error("[189TV] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");a=a.replace(/&/g,"&").replace(/^http:\/\//i,"https://");try{let c=await fetch(a,{method:"GET",headers:{"User-Agent":HC},redirect:"manual"}),l=c.headers.get("location");c.status===302&&l&&(a=l.replace(/^http:\/\//i,"https://"))}catch{}return a}async mkdir(e,t,i){let s=(i?Ni+"/family/file":Ni)+"/createFolder.action",o={folderName:t,relativePath:""};i?(o.familyId=this.addition.family_id||"",o.parentId=e):o.parentFolderId=e,await this.request(s,"POST",{query:o,isFamily:i})}async rename(e,t,i,n){let s=n?Ni+"/family/file":Ni,o=n?"GET":"POST",c=s+(t?"/renameFolder.action":"/renameFile.action"),l={};n&&(l.familyId=this.addition.family_id||""),t?(l.folderId=e,l.destFolderName=i):(l.fileId=e,l.destFileName=i),await this.request(c,o,{query:l,isFamily:n})}async createBatchTask(e,t,i,n){let s={type:e,taskInfos:JSON.stringify(n)};i&&(s.targetFolderId=i),t&&(s.familyId=t);let o=await this.request(Ni+"/batch/createBatchTask.action","POST",{form:s,isFamily:t!==""});if(!o.taskId)throw new Error("[189TV] \u521B\u5EFA\u6279\u91CF\u4EFB\u52A1\u5931\u8D25");return o.taskId}async waitBatchTask(e,t){for(let i=0;i<20;i++){let s=(await this.request(Ni+"/batch/checkBatchTask.action","POST",{form:{type:e,taskId:t}})).taskStatus;if(s===4)return;if(s===2)throw new Error("[189TV] \u76EE\u6807\u5B58\u5728\u540C\u540D\u51B2\u7A81");await new Promise(o=>setTimeout(o,300))}throw new Error("[189TV] \u6279\u91CF\u4EFB\u52A1\u8D85\u65F6")}async move(e,t,i,n,s){let o=await this.createBatchTask("MOVE",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("MOVE",o)}async copy(e,t,i,n,s){let o=await this.createBatchTask("COPY",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("COPY",o)}async remove(e,t,i,n){let s=await this.createBatchTask("DELETE",n&&this.addition.family_id||"","",[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("DELETE",s)}async upload(e,t,i,n){let s=Rl(i),o=i.length,c=(n?Ni+"/family/file":Ni)+(n?"/createFamilyFile.action":"/createUploadFile.action"),l;n?l=await this.request(c,"POST",{query:{familyId:this.addition.family_id||"",parentId:e,fileMd5:s,fileName:t,fileSize:String(o),resumePolicy:"1"},isFamily:n}):l=await this.request(c,"POST",{form:{parentFolderId:e,fileName:t,size:String(o),md5:s,opertype:"3",flag:"1",resumePolicy:"1",isLog:"0"},isFamily:n});let d=l.uploadFileId,u=l.fileUploadUrl,f=l.fileCommitUrl;if(!d||!u)throw new Error("[189TV] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25");let h={ResumePolicy:"1",Expect:"100-continue","User-Agent":HC};n?(h.FamilyId=this.addition.family_id||"",h.UploadFileId=String(d)):h["Edrive-UploadFileId"]=String(d),Object.assign(h,this.signatureHeader(u,"PUT",n));let g=await fetch(u,{method:"PUT",headers:h,body:new Uint8Array(i)});if(g.status!==200)throw new Error(`[189TV] \u4E0A\u4F20\u5931\u8D25: HTTP ${g.status}`);n?await this.request(f,"POST",{query:{ResumePolicy:"1",UploadFileId:String(d),FamilyId:this.addition.family_id||""},isFamily:n}):await this.request(f,"POST",{form:{opertype:"3",resumePolicy:"1",uploadFileId:String(d),isLog:"0"},isFamily:n})}}});function i8(r){if(!r)return new Date().toISOString();let e=r.trim().replace(/["']/g,""),t=e.replace(/ +08$/,"+08:00"),i=new Date(t);return isNaN(i.getTime())?e:i.toISOString()}function n8(r){if("parentId"in r||!("size"in r)){let t=r;return{name:t.name,size:0,is_dir:!0,modified:i8(t.lastOpTime||t.createDate),sign:t.id,type:1}}let e=r;return{name:e.name,size:e.size,is_dir:!1,modified:i8(e.lastOpTime||e.createDate),sign:e.id,type:X(e.name,!1),thumb:e.icon?.smallUrl||"",raw_url:""}}var Qp,s8=j(()=>{"use strict";Be();r8();Qp=class{client;pathCache=new Map;constructor(e,t){this.client=new Dp(e,t)}async init(){await this.client.init()}isFamily(){return this.client.isFamily()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i,this.isFamily())).map(n8)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o,this.isFamily())).find(l=>l.name===n);if(c){let l=n8(c);if(!l.is_dir)try{l.raw_url=await this.client.getFileDownloadUrl(c.id,this.isFamily()),l.raw_url_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}}catch{l.raw_url_error="[189TV] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n,this.isFamily()),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,n.isDir,i,this.isFamily()),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t),s=t.split("/").filter(Boolean).pop()||"";await this.client.remove(n.id,n.isDir,s,this.isFamily()),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.move(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.copy(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/");await this.client.upload(await this.pathToId(o),s,new Uint8Array(i),this.isFamily()),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s,this.isFamily())).find(l=>l.name===i);if(!a)throw new Error(`[189TV] '${i}' not found`);let c="parentId"in a||!("size"in a);return{id:a.id,isDir:c}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.isFamily()?"":"-11";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.isFamily()?"":"-11";for(let s=0;s<i.length;s++){let a=(await this.client.getFiles(n,this.isFamily())).find(l=>l.name===i[s]&&"parentId"in l);if(!a)throw new Error(`[189TV] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Rs(r,e){let t=r.replace(/\/+$/,""),i=e.replace(/^\/+/,"");return!t&&!i?"/":t?i?`${t}/${i}`:t:"/"+i}function Kz(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function o8(r,e){let t=[],i,n=/<(?:[a-zA-Z0-9_-]+:)?response\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?response>/gi,s;for(;(s=n.exec(r))!==null;){let o=s[1],a=/<(?:[a-zA-Z0-9_-]+:)?href\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?href>/i.exec(o);if(!a)continue;let c=a[1].trim(),l=c;try{l=decodeURIComponent(c)}catch{}let d=/<(?:[a-zA-Z0-9_-]+:)?propstat\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?propstat>/gi,u,f="";for(;(u=d.exec(o))!==null;){let E=u[1],P=/<(?:[a-zA-Z0-9_-]+:)?status\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?status>/i.exec(E),N=P?P[1]:"";if(N.includes("200")||N.toLowerCase().includes("ok")){let J=/<(?:[a-zA-Z0-9_-]+:)?prop\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?prop>/i.exec(E);if(J){f=J[1];break}}}if(!f)continue;let h=/<(?:[a-zA-Z0-9_-]+:)?resourcetype\b[^>]*>[\s\S]*?<(?:[a-zA-Z0-9_-]+:)?collection\b/i.test(f),g=/<(?:[a-zA-Z0-9_-]+:)?displayname\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?displayname>/i.exec(f),p=g?g[1].trim():"",I=l.replace(/\/+$/,""),y=I&&I.split("/").pop()||"",w=p||y,C=/<(?:[a-zA-Z0-9_-]+:)?getcontentlength\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontentlength>/i.exec(f),b=h?0:C&&parseInt(C[1].trim(),10)||0,x=/<(?:[a-zA-Z0-9_-]+:)?getlastmodified\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getlastmodified>/i.exec(f),_=new Date().toISOString();if(x){let E=new Date(x[1].trim());isNaN(E.getTime())||(_=E.toISOString())}let R=/<(?:[a-zA-Z0-9_-]+:)?getcontenttype\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontenttype>/i.exec(f),U=R?R[1].trim():void 0,T=/<(?:[a-zA-Z0-9_-]+:)?getetag\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getetag>/i.exec(f),D=T?T[1].trim().replace(/^"|"$/g,""):void 0,B={name:w,path:l,size:b,modified:_,isFolder:h,contentType:U,etag:D},Q=e.replace(/\/+$/,"").toLowerCase(),v=I.toLowerCase();!i&&(v===Q||v.endsWith(Q)||Q===""&&v==="")?i=B:t.push(B)}return{self:i,items:t}}function Gz(r){let e={},t=r.replace(/^digest\s+/i,"").split(/,\s*/);for(let i of t){let n=i.indexOf("=");if(n!==-1){let s=i.slice(0,n).trim(),o=i.slice(n+1).trim().replace(/^"|"$/g,"");s==="realm"?e.realm=o:s==="nonce"?e.nonce=o:s==="qop"?e.qop=o:s==="opaque"?e.opaque=o:s==="algorithm"&&(e.algorithm=o)}}return e}function a8(r,e,t,i,n,s=1){let o=s.toString(16).padStart(8,"0"),a=Math.random().toString(36).substring(2,18),c=r.realm||"",l=r.nonce||"",d=(r.algorithm||"MD5").toUpperCase(),u=r.qop||"",f="";if(d==="MD5"||d==="")f=hc.default.MD5(`${e}:${c}:${t}`).toString();else if(d==="MD5-SESS"){let I=hc.default.MD5(`${e}:${c}:${t}`).toString();f=hc.default.MD5(`${I}:${l}:${a}`).toString()}let h="";(u==="auth"||u==="")&&(h=hc.default.MD5(`${i}:${n}`).toString());let g="";u?g=hc.default.MD5(`${f}:${l}:${o}:${a}:${u}:${h}`).toString():g=hc.default.MD5(`${f}:${l}:${h}`).toString();let p=`Digest username="${e}", realm="${c}", nonce="${l}", uri="${n}", response="${g}"`;return d&&(p+=`, algorithm=${d}`),u&&(p+=`, qop=${u}, nc=${o}, cnonce="${a}"`),r.opaque&&(p+=`, opaque="${r.opaque}"`),p}async function Jz(r,e,t){let i=new URL(t),n=i.hostname.split("."),s=n[n.length-1],a=`${zz[s]||"https://login.microsoftonline.com"}/extSTS.srf`,c=`<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" +</div>`;return new Error(s)}async rawRequest(e,t={}){let i={"user-agent":this.options.userAgent,accept:"application/json;charset=UTF-8","x-device-id":this.options.deviceId,"x-client-id":this.options.clientId,"x-client-version":this.options.clientVersion,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["content-type"]||(i["content-type"]="application/json;charset=UTF-8")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n}),a=await s.text(),o={};try{o=JSON.parse(a)}catch{if(!s.ok)throw new Error(`${s.status} ${s.statusText}: ${a}`);return a}if(o.error==="review_panel")throw this.formatReviewData(o);return o}async authRequest(e,t={}){if(!this.tokenResp?.access_token)throw new Error("empty token");let i={Authorization:`${this.tokenResp.token_type} ${this.tokenResp.access_token}`,"X-Captcha-Token":this.captchaToken,...t.headers||{}},n=await this.rawRequest(e,{...t,headers:i}),s=n?.error_code||0;if(s===4122||s===4121||s===10||s===16){if(this.tokenResp?.refresh_token){let a=await this.refreshToken(this.tokenResp.refresh_token);return this.tokenResp=a,this.options.onPersistToken&&await this.options.onPersistToken(a),this.authRequest(e,t)}throw new Error(`Token expired error ${s}`)}else if(s===9){let a=bF(t.method||"GET",e);return await this.refreshCaptchaTokenAtLogin(a,this.tokenResp.user_id||""),this.authRequest(e,t)}else if(s!==0||n.error&&n.error!=="success")throw new Error(`ErrorCode: ${n.error_code||0}, Error: ${n.error||""}, ErrorDescription: ${n.error_description||""}`);return n}async coreLogin(e,t){let i=`${SF}/xluser.core.login/v3/login`,n={protocolVersion:"301",sequenceNo:"1000012",platformVersion:"10",isCompressed:"0",appid:_F,clientVersion:this.options.clientVersion,peerID:"00000000000000000000000000000000",appName:"ANDROID-com.xunlei.downloadprovider",sdkVersion:"512000",devicesign:vF(this.options.deviceId,this.options.packageName),netWorkType:"WIFI",providerName:"NONE",deviceModel:"M2004J7AC",deviceName:"Xiaomi_M2004j7ac",OSVersion:"12",creditkey:this.creditKey,hl:"zh-CN",userName:e,passWord:t,verifyKey:"",verifyCode:"",isMd5Pwd:"0"},s=await this.rawRequest(i,{method:"POST",body:n,headers:{"user-agent":"android-ok-http-client/xl-acc-sdk/version-5.0.12.512000"}});return this.coreLoginResp=s,s}async login(e,t){let n=(await this.coreLogin(e,t)).sessionID,s=`${ey}/auth/signin/token`;await this.refreshCaptchaTokenInLogin(bF("POST",s),e);let a=await this.rawRequest(s,{method:"POST",body:{client_id:this.options.clientId,client_secret:this.options.clientSecret,provider:Z$,signin_token:n}});return this.tokenResp=a,this.creditKey="",this.options.onPersistToken&&await this.options.onPersistToken(a),a}async refreshToken(e){let t=`${ey}/auth/token`,i=await this.rawRequest(t,{method:"POST",body:{grant_type:"refresh_token",refresh_token:e,client_id:this.options.clientId,client_secret:this.options.clientSecret}});return this.tokenResp=i,this.options.onPersistToken&&await this.options.onPersistToken(i),i}async isLogin(){if(!this.tokenResp?.access_token)return!1;try{return await this.authRequest(`${ey}/user/me`,{method:"GET"}),!0}catch{return!1}}}});function PF(r,e,t){let i=r.kind===QB,n=r.web_content_link||"";if(t&&r.medias&&r.medias.length>0){for(let s of r.medias)if(s.link?.url){n=s.link.url;break}}return{name:r.name,size:parseInt(r.size||"0",10),is_dir:i,modified:r.modified_time||r.created_time||new Date().toISOString(),sign:"",type:X(r.name,i),thumb:r.thumbnail_link||r.icon_link||"",raw_url:n,raw_url_headers:{"User-Agent":e}}}function TF(r){if(r?.device_id&&r.device_id.trim().length===32)return r.device_id.trim();let e=`${r?.username||""}${r?.password||""}`;return e.trim()?il(e):il(Math.random().toString(36)+Date.now().toString(36))}var yh,ty,UF=J(()=>{"use strict";ve();$e();FF();yh=class{client;addition;identity="";onPersistCallback;constructor(e,t){this.addition=e,this.onPersistCallback=t;let i=TF(e);e.device_id=i,this.client=new mh({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:"8.31.0.9726",packageName:"com.xunlei.downloadprovider",userAgent:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:["9uJNVj/wLmdwKrJaVj/omlQ","Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf","Eb+L7Ce+Ej48u","jKY0","ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd","wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK","gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O","5IiCoM9B1/788ntB","P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf","+oK0AN"],space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:n.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:n})}})}get downloadUserAgent(){return this.addition.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)"}get useVideoUrl(){return!!this.addition.use_video_url}async init(){let e=this.addition.username||"",t=this.addition.password||"",i=il(`${e}${t}`);(this.identity!==i||!await this.client.isLogin())&&(this.identity=i,await this.client.login(e,t))}resolveFolderId(e){if(!e||e==="/"||e==="0")return this.addition.root_folder_id||"";let t=e.split("/").filter(Boolean);return t[t.length-1]||this.addition.root_folder_id||""}async list(e,t){let i=this.resolveFolderId(t),n=[],s="";for(;;){let a=new URL(fa);a.searchParams.set("space",this.addition.space||""),a.searchParams.set("__type","drive"),a.searchParams.set("refresh","true"),a.searchParams.set("__sync","true"),a.searchParams.set("parent_id",i),a.searchParams.set("page_token",s),a.searchParams.set("with_audit","true"),a.searchParams.set("limit","100"),a.searchParams.set("filters",JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}}));let o=await this.client.authRequest(a.toString(),{method:"GET"});if(o.files&&o.files.length>0)for(let c of o.files)n.push(PF(c,this.downloadUserAgent,this.useVideoUrl));if(!o.next_page_token)break;s=o.next_page_token}return ue(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.resolveFolderId(t),n=new URL(`${fa}/${i}`);n.searchParams.set("space",this.addition.space||"");let s=await this.client.authRequest(n.toString(),{method:"GET"});return PF(s,this.downloadUserAgent,this.useVideoUrl)}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),a=this.resolveFolderId(s);await this.client.authRequest(fa,{method:"POST",body:{kind:QB,name:n,parent_id:a,space:this.addition.space||""}})}async rename(e,t,i){let n=this.resolveFolderId(t);await this.client.authRequest(`${fa}/${n}`,{method:"PATCH",body:{name:i,space:this.addition.space||""}})}async remove(e,t,i){let n=this.resolveFolderId(t),s=new URL(`${fa}/${n}/trash`);s.searchParams.set("space",this.addition.space||""),await this.client.authRequest(s.toString(),{method:"PATCH",body:{}})}async move(e,t,i,n,s){let a=this.resolveFolderId(n),o=this.resolveFolderId(t);await this.client.authRequest(`${fa}:batchMove`,{method:"POST",body:{to:{parent_id:o},ids:[a],space:this.addition.space||""}})}async copy(e,t,i,n,s){let a=this.resolveFolderId(n),o=this.resolveFolderId(t);await this.client.authRequest(`${fa}:batchCopy`,{method:"POST",body:{to:{parent_id:o},ids:[a],space:this.addition.space||""}})}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",a="/"+n.join("/"),o=this.resolveFolderId(a),c=QF(i),l=await this.client.authRequest(fa,{method:"POST",body:{kind:DF,parent_id:o,name:s,size:i.length.toString(),hash:c,upload_type:FB,space:this.addition.space||""}});if(l.upload_type===FB&&l.resumable?.params){let d=l.resumable.params,u=d.endpoint;u.startsWith(d.bucket+".")&&(u=u.slice(d.bucket.length+1)),!u.startsWith("http://")&&!u.startsWith("https://")&&(u=`https://${u}`);let f=`${u.replace(/\/$/,"")}/${d.bucket}/${d.key}`,A={"x-amz-security-token":d.security_token},g=await fetch(f,{method:"PUT",headers:A,body:i});if(!g.ok)throw new Error(`S3 Upload failed: ${g.status} ${g.statusText}`)}}},ty=class extends yh{constructor(e,t){super(e,t);let i=TF(e);e.device_id=i;let n=e.sign_type==="captcha_sign"?void 0:(e.algorithms||"").split(",").map(s=>s.trim()).filter(Boolean);this.client=new mh({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:e.client_version||"8.31.0.9726",packageName:e.package_name||"com.xunlei.downloadprovider",userAgent:e.user_agent||"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:e.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:n&&n.length>0?n:void 0,timestamp:e.timestamp,captchaSign:e.captcha_sign,useVideoUrl:e.use_video_url,space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:s.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:s})}})}async init(){let e=this.addition,t="";e.login_type==="refresh_token"?t=il(e.refresh_token||""):t=il(`${e.username||""}${e.password||""}`),(this.identity!==t||!await this.client.isLogin())&&(this.identity=t,e.login_type==="refresh_token"&&e.refresh_token?await this.client.refreshToken(e.refresh_token):e.username&&e.password&&await this.client.login(e.username,e.password))}}});function RF(r){if(!r)return new Date().toISOString();let e=r.trim(),t=new Date(e);if(!isNaN(t.getTime()))return t.toISOString();let i=Date.now(),n=864e5,s=e.match(tV);if(s){let a=parseFloat(s[1])||0,o=s[2];if(o.includes("\u79D2\u524D"))return new Date(i-a*1e3).toISOString();if(o.includes("\u5206")||o.includes("\u5206\u949F\u524D"))return new Date(i-a*6e4).toISOString();if(o.includes("\u5C0F\u65F6\u524D")||o.includes("\u5C0F\u65F6"))return new Date(i-a*36e5).toISOString();if(o.includes("\u5929\u524D")||o.includes("\u5929"))return new Date(i-a*n).toISOString();if(o.includes("\u6628\u5929"))return new Date(i-n).toISOString();if(o.includes("\u524D\u5929"))return new Date(i-n*2).toISOString()}return new Date().toISOString()}function NF(r){if(!r)return 0;let e=r.trim().match(rV);if(!e)return 0;let t=parseFloat(e[1]);switch(e[2].toUpperCase()){case"B":return Math.floor(t);case"K":return Math.floor(t*1024);case"M":return Math.floor(t*1048576);case"G":return Math.floor(t*1073741824);default:return 0}}function Ih(r){return r.replace(/<!--[\s\S]*?-->|[^:]\/\/.*|\/\*[\s\S]*?\*\//g,e=>e.slice(1,3)==="//"?e.slice(0,1):` +`)}function OF(r){let e="",t=!1,i=!1;for(let n=0;n<r.length;n++){let s=r[n];if(i&&(s===` +`||s==="\r")){i=!1,e+=s;continue}if(t&&s==="*"&&n+1<r.length&&r[n+1]==="/"){t=!1,n++;continue}if(!(t||i)){if(s==="/"&&n+1<r.length){let a=r[n+1];if(a==="*"){t=!0,n++;continue}else if(a==="/"){i=!0,n++;continue}}e+=s}}return e}function nV(r){let e=[6,28,34,31,33,18,30,23,9,8,19,38,17,24,0,5,32,21,10,22,25,14,15,3,16,27,13,35,2,29,11,26,4,36,1,39,37,7,20,12],t=new Array(r.length).fill("");for(let i=0;i<e.length;i++){let n=e[i];n<t.length&&i<r.length&&(t[n]=r[i])}return t.join("")}function sV(r,e){let t=Math.min(r.length,e.length),i=Math.floor(t/2),n="";for(let s=0;s<i;s++){let a=parseInt(r.slice(s*2,s*2+2),16),o=parseInt(e.slice(s*2,s*2+2),16),c=a^o;n+=c.toString(16).padStart(2,"0")}return n}function ry(r){let e=r.match(iV);if(!e||e.length<2)throw new Error("[Lanzou] \u65E0\u6CD5\u5339\u914D\u5230 acw_sc__v2 \u7684 arg1 \u53C2\u6570");let t=e[1];return sV(nV(t),"3000176000856006061501533003690027800375")}function aV(r,e){if(!r||!e)return"";let t=i=>{for(let n=i.length-1;n>=0;n--){let s=(i[n][1]||"").trim().replace(/^['"]|['"]$/g,"");if(s)return s}return""};if(r!=="sasign"){let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)\\s+${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length){let a=t(i);if(a)return a}let n=Array.from(e.matchAll(new RegExp(`(?:^|[;,\\s])${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gim")));if(n.length){let a=t(n);if(a)return a}let s=Array.from(e.matchAll(new RegExp(`['"]?${r}['"]?\\s*:\\s*['"]?([\\s\\S]*?)['"]?`,"gi")));if(s.length){let a=t(s);if(a)return a}}else{let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)?\\s*${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length===3)return i[1][1].trim().replace(/^['"]|['"]$/g,"");if(i.length>0)return t(i)}return""}function oV(r,e){let t={},i=/['"]?([a-zA-Z0-9_$]+)['"]?\s*:\s*(['"]?([^'",}\s]+)['"]?)/g,n=r.matchAll(i);for(let s of n){let a=s[1],o=s[2],c=s[3];if(!c)t[a]="";else if(o.includes("'")||o.includes('"')||/^\d+$/.test(o))t[a]=c;else{let l=aV(c,e);t[a]=l!==""?l:c}}return t}function cV(r){let e={},t=r.split("&");for(let i of t){let[n,s]=i.split("=");n&&(e[decodeURIComponent(n)]=decodeURIComponent(s||""))}return e}function Ld(r,e){let t=e||r,i=Array.from(r.matchAll(/data\s*:\s*({[\s\S]*?})/g));if(i.length>0){let s=i[0][1];for(let o of i)o[1].length>s.length&&(s=o[1]);let a=oV(s,t);if(Object.keys(a).length>0)return a}let n=r.match(/data\s*:\s*['"]([^'"]+)['"]/);if(n&&n[1].includes("="))return cV(n[1]);throw new Error("[Lanzou] \u672A\u80FD\u627E\u5230\u8BF7\u6C42\u53C2\u6570 data \u5BF9\u8C61")}function qF(r,e){let t=new RegExp(`function\\s+${e}\\s*\\([^)]*\\)\\s*\\{`,"i"),i=r.search(t);if(i===-1)throw new Error(`[Lanzou] \u672A\u627E\u5230\u51FD\u6570 ${e}`);let n=0,s=-1;for(let a=i;a<r.length;a++)if(r[a]==="{")n===0&&(s=a),n++;else if(r[a]==="}"&&(n--,n===0))return r.slice(i,a+1);return r.slice(i)}var tV,rV,iV,PB=J(()=>{"use strict";tV=/([0-9.]*)\s*([\u4e00-\u9fa5]+)/,rV=/([0-9.]+)\s*([bkm]+)/i,iV=/arg1='([0-9A-Z]+)'/i});function ny(r,e){try{let t=new URL(r);return t.host=e,t.toString()}catch{return r}}function sy(r){try{return new URL(r).host}catch{return""}}var iy,TB,ay,MF=J(()=>{"use strict";PB();iy=["pan.lanzoui.com","lanzouw.com","lanzoux.com","lanzouy.com","lanzou.com"],TB="[Lanzou] Cookie \u5DF2\u8FC7\u671F\u6216\u5931\u6548\uFF0C\u8BF7\u5728\u7BA1\u7406\u540E\u53F0\u91CD\u65B0\u586B\u5199 Cookie\uFF08\u6709\u6548\u671F\u7EA6 15 \u5929\uFF09",ay=class{addition;cookie="";uid="";vei="";onCookieUpdate;acwMap=new Map;workingShareHost="";constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim(),this.onCookieUpdate=t}getBaseUrl(){return(this.addition.baseUrl||this.addition.base_url||"https://pc.woozooo.com").replace(/\/$/,"")}getShareUrl(){return(this.addition.shareUrl||this.addition.share_url||"https://pan.lanzoui.com").replace(/\/$/,"")}shareHost(){try{return new URL(this.getShareUrl()).host}catch{return"pan.lanzoui.com"}}getUserAgent(){return this.addition.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}getCookie(){return this.cookie}updateCookie(e,t){if(!e)return;let i=e.match(/(?:^|,\s*)acw_sc__v2=([^;,\s]+)/i);i&&i[1]&&this.acwMap.set(t||this.shareHost(),i[1]);let n=this.cookie?this.cookie.split(";").map(o=>o.trim()):[],s=e.split(/,(?=[a-zA-Z0-9_\-]+=[^;]+)/);for(let o of s){let c=o.split(";")[0].trim(),l=c.indexOf("=");if(l>0){let d=c.slice(0,l).trim(),u=c.slice(l+1).trim(),f=n.findIndex(A=>A.startsWith(`${d}=`));f!==-1?n[f]=`${d}=${u}`:n.push(`${d}=${u}`)}}let a=n.filter(Boolean).join("; ");a!==this.cookie&&(this.cookie=a,this.onCookieUpdate?.(this.cookie))}async init(){let e=this.addition.type||"cookie";if(e==="account"?(await this.login(),await this.initVeiAndUid()):e==="cookie"&&this.cookie&&await this.initVeiAndUid(),!this.acwMap.has(this.shareHost()))try{await this.request(`${this.getShareUrl()}/`,"GET")}catch{}}async probeShareDomain(e){let t=(e||"").replace(/^\//,"");if(!t)return this.getShareUrl();try{let i=await this.request(`${this.getShareUrl()}/${t}`,"GET");return this.extractRealShareDomain(i)||this.getShareUrl()}catch{return this.getShareUrl()}}extractRealShareDomain(e){let t=[],i=e.match(/<iframe[^>]*?src=["'](https?:\/\/[^"'/]+)/i);i&&t.push(i[1]);let n=e.match(/["'](https?:\/\/[^"']*?\/fn\?[^"']*)["']/i);n&&t.push(n[1]);let s=e.match(/["']?(?:dom|url)\s*[:=]\s*["']?(https?:\/\/[^"'\s]+)/i);s&&t.push(s[1]);for(let a of t)try{let o=new URL(a);return`${o.protocol}//${o.host}`}catch{}return""}async login(){if(!this.addition.account||!this.addition.password)throw new Error("[Lanzou] \u8D26\u53F7\u6A21\u5F0F\u4E0B\u5FC5\u987B\u63D0\u4F9B\u8D26\u53F7\u4E0E\u5BC6\u7801");for(let e=0;e<3;e++){let t={"User-Agent":this.getUserAgent(),Referer:"https://pc.woozooo.com","Content-Type":"application/x-www-form-urlencoded"};this.acwMap.has("up.woozooo.com")&&(t.Cookie=`acw_sc__v2=${this.acwMap.get("up.woozooo.com")}`);let i=await fetch("https://up.woozooo.com/mlogin.php",{method:"POST",headers:t,body:new URLSearchParams({task:"3",uid:this.addition.account,pwd:this.addition.password,setSessionId:"",setSig:"",setScene:"",setTocen:"",formhash:""})});this.updateCookie(i.headers.get("set-cookie"),"up.woozooo.com");let n=await i.text();if(n.includes("acw_sc__v2")){this.acwMap.set("up.woozooo.com",ry(n));continue}let s;try{s=JSON.parse(n)}catch{throw new Error(`[Lanzou] \u767B\u5F55\u54CD\u5E94\u5F02\u5E38: ${n.slice(0,200)}`)}if(s.zt!==1)throw new Error(`[Lanzou] \u767B\u5F55\u5931\u8D25: ${s.info||n}`);return}throw new Error("[Lanzou] \u767B\u5F55\u591A\u6B21\u89E6\u53D1 WAF \u6821\u9A8C\u5931\u8D25")}async initVeiAndUid(){let e=await this.request(`${this.getBaseUrl()}/mydisk.php?item=files&action=index`,"GET"),t=e.match(/uid=([^'"&;]+)/);if(!t)throw new Error(TB);this.uid=t[1];let i=Ih(e);try{let n=Ld(i);this.vei=n.vei||""}catch{let n=e.match(/['"]?vei['"]?\s*:\s*['"]?([^'",\s]+)['"]?/);n&&(this.vei=n[1])}}async request(e,t="GET",i,n){let s=e,a=sy(e),o=a===this.shareHost()||iy.includes(a);o&&this.workingShareHost&&a!==this.workingShareHost&&(s=ny(e,this.workingShareHost));let c=o,l=c?iy.filter(u=>!e.includes(u)):[],d=u=>{let f=sy(u),A=f===this.shareHost()||iy.includes(f),g;return A?n&&iy.includes(sy(n))||n&&sy(n)===this.shareHost()?g=ny(n,f):g=`${new URL(u).origin}/`:g=n||this.getBaseUrl(),this.requestOnce(u,t,i,g,f)};try{return await d(s)}catch(u){if(!(c&&(u?.status===403||u?.status===405||/403|405/.test(u?.message||""))))throw u;for(let A of l){let g=ny(s,A);try{let p=await d(g);return this.workingShareHost=A,p}catch(p){if(!(p?.status===403||p?.status===405||/403|405/.test(p?.message||"")))throw p}}throw u}}async requestOnce(e,t,i,n,s){for(let a=0;a<3;a++){let o={Referer:n,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","X-Requested-With":"XMLHttpRequest","Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin",Accept:"*/*"},c=(()=>{try{return new URL(n).host}catch{return""}})();c===s&&(o.Origin=n.slice(0,n.indexOf(c)+c.length));let l=this.cookie;e.includes("/file/")&&(l=(l?l+"; ":"")+"down_ip=1");let d=this.acwMap.get(s);d&&(l=(l?l+"; ":"")+`acw_sc__v2=${d}`),l&&(o.Cookie=l);let u;i&&t==="POST"&&(o["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(i).toString());let f=await fetch(e,{method:t,headers:o,body:u});if(this.updateCookie(f.headers.get("set-cookie"),s),f.status===403||f.status===405){let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}`);throw g.status=f.status,g}if(f.status===429||f.status>=500||f.status===408){if(a<2){await new Promise(p=>setTimeout(p,300*(a+1)));continue}let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}\uFF08\u591A\u6B21\u91CD\u8BD5\u4ECD\u5931\u8D25\uFF09`);throw g.status=f.status,g}let A=await f.text();if(A.includes("acw_sc__v2")){this.acwMap.set(s,ry(A));continue}return A}throw new Error("[Lanzou] \u8BF7\u6C42\u89E6\u53D1 acw_sc__v2 \u6821\u9A8C\u8D85\u9650")}async doupload(e){let t=`${this.getBaseUrl()}/doupload.php?uid=${this.uid}&vei=${this.vei}`,i=await this.request(t,"POST",e),n;try{n=JSON.parse(i)}catch{throw new Error(`[Lanzou] \u975E JSON \u54CD\u5E94: ${i.slice(0,200)}`)}if(n.zt===9){if(this.addition.type==="account")return await this.login(),await this.initVeiAndUid(),this.doupload(e);throw new Error(TB)}if(n.zt!==1&&n.zt!==2&&n.zt!==4)throw new Error(n.inf||n.info||`[Lanzou] API \u9519\u8BEF (zt: ${n.zt})`);return n}async checkCookieValid(){if(this.addition.type==="url")return{valid:!0};try{return this.addition.type==="account"?{valid:!0}:(await this.getFiles("-1"),{valid:!0})}catch(e){let t=e?.message||String(e);return{valid:!1,error:/Cookie 已过期|未能获取到 uid|请检查 Cookie|zt=9/i.test(t)?TB:t}}}async getAllFiles(e){let t=await this.getFolders(e),i=await this.getFiles(e);return[...t,...i]}async getFolders(e){return((await this.doupload({task:"47",folder_id:e||"-1"})).text||[]).map(n=>({...n,name:n.name,fol_id:n.fol_id||n.id,is_folder:!0}))}async getFiles(e){let t=[];for(let i=1;;i++){let s=(await this.doupload({task:"5",folder_id:e||"-1",pg:String(i)})).text||[];if(s.length===0)break;t.push(...s.map(a=>({...a,name_all:a.name_all||a.name,id:a.id,size:a.size,time:a.time,is_folder:!1})))}return t}async getFileShareUrlById(e){return(await this.doupload({task:"22",file_id:e})).info||{}}async getFileOrFolderByShareUrl(e,t=""){let i=e.replace(/^\//,""),n=await this.request(`${this.getShareUrl()}/${i}`,"GET");if(n.includes("\u53D6\u6D88\u5206\u4EAB"))throw new Error("[Lanzou] \u8BE5\u6587\u4EF6\u5DF2\u53D6\u6D88\u5206\u4EAB");if(n.includes("\u6587\u4EF6\u4E0D\u5B58\u5728"))throw new Error("[Lanzou] \u6587\u4EF6\u4E0D\u5B58\u5728");return/class="fileinfo"|id="file"|文件描述/i.test(n)?[await this.getFilesByShareUrl(i,t,n)]:this.getFolderByShareUrl(t,n)}async getFolderByShareUrl(e,t){let i=Ih(t),n={};try{n=Ld(i)}catch{n={}}let s=[],a=Array.from(t.matchAll(/(?:folderlink|mbxfolder)[^>]*href=["']\/?([^"']+)["'][^>]*>(.+?)<\//gi));for(let o of a)s.push({id:o[1],name_all:o[2].trim(),is_folder:!0});n.pwd=e||this.addition.share_password||"";for(let o=1;;o++){n.pg=String(o);let c=await this.request(`${this.getShareUrl()}/filemoreajax.php`,"POST",n),l;try{l=JSON.parse(c)}catch{break}if(l.zt!==1||!Array.isArray(l.text)||l.text.length===0)break;let d=l.text;s.push(...d.map(u=>({id:u.id,name_all:u.name_all||u.name,size:u.size,time:u.time,is_folder:!1,pwd:n.pwd})))}return s}async getFilesByShareUrl(e,t="",i,n){let s=e.replace(/^\//,""),a=(n||await this.probeShareDomain(s)).replace(/\/+$/,""),o=`${a}/${s}`,c=i;c||(c=await this.request(o,"GET")),c=Ih(c),c=OF(c);let l={},d="",u="",f={id:s,is_folder:!1};if(c.includes("pwdload")||c.includes("passwddiv")){let B=qF(c,"down_p");l=Ld(B,c),l.p=t||this.addition.share_password||"";let C=B.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||c.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||B.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||c.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||B.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/)||c.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),x=C?C[1]:"";if(!x)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let _=await this.request(`${a}/ajaxfile.php?file=${x}`,"POST",l,o),R;try{R=JSON.parse(_)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${_}`)}if(R.zt!==1)throw new Error(R.info||R.text||`[Lanzou] \u5BC6\u7801\u9519\u8BEF\u6216\u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${R.zt})`);f.name_all=R.inf||"download",d=`${R.dom}/file`,u=`${d}/${R.url}`}else{let B=c.match(/<iframe[^>]*?src=["']([^"']+)["']/i)||c.match(/href=["'](\/fn\?[^"']+)["']/i)||c.match(/["'](\/fn\?[^"']+)["']/i);if(!B)throw new Error("[Lanzou] \u672A\u627E\u5230\u4E0B\u8F7D\u9875\u9762 iframe \u53C2\u6570");let C=B[1],x=`${a}${C.startsWith("/")?"":"/"}${C}`,_=await this.request(x,"GET",void 0,o),R=Ih(_);l=Ld(R,R);let U=R.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||R.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||R.match(/file=(\d+)/)||R.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),T=U?U[1]:"";if(!T)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let D=await this.request(`${a}/ajaxfile.php?file=${T}`,"POST",l,x),b;try{b=JSON.parse(D)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${D}`)}if(b.zt!==1)throw new Error(b.info||b.text||`[Lanzou] \u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${b.zt})`);d=`${b.dom}/file`,u=`${d}/${b.url}`;let Q=c.match(/<title>(.+?) - 蓝奏云<\/title>|id="filenajax">(.+?)<\/div>|var filename = ['"](.+?)['"];|<div style="font-size[^>]*>([^<>]+)<\/div>|<div class="filethetext"[^>]*>([^<>]+)<\/div>/i);if(Q){for(let v=1;v<Q.length;v++)if(Q[v]){f.name_all=Q[v].trim();break}}}let g=c.match(/大小\W*([0-9.]+\s*[bkm]+)/i);g&&(f.size=g[1]);let p=c.match(/\d+\s*[秒天分小][钟时]?前|[昨前]天|\d{4}-\d{2}-\d{2}/);p&&(f.time=p[0]);let I=u,m="",w=!1;for(let B=0;B<3;B++){let C={Referer:d,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"},x="down_ip=1";m&&(x+=`; acw_sc__v2=${m}`),C.Cookie=x;let _;try{_=await fetch(u,{method:"GET",headers:C,redirect:"manual"})}catch{if(B<2){await new Promise(U=>setTimeout(U,400*(B+1)));continue}throw new Error("[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")}if(_.status===301||_.status===302||_.status===303||_.status===307||_.status===308){let U=_.headers.get("location");if(U){I=new URL(U,u).toString(),w=!0;break}}if(_.status===200&&_.url&&_.url!==u){I=_.url,w=!0;break}if(_.status===429||_.status>=500){if(B<2){await new Promise(U=>setTimeout(U,400*(B+1)));continue}throw new Error(`[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u8FD4\u56DE HTTP ${_.status}\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5`)}let R=await _.text();if(R.includes("acw_sc__v2")){m=ry(R);continue}try{let U=Ld(R,R);U.el="2",await new Promise(b=>setTimeout(b,1500));let T=await this.request(`${d}/ajax.php`,"POST",U,d),D=JSON.parse(T);if(D.url){I=D.url.startsWith("http")?D.url:new URL(D.url,d).toString(),w=!0;break}}catch{if(B<2){await new Promise(U=>setTimeout(U,600*(B+1)));continue}}break}if(!w)throw new Error("[Lanzou] \u76F4\u94FE\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");return f.url=I,f}async getFileRealInfo(e){try{let t=await fetch(e,{method:"HEAD",headers:{"User-Agent":this.getUserAgent()}}),i=t.headers.get("content-length"),n=t.headers.get("last-modified");return{size:i?parseInt(i,10):void 0,time:n?new Date(n).toISOString():void 0}}catch{return{}}}async mkdir(e,t){await this.doupload({task:"2",parent_id:e||"-1",folder_name:t,folder_description:""})}async rename(e,t){await this.doupload({task:"46",file_id:e,file_name:t,type:"2"})}async move(e,t){await this.doupload({task:"20",file_id:e,folder_id:t})}async remove(e,t){t?await this.doupload({task:"3",folder_id:e}):await this.doupload({task:"6",file_id:e})}}});function lV(r){let e={...r||{}};return e.type=e.type||"cookie",e.account=e.account||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||(e.type==="url"?"":"-1"),e.share_password=e.share_password||"",e.baseUrl=e.baseUrl||"https://pc.woozooo.com",e.shareUrl=e.shareUrl||"https://pan.lanzoui.com",e.user_agent=e.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",e.repair_file_info=!!e.repair_file_info,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}function UB(r,e){let t=!!r.is_folder||!!r.fol_id,i=r.name_all||r.name||"",n=e?.size!==void 0?e.size:NF(r.size||"0"),s=e?.time?e.time:RF(r.time||""),a=r.fol_id||r.id||"";return{name:i,size:n,is_dir:t,modified:s,sign:a,type:X(i,t),thumb:"",raw_url:r.url||""}}var oy,LF=J(()=>{"use strict";ve();$e();MF();PB();oy=class{client;addition;pathIdCache=new Map;constructor(e,t){this.addition=lV(e),this.client=new ay(this.addition,t)}async init(){await this.client.init()}async checkCookieValid(){return this.client.checkCookieValid()}isUrlMode(){return this.addition.type==="url"}getRootId(){return this.addition.root_folder_id||(this.isUrlMode()?"":"-1")}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,a=t,o="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)a=d,s=c+1,o=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),f=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(a,this.addition.share_password):await this.client.getFolders(a)).find(A=>{if(!A.is_folder&&!A.fol_id)return!1;let g=A.name||A.name_all||"",p=A.fol_id||A.id||"";return g===l||g===d||p===l||p===d});if(!f)throw new Error(`[Lanzou] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);a=f.fol_id||f.id||"",o="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(o,a)}return a}async resolveItem(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean);if(i.length===0)throw new Error("[Lanzou] \u8DEF\u5F84\u65E0\u6548");let n=i[i.length-1],s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),a="/"+i.slice(0,i.length-1).join("/"),o=await this.resolveFolderId(a),l=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(o,this.addition.share_password):await this.client.getAllFiles(o)).find(u=>{let f=u.name_all||u.name||"",A=u.fol_id||u.id||"";return f===n||f===s||A===n||A===s});if(!l)throw new Error(`[Lanzou] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${n}`);let d=!!(l.is_folder||l.fol_id);return d&&this.pathIdCache.set(t,l.fol_id||l.id||""),{item:l,parentId:o,isDir:d}}async list(e,t){let i=await this.resolveFolderId(t),s=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(i,this.addition.share_password):await this.client.getAllFiles(i)).map(a=>UB(a));return ue(s,this.addition.order_by==="name"?"file_name":this.addition.order_by==="size"?"size":"updated_at",this.addition.order_direction)}async get(e,t){let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.getRootId()){let l=this.getRootId();return{name:l||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""}}let{item:n,isDir:s}=await this.resolveItem(t);if(s)return UB(n);let a=n.url;if(!a)try{if(this.isUrlMode()){let l=await this.client.getFilesByShareUrl(n.id||"",n.pwd||this.addition.share_password||"",void 0,await this.client.probeShareDomain(n.id||""));a=l.url,n.name_all=l.name_all||n.name_all,n.size=l.size||n.size}else{let l=await this.client.getFileShareUrlById(n.id||""),d=l?.f_id||l?.id;if(d){let u=await this.client.getFilesByShareUrl(d,l.pwd||"",void 0);a=u.url,u.name_all&&(n.name_all=u.name_all),u.size&&(n.size=u.size)}}}catch(l){throw console.error(`[Lanzou] \u89E3\u6790\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25 (${n.name_all||n.name}):`,l.message),new Error(`[Lanzou] \u83B7\u53D6\u4E0B\u8F7D\u76F4\u94FE\u5931\u8D25 (${n.name_all||n.name}): ${l.message}`)}if(!a)throw new Error(`[Lanzou] \u672A\u80FD\u83B7\u53D6\u5230\u4E0B\u8F7D\u76F4\u94FE (${n.name_all||n.name||t})`);let o;if(this.addition.repair_file_info&&a)try{o=await this.client.getFileRealInfo(a)}catch{}let c=UB(n,o);return c.raw_url=a||"",c.raw_url_headers={"User-Agent":this.client.getUserAgent()},c}async mkdir(e,t){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u65B0\u5EFA\u6587\u4EF6\u5939");let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFolderId(s);await this.client.mkdir(a,n)}async rename(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u91CD\u547D\u540D");let{item:n,isDir:s}=await this.resolveItem(t);if(s)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u91CD\u547D\u540D\u6587\u4EF6\u5939");await this.client.rename(n.id||"",i)}async remove(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u5220\u9664");let{item:n,isDir:s}=await this.resolveItem(t);await this.client.remove(n.fol_id||n.id||"",s)}async move(e,t,i,n,s){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u79FB\u52A8");let{item:a,isDir:o}=await this.resolveItem(n);if(o)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u79FB\u52A8\u6587\u4EF6\u5939");let c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(a.id||"",l)}async copy(){throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u76F4\u63A5\u590D\u5236\u6587\u4EF6")}async put(){throw new Error("[Lanzou] Cloudflare Worker \u73AF\u5883\u6682\u4E0D\u652F\u6301\u76F4\u63A5\u6D41\u5F0F\u5199\u5165\uFF0C\u8BF7\u4F7F\u7528\u7F51\u9875\u7AEF\u8FDB\u884C\u6587\u4EF6\u4E0A\u4F20")}}});function dV(r){let e=r.replace(/\s+/g,""),t=atob(e),i=new Uint8Array(t.length);for(let n=0;n<t.length;n++)i[n]=t.charCodeAt(n);return i}function uV(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function fV(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function RB(r){let e=0n;for(let t=0;t<r.length;t++)e=e<<8n|BigInt(r[t]);return e}function hV(r,e){let t=new Uint8Array(e),i=r;for(let n=e-1;n>=0;n--)t[n]=Number(i&0xffn),i>>=8n;return t}function AV(r,e,t){let i=1n;for(r=r%t;e>0n;)e%2n===1n&&(i=i*r%t),r=r*r%t,e/=2n;return i}function gV(r){let e=r.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,""),t=dV(e),i=0;function n(){let l=t[i++],d=t[i++];if(d&128){let f=d&127;d=0;for(let A=0;A<f;A++)d=d<<8|t[i++]}return{tag:l,length:d,dataStart:i}}let s=[];function a(l,d){let u=l;for(;u<d;){let f=t[u++],A=t[u++];if(A&128){let p=A&127;A=0;for(let I=0;I<p;I++)A=A<<8|t[u++]}let g=u;if(u+=A,f===2){let p=t.subarray(g,g+A);p[0]===0&&p.length>1&&(p=p.subarray(1)),s.push(p)}else f===48||(f&32)!==0?a(g,g+A):f===3&&t[g]===0&&a(g+1,g+A)}}if(a(0,t.length),s.length<2)throw new Error("Failed to parse RSA public key: insufficient integers found");let o=s[0],c=s[1];if(o.length<c.length){let l=o;o=c,c=l}return{n:RB(o),e:RB(c),keyLength:o.length}}function cy(r,e,t=!1){let{n:i,e:n,keyLength:s}=gV(e),a=typeof r=="string"?new TextEncoder().encode(r):r;if(a.length>s-11)throw new Error(`Data too long for RSA key size: ${a.length} > ${s-11}`);let o=s-a.length-3,c=new Uint8Array(o),l=new Uint8Array(o*2);crypto.getRandomValues(l);let d=0;for(let p=0;p<o;p++){let I=l[d++];for(;I===0;)d>=l.length&&(crypto.getRandomValues(l),d=0),I=l[d++];c[p]=I}let u=new Uint8Array(s);u[0]=0,u[1]=2,u.set(c,2),u[2+o]=0,u.set(a,3+o);let f=RB(u),A=AV(f,n,i),g=hV(A,s);return t?fV(g):uV(g)}function HF(r,e){let t=typeof e=="string"?si.default.enc.Utf8.parse(e.slice(0,16)):si.default.lib.WordArray.create(Array.from(e.slice(0,16)),16),i=si.default.enc.Utf8.parse(r);return si.default.AES.encrypt(i,t,{mode:si.default.mode.ECB,padding:si.default.pad.Pkcs7}).ciphertext.toString(si.default.enc.Hex)}function wh(r,e){return si.default.HmacSHA1(r,e).toString(si.default.enc.Hex)}function KF(r){return typeof r=="string"?si.default.enc.Utf8.parse(r):si.default.lib.WordArray.create(r)}function Hd(r){return si.default.MD5(KF(r)).toString(si.default.enc.Hex)}function GF(r){return si.default.MD5(KF(r)).toString(si.default.enc.Base64)}function Kd(r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"){return r.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function NB(){return"0."+Math.floor(Math.random()*1e17).toString().padStart(17,"0")}var si,ly=J(()=>{"use strict";si=Qr(Ao(),1)});function pV(r,e,t){let i=r?r.split(";").map(a=>a.trim()):[],n=`${e}=${t}`,s=i.findIndex(a=>a.startsWith(`${e}=`));return s!==-1?i[s]=n:i.push(n),i.filter(Boolean).join("; ")}function mV(r,e){if(!e)return r;let t=r,i=e.split(/,(?=\s*[a-zA-Z0-9_\-]+=[^;]+)/);for(let n of i){let s=n.split(";")[0].trim(),a=s.indexOf("=");if(a>0){let o=s.slice(0,a).trim(),c=s.slice(a+1).trim();t=pV(t,o,c)}}return t}function yV(r){let e=r;if(typeof e.getSetCookie=="function"){let i=e.getSetCookie();if(i.length>0)return i}let t=r.get("set-cookie");return t?[t]:[]}function zF(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function OB(r){return r.protocol==="https:"&&IV.has(r.hostname)}function qB(r){try{let e=new URL(r,"https://open.e.189.cn");return!!e.searchParams.get("lt")&&!!e.searchParams.get("reqId")}catch{return!1}}function MB(r){try{let e=new URL(r,"https://open.e.189.cn");return e.hostname==="cloud.189.cn"&&(e.pathname==="/web/main"||e.pathname==="/main.action")}catch{return!1}}var IV,dy,JF=J(()=>{"use strict";ly();IV=new Set(["cloud.189.cn","open.e.189.cn"]);dy=class{addition;cookie="";cookieDirty=!1;sessionKey="";rsa={pubKey:"",pkId:"",expire:0};constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim()}getCookie(){return this.cookie}consumePendingCookie(){return this.cookieDirty?(this.cookieDirty=!1,this.cookie):null}getRootId(){return this.addition.root_folder_id||"-11"}setSessionKey(e){this.sessionKey=e}getDownloadHeaders(){let e={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};return this.cookie&&(e.Cookie=this.cookie),e}async updateCookie(e){let t=yV(e);if(t.length===0)return;let i=t.reduce((n,s)=>mV(n,s),this.cookie);i!==this.cookie&&(this.cookie=i,this.cookieDirty=!0)}async followRedirectsWithCookies(e,t){let i=e,n=[i];for(let s=0;s<=8;s++){let a=new URL(i);if(!OB(a))throw new Error(a.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${a.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${a.origin}`);let o={...t};s>0&&(o.Referer=i),this.cookie&&(o.Cookie=this.cookie);let c=await fetch(i,{method:"GET",headers:o,redirect:"manual"});await this.updateCookie(c.headers);let l=c.headers.get("location");if(!(c.status>=300&&c.status<400)||!l){let f=i;if(c.url&&c.url!==i){let A=new URL(c.url,i);if(qB(A.toString())||MB(A.toString())){if(!OB(A))throw new Error(A.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${A.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${A.origin}`);f=A.toString(),n.push(f)}}return{response:c,url:f,urls:n}}if(s===8)throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u6B21\u6570\u8FC7\u591A");let u=new URL(l,i);if(!OB(u))throw new Error(u.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${u.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${u.origin}`);i=u.toString(),n.push(i)}throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5931\u8D25")}async resolveLoginUrl(e,t){let i=e;for(let n=0;n<3;n++){let s=new URL(e);s.searchParams.set("noCache",NB());let a=await this.followRedirectsWithCookies(s.toString(),t);if(i=a.url,qB(a.url)||MB(a.url))return a.url;let o=a.urls.find(c=>qB(c));if(o)return o;n<2&&await new Promise(c=>setTimeout(c,150*(n+1)))}return i}async login(e={}){if(this.cookie&&!e.force)return;let t="https://cloud.189.cn/api/portal/loginUrl.action?redirectURL=https%3A%2F%2Fcloud.189.cn%2Fmain.action",i={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};this.cookie&&(i.Cookie=this.cookie);let n=await this.resolveLoginUrl(t,i);if(MB(n))return;if(!this.addition.username||!this.addition.password){if(this.cookie)return;throw new Error("[189Cloud] \u8D26\u53F7\u6216\u5BC6\u7801\u4E3A\u7A7A\uFF0C\u4E14\u672A\u63D0\u4F9B\u6709\u6548 Cookie")}let s;try{s=new URL(n,"https://open.e.189.cn")}catch{s=new URL("https://open.e.189.cn"+n)}let a=s.searchParams.get("lt")||"",o=s.searchParams.get("reqId")||"",c=s.searchParams.get("appId")||"cloud";if(!a||!o)throw new Error("[189Cloud] \u767B\u5F55\u8DF3\u8F6C\u53C2\u6570\u4E0D\u5B8C\u6574\uFF0C\u672A\u83B7\u53D6\u5230 lt \u6216 reqId");let l=()=>{let x={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",lt:a,reqid:o,referer:n,origin:"https://open.e.189.cn","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json;charset=UTF-8"};return this.cookie&&(x.Cookie=this.cookie),x},d=await fetch("https://open.e.189.cn/api/logbox/oauth2/appConf.do",{method:"POST",headers:l(),body:new URLSearchParams({version:"2.0",appKey:c})});await this.updateCookie(d.headers);let u=await d.json();if(u.result!=="0"||!u.data)throw new Error(`[189Cloud] \u83B7\u53D6 AppConf \u5931\u8D25: ${u.msg||JSON.stringify(u)}`);let f=await fetch("https://open.e.189.cn/api/logbox/config/encryptConf.do",{method:"POST",headers:l(),body:new URLSearchParams({appId:c})});await this.updateCookie(f.headers);let A=await f.json();if(A.result!==0||!A.data?.pubKey)throw new Error(`[189Cloud] \u83B7\u53D6 EncryptConf \u5931\u8D25: ${JSON.stringify(A)}`);let g=A.data.pre||"",p=A.data.pubKey,I=g+cy(this.addition.username,p,!0),m=g+cy(this.addition.password,p,!0),w={version:"v2.0",apToken:"",appKey:c,accountType:u.data.accountType||"01",userName:I,epd:m,captchaType:"",validateCode:"",smsValidateCode:"",captchaToken:"",returnUrl:u.data.returnUrl||"https://cloud.189.cn/main.action",mailSuffix:u.data.mailSuffix||"@189.cn",dynamicCheck:"FALSE",clientType:String(u.data.clientType??"10010"),cb_SaveName:"3",isOauth2:String(u.data.isOauth2??!1),state:"",paramId:u.data.paramId||""},B=await fetch("https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do",{method:"POST",headers:{...l()},body:new URLSearchParams(w)});await this.updateCookie(B.headers);let C=await B.json();if(C.result!==0){let x=C.msg||"\u767B\u5F55\u5931\u8D25";throw x.includes("\u9A8C\u8BC1\u7801")||x.includes("\u6ED1\u5757")||x.includes("\u8BBE\u5907\u9501")?new Error(`[189Cloud] \u767B\u5F55\u89E6\u53D1\u9A8C\u8BC1\u7801/\u8BBE\u5907\u4FDD\u62A4: ${x}\u3002\u8BF7\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165\u914D\u7F6E\u3002`):new Error(`[189Cloud] \u767B\u5F55\u5931\u8D25: ${x}`)}C.toUrl&&await this.followRedirectsWithCookies(C.toUrl,{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"})}async request(e,t={}){let i=t.method||"GET",n=t.retryOnInvalidSession!==!1,s=new URL(e);if(s.searchParams.set("noCache",NB()),t.params)for(let[f,A]of Object.entries(t.params))A!==void 0&&s.searchParams.set(f,A);let a={Accept:"application/json;charset=UTF-8",Referer:"https://cloud.189.cn/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"};this.cookie&&(a.Cookie=this.cookie);let o;t.body&&(a["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",o=new URLSearchParams(t.body).toString());let c=await fetch(s.toString(),{method:i,headers:a,body:o});await this.updateCookie(c.headers);let l=await c.text(),d;try{d=zF(l)}catch{throw new Error(`[189Cloud] \u975E\u9884\u671F\u54CD\u5E94: ${l.slice(0,200)}`)}if(d.errorCode==="InvalidSessionKey"||d.res_code==="InvalidSessionKey"||String(d.res_code)==="1010"){if(n)return await this.login({force:!0}),this.request(e,{...t,retryOnInvalidSession:!1});throw new Error(d.errorMsg||d.res_message||"[189Cloud] \u767B\u5F55\u4F1A\u8BDD\u5DF2\u5931\u6548")}if(d.errorCode)throw new Error(d.errorMsg||`[189Cloud] API \u9519\u8BEF: ${d.errorCode}`);if(!c.ok)throw new Error(d.errorMsg||d.res_message||`[189Cloud] HTTP \u8BF7\u6C42\u5931\u8D25 (${c.status})`);if(d.res_code!==void 0&&String(d.res_code)!=="0")throw new Error(d.res_message||`189 API \u9519\u8BEF (res_code: ${d.res_code})`);return d}async getFilesPage(e,t,i){let n=this.addition.order_by||"lastOpTime",s=(this.addition.order_direction||"desc")==="desc"?"true":"false",a=await this.request("https://cloud.189.cn/api/open/file/listFiles.action",{method:"GET",params:{pageSize:i,pageNum:String(t),mediaType:"0",folderId:e||this.getRootId(),iconOption:"5",orderBy:n,descending:s}}),o=a.fileListAO?.count,c=typeof o=="number"?o:typeof o=="string"&&o.trim()!==""?Number(o):NaN;if(!a.fileListAO||typeof a.fileListAO!="object"||Array.isArray(a.fileListAO)||!Number.isFinite(c)||c<0||!Array.isArray(a.fileListAO.fileList)||!Array.isArray(a.fileListAO.folderList))throw new Error("[189Cloud] \u6587\u4EF6\u5217\u8868\u54CD\u5E94\u7F3A\u5C11\u6709\u6548\u7684 fileListAO \u6570\u7EC4\u5B57\u6BB5");return a}async validateRoot(e){await this.getFilesPage(e,1,"1")}async getFiles(e,t){let i=[],n=[],s=1,a="60";for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn("[189Cloud] Cloudflare Worker subrequest budget limit reached.");break}t.budget.used++}let c=(await this.getFilesPage(e,s,a)).fileListAO;if(Number(c.count)===0)break;let l=c.fileList||[],d=c.folderList||[];if(n.push(...d),i.push(...l),t?.findName&&(t.findIsDir&&d.some(u=>u.name===t.findName)||!t.findIsDir&&l.some(u=>u.name===t.findName))||l.length+d.length<parseInt(a,10))break;s++}return{files:i,folders:n}}async getDownloadUrl(e){let t=await this.request("https://cloud.189.cn/api/portal/getFileInfo.action",{method:"GET",params:{fileId:e}}),i=t.fileDownloadUrl||t.downloadUrl;if(!i)throw new Error(`[189Cloud] \u83B7\u53D6\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25 (fileId: ${e})`);let n=i.startsWith("//")?"https:"+i:i;n=n.replace(/^http:\/\//i,"https://");try{let s=await fetch(n,{method:"GET",headers:this.getDownloadHeaders(),redirect:"manual"}),a=s.headers.get("location");s.status===302&&a&&(n=a.replace(/^http:\/\//i,"https://"))}catch{}return n}async getSessionKey(){let e=await this.request("https://cloud.189.cn/v2/getUserBriefInfo.action",{method:"GET"}),t=String(e.sessionKey||"");if(!t)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 SessionKey \u5931\u8D25");return t}async getResKey(){if(this.rsa.pubKey&&this.rsa.pkId&&this.rsa.expire>Date.now())return this.rsa;let e=await this.request("https://cloud.189.cn/api/security/generateRsaKey.action",{method:"GET"}),t=String(e.pubKey||""),i=String(e.pkId||"");if(!t||!i)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 RSA \u516C\u94A5\u5931\u8D25");return this.rsa={pubKey:t,pkId:i,expire:Number(e.expire)||Date.now()+5*6e4},this.rsa}async uploadRequest(e,t){this.sessionKey||(this.sessionKey=await this.getSessionKey());let i=String(Date.now()),n=Kd(),s=Kd("xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").slice(0,16+Math.floor(Math.random()*17)),a=Object.keys(t).sort().map(p=>`${p}=${t[p]}`).join("&"),o=HF(a,s.slice(0,16)),c=wh(`SessionKey=${this.sessionKey}&Operate=GET&RequestURI=${e}&Date=${i}¶ms=${o}`,s),{pubKey:l,pkId:d}=await this.getResKey(),u={accept:"application/json;charset=UTF-8",SessionKey:this.sessionKey,Signature:c,"X-Request-Date":i,"X-Request-ID":n,EncryptionText:cy(s,l,!1),PkId:d};this.cookie&&(u.Cookie=this.cookie);let f=await fetch(`https://upload.cloud.189.cn${e}?params=${o}`,{method:"GET",headers:u});await this.updateCookie(f.headers);let A=await f.text();if(!f.ok)throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3 HTTP ${f.status}: ${A.slice(0,200)}`);let g;try{g=zF(A)}catch{throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${A.slice(0,200)}`)}if(g.code!=="SUCCESS")throw new Error(g.msg||g.message||`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u5931\u8D25: ${e}`);return g}async createMultiUpload(e,t,i,n){let s=await this.getSessionKey();this.sessionKey=s;let a={parentFolderId:e,fileName:encodeURIComponent(t).replace(/%20/g,"+"),fileSize:String(i),sliceSize:String(10*1024*1024)},o;try{o=await this.uploadRequest("/person/initMultiUpload",{...a,fileMd5:n,sliceMd5:n})}catch(l){let d=String(l?.message||l);if(!/InfoSecurityErrorCode|file md5 is in black list|security check not pass/i.test(d))throw l;o=await this.uploadRequest("/person/initMultiUpload",{...a,lazyCheck:"1"})}let c=String(o.data?.uploadFileId||"");if(!c)throw new Error("[189Cloud] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25\uFF1A\u7F3A\u5C11 uploadFileId");return{uploadFileId:c,fileDataExists:String(o.data?.fileDataExists||"0")==="1",sessionKey:s}}async getMultiUploadUrls(e,t,i){let s=(await this.uploadRequest("/person/getMultiUploadUrls",{partInfo:`${t}-${GF(i)}`,uploadFileId:e})).uploadUrls?.[`partNumber_${t}`];if(!s?.requestURL)throw new Error(`[189Cloud] \u83B7\u53D6\u7B2C ${t} \u4E2A\u5206\u7247\u4E0A\u4F20\u5730\u5740\u5931\u8D25`);return s}async commitMultiUpload(e,t,i){await this.uploadRequest("/person/commitMultiUploadFile",{uploadFileId:e,fileMd5:t,sliceMd5:i,lazyCheck:"1",opertype:"3"})}async mkdir(e,t){await this.request("https://cloud.189.cn/api/open/file/createFolder.action",{method:"POST",body:{parentFolderId:e||this.getRootId(),folderName:t}})}async rename(e,t,i){let n=t?"https://cloud.189.cn/api/open/file/renameFolder.action":"https://cloud.189.cn/api/open/file/renameFile.action",s=t?{folderId:e,destFolderName:i}:{fileId:e,destFileName:i};await this.request(n,{method:"POST",body:s})}async batchTask(e,t,i=""){let n=t.map(s=>({fileId:s.id,fileName:s.name,isFolder:s.isFolder?1:0}));await this.request("https://cloud.189.cn/api/open/batch/createBatchTask.action",{method:"POST",body:{type:e,targetFolderId:i,taskInfos:JSON.stringify(n)}})}async move(e,t,i,n){await this.batchTask("MOVE",[{id:e,name:i,isFolder:t}],n)}async copy(e,t,i,n){await this.batchTask("COPY",[{id:e,name:i,isFolder:t}],n)}async remove(e,t,i){await this.batchTask("DELETE",[{id:e,name:i,isFolder:t}],"")}async getCapacityInfo(){return this.request("https://cloud.189.cn/api/portal/getUserSizeInfo.action",{method:"GET"})}}});function CV(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function jF(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadFileId||!e.sessionKey||!e.fileMd5||!Number.isInteger(e.partCount)||e.partCount<1||!Number.isInteger(e.chunkSize)||e.chunkSize<1)throw new Error("invalid upload session");return e}catch{throw new Error("[189Cloud] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function YF(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function $F(r){return{name:r.name,size:0,is_dir:!0,modified:YF(r.lastOpTime),sign:String(r.id),type:1,thumb:"",raw_url:""}}function VF(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:YF(r.lastOpTime),sign:String(r.id),type:X(r.name,!1),thumb:r.icon?.smallUrl||r.icon?.largeUrl||"",raw_url:""}}function EV(r){let e={...r||{}};return e.username=e.username||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||"-11",e.order_by=e.order_by||"lastOpTime",e.order_direction=e.order_direction||"desc",e}var wV,xV,uy,WF=J(()=>{"use strict";ve();$e();JF();ly();wV=45,xV=10*1024*1024;uy=class{client;addition;pathIdCache=new Map;budget={used:0,limit:wV};constructor(e,t){this.addition=EV(e),this.client=new dy(this.addition,t)}async init(){await this.client.login()}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,a=t,o="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)a=d,s=c+1,o=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),{folders:u}=await this.client.getFiles(a,{findName:d,findIsDir:!0,budget:this.budget}),f=u.find(A=>A.name===l||A.name===d||String(A.id)===l||String(A.id)===d);if(!f)throw new Error(`[189Cloud] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);a=String(f.id),o="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(o,a)}return a}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[189Cloud] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),a=await this.resolveFolderId(s),{files:o,folders:c}=await this.client.getFiles(a,{findName:n,budget:this.budget}),l=o.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(l)return{file:l,parentId:a,isDir:!1};let d=c.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(d)return{file:d,parentId:a,isDir:!0};throw new Error(`[189Cloud] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),{files:n,folders:s}=await this.client.getFiles(i,{budget:this.budget}),a=[...s.map($F),...n.map(VF)];return ue(a,this.addition.order_by==="filename"?"file_name":this.addition.order_by==="fileSize"?"size":"updated_at",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let o=this.client.getRootId();return{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}let{file:n,isDir:s}=await this.resolveFile(t);if(s)return $F(n);let a=VF(n);try{a.raw_url=await this.client.getDownloadUrl(String(n.id)),a.raw_url_headers=this.client.getDownloadHeaders()}catch(o){console.warn(`[189Cloud] \u83B7\u53D6 ${n.name} \u4E0B\u8F7D\u5730\u5740\u5931\u8D25:`,o.message)}return a}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFolderId(s);await this.client.mkdir(a,n)}async rename(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.rename(String(n.id),s,i)}async remove(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.remove(String(n.id),s,n.name)}async move(e,t,i,n,s){this.budget.used=0;let{file:a,isDir:o}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(String(a.id),o,a.name,l)}async copy(e,t,i,n,s){this.budget.used=0;let{file:a,isDir:o}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.copy(String(a.id),o,a.name,l)}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[189Cloud] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let a="/"+n.join("/"),o=await this.createUploadSession(a,a,s,i.length,Hd(i));if(o.reuse)return;let c=[];for(let l=1;l<=o.partCount;l++){let d=(l-1)*o.chunkSize,u=i.subarray(d,Math.min(d+o.chunkSize,i.length)),f=await this.uploadPart(o.session,l,u);c.push(f.partMd5)}await this.completeUploadSession(o.session,c)}async createUploadSession(e,t,i,n,s){let a=xV,o=String(s||"").trim().toLowerCase();if(!/^[a-f0-9]{32}$/.test(o))return{reuse:!1,requiresMd5:!0,partCount:0,chunkSize:a,session:""};this.budget.used=0;let c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/a)),l=await this.resolveFolderId(t||"/"),d=await this.client.createMultiUpload(l,i,Math.max(0,Number(n)||0),o);return d.fileDataExists?(await this.client.commitMultiUpload(d.uploadFileId,o,o),{reuse:!0,partCount:0,chunkSize:a,session:""}):{reuse:!1,partCount:c,chunkSize:a,session:CV({uploadFileId:d.uploadFileId,sessionKey:d.sessionKey,fileMd5:o,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:a})}}async uploadPart(e,t,i){let n=jF(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[189Cloud] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);this.client.setSessionKey(n.sessionKey);let s=await this.client.getMultiUploadUrls(n.uploadFileId,t,i),a={};if(s.requestHeader){let c=s.requestHeader;try{c=decodeURIComponent(c)}catch{}for(let l of c.split("&")){let d=l.indexOf("=");d<=0||(a[l.slice(0,d)]=l.slice(d+1))}}let o=await fetch(s.requestURL,{method:"PUT",headers:a,body:i});if(!o.ok){let c=await o.text().catch(()=>"");throw new Error(`[189Cloud] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25: HTTP ${o.status} ${c}`)}return{partMd5:Hd(i)}}async completeUploadSession(e,t=[]){let i=jF(e);this.client.setSessionKey(i.sessionKey);let n=t.map(a=>String(a||"").trim().toLowerCase()).filter(a=>/^[a-f0-9]{32}$/.test(a));if(n.length!==i.partCount)throw new Error("[189Cloud] \u5206\u7247\u6821\u9A8C\u4FE1\u606F\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u4E0A\u4F20");let s=i.partCount===1?i.fileMd5:Hd(n.join(` +`)).toUpperCase();await this.client.commitMultiUpload(i.uploadFileId,i.fileMd5,s)}}});function SV(){return{clientType:vV,version:bV,channelId:kV,clientSn:"unknown",model:"PJX110",osFamily:"Android",osVersion:"35",networkAccessMode:"WIFI",telecomsOperator:"46011"}}function ZF(r){try{return new URL(r).pathname}catch{return r}}function DV(r,e,t,i,n){let s=`SessionKey=${e}&Operate=${t}&RequestURI=${ZF(i)}&Date=${n}`;return wh(s,r).toUpperCase()}function _V(r,e,t,i,n){let s=`AppKey=${e}&Operate=${t}&RequestURI=${ZF(i)}&Timestamp=${n}`;return wh(s,r).toUpperCase()}function QV(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function FV(r){let e=r.res_code;return typeof e=="number"?e!==0:typeof e=="string"?e!==""&&e!=="0":!!(r.code&&r.code!=="SUCCESS"||r.errorCode||r.error)}function PV(r){switch(r){case"filename":return"1";case"filesize":return"2";case"lastOpTime":return"3";default:return"1"}}function TV(r){return r==="desc"?"true":"false"}var XF,BV,bV,vV,kV,en,LB,fy,eP=J(()=>{"use strict";ly();XF="600100885",BV="fe5734c74c2f96a38157f420b32dc995",bV="6.5.5",vV="FAMILY_TV",kV="home02",en="https://api.cloud.189.cn",LB="EcloudTV/6.5.5 (PJX110; unknown; home02) Android/35";fy=class{addition;tokenInfo=null;persistAccessToken;constructor(e,t){this.addition=e,this.persistAccessToken=t}isFamily(){return this.addition.type==="family"}getFamilyId(){return this.addition.family_id||""}async init(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF1A\u8BF7\u5148\u5728\u522B\u5904\u626B\u7801\u767B\u5F55\u83B7\u53D6 access_token \u540E\u586B\u5165\u914D\u7F6E");await this.login()}signatureHeader(e,t,i){let n=new Date().toUTCString(),s=i?this.tokenInfo?.familySessionKey||"":this.tokenInfo?.sessionKey||"",a=i?this.tokenInfo?.familySessionSecret||"":this.tokenInfo?.sessionSecret||"";return{Date:n,SessionKey:s,"X-Request-ID":Kd(),Signature:DV(a,s,t,e,n)}}appKeySignatureHeader(e,t){let i=Date.now();return{Timestamp:String(i),"X-Request-ID":Kd(),AppKey:XF,AppSignature:_V(BV,XF,t,e,i)}}async request(e,t,i={}){let{query:n,form:s,isFamily:a=!1,isAppKey:o=!1}=i,c=i.retryCount??0,l=new URL(e);for(let[p,I]of Object.entries(SV()))l.searchParams.set(p,I);if(n)for(let[p,I]of Object.entries(n))I!==void 0&&l.searchParams.set(p,I);let d={Accept:"application/json;charset=UTF-8","User-Agent":LB};o?Object.assign(d,this.appKeySignatureHeader(e,t)):Object.assign(d,this.signatureHeader(e,t,a));let u;s&&(d["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(s).toString());let A=await(await fetch(l.toString(),{method:t,headers:d,body:u})).text();if(A.includes("userSessionBO is null")||A.includes("InvalidSessionKey")){if(c>=3)throw new Error("[189TV] session expired after retry");return await this.login(),this.request(e,t,{...i,retryCount:c+1})}let g;try{g=QV(A)}catch{throw new Error(`[189TV] \u975E\u9884\u671F\u54CD\u5E94: ${A.slice(0,200)}`)}if(FV(g))throw new Error(`[189TV] API \u9519\u8BEF: ${g.res_message||g.errorMsg||g.msg||A.slice(0,200)}`);return g}async login(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u767B\u5F55");let e=await this.request(en+"/family/manage/loginFamilyMerge.action","GET",{query:{e189AccessToken:this.addition.access_token},isAppKey:!0});this.tokenInfo=e,e.accessToken&&e.accessToken!==this.addition.access_token&&(this.addition.access_token=e.accessToken,this.persistAccessToken&&await this.persistAccessToken(e.accessToken))}async getFiles(e,t){let n=(t?en+"/family/file":en)+"/listFiles.action",s=this.addition.order_by||"lastOpTime",a=TV(this.addition.order_direction||"asc"),o=[];for(let c=1;;c++){let l={folderId:e,fileType:"0",mediaAttr:"0",iconOption:"5",pageNum:String(c),pageSize:"130"};t?(l.familyId=this.addition.family_id||"",l.orderBy=PV(s),l.descending=a):(l.recursive="0",l.orderBy=s,l.descending=a);let u=(await this.request(n,"GET",{query:l,isFamily:t})).fileListAO;if(!u||Number(u.count)===0)break;let f=u.folderList||[],A=u.fileList||[];if(o.push(...f,...A),f.length+A.length<130)break}return o}async getFileDownloadUrl(e,t){let n=(t?en+"/family/file":en)+"/getFileDownloadUrl.action",s={fileId:e};t?s.familyId=this.addition.family_id||"":(s.dt="3",s.flag="1");let o=(await this.request(n,"GET",{query:s,isFamily:t})).fileDownloadUrl||"";if(!o)throw new Error("[189TV] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");o=o.replace(/&/g,"&").replace(/^http:\/\//i,"https://");try{let c=await fetch(o,{method:"GET",headers:{"User-Agent":LB},redirect:"manual"}),l=c.headers.get("location");c.status===302&&l&&(o=l.replace(/^http:\/\//i,"https://"))}catch{}return o}async mkdir(e,t,i){let s=(i?en+"/family/file":en)+"/createFolder.action",a={folderName:t,relativePath:""};i?(a.familyId=this.addition.family_id||"",a.parentId=e):a.parentFolderId=e,await this.request(s,"POST",{query:a,isFamily:i})}async rename(e,t,i,n){let s=n?en+"/family/file":en,a=n?"GET":"POST",c=s+(t?"/renameFolder.action":"/renameFile.action"),l={};n&&(l.familyId=this.addition.family_id||""),t?(l.folderId=e,l.destFolderName=i):(l.fileId=e,l.destFileName=i),await this.request(c,a,{query:l,isFamily:n})}async createBatchTask(e,t,i,n){let s={type:e,taskInfos:JSON.stringify(n)};i&&(s.targetFolderId=i),t&&(s.familyId=t);let a=await this.request(en+"/batch/createBatchTask.action","POST",{form:s,isFamily:t!==""});if(!a.taskId)throw new Error("[189TV] \u521B\u5EFA\u6279\u91CF\u4EFB\u52A1\u5931\u8D25");return a.taskId}async waitBatchTask(e,t){for(let i=0;i<20;i++){let s=(await this.request(en+"/batch/checkBatchTask.action","POST",{form:{type:e,taskId:t}})).taskStatus;if(s===4)return;if(s===2)throw new Error("[189TV] \u76EE\u6807\u5B58\u5728\u540C\u540D\u51B2\u7A81");await new Promise(a=>setTimeout(a,300))}throw new Error("[189TV] \u6279\u91CF\u4EFB\u52A1\u8D85\u65F6")}async move(e,t,i,n,s){let a=await this.createBatchTask("MOVE",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("MOVE",a)}async copy(e,t,i,n,s){let a=await this.createBatchTask("COPY",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("COPY",a)}async remove(e,t,i,n){let s=await this.createBatchTask("DELETE",n&&this.addition.family_id||"","",[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("DELETE",s)}async upload(e,t,i,n){let s=Hd(i),a=i.length,c=(n?en+"/family/file":en)+(n?"/createFamilyFile.action":"/createUploadFile.action"),l;n?l=await this.request(c,"POST",{query:{familyId:this.addition.family_id||"",parentId:e,fileMd5:s,fileName:t,fileSize:String(a),resumePolicy:"1"},isFamily:n}):l=await this.request(c,"POST",{form:{parentFolderId:e,fileName:t,size:String(a),md5:s,opertype:"3",flag:"1",resumePolicy:"1",isLog:"0"},isFamily:n});let d=l.uploadFileId,u=l.fileUploadUrl,f=l.fileCommitUrl;if(!d||!u)throw new Error("[189TV] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25");let A={ResumePolicy:"1",Expect:"100-continue","User-Agent":LB};n?(A.FamilyId=this.addition.family_id||"",A.UploadFileId=String(d)):A["Edrive-UploadFileId"]=String(d),Object.assign(A,this.signatureHeader(u,"PUT",n));let g=await fetch(u,{method:"PUT",headers:A,body:new Uint8Array(i)});if(g.status!==200)throw new Error(`[189TV] \u4E0A\u4F20\u5931\u8D25: HTTP ${g.status}`);n?await this.request(f,"POST",{query:{ResumePolicy:"1",UploadFileId:String(d),FamilyId:this.addition.family_id||""},isFamily:n}):await this.request(f,"POST",{form:{opertype:"3",resumePolicy:"1",uploadFileId:String(d),isLog:"0"},isFamily:n})}}});function tP(r){if(!r)return new Date().toISOString();let e=r.trim().replace(/["']/g,""),t=e.replace(/ +08$/,"+08:00"),i=new Date(t);return isNaN(i.getTime())?e:i.toISOString()}function rP(r){if("parentId"in r||!("size"in r)){let t=r;return{name:t.name,size:0,is_dir:!0,modified:tP(t.lastOpTime||t.createDate),sign:t.id,type:1}}let e=r;return{name:e.name,size:e.size,is_dir:!1,modified:tP(e.lastOpTime||e.createDate),sign:e.id,type:X(e.name,!1),thumb:e.icon?.smallUrl||"",raw_url:""}}var hy,iP=J(()=>{"use strict";ve();eP();hy=class{client;pathCache=new Map;constructor(e,t){this.client=new fy(e,t)}async init(){await this.client.init()}isFamily(){return this.client.isFamily()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i,this.isFamily())).map(rP)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=await this.pathToId(s),c=(await this.client.getFiles(a,this.isFamily())).find(l=>l.name===n);if(c){let l=rP(c);if(!l.is_dir)try{l.raw_url=await this.client.getFileDownloadUrl(c.id,this.isFamily()),l.raw_url_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}}catch{l.raw_url_error="[189TV] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n,this.isFamily()),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,n.isDir,i,this.isFamily()),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t),s=t.split("/").filter(Boolean).pop()||"";await this.client.remove(n.id,n.isDir,s,this.isFamily()),this.pathCache.clear()}async move(e,t,i,n,s){let a=await this.resolveEntry(n),o=n.split("/").filter(Boolean).pop()||"";await this.client.move(a.id,a.isDir,o,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async copy(e,t,i,n,s){let a=await this.resolveEntry(n),o=n.split("/").filter(Boolean).pop()||"";await this.client.copy(a.id,a.isDir,o,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",a="/"+n.join("/");await this.client.upload(await this.pathToId(a),s,new Uint8Array(i),this.isFamily()),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),o=(await this.client.getFiles(s,this.isFamily())).find(l=>l.name===i);if(!o)throw new Error(`[189TV] '${i}' not found`);let c="parentId"in o||!("size"in o);return{id:o.id,isDir:c}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.isFamily()?"":"-11";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.isFamily()?"":"-11";for(let s=0;s<i.length;s++){let o=(await this.client.getFiles(n,this.isFamily())).find(l=>l.name===i[s]&&"parentId"in l);if(!o)throw new Error(`[189TV] Directory '${i[s]}' not found`);n=o.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function ha(r,e){let t=r.replace(/\/+$/,""),i=e.replace(/^\/+/,"");return!t&&!i?"/":t?i?`${t}/${i}`:t:"/"+i}function UV(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function nP(r,e){let t=[],i,n=/<(?:[a-zA-Z0-9_-]+:)?response\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?response>/gi,s;for(;(s=n.exec(r))!==null;){let a=s[1],o=/<(?:[a-zA-Z0-9_-]+:)?href\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?href>/i.exec(a);if(!o)continue;let c=o[1].trim(),l=c;try{l=decodeURIComponent(c)}catch{}let d=/<(?:[a-zA-Z0-9_-]+:)?propstat\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?propstat>/gi,u,f="";for(;(u=d.exec(a))!==null;){let E=u[1],P=/<(?:[a-zA-Z0-9_-]+:)?status\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?status>/i.exec(E),N=P?P[1]:"";if(N.includes("200")||N.toLowerCase().includes("ok")){let j=/<(?:[a-zA-Z0-9_-]+:)?prop\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?prop>/i.exec(E);if(j){f=j[1];break}}}if(!f)continue;let A=/<(?:[a-zA-Z0-9_-]+:)?resourcetype\b[^>]*>[\s\S]*?<(?:[a-zA-Z0-9_-]+:)?collection\b/i.test(f),g=/<(?:[a-zA-Z0-9_-]+:)?displayname\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?displayname>/i.exec(f),p=g?g[1].trim():"",I=l.replace(/\/+$/,""),m=I&&I.split("/").pop()||"",w=p||m,B=/<(?:[a-zA-Z0-9_-]+:)?getcontentlength\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontentlength>/i.exec(f),C=A?0:B&&parseInt(B[1].trim(),10)||0,x=/<(?:[a-zA-Z0-9_-]+:)?getlastmodified\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getlastmodified>/i.exec(f),_=new Date().toISOString();if(x){let E=new Date(x[1].trim());isNaN(E.getTime())||(_=E.toISOString())}let R=/<(?:[a-zA-Z0-9_-]+:)?getcontenttype\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontenttype>/i.exec(f),U=R?R[1].trim():void 0,T=/<(?:[a-zA-Z0-9_-]+:)?getetag\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getetag>/i.exec(f),D=T?T[1].trim().replace(/^"|"$/g,""):void 0,b={name:w,path:l,size:C,modified:_,isFolder:A,contentType:U,etag:D},Q=e.replace(/\/+$/,"").toLowerCase(),v=I.toLowerCase();!i&&(v===Q||v.endsWith(Q)||Q===""&&v==="")?i=b:t.push(b)}return{self:i,items:t}}function RV(r){let e={},t=r.replace(/^digest\s+/i,"").split(/,\s*/);for(let i of t){let n=i.indexOf("=");if(n!==-1){let s=i.slice(0,n).trim(),a=i.slice(n+1).trim().replace(/^"|"$/g,"");s==="realm"?e.realm=a:s==="nonce"?e.nonce=a:s==="qop"?e.qop=a:s==="opaque"?e.opaque=a:s==="algorithm"&&(e.algorithm=a)}}return e}function sP(r,e,t,i,n,s=1){let a=s.toString(16).padStart(8,"0"),o=Math.random().toString(36).substring(2,18),c=r.realm||"",l=r.nonce||"",d=(r.algorithm||"MD5").toUpperCase(),u=r.qop||"",f="";if(d==="MD5"||d==="")f=nl.default.MD5(`${e}:${c}:${t}`).toString();else if(d==="MD5-SESS"){let I=nl.default.MD5(`${e}:${c}:${t}`).toString();f=nl.default.MD5(`${I}:${l}:${o}`).toString()}let A="";(u==="auth"||u==="")&&(A=nl.default.MD5(`${i}:${n}`).toString());let g="";u?g=nl.default.MD5(`${f}:${l}:${a}:${o}:${u}:${A}`).toString():g=nl.default.MD5(`${f}:${l}:${A}`).toString();let p=`Digest username="${e}", realm="${c}", nonce="${l}", uri="${n}", response="${g}"`;return d&&(p+=`, algorithm=${d}`),u&&(p+=`, qop=${u}, nc=${a}, cnonce="${o}"`),r.opaque&&(p+=`, opaque="${r.opaque}"`),p}async function OV(r,e,t){let i=new URL(t),n=i.hostname.split("."),s=n[n.length-1],o=`${NV[s]||"https://login.microsoftonline.com"}/extSTS.srf`,c=`<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <s:Header> @@ -87,7 +89,7 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <a:ReplyTo> <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> </a:ReplyTo> -<a:To s:mustUnderstand="1">${a}</a:To> +<a:To s:mustUnderstand="1">${o}</a:To> <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <o:UsernameToken> @@ -108,7 +110,7 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType> </t:RequestSecurityToken> </s:Body> -</s:Envelope>`,l=await fetch(a,{method:"POST",headers:{"Content-Type":"application/soap+xml; charset=utf-8"},body:c});if(!l.ok)throw new Error(`SharePoint SAML auth failed with HTTP ${l.status}`);let d=await l.text(),u=/<(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken>/i.exec(d);if(!u){let w=/<(?:[a-zA-Z0-9_-]+:)?Text\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?Text>/i.exec(d),C=w?w[1]:"Failed to obtain BinarySecurityToken";throw new Error(`SharePoint login failed: ${C}`)}let f=u[1].trim(),h=`https://${i.host}/_forms/default.aspx?wa=wsignin1.0`,g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f,redirect:"manual"}),p="",I="",y=w=>{let C=[];if(w.headers.getSetCookie)C.push(...w.headers.getSetCookie());else{let b=w.headers.get("set-cookie");b&&C.push(b)}for(let b of C){let x=/rtFa=([^;]+)/.exec(b);x&&(p=x[1]);let _=/FedAuth=([^;]+)/.exec(b);_&&(I=_[1])}};if(y(g),!p||!I){let w=g.headers.get("location");if(w){let C=new URL(w,h).toString(),b=await fetch(C,{method:"GET",headers:{Cookie:`rtFa=${p}; FedAuth=${I}`},redirect:"manual"});y(b)}}if(!p&&!I)throw new Error("SharePoint auth failed: rtFa / FedAuth cookies not returned");return`rtFa=${p}; FedAuth=${I}`}var hc,zz,_p,c8=j(()=>{"use strict";hc=Qr(fc(),1);zz={com:"https://login.microsoftonline.com",cn:"https://login.chinacloudapi.cn",us:"https://login.microsoftonline.us",de:"https://login.microsoftonline.de"};_p=class{address;username;password;isSharepoint;sharepointCookie="";digestParts=null;ncCount=0;constructor(e){this.address=e.address.replace(/\/+$/,""),this.username=e.username||"",this.password=e.password||"",this.isSharepoint=e.vendor==="sharepoint"}async init(){this.isSharepoint&&(this.sharepointCookie=await Jz(this.username,this.password,this.address))}buildUrl(e){let t=e.replace(/^\/+/,"");return t?`${this.address}/${Kz(t)}`:this.address}getAuthHeaders(e,t){let i={};if(this.isSharepoint&&this.sharepointCookie)i.Cookie=this.sharepointCookie;else if(this.digestParts)this.ncCount++,i.Authorization=a8(this.digestParts,this.username,this.password,e,t,this.ncCount);else if(this.username||this.password){let n=btoa(unescape(encodeURIComponent(`${this.username}:${this.password}`)));i.Authorization=`Basic ${n}`}return i}async request(e,t,i={}){let n=this.buildUrl(t),s=new URL(n),o=s.pathname+s.search,c={...this.getAuthHeaders(e,o),...i.headers||{}},l=await fetch(n,{method:e,headers:c,body:i.body,redirect:i.redirect||"follow"});if(l.status===401&&!this.isSharepoint){let d=l.headers.get("www-authenticate")||"";if(/digest/i.test(d)){this.digestParts=Gz(d),this.ncCount=1;let u=a8(this.digestParts,this.username,this.password,e,o,this.ncCount),f={...c,Authorization:u};l=await fetch(n,{method:e,headers:f,body:i.body,redirect:i.redirect||"follow"})}}return l}async readDir(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"1","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> +</s:Envelope>`,l=await fetch(o,{method:"POST",headers:{"Content-Type":"application/soap+xml; charset=utf-8"},body:c});if(!l.ok)throw new Error(`SharePoint SAML auth failed with HTTP ${l.status}`);let d=await l.text(),u=/<(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken>/i.exec(d);if(!u){let w=/<(?:[a-zA-Z0-9_-]+:)?Text\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?Text>/i.exec(d),B=w?w[1]:"Failed to obtain BinarySecurityToken";throw new Error(`SharePoint login failed: ${B}`)}let f=u[1].trim(),A=`https://${i.host}/_forms/default.aspx?wa=wsignin1.0`,g=await fetch(A,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f,redirect:"manual"}),p="",I="",m=w=>{let B=[];if(w.headers.getSetCookie)B.push(...w.headers.getSetCookie());else{let C=w.headers.get("set-cookie");C&&B.push(C)}for(let C of B){let x=/rtFa=([^;]+)/.exec(C);x&&(p=x[1]);let _=/FedAuth=([^;]+)/.exec(C);_&&(I=_[1])}};if(m(g),!p||!I){let w=g.headers.get("location");if(w){let B=new URL(w,A).toString(),C=await fetch(B,{method:"GET",headers:{Cookie:`rtFa=${p}; FedAuth=${I}`},redirect:"manual"});m(C)}}if(!p&&!I)throw new Error("SharePoint auth failed: rtFa / FedAuth cookies not returned");return`rtFa=${p}; FedAuth=${I}`}var nl,NV,Ay,aP=J(()=>{"use strict";nl=Qr(Ao(),1);NV={com:"https://login.microsoftonline.com",cn:"https://login.chinacloudapi.cn",us:"https://login.microsoftonline.us",de:"https://login.microsoftonline.de"};Ay=class{address;username;password;isSharepoint;sharepointCookie="";digestParts=null;ncCount=0;constructor(e){this.address=e.address.replace(/\/+$/,""),this.username=e.username||"",this.password=e.password||"",this.isSharepoint=e.vendor==="sharepoint"}async init(){this.isSharepoint&&(this.sharepointCookie=await OV(this.username,this.password,this.address))}buildUrl(e){let t=e.replace(/^\/+/,"");return t?`${this.address}/${UV(t)}`:this.address}getAuthHeaders(e,t){let i={};if(this.isSharepoint&&this.sharepointCookie)i.Cookie=this.sharepointCookie;else if(this.digestParts)this.ncCount++,i.Authorization=sP(this.digestParts,this.username,this.password,e,t,this.ncCount);else if(this.username||this.password){let n=btoa(unescape(encodeURIComponent(`${this.username}:${this.password}`)));i.Authorization=`Basic ${n}`}return i}async request(e,t,i={}){let n=this.buildUrl(t),s=new URL(n),a=s.pathname+s.search,c={...this.getAuthHeaders(e,a),...i.headers||{}},l=await fetch(n,{method:e,headers:c,body:i.body,redirect:i.redirect||"follow"});if(l.status===401&&!this.isSharepoint){let d=l.headers.get("www-authenticate")||"";if(/digest/i.test(d)){this.digestParts=RV(d),this.ncCount=1;let u=sP(this.digestParts,this.username,this.password,e,a,this.ncCount),f={...c,Authorization:u};l=await fetch(n,{method:e,headers:f,body:i.body,redirect:i.redirect||"follow"})}}return l}async readDir(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"1","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> <d:propfind xmlns:d="DAV:"> <d:prop> <d:displayname/> @@ -118,7 +120,7 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <d:getetag/> <d:getlastmodified/> </d:prop> -</d:propfind>`});if(i.status===404)throw new Error(`Directory not found: ${e}`);if(i.status!==207&&!i.ok){let o=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${o||i.statusText}`)}let n=await i.text(),{items:s}=o8(n,e);return s}async stat(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"0","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> +</d:propfind>`});if(i.status===404)throw new Error(`Directory not found: ${e}`);if(i.status!==207&&!i.ok){let a=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${a||i.statusText}`)}let n=await i.text(),{items:s}=nP(n,e);return s}async stat(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"0","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> <d:propfind xmlns:d="DAV:"> <d:prop> <d:displayname/> @@ -128,18 +130,18 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <d:getetag/> <d:getlastmodified/> </d:prop> -</d:propfind>`});if(i.status===404)throw new Error(`Object not found: ${e}`);if(i.status!==207&&!i.ok){let c=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${c||i.statusText}`)}let n=await i.text(),{self:s,items:o}=o8(n,e),a=s||o[0];if(!a)throw new Error(`Object not found in PROPFIND response: ${e}`);return a}async mkdir(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405))throw new Error(`WebDAV MKCOL failed with status ${t.status}`)}async mkdirAll(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405)){if(t.status===409){let i=e.split("/").filter(Boolean),n="";for(let s of i){n+="/"+s;let o=await this.request("MKCOL",n);if(o.status!==201&&o.status!==405)throw new Error(`WebDAV MkdirAll failed at ${n} with status ${o.status}`)}return}throw new Error(`WebDAV MkdirAll failed with status ${t.status}`)}}async move(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("MOVE",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.move(e,t,i)}throw new Error(`WebDAV MOVE failed with status ${s.status}`)}}async copy(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("COPY",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.copy(e,t,i)}throw new Error(`WebDAV COPY failed with status ${s.status}`)}}async remove(e){let t=await this.request("DELETE",e);if(!(t.status===200||t.status===204||t.status===404))throw new Error(`WebDAV DELETE failed with status ${t.status}`)}async put(e,t,i){let n={};i&&(n["Content-Type"]=i);let s=await this.request("PUT",e,{headers:n,body:t});if(!(s.status===200||s.status===201||s.status===204)){if(s.status===409){let o=e.substring(0,e.lastIndexOf("/"));if(o&&(await this.mkdirAll(o),s=await this.request("PUT",e,{headers:n,body:t}),s.status===200||s.status===201||s.status===204))return}throw new Error(`WebDAV PUT failed with status ${s.status}`)}}getLink(e){let t=this.buildUrl(e),i=new URL(t),n=i.pathname+i.search,s=this.getAuthHeaders("GET",n);return{url:t,headers:s}}}});function jz(r){let e={...r||{}};return e.vendor=e.vendor||"other",e.address=(e.address||"").trim(),e.username=(e.username||"").trim(),e.password=e.password||"",e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.tls_insecure_skip_verify=!!e.tls_insecure_skip_verify,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var Fp,l8=j(()=>{"use strict";Be();He();c8();Fp=class{client;addition;constructor(e){this.addition=jz(e),this.client=new _p(this.addition)}async init(){await this.client.init()}getRemotePath(e){let t=this.addition.root_folder_path||"/";return Rs(t,e||"/")}fileItemFromWebdav(e,t){let i=this.client.getLink(t);return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:"",type:X(e.name,e.isFolder),thumb:"",raw_url:e.isFolder?void 0:i.url,raw_url_headers:e.isFolder?void 0:i.headers}}async list(e,t){let i=this.getRemotePath(t),s=(await this.client.readDir(i)).map(o=>{let a=Rs(i,o.name);return this.fileItemFromWebdav(o,a)});return de(s,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){let i=this.getRemotePath(t),n=await this.client.stat(i);return this.fileItemFromWebdav(n,i)}async mkdir(e,t){let i=this.getRemotePath(t);await this.client.mkdirAll(i)}async rename(e,t,i){let n=this.getRemotePath(t),s=n.lastIndexOf("/"),o=s>=0?n.substring(0,s):"/",a=Rs(o,i);await this.client.move(n,a,!0)}async move(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Rs(o,c),d=Rs(a,c);await this.client.move(l,d,!0)}}async copy(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Rs(o,c),d=Rs(a,c);await this.client.copy(l,d,!0)}}async remove(e,t,i){let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=Rs(n,s);await this.client.remove(o)}else await this.client.remove(n)}async put(e,t,i){let n=this.getRemotePath(t);await this.client.put(n,i)}}});var Xi,Pp,d8,u8,KC,GC,Jo,zC,f8,A8,h8,g8,p8,m8,y8,I8,w8,x8,C8,E8,B8,b8,v8,JC,Tp=j(()=>{"use strict";Xi="1001000021",Pp="XFmi9GS2hzk98jGX",d8="10000001",u8="https://panservice.mail.wo.cn",KC="https://tjupload.pan.wo.cn",GC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37",Jo="api-user",zC="wohome",f8="wocloud",A8="AppQueryUser",h8="AppRefreshToken",g8="QueryCloudUsageInfo",p8="ClassifyRule",m8="GetZoneInfo",y8="FamilyUserCurrentEncode",I8="QueryAllFiles",w8="GetDownloadUrlV2",x8="CreateDirectory",C8="RenameFileOrDirectory",E8="MoveFile",B8="CopyFile",b8="DeleteFile",v8="upload2C",JC={name_asc:1,name_desc:2,size_asc:3,size_desc:4,time_asc:5,time_desc:6}});var hi,$z,Up,k8=j(()=>{"use strict";hi=Qr(fc(),1);Tp();$z="wNSOYIB1k1DjY5lA",Up=class{key=Pp;iv=$z;accessKey="";constructor(e){e&&this.setAccessToken(e)}setAccessToken(e){e&&e.length>=16?this.accessKey=e.slice(0,16):e&&(this.accessKey=e)}encrypt(e,t){let i=t===Jo?this.key:this.accessKey||this.key,n=hi.default.enc.Utf8.parse(i),s=hi.default.enc.Utf8.parse(this.iv);return hi.default.AES.encrypt(hi.default.enc.Utf8.parse(e),n,{iv:s,mode:hi.default.mode.CBC,padding:hi.default.pad.Pkcs7}).toString()}decrypt(e,t){let i=t===Jo?this.key:this.accessKey||this.key,n=hi.default.enc.Utf8.parse(i),s=hi.default.enc.Utf8.parse(this.iv);return hi.default.AES.decrypt(e,n,{iv:s,mode:hi.default.mode.CBC,padding:hi.default.pad.Pkcs7}).toString(hi.default.enc.Utf8)}userEncrypt(e){return this.encrypt(e,Jo)}userDecrypt(e){return this.decrypt(e,Jo)}woHomeEncrypt(e){return this.encrypt(e,"wohome")}woHomeDecrypt(e){return this.decrypt(e,"wohome")}calHeader(e,t){let i=Date.now(),n=Math.floor(Math.random()*8999)+1e5,s="",o=hi.default.MD5(`${t}${i}${n}${e}${s}`).toString();return{key:t,resTime:i,reqSeq:n,channel:e,sign:o,version:s}}}});function Vz(r){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function Yz(r=new Date){let e=c=>String(c).padStart(2,"0"),t=r.getFullYear(),i=e(r.getMonth()+1),n=e(r.getDate()),s=e(r.getHours()),o=e(r.getMinutes()),a=e(r.getSeconds());return`${t}${i}${n}${s}${o}${a}`}var Rp,S8=j(()=>{"use strict";Tp();k8();Rp=class{addition;accessToken;refreshTokenValue;phone="";zoneURL="";classifyRuleData=null;crypto;onTokenUpdate;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t,this.crypto=new Up(this.accessToken)}getAccessToken(){return this.accessToken}getRefreshToken(){return this.refreshTokenValue}setAccessToken(e){this.accessToken=e,this.crypto.setAccessToken(e)}setRefreshToken(e){this.refreshTokenValue=e}async request(e,t,i,n={},s=!0){let o=this.crypto.calHeader(e,t),a={...n};if(i!=null){let g=JSON.stringify(i),p=this.crypto.encrypt(g,e);a.param=p}let c={Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":GC,"Content-Type":"application/json;charset=UTF-8"};this.accessToken&&(c.Accesstoken=this.accessToken);let l=`${u8}/${e}/dispatcher`,d=await fetch(l,{method:"POST",headers:c,body:JSON.stringify({header:o,body:a})});if(!d.ok)throw new Error(`[WoPan] Request failed with HTTP status: ${d.status} ${d.statusText}`);let u=await d.json().catch(()=>null);if(!u)throw new Error(`[WoPan] Response is not valid JSON from ${t}`);if(u.STATUS!=="200")throw new Error(`[WoPan] Request failed with status: ${u.STATUS}, msg: ${u.MSG||""}`);let f=u.RSP?.RSP_CODE;if(f!=="0000"){if(e!==Jo&&s&&f==="9999")return await this.refreshToken(),this.request(e,t,i,n,!1);throw new Error(`[WoPan] Request failed with rsp_code: ${f}, rsp_desc: ${u.RSP?.RSP_DESC||""}`)}let h=u.RSP?.DATA;if(h==null)return{};if(typeof h=="string"){let g=h.trim();g.startsWith('"')&&g.endsWith('"')&&(g=g.slice(1,-1));try{let p=this.crypto.decrypt(g,e);if(p)return JSON.parse(p)}catch{try{return JSON.parse(g)}catch{return g}}}return h}async requestApiUser(e,t,i={}){return this.request(Jo,e,t,i)}async requestWoHome(e,t,i={}){return this.request(zC,e,t,i)}async appRefreshToken(){return await this.requestApiUser(h8,{refreshToken:this.refreshTokenValue,clientSecret:Pp},{clientId:Xi,secret:!0})}async refreshToken(){let e=await this.appRefreshToken();if(!e.access_token)throw new Error("[WoPan] Failed to refresh token: empty access_token");this.setAccessToken(e.access_token),e.refresh_token&&this.setRefreshToken(e.refresh_token),this.onTokenUpdate?.(this.accessToken,this.refreshTokenValue)}async appQueryUser(){return this.requestApiUser(A8,{accessToken:this.accessToken},{clientId:Xi,secret:!0})}async initPhone(){if(this.phone)return;let e=await this.appQueryUser();e?.userId&&(this.phone=e.userId)}async classifyRule(){return this.requestWoHome(p8,{},{key:!0})}async initClassifyRule(){if(this.classifyRuleData)return;let e=await this.classifyRule().catch(()=>null);e&&(this.classifyRuleData=e)}async getZoneInfo(){return this.requestWoHome(m8,{appId:d8},{key:!0})}async initZoneURL(){if(this.zoneURL)return;let e=await this.getZoneInfo().catch(()=>null);this.zoneURL=e?.url||KC}async familyUserCurrentEncode(){return this.requestWoHome(y8,{clientId:Xi},{secret:!0})}async initData(){!this.accessToken&&this.refreshTokenValue&&await this.refreshToken(),await this.initPhone().catch(()=>{}),await this.initClassifyRule().catch(()=>{}),await this.initZoneURL().catch(()=>{})}getFileType(e){let t=(e.split(".").pop()||"").toLowerCase();return t&&this.classifyRuleData?.fileTypes?.[t]?this.classifyRuleData.fileTypes[t].type:"5"}async queryAllFiles(e,t,i,n,s,o=""){let a={spaceType:e,parentDirectoryId:t,pageNum:i,pageSize:n,sortRule:s,clientId:Xi};return e==="1"&&o&&(a.familyId=o),this.requestWoHome(I8,a,{secret:!0})}async getDownloadUrlV2(e){let t={type:"1",fidList:e,clientId:Xi};return this.requestWoHome(w8,t,{secret:!0})}async createDirectory(e,t,i,n=""){let s={spaceType:e,familyId:n,parentDirectoryId:t,directoryName:i,clientId:Xi};return this.requestWoHome(x8,s,{secret:!0})}async renameFileOrDirectory(e,t,i,n,s=""){let o=t===0?"0":this.getFileType(n),a={spaceType:e,type:t,fileType:o,id:i,name:n,clientId:Xi};e==="1"&&s&&(a.familyId=s),await this.requestWoHome(C8,a,{secret:!0})}async moveFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Xi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(E8,c,{secret:!0})}async copyFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Xi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(B8,c,{secret:!0})}async deleteFile(e,t,i){let n={spaceType:e,vipLevel:"0",dirList:t,fileList:i,clientId:Xi};await this.requestWoHome(b8,n,{secret:!0})}async queryCloudUsageInfo(){return await this.initPhone(),this.requestWoHome(g8,{phoneNum:this.phone,clientId:Xi},{secret:!0})}async upload2C(e,t,i,n,s="",o){await this.initZoneURL();let c=`${this.zoneURL||KC}/openapi/client/${v8}`,l=i instanceof Uint8Array?i:i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i),d=l.length,u=Math.max(1,Math.ceil(d/8388608)),f=Yz(),h={spaceType:e,directoryId:n,batchNo:f,fileName:t,fileSize:d,fileType:this.getFileType(t)};e==="1"&&s&&(h.familyId=s);let g=this.crypto.encrypt(JSON.stringify(h),zC),p=`${Date.now()}_${Vz(6)}`,I=0,y="";for(let w=1;w<=u;w++){let C=(w-1)*8388608,b=w===u?d-C:8388608,x=l.subarray(C,C+b),_=new FormData;_.append("uniqueId",p),_.append("accessToken",this.accessToken),_.append("fileName",t),_.append("psToken","undefined"),_.append("fileSize",String(d)),_.append("totalPart",String(u)),_.append("channel",f8),_.append("directoryId",n),_.append("fileInfo",g),_.append("partSize",String(b)),_.append("partIndex",String(w));let R=new Blob([x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength)],{type:"application/octet-stream"});_.append("file",R,t);let U=await fetch(c,{method:"POST",headers:{Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":GC},body:_});if(!U.ok)throw new Error(`[WoPan] Upload part ${w}/${u} failed with HTTP status: ${U.status}`);let T=await U.json().catch(()=>({}));if(T.code!=="0000")throw new Error(`[WoPan] Upload part ${w}/${u} failed: ${T.code} ${T.msg||""}`);T.data?.fid&&(y=T.data.fid),I+=b,o?.(I,d)}return y}}});function Xz(r){if(!r)return new Date().toISOString();if(r.length>=14){let e=r.slice(0,4),t=r.slice(4,6),i=r.slice(6,8),n=r.slice(8,10),s=r.slice(10,12),o=r.slice(12,14),a=`${e}-${t}-${i}T${n}:${s}:${o}+08:00`,c=new Date(a);if(!isNaN(c.getTime()))return c.toISOString()}try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function D8(r){let e=r.type===0;return{name:r.name,size:r.size||0,is_dir:e,modified:Xz(r.createTime),sign:r.fid||r.id,type:X(r.name,e),thumb:r.thumbUrl||"",raw_url:""}}function $C(r){let e={...r||{}};return e.root_folder_id=e.root_folder_id||"0",e.refresh_token=(e.refresh_token||"").trim(),e.family_id=(e.family_id||"").trim(),e.sort_rule=e.sort_rule||"name_asc",e.access_token=(e.access_token||"").trim(),e}var Np,Q8=j(()=>{"use strict";Be();He();Tp();S8();Np=class{client;addition;defaultFamilyId="";pathFileMapCache=new Map;pathFolderIdCache=new Map;constructor(e,t){this.addition=$C(e),this.client=new Rp(this.addition,(i,n)=>{this.addition.access_token=i,this.addition.refresh_token=n,t?.(i,n)})}getSpaceType(){return this.addition.family_id?"1":"0"}getFamilyId(){return this.addition.family_id||this.defaultFamilyId}getSortRuleNum(){let e=this.addition.sort_rule||"name_asc";return JC[e]||JC.name_asc}getRootId(){return this.addition.root_folder_id||"0"}async init(){await this.client.initData();let e=await this.client.familyUserCurrentEncode().catch(()=>null);e?.defaultHomeId!==void 0&&e.defaultHomeId!==null&&(this.defaultFamilyId=String(e.defaultHomeId))}async list(e,t){let i=await this.resolveFolderId(t),n=await this.fetchFolderFiles(i),s=t.split("/").filter(Boolean).join("/");for(let a of n){let c=s?`${s}/${a.name}`:a.name;this.pathFileMapCache.set(c,a),a.type===0&&this.pathFolderIdCache.set(c,a.id)}let o=n.map(D8);return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveWoPanFile(t);if(!n){let o=await this.resolveFolderId(t).catch(()=>null);if(o){let a=i.split("/");return{name:a[a.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}throw new Error(`[WoPan] File not found: ${t}`)}let s=D8(n);if(!s.is_dir&&n.fid){let o=await this.client.getDownloadUrlV2([n.fid]).catch(()=>null);o?.list?.[0]?.downloadUrl&&(s.raw_url=o.list[0].downloadUrl)}return s}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createDirectory(this.getSpaceType(),o,n,this.getFamilyId()),this.clearCache()}async rename(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for rename: ${t}`);await this.client.renameFileOrDirectory(this.getSpaceType(),n.type,n.id,i,this.getFamilyId()),this.clearCache()}async remove(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for deletion: ${t}`);let s=[],o=[];n.type===0?s.push(n.id):o.push(n.id),await this.client.deleteFile(this.getSpaceType(),s,o),this.clearCache()}async move(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for move: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.moveFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async copy(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for copy: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.copyFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o=n.join("/"),a=await this.resolveFolderId(o);await this.client.upload2C(this.getSpaceType(),s,i,a,this.getFamilyId()),this.clearCache()}clearCache(){this.pathFileMapCache.clear(),this.pathFolderIdCache.clear()}async fetchFolderFiles(e){let t=[],i=0,n=100;for(;;){let o=(await this.client.queryAllFiles(this.getSpaceType(),e,i,n,this.getSortRuleNum(),this.getFamilyId()))?.files||[];if(t.push(...o),o.length<n)break;i++}return t}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.getRootId();if(this.pathFolderIdCache.has(t))return this.pathFolderIdCache.get(t);let i=t.split("/"),n=this.getRootId();for(let s=0;s<i.length;s++){let o=i[s],a=(()=>{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFolderIdCache.has(c)){n=this.pathFolderIdCache.get(c);continue}let l=await this.fetchFolderFiles(n);for(let u of l){let f=i.slice(0,s).concat(u.name).join("/");this.pathFileMapCache.set(f,u),u.type===0&&this.pathFolderIdCache.set(f,u.id)}let d=l.find(u=>u.type===0&&(u.name===o||u.name===a||u.id===o));if(!d)throw new Error(`[WoPan] Directory '${o}' not found in path '${e}'`);n=d.id,this.pathFolderIdCache.set(c,n)}return n}async resolveWoPanFile(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return null;if(this.pathFileMapCache.has(t))return this.pathFileMapCache.get(t);let i=t.split("/"),n=i.pop(),s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o=i.join("/"),a=await this.resolveFolderId(o),c=await this.fetchFolderFiles(a);for(let d of c){let u=i.concat(d.name).join("/");this.pathFileMapCache.set(u,d),d.type===0&&this.pathFolderIdCache.set(u,d.id)}return c.find(d=>d.name===n||d.name===s||d.id===n||d.fid===n)||null}}});function Wu(){let r=()=>Array.from({length:16},()=>Math.floor(Math.random()*16).toString(16)).join(""),e={appVersion:"8.0.0",brand:eJ,deviceId:r(),deviceName:_8,imei:r(),imsi:r(),mac:Array.from({length:6},()=>Math.floor(Math.random()*256).toString(16).padStart(2,"0")).join(":"),mno:"46000",model:_8,mpVersion:VC,networkType:"wifi",osVersion:"12",platform:Zz};return JSON.stringify(e)}var xr,VC,Zz,_8,eJ,YC=j(()=>{"use strict";xr="https://mcloud.caiyun.feixin.10086.cn/MoPanProxyFamily",VC="1.1.202",Zz="android",_8="M2102J2SC",eJ="Xiaomi"});import{createCipheriv as tJ,createDecipheriv as rJ,randomBytes as iJ}from"crypto";function WC(r,e){let t=Buffer.alloc(16,0),i=tJ("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function F8(r,e){let t=Buffer.alloc(16,0),i=rJ("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function P8(){return iJ(16).toString("hex").slice(0,16)}function qp(r){return r.toString("base64")}function T8(r){return Buffer.from(r,"base64")}function R8(r,e){return qp(Buffer.from(r,"utf-8"))}var U8,N8=j(()=>{"use strict";U8=`-----BEGIN PUBLIC KEY----- +</d:propfind>`});if(i.status===404)throw new Error(`Object not found: ${e}`);if(i.status!==207&&!i.ok){let c=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${c||i.statusText}`)}let n=await i.text(),{self:s,items:a}=nP(n,e),o=s||a[0];if(!o)throw new Error(`Object not found in PROPFIND response: ${e}`);return o}async mkdir(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405))throw new Error(`WebDAV MKCOL failed with status ${t.status}`)}async mkdirAll(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405)){if(t.status===409){let i=e.split("/").filter(Boolean),n="";for(let s of i){n+="/"+s;let a=await this.request("MKCOL",n);if(a.status!==201&&a.status!==405)throw new Error(`WebDAV MkdirAll failed at ${n} with status ${a.status}`)}return}throw new Error(`WebDAV MkdirAll failed with status ${t.status}`)}}async move(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("MOVE",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let a=t.substring(0,t.lastIndexOf("/"));if(a)return await this.mkdirAll(a),this.move(e,t,i)}throw new Error(`WebDAV MOVE failed with status ${s.status}`)}}async copy(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("COPY",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let a=t.substring(0,t.lastIndexOf("/"));if(a)return await this.mkdirAll(a),this.copy(e,t,i)}throw new Error(`WebDAV COPY failed with status ${s.status}`)}}async remove(e){let t=await this.request("DELETE",e);if(!(t.status===200||t.status===204||t.status===404))throw new Error(`WebDAV DELETE failed with status ${t.status}`)}async put(e,t,i){let n={};i&&(n["Content-Type"]=i);let s=await this.request("PUT",e,{headers:n,body:t});if(!(s.status===200||s.status===201||s.status===204)){if(s.status===409){let a=e.substring(0,e.lastIndexOf("/"));if(a&&(await this.mkdirAll(a),s=await this.request("PUT",e,{headers:n,body:t}),s.status===200||s.status===201||s.status===204))return}throw new Error(`WebDAV PUT failed with status ${s.status}`)}}getLink(e){let t=this.buildUrl(e),i=new URL(t),n=i.pathname+i.search,s=this.getAuthHeaders("GET",n);return{url:t,headers:s}}}});function qV(r){let e={...r||{}};return e.vendor=e.vendor||"other",e.address=(e.address||"").trim(),e.username=(e.username||"").trim(),e.password=e.password||"",e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.tls_insecure_skip_verify=!!e.tls_insecure_skip_verify,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var gy,oP=J(()=>{"use strict";ve();$e();aP();gy=class{client;addition;constructor(e){this.addition=qV(e),this.client=new Ay(this.addition)}async init(){await this.client.init()}getRemotePath(e){let t=this.addition.root_folder_path||"/";return ha(t,e||"/")}fileItemFromWebdav(e,t){let i=this.client.getLink(t);return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:"",type:X(e.name,e.isFolder),thumb:"",raw_url:e.isFolder?void 0:i.url,raw_url_headers:e.isFolder?void 0:i.headers}}async list(e,t){let i=this.getRemotePath(t),s=(await this.client.readDir(i)).map(a=>{let o=ha(i,a.name);return this.fileItemFromWebdav(a,o)});return ue(s,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){let i=this.getRemotePath(t),n=await this.client.stat(i);return this.fileItemFromWebdav(n,i)}async mkdir(e,t){let i=this.getRemotePath(t);await this.client.mkdirAll(i)}async rename(e,t,i){let n=this.getRemotePath(t),s=n.lastIndexOf("/"),a=s>=0?n.substring(0,s):"/",o=ha(a,i);await this.client.move(n,o,!0)}async move(e,t,i,n,s){let a=this.getRemotePath(n),o=this.getRemotePath(s);for(let c of i){let l=ha(a,c),d=ha(o,c);await this.client.move(l,d,!0)}}async copy(e,t,i,n,s){let a=this.getRemotePath(n),o=this.getRemotePath(s);for(let c of i){let l=ha(a,c),d=ha(o,c);await this.client.copy(l,d,!0)}}async remove(e,t,i){let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let a=ha(n,s);await this.client.remove(a)}else await this.client.remove(n)}async put(e,t,i){let n=this.getRemotePath(t);await this.client.put(n,i)}}});var mn,py,cP,lP,HB,KB,Fo,GB,dP,uP,fP,hP,AP,gP,pP,mP,yP,IP,wP,xP,CP,EP,BP,zB,my=J(()=>{"use strict";mn="1001000021",py="XFmi9GS2hzk98jGX",cP="10000001",lP="https://panservice.mail.wo.cn",HB="https://tjupload.pan.wo.cn",KB="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37",Fo="api-user",GB="wohome",dP="wocloud",uP="AppQueryUser",fP="AppRefreshToken",hP="QueryCloudUsageInfo",AP="ClassifyRule",gP="GetZoneInfo",pP="FamilyUserCurrentEncode",mP="QueryAllFiles",yP="GetDownloadUrlV2",IP="CreateDirectory",wP="RenameFileOrDirectory",xP="MoveFile",CP="CopyFile",EP="DeleteFile",BP="upload2C",zB={name_asc:1,name_desc:2,size_asc:3,size_desc:4,time_asc:5,time_desc:6}});var Di,MV,yy,bP=J(()=>{"use strict";Di=Qr(Ao(),1);my();MV="wNSOYIB1k1DjY5lA",yy=class{key=py;iv=MV;accessKey="";constructor(e){e&&this.setAccessToken(e)}setAccessToken(e){e&&e.length>=16?this.accessKey=e.slice(0,16):e&&(this.accessKey=e)}encrypt(e,t){let i=t===Fo?this.key:this.accessKey||this.key,n=Di.default.enc.Utf8.parse(i),s=Di.default.enc.Utf8.parse(this.iv);return Di.default.AES.encrypt(Di.default.enc.Utf8.parse(e),n,{iv:s,mode:Di.default.mode.CBC,padding:Di.default.pad.Pkcs7}).toString()}decrypt(e,t){let i=t===Fo?this.key:this.accessKey||this.key,n=Di.default.enc.Utf8.parse(i),s=Di.default.enc.Utf8.parse(this.iv);return Di.default.AES.decrypt(e,n,{iv:s,mode:Di.default.mode.CBC,padding:Di.default.pad.Pkcs7}).toString(Di.default.enc.Utf8)}userEncrypt(e){return this.encrypt(e,Fo)}userDecrypt(e){return this.decrypt(e,Fo)}woHomeEncrypt(e){return this.encrypt(e,"wohome")}woHomeDecrypt(e){return this.decrypt(e,"wohome")}calHeader(e,t){let i=Date.now(),n=Math.floor(Math.random()*8999)+1e5,s="",a=Di.default.MD5(`${t}${i}${n}${e}${s}`).toString();return{key:t,resTime:i,reqSeq:n,channel:e,sign:a,version:s}}}});function LV(r){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function HV(r=new Date){let e=c=>String(c).padStart(2,"0"),t=r.getFullYear(),i=e(r.getMonth()+1),n=e(r.getDate()),s=e(r.getHours()),a=e(r.getMinutes()),o=e(r.getSeconds());return`${t}${i}${n}${s}${a}${o}`}var Iy,vP=J(()=>{"use strict";my();bP();Iy=class{addition;accessToken;refreshTokenValue;phone="";zoneURL="";classifyRuleData=null;crypto;onTokenUpdate;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t,this.crypto=new yy(this.accessToken)}getAccessToken(){return this.accessToken}getRefreshToken(){return this.refreshTokenValue}setAccessToken(e){this.accessToken=e,this.crypto.setAccessToken(e)}setRefreshToken(e){this.refreshTokenValue=e}async request(e,t,i,n={},s=!0){let a=this.crypto.calHeader(e,t),o={...n};if(i!=null){let g=JSON.stringify(i),p=this.crypto.encrypt(g,e);o.param=p}let c={Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":KB,"Content-Type":"application/json;charset=UTF-8"};this.accessToken&&(c.Accesstoken=this.accessToken);let l=`${lP}/${e}/dispatcher`,d=await fetch(l,{method:"POST",headers:c,body:JSON.stringify({header:a,body:o})});if(!d.ok)throw new Error(`[WoPan] Request failed with HTTP status: ${d.status} ${d.statusText}`);let u=await d.json().catch(()=>null);if(!u)throw new Error(`[WoPan] Response is not valid JSON from ${t}`);if(u.STATUS!=="200")throw new Error(`[WoPan] Request failed with status: ${u.STATUS}, msg: ${u.MSG||""}`);let f=u.RSP?.RSP_CODE;if(f!=="0000"){if(e!==Fo&&s&&f==="9999")return await this.refreshToken(),this.request(e,t,i,n,!1);throw new Error(`[WoPan] Request failed with rsp_code: ${f}, rsp_desc: ${u.RSP?.RSP_DESC||""}`)}let A=u.RSP?.DATA;if(A==null)return{};if(typeof A=="string"){let g=A.trim();g.startsWith('"')&&g.endsWith('"')&&(g=g.slice(1,-1));try{let p=this.crypto.decrypt(g,e);if(p)return JSON.parse(p)}catch{try{return JSON.parse(g)}catch{return g}}}return A}async requestApiUser(e,t,i={}){return this.request(Fo,e,t,i)}async requestWoHome(e,t,i={}){return this.request(GB,e,t,i)}async appRefreshToken(){return await this.requestApiUser(fP,{refreshToken:this.refreshTokenValue,clientSecret:py},{clientId:mn,secret:!0})}async refreshToken(){let e=await this.appRefreshToken();if(!e.access_token)throw new Error("[WoPan] Failed to refresh token: empty access_token");this.setAccessToken(e.access_token),e.refresh_token&&this.setRefreshToken(e.refresh_token),this.onTokenUpdate?.(this.accessToken,this.refreshTokenValue)}async appQueryUser(){return this.requestApiUser(uP,{accessToken:this.accessToken},{clientId:mn,secret:!0})}async initPhone(){if(this.phone)return;let e=await this.appQueryUser();e?.userId&&(this.phone=e.userId)}async classifyRule(){return this.requestWoHome(AP,{},{key:!0})}async initClassifyRule(){if(this.classifyRuleData)return;let e=await this.classifyRule().catch(()=>null);e&&(this.classifyRuleData=e)}async getZoneInfo(){return this.requestWoHome(gP,{appId:cP},{key:!0})}async initZoneURL(){if(this.zoneURL)return;let e=await this.getZoneInfo().catch(()=>null);this.zoneURL=e?.url||HB}async familyUserCurrentEncode(){return this.requestWoHome(pP,{clientId:mn},{secret:!0})}async initData(){!this.accessToken&&this.refreshTokenValue&&await this.refreshToken(),await this.initPhone().catch(()=>{}),await this.initClassifyRule().catch(()=>{}),await this.initZoneURL().catch(()=>{})}getFileType(e){let t=(e.split(".").pop()||"").toLowerCase();return t&&this.classifyRuleData?.fileTypes?.[t]?this.classifyRuleData.fileTypes[t].type:"5"}async queryAllFiles(e,t,i,n,s,a=""){let o={spaceType:e,parentDirectoryId:t,pageNum:i,pageSize:n,sortRule:s,clientId:mn};return e==="1"&&a&&(o.familyId=a),this.requestWoHome(mP,o,{secret:!0})}async getDownloadUrlV2(e){let t={type:"1",fidList:e,clientId:mn};return this.requestWoHome(yP,t,{secret:!0})}async createDirectory(e,t,i,n=""){let s={spaceType:e,familyId:n,parentDirectoryId:t,directoryName:i,clientId:mn};return this.requestWoHome(IP,s,{secret:!0})}async renameFileOrDirectory(e,t,i,n,s=""){let a=t===0?"0":this.getFileType(n),o={spaceType:e,type:t,fileType:a,id:i,name:n,clientId:mn};e==="1"&&s&&(o.familyId=s),await this.requestWoHome(wP,o,{secret:!0})}async moveFile(e,t,i,n,s,a="",o=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:mn};n==="1"&&a&&(c.fromFamilyId=a),s==="1"&&o&&(c.familyId=o),await this.requestWoHome(xP,c,{secret:!0})}async copyFile(e,t,i,n,s,a="",o=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:mn};n==="1"&&a&&(c.fromFamilyId=a),s==="1"&&o&&(c.familyId=o),await this.requestWoHome(CP,c,{secret:!0})}async deleteFile(e,t,i){let n={spaceType:e,vipLevel:"0",dirList:t,fileList:i,clientId:mn};await this.requestWoHome(EP,n,{secret:!0})}async queryCloudUsageInfo(){return await this.initPhone(),this.requestWoHome(hP,{phoneNum:this.phone,clientId:mn},{secret:!0})}async upload2C(e,t,i,n,s="",a){await this.initZoneURL();let c=`${this.zoneURL||HB}/openapi/client/${BP}`,l=i instanceof Uint8Array?i:i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i),d=l.length,u=Math.max(1,Math.ceil(d/8388608)),f=HV(),A={spaceType:e,directoryId:n,batchNo:f,fileName:t,fileSize:d,fileType:this.getFileType(t)};e==="1"&&s&&(A.familyId=s);let g=this.crypto.encrypt(JSON.stringify(A),GB),p=`${Date.now()}_${LV(6)}`,I=0,m="";for(let w=1;w<=u;w++){let B=(w-1)*8388608,C=w===u?d-B:8388608,x=l.subarray(B,B+C),_=new FormData;_.append("uniqueId",p),_.append("accessToken",this.accessToken),_.append("fileName",t),_.append("psToken","undefined"),_.append("fileSize",String(d)),_.append("totalPart",String(u)),_.append("channel",dP),_.append("directoryId",n),_.append("fileInfo",g),_.append("partSize",String(C)),_.append("partIndex",String(w));let R=new Blob([x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength)],{type:"application/octet-stream"});_.append("file",R,t);let U=await fetch(c,{method:"POST",headers:{Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":KB},body:_});if(!U.ok)throw new Error(`[WoPan] Upload part ${w}/${u} failed with HTTP status: ${U.status}`);let T=await U.json().catch(()=>({}));if(T.code!=="0000")throw new Error(`[WoPan] Upload part ${w}/${u} failed: ${T.code} ${T.msg||""}`);T.data?.fid&&(m=T.data.fid),I+=C,a?.(I,d)}return m}}});function GV(r){if(!r)return new Date().toISOString();if(r.length>=14){let e=r.slice(0,4),t=r.slice(4,6),i=r.slice(6,8),n=r.slice(8,10),s=r.slice(10,12),a=r.slice(12,14),o=`${e}-${t}-${i}T${n}:${s}:${a}+08:00`,c=new Date(o);if(!isNaN(c.getTime()))return c.toISOString()}try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function kP(r){let e=r.type===0;return{name:r.name,size:r.size||0,is_dir:e,modified:GV(r.createTime),sign:r.fid||r.id,type:X(r.name,e),thumb:r.thumbUrl||"",raw_url:""}}function jB(r){let e={...r||{}};return e.root_folder_id=e.root_folder_id||"0",e.refresh_token=(e.refresh_token||"").trim(),e.family_id=(e.family_id||"").trim(),e.sort_rule=e.sort_rule||"name_asc",e.access_token=(e.access_token||"").trim(),e}var wy,SP=J(()=>{"use strict";ve();$e();my();vP();wy=class{client;addition;defaultFamilyId="";pathFileMapCache=new Map;pathFolderIdCache=new Map;constructor(e,t){this.addition=jB(e),this.client=new Iy(this.addition,(i,n)=>{this.addition.access_token=i,this.addition.refresh_token=n,t?.(i,n)})}getSpaceType(){return this.addition.family_id?"1":"0"}getFamilyId(){return this.addition.family_id||this.defaultFamilyId}getSortRuleNum(){let e=this.addition.sort_rule||"name_asc";return zB[e]||zB.name_asc}getRootId(){return this.addition.root_folder_id||"0"}async init(){await this.client.initData();let e=await this.client.familyUserCurrentEncode().catch(()=>null);e?.defaultHomeId!==void 0&&e.defaultHomeId!==null&&(this.defaultFamilyId=String(e.defaultHomeId))}async list(e,t){let i=await this.resolveFolderId(t),n=await this.fetchFolderFiles(i),s=t.split("/").filter(Boolean).join("/");for(let o of n){let c=s?`${s}/${o.name}`:o.name;this.pathFileMapCache.set(c,o),o.type===0&&this.pathFolderIdCache.set(c,o.id)}let a=n.map(kP);return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveWoPanFile(t);if(!n){let a=await this.resolveFolderId(t).catch(()=>null);if(a){let o=i.split("/");return{name:o[o.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}throw new Error(`[WoPan] File not found: ${t}`)}let s=kP(n);if(!s.is_dir&&n.fid){let a=await this.client.getDownloadUrlV2([n.fid]).catch(()=>null);a?.list?.[0]?.downloadUrl&&(s.raw_url=a.list[0].downloadUrl)}return s}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),a=await this.resolveFolderId(s);await this.client.createDirectory(this.getSpaceType(),a,n,this.getFamilyId()),this.clearCache()}async rename(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for rename: ${t}`);await this.client.renameFileOrDirectory(this.getSpaceType(),n.type,n.id,i,this.getFamilyId()),this.clearCache()}async remove(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for deletion: ${t}`);let s=[],a=[];n.type===0?s.push(n.id):a.push(n.id),await this.client.deleteFile(this.getSpaceType(),s,a),this.clearCache()}async move(e,t,i,n,s){let a=await this.resolveWoPanFile(n);if(!a)throw new Error(`[WoPan] Source item not found for move: ${n}`);let o=await this.resolveFolderId(t),c=[],l=[];a.type===0?c.push(a.id):l.push(a.id),await this.client.moveFile(c,l,o,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async copy(e,t,i,n,s){let a=await this.resolveWoPanFile(n);if(!a)throw new Error(`[WoPan] Source item not found for copy: ${n}`);let o=await this.resolveFolderId(t),c=[],l=[];a.type===0?c.push(a.id):l.push(a.id),await this.client.copyFile(c,l,o,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",a=n.join("/"),o=await this.resolveFolderId(a);await this.client.upload2C(this.getSpaceType(),s,i,o,this.getFamilyId()),this.clearCache()}clearCache(){this.pathFileMapCache.clear(),this.pathFolderIdCache.clear()}async fetchFolderFiles(e){let t=[],i=0,n=100;for(;;){let a=(await this.client.queryAllFiles(this.getSpaceType(),e,i,n,this.getSortRuleNum(),this.getFamilyId()))?.files||[];if(t.push(...a),a.length<n)break;i++}return t}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.getRootId();if(this.pathFolderIdCache.has(t))return this.pathFolderIdCache.get(t);let i=t.split("/"),n=this.getRootId();for(let s=0;s<i.length;s++){let a=i[s],o=(()=>{try{return decodeURIComponent(a)}catch{return a}})(),c=i.slice(0,s+1).join("/");if(this.pathFolderIdCache.has(c)){n=this.pathFolderIdCache.get(c);continue}let l=await this.fetchFolderFiles(n);for(let u of l){let f=i.slice(0,s).concat(u.name).join("/");this.pathFileMapCache.set(f,u),u.type===0&&this.pathFolderIdCache.set(f,u.id)}let d=l.find(u=>u.type===0&&(u.name===a||u.name===o||u.id===a));if(!d)throw new Error(`[WoPan] Directory '${a}' not found in path '${e}'`);n=d.id,this.pathFolderIdCache.set(c,n)}return n}async resolveWoPanFile(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return null;if(this.pathFileMapCache.has(t))return this.pathFileMapCache.get(t);let i=t.split("/"),n=i.pop(),s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),a=i.join("/"),o=await this.resolveFolderId(a),c=await this.fetchFolderFiles(o);for(let d of c){let u=i.concat(d.name).join("/");this.pathFileMapCache.set(u,d),d.type===0&&this.pathFolderIdCache.set(u,d.id)}return c.find(d=>d.name===n||d.name===s||d.id===n||d.fid===n)||null}}});function xh(){let r=()=>Array.from({length:16},()=>Math.floor(Math.random()*16).toString(16)).join(""),e={appVersion:"8.0.0",brand:JV,deviceId:r(),deviceName:DP,imei:r(),imsi:r(),mac:Array.from({length:6},()=>Math.floor(Math.random()*256).toString(16).padStart(2,"0")).join(":"),mno:"46000",model:DP,mpVersion:$B,networkType:"wifi",osVersion:"12",platform:zV};return JSON.stringify(e)}var Pr,$B,zV,DP,JV,VB=J(()=>{"use strict";Pr="https://mcloud.caiyun.feixin.10086.cn/MoPanProxyFamily",$B="1.1.202",zV="android",DP="M2102J2SC",JV="Xiaomi"});import{createCipheriv as jV,createDecipheriv as $V,randomBytes as VV}from"crypto";function YB(r,e){let t=Buffer.alloc(16,0),i=jV("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function _P(r,e){let t=Buffer.alloc(16,0),i=$V("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function QP(){return VV(16).toString("hex").slice(0,16)}function xy(r){return r.toString("base64")}function FP(r){return Buffer.from(r,"base64")}function TP(r,e){return xy(Buffer.from(r,"utf-8"))}var PP,UP=J(()=>{"use strict";PP=`-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN8TyHJhEVoT6t5A/9Q3+2/v3n 3tEqvU7yb8+yx6L0S5h5D+Y5b2E5vVqJ5J8k5n7Y5E5y5w5h5e5q5c5J5b5t5f5j 5r5u5a5s5i5o5n5k5e5y5A== ------END PUBLIC KEY-----`});var Op,q8=j(()=>{"use strict";YC();N8();Op=class{addition;authorization="";deviceInfo;onAuthorizationExpired;constructor(e,t){if(this.addition=e,this.onAuthorizationExpired=t,e.device_info?.trim())try{this.deviceInfo=JSON.parse(e.device_info)}catch{this.deviceInfo=JSON.parse(Wu())}else this.deviceInfo=JSON.parse(Wu())}setAuthorization(e){e.startsWith("Bearer ")||(e=`Bearer ${e}`),this.authorization=e}getAuthorization(){return this.authorization}getDeviceInfo(){return this.deviceInfo}getDeviceInfoJson(){return JSON.stringify(this.deviceInfo)}async request(e,t,i=!0){let n=P8(),s=qp(WC(Buffer.from(JSON.stringify(this.deviceInfo),"utf-8"),Buffer.from(n,"utf-8"))),o=R8(n,U8),a={Authorization:this.authorization,remoteInfo:s,version:this.deviceInfo.mpVersion||VC,"encrypted-key":o,"Content-Type":"application/json"},c;if(t!==null){let f=JSON.stringify(t),h=WC(Buffer.from(f,"utf-8"),Buffer.from(n,"utf-8"));c=qp(h)}let l=await fetch(e,{method:"POST",headers:a,body:c?JSON.stringify(c):void 0});if(!l.ok)throw new Error(`[MoPan] Request failed: ${l.status} ${l.statusText}`);let d=await l.text();d.startsWith('"')&&d.endsWith('"')&&(d=d.slice(1,-1),d=F8(T8(d),Buffer.from(n,"utf-8")).toString("utf-8"));let u=JSON.parse(d);if(u.code===401&&i&&this.onAuthorizationExpired)return await this.onAuthorizationExpired(new Error("Authorization expired: "+u.message)),this.request(e,t,!1);if(u.code!==200)throw new Error(`[MoPan] API error: code=${u.code}, message=${u.message}`);return u.data}async login(e,t){let i={phone:e,password:t};return this.request(xr+"/login",i)}async loginBySms(e){let t={phone:e};await this.request(xr+"/sendSmsCode",t)}async loginBySmsStep2(e,t){let i={phone:e,smsCode:t};return this.request(xr+"/loginBySms",i)}async getUserInfo(){return this.request(xr+"/getUserInfo",null)}async queryFiles(e,t=1,i="filename",n=!1,s){let o={folderId:e,pageNum:t,orderBy:i,descending:n};return s&&(o.cloudId=s),this.request(xr+"/queryFiles",o)}async getFileDownloadUrl(e,t){let i={fileId:e};return t&&(i.cloudId=t),this.request(xr+"/getFileDownloadUrl",i)}async createFolder(e,t,i){let n={name:e,parentId:t};return i&&(n.cloudId=i),this.request(xr+"/createFolder",n)}async renameFolder(e,t,i){let n={folderId:e,newName:t};i&&(n.cloudId=i),await this.request(xr+"/renameFolder",n)}async renameFile(e,t,i){let n={fileId:e,newName:t};i&&(n.cloudId=i),await this.request(xr+"/renameFile",n)}async addBatchTask(e){return this.request(xr+"/addBatchTask",e)}async checkBatchTask(e){return this.request(xr+"/checkBatchTask",e)}async cancelBatchTask(e,t){await this.request(xr+"/cancelBatchTask",{taskId:e,taskType:t})}async deleteToRecycle(e,t){let i={files:e};t&&(i.cloudId=t),await this.request(xr+"/deleteToRecycle",i)}async initMultiUpload(e,t,i,n,s){let o={fileMd5:e,fileName:t,fileSize:i,parentFolderId:n};return s&&(o.cloudId=s),this.request(xr+"/initMultiUpload",o)}async getAllMultiUploadUrls(e,t){let i={uploadFileId:e,partInfos:t};return this.request(xr+"/getAllMultiUploadUrls",i)}async commitMultiUploadFile(e){let t={uploadFileId:e};return this.request(xr+"/commitMultiUploadFile",t)}async usedSpace(){return this.request(xr+"/usedSpace",null)}}});import{createHash as cJ}from"crypto";function L8(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function O8(r){return{name:r.name,size:0,is_dir:!0,modified:L8(r.lastOpTime),sign:r.id,type:1,thumb:"",raw_url:""}}function M8(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:L8(r.lastOpTime),sign:r.id,type:X(r.name,!1),thumb:r.icon?.smallURL||r.icon?.largeURL||"",raw_url:"",hash:r.md5||void 0,hashes:r.md5?{md5:r.md5}:void 0}}function lJ(r){let e={...r||{}};return e.phone=(e.phone||"").trim(),e.password=(e.password||"").trim(),e.sms_code=(e.sms_code||"").trim(),e.root_folder_id=e.root_folder_id||"",e.cloud_id=(e.cloud_id||"").trim(),e.order_by=e.order_by||"filename",e.order_direction=e.order_direction||"asc",e.device_info=e.device_info||Wu(),e.upload_thread=e.upload_thread||"3",e}var Mp,H8=j(()=>{"use strict";Be();He();q8();YC();Mp=class{client;addition;userId="";uploadThread=3;constructor(e,t){this.addition=lJ(e),this.uploadThread=parseInt(this.addition.upload_thread||"3"),(this.uploadThread<1||this.uploadThread>32)&&(this.uploadThread=3),this.client=new Op(this.addition,async i=>{await this.performLogin(),t&&t(this.client.getDeviceInfoJson(),this.client.getAuthorization())})}async performLogin(){let e=this.addition.sms_code?.trim()||"";if(e==="send")throw await this.client.loginBySms(this.addition.phone),new Error("[MoPan] SMS code sent, please enter the code");let t;e&&e!=="send"?t=await this.client.loginBySmsStep2(this.addition.phone,e):t=await this.client.login(this.addition.phone,this.addition.password),this.client.setAuthorization(t.token);let i=await this.client.getUserInfo();if(this.userId=i.userID,!this.addition.root_folder_id&&t.userCloudStorageRelations){for(let n of t.userCloudStorageRelations)if(n.path==="/\u6587\u4EF6"){this.addition.root_folder_id=n.folderID;break}}}async init(){await this.performLogin()}async list(e,t){let i=await this.resolveFolderId(t),n=[];for(let s=1;;s++){let o=await this.client.queryFiles(i,s,this.addition.order_by||"filename",this.addition.order_direction==="desc",this.addition.cloud_id);if(!o.fileListAO)break;let{folderList:a=[],fileList:c=[]}=o.fileListAO;if(a.length===0&&c.length===0||(n.push(...a.map(O8)),n.push(...c.map(M8)),a.length+c.length<100))break}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean);if(i.length===0)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,thumb:"",raw_url:""};let n=i.slice(0,-1).join("/"),s=i[i.length-1],o=await this.resolveFolderId(n),a=await this.client.queryFiles(o,1,"filename",!1,this.addition.cloud_id);if(a.fileListAO){let c=a.fileListAO.folderList?.find(d=>d.name===s);if(c)return O8(c);let l=a.fileListAO.fileList?.find(d=>d.name===s);if(l){let d=M8(l),u=await this.client.getFileDownloadUrl(l.id,this.addition.cloud_id).catch(()=>null);if(u?.downloadUrl){let f=u.downloadUrl.replace(/&/g,"&");f=f.replace(/^http:/,"https:");let h=await this.followRedirect(f);d.raw_url=h||f}return d}}throw new Error(`[MoPan] File not found: ${t}`)}async followRedirect(e){try{let t=await fetch(e,{redirect:"manual"});return(t.status===302||t.status===301)&&t.headers.get("location")||e}catch{return null}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o,this.addition.cloud_id)}async rename(e,t,i){let n=await this.get("",t);n.is_dir?await this.client.renameFolder(n.sign,i,this.addition.cloud_id):await this.client.renameFile(n.sign,i,this.addition.cloud_id)}async move(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,2)}}async copy(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,1)}}async performBatchTask(e,t,i){let n={fileID:e.sign,isFolder:e.is_dir,fileName:e.name},s={userOrCloudID:this.userId,source:1,taskType:i,targetSource:1,targetUserOrCloudID:this.userId,targetType:1,targetFolderID:t,taskStatusDetailDTOList:[n]};this.addition.cloud_id&&(s.userOrCloudID=this.addition.cloud_id,s.source=2,s.targetSource=2,s.targetUserOrCloudID=this.addition.cloud_id);let o=await this.client.addBatchTask(s);for(let a=0;a<10;a++){let c=await this.client.checkBatchTask({taskId:o.taskIDList[0],taskType:o.taskType,targetType:1,targetFolderID:o.targetFolderID,targetSource:s.targetSource,targetUserOrCloudID:s.targetUserOrCloudID});if(c.taskStatus===2)throw await this.client.cancelBatchTask(c.taskID,o.taskType),new Error("[MoPan] File name conflict");if(c.taskStatus===4)return;await new Promise(l=>setTimeout(l,1e3))}throw new Error("[MoPan] Task timeout")}async remove(e,t){let i=await this.get("",t);await this.client.deleteToRecycle([{fileID:i.sign,isFolder:i.is_dir,fileName:i.name}],this.addition.cloud_id)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"\u672A\u547D\u540D\u6587\u4EF6",o=n.join("/"),a=await this.resolveFolderId(o),c=i,l=cJ("md5").update(c).digest("hex"),d=i.length,u=await this.client.initMultiUpload(l,s,d,a,this.addition.cloud_id);if(!u.fileDataExists){let f=await this.client.getAllMultiUploadUrls(u.uploadFileID,u.partInfos);for(let h of f){let g=(h.partNumber-1)*u.partSize,p=h.partNumber===f.length?d:g+u.partSize,I=c.slice(g,p);await fetch(h.uploadUrl,{method:"PUT",body:I,headers:{"Content-Length":String(I.length)}})}}await this.client.commitMultiUploadFile(u.uploadFileID)}getRootId(){return this.addition.root_folder_id||""}async resolveFolderId(e){let t=this.getRootId(),i=e.split("/").filter(Boolean);if(i.length===0)return t;let n=t;for(let s of i){let a=(await this.client.queryFiles(n,1,"filename",!1,this.addition.cloud_id)).fileListAO?.folderList?.find(c=>c.name===s);if(!a)throw new Error(`[MoPan] Folder not found: ${s}`);n=a.id}return n}}});function Zu(r){return typeof r=="string"?dJ.encode(r):r}function ZC(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i<e.length;i++)t+=e[i].toString(16).padStart(2,"0");return t}async function XC(r){let e=await crypto.subtle.digest("SHA-256",Zu(r));return ZC(e)}async function Xu(r,e){let t=await crypto.subtle.importKey("raw",Zu(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Zu(e));return new Uint8Array(i)}async function K8(r,e){let t=await Xu(r,e);return ZC(t)}async function uJ(r,e){let t=await crypto.subtle.importKey("raw",Zu(r),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Zu(e));return ZC(i)}function qs(r,e=!0){let t=encodeURIComponent(r).replace(/[!'()*]/g,i=>"%"+i.charCodeAt(0).toString(16).toUpperCase());return e||(t=t.replace(/%2F/g,"/")),t}function G8(r=new Date){let e=d=>d.toString().padStart(2,"0"),t=r.getUTCFullYear(),i=e(r.getUTCMonth()+1),n=e(r.getUTCDate()),s=e(r.getUTCHours()),o=e(r.getUTCMinutes()),a=e(r.getUTCSeconds()),c=`${t}${i}${n}`;return{amzDate:`${c}T${s}${o}${a}Z`,dateStamp:c}}async function z8(r,e,t,i="s3"){let n="AWS4"+r,s=await Xu(n,e),o=await Xu(s,t),a=await Xu(o,i);return await Xu(a,"aws4_request")}async function J8(r){let{method:e,url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,headers:a={},body:c=null,service:l="s3",date:d=new Date}=r,u=new URL(t),{amzDate:f,dateStamp:h}=G8(d),g=c!=null?await XC(c):"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",p={...a};p.host=u.host,p["x-amz-date"]=f,p["x-amz-content-sha256"]=g,o&&(p["x-amz-security-token"]=o);let I=Object.keys(p).map(P=>P.toLowerCase()).sort(),y="";for(let P of I){let J=(Object.entries(p).find(([z])=>z.toLowerCase()===P)?.[1]||"").trim().replace(/\s+/g," ");y+=`${P}:${J} -`}let w=I.join(";"),C=u.pathname||"/",b;try{b=decodeURIComponent(C)}catch{b=C}let x=qs(b,!1),_=[];u.searchParams.forEach((P,N)=>{_.push([N,P])}),_.sort(([P],[N])=>P<N?-1:P>N?1:0);let R=_.map(([P,N])=>`${qs(P)}=${qs(N)}`).join("&"),U=[e.toUpperCase(),x,R,y,w,g].join(` -`),T=`${h}/${i}/${l}/aws4_request`,D=await XC(U),B=["AWS4-HMAC-SHA256",f,T,D].join(` -`),Q=await z8(s,h,i,l),v=await K8(Q,B),E=`AWS4-HMAC-SHA256 Credential=${n}/${T}, SignedHeaders=${w}, Signature=${v}`;return p.authorization=E,{headers:p,url:u.toString()}}async function Lp(r){let{method:e="GET",url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,expiresInSeconds:a=14400,service:c="s3",date:l=new Date,customQueryParams:d={}}=r,u=new URL(t),{amzDate:f,dateStamp:h}=G8(l),g=`${h}/${i}/${c}/aws4_request`;u.searchParams.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),u.searchParams.set("X-Amz-Credential",`${n}/${g}`),u.searchParams.set("X-Amz-Date",f),u.searchParams.set("X-Amz-Expires",a.toString()),u.searchParams.set("X-Amz-SignedHeaders","host"),o&&u.searchParams.set("X-Amz-Security-Token",o);for(let[v,E]of Object.entries(d))u.searchParams.set(v,E);let p=u.pathname||"/",I;try{I=decodeURIComponent(p)}catch{I=p}let y=qs(I,!1),w=[];u.searchParams.forEach((v,E)=>{E.toLowerCase()!=="x-amz-signature"&&w.push([E,v])}),w.sort(([v],[E])=>v<E?-1:v>E?1:0);let C=w.map(([v,E])=>`${qs(v)}=${qs(E)}`).join("&"),x=`host:${u.host} -`,U=[e.toUpperCase(),y,C,x,"host","UNSIGNED-PAYLOAD"].join(` -`),T=await XC(U),D=["AWS4-HMAC-SHA256",f,g,T].join(` -`),B=await z8(s,h,i,c),Q=await K8(B,D);return u.searchParams.set("X-Amz-Signature",Q),u.toString()}async function j8(r,e){let t="/auth/tmp_token.json",i=JSON.stringify({channel:"OSS_FULL",scopes:["*"]}),n=t+` -`+i,s=await uJ(e,n),o=`TOKEN ${r}:${s}`,a=await fetch("https://api.dogecloud.com"+t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:o},body:i});if(!a.ok)throw new Error(`DogeCloud tmp_token request failed with HTTP ${a.status}`);let c=await a.json();if(c.code!==200||!c.data||!c.data.Credentials)throw new Error(`DogeCloud tmp_token error (${c.code}): ${c.msg||"unknown"}`);return{accessKeyId:c.data.Credentials.accessKeyId,secretAccessKey:c.data.Credentials.secretAccessKey,sessionToken:c.data.Credentials.sessionToken,expiredAt:c.data.ExpiredAt}}var dJ,eE=j(()=>{"use strict";dJ=new TextEncoder});function nr(...r){return r.map(e=>e.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}function bn(r,e=!1){let t=(r||"").replace(/^\/+/,"");return t&&e&&!t.endsWith("/")&&(t+="/"),t}function ef(r){return r&&r.trim()?r.trim():".openlist"}function jo(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(t+1):e}function tE(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(0,t):""}function $8(r,e){let t=("/"+r+"/").replace(/\/+/g,"/");return("/"+e+"/").replace(/\/+/g,"/").startsWith(t)}function Cr(r,e){let t=r.match(new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"i"));return t?t[1].trim():void 0}function Hp(r,e){let t=[],i=new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"gi"),n;for(;(n=i.exec(r))!==null;)t.push(n[1]);return t}function gc(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'")}function Os(r,e){let t=Cr(r,"Code")||"Unknown",i=Cr(r,"Message")||r||`HTTP ${e}`,n=new Error(`S3 Error [${t}]: ${gc(i)} (status ${e})`);return n.code=t,n.status=e,n}function pJ(r,e,t,i=!1){let n=[],s=ef(t),o=Hp(r,"CommonPrefixes");for(let d of o){let u=Cr(d,"Prefix");if(u){let f=gc(u),h=jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Hp(r,"Contents");for(let d of a){let u=Cr(d,"Key");if(!u)continue;let f=gc(u);if(f.endsWith("/"))continue;let h=jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(Cr(d,"Size")||"0",10),p=Cr(d,"LastModified")||new Date().toISOString(),I=Cr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=Cr(r,"IsTruncated")==="true",l=Cr(r,"NextMarker");return{files:n,isTruncated:c,nextMarker:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function mJ(r,e,t,i=!1){let n=[],s=ef(t),o=Hp(r,"CommonPrefixes");for(let d of o){let u=Cr(d,"Prefix");if(u){let f=gc(u),h=jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Hp(r,"Contents");for(let d of a){let u=Cr(d,"Key");if(!u)continue;let f=gc(u);if(f.endsWith("/"))continue;let h=jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(Cr(d,"Size")||"0",10),p=Cr(d,"LastModified")||new Date().toISOString(),I=Cr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=Cr(r,"IsTruncated")==="true",l=Cr(r,"NextContinuationToken");return{files:n,isTruncated:c,nextContinuationToken:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function yJ(r){let e=Cr(r,"UploadId");if(!e)throw new Error("InitiateMultipartUpload returned empty UploadId: "+r);return gc(e)}function IJ(r){let e=Cr(r,"ETag");if(!e)throw new Error("UploadPartCopy returned empty ETag: "+r);return gc(e).replace(/"/g,"")}function wJ(r){let e=Math.max(AJ,Math.floor((r-1)/gJ)+1);if(e>hJ)throw new Error(`Object size ${r} exceeds multipart copy limit`);return e}var fJ,AJ,hJ,gJ,Kp,V8=j(()=>{"use strict";eE();fJ=5*1e3*1e3*1e3,AJ=100*1024*1024,hJ=5*1024*1024*1024,gJ=1e4;Kp=class{addition;bucket;endpoint;region;accessKeyId;secretAccessKey;sessionToken;isPathStyle;userAgent;constructor(e){this.addition=e,this.bucket=(e.bucket||"").trim();let t=(e.endpoint||"").trim();!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t),this.endpoint=t.replace(/\/+$/,""),this.region=(e.region||"").trim()||"openlist",this.accessKeyId=(e.access_key_id||"").trim(),this.secretAccessKey=(e.secret_access_key||"").trim(),this.sessionToken=e.session_token?e.session_token.trim():void 0,this.userAgent=e.user_agent?e.user_agent.trim():void 0;let i=new URL(this.endpoint),n=/^(\d{1,3}\.){3}\d{1,3}$/.test(i.hostname)||i.hostname==="localhost";this.isPathStyle=!!e.force_path_style||n}updateCredentials(e){this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}getUrl(e="",t){let i=new URL(this.endpoint),n="",s=e?bn(e,!1):"";if(this.isPathStyle){let c=[i.pathname.replace(/\/+$/,""),this.bucket,s].filter(Boolean).join("/");i.pathname="/"+c.replace(/^\/+/,""),n=i.toString()}else{let a=i.host.split(":"),c=a[1]?`:${a[1]}`:"",l=`${this.bucket}.${a[0]}${c}`;i.host=l;let u=[i.pathname.replace(/\/+$/,""),s].filter(Boolean).join("/");i.pathname="/"+u.replace(/^\/+/,""),n=i.toString()}let o=new URL(n);if(t)for(let[a,c]of Object.entries(t))c!=null&&o.searchParams.set(a,c);return o.toString()}async fetch(e,t,i=null,n={}){let s={...n};this.userAgent&&(s["user-agent"]=this.userAgent);let{headers:o}=await J8({method:e,url:t,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,headers:s,body:i}),a={method:e,headers:o};return i!=null&&e!=="GET"&&e!=="HEAD"&&(a.body=i),await fetch(t,a)}async listObjects(e,t="v1",i=!1){let n=bn(e,!0),s=[],o=this.addition.placeholder||"";if(t==="v2"){let a,c;for(;;){let l={"list-type":"2",prefix:n,delimiter:"/"};a&&(l["continuation-token"]=a),c&&(l["start-after"]=c);let d=this.getUrl("",l),u=await this.fetch("GET",d),f=await u.text();if(!u.ok)throw Os(f,u.status);let h=mJ(f,e,o,i);if(s.push(...h.files),!h.isTruncated)break;if(h.nextContinuationToken){a=h.nextContinuationToken;continue}if(h.files.length===0)break;c=h.lastEvaluatedKey}}else{let a;for(;;){let c={prefix:n,delimiter:"/"};a&&(c.marker=a);let l=this.getUrl("",c),d=await this.fetch("GET",l),u=await d.text();if(!d.ok)throw Os(u,d.status);let f=pJ(u,e,o,i);if(s.push(...f.files),!f.isTruncated)break;if(f.nextMarker)a=f.nextMarker;else if(f.files.length>0)a=f.files[f.files.length-1].path;else break}}return s}async headObject(e){let t=this.getUrl(e),i=await this.fetch("HEAD",t);if(i.status===404)return null;if(!i.ok){let a=await i.text().catch(()=>"");throw Os(a,i.status)}let n=parseInt(i.headers.get("content-length")||"0",10),s=i.headers.get("last-modified")||new Date().toISOString(),o=(i.headers.get("etag")||"").replace(/"/g,"");return{size:n,modified:s,etag:o}}async listPrefixProbe(e,t="v1"){let n={prefix:bn(e,!0),"max-keys":"1"};t==="v2"&&(n["list-type"]="2");let s=this.getUrl("",n),o=await this.fetch("GET",s);if(!o.ok)return!1;let a=await o.text();return a.includes("<Contents>")||a.includes("<CommonPrefixes>")}async putObject(e,t,i="application/octet-stream"){let n=this.getUrl(e),s={"content-type":i},o=await this.fetch("PUT",n,t,s);if(!o.ok){let a=await o.text().catch(()=>"");throw Os(a,o.status)}}async deleteObject(e){let t=this.getUrl(e),i=await this.fetch("DELETE",t);if(!i.ok&&i.status!==404&&i.status!==204){let n=await i.text().catch(()=>"");throw Os(n,i.status)}}async copyObject(e,t,i){if(i!==void 0&&i>fJ)return this.copyMultipart(e,t,i);let n=bn(e,!1),s=bn(t,!1),o=qs(`${this.bucket}/${n}`,!1),a=this.getUrl(s),c={"x-amz-copy-source":o},l=await this.fetch("PUT",a,null,c);if(!l.ok){let d=await l.text().catch(()=>"");throw Os(d,l.status)}}async copyMultipart(e,t,i){let n=bn(e,!1),s=bn(t,!1),o=qs(`${this.bucket}/${n}`,!1),a=this.getUrl(s,{uploads:""}),c=await this.fetch("POST",a),l=await c.text();if(!c.ok)throw Os(l,c.status);let d=yJ(l),u=wJ(i),f=[];try{let h=0,g=1;for(;h<i;){let w=Math.min(h+u,i)-1,C=this.getUrl(s,{partNumber:g.toString(),uploadId:d}),b={"x-amz-copy-source":o,"x-amz-copy-source-range":`bytes=${h}-${w}`},x=await this.fetch("PUT",C,null,b),_=await x.text();if(!x.ok)throw Os(_,x.status);let R=IJ(_);f.push({partNumber:g,etag:R}),h+=u,g++}let p=this.getUrl(s,{uploadId:d}),I=["<CompleteMultipartUpload>",...f.map(w=>`<Part><PartNumber>${w.partNumber}</PartNumber><ETag>${w.etag}</ETag></Part>`),"</CompleteMultipartUpload>"].join(""),y=await this.fetch("POST",p,I,{"content-type":"application/xml"});if(!y.ok){let w=await y.text().catch(()=>"");throw Os(w,y.status)}}catch(h){let g=this.getUrl(s,{uploadId:d});throw await this.fetch("DELETE",g).catch(()=>{}),h}}async getLink(e,t,i=4,n="",s=!1,o=!1,a=!1){let c=bn(e,!1),l=Math.max(60,Math.floor(i*3600)),d=this.getUrl(c);if(n)if(s){let h=await Lp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l}),g=new URL(h),p=n.split("://");if(p.length===2&&(p[0]==="http"||p[0]==="https")?(g.protocol=p[0]+":",g.host=p[1].replace(/\/+$/,"")):g.host=n.replace(/\/+$/,""),o){let I="/"+this.bucket;if(g.pathname.startsWith(I)){let y=g.pathname.substring(I.length);y||(y="/"),g.pathname=y}}return{url:g.toString()}}else{let h=n.split("://"),g="https",p=n;h.length===2&&(h[0]==="http"||h[0]==="https")&&(g=h[0],p=h[1].replace(/\/+$/,""));let I=this.isPathStyle?`/${this.bucket}/${c}`:`/${c}`;return o&&I.startsWith(`/${this.bucket}`)&&(I=I.substring(`/${this.bucket}`.length),I||(I="/")),{url:`${g}://${p}${I.startsWith("/")?"":"/"}${I}`}}let u={};if(a){let h=encodeURIComponent(t);u["response-content-disposition"]=`attachment; filename="${h}"; filename*=UTF-8''${h}`}return{url:await Lp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l,customQueryParams:Object.keys(u).length?u:void 0})}}async getDirectUploadInfo(e,t,i=4,n=""){let s=nr(e,t),o=bn(s,!1),a=Math.max(60,Math.floor(i*3600)),c=this.getUrl(o);if(n){let d=new URL(c),u=n.split("://");u.length===2&&(u[0]==="http"||u[0]==="https")?(d.protocol=u[0]+":",d.host=u[1].replace(/\/+$/,"")):d.host=n.replace(/\/+$/,""),c=d.toString()}return{upload_url:await Lp({method:"PUT",url:c,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:a}),method:"PUT"}}}});function xJ(r){let e={...r||{}};return e.bucket=(e.bucket||"").trim(),e.endpoint=(e.endpoint||"").trim(),e.region=(e.region||"").trim()||"openlist",e.access_key_id=(e.access_key_id||"").trim(),e.secret_access_key=(e.secret_access_key||"").trim(),e.session_token=(e.session_token||"").trim(),e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.custom_host=(e.custom_host||"").trim(),e.enable_custom_host_presign=!!e.enable_custom_host_presign,e.sign_url_expire=Number(e.sign_url_expire)||4,e.placeholder=(e.placeholder||"").trim(),e.force_path_style=!!e.force_path_style,e.list_object_version=(e.list_object_version||"v1").toLowerCase(),e.remove_bucket=!!e.remove_bucket,e.add_filename_to_disposition=!!e.add_filename_to_disposition,e.enable_direct_upload=!!e.enable_direct_upload,e.direct_upload_host=(e.direct_upload_host||"").trim(),e.user_agent=(e.user_agent||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var Gp,Y8=j(()=>{"use strict";Be();He();V8();eE();Gp=class{client;addition;driverName;dogeExpiredAt;dogeTimer;constructor(e,t="S3"){this.addition=xJ(e),this.driverName=t,this.client=new Kp(this.addition)}async init(){this.driverName.toLowerCase().includes("doge")&&await this.refreshDogeToken()}async refreshDogeToken(){try{let e=await j8(this.addition.access_key_id,this.addition.secret_access_key);this.dogeExpiredAt=e.expiredAt,this.client.updateCredentials({accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken})}catch(e){throw console.error("[S3Driver] DogeCloud init/refresh session error:",e),e}}async checkDogeToken(){if(this.driverName.toLowerCase().includes("doge")){let e=Math.floor(Date.now()/1e3);(!this.dogeExpiredAt||this.dogeExpiredAt-e<120)&&await this.refreshDogeToken()}}drop(){this.dogeTimer&&(clearInterval(this.dogeTimer),this.dogeTimer=void 0)}getRemotePath(e){let t=this.addition.root_folder_path||"/",i=e||"/";return t!=="/"&&!$8(t,i)&&(i=nr(t,i)),bn(i,!1)}async fileItemFromS3(e,t){let i,n;if(!e.isFolder){let s=await this.client.getLink(t,e.name,Number(this.addition.sign_url_expire)||4,this.addition.custom_host,this.addition.enable_custom_host_presign,this.addition.remove_bucket,this.addition.add_filename_to_disposition);i=s.url,n=s.headers}return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:e.etag||t,type:X(e.name,e.isFolder),thumb:"",raw_url:i,raw_url_headers:n}}async list(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=this.addition.list_object_version==="v2"?"v2":"v1",s=await this.client.listObjects(i,n,!1),o=[];for(let a of s){let c=nr(i,a.name),l=await this.fileItemFromS3(a,c);o.push(l)}return de(o,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=await this.client.headObject(i);if(n){let a=jo(i);return this.fileItemFromS3({name:a,size:n.size,isFolder:!1,modified:n.modified,path:i,etag:n.etag},i)}let s=this.addition.list_object_version==="v2"?"v2":"v1";if(await this.client.listPrefixProbe(i,s)||i===""||i==="/")return{name:jo(i),size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1};throw new Error(`Object not found: ${t}`)}async mkdir(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=ef(this.addition.placeholder),s=nr(i,n);await this.client.putObject(s,new Uint8Array(0))}async rename(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t),s=tE(n),o=nr(s,i),a=await this.client.headObject(n);a?(await this.client.copyObject(n,o,a.size),await this.client.deleteObject(n)):(await this.copyDirRecursive(n,o),await this.removeDirRecursive(n))}async move(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?(await this.client.copyObject(l,d,u.size),await this.client.deleteObject(l)):(await this.copyDirRecursive(l,d),await this.removeDirRecursive(l))}}async copy(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?await this.client.copyObject(l,d,u.size):await this.copyDirRecursive(l,d)}}async copyDirRecursive(e,t){let i=this.addition.list_object_version==="v2"?"v2":"v1",n=await this.client.listObjects(e,i,!0);for(let s of n){let o=nr(e,s.name),a=nr(t,s.name);s.isFolder?await this.copyDirRecursive(o,a):await this.client.copyObject(o,a,s.size)}}async remove(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=nr(n,s);await this.client.headObject(o)?await this.client.deleteObject(o):await this.removeDirRecursive(o)}else await this.client.headObject(n)?await this.client.deleteObject(n):await this.removeDirRecursive(n)}async removeDirRecursive(e){let t=this.addition.list_object_version==="v2"?"v2":"v1",i=await this.client.listObjects(e,t,!0);for(let s of i){let o=nr(e,s.name);s.isFolder?await this.removeDirRecursive(o):await this.client.deleteObject(o)}let n=ef(this.addition.placeholder);await this.client.deleteObject(nr(e,n)).catch(()=>{}),this.addition.placeholder&&await this.client.deleteObject(nr(e,this.addition.placeholder)).catch(()=>{})}async put(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);await this.client.putObject(n,i)}async getDirectUploadInfo(e,t){if(!this.addition.enable_direct_upload)throw new Error("Direct upload is not enabled");await this.checkDogeToken();let i=this.getRemotePath(e);return await this.client.getDirectUploadInfo(i,t,Number(this.addition.sign_url_expire)||4,this.addition.direct_upload_host)}async other(e,t,i){if(e==="direct_upload"||e==="get_direct_upload_info"){let n=i?.name||i?.fileName||jo(t),s=tE(t);return await this.getDirectUploadInfo(s,n)}throw new Error(`Unsupported method ${e}`)}}});function rE(r,e){return r<<e|r>>>32-e}function W8(r){if(typeof Buffer<"u")return Buffer.from(r).toString("base64");let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}var zp,X8=j(()=>{"use strict";zp=class r{h0=1732584193;h1=4023233417;h2=2562383102;h3=271733878;h4=3285377520;block=new Uint8Array(64);blockLen=0;totalBytes=0;w=new Int32Array(80);update(e){let t=e.length;this.totalBytes+=t;let i=0;for(;i<t;){let n=64-this.blockLen,s=Math.min(n,t-i);this.block.set(e.subarray(i,i+s),this.blockLen),this.blockLen+=s,i+=s,this.blockLen===64&&(this.processBlock(this.block),this.blockLen=0)}return this}processBlock(e){let t=this.w;for(let c=0;c<16;c++){let l=c*4;t[c]=e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]}for(let c=16;c<80;c++)t[c]=rE(t[c-3]^t[c-8]^t[c-14]^t[c-16],1);let i=this.h0,n=this.h1,s=this.h2,o=this.h3,a=this.h4;for(let c=0;c<80;c++){let l=0,d=0;c<20?(l=n&s|~n&o,d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=n&s|n&o|s&o,d=2400959708):(l=n^s^o,d=3395469782);let u=rE(i,5)+l+a+d+t[c]|0;a=o,o=s,s=rE(n,30),n=i,i=u}this.h0=this.h0+i|0,this.h1=this.h1+n|0,this.h2=this.h2+s|0,this.h3=this.h3+o|0,this.h4=this.h4+a|0}getStateHex(){let e=[this.h0,this.h1,this.h2,this.h3,this.h4],t="";for(let i of e){let n=(i&255).toString(16).padStart(2,"0"),s=(i>>>8&255).toString(16).padStart(2,"0"),o=(i>>>16&255).toString(16).padStart(2,"0"),a=(i>>>24&255).toString(16).padStart(2,"0");t+=n+s+o+a}return t.toLowerCase()}digestHex(){let e=new r;e.h0=this.h0,e.h1=this.h1,e.h2=this.h2,e.h3=this.h3,e.h4=this.h4,e.block.set(this.block),e.blockLen=this.blockLen,e.totalBytes=this.totalBytes;let t=e.blockLen<56?56-e.blockLen:120-e.blockLen,i=new Uint8Array(t+8);i[0]=128;let n=e.totalBytes*8,s=Math.floor(e.totalBytes/536870912),o=(n&4294967295)>>>0,a=new DataView(i.buffer,i.byteOffset+t,8);return a.setUint32(0,s,!1),a.setUint32(4,o,!1),e.update(i),[e.h0,e.h1,e.h2,e.h3,e.h4].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("").toLowerCase()}}});function Z8(r){let e=new Map;if(!r)return e;let t=r.split(";");for(let i of t){let n=i.trim();if(!n)continue;let s=n.indexOf("=");if(s>0){let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&a&&e.set(o,a)}}return e}function Jp(r){let e=[];for(let[t,i]of r.entries())t&&i&&e.push(`${t}=${i}`);return e.join("; ")}var jp,e4=j(()=>{"use strict";X8();jp=class{cookies=new Map;onCookieUpdate;pendingCookie=null;addition;constructor(e,t){this.addition=e,this.cookies=Z8(e.cookies||""),this.onCookieUpdate=t}getCookies(){return this.cookies}getCookieStr(){return Jp(this.cookies)}setCookiesStr(e){this.cookies=Z8(e),this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}updateCookiesFromHeaders(e){let t=e.getSetCookie,i=[];if(typeof t=="function")i=t.call(e);else{let s=e.get("set-cookie");s&&(i=[s])}let n=!1;for(let s of i){let o=s.split(";")[0]||"",a=o.indexOf("=");if(a>0){let c=o.slice(0,a).trim(),l=o.slice(a+1).trim();c&&l&&this.cookies.get(c)!==l&&(this.cookies.set(c,l),n=!0)}}n&&(this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie))}consumePendingCookie(){let e=this.pendingCookie;return this.pendingCookie=null,e}loginType(){let e=this.cookies.get("wy_uf")||"",t=this.cookies.get("weiyun_wx_openid")||"",i=this.cookies.get("weiyun_qq_openid")||"";return e==="2"&&t?"weixin_openid":e==="2"&&i?"qq_openid":e==="1"?"weixin":e==="0"||!e?"qq":"unknown"}parseTokenInfo(){switch(this.loginType()){case"weixin":return{token_type:1,openid:this.cookies.get("openid")||"",open_appid:this.cookies.get("wy_appid")||"",access_token:this.cookies.get("access_token")||"",login_key_type:192,login_key_value:this.cookies.get("access_token")||""};case"qq":return{token_type:0,login_key_type:27,login_key_value:this.cookies.get("p_skey")||this.cookies.get("skey")||"",openid:""};case"weixin_openid":case"qq_openid":return{token_type:3,login_key_type:1540};default:return{}}}async refreshCtoken(){let e=await fetch("https://www.weiyun.com/disk",{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Cookie:this.getCookieStr()},redirect:"manual"});if(this.updateCookiesFromHeaders(e.headers),e.status>=300&&e.status<400){let t=e.headers.get("location")||"";if(t&&!t.includes("/disk"))throw new Error("[WeiYun] Login cookie expired or invalid, please login again")}}async weixinRefreshToken(){let e=this.cookies.get("wy_appid")||"",t=this.cookies.get("refresh_token")||"";if(!e||!t)return;let i=`https://api.weixin.qq.com/sns/oauth2/refresh_token?grant_type=refresh_token&appid=${encodeURIComponent(e)}&refresh_token=${encodeURIComponent(t)}`,s=await(await fetch(i)).json().catch(()=>({}));if(s.errcode)throw new Error(`[WeiYun] WeChat refresh token failed: ${s.errmsg}`);s.openid&&this.cookies.set("openid",s.openid),s.access_token&&this.cookies.set("access_token",s.access_token),s.refresh_token&&this.cookies.set("refresh_token",s.refresh_token),this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}newHeader(e,t){let i=t.openid||t.minico_openid||"";return{seq:Math.floor(Date.now()/1e3),cmd:e,wx_openid:i,qq_openid:t.qq_openid||"",user_flag:t.token_type??0,env_id:t.env_id||"",type:1,appid:30013,version:3,major_version:3,minor_version:3,fix_version:3}}newBody(e,t,i){return{ReqMsg_body:{ext_req_head:{token_info:i,language_info:{language_type:2052}},[`.weiyun.${e}MsgReq_body`]:t}}}newUploadJson(e,t,i){return{req_header:{cmd:t,appid:30013,major_version:3,minor_version:0,fix_version:0,version:3,user_flag:0},req_body:{ReqMsg_body:{[`weiyun.${e}MsgReq_body`]:i}}}}async request(e,t,i,n,s){let o=this.parseTokenInfo(),a=this.cookies.get("wyctoken")||"",c="",l,d={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://www.weiyun.com",Cookie:this.getCookieStr()};if(e==="preUpload")c=`https://www.weiyun.com/api/v3/ftn_pre_upload?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify(this.newUploadJson(t,i,n)),d["Content-Type"]="application/json; charset=UTF-8";else if(e==="upload"){c=`https://upload.weiyun.com/ftnup_v2/weiyun?g_tk=${encodeURIComponent(a)}&cmd=${i}`;let p="----WebKitFormBoundaryIifrOqiswelC8nfe";d["Content-Type"]=`multipart/form-data; boundary=${p}`;let I=JSON.stringify(this.newUploadJson(t,i,n)),y=`--${p}\r +-----END PUBLIC KEY-----`});var Cy,RP=J(()=>{"use strict";VB();UP();Cy=class{addition;authorization="";deviceInfo;onAuthorizationExpired;constructor(e,t){if(this.addition=e,this.onAuthorizationExpired=t,e.device_info?.trim())try{this.deviceInfo=JSON.parse(e.device_info)}catch{this.deviceInfo=JSON.parse(xh())}else this.deviceInfo=JSON.parse(xh())}setAuthorization(e){e.startsWith("Bearer ")||(e=`Bearer ${e}`),this.authorization=e}getAuthorization(){return this.authorization}getDeviceInfo(){return this.deviceInfo}getDeviceInfoJson(){return JSON.stringify(this.deviceInfo)}async request(e,t,i=!0){let n=QP(),s=xy(YB(Buffer.from(JSON.stringify(this.deviceInfo),"utf-8"),Buffer.from(n,"utf-8"))),a=TP(n,PP),o={Authorization:this.authorization,remoteInfo:s,version:this.deviceInfo.mpVersion||$B,"encrypted-key":a,"Content-Type":"application/json"},c;if(t!==null){let f=JSON.stringify(t),A=YB(Buffer.from(f,"utf-8"),Buffer.from(n,"utf-8"));c=xy(A)}let l=await fetch(e,{method:"POST",headers:o,body:c?JSON.stringify(c):void 0});if(!l.ok)throw new Error(`[MoPan] Request failed: ${l.status} ${l.statusText}`);let d=await l.text();d.startsWith('"')&&d.endsWith('"')&&(d=d.slice(1,-1),d=_P(FP(d),Buffer.from(n,"utf-8")).toString("utf-8"));let u=JSON.parse(d);if(u.code===401&&i&&this.onAuthorizationExpired)return await this.onAuthorizationExpired(new Error("Authorization expired: "+u.message)),this.request(e,t,!1);if(u.code!==200)throw new Error(`[MoPan] API error: code=${u.code}, message=${u.message}`);return u.data}async login(e,t){let i={phone:e,password:t};return this.request(Pr+"/login",i)}async loginBySms(e){let t={phone:e};await this.request(Pr+"/sendSmsCode",t)}async loginBySmsStep2(e,t){let i={phone:e,smsCode:t};return this.request(Pr+"/loginBySms",i)}async getUserInfo(){return this.request(Pr+"/getUserInfo",null)}async queryFiles(e,t=1,i="filename",n=!1,s){let a={folderId:e,pageNum:t,orderBy:i,descending:n};return s&&(a.cloudId=s),this.request(Pr+"/queryFiles",a)}async getFileDownloadUrl(e,t){let i={fileId:e};return t&&(i.cloudId=t),this.request(Pr+"/getFileDownloadUrl",i)}async createFolder(e,t,i){let n={name:e,parentId:t};return i&&(n.cloudId=i),this.request(Pr+"/createFolder",n)}async renameFolder(e,t,i){let n={folderId:e,newName:t};i&&(n.cloudId=i),await this.request(Pr+"/renameFolder",n)}async renameFile(e,t,i){let n={fileId:e,newName:t};i&&(n.cloudId=i),await this.request(Pr+"/renameFile",n)}async addBatchTask(e){return this.request(Pr+"/addBatchTask",e)}async checkBatchTask(e){return this.request(Pr+"/checkBatchTask",e)}async cancelBatchTask(e,t){await this.request(Pr+"/cancelBatchTask",{taskId:e,taskType:t})}async deleteToRecycle(e,t){let i={files:e};t&&(i.cloudId=t),await this.request(Pr+"/deleteToRecycle",i)}async initMultiUpload(e,t,i,n,s){let a={fileMd5:e,fileName:t,fileSize:i,parentFolderId:n};return s&&(a.cloudId=s),this.request(Pr+"/initMultiUpload",a)}async getAllMultiUploadUrls(e,t){let i={uploadFileId:e,partInfos:t};return this.request(Pr+"/getAllMultiUploadUrls",i)}async commitMultiUploadFile(e){let t={uploadFileId:e};return this.request(Pr+"/commitMultiUploadFile",t)}async usedSpace(){return this.request(Pr+"/usedSpace",null)}}});import{createHash as eY}from"crypto";function qP(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function NP(r){return{name:r.name,size:0,is_dir:!0,modified:qP(r.lastOpTime),sign:r.id,type:1,thumb:"",raw_url:""}}function OP(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:qP(r.lastOpTime),sign:r.id,type:X(r.name,!1),thumb:r.icon?.smallURL||r.icon?.largeURL||"",raw_url:"",hash:r.md5||void 0,hashes:r.md5?{md5:r.md5}:void 0}}function tY(r){let e={...r||{}};return e.phone=(e.phone||"").trim(),e.password=(e.password||"").trim(),e.sms_code=(e.sms_code||"").trim(),e.root_folder_id=e.root_folder_id||"",e.cloud_id=(e.cloud_id||"").trim(),e.order_by=e.order_by||"filename",e.order_direction=e.order_direction||"asc",e.device_info=e.device_info||xh(),e.upload_thread=e.upload_thread||"3",e}var Ey,MP=J(()=>{"use strict";ve();$e();RP();VB();Ey=class{client;addition;userId="";uploadThread=3;constructor(e,t){this.addition=tY(e),this.uploadThread=parseInt(this.addition.upload_thread||"3"),(this.uploadThread<1||this.uploadThread>32)&&(this.uploadThread=3),this.client=new Cy(this.addition,async i=>{await this.performLogin(),t&&t(this.client.getDeviceInfoJson(),this.client.getAuthorization())})}async performLogin(){let e=this.addition.sms_code?.trim()||"";if(e==="send")throw await this.client.loginBySms(this.addition.phone),new Error("[MoPan] SMS code sent, please enter the code");let t;e&&e!=="send"?t=await this.client.loginBySmsStep2(this.addition.phone,e):t=await this.client.login(this.addition.phone,this.addition.password),this.client.setAuthorization(t.token);let i=await this.client.getUserInfo();if(this.userId=i.userID,!this.addition.root_folder_id&&t.userCloudStorageRelations){for(let n of t.userCloudStorageRelations)if(n.path==="/\u6587\u4EF6"){this.addition.root_folder_id=n.folderID;break}}}async init(){await this.performLogin()}async list(e,t){let i=await this.resolveFolderId(t),n=[];for(let s=1;;s++){let a=await this.client.queryFiles(i,s,this.addition.order_by||"filename",this.addition.order_direction==="desc",this.addition.cloud_id);if(!a.fileListAO)break;let{folderList:o=[],fileList:c=[]}=a.fileListAO;if(o.length===0&&c.length===0||(n.push(...o.map(NP)),n.push(...c.map(OP)),o.length+c.length<100))break}return ue(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean);if(i.length===0)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,thumb:"",raw_url:""};let n=i.slice(0,-1).join("/"),s=i[i.length-1],a=await this.resolveFolderId(n),o=await this.client.queryFiles(a,1,"filename",!1,this.addition.cloud_id);if(o.fileListAO){let c=o.fileListAO.folderList?.find(d=>d.name===s);if(c)return NP(c);let l=o.fileListAO.fileList?.find(d=>d.name===s);if(l){let d=OP(l),u=await this.client.getFileDownloadUrl(l.id,this.addition.cloud_id).catch(()=>null);if(u?.downloadUrl){let f=u.downloadUrl.replace(/&/g,"&");f=f.replace(/^http:/,"https:");let A=await this.followRedirect(f);d.raw_url=A||f}return d}}throw new Error(`[MoPan] File not found: ${t}`)}async followRedirect(e){try{let t=await fetch(e,{redirect:"manual"});return(t.status===302||t.status===301)&&t.headers.get("location")||e}catch{return null}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),a=await this.resolveFolderId(s);await this.client.createFolder(n,a,this.addition.cloud_id)}async rename(e,t,i){let n=await this.get("",t);n.is_dir?await this.client.renameFolder(n.sign,i,this.addition.cloud_id):await this.client.renameFile(n.sign,i,this.addition.cloud_id)}async move(e,t,i,n,s){let a=await this.resolveFolderId(s);for(let o of i){let c=n==="/"?`/${o}`:`${n}/${o}`,l=await this.get(e,c);await this.performBatchTask(l,a,2)}}async copy(e,t,i,n,s){let a=await this.resolveFolderId(s);for(let o of i){let c=n==="/"?`/${o}`:`${n}/${o}`,l=await this.get(e,c);await this.performBatchTask(l,a,1)}}async performBatchTask(e,t,i){let n={fileID:e.sign,isFolder:e.is_dir,fileName:e.name},s={userOrCloudID:this.userId,source:1,taskType:i,targetSource:1,targetUserOrCloudID:this.userId,targetType:1,targetFolderID:t,taskStatusDetailDTOList:[n]};this.addition.cloud_id&&(s.userOrCloudID=this.addition.cloud_id,s.source=2,s.targetSource=2,s.targetUserOrCloudID=this.addition.cloud_id);let a=await this.client.addBatchTask(s);for(let o=0;o<10;o++){let c=await this.client.checkBatchTask({taskId:a.taskIDList[0],taskType:a.taskType,targetType:1,targetFolderID:a.targetFolderID,targetSource:s.targetSource,targetUserOrCloudID:s.targetUserOrCloudID});if(c.taskStatus===2)throw await this.client.cancelBatchTask(c.taskID,a.taskType),new Error("[MoPan] File name conflict");if(c.taskStatus===4)return;await new Promise(l=>setTimeout(l,1e3))}throw new Error("[MoPan] Task timeout")}async remove(e,t){let i=await this.get("",t);await this.client.deleteToRecycle([{fileID:i.sign,isFolder:i.is_dir,fileName:i.name}],this.addition.cloud_id)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"\u672A\u547D\u540D\u6587\u4EF6",a=n.join("/"),o=await this.resolveFolderId(a),c=i,l=eY("md5").update(c).digest("hex"),d=i.length,u=await this.client.initMultiUpload(l,s,d,o,this.addition.cloud_id);if(!u.fileDataExists){let f=await this.client.getAllMultiUploadUrls(u.uploadFileID,u.partInfos);for(let A of f){let g=(A.partNumber-1)*u.partSize,p=A.partNumber===f.length?d:g+u.partSize,I=c.slice(g,p);await fetch(A.uploadUrl,{method:"PUT",body:I,headers:{"Content-Length":String(I.length)}})}}await this.client.commitMultiUploadFile(u.uploadFileID)}getRootId(){return this.addition.root_folder_id||""}async resolveFolderId(e){let t=this.getRootId(),i=e.split("/").filter(Boolean);if(i.length===0)return t;let n=t;for(let s of i){let o=(await this.client.queryFiles(n,1,"filename",!1,this.addition.cloud_id)).fileListAO?.folderList?.find(c=>c.name===s);if(!o)throw new Error(`[MoPan] Folder not found: ${s}`);n=o.id}return n}}});function Eh(r){return typeof r=="string"?rY.encode(r):r}function XB(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i<e.length;i++)t+=e[i].toString(16).padStart(2,"0");return t}async function WB(r){let e=await crypto.subtle.digest("SHA-256",Eh(r));return XB(e)}async function Ch(r,e){let t=await crypto.subtle.importKey("raw",Eh(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Eh(e));return new Uint8Array(i)}async function LP(r,e){let t=await Ch(r,e);return XB(t)}async function iY(r,e){let t=await crypto.subtle.importKey("raw",Eh(r),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Eh(e));return XB(i)}function ga(r,e=!0){let t=encodeURIComponent(r).replace(/[!'()*]/g,i=>"%"+i.charCodeAt(0).toString(16).toUpperCase());return e||(t=t.replace(/%2F/g,"/")),t}function HP(r=new Date){let e=d=>d.toString().padStart(2,"0"),t=r.getUTCFullYear(),i=e(r.getUTCMonth()+1),n=e(r.getUTCDate()),s=e(r.getUTCHours()),a=e(r.getUTCMinutes()),o=e(r.getUTCSeconds()),c=`${t}${i}${n}`;return{amzDate:`${c}T${s}${a}${o}Z`,dateStamp:c}}async function KP(r,e,t,i="s3"){let n="AWS4"+r,s=await Ch(n,e),a=await Ch(s,t),o=await Ch(a,i);return await Ch(o,"aws4_request")}async function GP(r){let{method:e,url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:a,headers:o={},body:c=null,service:l="s3",date:d=new Date}=r,u=new URL(t),{amzDate:f,dateStamp:A}=HP(d),g=c!=null?await WB(c):"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",p={...o};p.host=u.host,p["x-amz-date"]=f,p["x-amz-content-sha256"]=g,a&&(p["x-amz-security-token"]=a);let I=Object.keys(p).map(P=>P.toLowerCase()).sort(),m="";for(let P of I){let j=(Object.entries(p).find(([z])=>z.toLowerCase()===P)?.[1]||"").trim().replace(/\s+/g," ");m+=`${P}:${j} +`}let w=I.join(";"),B=u.pathname||"/",C;try{C=decodeURIComponent(B)}catch{C=B}let x=ga(C,!1),_=[];u.searchParams.forEach((P,N)=>{_.push([N,P])}),_.sort(([P],[N])=>P<N?-1:P>N?1:0);let R=_.map(([P,N])=>`${ga(P)}=${ga(N)}`).join("&"),U=[e.toUpperCase(),x,R,m,w,g].join(` +`),T=`${A}/${i}/${l}/aws4_request`,D=await WB(U),b=["AWS4-HMAC-SHA256",f,T,D].join(` +`),Q=await KP(s,A,i,l),v=await LP(Q,b),E=`AWS4-HMAC-SHA256 Credential=${n}/${T}, SignedHeaders=${w}, Signature=${v}`;return p.authorization=E,{headers:p,url:u.toString()}}async function By(r){let{method:e="GET",url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:a,expiresInSeconds:o=14400,service:c="s3",date:l=new Date,customQueryParams:d={}}=r,u=new URL(t),{amzDate:f,dateStamp:A}=HP(l),g=`${A}/${i}/${c}/aws4_request`;u.searchParams.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),u.searchParams.set("X-Amz-Credential",`${n}/${g}`),u.searchParams.set("X-Amz-Date",f),u.searchParams.set("X-Amz-Expires",o.toString()),u.searchParams.set("X-Amz-SignedHeaders","host"),a&&u.searchParams.set("X-Amz-Security-Token",a);for(let[v,E]of Object.entries(d))u.searchParams.set(v,E);let p=u.pathname||"/",I;try{I=decodeURIComponent(p)}catch{I=p}let m=ga(I,!1),w=[];u.searchParams.forEach((v,E)=>{E.toLowerCase()!=="x-amz-signature"&&w.push([E,v])}),w.sort(([v],[E])=>v<E?-1:v>E?1:0);let B=w.map(([v,E])=>`${ga(v)}=${ga(E)}`).join("&"),x=`host:${u.host} +`,U=[e.toUpperCase(),m,B,x,"host","UNSIGNED-PAYLOAD"].join(` +`),T=await WB(U),D=["AWS4-HMAC-SHA256",f,g,T].join(` +`),b=await KP(s,A,i,c),Q=await LP(b,D);return u.searchParams.set("X-Amz-Signature",Q),u.toString()}async function zP(r,e){let t="/auth/tmp_token.json",i=JSON.stringify({channel:"OSS_FULL",scopes:["*"]}),n=t+` +`+i,s=await iY(e,n),a=`TOKEN ${r}:${s}`,o=await fetch("https://api.dogecloud.com"+t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:i});if(!o.ok)throw new Error(`DogeCloud tmp_token request failed with HTTP ${o.status}`);let c=await o.json();if(c.code!==200||!c.data||!c.data.Credentials)throw new Error(`DogeCloud tmp_token error (${c.code}): ${c.msg||"unknown"}`);return{accessKeyId:c.data.Credentials.accessKeyId,secretAccessKey:c.data.Credentials.secretAccessKey,sessionToken:c.data.Credentials.sessionToken,expiredAt:c.data.ExpiredAt}}var rY,ZB=J(()=>{"use strict";rY=new TextEncoder});function Ar(...r){return r.map(e=>e.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}function Jn(r,e=!1){let t=(r||"").replace(/^\/+/,"");return t&&e&&!t.endsWith("/")&&(t+="/"),t}function Bh(r){return r&&r.trim()?r.trim():".openlist"}function Po(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(t+1):e}function e1(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(0,t):""}function JP(r,e){let t=("/"+r+"/").replace(/\/+/g,"/");return("/"+e+"/").replace(/\/+/g,"/").startsWith(t)}function Tr(r,e){let t=r.match(new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"i"));return t?t[1].trim():void 0}function by(r,e){let t=[],i=new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"gi"),n;for(;(n=i.exec(r))!==null;)t.push(n[1]);return t}function sl(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'")}function pa(r,e){let t=Tr(r,"Code")||"Unknown",i=Tr(r,"Message")||r||`HTTP ${e}`,n=new Error(`S3 Error [${t}]: ${sl(i)} (status ${e})`);return n.code=t,n.status=e,n}function cY(r,e,t,i=!1){let n=[],s=Bh(t),a=by(r,"CommonPrefixes");for(let d of a){let u=Tr(d,"Prefix");if(u){let f=sl(u),A=Po(f);A&&n.push({name:A,size:0,isFolder:!0,modified:new Date().toISOString(),path:Ar(e,A)})}}let o=by(r,"Contents");for(let d of o){let u=Tr(d,"Key");if(!u)continue;let f=sl(u);if(f.endsWith("/"))continue;let A=Po(f);if(!i&&(A===s||A===t))continue;let g=parseInt(Tr(d,"Size")||"0",10),p=Tr(d,"LastModified")||new Date().toISOString(),I=Tr(d,"ETag")?.replace(/"/g,"");n.push({name:A,size:g,isFolder:!1,modified:p,path:Ar(e,A),etag:I})}let c=Tr(r,"IsTruncated")==="true",l=Tr(r,"NextMarker");return{files:n,isTruncated:c,nextMarker:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function lY(r,e,t,i=!1){let n=[],s=Bh(t),a=by(r,"CommonPrefixes");for(let d of a){let u=Tr(d,"Prefix");if(u){let f=sl(u),A=Po(f);A&&n.push({name:A,size:0,isFolder:!0,modified:new Date().toISOString(),path:Ar(e,A)})}}let o=by(r,"Contents");for(let d of o){let u=Tr(d,"Key");if(!u)continue;let f=sl(u);if(f.endsWith("/"))continue;let A=Po(f);if(!i&&(A===s||A===t))continue;let g=parseInt(Tr(d,"Size")||"0",10),p=Tr(d,"LastModified")||new Date().toISOString(),I=Tr(d,"ETag")?.replace(/"/g,"");n.push({name:A,size:g,isFolder:!1,modified:p,path:Ar(e,A),etag:I})}let c=Tr(r,"IsTruncated")==="true",l=Tr(r,"NextContinuationToken");return{files:n,isTruncated:c,nextContinuationToken:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function dY(r){let e=Tr(r,"UploadId");if(!e)throw new Error("InitiateMultipartUpload returned empty UploadId: "+r);return sl(e)}function uY(r){let e=Tr(r,"ETag");if(!e)throw new Error("UploadPartCopy returned empty ETag: "+r);return sl(e).replace(/"/g,"")}function fY(r){let e=Math.max(sY,Math.floor((r-1)/oY)+1);if(e>aY)throw new Error(`Object size ${r} exceeds multipart copy limit`);return e}var nY,sY,aY,oY,vy,jP=J(()=>{"use strict";ZB();nY=5*1e3*1e3*1e3,sY=100*1024*1024,aY=5*1024*1024*1024,oY=1e4;vy=class{addition;bucket;endpoint;region;accessKeyId;secretAccessKey;sessionToken;isPathStyle;userAgent;constructor(e){this.addition=e,this.bucket=(e.bucket||"").trim();let t=(e.endpoint||"").trim();!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t),this.endpoint=t.replace(/\/+$/,""),this.region=(e.region||"").trim()||"openlist",this.accessKeyId=(e.access_key_id||"").trim(),this.secretAccessKey=(e.secret_access_key||"").trim(),this.sessionToken=e.session_token?e.session_token.trim():void 0,this.userAgent=e.user_agent?e.user_agent.trim():void 0;let i=new URL(this.endpoint),n=/^(\d{1,3}\.){3}\d{1,3}$/.test(i.hostname)||i.hostname==="localhost";this.isPathStyle=!!e.force_path_style||n}updateCredentials(e){this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}getUrl(e="",t){let i=new URL(this.endpoint),n="",s=e?Jn(e,!1):"";if(this.isPathStyle){let c=[i.pathname.replace(/\/+$/,""),this.bucket,s].filter(Boolean).join("/");i.pathname="/"+c.replace(/^\/+/,""),n=i.toString()}else{let o=i.host.split(":"),c=o[1]?`:${o[1]}`:"",l=`${this.bucket}.${o[0]}${c}`;i.host=l;let u=[i.pathname.replace(/\/+$/,""),s].filter(Boolean).join("/");i.pathname="/"+u.replace(/^\/+/,""),n=i.toString()}let a=new URL(n);if(t)for(let[o,c]of Object.entries(t))c!=null&&a.searchParams.set(o,c);return a.toString()}async fetch(e,t,i=null,n={}){let s={...n};this.userAgent&&(s["user-agent"]=this.userAgent);let{headers:a}=await GP({method:e,url:t,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,headers:s,body:i}),o={method:e,headers:a};return i!=null&&e!=="GET"&&e!=="HEAD"&&(o.body=i),await fetch(t,o)}async listObjects(e,t="v1",i=!1){let n=Jn(e,!0),s=[],a=this.addition.placeholder||"";if(t==="v2"){let o,c;for(;;){let l={"list-type":"2",prefix:n,delimiter:"/"};o&&(l["continuation-token"]=o),c&&(l["start-after"]=c);let d=this.getUrl("",l),u=await this.fetch("GET",d),f=await u.text();if(!u.ok)throw pa(f,u.status);let A=lY(f,e,a,i);if(s.push(...A.files),!A.isTruncated)break;if(A.nextContinuationToken){o=A.nextContinuationToken;continue}if(A.files.length===0)break;c=A.lastEvaluatedKey}}else{let o;for(;;){let c={prefix:n,delimiter:"/"};o&&(c.marker=o);let l=this.getUrl("",c),d=await this.fetch("GET",l),u=await d.text();if(!d.ok)throw pa(u,d.status);let f=cY(u,e,a,i);if(s.push(...f.files),!f.isTruncated)break;if(f.nextMarker)o=f.nextMarker;else if(f.files.length>0)o=f.files[f.files.length-1].path;else break}}return s}async headObject(e){let t=this.getUrl(e),i=await this.fetch("HEAD",t);if(i.status===404)return null;if(!i.ok){let o=await i.text().catch(()=>"");throw pa(o,i.status)}let n=parseInt(i.headers.get("content-length")||"0",10),s=i.headers.get("last-modified")||new Date().toISOString(),a=(i.headers.get("etag")||"").replace(/"/g,"");return{size:n,modified:s,etag:a}}async listPrefixProbe(e,t="v1"){let n={prefix:Jn(e,!0),"max-keys":"1"};t==="v2"&&(n["list-type"]="2");let s=this.getUrl("",n),a=await this.fetch("GET",s);if(!a.ok)return!1;let o=await a.text();return o.includes("<Contents>")||o.includes("<CommonPrefixes>")}async putObject(e,t,i="application/octet-stream"){let n=this.getUrl(e),s={"content-type":i},a=await this.fetch("PUT",n,t,s);if(!a.ok){let o=await a.text().catch(()=>"");throw pa(o,a.status)}}async deleteObject(e){let t=this.getUrl(e),i=await this.fetch("DELETE",t);if(!i.ok&&i.status!==404&&i.status!==204){let n=await i.text().catch(()=>"");throw pa(n,i.status)}}async copyObject(e,t,i){if(i!==void 0&&i>nY)return this.copyMultipart(e,t,i);let n=Jn(e,!1),s=Jn(t,!1),a=ga(`${this.bucket}/${n}`,!1),o=this.getUrl(s),c={"x-amz-copy-source":a},l=await this.fetch("PUT",o,null,c);if(!l.ok){let d=await l.text().catch(()=>"");throw pa(d,l.status)}}async copyMultipart(e,t,i){let n=Jn(e,!1),s=Jn(t,!1),a=ga(`${this.bucket}/${n}`,!1),o=this.getUrl(s,{uploads:""}),c=await this.fetch("POST",o),l=await c.text();if(!c.ok)throw pa(l,c.status);let d=dY(l),u=fY(i),f=[];try{let A=0,g=1;for(;A<i;){let w=Math.min(A+u,i)-1,B=this.getUrl(s,{partNumber:g.toString(),uploadId:d}),C={"x-amz-copy-source":a,"x-amz-copy-source-range":`bytes=${A}-${w}`},x=await this.fetch("PUT",B,null,C),_=await x.text();if(!x.ok)throw pa(_,x.status);let R=uY(_);f.push({partNumber:g,etag:R}),A+=u,g++}let p=this.getUrl(s,{uploadId:d}),I=["<CompleteMultipartUpload>",...f.map(w=>`<Part><PartNumber>${w.partNumber}</PartNumber><ETag>${w.etag}</ETag></Part>`),"</CompleteMultipartUpload>"].join(""),m=await this.fetch("POST",p,I,{"content-type":"application/xml"});if(!m.ok){let w=await m.text().catch(()=>"");throw pa(w,m.status)}}catch(A){let g=this.getUrl(s,{uploadId:d});throw await this.fetch("DELETE",g).catch(()=>{}),A}}async getLink(e,t,i=4,n="",s=!1,a=!1,o=!1){let c=Jn(e,!1),l=Math.max(60,Math.floor(i*3600)),d=this.getUrl(c);if(n)if(s){let A=await By({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l}),g=new URL(A),p=n.split("://");if(p.length===2&&(p[0]==="http"||p[0]==="https")?(g.protocol=p[0]+":",g.host=p[1].replace(/\/+$/,"")):g.host=n.replace(/\/+$/,""),a){let I="/"+this.bucket;if(g.pathname.startsWith(I)){let m=g.pathname.substring(I.length);m||(m="/"),g.pathname=m}}return{url:g.toString()}}else{let A=n.split("://"),g="https",p=n;A.length===2&&(A[0]==="http"||A[0]==="https")&&(g=A[0],p=A[1].replace(/\/+$/,""));let I=this.isPathStyle?`/${this.bucket}/${c}`:`/${c}`;return a&&I.startsWith(`/${this.bucket}`)&&(I=I.substring(`/${this.bucket}`.length),I||(I="/")),{url:`${g}://${p}${I.startsWith("/")?"":"/"}${I}`}}let u={};if(o){let A=encodeURIComponent(t);u["response-content-disposition"]=`attachment; filename="${A}"; filename*=UTF-8''${A}`}return{url:await By({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l,customQueryParams:Object.keys(u).length?u:void 0})}}async getDirectUploadInfo(e,t,i=4,n=""){let s=Ar(e,t),a=Jn(s,!1),o=Math.max(60,Math.floor(i*3600)),c=this.getUrl(a);if(n){let d=new URL(c),u=n.split("://");u.length===2&&(u[0]==="http"||u[0]==="https")?(d.protocol=u[0]+":",d.host=u[1].replace(/\/+$/,"")):d.host=n.replace(/\/+$/,""),c=d.toString()}return{upload_url:await By({method:"PUT",url:c,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:o}),method:"PUT"}}}});function hY(r){let e={...r||{}};return e.bucket=(e.bucket||"").trim(),e.endpoint=(e.endpoint||"").trim(),e.region=(e.region||"").trim()||"openlist",e.access_key_id=(e.access_key_id||"").trim(),e.secret_access_key=(e.secret_access_key||"").trim(),e.session_token=(e.session_token||"").trim(),e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.custom_host=(e.custom_host||"").trim(),e.enable_custom_host_presign=!!e.enable_custom_host_presign,e.sign_url_expire=Number(e.sign_url_expire)||4,e.placeholder=(e.placeholder||"").trim(),e.force_path_style=!!e.force_path_style,e.list_object_version=(e.list_object_version||"v1").toLowerCase(),e.remove_bucket=!!e.remove_bucket,e.add_filename_to_disposition=!!e.add_filename_to_disposition,e.enable_direct_upload=!!e.enable_direct_upload,e.direct_upload_host=(e.direct_upload_host||"").trim(),e.user_agent=(e.user_agent||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var ky,$P=J(()=>{"use strict";ve();$e();jP();ZB();ky=class{client;addition;driverName;dogeExpiredAt;dogeTimer;constructor(e,t="S3"){this.addition=hY(e),this.driverName=t,this.client=new vy(this.addition)}async init(){this.driverName.toLowerCase().includes("doge")&&await this.refreshDogeToken()}async refreshDogeToken(){try{let e=await zP(this.addition.access_key_id,this.addition.secret_access_key);this.dogeExpiredAt=e.expiredAt,this.client.updateCredentials({accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken})}catch(e){throw console.error("[S3Driver] DogeCloud init/refresh session error:",e),e}}async checkDogeToken(){if(this.driverName.toLowerCase().includes("doge")){let e=Math.floor(Date.now()/1e3);(!this.dogeExpiredAt||this.dogeExpiredAt-e<120)&&await this.refreshDogeToken()}}drop(){this.dogeTimer&&(clearInterval(this.dogeTimer),this.dogeTimer=void 0)}getRemotePath(e){let t=this.addition.root_folder_path||"/",i=e||"/";return t!=="/"&&!JP(t,i)&&(i=Ar(t,i)),Jn(i,!1)}async fileItemFromS3(e,t){let i,n;if(!e.isFolder){let s=await this.client.getLink(t,e.name,Number(this.addition.sign_url_expire)||4,this.addition.custom_host,this.addition.enable_custom_host_presign,this.addition.remove_bucket,this.addition.add_filename_to_disposition);i=s.url,n=s.headers}return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:e.etag||t,type:X(e.name,e.isFolder),thumb:"",raw_url:i,raw_url_headers:n}}async list(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=this.addition.list_object_version==="v2"?"v2":"v1",s=await this.client.listObjects(i,n,!1),a=[];for(let o of s){let c=Ar(i,o.name),l=await this.fileItemFromS3(o,c);a.push(l)}return ue(a,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=await this.client.headObject(i);if(n){let o=Po(i);return this.fileItemFromS3({name:o,size:n.size,isFolder:!1,modified:n.modified,path:i,etag:n.etag},i)}let s=this.addition.list_object_version==="v2"?"v2":"v1";if(await this.client.listPrefixProbe(i,s)||i===""||i==="/")return{name:Po(i),size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1};throw new Error(`Object not found: ${t}`)}async mkdir(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=Bh(this.addition.placeholder),s=Ar(i,n);await this.client.putObject(s,new Uint8Array(0))}async rename(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t),s=e1(n),a=Ar(s,i),o=await this.client.headObject(n);o?(await this.client.copyObject(n,a,o.size),await this.client.deleteObject(n)):(await this.copyDirRecursive(n,a),await this.removeDirRecursive(n))}async move(e,t,i,n,s){await this.checkDogeToken();let a=this.getRemotePath(n),o=this.getRemotePath(s);for(let c of i){let l=Ar(a,c),d=Ar(o,c),u=await this.client.headObject(l);u?(await this.client.copyObject(l,d,u.size),await this.client.deleteObject(l)):(await this.copyDirRecursive(l,d),await this.removeDirRecursive(l))}}async copy(e,t,i,n,s){await this.checkDogeToken();let a=this.getRemotePath(n),o=this.getRemotePath(s);for(let c of i){let l=Ar(a,c),d=Ar(o,c),u=await this.client.headObject(l);u?await this.client.copyObject(l,d,u.size):await this.copyDirRecursive(l,d)}}async copyDirRecursive(e,t){let i=this.addition.list_object_version==="v2"?"v2":"v1",n=await this.client.listObjects(e,i,!0);for(let s of n){let a=Ar(e,s.name),o=Ar(t,s.name);s.isFolder?await this.copyDirRecursive(a,o):await this.client.copyObject(a,o,s.size)}}async remove(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let a=Ar(n,s);await this.client.headObject(a)?await this.client.deleteObject(a):await this.removeDirRecursive(a)}else await this.client.headObject(n)?await this.client.deleteObject(n):await this.removeDirRecursive(n)}async removeDirRecursive(e){let t=this.addition.list_object_version==="v2"?"v2":"v1",i=await this.client.listObjects(e,t,!0);for(let s of i){let a=Ar(e,s.name);s.isFolder?await this.removeDirRecursive(a):await this.client.deleteObject(a)}let n=Bh(this.addition.placeholder);await this.client.deleteObject(Ar(e,n)).catch(()=>{}),this.addition.placeholder&&await this.client.deleteObject(Ar(e,this.addition.placeholder)).catch(()=>{})}async put(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);await this.client.putObject(n,i)}async getDirectUploadInfo(e,t){if(!this.addition.enable_direct_upload)throw new Error("Direct upload is not enabled");await this.checkDogeToken();let i=this.getRemotePath(e);return await this.client.getDirectUploadInfo(i,t,Number(this.addition.sign_url_expire)||4,this.addition.direct_upload_host)}async other(e,t,i){if(e==="direct_upload"||e==="get_direct_upload_info"){let n=i?.name||i?.fileName||Po(t),s=e1(t);return await this.getDirectUploadInfo(s,n)}throw new Error(`Unsupported method ${e}`)}}});function t1(r,e){return r<<e|r>>>32-e}function VP(r){if(typeof Buffer<"u")return Buffer.from(r).toString("base64");let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}var Sy,YP=J(()=>{"use strict";Sy=class r{h0=1732584193;h1=4023233417;h2=2562383102;h3=271733878;h4=3285377520;block=new Uint8Array(64);blockLen=0;totalBytes=0;w=new Int32Array(80);update(e){let t=e.length;this.totalBytes+=t;let i=0;for(;i<t;){let n=64-this.blockLen,s=Math.min(n,t-i);this.block.set(e.subarray(i,i+s),this.blockLen),this.blockLen+=s,i+=s,this.blockLen===64&&(this.processBlock(this.block),this.blockLen=0)}return this}processBlock(e){let t=this.w;for(let c=0;c<16;c++){let l=c*4;t[c]=e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]}for(let c=16;c<80;c++)t[c]=t1(t[c-3]^t[c-8]^t[c-14]^t[c-16],1);let i=this.h0,n=this.h1,s=this.h2,a=this.h3,o=this.h4;for(let c=0;c<80;c++){let l=0,d=0;c<20?(l=n&s|~n&a,d=1518500249):c<40?(l=n^s^a,d=1859775393):c<60?(l=n&s|n&a|s&a,d=2400959708):(l=n^s^a,d=3395469782);let u=t1(i,5)+l+o+d+t[c]|0;o=a,a=s,s=t1(n,30),n=i,i=u}this.h0=this.h0+i|0,this.h1=this.h1+n|0,this.h2=this.h2+s|0,this.h3=this.h3+a|0,this.h4=this.h4+o|0}getStateHex(){let e=[this.h0,this.h1,this.h2,this.h3,this.h4],t="";for(let i of e){let n=(i&255).toString(16).padStart(2,"0"),s=(i>>>8&255).toString(16).padStart(2,"0"),a=(i>>>16&255).toString(16).padStart(2,"0"),o=(i>>>24&255).toString(16).padStart(2,"0");t+=n+s+a+o}return t.toLowerCase()}digestHex(){let e=new r;e.h0=this.h0,e.h1=this.h1,e.h2=this.h2,e.h3=this.h3,e.h4=this.h4,e.block.set(this.block),e.blockLen=this.blockLen,e.totalBytes=this.totalBytes;let t=e.blockLen<56?56-e.blockLen:120-e.blockLen,i=new Uint8Array(t+8);i[0]=128;let n=e.totalBytes*8,s=Math.floor(e.totalBytes/536870912),a=(n&4294967295)>>>0,o=new DataView(i.buffer,i.byteOffset+t,8);return o.setUint32(0,s,!1),o.setUint32(4,a,!1),e.update(i),[e.h0,e.h1,e.h2,e.h3,e.h4].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("").toLowerCase()}}});function WP(r){let e=new Map;if(!r)return e;let t=r.split(";");for(let i of t){let n=i.trim();if(!n)continue;let s=n.indexOf("=");if(s>0){let a=n.slice(0,s).trim(),o=n.slice(s+1).trim();a&&o&&e.set(a,o)}}return e}function Dy(r){let e=[];for(let[t,i]of r.entries())t&&i&&e.push(`${t}=${i}`);return e.join("; ")}var _y,XP=J(()=>{"use strict";YP();_y=class{cookies=new Map;onCookieUpdate;pendingCookie=null;addition;constructor(e,t){this.addition=e,this.cookies=WP(e.cookies||""),this.onCookieUpdate=t}getCookies(){return this.cookies}getCookieStr(){return Dy(this.cookies)}setCookiesStr(e){this.cookies=WP(e),this.pendingCookie=Dy(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}updateCookiesFromHeaders(e){let t=e.getSetCookie,i=[];if(typeof t=="function")i=t.call(e);else{let s=e.get("set-cookie");s&&(i=[s])}let n=!1;for(let s of i){let a=s.split(";")[0]||"",o=a.indexOf("=");if(o>0){let c=a.slice(0,o).trim(),l=a.slice(o+1).trim();c&&l&&this.cookies.get(c)!==l&&(this.cookies.set(c,l),n=!0)}}n&&(this.pendingCookie=Dy(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie))}consumePendingCookie(){let e=this.pendingCookie;return this.pendingCookie=null,e}loginType(){let e=this.cookies.get("wy_uf")||"",t=this.cookies.get("weiyun_wx_openid")||"",i=this.cookies.get("weiyun_qq_openid")||"";return e==="2"&&t?"weixin_openid":e==="2"&&i?"qq_openid":e==="1"?"weixin":e==="0"||!e?"qq":"unknown"}parseTokenInfo(){switch(this.loginType()){case"weixin":return{token_type:1,openid:this.cookies.get("openid")||"",open_appid:this.cookies.get("wy_appid")||"",access_token:this.cookies.get("access_token")||"",login_key_type:192,login_key_value:this.cookies.get("access_token")||""};case"qq":return{token_type:0,login_key_type:27,login_key_value:this.cookies.get("p_skey")||this.cookies.get("skey")||"",openid:""};case"weixin_openid":case"qq_openid":return{token_type:3,login_key_type:1540};default:return{}}}async refreshCtoken(){let e=await fetch("https://www.weiyun.com/disk",{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Cookie:this.getCookieStr()},redirect:"manual"});if(this.updateCookiesFromHeaders(e.headers),e.status>=300&&e.status<400){let t=e.headers.get("location")||"";if(t&&!t.includes("/disk"))throw new Error("[WeiYun] Login cookie expired or invalid, please login again")}}async weixinRefreshToken(){let e=this.cookies.get("wy_appid")||"",t=this.cookies.get("refresh_token")||"";if(!e||!t)return;let i=`https://api.weixin.qq.com/sns/oauth2/refresh_token?grant_type=refresh_token&appid=${encodeURIComponent(e)}&refresh_token=${encodeURIComponent(t)}`,s=await(await fetch(i)).json().catch(()=>({}));if(s.errcode)throw new Error(`[WeiYun] WeChat refresh token failed: ${s.errmsg}`);s.openid&&this.cookies.set("openid",s.openid),s.access_token&&this.cookies.set("access_token",s.access_token),s.refresh_token&&this.cookies.set("refresh_token",s.refresh_token),this.pendingCookie=Dy(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}newHeader(e,t){let i=t.openid||t.minico_openid||"";return{seq:Math.floor(Date.now()/1e3),cmd:e,wx_openid:i,qq_openid:t.qq_openid||"",user_flag:t.token_type??0,env_id:t.env_id||"",type:1,appid:30013,version:3,major_version:3,minor_version:3,fix_version:3}}newBody(e,t,i){return{ReqMsg_body:{ext_req_head:{token_info:i,language_info:{language_type:2052}},[`.weiyun.${e}MsgReq_body`]:t}}}newUploadJson(e,t,i){return{req_header:{cmd:t,appid:30013,major_version:3,minor_version:0,fix_version:0,version:3,user_flag:0},req_body:{ReqMsg_body:{[`weiyun.${e}MsgReq_body`]:i}}}}async request(e,t,i,n,s){let a=this.parseTokenInfo(),o=this.cookies.get("wyctoken")||"",c="",l,d={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://www.weiyun.com",Cookie:this.getCookieStr()};if(e==="preUpload")c=`https://www.weiyun.com/api/v3/ftn_pre_upload?g_tk=${encodeURIComponent(o)}&cmd=${i}`,l=JSON.stringify(this.newUploadJson(t,i,n)),d["Content-Type"]="application/json; charset=UTF-8";else if(e==="upload"){c=`https://upload.weiyun.com/ftnup_v2/weiyun?g_tk=${encodeURIComponent(o)}&cmd=${i}`;let p="----WebKitFormBoundaryIifrOqiswelC8nfe";d["Content-Type"]=`multipart/form-data; boundary=${p}`;let I=JSON.stringify(this.newUploadJson(t,i,n)),m=`--${p}\r Content-Disposition: form-data; name="json"\r \r ${I}\r @@ -147,30 +149,30 @@ ${I}\r Content-Disposition: form-data; name="upload"; filename="blob"\r Content-Type: application/octet-stream\r \r -`);let C=`\r +`);let B=`\r --${p}--\r -`,b=new TextEncoder,x=b.encode(y),_=s?b.encode(w):new Uint8Array(0),R=b.encode(C),U=s?new Uint8Array(s):new Uint8Array(0),T=x.length+_.length+U.length+R.length,D=new Uint8Array(T),B=0;D.set(x,B),B+=x.length,_.length>0&&(D.set(_,B),B+=_.length,D.set(U,B),B+=U.length),D.set(R,B),l=D}else c=`https://www.weiyun.com/webapp/json/${e}/${t}?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify({req_header:JSON.stringify(this.newHeader(i,o)),req_body:JSON.stringify(this.newBody(t,n,o))}),d["Content-Type"]="application/json; charset=UTF-8";let u=await fetch(c,{method:"POST",headers:d,body:l});if(this.updateCookiesFromHeaders(u.headers),u.status===403)try{await this.refreshCtoken(),(this.loginType()==="weixin"||this.loginType()==="weixin_openid")&&(await this.weixinRefreshToken().catch(()=>{}),await this.refreshCtoken()),d.Cookie=this.getCookieStr(),d.g_tk=this.cookies.get("wyctoken")||"",u=await fetch(c,{method:"POST",headers:d,body:l}),this.updateCookiesFromHeaders(u.headers)}catch(p){throw new Error(`[WeiYun] Request failed (403): ${p.message}`)}if(!u.ok){let p=await u.text().catch(()=>"");throw new Error(`[WeiYun] HTTP ${u.status}: ${p}`)}let f=await u.json().catch(()=>({})),h=f.data||f.result;if(f.ret!==void 0&&f.ret!==0)throw new Error(`[WeiYun] Error (${f.ret}): ${f.msg||"Unknown"}`);if(h?.rsp_header&&h.rsp_header.retcode!==0){let p=h.rsp_header;throw new Error(`[WeiYun] Cmd ${p.cmd} (${p.cmdName||t}) Error (${p.retcode}): ${p.retmsg||"Unknown error"}`)}if(e==="preUpload")return h?.rsp_body?.RspMsg_body?.weiyunPreUploadMsgRsp_body||f;if(e==="upload")return h?.rsp_body?.RspMsg_body?.[`weiyun.${t}MsgRsp_body`]||f;let g=h?.rsp_body?.RspMsg_body;if(typeof g=="string")try{return JSON.parse(g)}catch{return g}return g||h||f}async diskUserInfoGet(){return this.request("weiyunQdiskClient","DiskUserInfoGet",2201,{is_get_upload_flow_flag:!1,is_get_high_speed_flow_info:!1,is_get_weiyun_flag:!1,is_get_space_clean_info:!1,is_get_user_reward_info:!1})}async libDirPathGet(e){return(await this.request("weiyunFileLibClient","LibDirPathGet",26150,{dir_key:e})).items||[]}async diskDirFileList(e,t={}){return this.request("weiyunQdisk","DiskDirList",2208,{dir_key:e,start:t.start||0,count:t.count||500,sort_field:t.sortField??2,reverse_order:t.reverseOrder??!1,get_type:t.getType??0,get_abstract_url:!1,get_dir_detail_info:!1})}async diskFileDownload(e){let i=(await this.request("weiyunQdiskClient","DiskFileBatchDownload",2402,{file_list:[e],download_type:0})).file_list||[];if(!i||i.length===0)throw new Error("[WeiYun] No download link returned");return i[0]}async diskDirCreate(e){return this.request("weiyunQdiskClient","DiskDirCreate",2614,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_name:e.dir_name,file_exist_option:2,create_type:1})}async diskFileRename(e,t){await this.request("weiyunQdiskClient","DiskFileRename",2605,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,file_id:e.file_id,src_filename:e.filename,filename:t})}async diskDirAttrModify(e,t){await this.request("weiyunQdiskClient","DiskDirAttrModify",2615,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_key:e.dir_key,src_dir_name:e.dir_name,dst_dir_name:t})}async diskFileDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{file_list:[e]})}async diskDirDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{dir_list:[e]})}async diskFileMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,file_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async diskDirMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,dir_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async preUpload(e,t,i,n,s,o=4,a=1){let l=0,d=n,u=0;n>0&&(d=n%1048576,d===0&&(d=1048576),u=d%128,u===0&&(u=128),l=n-d);let f=[],h=new zp;for(let x=0;x<l;x+=1048576){let _=s.subarray(x,x+1048576);h.update(_),f.push({sha:h.getStateHex(),offset:x,size:1048576})}let g=s.subarray(l,l+d-u);h.update(g);let p=h.getStateHex(),I=s.subarray(l+d-u,n);h.update(I);let y=W8(I),w=h.digestHex();f.push({sha:w,offset:l,size:d});let C={common_upload_req:{ppdir_key:e,pdir_key:t,file_size:n,filename:i,file_exist_option:a,use_mutil_channel:!0},upload_scr:0,channel_count:o,block_size:1048576,check_sha:p,check_data:y,block_info_list:f},b=await this.request("preUpload","PreUpload",247120,C);return b.common_upload_rsp&&(b.common_upload_rsp.file_sha=w,b.common_upload_rsp.file_size=n),b}async addUploadChannel(e,t,i){return this.request("upload","AddChannel",247122,{upload_key:i.upload_key,ex:i.ex,orig_channel_count:e,dest_channel_count:t,speed:4303})}async uploadPiece(e,t,i){let n=await this.request("upload","UploadPiece",247121,{upload_key:t.upload_key,ex:t.ex,channel:e},i);return n.channel&&n.channel.len===0&&n.upload_state===1&&(n.channel.len=e.len),n}}});function EJ(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function BJ(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadKey||!e.ex||!Number.isInteger(e.partCount)||e.partCount<1)throw new Error("invalid upload session");return e}catch{throw new Error("[WeiYun] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function n4(r){if(!r)return new Date().toISOString();try{let e=typeof r=="string"?parseInt(r,10):r;if(!isNaN(e)&&e>0){let i=e<1e10?e*1e3:e;return new Date(i).toISOString()}let t=new Date(r);if(!isNaN(t.getTime()))return t.toISOString()}catch{}return new Date().toISOString()}function r4(r){return{name:r.dir_name,size:0,is_dir:!0,modified:n4(r.dir_mtime||r.dir_ctime),sign:r.dir_key,type:1,thumb:"",raw_url:""}}function i4(r){return{name:r.filename,size:r.file_size||0,is_dir:!1,modified:n4(r.file_mtime||r.file_ctime),sign:r.file_id,type:X(r.filename,!1),thumb:r.ext_info?.thumb_url||"",raw_url:""}}function iE(r){let e={...r||{}};return e.root_folder_id=(e.root_folder_id||"").trim(),e.cookies=(e.cookies||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"4",e}var CJ,t4,$p,s4=j(()=>{"use strict";Be();He();e4();CJ=45,t4=1024*1024;$p=class{client;addition;rootFolderId="";rootPdirKey="";uploadThreads=4;pathFolderCache=new Map;budget={used:0,limit:CJ};constructor(e,t){this.addition=iE(e),this.client=new jp(this.addition,t)}async init(){let e=parseInt(this.addition.upload_thread||"4",10);if(this.uploadThreads=Math.min(32,Math.max(4,isNaN(e)?4:e)),this.addition.upload_thread=String(this.uploadThreads),await this.client.refreshCtoken(),this.addition.root_folder_id)this.rootFolderId=this.addition.root_folder_id;else{let n=await this.client.diskUserInfoGet();this.rootFolderId=n.main_dir_key||n.root_dir_key||"",this.addition.root_folder_id=this.rootFolderId}if(!this.rootFolderId)throw new Error("[WeiYun] Failed to obtain root folder ID");let t=await this.client.libDirPathGet(this.rootFolderId);if(!t||t.length===0)throw new Error(`[WeiYun] Invalid root directory ID: ${this.rootFolderId}`);let i=t[t.length-1];this.rootPdirKey=i.pdir_key||"",this.pathFolderCache.set("/",{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:i.dir_name||"root"})}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolder(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/");if(t==="/"||t===`/${this.rootFolderId}`)return{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"};if(this.pathFolderCache.has(t))return this.pathFolderCache.get(t);let i=t.split("/").filter(Boolean),n={dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"},s="";for(let o=0;o<i.length;o++){let a=i[o],c=(()=>{try{return decodeURIComponent(a)}catch{return a}})();if(s="/"+i.slice(0,o+1).join("/"),this.pathFolderCache.has(s)){n=this.pathFolderCache.get(s);continue}this.budget.used++,this.budget.used>=this.budget.limit&&console.warn(`[WeiYun] Cloudflare Worker subrequest budget limit (${this.budget.limit}) reached.`);let u=((await this.client.diskDirFileList(n.dirKey,{count:500,getType:1})).dir_list||[]).find(f=>f.dir_name===a||f.dir_name===c||f.dir_key===a);if(!u)throw new Error(`[WeiYun] Directory '${a}' not found in folder '${n.dirKey}'`);n={dirKey:u.dir_key,pdirKey:n.dirKey,dirName:u.dir_name},this.pathFolderCache.set(s,n)}return n}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[WeiYun] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolder(s);this.budget.used++;let a=await this.client.diskDirFileList(o.dirKey,{count:500,getType:0}),c=(a.file_list||[]).find(d=>d.filename===i||d.filename===n||d.file_id===i);if(c)return{file:c,parent:o,isDir:!1};let l=(a.dir_list||[]).find(d=>d.dir_name===i||d.dir_name===n||d.dir_key===i);if(l)return{folder:l,parent:o,isDir:!0};throw new Error(`[WeiYun] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolder(t),n=[],s=[],o=0;for(;;){if(this.budget.used++,this.budget.used>=this.budget.limit){console.warn(`[WeiYun] Subrequest budget limit (${this.budget.limit}) reached while listing ${t}`);break}let c=this.addition.order_by==="size"?3:this.addition.order_by==="updated_at"?2:1,l=this.addition.order_direction==="desc",d=await this.client.diskDirFileList(i.dirKey,{start:o,count:500,sortField:c,reverseOrder:l,getType:0}),u=d.dir_list||[],f=d.file_list||[];for(let h of u)h.pdir_key=i.dirKey,n.push(h);for(let h of f)h.pdir_key=i.dirKey,s.push(h);if(o=n.length+s.length,d.finish_flag||u.length===0&&f.length===0)break}let a=[...n.map(r4),...s.map(i4)];return de(a,this.addition.order_by==="size"?"size":this.addition.order_by==="updated_at"?"updated_at":"name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.rootFolderId}`)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootFolderId,type:1,raw_url:""};let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);if(a&&s)return r4(s);if(n){let c=i4(n);try{let l=await this.client.diskFileDownload({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename});c.raw_url=l.download_url,c.raw_url_headers={Cookie:`${l.cookie_name}=${l.cookie_value}`}}catch(l){console.warn(`[WeiYun] \u83B7\u53D6 ${n.filename} \u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25:`,l.message),c.raw_url_error=l.message}return c}throw new Error(`[WeiYun] \u6761\u76EE\u672A\u627E\u5230: ${t}`)}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u5EFA\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolder(s);await this.client.diskDirCreate({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_name:n})}async rename(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirAttrModify({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name},i):n&&await this.client.diskFileRename({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename},i)}async remove(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name}):n&&await this.client.diskFileDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename})}async move(e,t,i,n,s){this.budget.used=0;let{file:o,folder:a,parent:c,isDir:l}=await this.resolveFile(n),d=await this.resolveFolder(t);l&&a?await this.client.diskDirMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,dir_key:a.dir_key,dir_name:a.dir_name},{pdir_key:d.pdirKey,dir_key:d.dirKey}):o&&await this.client.diskFileMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,file_id:o.file_id,filename:o.filename},{pdir_key:d.pdirKey,dir_key:d.dirKey})}async copy(e,t,i,n,s){throw new Error("[WeiYun] \u5FAE\u4E91\u63A5\u53E3\u4E0D\u652F\u6301\u590D\u5236\u64CD\u4F5C (Copy not supported)")}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[WeiYun] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.resolveFolder(o),c=await this.client.preUpload(a.pdirKey,a.dirKey,s,i.length,i,4,1);if(c.file_exist)return;let l={upload_key:c.upload_key||"",ex:c.ex||""},d=c.channel_list||[];d.length===0&&(d=[{id:0,offset:0,len:i.length}]);for(let u of d){let f={...u};for(;f.offset<i.length;){let h=Math.min(f.len||t4,i.length-f.offset),g=i.subarray(f.offset,f.offset+h),p=await this.client.uploadPiece(f,l,g);if(p.upload_state===2)break;p.channel?f=p.channel:f.offset+=h}}}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFolder(t||"/"),a=t4,c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/a)),l=new Uint8Array(0),d=await this.client.preUpload(o.pdirKey,o.dirKey,i,Math.max(0,Number(n)||0),l,4,1);if(d.file_exist)return{reuse:!0,partCount:0,chunkSize:a,session:""};let u={upload_key:d.upload_key||"",ex:d.ex||""},f=d.channel_list||[];if(f.length<this.uploadThreads&&u.upload_key)try{let h=await this.client.addUploadChannel(f.length,this.uploadThreads,u);h.channels&&(f=[...f,...h.channels])}catch{}return{reuse:!1,partCount:c,chunkSize:a,session:EJ({uploadKey:u.upload_key,ex:u.ex,parentDirKey:o.pdirKey,pdirKey:o.dirKey,fileName:i,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:a,channels:f})}}async uploadPart(e,t,i){let n=BJ(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[WeiYun] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);let s=(t-1)*n.chunkSize,o={id:t-1,offset:s,len:i.length},a={upload_key:n.uploadKey,ex:n.ex};return await this.client.uploadPiece(o,a,i),{partNumber:t}}async completeUploadSession(e,t=[]){}}});async function NJ(r,e){let t=`${r}${e}1appkey`,i=await _o(t),n=$t(i);return`div101.${r}${n}`}async function o4(r,e,t,i,n,s,o){let a=await NJ(r,s);return[`ANDROID-${t}/${n}`,"protocolVersion/200","accesstype/",`clientid/${e}`,`clientversion/${n}`,"action_type/","networktype/WIFI","sessionid/",`deviceid/${r}`,"providername/NONE",`devicesign/${a}`,"refresh_token/",`sdkversion/${i}`,`datetime/${Date.now()}`,`usrno/${o}`,`appname/android-${t}`,"session_origin/","grant_type/","appid/","clientip/","devicename/Xiaomi_M2004j7ac","osversion/13","platformversion/10","accessmode/","devicemodel/M2004J7AC"].join(" ")}function nE(r,e){try{let t=new URL(e);return`${r.toUpperCase()}:${t.pathname}`}catch{let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/);return`${r.toUpperCase()}:${t?t[1]:""}`}}var bJ,vJ,kJ,SJ,DJ,QJ,_J,FJ,PJ,TJ,UJ,RJ,Vp,a4=j(()=>{"use strict";si();bJ=["SOP04dGzk0TNO7t7t9ekDbAmx+eq0OI1ovEx","nVBjhYiND4hZ2NCGyV5beamIr7k6ifAsAbl","Ddjpt5B/Cit6EDq2a6cXgxY9lkEIOw4yC1GDF28KrA","VVCogcmSNIVvgV6U+AochorydiSymi68YVNGiz","u5ujk5sM62gpJOsB/1Gu/zsfgfZO","dXYIiBOAHZgzSruaQ2Nhrqc2im","z5jUTBSIpBN9g4qSJGlidNAutX6","KJE2oveZ34du/g1tiimm"],vJ=["C9qPpZLN8ucRTaTiUMWYS9cQvWOE","+r6CQVxjzJV6LCV","F","pFJRC","9WXYIDGrwTCz2OiVlgZa90qpECPD6olt","/750aCr4lm/Sly/c","RB+DT/gZCrbV","","CyLsf7hdkIRxRm215hl","7xHvLi2tOYP0Y92b","ZGTXXxu8E/MIWaEDB+Sm/","1UI3","E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO","ihtqpG6FMt65+Xk+tWUH2","NhXXU9rg4XXdzo7u5o"],kJ=["KHBJ07an7ROXDoK7Db","G6n399rSWkl7WcQmw5rpQInurc1DkLmLJqE","JZD1A3M4x+jBFN62hkr7VDhkkZxb9g3rWqRZqFAAb","fQnw/AmSlbbI91Ik15gpddGgyU7U","/Dv9JdPYSj3sHiWjouR95NTQff","yGx2zuTjbWENZqecNI+edrQgqmZKP","ljrbSzdHLwbqcRn","lSHAsqCkGDGxQqqwrVu","TsWXI81fD1","vk7hBjawK/rOSrSWajtbMk95nfgf3"],SJ="1.53.2",DJ="com.pikcloud.pikpak",QJ="2.0.6.206003",_J="2.0.0",FJ="mypikpak.com",PJ="8.0.3",TJ="undefined",UJ="mypikpak.com",RJ="8.0.3";Vp=class{addition;clientId;clientSecret;clientVersion;packageName;sdkVersion;algorithms;deviceId;userId="";userAgent="";accessToken="";refreshTokenVal="";captchaTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.onTokenRefreshed=t,this.refreshTokenVal=e.refresh_token||"",this.captchaTokenVal=e.captcha_token||"";let i=e.platform||"web",n=e.client_id,s=e.client_secret;i==="android"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=SJ,this.packageName=DJ,this.sdkVersion=QJ,this.algorithms=bJ):i==="pc"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=TJ,this.packageName=UJ,this.sdkVersion=RJ,this.algorithms=kJ,this.userAgent="MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.6.11.4955 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"):(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=_J,this.packageName=FJ,this.sdkVersion=PJ,this.algorithms=vJ,this.userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"),this.deviceId=e.device_id||$t(`${e.username||""}${e.password||""}`)}getCaptchaSign(){let e=String(Date.now()),t=`${this.clientId}${this.clientVersion}${this.packageName}${this.deviceId}${e}`;for(let i of this.algorithms)t=$t(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaTokenVal,client_id:this.clientId,device_id:this.deviceId,meta:t,redirect_uri:"xlaccsdk01://xbase.cloud/callback?state=harbor"},s=await(await fetch(`https://user.mypikpak.net/v1/shield/captcha/init?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify(i)})).json();if(s.error_code&&s.error_code!==0)throw new Error(`Captcha error ${s.error_code}: ${s.error_description||s.error}`);if(s.url)throw new Error(`PikPak requires captcha verification: ${s.url}`);return s.captcha_token&&(this.captchaTokenVal=s.captcha_token),this.captchaTokenVal}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.clientVersion,package_name:this.packageName,user_id:t,timestamp:i,captcha_sign:n};return this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};return/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,this.refreshCaptchaToken(e,i)}async login(){if(!this.addition.username||!this.addition.password)throw new Error("PikPak username or password is required when refresh_token is not provided");let e="https://user.mypikpak.net/v1/auth/signin";this.captchaTokenVal||await this.refreshCaptchaTokenInLogin(nE("POST",e),this.addition.username);let i=await(await fetch(`${e}?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId,"X-Captcha-Token":this.captchaTokenVal},body:JSON.stringify({captcha_token:this.captchaTokenVal,client_id:this.clientId,client_secret:this.clientSecret,username:this.addition.username,password:this.addition.password})})).json();if(i.error_code&&i.error_code!==0)throw new Error(`PikPak login failed (${i.error_code}): ${i.error_description||i.error}`);this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async refreshToken(){if(!this.refreshTokenVal){await this.login();return}let i=await(await fetch(`https://user.mypikpak.net/v1/auth/token?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify({client_id:this.clientId,client_secret:this.clientSecret,grant_type:"refresh_token",refresh_token:this.refreshTokenVal})})).json();if(i.error_code&&i.error_code!==0){if(i.error_code===4126&&this.addition.username){await this.login();return}throw new Error(`PikPak token refresh failed (${i.error_code}): ${i.error_description||i.error}`)}this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async init(){this.addition.platform==="android"&&(this.userAgent=await o4(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId)),this.refreshTokenVal?await this.refreshToken():await this.login();try{await this.refreshCaptchaTokenAtLogin(nE("GET","https://api-drive.mypikpak.net/drive/v1/files"),this.userId)}catch(e){console.warn("[PikPak] post-login captcha init warning:",e)}this.addition.platform==="android"&&(this.userAgent=await o4(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId))}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e;if(n&&Object.keys(n).length>0){let f=new URLSearchParams(n).toString();a+=(e.includes("?")?"&":"?")+f}let c={"User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId};this.captchaTokenVal&&(c["X-Captcha-Token"]=this.captchaTokenVal),this.accessToken&&(c.Authorization=`Bearer ${this.accessToken}`),s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),d=await l.text(),u={};try{u=JSON.parse(d)}catch{u=d}if(u&&typeof u=="object"&&u.error_code){let f=u.error_code;if((f===4122||f===4121||f===16)&&o<2)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(f===9&&o<2)return await this.refreshCaptchaTokenAtLogin(nE(i,e),this.userId),this.request(e,{...t,retryCount:o+1});throw new Error(`PikPak API Error (${f}): ${u.error_description||u.error||JSON.stringify(u)}`)}if(!l.ok)throw new Error(`PikPak request failed with status ${l.status}: ${d}`);return u}}});var Yp,c4=j(()=>{"use strict";Be();He();si();a4();Yp=class{addition;client;rootId="";idCache=new Map;constructor(e,t){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new Vp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.getFiles(n)).find(l=>l.name===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async getFiles(e){let t=[],i="";for(;;){let n={parent_id:e,thumbnail_size:"SIZE_LARGE",with_audit:"true",limit:"100",filters:JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}})};i&&(n.page_token=i);let s=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"GET",params:n});if(s.files&&s.files.length>0&&t.push(...s.files),!s.next_page_token||s.next_page_token===i)break;i=s.next_page_token}return t}async list(e,t){let i=await this.resolveParentId(t),n=await this.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=a.kind==="drive#folder",l=s?`${s}/${a.name}`:`/${a.name}`;this.idCache.set(l,a.id);let d=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(d=a.medias[0].link.url),{name:a.name,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:d}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=await this.resolveParentId(t),o={_magic:"2021",usage:this.addition.disable_media_link?"FETCH":"CACHE",thumbnail_size:"SIZE_LARGE"},a=await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(s)}`,{method:"GET",params:o}),c=a.kind==="drive#folder",l=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(l=a.medias[0].link.url),{name:a.name||n,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name||n,c),thumb:a.thumbnail_link,raw_url:l}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n),a=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#folder",parent_id:o,name:s}});a?.file?.id&&this.idCache.set(i,a.file.id)}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(n)}`,{method:"PATCH",body:{name:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.name===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchTrash",{method:"POST",body:{ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let u of i){let f=c.find(h=>h.name===u);f&&l.push(f.id)}if(l.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchMove",{method:"POST",body:{ids:l,to:{parent_id:a}}});let d=this.cleanPath(n);for(let u of i)this.idCache.delete(d?`${d}/${u}`:`/${u}`)}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.name===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchCopy",{method:"POST",body:{ids:l,to:{parent_id:a}}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),c=(await _o(new Uint8Array(i))).toUpperCase(),l=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#file",name:o,size:String(i.length),hash:c,upload_type:"UPLOAD_TYPE_RESUMABLE",objProvider:{provider:"UPLOAD_TYPE_UNKNOWN"},parent_id:a,folder_type:"NORMAL"}});if(!l.resumable)return;let d=l.resumable.params,u=d.endpoint;this.addition.platform==="android"&&(u="mypikpak.net");let f=`https://${d.bucket}.${u}/${d.key}`,h=await fetch(f,{method:"PUT",headers:{"Content-Length":String(i.length),"x-oss-security-token":d.security_token},body:new Uint8Array(i)});if(!h.ok)throw new Error(`PikPak OSS upload failed: ${h.statusText}`)}async getDetails(){let e=await this.client.request("https://api-drive.mypikpak.net/drive/v1/about",{method:"GET"});return{totalSpace:parseInt(e.quota.limit||"0",10)||0,usedSpace:parseInt(e.quota.usage||"0",10)||0}}}});var Wp,l4=j(()=>{"use strict";Wp=class{addition;address;authorization="";onTokenRefreshed;decryptedRepos=new Map;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.onTokenRefreshed=t,e.token&&(this.authorization=`Token ${e.token}`)}async getToken(){if(this.addition.token){this.authorization=`Token ${this.addition.token}`;return}if(!this.addition.username||!this.addition.password)throw new Error("Seafile requires either token or username/password to authenticate");let e=new URLSearchParams;e.set("username",this.addition.username),e.set("password",this.addition.password);let t=await fetch(`${this.address}/api2/auth-token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Seafile auth failed (${t.status}): ${n}`)}let i=await t.json();this.authorization=`Token ${i.token}`,this.addition.token=i.token,this.onTokenRefreshed&&await this.onTokenRefreshed(i.token)}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.address}${e}`;if(n&&Object.keys(n).length>0){let g=new URLSearchParams(n).toString();c+=(c.includes("?")?"&":"?")+g}let l={Accept:"application/json"};this.authorization&&(l.Authorization=this.authorization);let d=s;if(o&&s&&!(s instanceof FormData)){let g=new URLSearchParams;for(let[p,I]of Object.entries(s))g.set(p,String(I));l["Content-Type"]="application/x-www-form-urlencoded",d=g.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(l["Content-Type"]="application/json",d=JSON.stringify(s));let u=await fetch(c,{method:i,headers:l,body:d});if(u.status===401&&a<1)return await this.getToken(),this.request(e,{...t,retryCount:a+1});if(!u.ok){let g=await u.text();throw new Error(`Seafile request failed (${u.status}): ${g}`)}return(u.headers.get("content-type")||"").includes("application/json")?await u.json():await u.text()}async getLibraryInfo(e){return this.request(`/api2/repos/${e}/`)}async decryptLibrary(e){if(!e.encrypted)return;if(!this.addition.repo_pwd)throw new Error("Seafile encrypted library password (repo_pwd) is not configured");let t=this.decryptedRepos.get(e.id)||0;if(Date.now()-t<1800*1e3)return;let i=await this.request(`/api2/repos/${e.id}/`,{method:"POST",isFormData:!0,body:{password:this.addition.repo_pwd}});if(typeof i=="string"&&!i.includes("success"))throw new Error(`Failed to decrypt Seafile library: ${i}`);this.decryptedRepos.set(e.id,Date.now())}}});var Xp,d4=j(()=>{"use strict";Be();He();l4();Xp=class{addition;client;repoId;rootPath="/";constructor(e,t){this.addition=e,this.repoId=e.repo_id||void 0,this.client=new Wp(e,t)}async init(){await this.client.getToken(),this.rootPath="/"+(this.addition.root_folder_path||"/").split("/").filter(Boolean).join("/")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveRepoAndPath(e){let t=this.cleanPath(e);if(this.repoId)return{repoId:this.repoId,innerPath:t,isRootListRepos:!1};if(t==="/")return{repoId:"",innerPath:"/",isRootListRepos:!0};let i=t.split("/").filter(Boolean),n=i[0],s="/"+i.slice(1).join("/"),a=(await this.client.request("/api2/repos/")).find(c=>c.name===n||c.id===n);if(!a)throw new Error(`Seafile library '${n}' not found`);return a.encrypted&&await this.client.decryptLibrary(a),{repoId:a.id,innerPath:s==="/"?"/":s,isRootListRepos:!1}}async list(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t);if(s){let l=(await this.client.request("/api2/repos/")).map(d=>({name:d.name,size:d.size||0,is_dir:!0,modified:d.mtime?new Date(d.mtime*1e3).toISOString():new Date().toISOString(),sign:d.id,type:1,raw_url:""}));return de(l,this.addition.order_by,this.addition.order_direction)}let a=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:n}})).map(c=>{let l=c.type==="dir";return{name:c.name,size:c.size||0,is_dir:l,modified:c.mtime?new Date(c.mtime*1e3).toISOString():new Date().toISOString(),sign:c.id,type:X(c.name,l),raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t),a=this.cleanPath(t).split("/").filter(Boolean).pop()||"root";if(s)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};if(n==="/"){let u=await this.client.getLibraryInfo(i);return{name:u.name||a,size:u.size||0,is_dir:!0,modified:u.mtime?new Date(u.mtime*1e3).toISOString():new Date().toISOString(),sign:u.id,type:1,raw_url:""}}let c="";try{let u=await this.client.request(`/api2/repos/${encodeURIComponent(i)}/file/`,{params:{p:n,reuse:"1"}});typeof u=="string"&&(c=u.replace(/^"|"$/g,"").trim())}catch{}let l=n.split("/").slice(0,-1).join("/")||"/",d=n.split("/").pop()||"";try{let f=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:l}})).find(h=>h.name===d);if(f){let h=f.type==="dir";return{name:f.name,size:f.size||0,is_dir:h,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString(),sign:f.id,type:X(f.name,h),raw_url:c}}}catch{}return{name:a,size:0,is_dir:!c,modified:new Date().toISOString(),sign:"",type:X(a,!c),raw_url:c}}async mkdir(e,t){let{repoId:i,innerPath:n}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{method:"POST",isFormData:!0,params:{p:n},body:{operation:"mkdir"}})}async rename(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"POST",isFormData:!0,params:{p:s},body:{operation:"rename",newname:i}})}async remove(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);for(let o of i){let a=s==="/"?`/${o}`:`${s}/${o}`;await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"DELETE",params:{p:a}})}}async move(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"move",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async copy(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"copy",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async put(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t),o=s.split("/").slice(0,-1).join("/")||"/",a=s.split("/").pop()||"upload",l=(await this.client.request(`/api2/repos/${encodeURIComponent(n)}/upload-link/`,{params:{p:o}})||"").replace(/^"|"$/g,"").trim();if(!l)throw new Error("Failed to get Seafile upload link");let d=new FormData;d.append("parent_dir",o),d.append("replace","1"),d.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),a),await this.client.request(l,{method:"POST",body:d})}}});var Zp,u4=j(()=>{"use strict";Zp=class{addition;accessToken="";refreshTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api!==!1){let s=`${this.addition.api_url_address||"https://api.oplist.org/yandexui/renewapi"}?refresh_ui=${encodeURIComponent(this.refreshTokenVal)}&server_use=true&driver_txt=yandexui_go`,o=await fetch(s,{method:"GET",headers:{Accept:"application/json"}});if(!o.ok)throw new Error(`Failed to refresh Yandex token online: ${o.statusText}`);let a=await o.json();if(!a.access_token)throw new Error(`Yandex online token refresh failed: ${a.text||"No access token returned"}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token,this.addition.refresh_token=a.refresh_token),this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal});return}if(!this.addition.client_id||!this.addition.client_secret)throw new Error("Yandex Disk requires client_id and client_secret when online API is disabled");let e=new URLSearchParams;e.set("grant_type","refresh_token"),e.set("refresh_token",this.refreshTokenVal),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let t=await fetch("https://oauth.yandex.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Yandex OAuth refresh failed (${t.status}): ${n}`)}let i=await t.json();this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.addition.refresh_token=i.refresh_token,this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal})}async init(){await this.refreshToken()}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e.startsWith("http")?e:`https://cloud-api.yandex.net/v1/disk/resources${e}`;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();a+=(a.includes("?")?"&":"?")+u}let c={Accept:"application/json",Authorization:`OAuth ${this.accessToken}`};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s});if(l.status===401&&o<1)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(!l.ok){let u=await l.text(),f=u;try{let h=JSON.parse(u);f=h.message||h.description||u}catch{}throw new Error(`Yandex Disk API Error (${l.status}): ${f}`)}return(l.headers.get("content-type")||"").includes("application/json")?await l.json():await l.text()}async getFiles(e,t,i){let s=0,o=[];for(;;){let a={path:e||"/",limit:String(100),offset:String(s)};t&&(a.sort=i==="desc"?`-${t}`:t);let l=(await this.request("",{method:"GET",params:a}))._embedded;if(!l||!l.items||(o.push(...l.items),l.total<=s+100||l.items.length===0))break;s+=100}return o}async getDownloadLink(e){return(await this.request("/download",{method:"GET",params:{path:e}})).href}async getUploadLink(e){return(await this.request("/upload",{method:"GET",params:{path:e,overwrite:"true"}})).href}}});var em,f4=j(()=>{"use strict";Be();He();u4();em=class{addition;client;constructor(e,t){this.addition=e,this.client=new Zp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i,this.addition.order_by,this.addition.order_direction)).map(o=>{let a=o.type==="dir";return{name:o.name,size:o.size||0,is_dir:a,created:o.created,modified:o.modified||new Date().toISOString(),sign:o.path||o.name,type:X(o.name,a),thumb:o.preview,raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=await this.client.request("",{method:"GET",params:{path:i}}),o=s.type==="dir",a="";if(!o)try{a=await this.client.getDownloadLink(i)}catch(c){console.warn("[Yandex] get download link failed:",c)}return{name:s.name||n,size:s.size||0,is_dir:o,created:s.created,modified:s.modified||new Date().toISOString(),sign:s.path||i,type:X(s.name||n,o),raw_url:a}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("",{method:"PUT",params:{path:i}})}async rename(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=s==="/"?`/${i}`:`${s}/${i}`;await this.client.request("/move",{method:"POST",params:{from:n,path:o,overwrite:"true"}})}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n==="/"?`/${s}`:`${n}/${s}`;await this.client.request("",{method:"DELETE",params:{path:o}})}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/move",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/copy",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async put(e,t,i){let n=this.cleanPath(t),s=await this.client.getUploadLink(n),o=await fetch(s,{method:"PUT",headers:{"Content-Length":String(i.length),"Content-Type":"application/octet-stream"},body:new Uint8Array(i)});if(!o.ok)throw new Error(`Yandex upload failed: ${o.statusText}`)}}});function qJ(r,e){let t=new Array(256),i=new Array(256),n=[],s=r.length;for(let l=0;l<256;l++)t[l]=r.charCodeAt(l%s),i[l]=l;let o=0;for(let l=0;l<256;l++){o=(o+i[l]+t[l])%256;let d=i[l];i[l]=i[o],i[o]=d}let a=0;o=0;for(let l=0;l<e.length;l++){a=(a+1)%256,o=(o+i[a])%256;let d=i[a];i[a]=i[o],i[o]=d;let u=i[(i[a]+i[o])%256];n.push(e.charCodeAt(l)^u)}let c="";for(let l of n)c+=String.fromCharCode(l);return btoa(c)}var tm,A4=j(()=>{"use strict";tm=class{addition;baseUrl="https://www.terabox.com";urlDomainPrefix="jp";jsToken="";onCookieRefreshed;constructor(e,t){this.addition=e,this.onCookieRefreshed=t}async resetJsToken(){let e=await fetch(this.baseUrl,{method:"GET",headers:{Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw new Error(`Failed to fetch TeraBox home page: ${e.statusText}`);let t=await e.text(),i=t.match(/`function%20fn%28a%29%7Bwindow.jsToken%20%3D%20a%7D%3Bfn%28%22([^"]+?)%22%29`/);if(i&&i[1]){this.jsToken=i[1];return}let n=t.match(/jsToken\s*=\s*["']([^"']+)["']/);if(n&&n[1]){this.jsToken=n[1];return}this.jsToken=""}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.baseUrl}${e}`,l={app_id:"250528",web:"1",channel:"dubox",clienttype:"0",...n||{}};this.jsToken&&(l.jsToken=this.jsToken);let d=new URLSearchParams(l).toString();c+=(c.includes("?")?"&":"?")+d;let u={Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"},f=s;if(o&&s&&!(s instanceof FormData)){let I=new URLSearchParams;for(let[y,w]of Object.entries(s))I.set(y,String(w));u["Content-Type"]="application/x-www-form-urlencoded",f=I.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(u["Content-Type"]="application/json",f=JSON.stringify(s));let h=await fetch(c,{method:i,headers:u,body:f}),g=await h.text(),p={};try{p=JSON.parse(g)}catch{p=g}if(p&&typeof p=="object"&&p.errno!==void 0){let I=Number(p.errno);if((I===4000023||I===450016)&&a<2)return await this.resetJsToken(),this.request(e,{...t,retryCount:a+1});if(I===-6&&a<2){let y=h.headers.get("url-domain-prefix");if(y)return this.urlDomainPrefix=y,this.baseUrl=`https://${y}.terabox.com`,this.request(e,{...t,retryCount:a+1})}}return p}async init(){let e=await this.request("/api/check/login",{method:"GET"});if(e.errno!==0)throw e.errno===9e3?new Error("TeraBox is not yet available in this area (errno 9000)"):new Error(`Failed to verify TeraBox login status according to cookie (errno ${e.errno})`)}async genSign(){let e=await this.request("/api/home/info",{method:"GET"});if(!e.data||!e.data.sign1||!e.data.sign3)throw new Error("Failed to get TeraBox sign keys from home/info");return qJ(e.data.sign3,e.data.sign1)}async linkOfficial(e){let t=await this.genSign(),i={type:"dlink",fidlist:`[${e}]`,sign:t,vip:"2",timestamp:String(Math.floor(Date.now()/1e3))},n=await this.request("/api/download",{method:"GET",params:i});if(!n.dlink||n.dlink.length===0)throw new Error(`TeraBox fid ${e} no dlink found (errno: ${n.errno})`);let s=n.dlink[0].dlink;return(await fetch(s,{method:"GET",redirect:"manual",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}})).headers.get("location")||s}async linkCrack(e){let t={target:JSON.stringify([e]),dlink:"1",origin:"dlna"},i=await this.request("/api/filemetas",{method:"GET",params:t});if(!i.info||i.info.length===0||!i.info[0].dlink)throw new Error(`TeraBox crack download failed for ${e}`);return i.info[0].dlink}async manage(e,t){let i=new URLSearchParams;return i.set("async","0"),i.set("filelist",JSON.stringify(t)),i.set("ondup","newcopy"),this.request("/api/filemanager",{method:"POST",params:{onnest:"fail",opera:e},isFormData:!0,body:{async:"0",filelist:JSON.stringify(t),ondup:"newcopy"}})}}});var rm,h4=j(()=>{"use strict";Be();He();si();A4();rm=class{addition;client;constructor(e,t){this.addition=e,this.client=new tm(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=[],s=1,o=100;for(;;){let c={dir:i,page:String(s),num:String(o)};this.addition.order_by&&(c.order=this.addition.order_by,this.addition.order_direction==="desc"&&(c.desc="1"));let l=await this.client.request("/api/list",{method:"GET",params:c});if(l.errno===9e3)throw new Error("TeraBox is not yet available in this area");if(!l.list||l.list.length===0)break;n.push(...l.list),s++}let a=n.map(c=>{let l=c.isdir===1;return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/")||"/",o=i.split("/").pop()||"",c=(await this.client.request("/api/list",{method:"GET",params:{dir:s,page:"1",num:"1000"}})).list?.find(u=>u.server_filename===o);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=c.isdir===1,d="";if(!l)try{this.addition.download_api==="crack"?d=await this.client.linkCrack(i):d=await this.client.linkOfficial(c.fs_id)}catch(u){console.warn("[TeraBox] get download link failed:",u)}return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:d,raw_url_headers:{"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{a:"commit"},body:{path:i,isdir:"1",block_list:"[]"}})}async rename(e,t,i){let n=this.cleanPath(t);await this.client.manage("rename",[{path:n,newname:i}])}async remove(e,t,i){let n=this.cleanPath(t),s=i.map(o=>n==="/"?`/${o}`:`${n}/${o}`);await this.client.manage("delete",s)}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("move",c)}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("copy",c)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",l=(await(await fetch("https://jp-data.terabox.com/rest/2.0/pcs/file?method=locateupload")).json()).host||"d.terabox.com",d=$t(new Uint8Array(i)),u={path:n,autoinit:"1",target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3)),file_limit_switch_v34:"true"},f=await this.client.request("/api/precreate",{method:"POST",isFormData:!0,body:u});if(f.errno!==0)throw new Error(`TeraBox precreate failed (errno: ${f.errno})`);if(f.return_type===2)return;let h=`https://${l}/rest/2.0/pcs/superfile2?method=upload&path=${encodeURIComponent(n)}&uploadid=${encodeURIComponent(f.uploadid)}&partseq=0`,g=new FormData;g.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let p=await fetch(h,{method:"POST",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"},body:g});if(!p.ok)throw new Error(`TeraBox upload chunk failed: ${p.statusText}`);let I={path:n,size:String(i.length),uploadid:f.uploadid,target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3))};await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{isdir:"0",rtype:"1"},body:I})}}});var im,g4=j(()=>{"use strict";im=class{addition;constructor(e){this.addition=e}async request(e,t={}){let{method:i="GET",params:n,body:s}=t,o=e;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();o+=(o.includes("?")?"&":"?")+u}let a={Authorization:`Bearer ${this.addition.access_token}`,Accept:"application/json"};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(a["Content-Type"]="application/json");let c=await fetch(o,{method:i,headers:a,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),l=await c.text(),d={};try{d=JSON.parse(l)}catch{d=l}if(d&&typeof d=="object"&&d.status&&d.status!=="SUCCESS")throw new Error(`MediaTrack API Error: ${d.message||JSON.stringify(d)}`);if(!c.ok)throw new Error(`MediaTrack request failed (${c.status}): ${l}`);return d}async init(){await this.request("https://kayle.api.mediatrack.cn/users",{method:"GET"})}async getFiles(e){let t=[],i=1,n="";for(this.addition.order_by&&(n=(this.addition.order_desc?"-":"")+this.addition.order_by);;){let s={page:String(i),size:"50"};n&&(s.sort=n);let a=(await this.request(`https://jayce.api.mediatrack.cn/v4/assets/${encodeURIComponent(e)}/children`,{method:"GET",params:s})).data?.assets||[];if(a.length===0)break;t.push(...a),i++}return t}async getDownloadUrl(e){let t=this.addition.project_id||"",i=`https://kayn.api.mediatrack.cn/v1/download_token/asset?asset_id=${encodeURIComponent(e)}&source_type=project&password=&source_id=${encodeURIComponent(t)}`,s=(await this.request(i,{method:"GET"}))?.data?.token;if(!s)throw new Error(`Failed to get download token for asset ${e}`);let o=`https://kayn.api.mediatrack.cn/v1/download/redirect?token=${encodeURIComponent(s)}`;return(await fetch(o,{method:"GET",redirect:"manual"})).headers.get("location")||o}}});var nm,p4=j(()=>{"use strict";Be();He();g4();nm=class{addition;client;rootId="";idCache=new Map;constructor(e){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new im(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.client.getFiles(n)).find(l=>l.title===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async list(e,t){let i=await this.resolveParentId(t),n=await this.client.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=!a.file,l=s?`${s}/${a.title}`:`/${a.title}`;this.idCache.set(l,a.id);let d="";return a.file&&a.file.cover&&(d="https://nano.mtres.cn/"+a.file.cover),{name:a.title,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_at,modified:a.updated_at||new Date().toISOString(),sign:a.id,type:X(a.title,c),thumb:d,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_desc?"desc":"asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/"),o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.title===n);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=!c.file,d="";if(!l)try{d=await this.client.getDownloadUrl(c.id)}catch(f){console.warn("[MediaTrack] get download URL failed:",f)}let u="";return c.file&&c.file.cover&&(u="https://nano.mtres.cn/"+c.file.cover),{name:c.title,size:parseInt(c.size||"0",10)||0,is_dir:l,created:c.created_at,modified:c.updated_at||new Date().toISOString(),sign:c.id,type:X(c.title,l),thumb:u,raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(o)}/children`,{method:"POST",body:{type:1,title:s}})}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(n)}`,{method:"PUT",body:{title:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.client.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.title===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/delete",{method:"DELETE",body:{origin_id:n,ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/move",{method:"POST",body:{parent_id:a,ids:l}})}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/clone",{method:"POST",body:{parent_id:a,ids:l}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),l=`assets/${Math.random().toString(36).slice(2)}`,u=(await this.client.request("https://jayce.api.mediatrack.cn/v3/storage/tokens/asset",{method:"GET",params:{src:l}})).data?.url;u&&await fetch(u,{method:"PUT",headers:{"Content-Length":String(i.length)},body:new Uint8Array(i)}),await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(a)}/children`,{method:"POST",body:{category:0,description:o,mime:"application/octet-stream",size:String(i.length),src:l,title:o,type:0}})}}});var sm,m4=j(()=>{"use strict";Be();He();sm=class{addition;pathPairs=[];rootOrder=[];pathMap=new Map;constructor(e){this.addition=e,this.parsePaths()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}parsePaths(){let t=(this.addition.paths||"").split(` -`).map(i=>i.trim()).filter(Boolean);this.pathPairs=[],this.rootOrder=[],this.pathMap.clear();for(let i of t){let n="/",s=i,o=i.indexOf(":");o>0&&(n=this.cleanPath(i.slice(0,o)),s=i.slice(o+1).trim()),s=this.cleanPath(s),this.pathPairs.push({aliasSubPath:n,targetPath:s}),this.pathMap.has(n)||(this.rootOrder.push(n),this.pathMap.set(n,[])),this.pathMap.get(n).push(s)}}async init(){this.parsePaths()}getTargetsForPath(e){let t=this.cleanPath(e),i=[];if(this.rootOrder.length===1&&this.rootOrder[0]==="/"){let n=this.pathMap.get("/")||[];for(let s of n){let o=t==="/"?s:`${s}${t}`;i.push({targetFullPath:this.cleanPath(o),subPath:t})}return i}for(let[n,s]of this.pathMap.entries())if(n===t)for(let o of s)i.push({targetFullPath:o,subPath:"/"});else if(t.startsWith(n==="/"?"/":`${n}/`)){let o=t.slice(n==="/"?0:n.length);for(let a of s){let c=o==="/"?a:`${a}${o}`;i.push({targetFullPath:this.cleanPath(c),subPath:o})}}return i}async list(e,t){let i=this.cleanPath(t),{listItems:n}=await Promise.resolve().then(()=>(Yt(),qi));if(i==="/"&&this.rootOrder.length>1){let c=[];for(let l of this.rootOrder){let d=l.replace(/^\//,"").split("/")[0]||l;c.some(u=>u.name===d)||c.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""})}return de(c,this.addition.order_by,this.addition.order_direction)}let s=this.getTargetsForPath(t);if(s.length===0)return[];let o=new Map;for(let c of s)try{let l=await n(c.targetFullPath);for(let d of l.content)o.has(d.name)||o.set(d.name,d)}catch(l){console.warn(`[Alias] listing target ${c.targetFullPath} warning:`,l)}let a=Array.from(o.values());return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/"&&this.rootOrder.length>1)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=this.getTargetsForPath(t);if(s.length===0)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""};let{getItem:o}=await Promise.resolve().then(()=>(Yt(),qi));for(let a of s)try{let c=await o(a.targetFullPath);if(c?.item)return{...c.item,raw_url:c.item.raw_url||c.rawUrl}}catch{}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=this.getTargetsForPath(t);if(i.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{makeDirectory:n}=await Promise.resolve().then(()=>(Yt(),qi));await n(i[0].targetFullPath)}async rename(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{renameItem:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}async remove(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)return;let{removeItems:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}async move(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{moveItems:c}=await Promise.resolve().then(()=>(Yt(),qi));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async copy(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{copyItems:c}=await Promise.resolve().then(()=>(Yt(),qi));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async put(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for upload path ${t}`);let{putItem:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}}});var om,y4=j(()=>{"use strict";om=class{addition;onTokenRefreshed;base="https://api.dropboxapi.com";contentBase="https://content.dropboxapi.com";constructor(e,t){this.addition=e,this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api&&this.addition.api_url_address){let e=new URL(this.addition.api_url_address);e.searchParams.set("refresh_ui",this.addition.refresh_token),e.searchParams.set("server_use","true"),e.searchParams.set("driver_txt","dropboxs_go");let t=await fetch(e.toString());if(!t.ok)throw new Error(`Failed to refresh token: HTTP ${t.status}`);let i=await t.json();if(!i.access_token)throw new Error(i.text||"Empty token returned from renew API");this.addition.access_token=i.access_token,i.refresh_token&&(this.addition.refresh_token=i.refresh_token)}else{let e=`${this.base}/oauth2/token`,t=new URLSearchParams({grant_type:"refresh_token",refresh_token:this.addition.refresh_token,client_id:this.addition.client_id||"",client_secret:this.addition.client_secret||""}),i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!i.ok){let s=await i.text();throw new Error(`Failed to refresh token: HTTP ${i.status} - ${s}`)}let n=await i.json();this.addition.access_token=n.access_token,n.refresh_token&&(this.addition.refresh_token=n.refresh_token)}this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.addition.access_token||"",refreshToken:this.addition.refresh_token||""})}async request(e,t={},i=!0){this.addition.access_token||await this.refreshToken();let s=`${t.isContentApi?this.contentBase:this.base}${e}`,o={Authorization:`Bearer ${this.addition.access_token}`,...t.customHeaders};this.addition.root_namespace_id&&(o["Dropbox-API-Path-Root"]=JSON.stringify({".tag":"root",root:this.addition.root_namespace_id}));let a;t.body!==void 0&&(typeof t.body=="object"&&!(t.body instanceof Uint8Array)&&!(t.body instanceof ArrayBuffer)&&!(t.body instanceof ReadableStream)?(o["Content-Type"]="application/json",a=JSON.stringify(t.body)):a=t.body);let c=await fetch(s,{method:t.method||"POST",headers:o,body:a});if(!c.ok){let d=await c.text(),u=c.status===401||d.includes("expired_access_token")||d.includes("invalid_access_token");if(i&&u)return await this.refreshToken(),this.request(e,t,!1);throw new Error(`Dropbox API error (${c.status}): ${d}`)}return(c.headers.get("content-type")||"").includes("application/json")?await c.json():await c.text()}async init(){if(!this.addition.access_token&&this.addition.refresh_token&&await this.refreshToken(),!this.addition.root_namespace_id)try{let e=await this.getCurrentAccount();e.root_info?.root_namespace_id&&(this.addition.root_namespace_id=e.root_info.root_namespace_id)}catch(e){console.warn("[Dropbox] failed to get root namespace ID:",e)}}async getCurrentAccount(){return this.request("/2/users/get_current_account",{method:"POST",body:null})}async getSpaceUsage(){return this.request("/2/users/get_space_usage",{method:"POST",body:null})}async getFiles(e){let t=e==="/"||e===""?"":e,i=await this.request("/2/files/list_folder",{method:"POST",body:{path:t,recursive:!1,include_deleted:!1,include_has_explicit_shared_members:!1,include_mounted_folders:!0,include_non_downloadable_files:!1,limit:2e3}}),n=[...i.entries];for(;i.has_more;)i=await this.request("/2/files/list_folder/continue",{method:"POST",body:{cursor:i.cursor}}),n.push(...i.entries);return n}async getTemporaryLink(e){return(await this.request("/2/files/get_temporary_link",{method:"POST",body:{path:e}})).link}async createFolder(e){await this.request("/2/files/create_folder_v2",{method:"POST",body:{path:e,autorename:!1}})}async move(e,t){await this.request("/2/files/move_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async copy(e,t){await this.request("/2/files/copy_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async delete(e){await this.request("/2/files/delete_v2",{method:"POST",body:{path:e}})}}});var am,I4=j(()=>{"use strict";Be();He();y4();am=class{addition;client;constructor(e,t){this.addition=e,this.client=new om(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>{let a=o[".tag"]==="folder",c=o.path_display||o.path_lower||`/${o.name}`;return{name:o.name,size:o.size||0,is_dir:a,modified:o.server_modified||o.client_modified||new Date().toISOString(),sign:o.id||c,type:X(o.name,a),raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};try{let s=await this.client.getTemporaryLink(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}catch{return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1,raw_url:""}}}async link(e,t){let i=this.cleanPath(t);return{url:await this.client.getTemporaryLink(i)}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.createFolder(i)}async rename(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/")),o=s?`${s}/${i}`:`/${i}`;await this.client.move(n,o)}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n===""?`/${s}`:`${n}/${s}`;await this.client.delete(o)}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.move(l,d)}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.copy(l,d)}}async put(e,t,i){let n=this.cleanPath(t);await this.client.request("/2/files/upload",{method:"POST",isContentApi:!0,customHeaders:{"Dropbox-API-Arg":JSON.stringify({path:n,mode:"overwrite",autorename:!1,mute:!1,strict_conflict:!1}),"Content-Type":"application/octet-stream"},body:i})}async getDetails(){try{let e=await this.client.getSpaceUsage();return{total_space:e.allocation?.allocated||0,used_space:e.used||0}}catch{return{}}}}});var sE,w4,cm,x4=j(()=>{"use strict";sE="https://365.kdocs.cn",w4="https://drive.wps.cn",cm=class{addition;loginState;constructor(e){this.addition=e}isPersonal(){return this.loginState?.is_company_account!==void 0?!this.loginState.is_company_account:(this.addition.mode||"Personal")==="Personal"}driveHost(){return this.isPersonal()?w4:sE}drivePrefix(){return this.isPersonal()?"":"/3rd/drive"}driveUrl(e){return`${this.driveHost()}${this.drivePrefix()}${e}`}getUA(){return this.addition.custom_ua||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}async request(e,t={}){let i=new URL(e);if(t.params)for(let[c,l]of Object.entries(t.params))i.searchParams.set(c,l);let n={Cookie:this.addition.cookie,Accept:"application/json","User-Agent":this.getUA(),Origin:this.driveHost(),...t.headers},s;t.body!==void 0&&(typeof t.body=="object"?(n["Content-Type"]="application/json",s=JSON.stringify(t.body)):s=t.body);let o=await fetch(i.toString(),{method:t.method||"GET",headers:n,body:s});if(!o.ok){let c=await o.text();throw new Error(`WPS API error (${o.status}): ${c}`)}if((o.headers.get("content-type")||"").includes("application/json")){let c=await o.json();if(c.result&&c.result!=="ok"&&c.result!=="success")throw new Error(`WPS API error: ${c.result} - ${c.msg||""}`);return c}return await o.text()}async init(){if(!this.addition.cookie)throw new Error("WPS cookie is required");let e=await this.request("https://account.kdocs.cn/api/v3/islogin",{method:"GET"});this.loginState=e}async getGroups(){if(this.isPersonal())return((await this.request(this.driveUrl("/api/v3/groups"))).groups||[]).map(s=>({group_id:s.id,id:s.id,name:s.name}));let e=this.loginState?.companyid||0,t=`${sE}/3rd/plus/groups/v1/companies/${e}/users/self/groups/private`;return(await this.request(t)).groups||[]}async getFiles(e,t){let i=[],n=0;for(let s=0;s<50;s++){let o=this.driveUrl(`/api/v5/groups/${e}/files`),a=await this.request(o,{params:{parentid:String(t),offset:String(n)}});if(a.files&&a.files.length>0&&i.push(...a.files),a.next_offset===-1||a.next_offset===void 0)break;n=a.next_offset}return i}async getDownloadUrl(e,t){let i=this.driveUrl(`/api/v5/groups/${e}/files/${t}/download?support_checksums=sha1`),n=await this.request(i);if(!n.url)throw new Error("Empty download url received from WPS");return n.url}async createFolder(e,t,i){await this.request(this.driveUrl("/api/v5/files/folder"),{method:"POST",body:{groupid:e,parentid:t,name:i}})}async rename(e,t,i){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/${t}`),{method:"PUT",body:{fname:i}})}async move(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/move`),{method:"POST",body:{fileids:[t],target_groupid:i,target_parentid:n}})}async copy(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/copy`),{method:"POST",body:{fileids:[t],groupid:e,target_groupid:i,target_parentid:n,duplicated_name_model:1}})}async delete(e,t){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/delete`),{method:"POST",body:{fileids:[t]}})}async getStorageDetails(){if(this.isPersonal()){let s=`${w4}/api/v3/spaces`,o=await this.request(s);return{total:o.total,used:o.used}}let e=this.loginState?.companyid||0,t=`${sE}/3rd/plussvr/compose/v1/u/companies/batch/service-space?comp_ids=${e}`,n=((await this.request(t)).info||[]).find(s=>s.id===e);return n?{total:n.space_total,used:n.space_used}:{}}}});var lm,C4=j(()=>{"use strict";Be();He();x4();lm=class{addition;client;constructor(e){this.addition=e,this.client=new cm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolvePath(e){let t=this.cleanPath(e);if(t==="/")return{kind:"root",groupId:0,fileId:0,name:"root",isDir:!0,size:0,modified:new Date().toISOString()};let i=t.split("/").filter(Boolean),s=(await this.client.getGroups()).find(l=>l.name===i[0]);if(!s)return null;let o=s.group_id||s.id||0;if(i.length===1)return{kind:"group",groupId:o,fileId:0,name:s.name,isDir:!0,size:0,modified:new Date().toISOString()};let a=0,c=null;for(let l=1;l<i.length;l++){let d=i[l],f=(await this.client.getFiles(o,a)).find(g=>g.fname===d);if(!f)return null;let h=f.ftype==="folder";c={kind:h?"folder":"file",groupId:o,fileId:f.id,name:f.fname,isDir:h,size:f.fsize||0,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString()},a=f.id}return c}async list(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||!n.isDir)return[];if(n.kind==="root"){let c=(await this.client.getGroups()).map(l=>({name:l.name,size:0,is_dir:!0,modified:new Date().toISOString(),sign:String(l.group_id||l.id),type:1,raw_url:""}));return de(c,this.addition.order_by,this.addition.order_direction)}let o=(await this.client.getFiles(n.groupId,n.fileId)).map(a=>{let c=a.ftype==="folder";return{name:a.fname,size:a.fsize||0,is_dir:c,modified:a.mtime?new Date(a.mtime*1e3).toISOString():new Date().toISOString(),sign:String(a.id),type:X(a.fname,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n)throw new Error(`Path not found: ${i}`);let s="";if(!n.isDir&&n.kind==="file")try{s=await this.client.getDownloadUrl(n.groupId,n.fileId)}catch(o){console.warn("[WPS] failed to get download url in get():",o)}return{name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified,sign:String(n.fileId||n.groupId),type:X(n.name,n.isDir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||n.isDir||n.kind!=="file")throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadUrl(n.groupId,n.fileId),headers:{"User-Agent":this.client.getUA(),Referer:this.client.driveHost()}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolvePath(n);if(!o||!o.isDir||o.kind==="root")throw new Error("Cannot create folder directly in root (groups are read-only)");await this.client.createFolder(o.groupId,o.fileId,s)}async move(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.move(l.groupId,l.fileId,o.groupId,o.fileId)}}async rename(e,t,i){let n=await this.resolvePath(this.cleanPath(t));if(!n)throw new Error("Source node not found");await this.client.rename(n.groupId,n.fileId,i)}async copy(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.copy(l.groupId,l.fileId,o.groupId,o.fileId)}}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=await this.resolvePath(s);o&&o.kind!=="root"&&o.kind!=="group"&&await this.client.delete(o.groupId,o.fileId)}}async put(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/"))||"/",o=n.substring(n.lastIndexOf("/")+1),a=await this.resolvePath(s);if(!a||!a.isDir)throw new Error(`Parent directory not found: ${s}`);console.warn(`[WPS] direct small upload for ${o}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function OJ(r){let e=encodeURIComponent(r);return e=e.replace(/\+/g,"%20"),e=e.replace(/!/g,"%21"),e=e.replace(/'/g,"%27"),e=e.replace(/\(/g,"%28"),e=e.replace(/\)/g,"%29"),e=e.replace(/\*/g,"%2A"),e}function oE(r){return pc.default.MD5(r).toString(pc.default.enc.Hex)}function MJ(r,e,t){let n=OJ(r).split("").sort().join(""),s=pc.default.enc.Utf8.parse(n),o=pc.default.enc.Base64.stringify(s),a=oE(o)+oE(`${e}:${t}`);return oE(a).toUpperCase()}function LJ(r){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function HJ(r){let e=t=>String(t).padStart(2,"0");return`${r.getFullYear()}-${e(r.getMonth()+1)}-${e(r.getDate())} ${e(r.getHours())}:${e(r.getMinutes())}:${e(r.getSeconds())}`}var pc,dm,E4=j(()=>{"use strict";pc=Qr(fc(),1);dm=class{addition;personalHost="https://yun.139.com";familyHost="https://yun.139.com";groupHost="https://yun.139.com";account="";constructor(e){this.addition=e,this.extractAccount()}extractAccount(){if(this.addition.authorization)try{let e=this.getAuthString(),i=pc.default.enc.Base64.parse(e).toString(pc.default.enc.Utf8).split(":");i.length>=2&&(this.account=i[1])}catch{}}getAuthString(){let e=(this.addition.authorization||"").trim();return e.startsWith("Basic ")&&(e=e.slice(6).trim()),e}isPersonalNew(){return!this.addition.type||this.addition.type==="personal_new"}isFamily(){return this.addition.type==="family"}isGroup(){return this.addition.type==="group"}getHost(){return this.isFamily()?this.familyHost:this.isGroup()?this.groupHost:this.personalHost}async request(e,t){let i=HJ(new Date),n=LJ(16),s=JSON.stringify(t||{}),o=MJ(s,i,n),a;e.startsWith("http://")||e.startsWith("https://")?a=e:e.startsWith("/orchestration/")?a=`https://yun.139.com${e}`:a=`${this.getHost()}${e}`;let c=this.isFamily()?"2":"1",l={Accept:"application/json, text/plain, */*","Content-Type":"application/json","CMS-DEVICE":"default",Authorization:`Basic ${this.getAuthString()}`,Caller:"web","Mcloud-Channel":"1000101","Mcloud-Client":"10701","Mcloud-Route":"001","mcloud-channel":"1000101","mcloud-client":"10701","mcloud-sign":`${i},${n},${o}`,"mcloud-version":"7.14.0",Origin:"https://yun.139.com",Referer:"https://yun.139.com/w/","x-DeviceInfo":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||","x-huawei-channelSrc":"10000034","x-inner-ntwk":"2","x-m4c-caller":"PC","x-m4c-src":"10002","x-SvcType":c,"Inner-Hcy-Router-Https":"1","X-Yun-Api-Version":"v1","X-Yun-App-Channel":"10000034","X-Yun-Channel-Source":"10000034","X-Yun-Client-Info":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||dW5kZWZpbmVk||","X-Yun-Module-Type":"100","X-Yun-Svc-Type":"1"},d=await fetch(a,{method:"POST",headers:l,body:s});if(!d.ok){let f=await d.text();throw new Error(`139 Cloud API error (${d.status}): ${f}`)}let u=await d.json();if(u.success===!1&&u.message)throw new Error(`139 Cloud API error: ${u.message}`);return u}async init(){if(!this.addition.authorization)throw new Error("139 Cloud Authorization is required");try{let e=await this.request("https://user-njs.yun.139.com/user/route/qryRoutePolicy",{userInfo:{userType:1,accountType:1,accountName:this.account},modAddrType:1});if(e.data?.routePolicyList)for(let t of e.data.routePolicyList)t.modName==="personal"&&t.httpsUrl?this.personalHost=t.httpsUrl:t.modName==="group"&&t.httpsUrl?this.groupHost=t.httpsUrl:t.modName==="family"&&t.httpsUrl&&(this.familyHost=t.httpsUrl)}catch(e){console.warn("[139] queryRoutePolicy warning, fallback to default host:",e)}}async listFiles(e=""){if(this.isPersonalNew()){let t="",i=[],n=e||this.addition.root_folder_id||"/";do{let a=await this.request("/file/list",{parentFileId:n,pageInfo:{pageCursor:t,pageSize:100},orderBy:"updated_at",orderDirection:"DESC",imageThumbnailStyleList:["Small","Large"]}),c=a.data?.items||[];i.push(...c),t=a.data?.nextPageCursor||""}while(t);let s=i.filter(a=>a.type==="folder").map(a=>({catalogID:a.fileId,catalogName:a.name,updateTime:a.updatedAt}));return{files:i.filter(a=>a.type!=="folder").map(a=>({contentID:a.fileId,contentName:a.name,contentSize:a.size,updateTime:a.updatedAt,createTime:a.createdAt,thumbnailURL:a.thumbnailUrls?.[0]?.url})),folders:s}}return this.getDisk(e)}async getDisk(e=""){let i=(await this.request("/orchestration/personalCloud/catalog/v1.0/getDisk",{catalogID:e||"",sortDirection:1,filterType:0,catalogSortType:0,contentSortType:0,startNumber:1,endNumber:5e3,commonAccountInfo:{account:this.account,accountType:1}})).data?.getDiskResult;return{files:i?.fileList||[],folders:i?.catalogList||[]}}async getDownloadUrl(e){if(this.isPersonalNew()){let n=await this.request("/file/getDownloadUrl",{fileId:e}),s=(n.data?.cdnSwitch?n.data?.cdnUrl:null)||n.data?.url||n.data?.cdnUrl;if(!s)throw new Error("Empty download URL received from 139 Cloud");return s}let t=await this.request("/orchestration/personalCloud/uploadAndDownload/v1.0/downloadRequest",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}}),i=t.data?.downloadURL||t.data?.url;if(!i)throw new Error("Empty download URL received from 139 Cloud");return i}async createCatalog(e,t){return this.isPersonalNew()?(await this.request("/file/create",{parentFileId:e||this.addition.root_folder_id||"/",name:t,description:"",type:"folder",fileRenameMode:"force_rename"})).data?.fileId||"":(await this.request("/orchestration/personalCloud/catalog/v1.0/createCatalog",{parentCatalogID:e||"",catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})).data?.catalogID||""}async deleteFile(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteContent",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}})}async deleteCatalog(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteCatalog",{catalogID:e,commonAccountInfo:{account:this.account,accountType:1}})}async rename(e,t){if(this.isPersonalNew()){await this.request("/file/update",{fileId:e,name:t,description:""});return}await this.request("/orchestration/personalCloud/catalog/v1.0/updateCatalogInfo",{catalogID:e,catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})}async getStorageDetails(){try{let e=await this.request("/orchestration/personalCloud/catalog/v1.0/getUserDomainInfo",{commonAccountInfo:{account:this.account,accountType:1}});return{total:e.data?.totalSize,used:e.data?.usedSize}}catch{return{}}}}});var um,B4=j(()=>{"use strict";Be();He();E4();um=class{addition;client;constructor(e){this.addition=e,this.client=new dm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}getRootId(){return this.addition.root_folder_id?this.addition.root_folder_id:this.client.isPersonalNew()?"/":""}async resolveCatalogId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootId();let i=t.split("/").filter(Boolean),n=this.getRootId();for(let s of i){let a=(await this.client.listFiles(n)).folders.find(c=>c.catalogName===s);if(a)n=a.catalogID;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCatalogId(i),s=await this.client.listFiles(n),o=s.folders.map(l=>({name:l.catalogName,size:0,is_dir:!0,modified:l.updateTime||new Date().toISOString(),sign:l.catalogID,type:1,raw_url:""})),a=s.files.map(l=>{let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u=l.contentName||"file";return{name:u,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||u,type:X(u,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:""}}),c=[...o,...a];return de(c,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCatalogId(s),a=await this.client.listFiles(o),c=a.folders.find(d=>d.catalogName===n);if(c)return{name:c.catalogName,size:0,is_dir:!0,modified:c.updateTime||new Date().toISOString(),sign:c.catalogID,type:1,raw_url:""};let l=a.files.find(d=>d.contentName===n);if(l){let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u="";if(l.contentID)try{u=await this.client.getDownloadUrl(l.contentID)}catch(f){console.warn("[139] failed to get download url in get():",f)}return{name:l.contentName||n,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||n,type:X(n,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:u}}throw new Error(`Item not found: ${i}`)}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{Referer:"https://yun.139.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveCatalogId(n);await this.client.createCatalog(o,s)}async rename(e,t,i){let n=await this.get(e,t);await this.client.rename(n.sign,i)}async remove(e,t,i){let n=this.cleanPath(t),s=await this.resolveCatalogId(n),o=await this.client.listFiles(s);for(let a of i){let c=o.folders.find(l=>l.catalogName===a);if(c)await this.client.deleteCatalog(c.catalogID);else{let l=o.files.find(d=>d.contentName===a);l&&l.contentID&&await this.client.deleteFile(l.contentID)}}}async move(e,t,i,n,s){console.warn(`[139] move from ${n} to ${s}`)}async copy(e,t,i,n,s){console.warn(`[139] copy from ${n} to ${s}`)}async put(e,t,i){console.warn(`[139] put for ${t}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function KJ(r){let e=r.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return mc.default.enc.Base64.parse(e)}function GJ(r){return mc.default.enc.Base64.stringify(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function zJ(r){return mc.default.enc.Utf8.parse(r)}var mc,fm,b4=j(()=>{"use strict";mc=Qr(fc(),1);fm=class{addition;sid="";seq=Math.floor(Math.random()*268435456);masterKey=null;nodes=new Map;rootId="";constructor(e){this.addition=e}nextSeq(){return this.seq=(this.seq+1)%268435456,this.seq}async request(e){let i=`https://g.api.mega.co.nz/cs?id=${this.nextSeq()}`;this.sid&&(i+=`&sid=${this.sid}`);let n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`Mega API HTTP error: ${n.status}`);let s=await n.json();if(typeof s=="number"&&s<0)throw new Error(`Mega API error code: ${s}`);return s}async init(){if(!this.addition.email||!this.addition.password)throw new Error("Mega email and password are required");let e=mc.default.enc.Base64.stringify(mc.default.enc.Utf8.parse(this.addition.email.toLowerCase())).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),i=(await this.request([{a:"us",user:this.addition.email.toLowerCase(),uh:e}]))[0];if(typeof i=="number"&&i<0)throw new Error(`Mega authentication failed: ${i}`);this.sid=i.sid||"",await this.fetchNodes()}async fetchNodes(){if(!this.sid)return;let t=(await this.request([{a:"f",c:1}]))[0];if(t?.f&&Array.isArray(t.f)){this.nodes.clear();for(let i of t.f){let n=i.t===1||i.t===2||i.t===3||i.t===4;i.t===2&&(this.rootId=i.h);let s="unnamed";if(i.a)try{let a=this.decryptAttributes(i.a,i.k);a?.n&&(s=a.n)}catch{s=i.h}let o={id:i.h,parent_id:i.p,name:s,size:i.s||0,is_dir:n,modified:i.ts?new Date(i.ts*1e3).toISOString():new Date().toISOString(),type:i.t,key:i.k};this.nodes.set(i.h,o)}}}decryptAttributes(e,t){try{let i=KJ(e),n=mc.default.enc.Utf8.stringify(i);if(n.startsWith("MEGA{")){let s=n.substring(4);return JSON.parse(s)}}catch{}return null}getChildren(e){let t=e||this.rootId,i=[];for(let n of this.nodes.values())n.parent_id===t&&i.push(n);return i}getNode(e){return this.nodes.get(e)}getRootId(){return this.rootId}async getDownloadLink(e){let i=(await this.request([{a:"g",g:1,n:e}]))[0];if(i?.g)return i.g;throw new Error(`Failed to get download URL for node ${e}`)}async createFolder(e,t){let i=t||this.rootId,n=JSON.stringify({n:e}),s=GJ(zJ(`MEGA${n}`)),o=await this.request([{a:"p",t:i,n:[{h:"xxxxxxxx",t:1,a:s,k:"dummy_key"}]}]);return await this.fetchNodes(),o[0]?.f?.[0]?.h||""}async deleteNode(e){await this.request([{a:"d",n:e}]),this.nodes.delete(e)}async moveNode(e,t){await this.request([{a:"m",n:e,t}]);let i=this.nodes.get(e);i&&(i.parent_id=t)}async getQuota(){let t=(await this.request([{a:"uq",strg:1}]))[0];return{total:t?.mstrg||0,used:t?.cstrg||0}}}});var Am,v4=j(()=>{"use strict";Be();He();b4();Am=class{addition;client;constructor(e){this.addition=e,this.client=new fm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}resolveNodeByPath(e){let t=this.cleanPath(e);if(t==="/")return{id:this.client.getRootId(),name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),type:2};let i=t.split("/").filter(Boolean),n=this.client.getRootId(),s=null;for(let o of i){let c=this.client.getChildren(n).find(l=>l.name===o);if(!c)return null;s=c,n=c.id}return s}async list(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||!n.is_dir)return[];let o=this.client.getChildren(n.id).map(a=>({name:a.name,size:a.size||0,is_dir:a.is_dir,modified:a.modified||new Date().toISOString(),sign:a.id,type:X(a.name,a.is_dir),raw_url:""}));return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n)throw new Error(`Node not found: ${i}`);let s="";if(!n.is_dir)try{s=await this.client.getDownloadLink(n.id)}catch(o){console.warn("[Mega] failed to get download link in get():",o)}return{name:n.name,size:n.size,is_dir:n.is_dir,modified:n.modified,sign:n.id,type:X(n.name,n.is_dir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||n.is_dir)throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadLink(n.id)}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=this.resolveNodeByPath(n);if(!o||!o.is_dir)throw new Error(`Parent folder not found: ${n}`);await this.client.createFolder(s,o.id)}async rename(e,t,i){if(!this.resolveNodeByPath(this.cleanPath(t)))throw new Error("Node not found");console.warn(`[Mega] rename ${t} to ${i}`)}async move(e,t,i,n,s){let o=this.resolveNodeByPath(this.cleanPath(s));if(!o||!o.is_dir)throw new Error("Destination folder not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=this.resolveNodeByPath(c);l&&await this.client.moveNode(l.id,o.id)}}async copy(e,t,i,n,s){console.warn(`[Mega] copy not supported natively from ${n} to ${s}`)}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=this.resolveNodeByPath(s);o&&await this.client.deleteNode(o.id)}}async put(e,t,i){console.warn(`[Mega] put for ${t}`)}async getDetails(){try{let e=await this.client.getQuota();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});var hm,k4=j(()=>{"use strict";hm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.share_code||!this.addition.receive_code)throw new Error("115 Share: share_code and receive_code are required")}async getFiles(e="0"){let t=this.addition.page_size||1e3,i=[],n=0,s=0;do{let o=new URL("https://webapi.115.com/share/snap");o.searchParams.set("share_code",this.addition.share_code),o.searchParams.set("receive_code",this.addition.receive_code),o.searchParams.set("cid",e||"0"),o.searchParams.set("limit",String(t)),o.searchParams.set("offset",String(n));let a={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://115.com/"};this.addition.cookie&&(a.Cookie=this.addition.cookie);let c=await fetch(o.toString(),{headers:a});if(!c.ok)throw new Error(`115 Share API error: HTTP ${c.status}`);let l=await c.json();if(!l.state)throw new Error(`115 Share API error: ${l.msg||"failed"}`);let d=l.data?.list||[];if(i.push(...d),s=l.data?.count||0,n+=d.length,d.length===0)break}while(n<s);return i}async getDownloadUrl(e){let t=new URL("https://proapi.115.com/app/share/downurl"),i=new URLSearchParams({share_code:this.addition.share_code,receive_code:this.addition.receive_code,file_id:e}),n={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type":"application/x-www-form-urlencoded"};this.addition.cookie&&(n.Cookie=this.addition.cookie);let s=await fetch(t.toString(),{method:"POST",headers:n,body:i.toString()});if(!s.ok)throw new Error(`115 Share download error: HTTP ${s.status}`);let o=await s.json(),a=o.data?.url?.url||o.data?.url;if(!a)throw new Error(o.msg||"Empty download URL received from 115 Share");return a}}});var gm,S4=j(()=>{"use strict";Be();He();k4();gm=class{addition;client;constructor(e){this.addition=e,this.client=new hm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveCid(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.is_file===0&&c.file_name===s);if(a&&a.category_id)n=a.category_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCid(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.is_file===0,l=typeof a.file_size=="number"?a.file_size:parseInt(String(a.file_size||"0"),10),d=typeof a.user_utime=="number"?a.user_utime:parseInt(String(a.user_utime||"0"),10),u=a.file_name||"file";return{name:u,size:c||isNaN(l)?0:l,is_dir:c,modified:d>0?new Date(d*1e3).toISOString():new Date().toISOString(),sign:c?a.category_id||"":a.file_id||"",type:X(u,c),thumb:a.thumb_url,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCid(s),c=(await this.client.getFiles(o)).find(h=>h.file_name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.is_file===0,d=typeof c.file_size=="number"?c.file_size:parseInt(String(c.file_size||"0"),10),u=typeof c.user_utime=="number"?c.user_utime:parseInt(String(c.user_utime||"0"),10),f="";if(!l&&c.file_id)try{f=await this.client.getDownloadUrl(c.file_id)}catch(h){console.warn("[115Share] failed to get download url:",h)}return{name:c.file_name||n,size:l||isNaN(d)?0:d,is_dir:l,modified:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),sign:l?c.category_id||"":c.file_id||"",type:X(c.file_name||n,l),thumb:c.thumb_url,raw_url:f}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:"https://115.com/"}}}async mkdir(e,t){throw new Error("115 Share is read-only")}async rename(e,t,i){throw new Error("115 Share is read-only")}async remove(e,t,i){throw new Error("115 Share is read-only")}async move(e,t,i,n,s){throw new Error("115 Share is read-only")}async copy(e,t,i,n,s){throw new Error("115 Share is read-only")}async put(e,t,i){throw new Error("115 Share is read-only")}}});function D4(r){let e=typeof r=="string"?new TextEncoder().encode(r):r,t=-1;for(let i=0;i<e.length;i++)t=t>>>8^JJ[(t^e[i])&255];return(t^-1)>>>0}function jJ(r,e="web",t="3"){let i=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"],n=String(Math.round(1e7*Math.random())),s=new Date,o=String(Math.floor(s.getTime()/1e3)),a=h=>String(h).padStart(2,"0"),c=`${s.getFullYear()}${a(s.getMonth()+1)}${a(s.getDate())}${a(s.getHours())}${a(s.getMinutes())}`,l=[];for(let h=0;h<c.length;h++){let g=c.charCodeAt(h)-48;l.push(i[g]||"a")}let d=String(D4(l.join(""))),u=[o,n,r,e,t,d].join("|"),f=String(D4(u));return[d,[o,n,f].join("-")]}function $J(r){let e=new URL(r),[t,i]=jJ(e.pathname,"web","3");return e.searchParams.set(t,i),e.toString()}var JJ,pm,Q4=j(()=>{"use strict";JJ=(()=>{let r=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();pm=class{addition;mainApi="https://yun.123pan.com/b/api";constructor(e){this.addition=e}async init(){if(!this.addition.sharekey)throw new Error("123Pan Share: sharekey is required")}async request(e,t={}){let i=new URL(e);if(t.params)for(let[l,d]of Object.entries(t.params))i.searchParams.set(l,d);let n=$J(i.toString()),s={Origin:"https://yun.123pan.com",Referer:"https://yun.123pan.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",Platform:"web","App-Version":"3"};this.addition.accesstoken&&(s.Authorization=`Bearer ${this.addition.accesstoken}`);let o;t.body&&(s["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await fetch(n,{method:t.method||"GET",headers:s,body:o});if(!a.ok)throw new Error(`123Pan Share API error: HTTP ${a.status}`);let c=await a.json();if(c.code!==0&&c.code!==200)throw new Error(c.message||`123Pan Share API error (${c.code})`);return c}async getFiles(e="0"){let t=[],i=1;for(;;){let n=await this.request(`${this.mainApi}/share/get`,{method:"GET",params:{limit:"100",next:"0",orderBy:"file_id",orderDirection:"desc",parentFileId:e||"0",Page:String(i),shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||""}}),s=n.data?.InfoList||[];if(t.push(...s),i++,s.length===0||n.data?.Next==="-1"||n.data?.Next===-1)break}return t}async getDownloadUrl(e){let i=(await this.request(`${this.mainApi}/share/download/info`,{method:"POST",body:{shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||"",etag:e.Etag||"",fileId:e.FileId,s3keyFlag:e.S3KeyFlag||"",size:e.Size}})).data?.DownloadURL||"";if(!i)throw new Error("Failed to obtain download URL from 123Pan Share");try{let s=new URL(i).searchParams.get("params");s&&(i=atob(s))}catch{}return i}}});var mm,_4=j(()=>{"use strict";Be();He();Q4();mm=class{addition;client;constructor(e){this.addition=e,this.client=new pm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.Type===1&&c.FileName===s);if(a)n=String(a.FileId);else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.Type===1;return{name:a.FileName,size:c?0:a.Size||0,is_dir:c,modified:a.UpdateAt||a.CreateAt||new Date().toISOString(),sign:String(a.FileId),type:X(a.FileName,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(u=>u.FileName===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.Type===1,d="";if(!l)try{d=await this.client.getDownloadUrl(c)}catch(u){console.warn("[123Share] failed to get download url in get():",u)}return{name:c.FileName,size:l?0:c.Size||0,is_dir:l,modified:c.UpdateAt||c.CreateAt||new Date().toISOString(),sign:String(c.FileId),type:X(c.FileName,l),raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.FileName===s);if(!c||c.Type===1)throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c),headers:{Referer:"https://yun.123pan.com/"}}}async mkdir(e,t){throw new Error("123Pan Share is read-only")}async rename(e,t,i){throw new Error("123Pan Share is read-only")}async remove(e,t,i){throw new Error("123Pan Share is read-only")}async move(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async copy(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async put(e,t,i){throw new Error("123Pan Share is read-only")}}});var ym,F4=j(()=>{"use strict";ym=class{addition;shareToken="";driveId="";constructor(e){this.addition=e}async getShareToken(){if(!this.addition.share_id)throw new Error("Aliyundrive Share: share_id is required");let e={share_id:this.addition.share_id};this.addition.share_pwd&&(e.share_pwd=this.addition.share_pwd);let t=await fetch("https://api.alipan.com/v2/share_link/get_share_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`Aliyundrive Share token error: HTTP ${t.status}`);let i=await t.json();if(i.code)throw new Error(i.message||`Aliyundrive Share error: ${i.code}`);return this.shareToken=i.share_token||"",this.shareToken}async init(){await this.getShareToken()}async getFiles(e="root"){this.shareToken||await this.getShareToken();let t=[],i="";do{let n={image_thumbnail_process:"image/resize,w_160/format,jpeg",image_url_process:"image/resize,w_1920/format,jpeg",limit:200,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"ASC",parent_file_id:e||"root",share_id:this.addition.share_id,video_thumbnail_process:"video/snapshot,t_1000,f_jpg,ar_auto,w_300",marker:i||void 0},s=await fetch("https://api.alipan.com/adrive/v3/file/list",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(n)});if(!s.ok)throw new Error(`Aliyundrive Share list error: HTTP ${s.status}`);let o=await s.json();if(o.code==="ShareLinkTokenInvalid"||o.code==="AccessTokenInvalid")return await this.getShareToken(),this.getFiles(e);if(o.code)throw new Error(o.message||`Aliyundrive list error (${o.code})`);let a=o.items||[];t.push(...a),i=o.next_marker||"",a.length>0&&!this.driveId&&a[0].drive_id&&(this.driveId=a[0].drive_id)}while(i);return t}async getDownloadUrl(e){this.shareToken||await this.getShareToken();let t={share_id:this.addition.share_id,file_id:e,drive_id:this.driveId||void 0,expire_sec:14400},i=await fetch("https://api.alipan.com/v2/file/get_share_link_download_url",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`Aliyundrive download URL error: HTTP ${i.status}`);let n=await i.json();if(n.code==="ShareLinkTokenInvalid")return await this.getShareToken(),this.getDownloadUrl(e);let s=n.download_url||n.url;if(!s)throw new Error("Failed to get download URL from Aliyundrive Share");return s}}});var Im,P4=j(()=>{"use strict";Be();He();F4();Im=class{addition;client;constructor(e){this.addition=e,this.client=new ym(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveFileId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"root";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"root";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.type==="folder"&&c.name===s);if(a)n=a.file_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveFileId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.type==="folder";return{name:a.name,size:c?0:a.size||0,is_dir:c,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.file_id,type:X(a.name,c),thumb:a.thumbnail,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveFileId(s),c=(await this.client.getFiles(o)).find(u=>u.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.type==="folder",d="";if(!l)try{d=await this.client.getDownloadUrl(c.file_id)}catch(u){console.warn("[AliyundriveShare] failed to get download url in get():",u)}return{name:c.name,size:l?0:c.size||0,is_dir:l,modified:c.updated_at||c.created_at||new Date().toISOString(),sign:c.file_id,type:X(c.name,l),thumb:c.thumbnail,raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveFileId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.type==="folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c.file_id),headers:{Referer:"https://www.aliyundrive.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){throw new Error("Aliyundrive Share is read-only")}async rename(e,t,i){throw new Error("Aliyundrive Share is read-only")}async remove(e,t,i){throw new Error("Aliyundrive Share is read-only")}async move(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async copy(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async put(e,t,i){throw new Error("Aliyundrive Share is read-only")}}});var wm,T4=j(()=>{"use strict";wm=class{addition;finalUrl="";cookie="";constructor(e){this.addition=e}async init(){if(!this.addition.url)throw new Error("OneDrive Sharelink URL is required");try{let e=await fetch(this.addition.url,{method:"HEAD",redirect:"follow"});this.finalUrl=e.url||this.addition.url}catch{this.finalUrl=this.addition.url}}async getFiles(e="/"){this.finalUrl||await this.init();let t=new URL(this.finalUrl);if(t.pathname.includes("/:u:/")||t.pathname.includes("/:v:/")||t.pathname.includes("/:b:/"))return[{id:"root_file",name:decodeURIComponent(t.pathname.split("/").pop()||"file"),size:0,is_folder:!1,modified:new Date().toISOString(),download_url:this.getDirectDownloadLink(this.finalUrl)}];try{let i=`${t.origin}${t.pathname}/_api/web/GetListUsingPath(DecodedUrl=@a1)/renderListDataAsStream`,n=await fetch(i,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json;odata=verbose"},body:JSON.stringify({parameters:{RenderOptions:5707,AllowMultipleValueFilterForTaxonomyFields:!0,AddRequiredFields:!0}})});if(n.ok)return((await n.json()).ListData?.Row||[]).map(a=>{let c=String(a.FSObjType)==="1",l=parseInt(a.File_x0020_Size||"0",10);return{id:a.UniqueId,name:a.FileLeafRef,size:c||isNaN(l)?0:l,is_folder:c,modified:a["Modified."]||new Date().toISOString(),download_url:a["@content.downloadUrl"],sp_item_url:a[".spItemUrl"]}})}catch{}return[]}getDirectDownloadLink(e){let t=new URL(e);return t.searchParams.set("download","1"),t.toString()}}});var xm,U4=j(()=>{"use strict";Be();He();T4();xm=class{addition;client;constructor(e){this.addition=e,this.client=new wm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>({name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||""}));return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let o=(await this.client.getFiles("/")).find(a=>a.name===n);if(!o)throw new Error(`File not found: ${i}`);return{name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||this.client.getDirectDownloadLink(this.addition.url)}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:i.raw_url||this.client.getDirectDownloadLink(this.addition.url)}}async mkdir(e,t){throw new Error("OneDrive Sharelink is read-only")}async rename(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async remove(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async move(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async copy(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async put(e,t,i){throw new Error("OneDrive Sharelink is read-only")}}});var Cm,R4=j(()=>{"use strict";Cm=class{addition;passCodeToken="";deviceId="";constructor(e){this.addition=e,this.deviceId=e.device_id||this.generateDeviceId()}generateDeviceId(){return"web_"+Math.random().toString(36).substring(2,15)}async init(){if(!this.addition.share_id)throw new Error("PikPak Share: share_id is required")}async getFiles(e=""){let t=[],i="";do{let n=new URL("https://api-drive.mypikpak.com/drive/v1/share");n.searchParams.set("share_id",this.addition.share_id),this.addition.share_pwd&&n.searchParams.set("pass_code",this.addition.share_pwd),e&&n.searchParams.set("parent_id",e),i&&n.searchParams.set("page_token",i),n.searchParams.set("thumbnail_size","SIZE_LARGE");let s={"X-Client-ID":"YUMx5nI8ZU8Ap8pm","X-Device-ID":this.deviceId,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"};this.passCodeToken&&(s["X-Share-Token"]=this.passCodeToken);let o=await fetch(n.toString(),{headers:s});if(!o.ok)throw new Error(`PikPak Share error: HTTP ${o.status}`);let a=await o.json();a.pass_code_token&&(this.passCodeToken=a.pass_code_token);let c=a.files||[];if(t.push(...c),i=a.next_page_token||"",c.length===0)break}while(i);return t}async getDownloadUrl(e){if(e.web_content_link)return e.web_content_link;if(e.medias&&e.medias.length>0&&e.medias[0].link?.url)return e.medias[0].link.url;throw new Error("Download URL not found in PikPak share item")}}});var Em,N4=j(()=>{"use strict";Be();He();R4();Em=class{addition;client;constructor(e){this.addition=e,this.client=new Cm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.kind==="drive#folder"&&c.name===s);if(a)n=a.id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.kind==="drive#folder",l=typeof a.size=="number"?a.size:parseInt(String(a.size||"0"),10);return{name:a.name,size:c||isNaN(l)?0:l,is_dir:c,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.kind==="drive#folder",d=typeof c.size=="number"?c.size:parseInt(String(c.size||"0"),10),u="";if(!l)try{u=await this.client.getDownloadUrl(c)}catch(f){console.warn("[PikPakShare] failed to get download url in get():",f)}return{name:c.name,size:l||isNaN(d)?0:d,is_dir:l,modified:c.modified_time||new Date().toISOString(),sign:c.id,type:X(c.name,l),thumb:c.thumbnail_link,raw_url:u}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.kind==="drive#folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c)}}async mkdir(e,t){throw new Error("PikPak Share is read-only")}async rename(e,t,i){throw new Error("PikPak Share is read-only")}async remove(e,t,i){throw new Error("PikPak Share is read-only")}async move(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async copy(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async put(e,t,i){throw new Error("PikPak Share is read-only")}}});var Bm,q4=j(()=>{"use strict";Be();He();Bm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.address||!this.addition.share_name)throw new Error("SMB: address and share_name are required")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){return de([],this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";return{name:n,size:0,is_dir:i==="",modified:new Date().toISOString(),sign:i||"/",type:X(n,i===""),raw_url:""}}async mkdir(e,t){}async rename(e,t,i){}async remove(e,t,i){}async move(e,t,i,n,s){}async copy(e,t,i,n,s){}async put(e,t,i){}}});var vm=oe((bm,O4)=>{(function(r,e){typeof bm=="object"&&typeof O4<"u"?e(bm):typeof define=="function"&&define.amd?define(["exports"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.hashwasm={}))})(bm,(function(r){"use strict";var e="adler32",t="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAgUEAQECAgYOAn8BQYCJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEK6wkGBQBBgAkLCgBBAEEBNgKECAvjCAEHf0EAKAKECCIBQf//A3EhAiABQRB2IQMCQAJAIABBAUcNACACQQAtAIAJaiIBQY+AfGogASABQfD/A0sbIgEgA2oiBEEQdCIFQYCAPGogBSAEQfD/A0sbIAFyIQEMAQsCQAJAAkACQAJAIABBEEkNAEGACSEGIABBsCtJDQFBgAkhBgNAQQAhBQNAIAYgBWoiASgCACIEQf8BcSACaiICIANqIAIgBEEIdkH/AXFqIgJqIAIgBEEQdkH/AXFqIgJqIAIgBEEYdmoiAmogAiABQQRqKAIAIgRB/wFxaiICaiACIARBCHZB/wFxaiICaiACIARBEHZB/wFxaiICaiACIARBGHZqIgJqIAIgAUEIaigCACIEQf8BcWoiAmogAiAEQQh2Qf8BcWoiAmogAiAEQRB2Qf8BcWoiAmogAiAEQRh2aiIEaiAEIAFBDGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiAmohAyAFQRBqIgVBsCtHDQALIANB8f8DcCEDIAJB8f8DcCECIAZBsCtqIQYgAEHQVGoiAEGvK0sNAAsgAEUNBCAAQQ9LDQEMAgsCQCAARQ0AAkACQCAAQQNxIgUNAEGACSEBIAAhBAwBCyAAQXxxIQRBACEBA0AgAiABQYAJai0AAGoiAiADaiEDIAUgAUEBaiIBRw0ACyAFQYAJaiEBCyAAQQRJDQADQCACIAEtAABqIgUgAS0AAWoiBiABLQACaiIAIAFBA2otAABqIgIgACAGIAUgA2pqamohAyABQQRqIQEgBEF8aiIEDQALCyACQY+AfGogAiACQfD/A0sbIANB8f8DcEEQdHIhAQwECwNAIAYoAgAiAUH/AXEgAmoiBCADaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgRqIAQgBkEEaigCACIBQf8BcWoiBGogBCABQQh2Qf8BcWoiBGogBCABQRB2Qf8BcWoiBGogBCABQRh2aiIEaiAEIAZBCGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiBGogBCAGQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBkEQaiEGIABBcGoiAEEPSw0ACyAARQ0BCyAAQX9qIQcCQCAAQQNxIgVFDQAgAEF8cSEAIAUhBCAGIQEDQCACIAEtAABqIgIgA2ohAyABQQFqIQEgBEF/aiIEDQALIAYgBWohBgsgB0EDSQ0AA0AgAiAGLQAAaiIBIAYtAAFqIgQgBi0AAmoiBSAGQQNqLQAAaiICIAUgBCABIANqampqIQMgBkEEaiEGIABBfGoiAA0ACwsgA0Hx/wNwIQMgAkHx/wNwIQILIAIgA0EQdHIhAQtBACABNgKECAsxAQF/QQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwUAQYQICzsAQQBBATYChAggABACQQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwsVAgBBgAgLBAQAAAAAQYQICwQBAAAA",i="02ddbd17",n={name:e,data:t,hash:i};function s(S,q,M,Y){function ie(ae){return ae instanceof M?ae:new M(function(ge){ge(ae)})}return new(M||(M=Promise))(function(ae,ge){function xe(jt){try{qt(Y.next(jt))}catch(rr){ge(rr)}}function Je(jt){try{qt(Y.throw(jt))}catch(rr){ge(rr)}}function qt(jt){jt.done?ae(jt.value):ie(jt.value).then(xe,Je)}qt((Y=Y.apply(S,q||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;class o{constructor(){this.mutex=Promise.resolve()}lock(){let q=()=>{};return this.mutex=this.mutex.then(()=>new Promise(q)),new Promise(M=>{q=M})}dispatch(q){return s(this,void 0,void 0,function*(){let M=yield this.lock();try{return yield Promise.resolve(q())}finally{M()}})}}var a;function c(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global}let l=c(),d=(a=l.Buffer)!==null&&a!==void 0?a:null,u=l.TextEncoder?new l.TextEncoder:null;function f(S,q){return String.fromCharCode(...S.subarray(0,q))}function h(S,q){return(S&15)+(S>>6|S>>3&8)<<4|(q&15)+(q>>6|q>>3&8)}function g(S,q){let M=q.length>>1;for(let Y=0;Y<M;Y++){let ie=Y<<1;S[Y]=h(q.charCodeAt(ie),q.charCodeAt(ie+1))}}function p(S,q){if(S.length!==q.length*2)return!1;for(let M=0;M<q.length;M++){let Y=M<<1;if(q[M]!==h(S.charCodeAt(Y),S.charCodeAt(Y+1)))return!1}return!0}let I=87,y=48;function w(S,q,M){let Y=0;for(let ie=0;ie<M;ie++){let ae=q[ie]>>>4;S[Y++]=ae>9?ae+I:ae+y,ae=q[ie]&15,S[Y++]=ae>9?ae+I:ae+y}return String.fromCharCode.apply(null,S)}let C=d!==null?S=>{if(typeof S=="string"){let q=d.from(S,"utf8");return new Uint8Array(q.buffer,q.byteOffset,q.length)}if(d.isBuffer(S))return new Uint8Array(S.buffer,S.byteOffset,S.length);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")}:S=>{if(typeof S=="string")return u.encode(S);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")},b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",x=new Uint8Array(256);for(let S=0;S<b.length;S++)x[b.charCodeAt(S)]=S;function _(S,q=!0){let M=S.length,Y=M%3,ie=[],ae=M-Y;for(let ge=0;ge<ae;ge+=3){let xe=(S[ge]<<16&16711680)+(S[ge+1]<<8&65280)+(S[ge+2]&255),Je=b.charAt(xe>>18&63)+b.charAt(xe>>12&63)+b.charAt(xe>>6&63)+b.charAt(xe&63);ie.push(Je)}if(Y===1){let ge=S[M-1],xe=b.charAt(ge>>2),Je=b.charAt(ge<<4&63);ie.push(`${xe}${Je}`),q&&ie.push("==")}else if(Y===2){let ge=(S[M-2]<<8)+S[M-1],xe=b.charAt(ge>>10),Je=b.charAt(ge>>4&63),qt=b.charAt(ge<<2&63);ie.push(`${xe}${Je}${qt}`),q&&ie.push("=")}return ie.join("")}function R(S){let q=Math.floor(S.length*.75),M=S.length;return S[M-1]==="="&&(q-=1,S[M-2]==="="&&(q-=1)),q}function U(S){let q=R(S),M=S.length,Y=new Uint8Array(q),ie=0;for(let ae=0;ae<M;ae+=4){let ge=x[S.charCodeAt(ae)],xe=x[S.charCodeAt(ae+1)],Je=x[S.charCodeAt(ae+2)],qt=x[S.charCodeAt(ae+3)];Y[ie]=ge<<2|xe>>4,ie+=1,Y[ie]=(xe&15)<<4|Je>>2,ie+=1,Y[ie]=(Je&3)<<6|qt&63,ie+=1}return Y}let T=16*1024,D=4,B=new o,Q=new Map;function v(S,q){return s(this,void 0,void 0,function*(){let M=null,Y=null,ie=!1;if(typeof WebAssembly>"u")throw new Error("WebAssembly is not supported in this environment!");let ae=(je,nt=0)=>{Y.set(je,nt)},ge=()=>Y,xe=()=>M.exports,Je=je=>{M.exports.Hash_SetMemorySize(je);let nt=M.exports.Hash_GetBuffer(),ni=M.exports.memory.buffer;Y=new Uint8Array(ni,nt,je)},qt=()=>new DataView(M.exports.memory.buffer).getUint32(M.exports.STATE_SIZE,!0),jt=B.dispatch(()=>s(this,void 0,void 0,function*(){if(!Q.has(S.name)){let nt=U(S.data),ni=WebAssembly.compile(nt);Q.set(S.name,ni)}let je=yield Q.get(S.name);M=yield WebAssembly.instantiate(je,{})})),rr=()=>s(this,void 0,void 0,function*(){M||(yield jt);let je=M.exports.Hash_GetBuffer(),nt=M.exports.memory.buffer;Y=new Uint8Array(nt,je,T)}),Ot=(je=null)=>{ie=!0,M.exports.Hash_Init(je)},$i=je=>{let nt=0;for(;nt<je.length;){let ni=je.subarray(nt,nt+T);nt+=ni.length,Y.set(ni),M.exports.Hash_Update(ni.length)}},Hr=je=>{if(!ie)throw new Error("update() called before init()");let nt=C(je);$i(nt)},Iu=new Uint8Array(q*2),vo=(je,nt=null)=>{if(!ie)throw new Error("digest() called before init()");return ie=!1,M.exports.Hash_Final(nt),je==="binary"?Y.slice(0,q):w(Iu,Y,q)},wn=()=>{if(!ie)throw new Error("save() can only be called after init() and before digest()");let je=M.exports.Hash_GetState(),nt=qt(),ni=M.exports.memory.buffer,ja=new Uint8Array(ni,je,nt),wu=new Uint8Array(D+nt);return g(wu,S.hash),wu.set(ja,D),wu},ko=je=>{if(!(je instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");let nt=M.exports.Hash_GetState(),ni=qt(),ja=D+ni,wu=M.exports.memory.buffer;if(je.length!==ja)throw new Error(`Bad state length (expected ${ja} bytes, got ${je.length})`);if(!p(S.hash,je.subarray(0,D)))throw new Error("This state was written by an incompatible hash implementation");let TL=je.subarray(D);new Uint8Array(wu,nt,ni).set(TL),ie=!0},ml=je=>typeof je=="string"?je.length<T/4:je.byteLength<T,Ss=ml;switch(S.name){case"argon2":case"scrypt":Ss=()=>!0;break;case"blake2b":case"blake2s":Ss=(je,nt)=>nt<=512&&ml(je);break;case"blake3":Ss=(je,nt)=>nt===0&&ml(je);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":Ss=()=>!1;break}let So=(je,nt=null,ni=null)=>{if(!Ss(je,nt))return Ot(nt),Hr(je),vo("hex",ni);let ja=C(je);return Y.set(ja),M.exports.Hash_Calculate(ja.length,nt,ni),w(Iu,Y,q)};return yield rr(),{getMemory:ge,writeMemory:ae,getExports:xe,setMemorySize:Je,init:Ot,update:Hr,digest:vo,save:wn,load:ko,calculate:So,hashLength:q}})}function E(S,q,M){return s(this,void 0,void 0,function*(){let Y=yield S.lock(),ie=yield v(q,M);return Y(),ie})}let P=new o,N=null;function J(S){if(N===null)return E(P,n,4).then(q=>(N=q,N.calculate(S)));try{let q=N.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function z(){return v(n,4).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:4,digestSize:4};return q})}var L="argon2",G="AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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",K="e4cdc523",$={name:L,data:G,hash:K},te="blake2b",re="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",ee="c6f286e6",Z={name:te,data:re,hash:ee};let me=new o,le=null;function Ae(S){return!Number.isInteger(S)||S<8||S>512||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 512"):null}function ve(S,q){return S|q<<16}function qe(S,q=512,M=null){if(Ae(q))return Promise.reject(Ae(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));ie=ve(q,Y.length)}let ae=q/8;if(le===null||le.hashLength!==ae)return E(me,Z,ae).then(ge=>(le=ge,ie>512&&le.writeMemory(Y),le.calculate(S,ie)));try{ie>512&&le.writeMemory(Y);let ge=le.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function _e(S=512,q=null){if(Ae(S))return Promise.reject(Ae(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));Y=ve(S,M.length)}let ie=S/8;return v(Z,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:128,digestSize:ie};return ge})}function se(S,q,M){let Y=[`m=${q.memorySize}`,`t=${q.iterations}`,`p=${q.parallelism}`].join(",");return`$argon2${q.hashType}$v=19$${Y}$${_(S,!1)}$${_(M,!1)}`}let it=new DataView(new ArrayBuffer(4));function ce(S){return it.setInt32(0,S,!0),new Uint8Array(it.buffer)}function dr(S,q,M){return s(this,void 0,void 0,function*(){if(M<=64){let Je=yield _e(M*8);return Je.update(ce(M)),Je.update(q),Je.digest("binary")}let Y=Math.ceil(M/32)-2,ie=new Uint8Array(M);S.init(),S.update(ce(M)),S.update(q);let ae=S.digest("binary");ie.set(ae.subarray(0,32),0);for(let Je=1;Je<Y;Je++)S.init(),S.update(ae),ae=S.digest("binary"),ie.set(ae.subarray(0,32),Je*32);let ge=M-32*Y,xe;return ge===64?(xe=S,xe.init()):xe=yield _e(ge*8),xe.update(ae),ae=xe.digest("binary"),ie.set(ae.subarray(0,ge),Y*32),ie})}function Or(S){switch(S){case"d":return 0;case"i":return 1;default:return 2}}function ct(S){return s(this,void 0,void 0,function*(){var q;let{parallelism:M,iterations:Y,hashLength:ie}=S,ae=C(S.password),ge=C(S.salt),xe=19,Je=Or(S.hashType),{memorySize:qt}=S,jt=C((q=S.secret)!==null&&q!==void 0?q:""),[rr,Ot]=yield Promise.all([v($,1024),_e(512)]);rr.setMemorySize(qt*1024+1024);let $i=new Uint8Array(24),Hr=new DataView($i.buffer);Hr.setInt32(0,M,!0),Hr.setInt32(4,ie,!0),Hr.setInt32(8,qt,!0),Hr.setInt32(12,Y,!0),Hr.setInt32(16,xe,!0),Hr.setInt32(20,Je,!0),rr.writeMemory($i,qt*1024),Ot.init(),Ot.update($i),Ot.update(ce(ae.length)),Ot.update(ae),Ot.update(ce(ge.length)),Ot.update(ge),Ot.update(ce(jt.length)),Ot.update(jt),Ot.update(ce(0));let vo=Math.floor(qt/(M*4))*4,wn=new Uint8Array(72),ko=Ot.digest("binary");wn.set(ko);for(let So=0;So<M;So++){wn.set(ce(0),64),wn.set(ce(So),68);let je=So*vo,nt=yield dr(Ot,wn,1024);rr.writeMemory(nt,je*1024),je+=1,wn.set(ce(1),64),nt=yield dr(Ot,wn,1024),rr.writeMemory(nt,je*1024)}let ml=new Uint8Array(1024);g(ml,rr.calculate(new Uint8Array([]),qt));let Ss=yield dr(Ot,ml,ie);if(S.outputType==="hex"){let So=new Uint8Array(ie*2);return w(So,Ss,ie)}return S.outputType==="encoded"?se(ge,S,Ss):Ss})}let we=S=>{var q;if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.password)throw new Error("Password must be specified");if(S.password=C(S.password),S.password.length<1)throw new Error("Password must be specified");if(!S.salt)throw new Error("Salt must be specified");if(S.salt=C(S.salt),S.salt.length<8)throw new Error("Salt should be at least 8 bytes long");if(S.secret=C((q=S.secret)!==null&&q!==void 0?q:""),!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<4)throw new Error("Hash length should be at least 4 bytes.");if(!Number.isInteger(S.memorySize))throw new Error("Memory size should be specified.");if(S.memorySize<8*S.parallelism)throw new Error("Memory size should be at least 8 * parallelism.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function Ee(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"i"}))})}function Gi(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"id"}))})}function xo(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"d"}))})}let Se=(S,q,M)=>{let Y=/^\$argon2(id|i|d)\$v=([0-9]+)\$((?:[mtp]=[0-9]+,){2}[mtp]=[0-9]+)\$([A-Za-z0-9+/]+)\$([A-Za-z0-9+/]+)$/,ie=q.match(Y);if(!ie)throw new Error("Invalid hash");let[,ae,ge,xe,Je,qt]=ie;if(ge!=="19")throw new Error(`Unsupported version: ${ge}`);let jt={},rr={m:"memorySize",p:"parallelism",t:"iterations"};for(let Ot of xe.split(",")){let[$i,Hr]=Ot.split("=");jt[rr[$i]]=Number(Hr)}return Object.assign(Object.assign({},jt),{password:S,secret:M,hashType:ae,salt:U(Je),hashLength:R(qt),outputType:"encoded"})},Dt=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified")};function Bs(S){return s(this,void 0,void 0,function*(){Dt(S);let q=Se(S.password,S.hash,S.secret);we(q);let M=S.hash.lastIndexOf("$")+1;return(yield ct(q)).substring(M)===S.hash.substring(M)})}var Ce="blake2s",zi="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",ii="5c0ff166",Ir={name:Ce,data:zi,hash:ii};let tr=new o,ur=null;function Qe(S){return!Number.isInteger(S)||S<8||S>256||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 256"):null}function be(S,q){return S|q<<16}function Al(S,q=256,M=null){if(Qe(q))return Promise.reject(Qe(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));ie=be(q,Y.length)}let ae=q/8;if(ur===null||ur.hashLength!==ae)return E(tr,Ir,ae).then(ge=>(ur=ge,ie>512&&ur.writeMemory(Y),ur.calculate(S,ie)));try{ie>512&&ur.writeMemory(Y);let ge=ur.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function Ai(S=256,q=null){if(Qe(S))return Promise.reject(Qe(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));Y=be(S,M.length)}let ie=S/8;return v(Ir,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:64,digestSize:ie};return ge})}var Mr="blake3",Mn="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IQEgAkFAaiICQcAASw0ACwsCQEHAACAHQf8BcSIGayIFIAIgBSACSRsiCUUNACAJQQNxIQtBACEFAkAgCUEESQ0AIAAgBmohByAJQfwAcSEIQQAhBQNAIAcgBWoiAkEoaiABIAVqIgotAAA6AAAgAkEpaiAKQQFqLQAAOgAAIAJBKmogCkECai0AADoAACACQStqIApBA2otAAA6AAAgCCAFQQRqIgVHDQALCwJAIAtFDQAgASAFaiEBIAUgBmogAGpBKGohBQNAIAUgAS0AADoAACABQQFqIQEgBUEBaiEFIAtBf2oiCw0ACwsgAC0AaCEHCyAAIAcgCWo6AGggA0HAAGokAAveAwQFfwN+BX8GfiMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NAEEALQCKigFBBHIhBCABQShqIQVBACkDmIkBIQBBACkDkIkBIQZBACkDiIkBIQdBACkDgIkBIQggAyEJA0AgASAANwMYIAEgBjcDECABIAc3AwggASAINwMAIAEgA0EFdCIDQdGJAWoiCikDADcDKCABIANB2YkBaiILKQMANwMwIAEgA0HhiQFqIgwpAwA3AzggASADQemJAWoiDSkDADcDQCABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCADQYmKAWopAwAhDiABQcAAOgBoIAEgDjcDYCABQgA3AyAgASAEOgBpIAEgADcDiAEgASAGNwOAASABIAc3A3ggASAINwNwIAFBkAFqIAFB8ABqIAVBwABCACAEQf8BcRACIAEpA7ABIQ4gASkDkAEhDyABKQO4ASEQIAEpA5gBIREgASkDwAEhEiABKQOgASETIA0gASkDyAEgASkDqAGFNwMAIAwgEiAThTcDACALIBAgEYU3AwAgCiAOIA+FNwMAIAlBf2oiCUH/AXEiAyACSw0AC0EAIAk6AJCKAQsgAUHQAWokAAvHCQIKfwV+IwBB4AJrIgUkAAJAAkAgAUGACEsNACAFIAA2AvwBIAVB/AFqIAFBgAhGIgZBECACQQEgA0EBQQIgBBABIAZBCnQiByABTw0BIAVB4ABqIgZCADcDACAFQdgAaiIIQgA3AwAgBUHQAGoiCUIANwMAIAVByABqIgpCADcDACAFQcAAaiILQgA3AwAgBUE4aiIMQgA3AwAgBUEwaiINQgA3AwAgBSADOgBqIAVCADcDKCAFQQA7AWggBUEAKQOAiQE3AwAgBUEAKQOIiQE3AwggBUEAKQOQiQE3AxAgBUEAKQOYiQE3AxggBSABQYAIRiIOrSACfDcDICAFIAAgB2pBACABIA4bEAQgBUGIAWpBMGogDSkDADcDACAFQYgBakE4aiAMKQMANwMAIAUgBSkDACIPNwOIASAFIAUpAwgiEDcDkAEgBSAFKQMQIhE3A5gBIAUgBSkDGCISNwOgASAFIAUpAyg3A7ABIAUtAGohACAFLQBpIQcgBSkDICECIAUtAGghASAFQYgBakHAAGogCykDADcDACAFQYgBakHIAGogCikDADcDACAFQYgBakHQAGogCSkDADcDACAFQYgBakHYAGogCCkDADcDACAFQYgBakHgAGogBikDADcDACAFIAE6APABIAUgAjcDqAEgBSAAIAdFckECciIAOgDxASAFIBI3A5gCIAUgETcDkAIgBSAQNwOIAiAFIA83A4ACIAVBoAJqIAVBgAJqIAVBsAFqIAEgAiAAQf8BcRACIAUpA8ACIQIgBSkDoAIhDyAFKQPIAiEQIAUpA6gCIREgBSkD0AIhEiAFKQOwAiETIAQgDkEFdGoiASAFKQPYAiAFKQO4AoU3AxggASASIBOFNwMQIAEgECARhTcDCCABIAIgD4U3AwBBAkEBIA4bIQYMAQsgAEIBIAFBf2pBCnZBAXKteUI/hYYiD6dBCnQiDiACIAMgBRAGIQcgACAOaiABIA5rIA9C////AYMgAnwgAyAFQcAAQSAgDkGACEsbahAGIQECQCAHQQFHDQAgBCAFKQMANwMAIAQgBSkDCDcDCCAEIAUpAxA3AxAgBCAFKQMYNwMYIAQgBSkDIDcDICAEIAUpAyg3AyggBCAFKQMwNwMwIAQgBSkDODcDOEECIQYMAQtBACEGQQAhAAJAIAEgB2oiCUECSQ0AIAlBfmoiCkEBdkEBaiIGQQNxIQ5BACEHAkAgCkEGSQ0AIAZB/P///wdxIQhBACEHIAVBiAFqIQEgBSEAA0AgASAANgIAIAFBDGogAEHAAWo2AgAgAUEIaiAAQYABajYCACABQQRqIABBwABqNgIAIABBgAJqIQAgAUEQaiEBIAggB0EEaiIHRw0ACwsgCkF+cSEIAkAgDkUNACAFIAdBBnRqIQEgBUGIAWogB0ECdGohAANAIAAgATYCACABQcAAaiEBIABBBGohACAOQX9qIg4NAAsLIAhBAmohAAsgBUGIAWogBkEBQgBBACADQQRyQQBBACAEEAEgACAJTw0AIAQgBkEFdGoiASAFIAZBBnRqIgApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggBkEBaiEGCyAFQeACaiQAIAYLrRAIAn8EfgF/AX4EfwR+BH8EfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyIgJBAnI6AGkgAUEoaiEKQgAhCEGACSELIAJBCnJB/wFxIQwDQCABQbABaiABIAogCUH/AXEgCCAMEAIgASABKQPQASINIAEpA7ABhTcDcCABIAEpA9gBIg4gASkDuAGFNwN4IAEgASkD4AEiDyABKQPAAYU3A4ABIAEgASkD6AEiECAGhTcDqAEgASAPIAWFNwOgASABIA4gBIU3A5gBIAEgDSADhTcDkAEgASAQIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQAMAgsLAkACQAJAQQAtAImKASIHQQZ0QQBBAC0AiIoBIhFrRg0AIAEgEToAaCABQQApA4CKATcDYCABQQApA/iJATcDWCABQQApA/CJATcDUCABQQApA+iJATcDSCABQQApA+CJATcDQCABQQApA9iJATcDOCABQQApA9CJATcDMCABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIgM3AxggAUEAKQOwiQEiBDcDECABQQApA6iJASIFNwMIIAFBACkDoIkBIgY3AwAgAUEALQCKigEiEyAHRXJBAnIiCzoAaSATQQRyIRNBACkDmIkBIQ1BACkDkIkBIQ5BACkDiIkBIQ9BACkDgIkBIRAMAQtBwAAhESABQcAAOgBoQgAhCCABQgA3AyAgAUEAKQOYiQEiDTcDGCABQQApA5CJASIONwMQIAFBACkDiIkBIg83AwggAUEAKQOAiQEiEDcDACABQQAtAIqKAUEEciITOgBpIAEgAkF+aiICQQV0IgdByYoBaikDADcDYCABIAdBwYoBaikDADcDWCABIAdBuYoBaikDADcDUCABIAdBsYoBaikDADcDSCABIAdBqYoBaikDADcDQCABIAdBoYoBaikDADcDOCABIAdBmYoBaikDADcDMCABIAdBkYoBaikDADcDKCATIQsgECEGIA8hBSAOIQQgDSEDIAJFDQELIAJBf2oiB0EFdCIUQZGKAWopAwAhFSAUQZmKAWopAwAhFiAUQaGKAWopAwAhFyAUQamKAWopAwAhGCABIAM3A4gBIAEgBDcDgAEgASAFNwN4IAEgBjcDcCABQbABaiABQfAAaiABQShqIhQgESAIIAtB/wFxEAIgASATOgBpIAFBwAA6AGggASAYNwNAIAEgFzcDOCABIBY3AzAgASAVNwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggB0UNACACQQV0QemJAWohAiATQf8BcSERA0AgAkFoaikDACEIIAJBcGopAwAhAyACQXhqKQMAIQQgAikDACEFIAEgDTcDiAEgASAONwOAASABIA83A3ggASAQNwNwIAFBsAFqIAFB8ABqIBRBwABCACAREAIgASATOgBpIAFBwAA6AGggASAFNwNAIAEgBDcDOCABIAM3AzAgASAINwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAkFgaiECIAdBf2oiBw0ACwsgAUEoaiEJQgAhCEGACSELIBNBCHJB/wFxIQoDQCABQbABaiABIAlBwAAgCCAKEAIgASABKQPQASIDIAEpA7ABhTcDcCABIAEpA9gBIgQgASkDuAGFNwN4IAEgASkD4AEiBSABKQPAAYU3A4ABIAEgDSABKQPoASIGhTcDqAEgASAOIAWFNwOgASABIA8gBIU3A5gBIAEgECADhTcDkAEgASAGIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABADCwYAIAAQBwsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAMgAhAHCwsLAQBBgAgLBHgHAAA=",mn="215d875f",Le={name:Mr,data:Mn,hash:mn};let Ja=new o,Ji=null;function Co(S){return!Number.isInteger(S)||S<8||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..."):null}function Ti(S,q=256,M=null){if(Co(q))return Promise.reject(Co(q));let Y=null,ie=0;if(M!==null){if(Y=C(M),Y.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));ie=32}let ae=q/8,ge=ae;if(Ji===null||Ji.hashLength!==ae)return E(Ja,Le,ae).then(xe=>(Ji=xe,ie===32&&Ji.writeMemory(Y),Ji.calculate(S,ie,ge)));try{ie===32&&Ji.writeMemory(Y);let xe=Ji.calculate(S,ie,ge);return Promise.resolve(xe)}catch(xe){return Promise.reject(xe)}}function A(S=256,q=null){if(Co(S))return Promise.reject(Co(S));let M=null,Y=0;if(q!==null){if(M=C(q),M.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));Y=32}let ie=S/8,ae=ie;return v(Le,ie).then(ge=>{Y===32&&ge.writeMemory(M),ge.init(Y);let xe={init:Y===32?()=>(ge.writeMemory(M),ge.init(Y),xe):()=>(ge.init(Y),xe),update:Je=>(ge.update(Je),xe),digest:Je=>ge.digest(Je,ae),save:()=>ge.save(),load:Je=>(ge.load(Je),xe),blockSize:64,digestSize:ie};return xe})}var k="crc32",O="AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwUEAQECAgYOAn8BQZDJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAgtIYXNoX1VwZGF0ZQADCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKkggHBQBBgAkLwwMBA39BgIkBIQFBACECA0AgAUEAQQBBAEEAQQBBAEEAQQAgAkEBcWsgAHEgAkEBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnM2AgAgAUEEaiEBIAJBAWoiAkGAAkcNAAtBACEAA0AgAEGEkQFqIABBhIkBaigCACICQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEmQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYShAWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhKkBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEsQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYS5AWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhMEBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzNgIAIABBBGoiAEH8B0cNAAsLJwACQEEAKAKAyQEgAEYNACAAEAFBACAANgKAyQELQQBBADYChMkBC4gDAQN/QQAoAoTJAUF/cyEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAJBBGooAgAiA0EOdkH8B3FBgJEBaigCACADQRZ2QfwHcUGAiQFqKAIAcyADQQZ2QfwHcUGAmQFqKAIAcyADQf8BcUECdEGAoQFqKAIAcyACKAIAIAFzIgFBFnZB/AdxQYCpAWooAgBzIAFBDnZB/AdxQYCxAWooAgBzIAFBBnZB/AdxQYC5AWooAgBzIAFB/wFxQQJ0QYDBAWooAgBzIQEgAkEIaiECIABBeGoiAEEHSw0ACwsCQCAARQ0AAkACQCAAQQFxDQAgACEDDAELIAFB/wFxIAItAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQFqIQIgAEF/aiEDCyAAQQFGDQADQCABQf8BcSACLQAAc0ECdEGAiQFqKAIAIAFBCHZzIgFB/wFxIAJBAWotAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQJqIQIgA0F+aiIDDQALC0EAIAFBf3M2AoTJAQsyAQF/QQBBACgChMkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgKACQsGAEGEyQELWQACQEEAKAKAyQEgAUYNACABEAFBACABNgKAyQELQQBBADYChMkBIAAQA0EAQQAoAoTJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCgAkLCwsBAEGACAsEBAAAAA==",V="d2eba587",H={name:k,data:O,hash:V};let W=new o,ue=null;function Re(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Polynomial must be a valid 32-bit long unsigned integer"):null}function Ye(S,q=3988292384){if(Re(q))return Promise.reject(Re(q));if(ue===null)return E(W,H,4).then(M=>(ue=M,ue.calculate(S,q)));try{let M=ue.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function Ie(S=3988292384){return Re(S)?Promise.reject(Re(S)):v(H,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:4,digestSize:4};return M})}var Fe="crc64",yn="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAQUEAQECAgYOAn8BQZCJBgt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEKgwgGBQBBgAkL9QMDAX4BfwJ+AkBBACkDgIkCQQApA4AJIgBRDQBBgIkBIQFCACECA0AgAUIAQgBCAEIAQgBCAEIAQgAgAkIBg30gAIMgAkIBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIU3AwAgAUEIaiEBIAJCAXwiAkKAAlINAAtBACEBA0AgAUGImQFqIAFBiIkBaikDACICp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiKkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiLkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiMkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiNkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiOkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiPkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhTcDACABQQhqIgFB+A9HDQALQQAgADcDgIkCC0EAQgA3A4iJAguUAwIBfgJ/QQApA4iJAkJ/hSEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAIpAwAgAYUiAUIwiKdB/wFxQQN0QYCZAWopAwAgAUI4iKdBA3RBgIkBaikDAIUgAUIoiKdB/wFxQQN0QYCpAWopAwCFIAFCIIinQf8BcUEDdEGAuQFqKQMAhSABpyIDQRV2QfgPcUGAyQFqKQMAhSADQQ12QfgPcUGA2QFqKQMAhSADQQV2QfgPcUGA6QFqKQMAhSADQf8BcUEDdEGA+QFqKQMAhSEBIAJBCGohAiAAQXhqIgBBB0sNAAsLAkAgAEUNAAJAAkAgAEEBcQ0AIAAhAwwBCyABQv8BgyACMQAAhadBA3RBgIkBaikDACABQgiIhSEBIAJBAWohAiAAQX9qIQMLIABBAUYNAANAIAFC/wGDIAIxAACFp0EDdEGAiQFqKQMAIAFCCIiFIgFC/wGDIAJBAWoxAACFp0EDdEGAiQFqKQMAIAFCCIiFIQEgAkECaiECIANBfmoiAw0ACwtBACABQn+FNwOIiQILZAEBfkEAQQApA4iJAiIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOACQsGAEGIiQILAgALCwsBAEGACAsECAAAAA==",bs="c5ac6c16",vs={name:Fe,data:yn,hash:bs};let ks=new o,ji=null,Ln=new Uint8Array(8);function f0(S){let q="Polynomial must be provided as a 16 char long hex string";if(typeof S!="string"||S.length!==16)return{hi:0,lo:0,err:new Error(q)};let M=+`0x${S.slice(0,8)}`,Y=+`0x${S.slice(8)}`;return Number.isNaN(M)||Number.isNaN(Y)?{hi:M,lo:Y,err:new Error(q)}:{hi:M,lo:Y,err:null}}function pu(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function Xw(S,q="c96c5795d7870f42"){let{hi:M,lo:Y,err:ie}=f0(q);if(ie!==null)return Promise.reject(ie);if(ji===null)return E(ks,vs,8).then(ae=>(ji=ae,pu(Ln.buffer,Y,M),ji.writeMemory(Ln),ji.calculate(S)));try{pu(Ln.buffer,Y,M),ji.writeMemory(Ln);let ae=ji.calculate(S);return Promise.resolve(ae)}catch(ae){return Promise.reject(ae)}}function Zw(S="c96c5795d7870f42"){let{hi:q,lo:M,err:Y}=f0(S);return Y!==null?Promise.reject(Y):v(vs,8).then(ie=>{let ae=new Uint8Array(8);pu(ae.buffer,M,q),ie.writeMemory(ae),ie.init();let ge={init:()=>(ie.writeMemory(ae),ie.init(),ge),update:xe=>(ie.update(xe),ge),digest:xe=>ie.digest(xe),save:()=>ie.save(),load:xe=>(ie.load(xe),ge),blockSize:8,digestSize:8};return ge})}var he="md4",Ze="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",Lr="bd8ce7c7",In={name:he,data:Ze,hash:Lr};let ex=new o,A0=null;function OO(S){if(A0===null)return E(ex,In,16).then(q=>(A0=q,A0.calculate(S)));try{let q=A0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function MO(){return v(In,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var LO="md5",HO="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",KO="e6508e4b",fv={name:LO,data:HO,hash:KO};let GO=new o,h0=null;function zO(S){if(h0===null)return E(GO,fv,16).then(q=>(h0=q,h0.calculate(S)));try{let q=h0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function JO(){return v(fv,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var jO="sha1",$O="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",VO="6b530c24",Av={name:jO,data:$O,hash:VO};let YO=new o,g0=null;function WO(S){if(g0===null)return E(YO,Av,20).then(q=>(g0=q,g0.calculate(S)));try{let q=g0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function XO(){return v(Av,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}var ZO="sha3",eM="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",tM="fb24e536",p0={name:ZO,data:eM,hash:tM};let rM=new o,mu=null;function m0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function iM(S,q=512){if(m0(q))return Promise.reject(m0(q));let M=q/8;if(mu===null||mu.hashLength!==M)return E(rM,p0,M).then(Y=>(mu=Y,mu.calculate(S,q,6)));try{let Y=mu.calculate(S,q,6);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function nM(S=512){if(m0(S))return Promise.reject(m0(S));let q=S/8;return v(p0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,6),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}let sM=new o,yu=null;function y0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function oM(S,q=512){if(y0(q))return Promise.reject(y0(q));let M=q/8;if(yu===null||yu.hashLength!==M)return E(sM,p0,M).then(Y=>(yu=Y,yu.calculate(S,q,1)));try{let Y=yu.calculate(S,q,1);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function aM(S=512){if(y0(S))return Promise.reject(y0(S));let q=S/8;return v(p0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,1),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}var cM="sha256",lM="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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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",dM="8c18dd94",I0={name:cM,data:lM,hash:dM};let uM=new o,w0=null;function fM(S){if(w0===null)return E(uM,I0,28).then(q=>(w0=q,w0.calculate(S,224)));try{let q=w0.calculate(S,224);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function AM(){return v(I0,28).then(S=>{S.init(224);let q={init:()=>(S.init(224),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:28};return q})}let hM=new o,x0=null;function gM(S){if(x0===null)return E(hM,I0,32).then(q=>(x0=q,x0.calculate(S,256)));try{let q=x0.calculate(S,256);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function hv(){return v(I0,32).then(S=>{S.init(256);let q={init:()=>(S.init(256),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}var pM="sha512",mM="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",yM="f2e40eb1",C0={name:pM,data:mM,hash:yM};let IM=new o,E0=null;function wM(S){if(E0===null)return E(IM,C0,48).then(q=>(E0=q,E0.calculate(S,384)));try{let q=E0.calculate(S,384);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function xM(){return v(C0,48).then(S=>{S.init(384);let q={init:()=>(S.init(384),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:48};return q})}let CM=new o,B0=null;function EM(S){if(B0===null)return E(CM,C0,64).then(q=>(B0=q,B0.calculate(S,512)));try{let q=B0.calculate(S,512);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function BM(){return v(C0,64).then(S=>{S.init(512);let q={init:()=>(S.init(512),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:64};return q})}var bM="xxhash32",vM="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",kM="4bb12485",gv={name:bM,data:vM,hash:kM};let SM=new o,b0=null;function v0(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be a valid 32-bit long unsigned integer."):null}function DM(S,q=0){if(v0(q))return Promise.reject(v0(q));if(b0===null)return E(SM,gv,4).then(M=>(b0=M,b0.calculate(S,q)));try{let M=b0.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function QM(S=0){return v0(S)?Promise.reject(v0(S)):v(gv,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:16,digestSize:4};return M})}var _M="xxhash64",FM="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",PM="177fbfa3",pv={name:_M,data:FM,hash:PM};let TM=new o,hl=null,k0=new Uint8Array(8);function Eo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function tx(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function UM(S,q=0,M=0){if(Eo(q))return Promise.reject(Eo(q));if(Eo(M))return Promise.reject(Eo(M));if(hl===null)return E(TM,pv,8).then(Y=>(hl=Y,tx(k0.buffer,q,M),hl.writeMemory(k0),hl.calculate(S)));try{tx(k0.buffer,q,M),hl.writeMemory(k0);let Y=hl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function RM(S=0,q=0){return Eo(S)?Promise.reject(Eo(S)):Eo(q)?Promise.reject(Eo(q)):v(pv,8).then(M=>{let Y=new Uint8Array(8);tx(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:32,digestSize:8};return ie})}var NM="xxhash3",qM="AGFzbQEAAAABNAhgAAF/YAR/f39/AGAHf39/f39/fwBgBH9+fn4BfmAEf39/fgF+YAN/f34BfmAAAGABfwADDg0AAQIDBAUFBQYHBgAGBQQBAQICBg4CfwFBwI4FC38AQcAJCwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAIC0hhc2hfVXBkYXRlAAkKSGFzaF9GaW5hbAAKDUhhc2hfR2V0U3RhdGUACw5IYXNoX0NhbGN1bGF0ZQAMClNUQVRFX1NJWkUDAQr6QQ0FAEGACgvkAwMPfgF/AX4CQCADRQ0AIAApAzAhBCAAKQM4IQUgACkDICEGIAApAyghByAAKQMQIQggACkDGCEJIAApAwAhCiAAKQMIIQsDQCAFIAFBMGopAwAiDHwgAkE4aikDACABQThqKQMAIg2FIgVCIIggBUL/////D4N+fCEFIAcgAUEgaikDACIOfCACQShqKQMAIAFBKGopAwAiD4UiB0IgiCAHQv////8Pg358IQcgCSABQRBqKQMAIhB8IAJBGGopAwAgAUEYaikDACIRhSIJQiCIIAlC/////w+DfnwhCSALIAEpAwAiEnwgAkEIaiITKQMAIAFBCGopAwAiFIUiC0IgiCALQv////8Pg358IQsgAkEwaikDACAMhSIMQiCIIAxC/////w+DfiAEfCANfCEEIAJBIGopAwAgDoUiDEIgiCAMQv////8Pg34gBnwgD3whBiACQRBqKQMAIBCFIgxCIIggDEL/////D4N+IAh8IBF8IQggAikDACAShSIMQiCIIAxC/////w+DfiAKfCAUfCEKIAFBwABqIQEgEyECIANBf2oiAw0ACyAAIAk3AxggACAKNwMAIAAgCzcDCCAAIAc3AyggACAINwMQIAAgBTcDOCAAIAY3AyAgACAENwMwCwveAgIBfwF+AkAgBCACIAEoAgAiB2siAkkNACAAIAMgBSAHQQN0aiACEAEgACAFIAZqIgcpAwAgACkDACIIQi+IhSAIhUKx893xCX43AwAgACAHKQMIIAApAwgiCEIviIUgCIVCsfPd8Ql+NwMIIAAgBykDECAAKQMQIghCL4iFIAiFQrHz3fEJfjcDECAAIAcpAxggACkDGCIIQi+IhSAIhUKx893xCX43AxggACAHKQMgIAApAyAiCEIviIUgCIVCsfPd8Ql+NwMgIAAgBykDKCAAKQMoIghCL4iFIAiFQrHz3fEJfjcDKCAAIAcpAzAgACkDMCIIQi+IhSAIhUKx893xCX43AzAgACAHKQM4IAApAzgiCEIviIUgCIVCsfPd8Ql+NwM4IAAgAyACQQZ0aiAFIAQgAmsiBxABIAEgBzYCAA8LIAAgAyAFIAdBA3RqIAQQASABIAcgBGo2AgALhQEBAX8gAiABhSADpyIEQRh0IARBgP4DcUEIdHIgBEEIdkGA/gNxIARBGHZycq1CIIYgA4V9QQA1AoCMAUIghiAAQfyLAWo1AgCEhSIDQjGJIANCGImFIAOFQqW+4/TRjIfZn39+IgNCI4ggAK18IAOFQqW+4/TRjIfZn39+IgNCHIggA4ULZwAgAiABc60gA3wiA0IhiEEALQCAjAFBEHQgAEEIdHIgAEEBdkGAjAFqLQAAQRh0ciAAQf+LAWotAAByrYUgA4VCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhQuJAwEEfgJAIABBCUkNAEEAKQOAjAEgASkDICABKQMYhSACfIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAArXwgAEH4iwFqKQMAIAEpAzAgASkDKIUgAn2FIgJ8IAJC/////w+DIgQgA0IgiCIFfiIGQv////8PgyACQiCIIgIgA0L/////D4MiA358IAQgA34iA0IgiHwiBEIghiADQv////8Pg4QgBkIgiCACIAV+fCAEQiCIfIV8IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFDwsCQCAAQQRJDQAgACABQQhqKQMAIAFBEGopAwAgAhADDwsCQCAARQ0AIAAgASgCACABQQRqKAIAIAIQBA8LIAEpAzggASkDQIUgAoUiA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC94IAQZ+IACtQoeVr6+Ytt6bnn9+IQMCQCAAQSFJDQACQCAAQcEASQ0AAkAgAEHhAEkNACABKQNoIAJ9QQApA7iMAYUiBEL/////D4MiBSABKQNgIAJ8QQApA7CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDeCACfSAAQciLAWopAwCFIgNC/////w+DIgQgASkDcCACfCAAQcCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQNIIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQNAIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDWCACfSAAQdiLAWopAwCFIgNC/////w+DIgQgASkDUCACfCAAQdCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMoIAJ9QQApA5iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA5CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDOCACfSAAQeiLAWopAwCFIgNC/////w+DIgQgASkDMCACfCAAQeCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMIIAJ9QQApA4iMAYUiBEL/////D4MiBSABKQMAIAJ8QQApA4CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDGCACfSAAQfiLAWopAwCFIgNC/////w+DIgQgASkDECACfCAAQfCLAWopAwCFIgJCIIgiBX4iBkL/////D4MgA0IgiCIDIAJC/////w+DIgJ+fCAEIAJ+IgJCIIh8IgRCIIYgAkL/////D4OEIAZCIIggAyAFfnwgBEIgiHyFfCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQv8CgQBfwV+An8BfkEAIQMgASkDeCACfUEAKQP4jAGFIgRC/////w+DIgUgASkDcCACfEEAKQPwjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpA2ggAn1BACkD6IwBhSIEQv////8PgyIFIAEpA2AgAnxBACkD4IwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQNYIAJ9QQApA9iMAYUiBEL/////D4MiBSABKQNQIAJ8QQApA9CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDSCACfUEAKQPIjAGFIgRC/////w+DIgUgASkDQCACfEEAKQPAjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAzggAn1BACkDuIwBhSIEQv////8PgyIFIAEpAzAgAnxBACkDsIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQMoIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDGCACfUEAKQOYjAGFIgRC/////w+DIgUgASkDECACfEEAKQOQjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAwggAn1BACkDiIwBhSIEQv////8PgyIFIAEpAwAgAnxBACkDgIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSAArUKHla+vmLbem55/fnx8fHx8fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQCQCAAQZABSA0AIABBBHZBeGohCQNAIAEgA2oiCkELaikDACACfSADQYiNAWopAwCFIgVC/////w+DIgYgCkEDaikDACACfCADQYCNAWopAwCFIgdCIIgiCH4iC0L/////D4MgBUIgiCIFIAdC/////w+DIgd+fCAGIAd+IgZCIIh8IgdCIIYgBkL/////D4OEIAtCIIggBSAIfnwgB0IgiHyFIAR8IQQgA0EQaiEDIAlBf2oiCQ0ACwsgASkDfyACfSAAQfiLAWopAwCFIgVC/////w+DIgYgASkDdyACfCAAQfCLAWopAwCFIgJCIIgiB34iCEL/////D4MgBUIgiCIFIAJC/////w+DIgJ+fCAGIAJ+IgJCIIh8IgZCIIYgAkL/////D4OEIAhCIIggBSAHfnwgBkIgiHyFIAR8IgJCJYggAoVC+fPd8ZnymasWfiICQiCIIAKFC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAA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QQApA4CKATcDACACQQApA4iKATcDCCACQQApA5CKATcDECACQQApA5iKATcDGCACQQApA6CKATcDICACQQApA6iKATcDKCACQQApA7CKASIFNwMwIAJBACkDuIoBIgY3AzgCQAJAQQAoAoCOASIHQcAASQ0AIAJBACgCiI4BNgJAIAIgAkHAAGpBACgCmI4BQYCMASAHQX9qQQZ2IANBACgCnI4BIgAQAiADIABqIgBBeWopAwAhCCAAKQMJIQkgACkDGSEKIAApAykhCyAHQcCLAWopAwAhBSAAKQMBIQwgB0HIiwFqKQMAIQYgB0HQiwFqKQMAIQ0gACkDESEOIAdB2IsBaikDACEPIAdB4IsBaikDACEQIAApAyEhESAHQeiLAWopAwAhEiACKQMAIRMgAikDECEUIAIpAyAhFSACKQMwIRYgAikDCCEXIAIpAxghGCACKQMoIRkgAiACKQM4IAdB8IsBaikDACIafCAAKQMxIAdB+IsBaikDACIbhSIcQiCIIBxC/////w+Dfnw3AzggGSAQfCARIBKFIhFCIIggEUL/////D4N+fCERIBggDXwgDiAPhSIOQiCIIA5C/////w+DfnwhDiAXIAV8IAwgBoUiDEIgiCAMQv////8Pg358IQwgGyAWIAsgGoUiC0IgiCALQv////8Pg358fCELIBIgFSAKIBCFIhBCIIggEEL/////D4N+fHwhECAPIBQgCSANhSINQiCIIA1C/////w+Dfnx8IRIgBiATIAggBYUiBUIgiCAFQv////8Pg358fCEIDAELIAdBwI0BaiEdQcAAIAdrIR4gAkHAAGohAAJAAkACQCAHQThNDQAgHiEfDAELAkACQEE4IAdrQQN2QQFqQQdxIh8NACACQcAAaiEAIB4hHwwBCyACQcAAaiEAIB9BA3QiICEfA0AgACAdKQMANwMAIABBCGohACAdQQhqIR0gH0F4aiIfDQALQcAAIAcgIGprIR8LAkAgBw0AA0AgACAdKQMANwMAIABBCGogHUEIaikDADcDACAAQRBqIB1BEGopAwA3AwAgAEEYaiAdQRhqKQMANwMAIABBIGogHUEgaikDADcDACAAQShqIB1BKGopAwA3AwAgAEEwaiAdQTBqKQMANwMAIABBOGogHUE4aikDADcDACAAQcAAaiEAIB1BwABqIR0gH0FAaiIfQQdLDQALCyAfRQ0BCyAfQX9qISECQCAfQQdxIiBFDQAgH0F4cSEfA0AgACAdLQAAOgAAIABBAWohACAdQQFqIR0gIEF/aiIgDQALCyAhQQdJDQADQCAAIB0pAAA3AAAgAEEIaiEAIB1BCGohHSAfQXhqIh8NAAsLIAJBwABqIB5qIR1BgIwBIQACQAJAAkAgB0EISQ0AAkAgB0E4akEDdkEBakEHcSIfDQAMAgsgH0EDdCEgQYCMASEAA0AgHSAAKQMANwMAIB1BCGohHSAAQQhqIQAgH0F/aiIfDQALIAcgIGshBwsgB0UNAQJAAkAgB0EHcSIgDQAgByEfDAELIAdBeHEhHwNAIB0gAC0AADoAACAdQQFqIR0gAEEBaiEAICBBf2oiIA0ACwsgB0EISQ0BCwNAIB0gACkAADcAACAdQQhqIR0gAEEIaiEAIB9BeGoiHw0ACwsgA0EAKAKcjgFqIgBBeWopAwAhCiAAKQMJIRMgACkDGSEUIAApAykhCyAAKQMBIQwgACkDESEOIAApAyEhESACKQMAIRUgAikDECEWIAIpAyAhFyACKQMIIRggAikDQCENIAIpA0ghDyACKQMYIRkgAikDUCESIAIpA1ghCCACKQMoIRogAikDYCEQIAIpA2ghCSACIAYgAikDcCIbfCAAKQMxIAIpA3giBoUiHEIgiCAcQv////8Pg358NwM4IBogEHwgESAJhSIRQiCIIBFC/////w+DfnwhESAZIBJ8IA4gCIUiDkIgiCAOQv////8Pg358IQ4gGCANfCAMIA+FIgxCIIggDEL/////D4N+fCEMIAYgCyAbhSILQiCIIAtC/////w+DfiAFfHwhCyAJIBcgFCAQhSIFQiCIIAVC/////w+Dfnx8IRAgCCAWIBMgEoUiBUIgiCAFQv////8Pg358fCESIA8gFSAKIA2FIgVCIIggBUL/////D4N+fHwhCAsgAykDQyACKQM4hSIFQv////8PgyIGIAMpAzsgC4UiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDMyARhSIFQv////8PgyIGIAMpAysgEIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDIyAOhSIFQv////8PgyIGIAMpAxsgEoUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDEyAMhSIFQv////8PgyIGIAMpAwsgCIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgBEKHla+vmLbem55/fnx8fHwiBEIliCAEhUL5893xmfKZqxZ+IgRCIIggBIUhBAwBCyAEpyEAAkBBACkDoI4BIgRQDQACQCAAQRBLDQAgAEGACCAEEAUhBAwCCwJAIABBgAFLDQAgAEGACCAEEAYhBAwCCyAAQYAIIAQQByEEDAELAkAgAEEQSw0AIAAgA0IAEAUhBAwBCwJAIABBgAFLDQAgACADQgAQBiEEDAELIAAgA0IAEAchBAtBACAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISENwOACiABJAALBgBBgIoBCwIACwvMAQEAQYAIC8QBuP5sOSOkS758AYEs9yGtHN7UbemDkJfbckCkpLezZx/LeeZOzMDleIJa0H3M/3IhuAhGdPdDJI7gNZDmgTomTDwoUruRwwDLiNBlixtTLqNxZEiXog35TjgZ70ap3qzYqPp2P+OcND/53LvHxwtPHYpR4EvNtFkxyJ9+ydl4c2TqxayDNNPrw8WBoP/6E2PrFw3dUbfw2knTFlUmKdRonisWvlh9R6H8j/i40XrQMc5FyzqPlRYEKK/X+8q7S0B+QAIAAA==",OM="5a2fbdbb",mv={name:NM,data:qM,hash:OM};let MM=new o,gl=null,S0=new Uint8Array(8);function Bo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function rx(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function LM(S,q=0,M=0){if(Bo(q))return Promise.reject(Bo(q));if(Bo(M))return Promise.reject(Bo(M));if(gl===null)return E(MM,mv,8).then(Y=>(gl=Y,rx(S0.buffer,q,M),gl.writeMemory(S0),gl.calculate(S)));try{rx(S0.buffer,q,M),gl.writeMemory(S0);let Y=gl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function HM(S=0,q=0){return Bo(S)?Promise.reject(Bo(S)):Bo(q)?Promise.reject(Bo(q)):v(mv,8).then(M=>{let Y=new Uint8Array(8);rx(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:8};return ie})}var KM="xxhash128",GM="AGFzbQEAAAABKwdgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAR/f39+AGAAAGABfwADDQwAAQIDBAQEBQYFAAUFBAEBAgIGDgJ/AUHAjgULfwBBwAkLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAcLSGFzaF9VcGRhdGUACApIYXNoX0ZpbmFsAAkNSGFzaF9HZXRTdGF0ZQAKDkhhc2hfQ2FsY3VsYXRlAAsKU1RBVEVfU0laRQMBCqBNDAUAQYAKC+QDAw9+AX8BfgJAIANFDQAgACkDMCEEIAApAzghBSAAKQMgIQYgACkDKCEHIAApAxAhCCAAKQMYIQkgACkDACEKIAApAwghCwNAIAUgAUEwaikDACIMfCACQThqKQMAIAFBOGopAwAiDYUiBUIgiCAFQv////8Pg358IQUgByABQSBqKQMAIg58IAJBKGopAwAgAUEoaikDACIPhSIHQiCIIAdC/////w+DfnwhByAJIAFBEGopAwAiEHwgAkEYaikDACABQRhqKQMAIhGFIglCIIggCUL/////D4N+fCEJIAsgASkDACISfCACQQhqIhMpAwAgAUEIaikDACIUhSILQiCIIAtC/////w+DfnwhCyACQTBqKQMAIAyFIgxCIIggDEL/////D4N+IAR8IA18IQQgAkEgaikDACAOhSIMQiCIIAxC/////w+DfiAGfCAPfCEGIAJBEGopAwAgEIUiDEIgiCAMQv////8Pg34gCHwgEXwhCCACKQMAIBKFIgxCIIggDEL/////D4N+IAp8IBR8IQogAUHAAGohASATIQIgA0F/aiIDDQALIAAgCTcDGCAAIAo3AwAgACALNwMIIAAgBzcDKCAAIAg3AxAgACAFNwM4IAAgBjcDICAAIAQ3AzALC94CAgF/AX4CQCAEIAIgASgCACIHayICSQ0AIAAgAyAFIAdBA3RqIAIQASAAIAUgBmoiBykDACAAKQMAIghCL4iFIAiFQrHz3fEJfjcDACAAIAcpAwggACkDCCIIQi+IhSAIhUKx893xCX43AwggACAHKQMQIAApAxAiCEIviIUgCIVCsfPd8Ql+NwMQIAAgBykDGCAAKQMYIghCL4iFIAiFQrHz3fEJfjcDGCAAIAcpAyAgACkDICIIQi+IhSAIhUKx893xCX43AyAgACAHKQMoIAApAygiCEIviIUgCIVCsfPd8Ql+NwMoIAAgBykDMCAAKQMwIghCL4iFIAiFQrHz3fEJfjcDMCAAIAcpAzggACkDOCIIQi+IhSAIhUKx893xCX43AzggACADIAJBBnRqIAUgBCACayIHEAEgASAHNgIADwsgACADIAUgB0EDdGogBBABIAEgByAEajYCAAvtAwEFfiABKQM4IAApAziFIgNC/////w+DIgQgASkDMCAAKQMwhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMoIAApAyiFIgNC/////w+DIgQgASkDICAAKQMghSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMYIAApAxiFIgNC/////w+DIgQgASkDECAAKQMQhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMIIAApAwiFIgNC/////w+DIgQgASkDACAAKQMAhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSACfHx8fCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQu6CAIFfgN/AkAgAUEJSQ0AIAAgAUH4iwFqKQMAIgQgAikDOCACKQMwhSADfIUiBUL/////D4NC95Svrwh+IAVCgICAgHCDfEEAKQOAjAEgAikDKCACKQMghSADfYUgBIUiA0IgiCIEQrHz3fEJfnwgBEKHla+vCH4iBEIgiHwgBEL/////D4MgA0L/////D4MiA0Kx893xCX58IANCh5Wvrwh+IgRCIIh8IgVCIIh8IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgBEL/////D4MgAUF/aq1CNoaEIAVCIIZ8hSIEQiCIIgVCz9bTvgJ+IgZC/////w+DIARC/////w+DIgRCvdzKlQx+fCAEQs/W074CfiIEQiCIfCIHQiCGIghCJYggCCAEQv////8Pg4SFQvnz3fGZ8pmrFn4iBEIgiCAEhTcDACAAIAVCvdzKlQx+IANCz9bTvtLHq9lCfnwgBkIgiHwgB0IgiHwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4U3AwgPCwJAIAFBBEkNACAAIAIpAxggAikDEIUgA6ciAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnKtQiCGIAOFfCABQfyLAWo1AgBCIIZBADUCgIwBhIUiA0IgiCIEIAFBAnRBh5Wvr3hqrSIFfiIGQiCIIARCsfPd8Ql+fCAGQv////8PgyADQv////8PgyIDQrHz3fEJfnwgAyAFfiIDQiCIfCIEQiCIfCAEQiCGIANC/////w+DhCIEQgGGfCIDQiWIIAOFQvnz3fGZ8pmrFn4iBUIgiCAFhTcDCCAAIANCA4ggBIUiA0IjiCADhUKlvuP00YyH2Z9/fiIDQhyIIAOFNwMADwsCQCABRQ0AIAAgAigCBCACKAIAc60gA3wiBEIhiEEALQCAjAFBEHQgAUEIdHIiCSABQQF2QYCMAWotAABBGHRyIgogAUH/iwFqLQAAIgFyIguthSAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMAIAAgAigCDCACKAIIc60gA30iA0IhiCABQRh0IAtBgP4DcUEIdHIgCUEIdkGA/gNxIApBGHZyckENd62FIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwgPCyAAIAIpA1AgAikDWIUgA4UiBEIhiCAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMIIAAgAikDQCACKQNIhSADhSIDQiGIIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwALwwoBCn4gAa0iBEKHla+vmLbem55/fiEFAkACQCABQSFPDQBCACEGDAELQgAhBwJAIAFBwQBJDQBCACEHAkAgAUHhAEkNACACQfgAaikDACADfSABQciLAWopAwAiCIUiB0L/////D4MiCSACKQNwIAN8IAFBwIsBaikDACIKhSILQiCIIgx+Ig1CIIggB0IgiCIHIAx+fCANQv////8PgyAHIAtC/////w+DIgt+fCAJIAt+IgdCIIh8IglCIIh8QQApA7iMASILQQApA7CMASIMfIUgCUIghiAHQv////8Pg4SFIQcgAkHoAGopAwAgA30gC4UiCUL/////D4MiCyACKQNgIAN8IAyFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCALIAx+IgtCIIh8IgxCIIYgC0L/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggCnyFIQULIAJB2ABqKQMAIAN9IAFB2IsBaikDACIIhSIJQv////8PgyIKIAIpA1AgA3wgAUHQiwFqKQMAIguFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCAKIAx+IgpCIIh8IgxCIIYgCkL/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAd8QQApA6iMASIJQQApA6CMASIKfIUhByACQcgAaikDACADfSAJhSIJQv////8PgyIMIAIpA0AgA3wgCoUiCkIgiCINfiIGQv////8PgyAJQiCIIgkgCkL/////D4MiCn58IAwgCn4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgBXwgCCALfIUhBQsgAkE4aikDACADfSABQeiLAWopAwAiCIUiCUL/////D4MiCiACKQMwIAN8IAFB4IsBaikDACILhSIMQiCIIg1+IgZC/////w+DIAlCIIgiCSAMQv////8PgyIMfnwgCiAMfiIKQiCIfCIMQiCGIApC/////w+DhCAGQiCIIAkgDX58IAxCIIh8hSAHfEEAKQOYjAEiB0EAKQOQjAEiCXyFIQYgAkEoaikDACADfSAHhSIHQv////8PgyIKIAIpAyAgA3wgCYUiCUIgiCIMfiINQv////8PgyAHQiCIIgcgCUL/////D4MiCX58IAogCX4iCUIgiHwiCkIghiAJQv////8Pg4QgDUIgiCAHIAx+fCAKQiCIfIUgBXwgCCALfIUhBQsgACACQRhqKQMAIAN9IAFB+IsBaikDACIHhSIIQv////8PgyIJIAIpAxAgA3wgAUHwiwFqKQMAIgqFIgtCIIgiDH4iDUL/////D4MgCEIgiCIIIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAZ8QQApA4iMASIIQQApA4CMASIJfIUiCyACQQhqKQMAIAN9IAiFIghC/////w+DIgwgAikDACADfCAJhSIJQiCIIg1+IgZC/////w+DIAhCIIgiCCAJQv////8PgyIJfnwgDCAJfiIJQiCIfCIMQiCGIAlC/////w+DhCAGQiCIIAggDX58IAxCIIh8hSAFfCAHIAp8hSIFfCIHQiWIIAeFQvnz3fGZ8pmrFn4iB0IgiCAHhTcDACAAQgAgBUKHla+vmLbem55/fiAEIAN9Qs/W077Sx6vZQn58IAtC49zKlfzO8vWFf358IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFfTcDCAuhDwMBfxR+An9BACEEIAJB+ABqKQMAIAN9QQApA/iMASIFhSIGQv////8PgyIHIAIpA3AgA3xBACkD8IwBIgiFIglCIIgiCn4iC0L/////D4MgBkIgiCIGIAlC/////w+DIgl+fCAHIAl+IgdCIIh8IglCIIYgB0L/////D4OEIAtCIIggBiAKfnwgCUIgiHyFIAJB2ABqKQMAIAN9QQApA9iMASIHhSIGQv////8PgyIJIAIpA1AgA3xBACkD0IwBIgqFIgtCIIgiDH4iDUL/////D4MgBkIgiCIGIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAJBOGopAwAgA31BACkDuIwBIgmFIgZC/////w+DIgsgAikDMCADfEEAKQOwjAEiDIUiDUIgiCIOfiIPQv////8PgyAGQiCIIgYgDUL/////D4MiDX58IAsgDX4iC0IgiHwiDUIghiALQv////8Pg4QgD0IgiCAGIA5+fCANQiCIfIUgAkEYaikDACADfUEAKQOYjAEiC4UiBkL/////D4MiDSACKQMQIAN8QQApA5CMASIOhSIPQiCIIhB+IhFC/////w+DIAZCIIgiBiAPQv////8PgyIPfnwgDSAPfiINQiCIfCIPQiCGIA1C/////w+DhCARQiCIIAYgEH58IA9CIIh8hUEAKQOIjAEiDUEAKQOAjAEiD3yFfEEAKQOojAEiEEEAKQOgjAEiEXyFfEEAKQPIjAEiEkEAKQPAjAEiE3yFfEEAKQPojAEiFEEAKQPgjAEiFXyFIgZCJYggBoVC+fPd8ZnymasWfiIGQiCIIAaFIQYgAkHoAGopAwAgA30gFIUiFEL/////D4MiFiACKQNgIAN8IBWFIhVCIIgiF34iGEL/////D4MgFEIgiCIUIBVC/////w+DIhV+fCAWIBV+IhVCIIh8IhZCIIYgFUL/////D4OEIBhCIIggFCAXfnwgFkIgiHyFIAJByABqKQMAIAN9IBKFIhJC/////w+DIhQgAikDQCADfCAThSITQiCIIhV+IhZC/////w+DIBJCIIgiEiATQv////8PgyITfnwgFCATfiITQiCIfCIUQiCGIBNC/////w+DhCAWQiCIIBIgFX58IBRCIIh8hSACQShqKQMAIAN9IBCFIhBC/////w+DIhIgAikDICADfCARhSIRQiCIIhN+IhRC/////w+DIBBCIIgiECARQv////8PgyIRfnwgEiARfiIRQiCIfCISQiCGIBFC/////w+DhCAUQiCIIBAgE358IBJCIIh8hSACQQhqKQMAIAN9IA2FIg1C/////w+DIhAgAikDACADfCAPhSIPQiCIIhF+IhJC/////w+DIA1CIIgiDSAPQv////8PgyIPfnwgECAPfiIPQiCIfCIQQiCGIA9C/////w+DhCASQiCIIA0gEX58IBBCIIh8hSABrSIPQoeVr6+Ytt6bnn9+fCALIA58hXwgCSAMfIV8IAcgCnyFfCAFIAh8hSIFQiWIIAWFQvnz3fGZ8pmrFn4iBUIgiCAFhSEFAkAgAUGgAUgNACABQQV2QXxqIRkDQCACIARqIhpBG2opAwAgA30gBEGYjQFqKQMAIgeFIghC/////w+DIgkgGkETaikDACADfCAEQZCNAWopAwAiCoUiC0IgiCIMfiINQv////8PgyAIQiCIIgggC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAIIAx+fCALQiCIfIUgBnwgBEGIjQFqKQMAIgggBEGAjQFqKQMAIgl8hSEGIBpBC2opAwAgA30gCIUiCEL/////D4MiCyAaQQNqKQMAIAN8IAmFIglCIIgiDH4iDUL/////D4MgCEIgiCIIIAlC/////w+DIgl+fCALIAl+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAV8IAcgCnyFIQUgBEEgaiEEIBlBf2oiGQ0ACwsgACACQf8AaikDACADfCABQeiLAWopAwAiB4UiCEL/////D4MiCSACKQN3IAN9IAFB4IsBaikDACIKhSILQiCIIgx+Ig1C/////w+DIAhCIIgiCCALQv////8PgyILfnwgCSALfiIJQiCIfCILQiCGIAlC/////w+DhCANQiCIIAggDH58IAtCIIh8hSAGfCABQfiLAWopAwAiBiABQfCLAWopAwAiCHyFIgkgAkHvAGopAwAgA3wgBoUiBkL/////D4MiCyACKQNnIAN9IAiFIghCIIgiDH4iDUL/////D4MgBkIgiCIGIAhC/////w+DIgh+fCALIAh+IghCIIh8IgtCIIYgCEL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAV8IAcgCnyFIgZ8IgVCJYggBYVC+fPd8ZnymasWfiIFQiCIIAWFNwMAIABCACAGQoeVr6+Ytt6bnn9+IA8gA31Cz9bTvtLHq9lCfnwgCULj3MqV/M7y9YV/fnwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4V9NwMIC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iL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AkHAAGogDGohC0GAjAEhAAJAAkACQCAHQQhJDQACQCAHQThqQQN2QQFqQQdxIg0NAAwCCyANQQN0IQ5BgIwBIQADQCALIAApAwA3AwAgC0EIaiELIABBCGohACANQX9qIg0NAAsgByAOayEHCyAHRQ0BAkACQCAHQQdxIg4NACAHIQ0MAQsgB0F4cSENA0AgCyAALQAAOgAAIAtBAWohCyAAQQFqIQAgDkF/aiIODQALCyAHQQhJDQELA0AgCyAAKQAANwAAIAtBCGohCyAAQQhqIQAgDUF4aiINDQALCyACIAIpAwggAikDQCIIfCADQQAoApyOAWoiACkDASACKQNIIgmFIgpCIIggCkL/////D4N+fDcDCCACIAIpAxggAikDUCIKfCAAKQMRIAIpA1giEIUiEUIgiCARQv////8Pg358NwMYIAIgECAKIAApAwmFIgpCIIggCkL/////D4N+IAIpAxB8fDcDECACIAkgCCAAQXlqKQMAhSIIQiCIIAhC/////w+DfiACKQMAfHw3AwAgACkDGSEIIAIpAyAhCSACIAIpAyggAikDYCIKfCAAKQMhIAIpA2giEIUiEUIgiCARQv////8Pg358NwMoIAIgECAJIAggCoUiCEIgiCAIQv////8Pg358fDcDICACIAYgAikDcCIIfCAAKQMxIAIpA3giBoUiCUIgiCAJQv////8Pg358NwM4IAIgBiAIIAApAymFIghCIIggCEL/////D4N+IAV8fDcDMAsgAiACIANBC2ogBEKHla+vmLbem55/fhADNwNAIAIgAiADQQAoApyOAWpBdWogBELP1tO+0ser2UJ+Qn+FEAM3A0gMAQsgBKchAAJAQQApA6COASIEUA0AAkAgAEEQSw0AIAJBwABqIABBgAggBBAEDAILAkAgAEGAAUsNACACQcAAaiAAQYAIIAQQBQwCCyACQcAAaiAAQYAIIAQQBgwBCwJAIABBEEsNACACQcAAaiAAIANCABAEDAELAkAgAEGAAUsNACACQcAAaiAAIANCABAFDAELIAJBwABqIAAgA0IAEAYLQQAgAikDcDcDuApBACACKQNgNwOoCkEAIAIpA1A3A5gKQQAgAkH4AGopAwA3A8AKQQAgAkHoAGopAwA3A7AKQQAgAkHYAGopAwA3A6AKQQAgAikDSCIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIgQ3A4AKQQAgBDcDkApBACACKQNAIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3A4gKIAEkAAsGAEGAigELAgALC8wBAQBBgAgLxAG4/mw5I6RLvnwBgSz3Ia0c3tRt6YOQl9tyQKSkt7NnH8t55k7MwOV4glrQfcz/ciG4CEZ090MkjuA1kOaBOiZMPChSu5HDAMuI0GWLG1Muo3FkSJeiDflOOBnvRqnerNio+nY/45w0P/ncu8fHC08dilHgS820WTHIn37J2XhzZOrFrIM00+vDxYGg//oTY+sXDd1Rt/DaSdMWVSYp1GieKxa+WH1HofyP+LjRetAxzkXLOo+VFgQor9f7yrtLQH5AAgAA",zM="b9ab74e2",yv={name:KM,data:GM,hash:zM};let JM=new o,pl=null,D0=new Uint8Array(8);function bo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function ix(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function jM(S,q=0,M=0){if(bo(q))return Promise.reject(bo(q));if(bo(M))return Promise.reject(bo(M));if(pl===null)return E(JM,yv,16).then(Y=>(pl=Y,ix(D0.buffer,q,M),pl.writeMemory(D0),pl.calculate(S)));try{ix(D0.buffer,q,M),pl.writeMemory(D0);let Y=pl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function $M(S=0,q=0){return bo(S)?Promise.reject(bo(S)):bo(q)?Promise.reject(bo(q)):v(yv,16).then(M=>{let Y=new Uint8Array(8);ix(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:16};return ie})}var VM="ripemd160",YM="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",WM="6abbce74",Iv={name:VM,data:YM,hash:WM};let XM=new o,Q0=null;function ZM(S){if(Q0===null)return E(XM,Iv,20).then(q=>(Q0=q,Q0.calculate(S)));try{let q=Q0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function eL(){return v(Iv,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}function tL(S,q){let{blockSize:M}=S,Y=C(q);if(Y.length>M){S.update(Y);let ie=S.digest("binary");return S.init(),ie}return new Uint8Array(Y.buffer,Y.byteOffset,Y.length)}function rL(S,q){S.init();let{blockSize:M}=S,Y=tL(S,q),ie=new Uint8Array(M);ie.set(Y);let ae=new Uint8Array(M);for(let xe=0;xe<M;xe++){let Je=ie[xe];ae[xe]=Je^92,ie[xe]=Je^54}S.update(ie);let ge={init:()=>(S.init(),S.update(ie),ge),update:xe=>(S.update(xe),ge),digest:(xe=>{let Je=S.digest("binary");return S.init(),S.update(ae),S.update(Je),S.digest(xe)}),save:()=>{throw new Error("save() not supported")},load:()=>{throw new Error("load() not supported")},blockSize:S.blockSize,digestSize:S.digestSize};return ge}function wv(S,q){if(!S||!S.then)throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');return S.then(M=>rL(M,q))}function iL(S,q,M,Y,ie){return s(this,void 0,void 0,function*(){let ae=new Uint8Array(Y),ge=new Uint8Array(q.length+4),xe=new DataView(ge.buffer),Je=C(q),qt=new Uint8Array(Je.buffer,Je.byteOffset,Je.length);ge.set(qt);let jt=0,rr=S.digestSize,Ot=Math.ceil(Y/rr),$i=null,Hr=null;for(let vo=1;vo<=Ot;vo++){xe.setUint32(q.length,vo),S.init(),S.update(ge),$i=S.digest("binary"),Hr=$i.slice();for(let wn=1;wn<M;wn++){S.init(),S.update(Hr),Hr=S.digest("binary");for(let ko=0;ko<rr;ko++)$i[ko]^=Hr[ko]}ae.set($i.subarray(0,Y-jt),jt),jt+=rr}if(ie==="binary")return ae;let Iu=new Uint8Array(Y*2);return w(Iu,ae,Y)})}let nL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.hashFunction||!S.hashFunction.then)throw new Error('Invalid hash function is provided! Usage: pbkdf2("password", "salt", 1000, 32, createSHA1()).');if(!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function nx(S){return s(this,void 0,void 0,function*(){nL(S);let q=yield wv(S.hashFunction,S.password);return iL(q,S.salt,S.iterations,S.hashLength,S.outputType)})}var sL="scrypt",oL="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cyICajYCOCAAIAAoAjwgAiAKakESdyAGc2o2AjwLvxIDFX8Bfg5/AkAgAkUNACAAQQd0IgNBQGoiBEEAKAKACCIFIAMgAmwiBmogAyABbGoiByADaiIIaiEJIAAgAkEHdCIKIAFBB3RqIgtsIQwgACALQYABamwhDSAAQQV0IgtBASALQQFLGyILQWBxIQ4gC0EBcSEPIAdBeGohECAHQXBqIREgB0FoaiESIAdBYGohEyAHQVhqIRQgB0FQaiEVIAdBSGohFiAHQUBqIRcgAa1Cf3whGCAEIAdqIRkgByAAQQh0IhpqIRsgACAKQYABamwhHCALQQRJIR1BACEeQQAhHwNAQQAoAoAIIiAgAyAfbGohIQJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgByALaiIEICMgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AIAcgIkECdCILaiAhIAtqKAIANgIACwJAIAFFDQBBACElIBwhIyAGISYDQCAFISQgACEiAkACQCAADQAgGyAXKQMANwMAIBsgFikDADcDCCAbIBUpAwA3AxAgGyAUKQMANwMYIBsgEykDADcDICAbIBIpAwA3AyggGyARKQMANwMwIBsgECkDADcDOAwBCwNAICQgJmoiCyAkIAxqIgQpAwA3AwAgC0EIaiAEQQhqKQMANwMAIAtBEGogBEEQaikDADcDACALQRhqIARBGGopAwA3AwAgC0EgaiAEQSBqKQMANwMAIAtBKGogBEEoaikDADcDACALQTBqIARBMGopAwA3AwAgC0E4aiAEQThqKQMANwMAIAtBwABqIARBwABqKQMANwMAIAtByABqIARByABqKQMANwMAIAtB0ABqIARB0ABqKQMANwMAIAtB2ABqIARB2ABqKQMANwMAIAtB4ABqIARB4ABqKQMANwMAIAtB6ABqIARB6ABqKQMANwMAIAtB8ABqIARB8ABqKQMANwMAIAtB+ABqIARB+ABqKQMANwMAICRBgAFqISQgIkF/aiIiDQALIAcgCCAbIAAQAiAFISQgACEiA0AgJCAjaiILICQgDWoiBCkDADcDACALQQhqIARBCGopAwA3AwAgC0EQaiAEQRBqKQMANwMAIAtBGGogBEEYaikDADcDACALQSBqIARBIGopAwA3AwAgC0EoaiAEQShqKQMANwMAIAtBMGogBEEwaikDADcDACALQThqIARBOGopAwA3AwAgC0HAAGogBEHAAGopAwA3AwAgC0HIAGogBEHIAGopAwA3AwAgC0HQAGogBEHQAGopAwA3AwAgC0HYAGogBEHYAGopAwA3AwAgC0HgAGogBEHgAGopAwA3AwAgC0HoAGogBEHoAGopAwA3AwAgC0HwAGogBEHwAGopAwA3AwAgC0H4AGogBEH4AGopAwA3AwAgJEGAAWohJCAiQX9qIiINAAsLIAggByAbIAAQAiAjIBpqISMgJiAaaiEmICVBAmoiJSABSQ0AC0EAISUDQAJAAkAgAA0AIBsgFykDADcDACAbIBYpAwA3AwggGyAVKQMANwMQIBsgFCkDADcDGCAbIBMpAwA3AyAgGyASKQMANwMoIBsgESkDADcDMCAbIBApAwA3AzgMAQsgACAKIBkpAgAgGIOnQQd0amwhJiAFISQgACEiA0AgJCAMaiILIAspAwAgJCAmaiIEKQMAhTcDACALQQhqIiMgIykDACAEQQhqKQMAhTcDACALQRBqIiMgIykDACAEQRBqKQMAhTcDACALQRhqIiMgIykDACAEQRhqKQMAhTcDACALQSBqIiMgIykDACAEQSBqKQMAhTcDACALQShqIiMgIykDACAEQShqKQMAhTcDACALQTBqIiMgIykDACAEQTBqKQMAhTcDACALQThqIiMgIykDACAEQThqKQMAhTcDACALQcAAaiIjICMpAwAgBEHAAGopAwCFNwMAIAtByABqIiMgIykDACAEQcgAaikDAIU3AwAgC0HQAGoiIyAjKQMAIARB0ABqKQMAhTcDACALQdgAaiIjICMpAwAgBEHYAGopAwCFNwMAIAtB4ABqIiMgIykDACAEQeAAaikDAIU3AwAgC0HoAGoiIyAjKQMAIARB6ABqKQMAhTcDACALQfAAaiIjICMpAwAgBEHwAGopAwCFNwMAIAtB+ABqIgsgCykDACAEQfgAaikDAIU3AwAgJEGAAWohJCAiQX9qIiINAAsgByAIIBsgABACIAAgCiAJKQIAIBiDp0EHdGpsISYgBSEkIAAhIgNAICQgDWoiCyALKQMAICQgJmoiBCkDAIU3AwAgC0EIaiIjICMpAwAgBEEIaikDAIU3AwAgC0EQaiIjICMpAwAgBEEQaikDAIU3AwAgC0EYaiIjICMpAwAgBEEYaikDAIU3AwAgC0EgaiIjICMpAwAgBEEgaikDAIU3AwAgC0EoaiIjICMpAwAgBEEoaikDAIU3AwAgC0EwaiIjICMpAwAgBEEwaikDAIU3AwAgC0E4aiIjICMpAwAgBEE4aikDAIU3AwAgC0HAAGoiIyAjKQMAIARBwABqKQMAhTcDACALQcgAaiIjICMpAwAgBEHIAGopAwCFNwMAIAtB0ABqIiMgIykDACAEQdAAaikDAIU3AwAgC0HYAGoiIyAjKQMAIARB2ABqKQMAhTcDACALQeAAaiIjICMpAwAgBEHgAGopAwCFNwMAIAtB6ABqIiMgIykDACAEQegAaikDAIU3AwAgC0HwAGoiIyAjKQMAIARB8ABqKQMAhTcDACALQfgAaiILIAspAwAgBEH4AGopAwCFNwMAICRBgAFqISQgIkF/aiIiDQALCyAIIAcgGyAAEAIgJUECaiIlIAFJDQALCwJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgIyALaiIEIAcgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AICEgIkECdCILaiAHIAtqKAIANgIACyAeIANqIR4gH0EBaiIfIAJHDQALCws=",aL="b32721f8",cL={name:sL,data:oL,hash:aL};function lL(S){return s(this,void 0,void 0,function*(){let{costFactor:q,blockSize:M,parallelism:Y,hashLength:ie}=S,ae=hv(),ge=yield nx({password:S.password,salt:S.salt,iterations:1,hashLength:128*M*Y,hashFunction:ae,outputType:"binary"}),xe=yield v(cL,0),Je=128*M*q,qt=256*M;xe.setMemorySize(ge.length+Je+qt),xe.writeMemory(ge,0),xe.getExports().scrypt(M,q,Y);let jt=xe.getMemory().subarray(0,128*M*Y),rr=yield nx({password:S.password,salt:jt,iterations:1,hashLength:ie,hashFunction:ae,outputType:"binary"});if(S.outputType==="hex"){let Ot=new Uint8Array(ie*2);return w(Ot,rr,ie)}return rr})}let dL=S=>S&&!(S&S-1),uL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.blockSize)||S.blockSize<1)throw new Error("Block size should be a positive number");if(!Number.isInteger(S.costFactor)||S.costFactor<2||!dL(S.costFactor))throw new Error("Cost factor should be a power of 2, greater than 1");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function fL(S){return s(this,void 0,void 0,function*(){return uL(S),lL(S)})}var AL="bcrypt",hL="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",gL="8bd8822d",xv={name:AL,data:hL,hash:gL};function pL(S){return s(this,void 0,void 0,function*(){let{costFactor:q,password:M,salt:Y}=S,ie=yield v(xv,0);ie.writeMemory(C(Y),0);let ae=C(M);ie.writeMemory(ae,16);let ge=S.outputType==="encoded"?1:0;ie.getExports().bcrypt(ae.length,q,ge);let xe=ie.getMemory();if(S.outputType==="encoded")return f(xe,60);if(S.outputType==="hex"){let Je=new Uint8Array(48);return w(Je,xe,24)}return xe.slice(0,24)})}let mL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.costFactor)||S.costFactor<4||S.costFactor>31)throw new Error("Cost factor should be a number between 4 and 31");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long");if(S.salt=C(S.salt),S.salt.length!==16)throw new Error("Salt should be 16 bytes long");if(S.outputType===void 0&&(S.outputType="encoded"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function yL(S){return s(this,void 0,void 0,function*(){return mL(S),pL(S)})}let IL=S=>!(!/^\$2[axyb]\$[0-3][0-9]\$[./A-Za-z0-9]{53}$/.test(S)||S[4]==="0"&&Number(S[5])<4||S[4]==="3"&&Number(S[5])>1),wL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified");if(S.hash.length!==60)throw new Error("Hash should be 60 bytes long");if(!IL(S.hash))throw new Error("Invalid hash");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long")};function xL(S){return s(this,void 0,void 0,function*(){wL(S);let{hash:q,password:M}=S,Y=yield v(xv,0);Y.writeMemory(C(q),0);let ie=C(M);return Y.writeMemory(ie,60),!!Y.getExports().bcrypt_verify(ie.length)})}var CL="whirlpool",EL="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",BL="8d8f6035",Cv={name:CL,data:EL,hash:BL};let bL=new o,_0=null;function vL(S){if(_0===null)return E(bL,Cv,64).then(q=>(_0=q,_0.calculate(S)));try{let q=_0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function kL(){return v(Cv,64).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:64};return q})}var SL="sm3",DL="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",QL="b6fb4b8e",Ev={name:SL,data:DL,hash:QL};let _L=new o,F0=null;function FL(S){if(F0===null)return E(_L,Ev,32).then(q=>(F0=q,F0.calculate(S)));try{let q=F0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function PL(){return v(Ev,32).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}r.adler32=J,r.argon2Verify=Bs,r.argon2d=xo,r.argon2i=Ee,r.argon2id=Gi,r.bcrypt=yL,r.bcryptVerify=xL,r.blake2b=qe,r.blake2s=Al,r.blake3=Ti,r.crc32=Ye,r.crc64=Xw,r.createAdler32=z,r.createBLAKE2b=_e,r.createBLAKE2s=Ai,r.createBLAKE3=A,r.createCRC32=Ie,r.createCRC64=Zw,r.createHMAC=wv,r.createKeccak=aM,r.createMD4=MO,r.createMD5=JO,r.createRIPEMD160=eL,r.createSHA1=XO,r.createSHA224=AM,r.createSHA256=hv,r.createSHA3=nM,r.createSHA384=xM,r.createSHA512=BM,r.createSM3=PL,r.createWhirlpool=kL,r.createXXHash128=$M,r.createXXHash3=HM,r.createXXHash32=QM,r.createXXHash64=RM,r.keccak=oM,r.md4=OO,r.md5=zO,r.pbkdf2=nx,r.ripemd160=ZM,r.scrypt=fL,r.sha1=WO,r.sha224=fM,r.sha256=gM,r.sha3=iM,r.sha384=wM,r.sha512=EM,r.sm3=FL,r.whirlpool=vL,r.xxhash128=jM,r.xxhash3=LM,r.xxhash32=DM,r.xxhash64=UM}))});var M4,yc,aE,km,L4=j(()=>{"use strict";M4=Qr(vm(),1),yc=32,aE=16,km=class r{dataKey;constructor(e){this.dataKey=e}static async create(e,t){if(!e)throw new Error("[Crypt] password \u4E0D\u80FD\u4E3A\u7A7A");let i=await(0,M4.scrypt)({password:e,salt:t||"",costFactor:16384,blockSize:8,parallelism:1,hashLength:64,outputType:"binary"}),n=await crypto.subtle.importKey("raw",i.slice(0,32),{name:"AES-CTR"},!1,["encrypt","decrypt"]);return new r(n)}encryptedSize(e){return e+yc}decryptedSize(e){return Math.max(0,e-yc)}async encrypt(e){let t=crypto.getRandomValues(new Uint8Array(aE)),i=new Uint8Array(yc);i.set(t,0),crypto.getRandomValues(i.subarray(aE));let n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,e)),s=new Uint8Array(yc+n.length);return s.set(i,0),s.set(n,yc),s}async decrypt(e){if(e.length<yc)throw new Error("[Crypt] \u52A0\u5BC6\u6587\u4EF6\u8FC7\u77ED\uFF08\u7F3A\u5C11\u6587\u4EF6\u5934\uFF09");let t=e.slice(0,aE),i=e.slice(yc);return new Uint8Array(await crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,i))}}});var Sm,H4=j(()=>{"use strict";Be();L4();Sm=class{addition;cipher=null;remoteDriver=null;remoteRoot="/";suffix;constructor(e){this.addition=e||{},this.suffix=this.addition.encrypted_suffix??".bin"}async init(){let e=this.addition.filename_encryption||"off";if(e!=="off")throw new Error(`[Crypt] filename_encryption='${e}' \u5C1A\u672A\u5B9E\u73B0\uFF0C\u5F53\u524D\u4EC5\u652F\u6301 off \u6A21\u5F0F\uFF08\u5185\u5BB9\u52A0\u5BC6\u3001\u6587\u4EF6\u540D\u4EC5\u52A0\u540E\u7F00\uFF09`);let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:i}=await Promise.resolve().then(()=>(Yt(),qi)),n=await t(this.addition.remote_path||"/");if(n.isVirtual||!n.storage)throw new Error(`[Crypt] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=n.physical||"/",this.remoteDriver=await i(n.storage.driver,n.storage),this.cipher=await km.create(this.addition.password,this.addition.salt||"")}ensureReady(){if(!this.cipher||!this.remoteDriver)throw new Error("[Crypt] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}decryptName(e){return this.suffix&&e.endsWith(this.suffix)?e.slice(0,-this.suffix.length):e}async list(e,t){this.ensureReady();let i=this.joinRemote(t);return(await this.remoteDriver.list("",i)).map(s=>{if(s.is_dir)return s;let o=this.decryptName(s.name);return{...s,name:o,size:this.cipher.decryptedSize(s.size),type:X(o,!1)}})}async get(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.get("",i);if(n.is_dir)return n;let s=this.decryptName(n.name);return{...n,name:s,size:this.cipher.decryptedSize(n.size),type:X(s,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.rename("",n+this.suffix,i+this.suffix):await this.remoteDriver.rename("",n,i)}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.remove("",n+this.suffix,i):await this.remoteDriver.remove("",n,i)}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.move(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.move(e,t,i,o,a)}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.copy(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.copy(e,t,i,o,a)}async put(e,t,i){this.ensureReady();let n=this.joinRemote(t)+this.suffix,s=await this.cipher.encrypt(new Uint8Array(i));await this.remoteDriver.put("",n,Buffer.from(s))}async createReadStream(e,t){this.ensureReady();let i=this.joinRemote(e)+this.suffix,n=await this.remoteDriver.get("",i);if(!n.raw_url)throw new Error("[Crypt] \u5E95\u5C42\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u65E0\u6CD5\u89E3\u5BC6\u4E0B\u8F7D");let s=await fetch(n.raw_url);if(!s.ok)throw new Error(`[Crypt] \u5E95\u5C42\u4E0B\u8F7D\u5931\u8D25: HTTP ${s.status}`);let o=new Uint8Array(await s.arrayBuffer()),a=await this.cipher.decrypt(o),c=t?.start??0,l=t?.end??a.length-1,d=a.slice(c,l+1);return new ReadableStream({start(u){u.enqueue(d),u.close()}})}async isFile(e){if(!this.suffix)return!1;try{let t=await this.remoteDriver.get("",e+this.suffix);return!!t&&!t.is_dir}catch{return!1}}}});var Dm,K4=j(()=>{"use strict";Be();Dm=class{addition;constructor(e){this.addition=e||{}}randSize(){let e=this.addition.min_file_size||0,t=this.addition.max_file_size||0;return t<=e?e:e+Math.floor(Math.random()*(t-e))}now(){return new Date().toISOString()}async list(){let e=[];for(let t=0;t<(this.addition.num_file||0);t++){let i=`file_${t}.bin`;e.push({name:i,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(i,!1)})}for(let t=0;t<(this.addition.num_folder||0);t++){let i=`folder_${t}`;e.push({name:i,size:0,is_dir:!0,modified:this.now(),sign:"",type:1})}return e}async get(e,t){let i=String(t||"").split("/").filter(Boolean),n=i[i.length-1]||"file.bin";return{name:n,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){}async rename(){}async remove(){}async move(){}async copy(){}async put(){}async createReadStream(e,t){let i=t?.start??0,n=t?.end??i+this.randSize()-1,s=Math.max(0,n-i+1),o=64*1024,a=s;return new ReadableStream({pull(c){if(a<=0){c.close();return}let l=Math.min(o,a),d=new Uint8Array(l);crypto.getRandomValues(d),c.enqueue(d),a-=l}})}}});var Qm,G4=j(()=>{"use strict";Be();He();Qm=class{addition;token;onTokenUpdate;constructor(e,t){this.addition=e||{},this.token=this.addition.token||"",this.onTokenUpdate=t}get baseUrl(){return(this.addition.url||"").replace(/\/+$/,"")}async init(){if(!this.baseUrl)throw new Error("[AListV3] url is required");try{let e=await this.request("/me","GET");this.addition.username&&e.username!==this.addition.username&&await this.login()}catch{this.addition.username&&await this.login()}}async login(){if(!this.addition.username)return;let e=await this.request("/auth/login","POST",{username:this.addition.username,password:this.addition.password},!1);if(this.token=e.token,this.onTokenUpdate)try{await this.onTokenUpdate(this.token)}catch{}}async request(e,t,i,n=!0){let s=await fetch(`${this.baseUrl}/api${e}`,{method:t,headers:{"Content-Type":"application/json",...this.token?{Authorization:this.token}:{}},...i!==void 0?{body:JSON.stringify(i)}:{}}),o=await s.json().catch(()=>({code:s.status,message:"invalid response",data:null}));if(o.code!==200){if((o.code===401||o.code===403)&&n)return await this.login(),this.request(e,t,i,!1);throw new Error(`[AListV3] request failed: code=${o.code}, message=${o.message}`)}return o.data}toFileItem(e){return{name:e.name,size:e.size||0,is_dir:!!e.is_dir,modified:e.modified||new Date().toISOString(),sign:e.sign||"",thumb:e.thumb||"",type:e.type??X(e.name,!!e.is_dir),raw_url:""}}async list(e,t){let n=((await this.request("/fs/list","POST",{path:t,password:this.addition.meta_password||"",page:1,per_page:0,refresh:!1})).content||[]).map(s=>this.toFileItem(s));return de(n,"name","asc")}async get(e,t){let i=await this.request("/fs/get","POST",{path:t,password:this.addition.meta_password||""});return{...this.toFileItem(i),raw_url:i.raw_url||""}}async mkdir(e,t){await this.request("/fs/mkdir","POST",{path:t})}async rename(e,t,i){await this.request("/fs/rename","POST",{path:t,name:i})}async remove(e,t,i){let n=t.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/remove","POST",{dir:n,names:i})}async move(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/move","POST",{src_dir:o,dst_dir:a,names:i})}async copy(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/copy","POST",{src_dir:o,dst_dir:a,names:i})}async put(e,t,i){let n=await fetch(`${this.baseUrl}/api/fs/put`,{method:"PUT",headers:{Authorization:this.token,"File-Path":encodeURIComponent(t),"Content-Type":"application/octet-stream"},body:i}),s=await n.json().catch(()=>({code:n.status,message:"invalid response",data:null}));if(s.code!==200)throw new Error(`[AListV3] put failed: code=${s.code}, message=${s.message}`)}}});function z4(r){let e=r.indexOf("http://"),t=r.indexOf("https://"),i=e>=0?e:t;if(i<0)throw new Error(`invalid line: ${r}, because url is required for file`);let n=r.slice(i),s=r.slice(0,i),o={url:n,name:"",level:0,modified:0,size:0,children:[]};if(i>0){if(!s.endsWith(":"))throw new Error(`invalid line: ${r}, file info must end with ':'`);let a=s.slice(0,-1);if(!a)throw new Error(`invalid line: ${r}, file name can't be empty`);let c=a.split(":");if(o.name=c[0],c.length>1){let l=parseInt(c[1],10);if(Number.isNaN(l))throw new Error(`invalid line: ${r}, file size must be an integer`);if(o.size=l,c.length>2){let d=parseInt(c[2],10);if(Number.isNaN(d))throw new Error(`invalid line: ${r}, modified must be a unix timestamp`);o.modified=d}}}else{let c=new URL(n).pathname.split("/").filter(Boolean);o.name=c[c.length-1]||n}return o}function VJ(r){let e={url:"",name:"root",level:-1,modified:0,size:0,children:[]},t=[e],i=String(r||"").split(` -`);for(let n of i){let s=0;for(;s<n.length&&n[s]===" ";)s++;if(s%2!==0)throw new Error(`the line '${n}' indent is not a multiple of 2`);let o=s/2,a=n.slice(s).trim();if(a){for(;o<=t[t.length-1].level;)t.pop();if(a.endsWith(":")){let c={url:"",name:a.slice(0,-1),level:o,modified:0,size:0,children:[]};t[t.length-1].children.push(c),t.push(c)}else{let c=z4(a);c.level=o,t[t.length-1].children.push(c)}}}return e}function ql(r){if(r.url)return r.size;let e=0;for(let t of r.children)e+=ql(t);return r.size=e,e}function YJ(r){let e=t=>{if(t.level===-1)return t.children.map(e).join(` -`);let i=" ".repeat(t.level);if(!t.url){let a=t.children.map(e).join(` -`);return`${i}${t.name}:${a?` -`+a:""}`}let s=new URL(t.url).pathname.split("/").filter(Boolean).pop()||"";if(t.size===0&&t.modified===0)return`${i}${s===t.name?t.url:`${t.name}:${t.url}`}`;let o=t.name;return(t.size!==0||t.modified!==0)&&(o+=`:${t.size}`),t.modified!==0&&(o+=`:${t.modified}`),`${i}${o}:${t.url}`};return e(r)}function $o(r){return r==="/"||!r?["root"]:["root",...r.replace(/\/+$/,"").split("/").filter(Boolean)]}function Yn(r,e){let t=$o(e),i=r;for(let n=0;n<t.length;n++){if(!i||i.name!==t[n])return null;if(n===t.length-1)return i;let s=null;for(let o of i.children)if(o.name===t[n+1]){s=o;break}i=s}return i}async function WJ(r){try{zr(r,"UrlTree head_size");let e=await fetch(r,{method:"HEAD"});if(!e.ok)return 0;let t=parseInt(e.headers.get("Content-Length")||"0",10);return Number.isFinite(t)?t:0}catch{return 0}}var _m,J4=j(()=>{"use strict";Be();He();lc();_m=class{addition;root;onUpdate;constructor(e,t){this.addition=e||{},this.root=VJ(this.addition.url_structure||""),ql(this.root),this.onUpdate=t}async init(){if(!this.addition.url_structure||!this.addition.url_structure.trim())throw new Error("[UrlTree] url_structure is required")}persist(){if(this.addition.writable&&(this.addition.url_structure=YJ(this.root),this.onUpdate))try{this.onUpdate(this.addition.url_structure)}catch{}}nodeToFileItem(e,t){let i=!e.url;return{name:e.name,size:e.size,is_dir:i,modified:e.modified?new Date(e.modified*1e3).toISOString():new Date().toISOString(),sign:"",thumb:"",type:X(e.name,i),raw_url:i?"":e.url}}async list(e,t){let i=Yn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);if(i.url)throw new Error(`[UrlTree] not a folder: ${t}`);let n=i.children.map(s=>this.nodeToFileItem(s,`${t.replace(/\/+$/,"")}/${s.name}`));return de(n,"name","asc")}async get(e,t){let i=Yn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);return this.nodeToFileItem(i,t)}async mkdir(e,t){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let i=$o(t),n=i[i.length-1],s=Yn(this.root,"/"+i.slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");s.children.push({url:"",name:n,level:s.level+1,modified:0,size:0,children:[]}),this.persist()}async rename(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=Yn(this.root,t);if(!n)throw new Error("[UrlTree] path not found");n.name=i,this.persist()}async remove(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=$o(t),s=n[n.length-1],o=Yn(this.root,"/"+n.slice(1,-1).join("/"));if(!o)throw new Error("[UrlTree] parent not found");o.children=o.children.filter(a=>a.name!==s),ql(this.root),this.persist()}async move(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Yn(this.root,"/"+$o(n).slice(1,-1).join("/")),a=Yn(this.root,"/"+$o(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.findIndex(u=>u.name===c);if(l<0)continue;let[d]=o.children.splice(l,1);d.level=a.level+1,a.children.push(d)}ql(this.root),this.persist()}async copy(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Yn(this.root,"/"+$o(n).slice(1,-1).join("/")),a=Yn(this.root,"/"+$o(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.find(d=>d.name===c);l&&a.children.push(this.deepCopy(l,a.level+1))}ql(this.root),this.persist()}async put(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=i.toString("utf8").trim(),s=Yn(this.root,"/"+$o(t).slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");let o=t.split("/").filter(Boolean).pop()||"file",a=z4(`${o}:${n}`);a.level=s.level+1,s.children.push(a),this.addition.head_size&&(a.size=await WJ(a.url)),ql(this.root),this.persist()}deepCopy(e,t){return{url:e.url,name:e.name,level:t,modified:e.modified,size:e.size,children:e.children.map(i=>this.deepCopy(i,t+1))}}}});function tf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function j4(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function $4(r){return r.split("/").filter(Boolean).pop()||""}function XJ(r){if(r.includes(":")){let t=r.indexOf(":"),i=r.slice(0,t),n=r.slice(t+1);if(!i.includes("/"))return[i,n]}let e=r.split("/").filter(Boolean);return[e[e.length-1]||r,r]}function V4(r){let e=String(r||"/").replace(/^\//,""),t=e.indexOf("/");return t<0?[e,""]:[e.slice(0,t),e.slice(t+1)]}var Fm,Y4=j(()=>{"use strict";Be();He();Fm=class{addition;pathMap=new Map;remotes=new Map;supportSuffix=new Set;downloadSuffix=new Set;autoFlatten=!1;oneKey="";constructor(e){this.addition=e||{}}async init(){let e=this.addition.paths||"";if(!e.trim())throw new Error("[Strm] paths is required");for(let o of e.split(` -`)){let a=o.trim();if(!a)continue;let[c,l]=XJ(a);this.pathMap.has(c)||this.pathMap.set(c,[]),this.pathMap.get(c).push(l)}this.pathMap.size===1&&(this.autoFlatten=!0,this.oneKey=this.pathMap.keys().next().value??"");let t=(this.addition.filterFileTypes||"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.supportSuffix=new Set(t);let i=(this.addition.downloadFileTypes||"ass,srt,vtt,sub,strm").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.downloadSuffix=new Set(i);let{resolvePath:n}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:s}=await Promise.resolve().then(()=>(Yt(),qi));for(let o of this.pathMap.values())for(let a of o)try{let c=await n(a);if(!c.isVirtual&&c.storage){let l=await s(c.storage.driver,c.storage);this.remotes.set(a,{driver:l,physical:c.physical||"/"})}}catch(c){console.warn(`[Strm] failed to resolve remote path '${a}':`,c)}}encodePath(e){return e.split("/").map(t=>encodeURIComponent(t)).join("/")}getLink(e){let t=e;this.addition.encodePath&&(t=this.encodePath(e));let i=this.addition.PathPrefix||"/d";return t=tf(i,t),t.startsWith("/")||(t="/"+t),this.addition.withoutUrl?t:`${(this.addition.siteUrl||"").replace(/\/+$/,"")}${t}`}ext(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}async listRemote(e,t){let i=this.remotes.get(e);if(!i)return[];let n=tf(i.physical,t);try{return await i.driver.list("",n)}catch{return[]}}convert(e,t){let i=[];for(let n of t){if(n.is_dir){i.push(n);continue}let s=this.ext(n.name),o=tf(e,n.name);if(this.downloadSuffix.has(s))i.push({...n,size:n.size});else if(this.supportSuffix.has(s)){let a=n.name.replace(/\.[^.]+$/,"")+".strm";i.push({name:a,size:new TextEncoder().encode(this.getLink(o)).length,is_dir:!1,modified:n.modified,sign:o,thumb:n.thumb||"",type:X(a,!1),raw_url:""})}}return i}async list(e,t){let i=t||"/";if(i==="/"&&!this.autoFlatten){let l=[];for(let d of this.pathMap.keys())l.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""});return l}let{root:n,sub:s}=this.autoFlatten?{root:this.oneKey,sub:i.replace(/^\//,"")}:(()=>{let[l,d]=V4(i);return{root:l,sub:d}})(),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);let a=[],c=new Set;for(let l of o){if(!this.remotes.get(l))continue;let u=tf(l,s),f=await this.listRemote(l,s);for(let h of this.convert(u,f))c.has(h.name)||(c.add(h.name),a.push(h))}return de(a,"name","asc")}async get(e,t){let i=t||"/";if(i.endsWith(".strm")){let a=j4(i),c=$4(i),d=(await this.list("",a)).find(u=>u.name===c);if(!d)throw new Error(`[Strm] not found: ${i}`);return d}let[n,s]=V4(i),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);for(let a of o){let c=this.remotes.get(a);if(!c)continue;let l=tf(c.physical,s);try{let d=await c.driver.get("",l);if(d)return d}catch{}}throw new Error(`[Strm] not found: ${i}`)}async mkdir(){throw new Error("[Strm] mkdir is not supported")}async rename(){throw new Error("[Strm] rename is not supported")}async remove(){throw new Error("[Strm] remove is not supported")}async move(){throw new Error("[Strm] move is not supported")}async copy(){throw new Error("[Strm] copy is not supported")}async put(){throw new Error("[Strm] put is not supported")}async createReadStream(e){let t=e||"/",i=j4(t),n=$4(t),o=(await this.list("",i)).find(l=>l.name===n);if(!o||!o.sign)throw new Error(`[Strm] not found: ${t}`);let a=this.getLink(o.sign),c=new TextEncoder().encode(a);return new ReadableStream({start(l){l.enqueue(c),l.close()}})}}});function Vo(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function cE(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function Ol(r){return r.split("/").filter(Boolean).pop()||""}var Pm,W4=j(()=>{"use strict";Be();Pm=class{addition;remoteDriver=null;remoteRoot="/";chunkPrefix;customExt;partSize;constructor(e){this.addition=e||{},this.chunkPrefix=this.addition.chunk_prefix||"[openlist_chunk]",this.customExt=this.addition.custom_ext||"",this.partSize=Number(this.addition.part_size)||0}async init(){if(this.partSize<=0)throw new Error("[Chunk] part_size must be positive");if(!this.chunkPrefix)throw new Error("[Chunk] chunk_prefix must not be empty");let{resolvePath:e}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:t}=await Promise.resolve().then(()=>(Yt(),qi)),i=await e(this.addition.remote_path||"/");if(i.isVirtual||!i.storage)throw new Error(`[Chunk] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=i.physical||"/",this.remoteDriver=await t(i.storage.driver,i.storage)}ensureReady(){if(!this.remoteDriver)throw new Error("[Chunk] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}getPartName(e){return`${e}${this.customExt}`}chunkDirRemote(e){let t=cE(this.joinRemote(e)),i=Ol(e);return Vo(t,this.chunkPrefix+i)}async listParts(e){this.ensureReady();let t=this.chunkDirRemote(e),i=await this.remoteDriver.list("",t),n=[];for(let s of i){if(s.is_dir)continue;let o=parseInt(s.name.replace(new RegExp(`${this.customExt}$`),""),10);Number.isNaN(o)||(n[o]={name:s.name,size:s.size,modified:s.modified,raw_url:s.raw_url||"",raw_url_headers:s.raw_url_headers})}return n.filter(s=>!!s)}async totalChunkSize(e){return(await this.listParts(e)).reduce((i,n)=>i+n.size,0)}async list(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.list("",i),s=[],o=[];for(let a of n){if(a.is_dir&&a.name.startsWith(this.chunkPrefix)){let c=a.name.slice(this.chunkPrefix.length),l=s.length;s.push(null),o.push((async()=>{let d=Vo(t,a.name),u=await this.totalChunkSize(d);s[l]={name:c,size:u,is_dir:!1,modified:a.modified,sign:this.chunkPrefix+c,type:X(c,!1),raw_url:""}})());continue}!this.addition.show_hidden&&a.name.startsWith(".")||s.push(a)}return await Promise.all(o),s.filter(a=>!!a)}async get(e,t){this.ensureReady();let i=this.joinRemote(t);try{let a=await this.remoteDriver.get("",i);if(a&&!a.is_dir||a)return a}catch{}let n=Ol(t),s=await this.totalChunkSize(t),o=await this.listParts(t);return{name:n,size:s,is_dir:!1,modified:o[0]?.modified||new Date().toISOString(),sign:this.chunkPrefix+n,type:X(n,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.rename("",n,i)}catch{let s=cE(n),o=Vo(s,this.chunkPrefix+Ol(t));await this.remoteDriver.rename("",o,this.chunkPrefix+i)}}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.remove("",n,i)}catch{await this.remoteDriver.remove("",this.chunkDirRemote(t),i)}}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.move(e,t,i,o,a)}catch{await this.remoteDriver.move(e,t,i,this.chunkDirRemote(n),Vo(a,this.chunkPrefix+Ol(n)))}}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.copy(e,t,i,o,a)}catch{await this.remoteDriver.copy(e,t,i,this.chunkDirRemote(n),Vo(a,this.chunkPrefix+Ol(n)))}}async put(e,t,i){this.ensureReady();let n=i.length,s=this.joinRemote(t);if(this.addition.chunk_large_file_only&&n<=this.partSize){await this.remoteDriver.put("",s,i);return}if(n<=this.partSize){await this.remoteDriver.put("",s,i);return}let o=this.chunkDirRemote(t);try{await this.remoteDriver.mkdir("",o)}catch{}let a=0,c=0;for(;a<n;){let l=Math.min(a+this.partSize,n),d=i.subarray(a,l),u=Vo(o,this.getPartName(c));await this.remoteDriver.put("",u,Buffer.from(d)),a=l,c++}}async createReadStream(e,t){this.ensureReady();let i=await this.listParts(e),n=i.reduce((d,u)=>d+u.size,0),s=this.remoteDriver,o=this.chunkPrefix,a=t?.start??0,c=t?t.end-t.start+1:n;return new ReadableStream({start:async d=>{for(let u of i){let f=u.size;if(a>=f){a-=f;continue}let h=u.raw_url;if(!h){let y=cE(e),w=Vo(Vo(y,o+Ol(e)),u.name);try{h=(await s.get("",w)).raw_url||""}catch{h=""}}if(!h){d.error(new Error(`[Chunk] failed to resolve download url for ${u.name}`));return}let g=await fetch(h,{headers:u.raw_url_headers||{}});if(!g.ok){d.error(new Error(`[Chunk] download part ${u.name} failed: HTTP ${g.status}`));return}let I=new Uint8Array(await g.arrayBuffer());if(a>0&&(I=I.subarray(a),a=0),c>=0&&I.length>c&&(I=I.subarray(0,c)),I.length>0&&d.enqueue(I),c>=0&&(c-=I.length,c<=0))break}d.close()}})}}});function ZJ(r){let e=r.replace(/^https?:\/\//,""),t=e.indexOf(".");return(t>=0?e.slice(0,t):e).toLowerCase()}function X4(r){return r.endsWith("/")?r:r+"/"}function rf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}function ej(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function tj(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function Z4(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,new TextEncoder().encode(r));return tj(new Uint8Array(i))}function rj(r){let e={blobs:[],prefixes:[]},t=/<Blob>([\s\S]*?)<\/Blob>/g,i=/<BlobPrefix>[\s\S]*?<Name>([^<]+)<\/Name>[\s\S]*?<\/BlobPrefix>/g,n;for(;n=t.exec(r);){let s=n[1],o=(s.match(/<Name>([^<]+)<\/Name>/)||[])[1]||"";if(o.endsWith("/"))continue;let a=parseInt((s.match(/<Content-Length>(\d+)<\/Content-Length>/)||[])[1]||"0",10),c=(s.match(/<Last-Modified>([^<]+)<\/Last-Modified>/)||[])[1]||"";e.blobs.push({name:o,size:a,modified:c?new Date(c).toISOString():new Date().toISOString()})}for(;n=i.exec(r);)e.prefixes.push(n[1]);return e}var Tm,eF=j(()=>{"use strict";Be();He();Tm=class{addition;accountName;keyBytes;endpoint;container;constructor(e){this.addition=e||{},this.accountName=ZJ(this.addition.endpoint||""),this.keyBytes=ej(this.addition.access_key||""),this.endpoint=(this.addition.endpoint||"").replace(/\/+$/,""),this.container=(this.addition.container_name||"").replace(/^\/+|\/+$/g,"")}async init(){if(!/^[a-z0-9]+$/.test(this.accountName))throw new Error("[AzureBlob] invalid storage account name");if(!this.container)throw new Error("[AzureBlob] container_name is required");if(!this.addition.access_key)throw new Error("[AzureBlob] access_key is required")}async sharedKeySignature(e,t,i,n,s,o){let a=n["x-ms-date"]||"",c=Object.keys(n).filter(u=>u.startsWith("x-ms-")).sort().map(u=>`${u.toLowerCase()}:${n[u].trim()} +`,C=new TextEncoder,x=C.encode(m),_=s?C.encode(w):new Uint8Array(0),R=C.encode(B),U=s?new Uint8Array(s):new Uint8Array(0),T=x.length+_.length+U.length+R.length,D=new Uint8Array(T),b=0;D.set(x,b),b+=x.length,_.length>0&&(D.set(_,b),b+=_.length,D.set(U,b),b+=U.length),D.set(R,b),l=D}else c=`https://www.weiyun.com/webapp/json/${e}/${t}?g_tk=${encodeURIComponent(o)}&cmd=${i}`,l=JSON.stringify({req_header:JSON.stringify(this.newHeader(i,a)),req_body:JSON.stringify(this.newBody(t,n,a))}),d["Content-Type"]="application/json; charset=UTF-8";let u=await fetch(c,{method:"POST",headers:d,body:l});if(this.updateCookiesFromHeaders(u.headers),u.status===403)try{await this.refreshCtoken(),(this.loginType()==="weixin"||this.loginType()==="weixin_openid")&&(await this.weixinRefreshToken().catch(()=>{}),await this.refreshCtoken()),d.Cookie=this.getCookieStr(),d.g_tk=this.cookies.get("wyctoken")||"",u=await fetch(c,{method:"POST",headers:d,body:l}),this.updateCookiesFromHeaders(u.headers)}catch(p){throw new Error(`[WeiYun] Request failed (403): ${p.message}`)}if(!u.ok){let p=await u.text().catch(()=>"");throw new Error(`[WeiYun] HTTP ${u.status}: ${p}`)}let f=await u.json().catch(()=>({})),A=f.data||f.result;if(f.ret!==void 0&&f.ret!==0)throw new Error(`[WeiYun] Error (${f.ret}): ${f.msg||"Unknown"}`);if(A?.rsp_header&&A.rsp_header.retcode!==0){let p=A.rsp_header;throw new Error(`[WeiYun] Cmd ${p.cmd} (${p.cmdName||t}) Error (${p.retcode}): ${p.retmsg||"Unknown error"}`)}if(e==="preUpload")return A?.rsp_body?.RspMsg_body?.weiyunPreUploadMsgRsp_body||f;if(e==="upload")return A?.rsp_body?.RspMsg_body?.[`weiyun.${t}MsgRsp_body`]||f;let g=A?.rsp_body?.RspMsg_body;if(typeof g=="string")try{return JSON.parse(g)}catch{return g}return g||A||f}async diskUserInfoGet(){return this.request("weiyunQdiskClient","DiskUserInfoGet",2201,{is_get_upload_flow_flag:!1,is_get_high_speed_flow_info:!1,is_get_weiyun_flag:!1,is_get_space_clean_info:!1,is_get_user_reward_info:!1})}async libDirPathGet(e){return(await this.request("weiyunFileLibClient","LibDirPathGet",26150,{dir_key:e})).items||[]}async diskDirFileList(e,t={}){return this.request("weiyunQdisk","DiskDirList",2208,{dir_key:e,start:t.start||0,count:t.count||500,sort_field:t.sortField??2,reverse_order:t.reverseOrder??!1,get_type:t.getType??0,get_abstract_url:!1,get_dir_detail_info:!1})}async diskFileDownload(e){let i=(await this.request("weiyunQdiskClient","DiskFileBatchDownload",2402,{file_list:[e],download_type:0})).file_list||[];if(!i||i.length===0)throw new Error("[WeiYun] No download link returned");return i[0]}async diskDirCreate(e){return this.request("weiyunQdiskClient","DiskDirCreate",2614,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_name:e.dir_name,file_exist_option:2,create_type:1})}async diskFileRename(e,t){await this.request("weiyunQdiskClient","DiskFileRename",2605,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,file_id:e.file_id,src_filename:e.filename,filename:t})}async diskDirAttrModify(e,t){await this.request("weiyunQdiskClient","DiskDirAttrModify",2615,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_key:e.dir_key,src_dir_name:e.dir_name,dst_dir_name:t})}async diskFileDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{file_list:[e]})}async diskDirDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{dir_list:[e]})}async diskFileMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,file_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async diskDirMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,dir_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async preUpload(e,t,i,n,s,a=4,o=1){let l=0,d=n,u=0;n>0&&(d=n%1048576,d===0&&(d=1048576),u=d%128,u===0&&(u=128),l=n-d);let f=[],A=new Sy;for(let x=0;x<l;x+=1048576){let _=s.subarray(x,x+1048576);A.update(_),f.push({sha:A.getStateHex(),offset:x,size:1048576})}let g=s.subarray(l,l+d-u);A.update(g);let p=A.getStateHex(),I=s.subarray(l+d-u,n);A.update(I);let m=VP(I),w=A.digestHex();f.push({sha:w,offset:l,size:d});let B={common_upload_req:{ppdir_key:e,pdir_key:t,file_size:n,filename:i,file_exist_option:o,use_mutil_channel:!0},upload_scr:0,channel_count:a,block_size:1048576,check_sha:p,check_data:m,block_info_list:f},C=await this.request("preUpload","PreUpload",247120,B);return C.common_upload_rsp&&(C.common_upload_rsp.file_sha=w,C.common_upload_rsp.file_size=n),C}async addUploadChannel(e,t,i){return this.request("upload","AddChannel",247122,{upload_key:i.upload_key,ex:i.ex,orig_channel_count:e,dest_channel_count:t,speed:4303})}async uploadPiece(e,t,i){let n=await this.request("upload","UploadPiece",247121,{upload_key:t.upload_key,ex:t.ex,channel:e},i);return n.channel&&n.channel.len===0&&n.upload_state===1&&(n.channel.len=e.len),n}}});function gY(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function pY(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadKey||!e.ex||!Number.isInteger(e.partCount)||e.partCount<1)throw new Error("invalid upload session");return e}catch{throw new Error("[WeiYun] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function r5(r){if(!r)return new Date().toISOString();try{let e=typeof r=="string"?parseInt(r,10):r;if(!isNaN(e)&&e>0){let i=e<1e10?e*1e3:e;return new Date(i).toISOString()}let t=new Date(r);if(!isNaN(t.getTime()))return t.toISOString()}catch{}return new Date().toISOString()}function e5(r){return{name:r.dir_name,size:0,is_dir:!0,modified:r5(r.dir_mtime||r.dir_ctime),sign:r.dir_key,type:1,thumb:"",raw_url:""}}function t5(r){return{name:r.filename,size:r.file_size||0,is_dir:!1,modified:r5(r.file_mtime||r.file_ctime),sign:r.file_id,type:X(r.filename,!1),thumb:r.ext_info?.thumb_url||"",raw_url:""}}function r1(r){let e={...r||{}};return e.root_folder_id=(e.root_folder_id||"").trim(),e.cookies=(e.cookies||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"4",e}var AY,ZP,Qy,i5=J(()=>{"use strict";ve();$e();XP();AY=45,ZP=1024*1024;Qy=class{client;addition;rootFolderId="";rootPdirKey="";uploadThreads=4;pathFolderCache=new Map;budget={used:0,limit:AY};constructor(e,t){this.addition=r1(e),this.client=new _y(this.addition,t)}async init(){let e=parseInt(this.addition.upload_thread||"4",10);if(this.uploadThreads=Math.min(32,Math.max(4,isNaN(e)?4:e)),this.addition.upload_thread=String(this.uploadThreads),await this.client.refreshCtoken(),this.addition.root_folder_id)this.rootFolderId=this.addition.root_folder_id;else{let n=await this.client.diskUserInfoGet();this.rootFolderId=n.main_dir_key||n.root_dir_key||"",this.addition.root_folder_id=this.rootFolderId}if(!this.rootFolderId)throw new Error("[WeiYun] Failed to obtain root folder ID");let t=await this.client.libDirPathGet(this.rootFolderId);if(!t||t.length===0)throw new Error(`[WeiYun] Invalid root directory ID: ${this.rootFolderId}`);let i=t[t.length-1];this.rootPdirKey=i.pdir_key||"",this.pathFolderCache.set("/",{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:i.dir_name||"root"})}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolder(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/");if(t==="/"||t===`/${this.rootFolderId}`)return{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"};if(this.pathFolderCache.has(t))return this.pathFolderCache.get(t);let i=t.split("/").filter(Boolean),n={dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"},s="";for(let a=0;a<i.length;a++){let o=i[a],c=(()=>{try{return decodeURIComponent(o)}catch{return o}})();if(s="/"+i.slice(0,a+1).join("/"),this.pathFolderCache.has(s)){n=this.pathFolderCache.get(s);continue}this.budget.used++,this.budget.used>=this.budget.limit&&console.warn(`[WeiYun] Cloudflare Worker subrequest budget limit (${this.budget.limit}) reached.`);let u=((await this.client.diskDirFileList(n.dirKey,{count:500,getType:1})).dir_list||[]).find(f=>f.dir_name===o||f.dir_name===c||f.dir_key===o);if(!u)throw new Error(`[WeiYun] Directory '${o}' not found in folder '${n.dirKey}'`);n={dirKey:u.dir_key,pdirKey:n.dirKey,dirName:u.dir_name},this.pathFolderCache.set(s,n)}return n}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[WeiYun] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),a=await this.resolveFolder(s);this.budget.used++;let o=await this.client.diskDirFileList(a.dirKey,{count:500,getType:0}),c=(o.file_list||[]).find(d=>d.filename===i||d.filename===n||d.file_id===i);if(c)return{file:c,parent:a,isDir:!1};let l=(o.dir_list||[]).find(d=>d.dir_name===i||d.dir_name===n||d.dir_key===i);if(l)return{folder:l,parent:a,isDir:!0};throw new Error(`[WeiYun] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolder(t),n=[],s=[],a=0;for(;;){if(this.budget.used++,this.budget.used>=this.budget.limit){console.warn(`[WeiYun] Subrequest budget limit (${this.budget.limit}) reached while listing ${t}`);break}let c=this.addition.order_by==="size"?3:this.addition.order_by==="updated_at"?2:1,l=this.addition.order_direction==="desc",d=await this.client.diskDirFileList(i.dirKey,{start:a,count:500,sortField:c,reverseOrder:l,getType:0}),u=d.dir_list||[],f=d.file_list||[];for(let A of u)A.pdir_key=i.dirKey,n.push(A);for(let A of f)A.pdir_key=i.dirKey,s.push(A);if(a=n.length+s.length,d.finish_flag||u.length===0&&f.length===0)break}let o=[...n.map(e5),...s.map(t5)];return ue(o,this.addition.order_by==="size"?"size":this.addition.order_by==="updated_at"?"updated_at":"name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.rootFolderId}`)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootFolderId,type:1,raw_url:""};let{file:n,folder:s,parent:a,isDir:o}=await this.resolveFile(t);if(o&&s)return e5(s);if(n){let c=t5(n);try{let l=await this.client.diskFileDownload({ppdir_key:a.pdirKey,pdir_key:a.dirKey,file_id:n.file_id,filename:n.filename});c.raw_url=l.download_url,c.raw_url_headers={Cookie:`${l.cookie_name}=${l.cookie_value}`}}catch(l){console.warn(`[WeiYun] \u83B7\u53D6 ${n.filename} \u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25:`,l.message),c.raw_url_error=l.message}return c}throw new Error(`[WeiYun] \u6761\u76EE\u672A\u627E\u5230: ${t}`)}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u5EFA\u6587\u4EF6\u5939",s="/"+i.join("/"),a=await this.resolveFolder(s);await this.client.diskDirCreate({ppdir_key:a.pdirKey,pdir_key:a.dirKey,dir_name:n})}async rename(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:a,isDir:o}=await this.resolveFile(t);o&&s?await this.client.diskDirAttrModify({ppdir_key:a.pdirKey,pdir_key:a.dirKey,dir_key:s.dir_key,dir_name:s.dir_name},i):n&&await this.client.diskFileRename({ppdir_key:a.pdirKey,pdir_key:a.dirKey,file_id:n.file_id,filename:n.filename},i)}async remove(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:a,isDir:o}=await this.resolveFile(t);o&&s?await this.client.diskDirDelete({ppdir_key:a.pdirKey,pdir_key:a.dirKey,dir_key:s.dir_key,dir_name:s.dir_name}):n&&await this.client.diskFileDelete({ppdir_key:a.pdirKey,pdir_key:a.dirKey,file_id:n.file_id,filename:n.filename})}async move(e,t,i,n,s){this.budget.used=0;let{file:a,folder:o,parent:c,isDir:l}=await this.resolveFile(n),d=await this.resolveFolder(t);l&&o?await this.client.diskDirMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,dir_key:o.dir_key,dir_name:o.dir_name},{pdir_key:d.pdirKey,dir_key:d.dirKey}):a&&await this.client.diskFileMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,file_id:a.file_id,filename:a.filename},{pdir_key:d.pdirKey,dir_key:d.dirKey})}async copy(e,t,i,n,s){throw new Error("[WeiYun] \u5FAE\u4E91\u63A5\u53E3\u4E0D\u652F\u6301\u590D\u5236\u64CD\u4F5C (Copy not supported)")}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[WeiYun] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let a="/"+n.join("/"),o=await this.resolveFolder(a),c=await this.client.preUpload(o.pdirKey,o.dirKey,s,i.length,i,4,1);if(c.file_exist)return;let l={upload_key:c.upload_key||"",ex:c.ex||""},d=c.channel_list||[];d.length===0&&(d=[{id:0,offset:0,len:i.length}]);for(let u of d){let f={...u};for(;f.offset<i.length;){let A=Math.min(f.len||ZP,i.length-f.offset),g=i.subarray(f.offset,f.offset+A),p=await this.client.uploadPiece(f,l,g);if(p.upload_state===2)break;p.channel?f=p.channel:f.offset+=A}}}async createUploadSession(e,t,i,n,s){this.budget.used=0;let a=await this.resolveFolder(t||"/"),o=ZP,c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/o)),l=new Uint8Array(0),d=await this.client.preUpload(a.pdirKey,a.dirKey,i,Math.max(0,Number(n)||0),l,4,1);if(d.file_exist)return{reuse:!0,partCount:0,chunkSize:o,session:""};let u={upload_key:d.upload_key||"",ex:d.ex||""},f=d.channel_list||[];if(f.length<this.uploadThreads&&u.upload_key)try{let A=await this.client.addUploadChannel(f.length,this.uploadThreads,u);A.channels&&(f=[...f,...A.channels])}catch{}return{reuse:!1,partCount:c,chunkSize:o,session:gY({uploadKey:u.upload_key,ex:u.ex,parentDirKey:a.pdirKey,pdirKey:a.dirKey,fileName:i,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:o,channels:f})}}async uploadPart(e,t,i){let n=pY(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[WeiYun] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);let s=(t-1)*n.chunkSize,a={id:t-1,offset:s,len:i.length},o={upload_key:n.uploadKey,ex:n.ex};return await this.client.uploadPiece(a,o,i),{partNumber:t}}async completeUploadSession(e,t=[]){}}});async function DY(r,e){let t=`${r}${e}1appkey`,i=await mo(t),n=nr(i);return`div101.${r}${n}`}async function n5(r,e,t,i,n,s,a){let o=await DY(r,s);return[`ANDROID-${t}/${n}`,"protocolVersion/200","accesstype/",`clientid/${e}`,`clientversion/${n}`,"action_type/","networktype/WIFI","sessionid/",`deviceid/${r}`,"providername/NONE",`devicesign/${o}`,"refresh_token/",`sdkversion/${i}`,`datetime/${Date.now()}`,`usrno/${a}`,`appname/android-${t}`,"session_origin/","grant_type/","appid/","clientip/","devicename/Xiaomi_M2004j7ac","osversion/13","platformversion/10","accessmode/","devicemodel/M2004J7AC"].join(" ")}function i1(r,e){try{let t=new URL(e);return`${r.toUpperCase()}:${t.pathname}`}catch{let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/);return`${r.toUpperCase()}:${t?t[1]:""}`}}var mY,yY,IY,wY,xY,CY,EY,BY,bY,vY,kY,SY,Fy,s5=J(()=>{"use strict";ti();mY=["SOP04dGzk0TNO7t7t9ekDbAmx+eq0OI1ovEx","nVBjhYiND4hZ2NCGyV5beamIr7k6ifAsAbl","Ddjpt5B/Cit6EDq2a6cXgxY9lkEIOw4yC1GDF28KrA","VVCogcmSNIVvgV6U+AochorydiSymi68YVNGiz","u5ujk5sM62gpJOsB/1Gu/zsfgfZO","dXYIiBOAHZgzSruaQ2Nhrqc2im","z5jUTBSIpBN9g4qSJGlidNAutX6","KJE2oveZ34du/g1tiimm"],yY=["C9qPpZLN8ucRTaTiUMWYS9cQvWOE","+r6CQVxjzJV6LCV","F","pFJRC","9WXYIDGrwTCz2OiVlgZa90qpECPD6olt","/750aCr4lm/Sly/c","RB+DT/gZCrbV","","CyLsf7hdkIRxRm215hl","7xHvLi2tOYP0Y92b","ZGTXXxu8E/MIWaEDB+Sm/","1UI3","E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO","ihtqpG6FMt65+Xk+tWUH2","NhXXU9rg4XXdzo7u5o"],IY=["KHBJ07an7ROXDoK7Db","G6n399rSWkl7WcQmw5rpQInurc1DkLmLJqE","JZD1A3M4x+jBFN62hkr7VDhkkZxb9g3rWqRZqFAAb","fQnw/AmSlbbI91Ik15gpddGgyU7U","/Dv9JdPYSj3sHiWjouR95NTQff","yGx2zuTjbWENZqecNI+edrQgqmZKP","ljrbSzdHLwbqcRn","lSHAsqCkGDGxQqqwrVu","TsWXI81fD1","vk7hBjawK/rOSrSWajtbMk95nfgf3"],wY="1.53.2",xY="com.pikcloud.pikpak",CY="2.0.6.206003",EY="2.0.0",BY="mypikpak.com",bY="8.0.3",vY="undefined",kY="mypikpak.com",SY="8.0.3";Fy=class{addition;clientId;clientSecret;clientVersion;packageName;sdkVersion;algorithms;deviceId;userId="";userAgent="";accessToken="";refreshTokenVal="";captchaTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.onTokenRefreshed=t,this.refreshTokenVal=e.refresh_token||"",this.captchaTokenVal=e.captcha_token||"";let i=e.platform||"web",n=e.client_id,s=e.client_secret;i==="android"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=wY,this.packageName=xY,this.sdkVersion=CY,this.algorithms=mY):i==="pc"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=vY,this.packageName=kY,this.sdkVersion=SY,this.algorithms=IY,this.userAgent="MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.6.11.4955 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"):(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=EY,this.packageName=BY,this.sdkVersion=bY,this.algorithms=yY,this.userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"),this.deviceId=e.device_id||nr(`${e.username||""}${e.password||""}`)}getCaptchaSign(){let e=String(Date.now()),t=`${this.clientId}${this.clientVersion}${this.packageName}${this.deviceId}${e}`;for(let i of this.algorithms)t=nr(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaTokenVal,client_id:this.clientId,device_id:this.deviceId,meta:t,redirect_uri:"xlaccsdk01://xbase.cloud/callback?state=harbor"},s=await(await fetch(`https://user.mypikpak.net/v1/shield/captcha/init?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify(i)})).json();if(s.error_code&&s.error_code!==0)throw new Error(`Captcha error ${s.error_code}: ${s.error_description||s.error}`);if(s.url)throw new Error(`PikPak requires captcha verification: ${s.url}`);return s.captcha_token&&(this.captchaTokenVal=s.captcha_token),this.captchaTokenVal}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.clientVersion,package_name:this.packageName,user_id:t,timestamp:i,captcha_sign:n};return this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};return/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,this.refreshCaptchaToken(e,i)}async login(){if(!this.addition.username||!this.addition.password)throw new Error("PikPak username or password is required when refresh_token is not provided");let e="https://user.mypikpak.net/v1/auth/signin";this.captchaTokenVal||await this.refreshCaptchaTokenInLogin(i1("POST",e),this.addition.username);let i=await(await fetch(`${e}?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId,"X-Captcha-Token":this.captchaTokenVal},body:JSON.stringify({captcha_token:this.captchaTokenVal,client_id:this.clientId,client_secret:this.clientSecret,username:this.addition.username,password:this.addition.password})})).json();if(i.error_code&&i.error_code!==0)throw new Error(`PikPak login failed (${i.error_code}): ${i.error_description||i.error}`);this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async refreshToken(){if(!this.refreshTokenVal){await this.login();return}let i=await(await fetch(`https://user.mypikpak.net/v1/auth/token?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify({client_id:this.clientId,client_secret:this.clientSecret,grant_type:"refresh_token",refresh_token:this.refreshTokenVal})})).json();if(i.error_code&&i.error_code!==0){if(i.error_code===4126&&this.addition.username){await this.login();return}throw new Error(`PikPak token refresh failed (${i.error_code}): ${i.error_description||i.error}`)}this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async init(){this.addition.platform==="android"&&(this.userAgent=await n5(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId)),this.refreshTokenVal?await this.refreshToken():await this.login();try{await this.refreshCaptchaTokenAtLogin(i1("GET","https://api-drive.mypikpak.net/drive/v1/files"),this.userId)}catch(e){console.warn("[PikPak] post-login captcha init warning:",e)}this.addition.platform==="android"&&(this.userAgent=await n5(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId))}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:a=0}=t,o=e;if(n&&Object.keys(n).length>0){let f=new URLSearchParams(n).toString();o+=(e.includes("?")?"&":"?")+f}let c={"User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId};this.captchaTokenVal&&(c["X-Captcha-Token"]=this.captchaTokenVal),this.accessToken&&(c.Authorization=`Bearer ${this.accessToken}`),s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(o,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),d=await l.text(),u={};try{u=JSON.parse(d)}catch{u=d}if(u&&typeof u=="object"&&u.error_code){let f=u.error_code;if((f===4122||f===4121||f===16)&&a<2)return await this.refreshToken(),this.request(e,{...t,retryCount:a+1});if(f===9&&a<2)return await this.refreshCaptchaTokenAtLogin(i1(i,e),this.userId),this.request(e,{...t,retryCount:a+1});throw new Error(`PikPak API Error (${f}): ${u.error_description||u.error||JSON.stringify(u)}`)}if(!l.ok)throw new Error(`PikPak request failed with status ${l.status}: ${d}`);return u}}});var Py,a5=J(()=>{"use strict";ve();$e();ti();s5();Py=class{addition;client;rootId="";idCache=new Map;constructor(e,t){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new Fy(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let a of i){if(s+="/"+a,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.getFiles(n)).find(l=>l.name===a);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async getFiles(e){let t=[],i="";for(;;){let n={parent_id:e,thumbnail_size:"SIZE_LARGE",with_audit:"true",limit:"100",filters:JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}})};i&&(n.page_token=i);let s=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"GET",params:n});if(s.files&&s.files.length>0&&t.push(...s.files),!s.next_page_token||s.next_page_token===i)break;i=s.next_page_token}return t}async list(e,t){let i=await this.resolveParentId(t),n=await this.getFiles(i),s=this.cleanPath(t),a=n.map(o=>{let c=o.kind==="drive#folder",l=s?`${s}/${o.name}`:`/${o.name}`;this.idCache.set(l,o.id);let d=o.web_content_link||"";return!this.addition.disable_media_link&&o.medias&&o.medias.length>0&&o.medias[0].link?.url&&(d=o.medias[0].link.url),{name:o.name,size:parseInt(o.size||"0",10)||0,is_dir:c,created:o.created_time,modified:o.modified_time||new Date().toISOString(),sign:o.id,type:X(o.name,c),thumb:o.thumbnail_link,raw_url:d}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=await this.resolveParentId(t),a={_magic:"2021",usage:this.addition.disable_media_link?"FETCH":"CACHE",thumbnail_size:"SIZE_LARGE"},o=await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(s)}`,{method:"GET",params:a}),c=o.kind==="drive#folder",l=o.web_content_link||"";return!this.addition.disable_media_link&&o.medias&&o.medias.length>0&&o.medias[0].link?.url&&(l=o.medias[0].link.url),{name:o.name||n,size:parseInt(o.size||"0",10)||0,is_dir:c,created:o.created_time,modified:o.modified_time||new Date().toISOString(),sign:o.id,type:X(o.name||n,c),thumb:o.thumbnail_link,raw_url:l}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",a=await this.resolveParentId(n),o=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#folder",parent_id:a,name:s}});o?.file?.id&&this.idCache.set(i,o.file.id)}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(n)}`,{method:"PATCH",body:{name:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.getFiles(n),a=[];for(let c of i){let l=s.find(d=>d.name===c);l&&a.push(l.id)}if(a.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchTrash",{method:"POST",body:{ids:a}});let o=this.cleanPath(t);for(let c of i)this.idCache.delete(o?`${o}/${c}`:`/${c}`)}async move(e,t,i,n,s){let a=await this.resolveParentId(n),o=await this.resolveParentId(s),c=await this.getFiles(a),l=[];for(let u of i){let f=c.find(A=>A.name===u);f&&l.push(f.id)}if(l.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchMove",{method:"POST",body:{ids:l,to:{parent_id:o}}});let d=this.cleanPath(n);for(let u of i)this.idCache.delete(d?`${d}/${u}`:`/${u}`)}async copy(e,t,i,n,s){let a=await this.resolveParentId(n),o=await this.resolveParentId(s),c=await this.getFiles(a),l=[];for(let d of i){let u=c.find(f=>f.name===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchCopy",{method:"POST",body:{ids:l,to:{parent_id:o}}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),a=n.split("/").pop()||"upload",o=await this.resolveParentId(s),c=(await mo(new Uint8Array(i))).toUpperCase(),l=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#file",name:a,size:String(i.length),hash:c,upload_type:"UPLOAD_TYPE_RESUMABLE",objProvider:{provider:"UPLOAD_TYPE_UNKNOWN"},parent_id:o,folder_type:"NORMAL"}});if(!l.resumable)return;let d=l.resumable.params,u=d.endpoint;this.addition.platform==="android"&&(u="mypikpak.net");let f=`https://${d.bucket}.${u}/${d.key}`,A=await fetch(f,{method:"PUT",headers:{"Content-Length":String(i.length),"x-oss-security-token":d.security_token},body:new Uint8Array(i)});if(!A.ok)throw new Error(`PikPak OSS upload failed: ${A.statusText}`)}async getDetails(){let e=await this.client.request("https://api-drive.mypikpak.net/drive/v1/about",{method:"GET"});return{totalSpace:parseInt(e.quota.limit||"0",10)||0,usedSpace:parseInt(e.quota.usage||"0",10)||0}}}});var Ty,o5=J(()=>{"use strict";Ty=class{addition;address;authorization="";onTokenRefreshed;decryptedRepos=new Map;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.onTokenRefreshed=t,e.token&&(this.authorization=`Token ${e.token}`)}async getToken(){if(this.addition.token){this.authorization=`Token ${this.addition.token}`;return}if(!this.addition.username||!this.addition.password)throw new Error("Seafile requires either token or username/password to authenticate");let e=new URLSearchParams;e.set("username",this.addition.username),e.set("password",this.addition.password);let t=await fetch(`${this.address}/api2/auth-token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Seafile auth failed (${t.status}): ${n}`)}let i=await t.json();this.authorization=`Token ${i.token}`,this.addition.token=i.token,this.onTokenRefreshed&&await this.onTokenRefreshed(i.token)}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:a=!1,retryCount:o=0}=t,c=e.startsWith("http")?e:`${this.address}${e}`;if(n&&Object.keys(n).length>0){let g=new URLSearchParams(n).toString();c+=(c.includes("?")?"&":"?")+g}let l={Accept:"application/json"};this.authorization&&(l.Authorization=this.authorization);let d=s;if(a&&s&&!(s instanceof FormData)){let g=new URLSearchParams;for(let[p,I]of Object.entries(s))g.set(p,String(I));l["Content-Type"]="application/x-www-form-urlencoded",d=g.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(l["Content-Type"]="application/json",d=JSON.stringify(s));let u=await fetch(c,{method:i,headers:l,body:d});if(u.status===401&&o<1)return await this.getToken(),this.request(e,{...t,retryCount:o+1});if(!u.ok){let g=await u.text();throw new Error(`Seafile request failed (${u.status}): ${g}`)}return(u.headers.get("content-type")||"").includes("application/json")?await u.json():await u.text()}async getLibraryInfo(e){return this.request(`/api2/repos/${e}/`)}async decryptLibrary(e){if(!e.encrypted)return;if(!this.addition.repo_pwd)throw new Error("Seafile encrypted library password (repo_pwd) is not configured");let t=this.decryptedRepos.get(e.id)||0;if(Date.now()-t<1800*1e3)return;let i=await this.request(`/api2/repos/${e.id}/`,{method:"POST",isFormData:!0,body:{password:this.addition.repo_pwd}});if(typeof i=="string"&&!i.includes("success"))throw new Error(`Failed to decrypt Seafile library: ${i}`);this.decryptedRepos.set(e.id,Date.now())}}});var Uy,c5=J(()=>{"use strict";ve();$e();o5();Uy=class{addition;client;repoId;rootPath="/";constructor(e,t){this.addition=e,this.repoId=e.repo_id||void 0,this.client=new Ty(e,t)}async init(){await this.client.getToken(),this.rootPath="/"+(this.addition.root_folder_path||"/").split("/").filter(Boolean).join("/")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveRepoAndPath(e){let t=this.cleanPath(e);if(this.repoId)return{repoId:this.repoId,innerPath:t,isRootListRepos:!1};if(t==="/")return{repoId:"",innerPath:"/",isRootListRepos:!0};let i=t.split("/").filter(Boolean),n=i[0],s="/"+i.slice(1).join("/"),o=(await this.client.request("/api2/repos/")).find(c=>c.name===n||c.id===n);if(!o)throw new Error(`Seafile library '${n}' not found`);return o.encrypted&&await this.client.decryptLibrary(o),{repoId:o.id,innerPath:s==="/"?"/":s,isRootListRepos:!1}}async list(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t);if(s){let l=(await this.client.request("/api2/repos/")).map(d=>({name:d.name,size:d.size||0,is_dir:!0,modified:d.mtime?new Date(d.mtime*1e3).toISOString():new Date().toISOString(),sign:d.id,type:1,raw_url:""}));return ue(l,this.addition.order_by,this.addition.order_direction)}let o=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:n}})).map(c=>{let l=c.type==="dir";return{name:c.name,size:c.size||0,is_dir:l,modified:c.mtime?new Date(c.mtime*1e3).toISOString():new Date().toISOString(),sign:c.id,type:X(c.name,l),raw_url:""}});return ue(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t),o=this.cleanPath(t).split("/").filter(Boolean).pop()||"root";if(s)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};if(n==="/"){let u=await this.client.getLibraryInfo(i);return{name:u.name||o,size:u.size||0,is_dir:!0,modified:u.mtime?new Date(u.mtime*1e3).toISOString():new Date().toISOString(),sign:u.id,type:1,raw_url:""}}let c="";try{let u=await this.client.request(`/api2/repos/${encodeURIComponent(i)}/file/`,{params:{p:n,reuse:"1"}});typeof u=="string"&&(c=u.replace(/^"|"$/g,"").trim())}catch{}let l=n.split("/").slice(0,-1).join("/")||"/",d=n.split("/").pop()||"";try{let f=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:l}})).find(A=>A.name===d);if(f){let A=f.type==="dir";return{name:f.name,size:f.size||0,is_dir:A,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString(),sign:f.id,type:X(f.name,A),raw_url:c}}}catch{}return{name:o,size:0,is_dir:!c,modified:new Date().toISOString(),sign:"",type:X(o,!c),raw_url:c}}async mkdir(e,t){let{repoId:i,innerPath:n}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{method:"POST",isFormData:!0,params:{p:n},body:{operation:"mkdir"}})}async rename(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"POST",isFormData:!0,params:{p:s},body:{operation:"rename",newname:i}})}async remove(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);for(let a of i){let o=s==="/"?`/${a}`:`${s}/${a}`;await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"DELETE",params:{p:o}})}}async move(e,t,i,n,s){let a=await this.resolveRepoAndPath(n),o=await this.resolveRepoAndPath(s);for(let c of i){let l=a.innerPath==="/"?`/${c}`:`${a.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(a.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"move",dst_repo:o.repoId,dst_dir:o.innerPath}})}}async copy(e,t,i,n,s){let a=await this.resolveRepoAndPath(n),o=await this.resolveRepoAndPath(s);for(let c of i){let l=a.innerPath==="/"?`/${c}`:`${a.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(a.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"copy",dst_repo:o.repoId,dst_dir:o.innerPath}})}}async put(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t),a=s.split("/").slice(0,-1).join("/")||"/",o=s.split("/").pop()||"upload",l=(await this.client.request(`/api2/repos/${encodeURIComponent(n)}/upload-link/`,{params:{p:a}})||"").replace(/^"|"$/g,"").trim();if(!l)throw new Error("Failed to get Seafile upload link");let d=new FormData;d.append("parent_dir",a),d.append("replace","1"),d.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o),await this.client.request(l,{method:"POST",body:d})}}});var Ry,l5=J(()=>{"use strict";Ry=class{addition;accessToken="";refreshTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api!==!1){let s=`${this.addition.api_url_address||"https://api.oplist.org/yandexui/renewapi"}?refresh_ui=${encodeURIComponent(this.refreshTokenVal)}&server_use=true&driver_txt=yandexui_go`,a=await fetch(s,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok)throw new Error(`Failed to refresh Yandex token online: ${a.statusText}`);let o=await a.json();if(!o.access_token)throw new Error(`Yandex online token refresh failed: ${o.text||"No access token returned"}`);this.accessToken=o.access_token,o.refresh_token&&(this.refreshTokenVal=o.refresh_token,this.addition.refresh_token=o.refresh_token),this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal});return}if(!this.addition.client_id||!this.addition.client_secret)throw new Error("Yandex Disk requires client_id and client_secret when online API is disabled");let e=new URLSearchParams;e.set("grant_type","refresh_token"),e.set("refresh_token",this.refreshTokenVal),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let t=await fetch("https://oauth.yandex.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Yandex OAuth refresh failed (${t.status}): ${n}`)}let i=await t.json();this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.addition.refresh_token=i.refresh_token,this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal})}async init(){await this.refreshToken()}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:a=0}=t,o=e.startsWith("http")?e:`https://cloud-api.yandex.net/v1/disk/resources${e}`;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();o+=(o.includes("?")?"&":"?")+u}let c={Accept:"application/json",Authorization:`OAuth ${this.accessToken}`};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(o,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s});if(l.status===401&&a<1)return await this.refreshToken(),this.request(e,{...t,retryCount:a+1});if(!l.ok){let u=await l.text(),f=u;try{let A=JSON.parse(u);f=A.message||A.description||u}catch{}throw new Error(`Yandex Disk API Error (${l.status}): ${f}`)}return(l.headers.get("content-type")||"").includes("application/json")?await l.json():await l.text()}async getFiles(e,t,i){let s=0,a=[];for(;;){let o={path:e||"/",limit:String(100),offset:String(s)};t&&(o.sort=i==="desc"?`-${t}`:t);let l=(await this.request("",{method:"GET",params:o}))._embedded;if(!l||!l.items||(a.push(...l.items),l.total<=s+100||l.items.length===0))break;s+=100}return a}async getDownloadLink(e){return(await this.request("/download",{method:"GET",params:{path:e}})).href}async getUploadLink(e){return(await this.request("/upload",{method:"GET",params:{path:e,overwrite:"true"}})).href}}});var Ny,d5=J(()=>{"use strict";ve();$e();l5();Ny=class{addition;client;constructor(e,t){this.addition=e,this.client=new Ry(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i,this.addition.order_by,this.addition.order_direction)).map(a=>{let o=a.type==="dir";return{name:a.name,size:a.size||0,is_dir:o,created:a.created,modified:a.modified||new Date().toISOString(),sign:a.path||a.name,type:X(a.name,o),thumb:a.preview,raw_url:""}});return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=await this.client.request("",{method:"GET",params:{path:i}}),a=s.type==="dir",o="";if(!a)try{o=await this.client.getDownloadLink(i)}catch(c){console.warn("[Yandex] get download link failed:",c)}return{name:s.name||n,size:s.size||0,is_dir:a,created:s.created,modified:s.modified||new Date().toISOString(),sign:s.path||i,type:X(s.name||n,a),raw_url:o}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("",{method:"PUT",params:{path:i}})}async rename(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",a=s==="/"?`/${i}`:`${s}/${i}`;await this.client.request("/move",{method:"POST",params:{from:n,path:a,overwrite:"true"}})}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let a=n==="/"?`/${s}`:`${n}/${s}`;await this.client.request("",{method:"DELETE",params:{path:a}})}}async move(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s);for(let c of i){let l=a==="/"?`/${c}`:`${a}/${c}`,d=o==="/"?`/${c}`:`${o}/${c}`;await this.client.request("/move",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async copy(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s);for(let c of i){let l=a==="/"?`/${c}`:`${a}/${c}`,d=o==="/"?`/${c}`:`${o}/${c}`;await this.client.request("/copy",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async put(e,t,i){let n=this.cleanPath(t),s=await this.client.getUploadLink(n),a=await fetch(s,{method:"PUT",headers:{"Content-Length":String(i.length),"Content-Type":"application/octet-stream"},body:new Uint8Array(i)});if(!a.ok)throw new Error(`Yandex upload failed: ${a.statusText}`)}}});function _Y(r,e){let t=new Array(256),i=new Array(256),n=[],s=r.length;for(let l=0;l<256;l++)t[l]=r.charCodeAt(l%s),i[l]=l;let a=0;for(let l=0;l<256;l++){a=(a+i[l]+t[l])%256;let d=i[l];i[l]=i[a],i[a]=d}let o=0;a=0;for(let l=0;l<e.length;l++){o=(o+1)%256,a=(a+i[o])%256;let d=i[o];i[o]=i[a],i[a]=d;let u=i[(i[o]+i[a])%256];n.push(e.charCodeAt(l)^u)}let c="";for(let l of n)c+=String.fromCharCode(l);return btoa(c)}var Oy,u5=J(()=>{"use strict";Oy=class{addition;baseUrl="https://www.terabox.com";urlDomainPrefix="jp";jsToken="";onCookieRefreshed;constructor(e,t){this.addition=e,this.onCookieRefreshed=t}async resetJsToken(){let e=await fetch(this.baseUrl,{method:"GET",headers:{Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw new Error(`Failed to fetch TeraBox home page: ${e.statusText}`);let t=await e.text(),i=t.match(/`function%20fn%28a%29%7Bwindow.jsToken%20%3D%20a%7D%3Bfn%28%22([^"]+?)%22%29`/);if(i&&i[1]){this.jsToken=i[1];return}let n=t.match(/jsToken\s*=\s*["']([^"']+)["']/);if(n&&n[1]){this.jsToken=n[1];return}this.jsToken=""}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:a=!1,retryCount:o=0}=t,c=e.startsWith("http")?e:`${this.baseUrl}${e}`,l={app_id:"250528",web:"1",channel:"dubox",clienttype:"0",...n||{}};this.jsToken&&(l.jsToken=this.jsToken);let d=new URLSearchParams(l).toString();c+=(c.includes("?")?"&":"?")+d;let u={Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"},f=s;if(a&&s&&!(s instanceof FormData)){let I=new URLSearchParams;for(let[m,w]of Object.entries(s))I.set(m,String(w));u["Content-Type"]="application/x-www-form-urlencoded",f=I.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(u["Content-Type"]="application/json",f=JSON.stringify(s));let A=await fetch(c,{method:i,headers:u,body:f}),g=await A.text(),p={};try{p=JSON.parse(g)}catch{p=g}if(p&&typeof p=="object"&&p.errno!==void 0){let I=Number(p.errno);if((I===4000023||I===450016)&&o<2)return await this.resetJsToken(),this.request(e,{...t,retryCount:o+1});if(I===-6&&o<2){let m=A.headers.get("url-domain-prefix");if(m)return this.urlDomainPrefix=m,this.baseUrl=`https://${m}.terabox.com`,this.request(e,{...t,retryCount:o+1})}}return p}async init(){let e=await this.request("/api/check/login",{method:"GET"});if(e.errno!==0)throw e.errno===9e3?new Error("TeraBox is not yet available in this area (errno 9000)"):new Error(`Failed to verify TeraBox login status according to cookie (errno ${e.errno})`)}async genSign(){let e=await this.request("/api/home/info",{method:"GET"});if(!e.data||!e.data.sign1||!e.data.sign3)throw new Error("Failed to get TeraBox sign keys from home/info");return _Y(e.data.sign3,e.data.sign1)}async linkOfficial(e){let t=await this.genSign(),i={type:"dlink",fidlist:`[${e}]`,sign:t,vip:"2",timestamp:String(Math.floor(Date.now()/1e3))},n=await this.request("/api/download",{method:"GET",params:i});if(!n.dlink||n.dlink.length===0)throw new Error(`TeraBox fid ${e} no dlink found (errno: ${n.errno})`);let s=n.dlink[0].dlink;return(await fetch(s,{method:"GET",redirect:"manual",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}})).headers.get("location")||s}async linkCrack(e){let t={target:JSON.stringify([e]),dlink:"1",origin:"dlna"},i=await this.request("/api/filemetas",{method:"GET",params:t});if(!i.info||i.info.length===0||!i.info[0].dlink)throw new Error(`TeraBox crack download failed for ${e}`);return i.info[0].dlink}async manage(e,t){let i=new URLSearchParams;return i.set("async","0"),i.set("filelist",JSON.stringify(t)),i.set("ondup","newcopy"),this.request("/api/filemanager",{method:"POST",params:{onnest:"fail",opera:e},isFormData:!0,body:{async:"0",filelist:JSON.stringify(t),ondup:"newcopy"}})}}});var qy,f5=J(()=>{"use strict";ve();$e();ti();u5();qy=class{addition;client;constructor(e,t){this.addition=e,this.client=new Oy(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=[],s=1,a=100;for(;;){let c={dir:i,page:String(s),num:String(a)};this.addition.order_by&&(c.order=this.addition.order_by,this.addition.order_direction==="desc"&&(c.desc="1"));let l=await this.client.request("/api/list",{method:"GET",params:c});if(l.errno===9e3)throw new Error("TeraBox is not yet available in this area");if(!l.list||l.list.length===0)break;n.push(...l.list),s++}let o=n.map(c=>{let l=c.isdir===1;return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:""}});return ue(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/")||"/",a=i.split("/").pop()||"",c=(await this.client.request("/api/list",{method:"GET",params:{dir:s,page:"1",num:"1000"}})).list?.find(u=>u.server_filename===a);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=c.isdir===1,d="";if(!l)try{this.addition.download_api==="crack"?d=await this.client.linkCrack(i):d=await this.client.linkOfficial(c.fs_id)}catch(u){console.warn("[TeraBox] get download link failed:",u)}return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:d,raw_url_headers:{"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{a:"commit"},body:{path:i,isdir:"1",block_list:"[]"}})}async rename(e,t,i){let n=this.cleanPath(t);await this.client.manage("rename",[{path:n,newname:i}])}async remove(e,t,i){let n=this.cleanPath(t),s=i.map(a=>n==="/"?`/${a}`:`${n}/${a}`);await this.client.manage("delete",s)}async move(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s),c=i.map(l=>({path:a==="/"?`/${l}`:`${a}/${l}`,dest:o,newname:l}));await this.client.manage("move",c)}async copy(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s),c=i.map(l=>({path:a==="/"?`/${l}`:`${a}/${l}`,dest:o,newname:l}));await this.client.manage("copy",c)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",a=n.split("/").pop()||"upload",l=(await(await fetch("https://jp-data.terabox.com/rest/2.0/pcs/file?method=locateupload")).json()).host||"d.terabox.com",d=nr(new Uint8Array(i)),u={path:n,autoinit:"1",target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3)),file_limit_switch_v34:"true"},f=await this.client.request("/api/precreate",{method:"POST",isFormData:!0,body:u});if(f.errno!==0)throw new Error(`TeraBox precreate failed (errno: ${f.errno})`);if(f.return_type===2)return;let A=`https://${l}/rest/2.0/pcs/superfile2?method=upload&path=${encodeURIComponent(n)}&uploadid=${encodeURIComponent(f.uploadid)}&partseq=0`,g=new FormData;g.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),a);let p=await fetch(A,{method:"POST",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"},body:g});if(!p.ok)throw new Error(`TeraBox upload chunk failed: ${p.statusText}`);let I={path:n,size:String(i.length),uploadid:f.uploadid,target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3))};await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{isdir:"0",rtype:"1"},body:I})}}});var My,h5=J(()=>{"use strict";My=class{addition;constructor(e){this.addition=e}async request(e,t={}){let{method:i="GET",params:n,body:s}=t,a=e;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();a+=(a.includes("?")?"&":"?")+u}let o={Authorization:`Bearer ${this.addition.access_token}`,Accept:"application/json"};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(o["Content-Type"]="application/json");let c=await fetch(a,{method:i,headers:o,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),l=await c.text(),d={};try{d=JSON.parse(l)}catch{d=l}if(d&&typeof d=="object"&&d.status&&d.status!=="SUCCESS")throw new Error(`MediaTrack API Error: ${d.message||JSON.stringify(d)}`);if(!c.ok)throw new Error(`MediaTrack request failed (${c.status}): ${l}`);return d}async init(){await this.request("https://kayle.api.mediatrack.cn/users",{method:"GET"})}async getFiles(e){let t=[],i=1,n="";for(this.addition.order_by&&(n=(this.addition.order_desc?"-":"")+this.addition.order_by);;){let s={page:String(i),size:"50"};n&&(s.sort=n);let o=(await this.request(`https://jayce.api.mediatrack.cn/v4/assets/${encodeURIComponent(e)}/children`,{method:"GET",params:s})).data?.assets||[];if(o.length===0)break;t.push(...o),i++}return t}async getDownloadUrl(e){let t=this.addition.project_id||"",i=`https://kayn.api.mediatrack.cn/v1/download_token/asset?asset_id=${encodeURIComponent(e)}&source_type=project&password=&source_id=${encodeURIComponent(t)}`,s=(await this.request(i,{method:"GET"}))?.data?.token;if(!s)throw new Error(`Failed to get download token for asset ${e}`);let a=`https://kayn.api.mediatrack.cn/v1/download/redirect?token=${encodeURIComponent(s)}`;return(await fetch(a,{method:"GET",redirect:"manual"})).headers.get("location")||a}}});var Ly,A5=J(()=>{"use strict";ve();$e();h5();Ly=class{addition;client;rootId="";idCache=new Map;constructor(e){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new My(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let a of i){if(s+="/"+a,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.client.getFiles(n)).find(l=>l.title===a);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async list(e,t){let i=await this.resolveParentId(t),n=await this.client.getFiles(i),s=this.cleanPath(t),a=n.map(o=>{let c=!o.file,l=s?`${s}/${o.title}`:`/${o.title}`;this.idCache.set(l,o.id);let d="";return o.file&&o.file.cover&&(d="https://nano.mtres.cn/"+o.file.cover),{name:o.title,size:parseInt(o.size||"0",10)||0,is_dir:c,created:o.created_at,modified:o.updated_at||new Date().toISOString(),sign:o.id,type:X(o.title,c),thumb:d,raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_desc?"desc":"asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/"),a=await this.resolveParentId(s),c=(await this.client.getFiles(a)).find(f=>f.title===n);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=!c.file,d="";if(!l)try{d=await this.client.getDownloadUrl(c.id)}catch(f){console.warn("[MediaTrack] get download URL failed:",f)}let u="";return c.file&&c.file.cover&&(u="https://nano.mtres.cn/"+c.file.cover),{name:c.title,size:parseInt(c.size||"0",10)||0,is_dir:l,created:c.created_at,modified:c.updated_at||new Date().toISOString(),sign:c.id,type:X(c.title,l),thumb:u,raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",a=await this.resolveParentId(n);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(a)}/children`,{method:"POST",body:{type:1,title:s}})}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(n)}`,{method:"PUT",body:{title:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.client.getFiles(n),a=[];for(let c of i){let l=s.find(d=>d.title===c);l&&a.push(l.id)}if(a.length===0)return;await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/delete",{method:"DELETE",body:{origin_id:n,ids:a}});let o=this.cleanPath(t);for(let c of i)this.idCache.delete(o?`${o}/${c}`:`/${c}`)}async move(e,t,i,n,s){let a=await this.resolveParentId(n),o=await this.resolveParentId(s),c=await this.client.getFiles(a),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/move",{method:"POST",body:{parent_id:o,ids:l}})}async copy(e,t,i,n,s){let a=await this.resolveParentId(n),o=await this.resolveParentId(s),c=await this.client.getFiles(a),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/clone",{method:"POST",body:{parent_id:o,ids:l}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),a=n.split("/").pop()||"upload",o=await this.resolveParentId(s),l=`assets/${Math.random().toString(36).slice(2)}`,u=(await this.client.request("https://jayce.api.mediatrack.cn/v3/storage/tokens/asset",{method:"GET",params:{src:l}})).data?.url;u&&await fetch(u,{method:"PUT",headers:{"Content-Length":String(i.length)},body:new Uint8Array(i)}),await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(o)}/children`,{method:"POST",body:{category:0,description:a,mime:"application/octet-stream",size:String(i.length),src:l,title:a,type:0}})}}});var Hy,g5=J(()=>{"use strict";ve();$e();Hy=class{addition;pathPairs=[];rootOrder=[];pathMap=new Map;constructor(e){this.addition=e,this.parsePaths()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}parsePaths(){let t=(this.addition.paths||"").split(` +`).map(i=>i.trim()).filter(Boolean);this.pathPairs=[],this.rootOrder=[],this.pathMap.clear();for(let i of t){let n="/",s=i,a=i.indexOf(":");a>0&&(n=this.cleanPath(i.slice(0,a)),s=i.slice(a+1).trim()),s=this.cleanPath(s),this.pathPairs.push({aliasSubPath:n,targetPath:s}),this.pathMap.has(n)||(this.rootOrder.push(n),this.pathMap.set(n,[])),this.pathMap.get(n).push(s)}}async init(){this.parsePaths()}getTargetsForPath(e){let t=this.cleanPath(e),i=[];if(this.rootOrder.length===1&&this.rootOrder[0]==="/"){let n=this.pathMap.get("/")||[];for(let s of n){let a=t==="/"?s:`${s}${t}`;i.push({targetFullPath:this.cleanPath(a),subPath:t})}return i}for(let[n,s]of this.pathMap.entries())if(n===t)for(let a of s)i.push({targetFullPath:a,subPath:"/"});else if(t.startsWith(n==="/"?"/":`${n}/`)){let a=t.slice(n==="/"?0:n.length);for(let o of s){let c=a==="/"?o:`${o}${a}`;i.push({targetFullPath:this.cleanPath(c),subPath:a})}}return i}async list(e,t){let i=this.cleanPath(t),{listItems:n}=await Promise.resolve().then(()=>(ar(),tn));if(i==="/"&&this.rootOrder.length>1){let c=[];for(let l of this.rootOrder){let d=l.replace(/^\//,"").split("/")[0]||l;c.some(u=>u.name===d)||c.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""})}return ue(c,this.addition.order_by,this.addition.order_direction)}let s=this.getTargetsForPath(t);if(s.length===0)return[];let a=new Map;for(let c of s)try{let l=await n(c.targetFullPath);for(let d of l.content)a.has(d.name)||a.set(d.name,d)}catch(l){console.warn(`[Alias] listing target ${c.targetFullPath} warning:`,l)}let o=Array.from(a.values());return ue(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/"&&this.rootOrder.length>1)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=this.getTargetsForPath(t);if(s.length===0)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""};let{getItem:a}=await Promise.resolve().then(()=>(ar(),tn));for(let o of s)try{let c=await a(o.targetFullPath);if(c?.item)return{...c.item,raw_url:c.item.raw_url||c.rawUrl}}catch{}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=this.getTargetsForPath(t);if(i.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{makeDirectory:n}=await Promise.resolve().then(()=>(ar(),tn));await n(i[0].targetFullPath)}async rename(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{renameItem:s}=await Promise.resolve().then(()=>(ar(),tn));await s(n[0].targetFullPath,i)}async remove(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)return;let{removeItems:s}=await Promise.resolve().then(()=>(ar(),tn));await s(n[0].targetFullPath,i)}async move(e,t,i,n,s){let a=this.getTargetsForPath(n),o=this.getTargetsForPath(s);if(a.length===0||o.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{moveItems:c}=await Promise.resolve().then(()=>(ar(),tn));await c(a[0].targetFullPath,o[0].targetFullPath,i)}async copy(e,t,i,n,s){let a=this.getTargetsForPath(n),o=this.getTargetsForPath(s);if(a.length===0||o.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{copyItems:c}=await Promise.resolve().then(()=>(ar(),tn));await c(a[0].targetFullPath,o[0].targetFullPath,i)}async put(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for upload path ${t}`);let{putItem:s}=await Promise.resolve().then(()=>(ar(),tn));await s(n[0].targetFullPath,i)}}});var Ky,p5=J(()=>{"use strict";Ky=class{addition;onTokenRefreshed;base="https://api.dropboxapi.com";contentBase="https://content.dropboxapi.com";constructor(e,t){this.addition=e,this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api&&this.addition.api_url_address){let e=new URL(this.addition.api_url_address);e.searchParams.set("refresh_ui",this.addition.refresh_token),e.searchParams.set("server_use","true"),e.searchParams.set("driver_txt","dropboxs_go");let t=await fetch(e.toString());if(!t.ok)throw new Error(`Failed to refresh token: HTTP ${t.status}`);let i=await t.json();if(!i.access_token)throw new Error(i.text||"Empty token returned from renew API");this.addition.access_token=i.access_token,i.refresh_token&&(this.addition.refresh_token=i.refresh_token)}else{let e=`${this.base}/oauth2/token`,t=new URLSearchParams({grant_type:"refresh_token",refresh_token:this.addition.refresh_token,client_id:this.addition.client_id||"",client_secret:this.addition.client_secret||""}),i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!i.ok){let s=await i.text();throw new Error(`Failed to refresh token: HTTP ${i.status} - ${s}`)}let n=await i.json();this.addition.access_token=n.access_token,n.refresh_token&&(this.addition.refresh_token=n.refresh_token)}this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.addition.access_token||"",refreshToken:this.addition.refresh_token||""})}async request(e,t={},i=!0){this.addition.access_token||await this.refreshToken();let s=`${t.isContentApi?this.contentBase:this.base}${e}`,a={Authorization:`Bearer ${this.addition.access_token}`,...t.customHeaders};this.addition.root_namespace_id&&(a["Dropbox-API-Path-Root"]=JSON.stringify({".tag":"root",root:this.addition.root_namespace_id}));let o;t.body!==void 0&&(typeof t.body=="object"&&!(t.body instanceof Uint8Array)&&!(t.body instanceof ArrayBuffer)&&!(t.body instanceof ReadableStream)?(a["Content-Type"]="application/json",o=JSON.stringify(t.body)):o=t.body);let c=await fetch(s,{method:t.method||"POST",headers:a,body:o});if(!c.ok){let d=await c.text(),u=c.status===401||d.includes("expired_access_token")||d.includes("invalid_access_token");if(i&&u)return await this.refreshToken(),this.request(e,t,!1);throw new Error(`Dropbox API error (${c.status}): ${d}`)}return(c.headers.get("content-type")||"").includes("application/json")?await c.json():await c.text()}async init(){if(!this.addition.access_token&&this.addition.refresh_token&&await this.refreshToken(),!this.addition.root_namespace_id)try{let e=await this.getCurrentAccount();e.root_info?.root_namespace_id&&(this.addition.root_namespace_id=e.root_info.root_namespace_id)}catch(e){console.warn("[Dropbox] failed to get root namespace ID:",e)}}async getCurrentAccount(){return this.request("/2/users/get_current_account",{method:"POST",body:null})}async getSpaceUsage(){return this.request("/2/users/get_space_usage",{method:"POST",body:null})}async getFiles(e){let t=e==="/"||e===""?"":e,i=await this.request("/2/files/list_folder",{method:"POST",body:{path:t,recursive:!1,include_deleted:!1,include_has_explicit_shared_members:!1,include_mounted_folders:!0,include_non_downloadable_files:!1,limit:2e3}}),n=[...i.entries];for(;i.has_more;)i=await this.request("/2/files/list_folder/continue",{method:"POST",body:{cursor:i.cursor}}),n.push(...i.entries);return n}async getTemporaryLink(e){return(await this.request("/2/files/get_temporary_link",{method:"POST",body:{path:e}})).link}async createFolder(e){await this.request("/2/files/create_folder_v2",{method:"POST",body:{path:e,autorename:!1}})}async move(e,t){await this.request("/2/files/move_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async copy(e,t){await this.request("/2/files/copy_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async delete(e){await this.request("/2/files/delete_v2",{method:"POST",body:{path:e}})}}});var Gy,m5=J(()=>{"use strict";ve();$e();p5();Gy=class{addition;client;constructor(e,t){this.addition=e,this.client=new Ky(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(a=>{let o=a[".tag"]==="folder",c=a.path_display||a.path_lower||`/${a.name}`;return{name:a.name,size:a.size||0,is_dir:o,modified:a.server_modified||a.client_modified||new Date().toISOString(),sign:a.id||c,type:X(a.name,o),raw_url:""}});return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};try{let s=await this.client.getTemporaryLink(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}catch{return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1,raw_url:""}}}async link(e,t){let i=this.cleanPath(t);return{url:await this.client.getTemporaryLink(i)}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.createFolder(i)}async rename(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/")),a=s?`${s}/${i}`:`/${i}`;await this.client.move(n,a)}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let a=n===""?`/${s}`:`${n}/${s}`;await this.client.delete(a)}}async move(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s);for(let c of i){let l=a===""?`/${c}`:`${a}/${c}`,d=o===""?`/${c}`:`${o}/${c}`;await this.client.move(l,d)}}async copy(e,t,i,n,s){let a=this.cleanPath(n),o=this.cleanPath(s);for(let c of i){let l=a===""?`/${c}`:`${a}/${c}`,d=o===""?`/${c}`:`${o}/${c}`;await this.client.copy(l,d)}}async put(e,t,i){let n=this.cleanPath(t);await this.client.request("/2/files/upload",{method:"POST",isContentApi:!0,customHeaders:{"Dropbox-API-Arg":JSON.stringify({path:n,mode:"overwrite",autorename:!1,mute:!1,strict_conflict:!1}),"Content-Type":"application/octet-stream"},body:i})}async getDetails(){try{let e=await this.client.getSpaceUsage();return{total_space:e.allocation?.allocated||0,used_space:e.used||0}}catch{return{}}}}});var n1,y5,zy,I5=J(()=>{"use strict";n1="https://365.kdocs.cn",y5="https://drive.wps.cn",zy=class{addition;loginState;constructor(e){this.addition=e}isPersonal(){return this.loginState?.is_company_account!==void 0?!this.loginState.is_company_account:(this.addition.mode||"Personal")==="Personal"}driveHost(){return this.isPersonal()?y5:n1}drivePrefix(){return this.isPersonal()?"":"/3rd/drive"}driveUrl(e){return`${this.driveHost()}${this.drivePrefix()}${e}`}getUA(){return this.addition.custom_ua||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}async request(e,t={}){let i=new URL(e);if(t.params)for(let[c,l]of Object.entries(t.params))i.searchParams.set(c,l);let n={Cookie:this.addition.cookie,Accept:"application/json","User-Agent":this.getUA(),Origin:this.driveHost(),...t.headers},s;t.body!==void 0&&(typeof t.body=="object"?(n["Content-Type"]="application/json",s=JSON.stringify(t.body)):s=t.body);let a=await fetch(i.toString(),{method:t.method||"GET",headers:n,body:s});if(!a.ok){let c=await a.text();throw new Error(`WPS API error (${a.status}): ${c}`)}if((a.headers.get("content-type")||"").includes("application/json")){let c=await a.json();if(c.result&&c.result!=="ok"&&c.result!=="success")throw new Error(`WPS API error: ${c.result} - ${c.msg||""}`);return c}return await a.text()}async init(){if(!this.addition.cookie)throw new Error("WPS cookie is required");let e=await this.request("https://account.kdocs.cn/api/v3/islogin",{method:"GET"});this.loginState=e}async getGroups(){if(this.isPersonal())return((await this.request(this.driveUrl("/api/v3/groups"))).groups||[]).map(s=>({group_id:s.id,id:s.id,name:s.name}));let e=this.loginState?.companyid||0,t=`${n1}/3rd/plus/groups/v1/companies/${e}/users/self/groups/private`;return(await this.request(t)).groups||[]}async getFiles(e,t){let i=[],n=0;for(let s=0;s<50;s++){let a=this.driveUrl(`/api/v5/groups/${e}/files`),o=await this.request(a,{params:{parentid:String(t),offset:String(n)}});if(o.files&&o.files.length>0&&i.push(...o.files),o.next_offset===-1||o.next_offset===void 0)break;n=o.next_offset}return i}async getDownloadUrl(e,t){let i=this.driveUrl(`/api/v5/groups/${e}/files/${t}/download?support_checksums=sha1`),n=await this.request(i);if(!n.url)throw new Error("Empty download url received from WPS");return n.url}async createFolder(e,t,i){await this.request(this.driveUrl("/api/v5/files/folder"),{method:"POST",body:{groupid:e,parentid:t,name:i}})}async rename(e,t,i){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/${t}`),{method:"PUT",body:{fname:i}})}async move(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/move`),{method:"POST",body:{fileids:[t],target_groupid:i,target_parentid:n}})}async copy(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/copy`),{method:"POST",body:{fileids:[t],groupid:e,target_groupid:i,target_parentid:n,duplicated_name_model:1}})}async delete(e,t){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/delete`),{method:"POST",body:{fileids:[t]}})}async getStorageDetails(){if(this.isPersonal()){let s=`${y5}/api/v3/spaces`,a=await this.request(s);return{total:a.total,used:a.used}}let e=this.loginState?.companyid||0,t=`${n1}/3rd/plussvr/compose/v1/u/companies/batch/service-space?comp_ids=${e}`,n=((await this.request(t)).info||[]).find(s=>s.id===e);return n?{total:n.space_total,used:n.space_used}:{}}}});var Jy,w5=J(()=>{"use strict";ve();$e();I5();Jy=class{addition;client;constructor(e){this.addition=e,this.client=new zy(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolvePath(e){let t=this.cleanPath(e);if(t==="/")return{kind:"root",groupId:0,fileId:0,name:"root",isDir:!0,size:0,modified:new Date().toISOString()};let i=t.split("/").filter(Boolean),s=(await this.client.getGroups()).find(l=>l.name===i[0]);if(!s)return null;let a=s.group_id||s.id||0;if(i.length===1)return{kind:"group",groupId:a,fileId:0,name:s.name,isDir:!0,size:0,modified:new Date().toISOString()};let o=0,c=null;for(let l=1;l<i.length;l++){let d=i[l],f=(await this.client.getFiles(a,o)).find(g=>g.fname===d);if(!f)return null;let A=f.ftype==="folder";c={kind:A?"folder":"file",groupId:a,fileId:f.id,name:f.fname,isDir:A,size:f.fsize||0,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString()},o=f.id}return c}async list(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||!n.isDir)return[];if(n.kind==="root"){let c=(await this.client.getGroups()).map(l=>({name:l.name,size:0,is_dir:!0,modified:new Date().toISOString(),sign:String(l.group_id||l.id),type:1,raw_url:""}));return ue(c,this.addition.order_by,this.addition.order_direction)}let a=(await this.client.getFiles(n.groupId,n.fileId)).map(o=>{let c=o.ftype==="folder";return{name:o.fname,size:o.fsize||0,is_dir:c,modified:o.mtime?new Date(o.mtime*1e3).toISOString():new Date().toISOString(),sign:String(o.id),type:X(o.fname,c),raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n)throw new Error(`Path not found: ${i}`);let s="";if(!n.isDir&&n.kind==="file")try{s=await this.client.getDownloadUrl(n.groupId,n.fileId)}catch(a){console.warn("[WPS] failed to get download url in get():",a)}return{name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified,sign:String(n.fileId||n.groupId),type:X(n.name,n.isDir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||n.isDir||n.kind!=="file")throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadUrl(n.groupId,n.fileId),headers:{"User-Agent":this.client.getUA(),Referer:this.client.driveHost()}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=await this.resolvePath(n);if(!a||!a.isDir||a.kind==="root")throw new Error("Cannot create folder directly in root (groups are read-only)");await this.client.createFolder(a.groupId,a.fileId,s)}async move(e,t,i,n,s){let a=await this.resolvePath(this.cleanPath(s));if(!a||!a.isDir||a.kind==="root")throw new Error("Target destination directory not found");for(let o of i){let c=this.cleanPath(n)==="/"?`/${o}`:`${this.cleanPath(n)}/${o}`,l=await this.resolvePath(c);l&&await this.client.move(l.groupId,l.fileId,a.groupId,a.fileId)}}async rename(e,t,i){let n=await this.resolvePath(this.cleanPath(t));if(!n)throw new Error("Source node not found");await this.client.rename(n.groupId,n.fileId,i)}async copy(e,t,i,n,s){let a=await this.resolvePath(this.cleanPath(s));if(!a||!a.isDir||a.kind==="root")throw new Error("Target destination directory not found");for(let o of i){let c=this.cleanPath(n)==="/"?`/${o}`:`${this.cleanPath(n)}/${o}`,l=await this.resolvePath(c);l&&await this.client.copy(l.groupId,l.fileId,a.groupId,a.fileId)}}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,a=await this.resolvePath(s);a&&a.kind!=="root"&&a.kind!=="group"&&await this.client.delete(a.groupId,a.fileId)}}async put(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/"))||"/",a=n.substring(n.lastIndexOf("/")+1),o=await this.resolvePath(s);if(!o||!o.isDir)throw new Error(`Parent directory not found: ${s}`);console.warn(`[WPS] direct small upload for ${a}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function QY(r){let e=encodeURIComponent(r);return e=e.replace(/\+/g,"%20"),e=e.replace(/!/g,"%21"),e=e.replace(/'/g,"%27"),e=e.replace(/\(/g,"%28"),e=e.replace(/\)/g,"%29"),e=e.replace(/\*/g,"%2A"),e}function s1(r){return al.default.MD5(r).toString(al.default.enc.Hex)}function FY(r,e,t){let n=QY(r).split("").sort().join(""),s=al.default.enc.Utf8.parse(n),a=al.default.enc.Base64.stringify(s),o=s1(a)+s1(`${e}:${t}`);return s1(o).toUpperCase()}function PY(r){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function TY(r){let e=t=>String(t).padStart(2,"0");return`${r.getFullYear()}-${e(r.getMonth()+1)}-${e(r.getDate())} ${e(r.getHours())}:${e(r.getMinutes())}:${e(r.getSeconds())}`}var al,jy,x5=J(()=>{"use strict";al=Qr(Ao(),1);jy=class{addition;personalHost="https://yun.139.com";familyHost="https://yun.139.com";groupHost="https://yun.139.com";account="";constructor(e){this.addition=e,this.extractAccount()}extractAccount(){if(this.addition.authorization)try{let e=this.getAuthString(),i=al.default.enc.Base64.parse(e).toString(al.default.enc.Utf8).split(":");i.length>=2&&(this.account=i[1])}catch{}}getAuthString(){let e=(this.addition.authorization||"").trim();return e.startsWith("Basic ")&&(e=e.slice(6).trim()),e}isPersonalNew(){return!this.addition.type||this.addition.type==="personal_new"}isFamily(){return this.addition.type==="family"}isGroup(){return this.addition.type==="group"}getHost(){return this.isFamily()?this.familyHost:this.isGroup()?this.groupHost:this.personalHost}async request(e,t){let i=TY(new Date),n=PY(16),s=JSON.stringify(t||{}),a=FY(s,i,n),o;e.startsWith("http://")||e.startsWith("https://")?o=e:e.startsWith("/orchestration/")?o=`https://yun.139.com${e}`:o=`${this.getHost()}${e}`;let c=this.isFamily()?"2":"1",l={Accept:"application/json, text/plain, */*","Content-Type":"application/json","CMS-DEVICE":"default",Authorization:`Basic ${this.getAuthString()}`,Caller:"web","Mcloud-Channel":"1000101","Mcloud-Client":"10701","Mcloud-Route":"001","mcloud-channel":"1000101","mcloud-client":"10701","mcloud-sign":`${i},${n},${a}`,"mcloud-version":"7.14.0",Origin:"https://yun.139.com",Referer:"https://yun.139.com/w/","x-DeviceInfo":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||","x-huawei-channelSrc":"10000034","x-inner-ntwk":"2","x-m4c-caller":"PC","x-m4c-src":"10002","x-SvcType":c,"Inner-Hcy-Router-Https":"1","X-Yun-Api-Version":"v1","X-Yun-App-Channel":"10000034","X-Yun-Channel-Source":"10000034","X-Yun-Client-Info":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||dW5kZWZpbmVk||","X-Yun-Module-Type":"100","X-Yun-Svc-Type":"1"},d=await fetch(o,{method:"POST",headers:l,body:s});if(!d.ok){let f=await d.text();throw new Error(`139 Cloud API error (${d.status}): ${f}`)}let u=await d.json();if(u.success===!1&&u.message)throw new Error(`139 Cloud API error: ${u.message}`);return u}async init(){if(!this.addition.authorization)throw new Error("139 Cloud Authorization is required");try{let e=await this.request("https://user-njs.yun.139.com/user/route/qryRoutePolicy",{userInfo:{userType:1,accountType:1,accountName:this.account},modAddrType:1});if(e.data?.routePolicyList)for(let t of e.data.routePolicyList)t.modName==="personal"&&t.httpsUrl?this.personalHost=t.httpsUrl:t.modName==="group"&&t.httpsUrl?this.groupHost=t.httpsUrl:t.modName==="family"&&t.httpsUrl&&(this.familyHost=t.httpsUrl)}catch(e){console.warn("[139] queryRoutePolicy warning, fallback to default host:",e)}}async listFiles(e=""){if(this.isPersonalNew()){let t="",i=[],n=e||this.addition.root_folder_id||"/";do{let o=await this.request("/file/list",{parentFileId:n,pageInfo:{pageCursor:t,pageSize:100},orderBy:"updated_at",orderDirection:"DESC",imageThumbnailStyleList:["Small","Large"]}),c=o.data?.items||[];i.push(...c),t=o.data?.nextPageCursor||""}while(t);let s=i.filter(o=>o.type==="folder").map(o=>({catalogID:o.fileId,catalogName:o.name,updateTime:o.updatedAt}));return{files:i.filter(o=>o.type!=="folder").map(o=>({contentID:o.fileId,contentName:o.name,contentSize:o.size,updateTime:o.updatedAt,createTime:o.createdAt,thumbnailURL:o.thumbnailUrls?.[0]?.url})),folders:s}}return this.getDisk(e)}async getDisk(e=""){let i=(await this.request("/orchestration/personalCloud/catalog/v1.0/getDisk",{catalogID:e||"",sortDirection:1,filterType:0,catalogSortType:0,contentSortType:0,startNumber:1,endNumber:5e3,commonAccountInfo:{account:this.account,accountType:1}})).data?.getDiskResult;return{files:i?.fileList||[],folders:i?.catalogList||[]}}async getDownloadUrl(e){if(this.isPersonalNew()){let n=await this.request("/file/getDownloadUrl",{fileId:e}),s=(n.data?.cdnSwitch?n.data?.cdnUrl:null)||n.data?.url||n.data?.cdnUrl;if(!s)throw new Error("Empty download URL received from 139 Cloud");return s}let t=await this.request("/orchestration/personalCloud/uploadAndDownload/v1.0/downloadRequest",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}}),i=t.data?.downloadURL||t.data?.url;if(!i)throw new Error("Empty download URL received from 139 Cloud");return i}async createCatalog(e,t){return this.isPersonalNew()?(await this.request("/file/create",{parentFileId:e||this.addition.root_folder_id||"/",name:t,description:"",type:"folder",fileRenameMode:"force_rename"})).data?.fileId||"":(await this.request("/orchestration/personalCloud/catalog/v1.0/createCatalog",{parentCatalogID:e||"",catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})).data?.catalogID||""}async deleteFile(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteContent",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}})}async deleteCatalog(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteCatalog",{catalogID:e,commonAccountInfo:{account:this.account,accountType:1}})}async rename(e,t){if(this.isPersonalNew()){await this.request("/file/update",{fileId:e,name:t,description:""});return}await this.request("/orchestration/personalCloud/catalog/v1.0/updateCatalogInfo",{catalogID:e,catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})}async getStorageDetails(){try{let e=await this.request("/orchestration/personalCloud/catalog/v1.0/getUserDomainInfo",{commonAccountInfo:{account:this.account,accountType:1}});return{total:e.data?.totalSize,used:e.data?.usedSize}}catch{return{}}}}});var $y,C5=J(()=>{"use strict";ve();$e();x5();$y=class{addition;client;constructor(e){this.addition=e,this.client=new jy(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}getRootId(){return this.addition.root_folder_id?this.addition.root_folder_id:this.client.isPersonalNew()?"/":""}async resolveCatalogId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootId();let i=t.split("/").filter(Boolean),n=this.getRootId();for(let s of i){let o=(await this.client.listFiles(n)).folders.find(c=>c.catalogName===s);if(o)n=o.catalogID;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCatalogId(i),s=await this.client.listFiles(n),a=s.folders.map(l=>({name:l.catalogName,size:0,is_dir:!0,modified:l.updateTime||new Date().toISOString(),sign:l.catalogID,type:1,raw_url:""})),o=s.files.map(l=>{let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u=l.contentName||"file";return{name:u,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||u,type:X(u,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:""}}),c=[...a,...o];return ue(c,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",a=await this.resolveCatalogId(s),o=await this.client.listFiles(a),c=o.folders.find(d=>d.catalogName===n);if(c)return{name:c.catalogName,size:0,is_dir:!0,modified:c.updateTime||new Date().toISOString(),sign:c.catalogID,type:1,raw_url:""};let l=o.files.find(d=>d.contentName===n);if(l){let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u="";if(l.contentID)try{u=await this.client.getDownloadUrl(l.contentID)}catch(f){console.warn("[139] failed to get download url in get():",f)}return{name:l.contentName||n,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||n,type:X(n,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:u}}throw new Error(`Item not found: ${i}`)}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{Referer:"https://yun.139.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=await this.resolveCatalogId(n);await this.client.createCatalog(a,s)}async rename(e,t,i){let n=await this.get(e,t);await this.client.rename(n.sign,i)}async remove(e,t,i){let n=this.cleanPath(t),s=await this.resolveCatalogId(n),a=await this.client.listFiles(s);for(let o of i){let c=a.folders.find(l=>l.catalogName===o);if(c)await this.client.deleteCatalog(c.catalogID);else{let l=a.files.find(d=>d.contentName===o);l&&l.contentID&&await this.client.deleteFile(l.contentID)}}}async move(e,t,i,n,s){console.warn(`[139] move from ${n} to ${s}`)}async copy(e,t,i,n,s){console.warn(`[139] copy from ${n} to ${s}`)}async put(e,t,i){console.warn(`[139] put for ${t}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function UY(r){let e=r.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return ol.default.enc.Base64.parse(e)}function RY(r){return ol.default.enc.Base64.stringify(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function NY(r){return ol.default.enc.Utf8.parse(r)}var ol,Vy,E5=J(()=>{"use strict";ol=Qr(Ao(),1);Vy=class{addition;sid="";seq=Math.floor(Math.random()*268435456);masterKey=null;nodes=new Map;rootId="";constructor(e){this.addition=e}nextSeq(){return this.seq=(this.seq+1)%268435456,this.seq}async request(e){let i=`https://g.api.mega.co.nz/cs?id=${this.nextSeq()}`;this.sid&&(i+=`&sid=${this.sid}`);let n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`Mega API HTTP error: ${n.status}`);let s=await n.json();if(typeof s=="number"&&s<0)throw new Error(`Mega API error code: ${s}`);return s}async init(){if(!this.addition.email||!this.addition.password)throw new Error("Mega email and password are required");let e=ol.default.enc.Base64.stringify(ol.default.enc.Utf8.parse(this.addition.email.toLowerCase())).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),i=(await this.request([{a:"us",user:this.addition.email.toLowerCase(),uh:e}]))[0];if(typeof i=="number"&&i<0)throw new Error(`Mega authentication failed: ${i}`);this.sid=i.sid||"",await this.fetchNodes()}async fetchNodes(){if(!this.sid)return;let t=(await this.request([{a:"f",c:1}]))[0];if(t?.f&&Array.isArray(t.f)){this.nodes.clear();for(let i of t.f){let n=i.t===1||i.t===2||i.t===3||i.t===4;i.t===2&&(this.rootId=i.h);let s="unnamed";if(i.a)try{let o=this.decryptAttributes(i.a,i.k);o?.n&&(s=o.n)}catch{s=i.h}let a={id:i.h,parent_id:i.p,name:s,size:i.s||0,is_dir:n,modified:i.ts?new Date(i.ts*1e3).toISOString():new Date().toISOString(),type:i.t,key:i.k};this.nodes.set(i.h,a)}}}decryptAttributes(e,t){try{let i=UY(e),n=ol.default.enc.Utf8.stringify(i);if(n.startsWith("MEGA{")){let s=n.substring(4);return JSON.parse(s)}}catch{}return null}getChildren(e){let t=e||this.rootId,i=[];for(let n of this.nodes.values())n.parent_id===t&&i.push(n);return i}getNode(e){return this.nodes.get(e)}getRootId(){return this.rootId}async getDownloadLink(e){let i=(await this.request([{a:"g",g:1,n:e}]))[0];if(i?.g)return i.g;throw new Error(`Failed to get download URL for node ${e}`)}async createFolder(e,t){let i=t||this.rootId,n=JSON.stringify({n:e}),s=RY(NY(`MEGA${n}`)),a=await this.request([{a:"p",t:i,n:[{h:"xxxxxxxx",t:1,a:s,k:"dummy_key"}]}]);return await this.fetchNodes(),a[0]?.f?.[0]?.h||""}async deleteNode(e){await this.request([{a:"d",n:e}]),this.nodes.delete(e)}async moveNode(e,t){await this.request([{a:"m",n:e,t}]);let i=this.nodes.get(e);i&&(i.parent_id=t)}async getQuota(){let t=(await this.request([{a:"uq",strg:1}]))[0];return{total:t?.mstrg||0,used:t?.cstrg||0}}}});var Yy,B5=J(()=>{"use strict";ve();$e();E5();Yy=class{addition;client;constructor(e){this.addition=e,this.client=new Vy(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}resolveNodeByPath(e){let t=this.cleanPath(e);if(t==="/")return{id:this.client.getRootId(),name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),type:2};let i=t.split("/").filter(Boolean),n=this.client.getRootId(),s=null;for(let a of i){let c=this.client.getChildren(n).find(l=>l.name===a);if(!c)return null;s=c,n=c.id}return s}async list(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||!n.is_dir)return[];let a=this.client.getChildren(n.id).map(o=>({name:o.name,size:o.size||0,is_dir:o.is_dir,modified:o.modified||new Date().toISOString(),sign:o.id,type:X(o.name,o.is_dir),raw_url:""}));return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n)throw new Error(`Node not found: ${i}`);let s="";if(!n.is_dir)try{s=await this.client.getDownloadLink(n.id)}catch(a){console.warn("[Mega] failed to get download link in get():",a)}return{name:n.name,size:n.size,is_dir:n.is_dir,modified:n.modified,sign:n.id,type:X(n.name,n.is_dir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||n.is_dir)throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadLink(n.id)}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=this.resolveNodeByPath(n);if(!a||!a.is_dir)throw new Error(`Parent folder not found: ${n}`);await this.client.createFolder(s,a.id)}async rename(e,t,i){if(!this.resolveNodeByPath(this.cleanPath(t)))throw new Error("Node not found");console.warn(`[Mega] rename ${t} to ${i}`)}async move(e,t,i,n,s){let a=this.resolveNodeByPath(this.cleanPath(s));if(!a||!a.is_dir)throw new Error("Destination folder not found");for(let o of i){let c=this.cleanPath(n)==="/"?`/${o}`:`${this.cleanPath(n)}/${o}`,l=this.resolveNodeByPath(c);l&&await this.client.moveNode(l.id,a.id)}}async copy(e,t,i,n,s){console.warn(`[Mega] copy not supported natively from ${n} to ${s}`)}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,a=this.resolveNodeByPath(s);a&&await this.client.deleteNode(a.id)}}async put(e,t,i){console.warn(`[Mega] put for ${t}`)}async getDetails(){try{let e=await this.client.getQuota();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});var Wy,b5=J(()=>{"use strict";Wy=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.share_code||!this.addition.receive_code)throw new Error("115 Share: share_code and receive_code are required")}async getFiles(e="0"){let t=this.addition.page_size||1e3,i=[],n=0,s=0;do{let a=new URL("https://webapi.115.com/share/snap");a.searchParams.set("share_code",this.addition.share_code),a.searchParams.set("receive_code",this.addition.receive_code),a.searchParams.set("cid",e||"0"),a.searchParams.set("limit",String(t)),a.searchParams.set("offset",String(n));let o={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://115.com/"};this.addition.cookie&&(o.Cookie=this.addition.cookie);let c=await fetch(a.toString(),{headers:o});if(!c.ok)throw new Error(`115 Share API error: HTTP ${c.status}`);let l=await c.json();if(!l.state)throw new Error(`115 Share API error: ${l.msg||"failed"}`);let d=l.data?.list||[];if(i.push(...d),s=l.data?.count||0,n+=d.length,d.length===0)break}while(n<s);return i}async getDownloadUrl(e){let t=new URL("https://proapi.115.com/app/share/downurl"),i=new URLSearchParams({share_code:this.addition.share_code,receive_code:this.addition.receive_code,file_id:e}),n={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type":"application/x-www-form-urlencoded"};this.addition.cookie&&(n.Cookie=this.addition.cookie);let s=await fetch(t.toString(),{method:"POST",headers:n,body:i.toString()});if(!s.ok)throw new Error(`115 Share download error: HTTP ${s.status}`);let a=await s.json(),o=a.data?.url?.url||a.data?.url;if(!o)throw new Error(a.msg||"Empty download URL received from 115 Share");return o}}});var Xy,v5=J(()=>{"use strict";ve();$e();b5();Xy=class{addition;client;constructor(e){this.addition=e,this.client=new Wy(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveCid(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let o=(await this.client.getFiles(n)).find(c=>c.is_file===0&&c.file_name===s);if(o&&o.category_id)n=o.category_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCid(i),a=(await this.client.getFiles(n)).map(o=>{let c=o.is_file===0,l=typeof o.file_size=="number"?o.file_size:parseInt(String(o.file_size||"0"),10),d=typeof o.user_utime=="number"?o.user_utime:parseInt(String(o.user_utime||"0"),10),u=o.file_name||"file";return{name:u,size:c||isNaN(l)?0:l,is_dir:c,modified:d>0?new Date(d*1e3).toISOString():new Date().toISOString(),sign:c?o.category_id||"":o.file_id||"",type:X(u,c),thumb:o.thumb_url,raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",a=await this.resolveCid(s),c=(await this.client.getFiles(a)).find(A=>A.file_name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.is_file===0,d=typeof c.file_size=="number"?c.file_size:parseInt(String(c.file_size||"0"),10),u=typeof c.user_utime=="number"?c.user_utime:parseInt(String(c.user_utime||"0"),10),f="";if(!l&&c.file_id)try{f=await this.client.getDownloadUrl(c.file_id)}catch(A){console.warn("[115Share] failed to get download url:",A)}return{name:c.file_name||n,size:l||isNaN(d)?0:d,is_dir:l,modified:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),sign:l?c.category_id||"":c.file_id||"",type:X(c.file_name||n,l),thumb:c.thumb_url,raw_url:f}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:"https://115.com/"}}}async mkdir(e,t){throw new Error("115 Share is read-only")}async rename(e,t,i){throw new Error("115 Share is read-only")}async remove(e,t,i){throw new Error("115 Share is read-only")}async move(e,t,i,n,s){throw new Error("115 Share is read-only")}async copy(e,t,i,n,s){throw new Error("115 Share is read-only")}async put(e,t,i){throw new Error("115 Share is read-only")}}});function k5(r){let e=typeof r=="string"?new TextEncoder().encode(r):r,t=-1;for(let i=0;i<e.length;i++)t=t>>>8^OY[(t^e[i])&255];return(t^-1)>>>0}function qY(r,e="web",t="3"){let i=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"],n=String(Math.round(1e7*Math.random())),s=new Date,a=String(Math.floor(s.getTime()/1e3)),o=A=>String(A).padStart(2,"0"),c=`${s.getFullYear()}${o(s.getMonth()+1)}${o(s.getDate())}${o(s.getHours())}${o(s.getMinutes())}`,l=[];for(let A=0;A<c.length;A++){let g=c.charCodeAt(A)-48;l.push(i[g]||"a")}let d=String(k5(l.join(""))),u=[a,n,r,e,t,d].join("|"),f=String(k5(u));return[d,[a,n,f].join("-")]}function MY(r){let e=new URL(r),[t,i]=qY(e.pathname,"web","3");return e.searchParams.set(t,i),e.toString()}var OY,Zy,S5=J(()=>{"use strict";OY=(()=>{let r=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();Zy=class{addition;mainApi="https://yun.123pan.com/b/api";constructor(e){this.addition=e}async init(){if(!this.addition.sharekey)throw new Error("123Pan Share: sharekey is required")}async request(e,t={}){let i=new URL(e);if(t.params)for(let[l,d]of Object.entries(t.params))i.searchParams.set(l,d);let n=MY(i.toString()),s={Origin:"https://yun.123pan.com",Referer:"https://yun.123pan.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",Platform:"web","App-Version":"3"};this.addition.accesstoken&&(s.Authorization=`Bearer ${this.addition.accesstoken}`);let a;t.body&&(s["Content-Type"]="application/json",a=JSON.stringify(t.body));let o=await fetch(n,{method:t.method||"GET",headers:s,body:a});if(!o.ok)throw new Error(`123Pan Share API error: HTTP ${o.status}`);let c=await o.json();if(c.code!==0&&c.code!==200)throw new Error(c.message||`123Pan Share API error (${c.code})`);return c}async getFiles(e="0"){let t=[],i=1;for(;;){let n=await this.request(`${this.mainApi}/share/get`,{method:"GET",params:{limit:"100",next:"0",orderBy:"file_id",orderDirection:"desc",parentFileId:e||"0",Page:String(i),shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||""}}),s=n.data?.InfoList||[];if(t.push(...s),i++,s.length===0||n.data?.Next==="-1"||n.data?.Next===-1)break}return t}async getDownloadUrl(e){let i=(await this.request(`${this.mainApi}/share/download/info`,{method:"POST",body:{shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||"",etag:e.Etag||"",fileId:e.FileId,s3keyFlag:e.S3KeyFlag||"",size:e.Size}})).data?.DownloadURL||"";if(!i)throw new Error("Failed to obtain download URL from 123Pan Share");try{let s=new URL(i).searchParams.get("params");s&&(i=atob(s))}catch{}return i}}});var eI,D5=J(()=>{"use strict";ve();$e();S5();eI=class{addition;client;constructor(e){this.addition=e,this.client=new Zy(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let o=(await this.client.getFiles(n)).find(c=>c.Type===1&&c.FileName===s);if(o)n=String(o.FileId);else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),a=(await this.client.getFiles(n)).map(o=>{let c=o.Type===1;return{name:o.FileName,size:c?0:o.Size||0,is_dir:c,modified:o.UpdateAt||o.CreateAt||new Date().toISOString(),sign:String(o.FileId),type:X(o.FileName,c),raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",a=await this.resolveParentId(s),c=(await this.client.getFiles(a)).find(u=>u.FileName===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.Type===1,d="";if(!l)try{d=await this.client.getDownloadUrl(c)}catch(u){console.warn("[123Share] failed to get download url in get():",u)}return{name:c.FileName,size:l?0:c.Size||0,is_dir:l,modified:c.UpdateAt||c.CreateAt||new Date().toISOString(),sign:String(c.FileId),type:X(c.FileName,l),raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=await this.resolveParentId(n),c=(await this.client.getFiles(a)).find(d=>d.FileName===s);if(!c||c.Type===1)throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c),headers:{Referer:"https://yun.123pan.com/"}}}async mkdir(e,t){throw new Error("123Pan Share is read-only")}async rename(e,t,i){throw new Error("123Pan Share is read-only")}async remove(e,t,i){throw new Error("123Pan Share is read-only")}async move(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async copy(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async put(e,t,i){throw new Error("123Pan Share is read-only")}}});var tI,_5=J(()=>{"use strict";tI=class{addition;shareToken="";driveId="";constructor(e){this.addition=e}async getShareToken(){if(!this.addition.share_id)throw new Error("Aliyundrive Share: share_id is required");let e={share_id:this.addition.share_id};this.addition.share_pwd&&(e.share_pwd=this.addition.share_pwd);let t=await fetch("https://api.alipan.com/v2/share_link/get_share_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`Aliyundrive Share token error: HTTP ${t.status}`);let i=await t.json();if(i.code)throw new Error(i.message||`Aliyundrive Share error: ${i.code}`);return this.shareToken=i.share_token||"",this.shareToken}async init(){await this.getShareToken()}async getFiles(e="root"){this.shareToken||await this.getShareToken();let t=[],i="";do{let n={image_thumbnail_process:"image/resize,w_160/format,jpeg",image_url_process:"image/resize,w_1920/format,jpeg",limit:200,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"ASC",parent_file_id:e||"root",share_id:this.addition.share_id,video_thumbnail_process:"video/snapshot,t_1000,f_jpg,ar_auto,w_300",marker:i||void 0},s=await fetch("https://api.alipan.com/adrive/v3/file/list",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(n)});if(!s.ok)throw new Error(`Aliyundrive Share list error: HTTP ${s.status}`);let a=await s.json();if(a.code==="ShareLinkTokenInvalid"||a.code==="AccessTokenInvalid")return await this.getShareToken(),this.getFiles(e);if(a.code)throw new Error(a.message||`Aliyundrive list error (${a.code})`);let o=a.items||[];t.push(...o),i=a.next_marker||"",o.length>0&&!this.driveId&&o[0].drive_id&&(this.driveId=o[0].drive_id)}while(i);return t}async getDownloadUrl(e){this.shareToken||await this.getShareToken();let t={share_id:this.addition.share_id,file_id:e,drive_id:this.driveId||void 0,expire_sec:14400},i=await fetch("https://api.alipan.com/v2/file/get_share_link_download_url",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`Aliyundrive download URL error: HTTP ${i.status}`);let n=await i.json();if(n.code==="ShareLinkTokenInvalid")return await this.getShareToken(),this.getDownloadUrl(e);let s=n.download_url||n.url;if(!s)throw new Error("Failed to get download URL from Aliyundrive Share");return s}}});var rI,Q5=J(()=>{"use strict";ve();$e();_5();rI=class{addition;client;constructor(e){this.addition=e,this.client=new tI(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveFileId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"root";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"root";for(let s of i){let o=(await this.client.getFiles(n)).find(c=>c.type==="folder"&&c.name===s);if(o)n=o.file_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveFileId(i),a=(await this.client.getFiles(n)).map(o=>{let c=o.type==="folder";return{name:o.name,size:c?0:o.size||0,is_dir:c,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.file_id,type:X(o.name,c),thumb:o.thumbnail,raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",a=await this.resolveFileId(s),c=(await this.client.getFiles(a)).find(u=>u.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.type==="folder",d="";if(!l)try{d=await this.client.getDownloadUrl(c.file_id)}catch(u){console.warn("[AliyundriveShare] failed to get download url in get():",u)}return{name:c.name,size:l?0:c.size||0,is_dir:l,modified:c.updated_at||c.created_at||new Date().toISOString(),sign:c.file_id,type:X(c.name,l),thumb:c.thumbnail,raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=await this.resolveFileId(n),c=(await this.client.getFiles(a)).find(d=>d.name===s);if(!c||c.type==="folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c.file_id),headers:{Referer:"https://www.aliyundrive.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){throw new Error("Aliyundrive Share is read-only")}async rename(e,t,i){throw new Error("Aliyundrive Share is read-only")}async remove(e,t,i){throw new Error("Aliyundrive Share is read-only")}async move(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async copy(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async put(e,t,i){throw new Error("Aliyundrive Share is read-only")}}});var iI,F5=J(()=>{"use strict";iI=class{addition;finalUrl="";cookie="";constructor(e){this.addition=e}async init(){if(!this.addition.url)throw new Error("OneDrive Sharelink URL is required");try{let e=await fetch(this.addition.url,{method:"HEAD",redirect:"follow"});this.finalUrl=e.url||this.addition.url}catch{this.finalUrl=this.addition.url}}async getFiles(e="/"){this.finalUrl||await this.init();let t=new URL(this.finalUrl);if(t.pathname.includes("/:u:/")||t.pathname.includes("/:v:/")||t.pathname.includes("/:b:/"))return[{id:"root_file",name:decodeURIComponent(t.pathname.split("/").pop()||"file"),size:0,is_folder:!1,modified:new Date().toISOString(),download_url:this.getDirectDownloadLink(this.finalUrl)}];try{let i=`${t.origin}${t.pathname}/_api/web/GetListUsingPath(DecodedUrl=@a1)/renderListDataAsStream`,n=await fetch(i,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json;odata=verbose"},body:JSON.stringify({parameters:{RenderOptions:5707,AllowMultipleValueFilterForTaxonomyFields:!0,AddRequiredFields:!0}})});if(n.ok)return((await n.json()).ListData?.Row||[]).map(o=>{let c=String(o.FSObjType)==="1",l=parseInt(o.File_x0020_Size||"0",10);return{id:o.UniqueId,name:o.FileLeafRef,size:c||isNaN(l)?0:l,is_folder:c,modified:o["Modified."]||new Date().toISOString(),download_url:o["@content.downloadUrl"],sp_item_url:o[".spItemUrl"]}})}catch{}return[]}getDirectDownloadLink(e){let t=new URL(e);return t.searchParams.set("download","1"),t.toString()}}});var nI,P5=J(()=>{"use strict";ve();$e();F5();nI=class{addition;client;constructor(e){this.addition=e,this.client=new iI(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(a=>({name:a.name,size:a.size||0,is_dir:a.is_folder,modified:a.modified||new Date().toISOString(),sign:a.id||a.name,type:X(a.name,a.is_folder),raw_url:a.download_url||""}));return ue(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let a=(await this.client.getFiles("/")).find(o=>o.name===n);if(!a)throw new Error(`File not found: ${i}`);return{name:a.name,size:a.size||0,is_dir:a.is_folder,modified:a.modified||new Date().toISOString(),sign:a.id||a.name,type:X(a.name,a.is_folder),raw_url:a.download_url||this.client.getDirectDownloadLink(this.addition.url)}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:i.raw_url||this.client.getDirectDownloadLink(this.addition.url)}}async mkdir(e,t){throw new Error("OneDrive Sharelink is read-only")}async rename(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async remove(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async move(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async copy(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async put(e,t,i){throw new Error("OneDrive Sharelink is read-only")}}});var sI,T5=J(()=>{"use strict";sI=class{addition;passCodeToken="";deviceId="";constructor(e){this.addition=e,this.deviceId=e.device_id||this.generateDeviceId()}generateDeviceId(){return"web_"+Math.random().toString(36).substring(2,15)}async init(){if(!this.addition.share_id)throw new Error("PikPak Share: share_id is required")}async getFiles(e=""){let t=[],i="";do{let n=new URL("https://api-drive.mypikpak.com/drive/v1/share");n.searchParams.set("share_id",this.addition.share_id),this.addition.share_pwd&&n.searchParams.set("pass_code",this.addition.share_pwd),e&&n.searchParams.set("parent_id",e),i&&n.searchParams.set("page_token",i),n.searchParams.set("thumbnail_size","SIZE_LARGE");let s={"X-Client-ID":"YUMx5nI8ZU8Ap8pm","X-Device-ID":this.deviceId,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"};this.passCodeToken&&(s["X-Share-Token"]=this.passCodeToken);let a=await fetch(n.toString(),{headers:s});if(!a.ok)throw new Error(`PikPak Share error: HTTP ${a.status}`);let o=await a.json();o.pass_code_token&&(this.passCodeToken=o.pass_code_token);let c=o.files||[];if(t.push(...c),i=o.next_page_token||"",c.length===0)break}while(i);return t}async getDownloadUrl(e){if(e.web_content_link)return e.web_content_link;if(e.medias&&e.medias.length>0&&e.medias[0].link?.url)return e.medias[0].link.url;throw new Error("Download URL not found in PikPak share item")}}});var aI,U5=J(()=>{"use strict";ve();$e();T5();aI=class{addition;client;constructor(e){this.addition=e,this.client=new sI(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"";for(let s of i){let o=(await this.client.getFiles(n)).find(c=>c.kind==="drive#folder"&&c.name===s);if(o)n=o.id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),a=(await this.client.getFiles(n)).map(o=>{let c=o.kind==="drive#folder",l=typeof o.size=="number"?o.size:parseInt(String(o.size||"0"),10);return{name:o.name,size:c||isNaN(l)?0:l,is_dir:c,modified:o.modified_time||new Date().toISOString(),sign:o.id,type:X(o.name,c),thumb:o.thumbnail_link,raw_url:""}});return ue(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",a=await this.resolveParentId(s),c=(await this.client.getFiles(a)).find(f=>f.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.kind==="drive#folder",d=typeof c.size=="number"?c.size:parseInt(String(c.size||"0"),10),u="";if(!l)try{u=await this.client.getDownloadUrl(c)}catch(f){console.warn("[PikPakShare] failed to get download url in get():",f)}return{name:c.name,size:l||isNaN(d)?0:d,is_dir:l,modified:c.modified_time||new Date().toISOString(),sign:c.id,type:X(c.name,l),thumb:c.thumbnail_link,raw_url:u}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),a=await this.resolveParentId(n),c=(await this.client.getFiles(a)).find(d=>d.name===s);if(!c||c.kind==="drive#folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c)}}async mkdir(e,t){throw new Error("PikPak Share is read-only")}async rename(e,t,i){throw new Error("PikPak Share is read-only")}async remove(e,t,i){throw new Error("PikPak Share is read-only")}async move(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async copy(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async put(e,t,i){throw new Error("PikPak Share is read-only")}}});var oI,R5=J(()=>{"use strict";ve();$e();oI=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.address||!this.addition.share_name)throw new Error("SMB: address and share_name are required")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){return ue([],this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";return{name:n,size:0,is_dir:i==="",modified:new Date().toISOString(),sign:i||"/",type:X(n,i===""),raw_url:""}}async mkdir(e,t){}async rename(e,t,i){}async remove(e,t,i){}async move(e,t,i,n,s){}async copy(e,t,i,n,s){}async put(e,t,i){}}});var lI=ae((cI,N5)=>{(function(r,e){typeof cI=="object"&&typeof N5<"u"?e(cI):typeof define=="function"&&define.amd?define(["exports"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.hashwasm={}))})(cI,(function(r){"use strict";var e="adler32",t="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAgUEAQECAgYOAn8BQYCJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEK6wkGBQBBgAkLCgBBAEEBNgKECAvjCAEHf0EAKAKECCIBQf//A3EhAiABQRB2IQMCQAJAIABBAUcNACACQQAtAIAJaiIBQY+AfGogASABQfD/A0sbIgEgA2oiBEEQdCIFQYCAPGogBSAEQfD/A0sbIAFyIQEMAQsCQAJAAkACQAJAIABBEEkNAEGACSEGIABBsCtJDQFBgAkhBgNAQQAhBQNAIAYgBWoiASgCACIEQf8BcSACaiICIANqIAIgBEEIdkH/AXFqIgJqIAIgBEEQdkH/AXFqIgJqIAIgBEEYdmoiAmogAiABQQRqKAIAIgRB/wFxaiICaiACIARBCHZB/wFxaiICaiACIARBEHZB/wFxaiICaiACIARBGHZqIgJqIAIgAUEIaigCACIEQf8BcWoiAmogAiAEQQh2Qf8BcWoiAmogAiAEQRB2Qf8BcWoiAmogAiAEQRh2aiIEaiAEIAFBDGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiAmohAyAFQRBqIgVBsCtHDQALIANB8f8DcCEDIAJB8f8DcCECIAZBsCtqIQYgAEHQVGoiAEGvK0sNAAsgAEUNBCAAQQ9LDQEMAgsCQCAARQ0AAkACQCAAQQNxIgUNAEGACSEBIAAhBAwBCyAAQXxxIQRBACEBA0AgAiABQYAJai0AAGoiAiADaiEDIAUgAUEBaiIBRw0ACyAFQYAJaiEBCyAAQQRJDQADQCACIAEtAABqIgUgAS0AAWoiBiABLQACaiIAIAFBA2otAABqIgIgACAGIAUgA2pqamohAyABQQRqIQEgBEF8aiIEDQALCyACQY+AfGogAiACQfD/A0sbIANB8f8DcEEQdHIhAQwECwNAIAYoAgAiAUH/AXEgAmoiBCADaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgRqIAQgBkEEaigCACIBQf8BcWoiBGogBCABQQh2Qf8BcWoiBGogBCABQRB2Qf8BcWoiBGogBCABQRh2aiIEaiAEIAZBCGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiBGogBCAGQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBkEQaiEGIABBcGoiAEEPSw0ACyAARQ0BCyAAQX9qIQcCQCAAQQNxIgVFDQAgAEF8cSEAIAUhBCAGIQEDQCACIAEtAABqIgIgA2ohAyABQQFqIQEgBEF/aiIEDQALIAYgBWohBgsgB0EDSQ0AA0AgAiAGLQAAaiIBIAYtAAFqIgQgBi0AAmoiBSAGQQNqLQAAaiICIAUgBCABIANqampqIQMgBkEEaiEGIABBfGoiAA0ACwsgA0Hx/wNwIQMgAkHx/wNwIQILIAIgA0EQdHIhAQtBACABNgKECAsxAQF/QQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwUAQYQICzsAQQBBATYChAggABACQQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwsVAgBBgAgLBAQAAAAAQYQICwQBAAAA",i="02ddbd17",n={name:e,data:t,hash:i};function s(S,O,M,Y){function ie(oe){return oe instanceof M?oe:new M(function(pe){pe(oe)})}return new(M||(M=Promise))(function(oe,pe){function Ce(ir){try{$t(Y.next(ir))}catch(fr){pe(fr)}}function Xe(ir){try{$t(Y.throw(ir))}catch(fr){pe(fr)}}function $t(ir){ir.done?oe(ir.value):ie(ir.value).then(Ce,Xe)}$t((Y=Y.apply(S,O||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;class a{constructor(){this.mutex=Promise.resolve()}lock(){let O=()=>{};return this.mutex=this.mutex.then(()=>new Promise(O)),new Promise(M=>{O=M})}dispatch(O){return s(this,void 0,void 0,function*(){let M=yield this.lock();try{return yield Promise.resolve(O())}finally{M()}})}}var o;function c(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global}let l=c(),d=(o=l.Buffer)!==null&&o!==void 0?o:null,u=l.TextEncoder?new l.TextEncoder:null;function f(S,O){return String.fromCharCode(...S.subarray(0,O))}function A(S,O){return(S&15)+(S>>6|S>>3&8)<<4|(O&15)+(O>>6|O>>3&8)}function g(S,O){let M=O.length>>1;for(let Y=0;Y<M;Y++){let ie=Y<<1;S[Y]=A(O.charCodeAt(ie),O.charCodeAt(ie+1))}}function p(S,O){if(S.length!==O.length*2)return!1;for(let M=0;M<O.length;M++){let Y=M<<1;if(O[M]!==A(S.charCodeAt(Y),S.charCodeAt(Y+1)))return!1}return!0}let I=87,m=48;function w(S,O,M){let Y=0;for(let ie=0;ie<M;ie++){let oe=O[ie]>>>4;S[Y++]=oe>9?oe+I:oe+m,oe=O[ie]&15,S[Y++]=oe>9?oe+I:oe+m}return String.fromCharCode.apply(null,S)}let B=d!==null?S=>{if(typeof S=="string"){let O=d.from(S,"utf8");return new Uint8Array(O.buffer,O.byteOffset,O.length)}if(d.isBuffer(S))return new Uint8Array(S.buffer,S.byteOffset,S.length);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")}:S=>{if(typeof S=="string")return u.encode(S);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")},C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",x=new Uint8Array(256);for(let S=0;S<C.length;S++)x[C.charCodeAt(S)]=S;function _(S,O=!0){let M=S.length,Y=M%3,ie=[],oe=M-Y;for(let pe=0;pe<oe;pe+=3){let Ce=(S[pe]<<16&16711680)+(S[pe+1]<<8&65280)+(S[pe+2]&255),Xe=C.charAt(Ce>>18&63)+C.charAt(Ce>>12&63)+C.charAt(Ce>>6&63)+C.charAt(Ce&63);ie.push(Xe)}if(Y===1){let pe=S[M-1],Ce=C.charAt(pe>>2),Xe=C.charAt(pe<<4&63);ie.push(`${Ce}${Xe}`),O&&ie.push("==")}else if(Y===2){let pe=(S[M-2]<<8)+S[M-1],Ce=C.charAt(pe>>10),Xe=C.charAt(pe>>4&63),$t=C.charAt(pe<<2&63);ie.push(`${Ce}${Xe}${$t}`),O&&ie.push("=")}return ie.join("")}function R(S){let O=Math.floor(S.length*.75),M=S.length;return S[M-1]==="="&&(O-=1,S[M-2]==="="&&(O-=1)),O}function U(S){let O=R(S),M=S.length,Y=new Uint8Array(O),ie=0;for(let oe=0;oe<M;oe+=4){let pe=x[S.charCodeAt(oe)],Ce=x[S.charCodeAt(oe+1)],Xe=x[S.charCodeAt(oe+2)],$t=x[S.charCodeAt(oe+3)];Y[ie]=pe<<2|Ce>>4,ie+=1,Y[ie]=(Ce&15)<<4|Xe>>2,ie+=1,Y[ie]=(Xe&3)<<6|$t&63,ie+=1}return Y}let T=16*1024,D=4,b=new a,Q=new Map;function v(S,O){return s(this,void 0,void 0,function*(){let M=null,Y=null,ie=!1;if(typeof WebAssembly>"u")throw new Error("WebAssembly is not supported in this environment!");let oe=(Ze,ft=0)=>{Y.set(Ze,ft)},pe=()=>Y,Ce=()=>M.exports,Xe=Ze=>{M.exports.Hash_SetMemorySize(Ze);let ft=M.exports.Hash_GetBuffer(),yi=M.exports.memory.buffer;Y=new Uint8Array(yi,ft,Ze)},$t=()=>new DataView(M.exports.memory.buffer).getUint32(M.exports.STATE_SIZE,!0),ir=b.dispatch(()=>s(this,void 0,void 0,function*(){if(!Q.has(S.name)){let ft=U(S.data),yi=WebAssembly.compile(ft);Q.set(S.name,yi)}let Ze=yield Q.get(S.name);M=yield WebAssembly.instantiate(Ze,{})})),fr=()=>s(this,void 0,void 0,function*(){M||(yield ir);let Ze=M.exports.Hash_GetBuffer(),ft=M.exports.memory.buffer;Y=new Uint8Array(ft,Ze,T)}),Vt=(Ze=null)=>{ie=!0,M.exports.Hash_Init(Ze)},hn=Ze=>{let ft=0;for(;ft<Ze.length;){let yi=Ze.subarray(ft,ft+T);ft+=yi.length,Y.set(yi),M.exports.Hash_Update(yi.length)}},ei=Ze=>{if(!ie)throw new Error("update() called before init()");let ft=B(Ze);hn(ft)},Rf=new Uint8Array(O*2),so=(Ze,ft=null)=>{if(!ie)throw new Error("digest() called before init()");return ie=!1,M.exports.Hash_Final(ft),Ze==="binary"?Y.slice(0,O):w(Rf,Y,O)},Mn=()=>{if(!ie)throw new Error("save() can only be called after init() and before digest()");let Ze=M.exports.Hash_GetState(),ft=$t(),yi=M.exports.memory.buffer,Nc=new Uint8Array(yi,Ze,ft),Nf=new Uint8Array(D+ft);return g(Nf,S.hash),Nf.set(Nc,D),Nf},ao=Ze=>{if(!(Ze instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");let ft=M.exports.Hash_GetState(),yi=$t(),Nc=D+yi,Nf=M.exports.memory.buffer;if(Ze.length!==Nc)throw new Error(`Bad state length (expected ${Nc} bytes, got ${Ze.length})`);if(!p(S.hash,Ze.subarray(0,D)))throw new Error("This state was written by an incompatible hash implementation");let _G=Ze.subarray(D);new Uint8Array(Nf,ft,yi).set(_G),ie=!0},wd=Ze=>typeof Ze=="string"?Ze.length<T/4:Ze.byteLength<T,ta=wd;switch(S.name){case"argon2":case"scrypt":ta=()=>!0;break;case"blake2b":case"blake2s":ta=(Ze,ft)=>ft<=512&&wd(Ze);break;case"blake3":ta=(Ze,ft)=>ft===0&&wd(Ze);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":ta=()=>!1;break}let oo=(Ze,ft=null,yi=null)=>{if(!ta(Ze,ft))return Vt(ft),ei(Ze),so("hex",yi);let Nc=B(Ze);return Y.set(Nc),M.exports.Hash_Calculate(Nc.length,ft,yi),w(Rf,Y,O)};return yield fr(),{getMemory:pe,writeMemory:oe,getExports:Ce,setMemorySize:Xe,init:Vt,update:ei,digest:so,save:Mn,load:ao,calculate:oo,hashLength:O}})}function E(S,O,M){return s(this,void 0,void 0,function*(){let Y=yield S.lock(),ie=yield v(O,M);return Y(),ie})}let P=new a,N=null;function j(S){if(N===null)return E(P,n,4).then(O=>(N=O,N.calculate(S)));try{let O=N.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function z(){return v(n,4).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:4,digestSize:4};return O})}var L="argon2",G="AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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",K="e4cdc523",$={name:L,data:G,hash:K},te="blake2b",re="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",ee="c6f286e6",Z={name:te,data:re,hash:ee};let ye=new a,de=null;function Ae(S){return!Number.isInteger(S)||S<8||S>512||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 512"):null}function De(S,O){return S|O<<16}function He(S,O=512,M=null){if(Ae(O))return Promise.reject(Ae(O));let Y=null,ie=O;if(M!==null){if(Y=B(M),Y.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));ie=De(O,Y.length)}let oe=O/8;if(de===null||de.hashLength!==oe)return E(ye,Z,oe).then(pe=>(de=pe,ie>512&&de.writeMemory(Y),de.calculate(S,ie)));try{ie>512&&de.writeMemory(Y);let pe=de.calculate(S,ie);return Promise.resolve(pe)}catch(pe){return Promise.reject(pe)}}function Ue(S=512,O=null){if(Ae(S))return Promise.reject(Ae(S));let M=null,Y=S;if(O!==null){if(M=B(O),M.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));Y=De(S,M.length)}let ie=S/8;return v(Z,ie).then(oe=>{Y>512&&oe.writeMemory(M),oe.init(Y);let pe={init:Y>512?()=>(oe.writeMemory(M),oe.init(Y),pe):()=>(oe.init(Y),pe),update:Ce=>(oe.update(Ce),pe),digest:Ce=>oe.digest(Ce),save:()=>oe.save(),load:Ce=>(oe.load(Ce),pe),blockSize:128,digestSize:ie};return pe})}function se(S,O,M){let Y=[`m=${O.memorySize}`,`t=${O.iterations}`,`p=${O.parallelism}`].join(",");return`$argon2${O.hashType}$v=19$${Y}$${_(S,!1)}$${_(M,!1)}`}let ut=new DataView(new ArrayBuffer(4));function ce(S){return ut.setInt32(0,S,!0),new Uint8Array(ut.buffer)}function wr(S,O,M){return s(this,void 0,void 0,function*(){if(M<=64){let Xe=yield Ue(M*8);return Xe.update(ce(M)),Xe.update(O),Xe.digest("binary")}let Y=Math.ceil(M/32)-2,ie=new Uint8Array(M);S.init(),S.update(ce(M)),S.update(O);let oe=S.digest("binary");ie.set(oe.subarray(0,32),0);for(let Xe=1;Xe<Y;Xe++)S.init(),S.update(oe),oe=S.digest("binary"),ie.set(oe.subarray(0,32),Xe*32);let pe=M-32*Y,Ce;return pe===64?(Ce=S,Ce.init()):Ce=yield Ue(pe*8),Ce.update(oe),oe=Ce.digest("binary"),ie.set(oe.subarray(0,pe),Y*32),ie})}function Wr(S){switch(S){case"d":return 0;case"i":return 1;default:return 2}}function mt(S){return s(this,void 0,void 0,function*(){var O;let{parallelism:M,iterations:Y,hashLength:ie}=S,oe=B(S.password),pe=B(S.salt),Ce=19,Xe=Wr(S.hashType),{memorySize:$t}=S,ir=B((O=S.secret)!==null&&O!==void 0?O:""),[fr,Vt]=yield Promise.all([v($,1024),Ue(512)]);fr.setMemorySize($t*1024+1024);let hn=new Uint8Array(24),ei=new DataView(hn.buffer);ei.setInt32(0,M,!0),ei.setInt32(4,ie,!0),ei.setInt32(8,$t,!0),ei.setInt32(12,Y,!0),ei.setInt32(16,Ce,!0),ei.setInt32(20,Xe,!0),fr.writeMemory(hn,$t*1024),Vt.init(),Vt.update(hn),Vt.update(ce(oe.length)),Vt.update(oe),Vt.update(ce(pe.length)),Vt.update(pe),Vt.update(ce(ir.length)),Vt.update(ir),Vt.update(ce(0));let so=Math.floor($t/(M*4))*4,Mn=new Uint8Array(72),ao=Vt.digest("binary");Mn.set(ao);for(let oo=0;oo<M;oo++){Mn.set(ce(0),64),Mn.set(ce(oo),68);let Ze=oo*so,ft=yield wr(Vt,Mn,1024);fr.writeMemory(ft,Ze*1024),Ze+=1,Mn.set(ce(1),64),ft=yield wr(Vt,Mn,1024),fr.writeMemory(ft,Ze*1024)}let wd=new Uint8Array(1024);g(wd,fr.calculate(new Uint8Array([]),$t));let ta=yield wr(Vt,wd,ie);if(S.outputType==="hex"){let oo=new Uint8Array(ie*2);return w(oo,ta,ie)}return S.outputType==="encoded"?se(pe,S,ta):ta})}let xe=S=>{var O;if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.password)throw new Error("Password must be specified");if(S.password=B(S.password),S.password.length<1)throw new Error("Password must be specified");if(!S.salt)throw new Error("Salt must be specified");if(S.salt=B(S.salt),S.salt.length<8)throw new Error("Salt should be at least 8 bytes long");if(S.secret=B((O=S.secret)!==null&&O!==void 0?O:""),!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<4)throw new Error("Hash length should be at least 4 bytes.");if(!Number.isInteger(S.memorySize))throw new Error("Memory size should be specified.");if(S.memorySize<8*S.parallelism)throw new Error("Memory size should be at least 8 * parallelism.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function be(S){return s(this,void 0,void 0,function*(){return xe(S),mt(Object.assign(Object.assign({},S),{hashType:"i"}))})}function cn(S){return s(this,void 0,void 0,function*(){return xe(S),mt(Object.assign(Object.assign({},S),{hashType:"id"}))})}function eo(S){return s(this,void 0,void 0,function*(){return xe(S),mt(Object.assign(Object.assign({},S),{hashType:"d"}))})}let Qe=(S,O,M)=>{let Y=/^\$argon2(id|i|d)\$v=([0-9]+)\$((?:[mtp]=[0-9]+,){2}[mtp]=[0-9]+)\$([A-Za-z0-9+/]+)\$([A-Za-z0-9+/]+)$/,ie=O.match(Y);if(!ie)throw new Error("Invalid hash");let[,oe,pe,Ce,Xe,$t]=ie;if(pe!=="19")throw new Error(`Unsupported version: ${pe}`);let ir={},fr={m:"memorySize",p:"parallelism",t:"iterations"};for(let Vt of Ce.split(",")){let[hn,ei]=Vt.split("=");ir[fr[hn]]=Number(ei)}return Object.assign(Object.assign({},ir),{password:S,secret:M,hashType:oe,salt:U(Xe),hashLength:R($t),outputType:"encoded"})},qt=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified")};function Ws(S){return s(this,void 0,void 0,function*(){qt(S);let O=Qe(S.password,S.hash,S.secret);xe(O);let M=S.hash.lastIndexOf("$")+1;return(yield mt(O)).substring(M)===S.hash.substring(M)})}var Be="blake2s",ln="AGFzbQEAAAABEQRgAAF/YAJ/fwBgAX8AYAAAAwkIAAECAwICAAEFBAEBAgIGDgJ/AUGgigULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAKSGFzaF9GaW5hbAADCUhhc2hfSW5pdAAEC0hhc2hfVXBkYXRlAAUNSGFzaF9HZXRTdGF0ZQAGDkhhc2hfQ2FsY3VsYXRlAAcKU1RBVEVfU0laRQMBCr4yCAUAQYAJC6gFAQZ/AkAgAUEBSA0AAkACQAJAIAFBwABBACgC8IkBIgJrIgNKDQAgASEDDAELQQBBADYC8IkBAkAgAkHAAEYNACACQbCJAWohBAJAAkAgA0EHcSIFDQAgACEGIAMhBwwBCyAFIQcgACEGA0AgBCAGLQAAOgAAIARBAWohBCAGQQFqIQYgB0F/aiIHDQALQcAAIAIgBWprIQcLIAJBR2pBB0kNAANAIAQgBi0AADoAACAEIAYtAAE6AAEgBCAGLQACOgACIAQgBi0AAzoAAyAEIAYtAAQ6AAQgBCAGLQAFOgAFIAQgBi0ABjoABiAEIAYtAAc6AAcgBEEIaiEEIAZBCGohBiAHQXhqIgcNAAsLQQAhBEEAQQAoAqCJASIGQcAAajYCoIkBQQBBACgCpIkBIAZBv39LajYCpIkBQbCJARACIAAgA2ohAAJAIAEgA2siA0HBAEgNACACIAFqIQQDQEEAQQAoAqCJASIGQcAAajYCoIkBQQBBACgCpIkBIAZBv39LajYCpIkBIAAQAiAAQcAAaiEAIAQiBkFAaiIEQYABSw0ACyAGQYB/aiEDQQAoAvCJASECDAELQQAoAvCJASECIANFDQELIANBf2ohASACQbCJAWohBAJAAkAgA0EHcSIGDQAgAyEHDAELIANBeHEhBwNAIAQgAC0AADoAACAEQQFqIQQgAEEBaiEAIAZBf2oiBg0ACwsCQCABQQdJDQADQCAEIAAtAAA6AAAgBCAALQABOgABIAQgAC0AAjoAAiAEIAAtAAM6AAMgBCAALQAEOgAEIAQgAC0ABToABSAEIAAtAAY6AAYgBCAALQAHOgAHIARBCGohBCAAQQhqIQAgB0F4aiIHDQALC0EAKALwiQEhAiADIQQLQQAgAiAEajYC8IkBCwuXJwoBfgF/An4CfwF+B38DfgZ/AX4Sf0EAQQApA5iJASIBpyICQQApA4iJASIDp2ogACkDECIEpyIFaiIGQQApA6iJAUKrs4/8kaOz8NsAhSIHp3NBEHciCEHy5rvjA2oiCSACc0EUdyIKIAZqIARCIIinIgJqIgsgCHNBGHciDCAJaiINIApzQRl3Ig5BACkDkIkBIgRCIIinIghBACkDgIkBIg9CIIinaiAAKQMIIhCnIgZqIglBACkDoIkBQv+kuYjFkdqCm3+FIhFCIIinc0EQdyISQYXdntt7aiITIAhzQRR3IhQgCWogEEIgiKciCGoiFWogACkDKCIQpyIJaiIWIASnIhcgD6dqIAApAwAiGKciCmoiGSARp3NBEHciGkHnzKfQBmoiGyAXc0EUdyIcIBlqIBhCIIinIhdqIh0gGnNBGHciHnNBEHciHyABQiCIpyIaIANCIIinaiAAKQMYIgGnIhlqIiAgB0IgiKdzQRB3IiFBuuq/qnpqIiIgGnNBFHciIyAgaiABQiCIpyIaaiIgICFzQRh3IiEgImoiImoiJCAOc0EUdyIlIBZqIBBCIIinIg5qIhYgH3NBGHciHyAkaiIkIBUgEnNBGHciFSATaiImIBRzQRl3IhMgHWogACkDICIBpyISaiIUICFzQRB3Ih0gDWoiISATc0EUdyInIBRqIAFCIIinIg1qIhQgHXNBGHciHSAiICNzQRl3IhMgC2ogACkDMCIBpyILaiIiIBVzQRB3IhUgHiAbaiIbaiIeIBNzQRR3IiMgImogAUIgiKciE2oiIiAVc0EYdyIVIB5qIh4gI3NBGXciIyAgIBsgHHNBGXciG2ogACkDOCIBpyIAaiIcIAxzQRB3IiAgJmoiJiAbc0EUdyIbIBxqIAFCIIinIgxqIhxqIBNqIihzQRB3IilqIiogI3NBFHciIyAoaiAZaiIoIB4gHyAcICBzQRh3IhwgJmoiICAbc0EZdyIbIBRqIABqIhRzQRB3Ih9qIh4gG3NBFHciGyAUaiAJaiIUIB9zQRh3Ih8gHmoiHiAbc0EZdyIbaiACaiImIB0gIWoiHSAcICQgJXNBGXciISAiaiANaiIic0EQdyIcaiIkICFzQRR3IiEgImogDGoiIiAcc0EYdyIcc0EQdyIlICAgFSAdICdzQRl3Ih0gFmogBWoiFnNBEHciFWoiICAdc0EUdyIdIBZqIBJqIhYgFXNBGHciFSAgaiIgaiInIBtzQRR3IhsgJmogCGoiJiAlc0EYdyIlICdqIicgKCApc0EYdyIoICpqIikgI3NBGXciIyAiaiAOaiIiIBVzQRB3IhUgHmoiHiAjc0EUdyIjICJqIBpqIiIgFXNBGHciFSAgIB1zQRl3Ih0gFGogF2oiFCAoc0EQdyIgIBwgJGoiHGoiJCAdc0EUdyIdIBRqIAtqIhQgIHNBGHciICAkaiIkIB1zQRl3Ih0gHCAhc0EZdyIcIBZqIApqIhYgH3NBEHciHyApaiIhIBxzQRR3IhwgFmogBmoiFmogC2oiKHNBEHciKWoiKiAdc0EUdyIdIChqIApqIiggKXNBGHciKSAqaiIqIB1zQRl3Ih0gFSAeaiIVIBYgH3NBGHciFiAnIBtzQRl3IhsgFGogDmoiFHNBEHciHmoiHyAbc0EUdyIbIBRqIBJqIhRqIAlqIicgFiAhaiIWICAgFSAjc0EZdyIVICZqIAxqIiFzQRB3IiBqIiMgFXNBFHciFSAhaiATaiIhICBzQRh3IiBzQRB3IiYgJCAlIBYgHHNBGXciFiAiaiACaiIcc0EQdyIiaiIkIBZzQRR3IhYgHGogBmoiHCAic0EYdyIiICRqIiRqIiUgHXNBFHciHSAnaiAAaiInICZzQRh3IiYgJWoiJSAhIBQgHnNBGHciFCAfaiIeIBtzQRl3IhtqIA1qIh8gInNBEHciISAqaiIiIBtzQRR3IhsgH2ogBWoiHyAhc0EYdyIhICQgFnNBGXciFiAoaiAIaiIkIBRzQRB3IhQgICAjaiIgaiIjIBZzQRR3IhYgJGogGWoiJCAUc0EYdyIUICNqIiMgFnNBGXciFiAgIBVzQRl3IhUgHGogGmoiHCApc0EQdyIgIB5qIh4gFXNBFHciFSAcaiAXaiIcaiATaiIoc0EQdyIpaiIqIBZzQRR3IhYgKGogC2oiKCApc0EYdyIpICpqIiogFnNBGXciFiAhICJqIiEgHCAgc0EYdyIcICUgHXNBGXciHSAkaiAIaiIgc0EQdyIiaiIkIB1zQRR3Ih0gIGogF2oiIGogAmoiJSAcIB5qIhwgFCAhIBtzQRl3IhsgJ2ogGmoiHnNBEHciFGoiISAbc0EUdyIbIB5qIA1qIh4gFHNBGHciFHNBEHciJyAjICYgHCAVc0EZdyIVIB9qIA5qIhxzQRB3Ih9qIiMgFXNBFHciFSAcaiAAaiIcIB9zQRh3Ih8gI2oiI2oiJiAWc0EUdyIWICVqIAlqIiUgJ3NBGHciJyAmaiImICAgInNBGHciICAkaiIiIB1zQRl3Ih0gHmogBmoiHiAfc0EQdyIfICpqIiQgHXNBFHciHSAeaiAZaiIeIB9zQRh3Ih8gIyAVc0EZdyIVIChqIAVqIiMgIHNBEHciICAUICFqIhRqIiEgFXNBFHciFSAjaiAKaiIjICBzQRh3IiAgIWoiISAVc0EZdyIVIBwgFCAbc0EZdyIUaiAMaiIbIClzQRB3IhwgImoiIiAUc0EUdyIUIBtqIBJqIhtqIAlqIihzQRB3IilqIiogFXNBFHciFSAoaiAMaiIoICEgJyAbIBxzQRh3IhsgImoiHCAUc0EZdyIUIB5qIA1qIh5zQRB3IiJqIiEgFHNBFHciFCAeaiAKaiIeICJzQRh3IiIgIWoiISAUc0EZdyIUaiAIaiInIB8gJGoiHyAbICYgFnNBGXciFiAjaiAGaiIjc0EQdyIbaiIkIBZzQRR3IhYgI2ogBWoiIyAbc0EYdyIbc0EQdyImIBwgICAfIB1zQRl3Ih0gJWogAmoiH3NBEHciIGoiHCAdc0EUdyIdIB9qIBpqIh8gIHNBGHciICAcaiIcaiIlIBRzQRR3IhQgJ2ogE2oiJyAmc0EYdyImICVqIiUgKCApc0EYdyIoICpqIikgFXNBGXciFSAjaiAZaiIjICBzQRB3IiAgIWoiISAVc0EUdyIVICNqIBJqIiMgIHNBGHciICAcIB1zQRl3IhwgHmogAGoiHSAoc0EQdyIeIBsgJGoiG2oiJCAcc0EUdyIcIB1qIBdqIh0gHnNBGHciHiAkaiIkIBxzQRl3IhwgGyAWc0EZdyIWIB9qIA5qIhsgInNBEHciHyApaiIiIBZzQRR3IhYgG2ogC2oiG2ogGWoiKHNBEHciKWoiKiAcc0EUdyIcIChqIAlqIiggKXNBGHciKSAqaiIqIBxzQRl3IhwgICAhaiIgIBsgH3NBGHciGyAlIBRzQRl3IhQgHWogBmoiHXNBEHciH2oiISAUc0EUdyIUIB1qIAtqIh1qIAVqIiUgGyAiaiIbIB4gICAVc0EZdyIVICdqIBJqIiBzQRB3Ih5qIiIgFXNBFHciFSAgaiAIaiIgIB5zQRh3Ih5zQRB3IicgJCAmIBsgFnNBGXciFiAjaiAKaiIbc0EQdyIjaiIkIBZzQRR3IhYgG2ogDmoiGyAjc0EYdyIjICRqIiRqIiYgHHNBFHciHCAlaiATaiIlICdzQRh3IicgJmoiJiAgIB0gH3NBGHciHSAhaiIfIBRzQRl3IhRqIBdqIiAgI3NBEHciISAqaiIjIBRzQRR3IhQgIGogDWoiICAhc0EYdyIhICQgFnNBGXciFiAoaiAaaiIkIB1zQRB3Ih0gHiAiaiIeaiIiIBZzQRR3IhYgJGogAmoiJCAdc0EYdyIdICJqIiIgFnNBGXciFiAeIBVzQRl3IhUgG2ogDGoiGyApc0EQdyIeIB9qIh8gFXNBFHciFSAbaiAAaiIbaiAAaiIoc0EQdyIpaiIqIBZzQRR3IhYgKGogE2oiKCApc0EYdyIpICpqIiogFnNBGXciFiAhICNqIiEgGyAec0EYdyIbICYgHHNBGXciHCAkaiAXaiIec0EQdyIjaiIkIBxzQRR3IhwgHmogDGoiHmogGWoiJiAbIB9qIhsgHSAhIBRzQRl3IhQgJWogC2oiH3NBEHciHWoiISAUc0EUdyIUIB9qIAJqIh8gHXNBGHciHXNBEHciJSAiICcgGyAVc0EZdyIVICBqIAVqIhtzQRB3IiBqIiIgFXNBFHciFSAbaiAJaiIbICBzQRh3IiAgImoiImoiJyAWc0EUdyIWICZqIAhqIiYgJXNBGHciJSAnaiInIB4gI3NBGHciHiAkaiIjIBxzQRl3IhwgH2ogCmoiHyAgc0EQdyIgICpqIiQgHHNBFHciHCAfaiAaaiIfICBzQRh3IiAgIiAVc0EZdyIVIChqIA1qIiIgHnNBEHciHiAdICFqIh1qIiEgFXNBFHciFSAiaiAGaiIiIB5zQRh3Ih4gIWoiISAVc0EZdyIVIBsgHSAUc0EZdyIUaiASaiIbIClzQRB3Ih0gI2oiIyAUc0EUdyIUIBtqIA5qIhtqIAhqIihzQRB3IilqIiogFXNBFHciFSAoaiANaiIoICEgJSAbIB1zQRh3IhsgI2oiHSAUc0EZdyIUIB9qIBNqIh9zQRB3IiNqIiEgFHNBFHciFCAfaiAOaiIfICNzQRh3IiMgIWoiISAUc0EZdyIUaiAGaiIlICAgJGoiICAbICcgFnNBGXciFiAiaiALaiIic0EQdyIbaiIkIBZzQRR3IhYgImogF2oiIiAbc0EYdyIbc0EQdyInIB0gHiAgIBxzQRl3IhwgJmogGmoiIHNBEHciHmoiHSAcc0EUdyIcICBqIABqIiAgHnNBGHciHiAdaiIdaiImIBRzQRR3IhQgJWogCWoiJSAnc0EYdyInICZqIiYgKCApc0EYdyIoICpqIikgFXNBGXciFSAiaiASaiIiIB5zQRB3Ih4gIWoiISAVc0EUdyIVICJqIBlqIiIgHnNBGHciHiAdIBxzQRl3IhwgH2ogAmoiHSAoc0EQdyIfIBsgJGoiG2oiJCAcc0EUdyIcIB1qIApqIh0gH3NBGHciHyAkaiIkIBxzQRl3IhwgGyAWc0EZdyIWICBqIAxqIhsgI3NBEHciICApaiIjIBZzQRR3IhYgG2ogBWoiG2ogAGoiKHNBEHciKWoiKiAcc0EUdyIcIChqIA1qIiggKXNBGHciKSAqaiIqIBxzQRl3IhwgHiAhaiIeIBsgIHNBGHciGyAmIBRzQRl3IhQgHWogGWoiHXNBEHciIGoiISAUc0EUdyIUIB1qIAxqIh1qIAtqIiYgGyAjaiIbIB8gHiAVc0EZdyIVICVqIApqIh5zQRB3Ih9qIiMgFXNBFHciFSAeaiASaiIeIB9zQRh3Ih9zQRB3IiUgJCAnIBsgFnNBGXciFiAiaiAOaiIbc0EQdyIiaiIkIBZzQRR3IhYgG2ogCGoiGyAic0EYdyIiICRqIiRqIicgHHNBFHciHCAmaiAGaiImICVzQRh3IiUgJ2oiJyAeIB0gIHNBGHciHSAhaiIgIBRzQRl3IhRqIAlqIh4gInNBEHciISAqaiIiIBRzQRR3IhQgHmogAmoiHiAhc0EYdyIhICQgFnNBGXciFiAoaiATaiIkIB1zQRB3Ih0gHyAjaiIfaiIjIBZzQRR3IhYgJGogGmoiJCAdc0EYdyIdICNqIiMgFnNBGXciFiAfIBVzQRl3IhUgG2ogF2oiGyApc0EQdyIfICBqIiAgFXNBFHciFSAbaiAFaiIbaiAaaiIac0EQdyIoaiIpIBZzQRR3IhYgGmogGWoiGSAoc0EYdyIaIClqIiggFnNBGXciFiAhICJqIiEgGyAfc0EYdyIbICcgHHNBGXciHCAkaiASaiISc0EQdyIfaiIiIBxzQRR3IhwgEmogBWoiBWogDWoiEiAbICBqIg0gHSAhIBRzQRl3IhQgJmogCWoiCXNBEHciG2oiHSAUc0EUdyIUIAlqIAZqIgYgG3NBGHciCXNBEHciGyAjICUgDSAVc0EZdyINIB5qIBdqIhdzQRB3IhVqIh4gDXNBFHciDSAXaiACaiICIBVzQRh3IhcgHmoiFWoiHiAWc0EUdyIWIBJqIABqIhKtQiCGIAUgH3NBGHciBSAiaiIAIBxzQRl3IhwgBmogDGoiBiAXc0EQdyIXIChqIgwgHHNBFHciHCAGaiAOaiIGrYQgD4UgAiAJIB1qIgkgFHNBGXciDmogE2oiAiAac0EQdyIaIABqIhMgDnNBFHciDiACaiAKaiICIBpzQRh3IgogE2oiGq1CIIYgFSANc0EZdyINIBlqIAhqIgggBXNBEHciBSAJaiIJIA1zQRR3IhkgCGogC2oiCCAFc0EYdyIFIAlqIgmthIU3A4CJAUEAIAMgAq1CIIYgCK2EhSASIBtzQRh3IgIgHmoiCK1CIIYgBiAXc0EYdyIGIAxqIhethIU3A4iJAUEAIAQgFyAcc0EZd61CIIYgGiAOc0EZd62EhSAFrUIghiACrYSFNwOQiQFBACAJIBlzQRl3rUIghiAIIBZzQRl3rYRBACkDmIkBhSAGrUIghiAKrYSFNwOYiQELnQIBBH8jAEEgayIAJAACQEEAKAKoiQENAEEAQQAoAqCJASIBQQAoAvCJASICaiIDNgKgiQFBAEEAKAKkiQEgAyABSWo2AqSJAQJAQQAtAPiJAUUNAEEAQX82AqyJAQtBAEF/NgKoiQECQCACQT9KDQBBACEBA0AgAiABakGwiQFqQQA6AAAgAUEBaiIBQcAAQQAoAvCJASICa0gNAAsLQbCJARACIABBACkDgIkBNwMAIABBACkDiIkBNwMIIABBACkDkIkBNwMQIABBACkDmIkBNwMYQQAoAvSJASIDQQFIDQBBACEBQQAhAgNAIAFBgAlqIAAgAWotAAA6AAAgAUEBaiEBIAMgAkEBaiICQf8BcUoNAAsLIABBIGokAAuyAwEEfyMAQcAAayIBJABBAEGBAjsBgooBQQAgAEEQdiICOgCBigFBACAAQQN2OgCAigFBiH8hAwJAA0AgA0H4iQFqQQA2AgAgA0UNASADQfyJAWpBADYCACADQQhqIQMMAAsLQQAhA0EAQQAoAoCKASIEQefMp9AGczYCgIkBQQBBACgChIoBQYXdntt7czYChIkBQQBBACgCiIoBQfLmu+MDczYCiIkBQQBBACgCjIoBQbrqv6p6czYCjIkBQQBBACgCkIoBQf+kuYgFczYCkIkBQQBBACgClIoBQYzRldh5czYClIkBQQBBACgCmIoBQauzj/wBczYCmIkBQQAgBEH/AXE2AvSJAUEAQQAoApyKAUGZmoPfBXM2ApyJAQJAIABBgIAESQ0AIAFBOGpCADcDACABQTBqQgA3AwAgAUEoakIANwMAIAFBIGpCADcDACABQRhqQgA3AwAgAUEQakIANwMAIAFCADcDCCABQgA3AwBBACEAA0AgASADaiADQYAJai0AADoAACADQQFqIQMgAiAAQQFqIgBB/wFxSw0ACyABQcAAEAELIAFBwABqJAALCQBBgAkgABABCwYAQYCJAQsPACABEARBgAkgABABEAMLCwsBAEGACAsEfAAAAA==",mi="5c0ff166",_r={name:Be,data:ln,hash:mi};let ur=new a,xr=null;function Pe(S){return!Number.isInteger(S)||S<8||S>256||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 256"):null}function Se(S,O){return S|O<<16}function pd(S,O=256,M=null){if(Pe(O))return Promise.reject(Pe(O));let Y=null,ie=O;if(M!==null){if(Y=B(M),Y.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));ie=Se(O,Y.length)}let oe=O/8;if(xr===null||xr.hashLength!==oe)return E(ur,_r,oe).then(pe=>(xr=pe,ie>512&&xr.writeMemory(Y),xr.calculate(S,ie)));try{ie>512&&xr.writeMemory(Y);let pe=xr.calculate(S,ie);return Promise.resolve(pe)}catch(pe){return Promise.reject(pe)}}function ki(S=256,O=null){if(Pe(S))return Promise.reject(Pe(S));let M=null,Y=S;if(O!==null){if(M=B(O),M.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));Y=Se(S,M.length)}let ie=S/8;return v(_r,ie).then(oe=>{Y>512&&oe.writeMemory(M),oe.init(Y);let pe={init:Y>512?()=>(oe.writeMemory(M),oe.init(Y),pe):()=>(oe.init(Y),pe),update:Ce=>(oe.update(Ce),pe),digest:Ce=>oe.digest(Ce),save:()=>oe.save(),load:Ce=>(oe.load(Ce),pe),blockSize:64,digestSize:ie};return pe})}var Xr="blake3",cs="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IQEgAkFAaiICQcAASw0ACwsCQEHAACAHQf8BcSIGayIFIAIgBSACSRsiCUUNACAJQQNxIQtBACEFAkAgCUEESQ0AIAAgBmohByAJQfwAcSEIQQAhBQNAIAcgBWoiAkEoaiABIAVqIgotAAA6AAAgAkEpaiAKQQFqLQAAOgAAIAJBKmogCkECai0AADoAACACQStqIApBA2otAAA6AAAgCCAFQQRqIgVHDQALCwJAIAtFDQAgASAFaiEBIAUgBmogAGpBKGohBQNAIAUgAS0AADoAACABQQFqIQEgBUEBaiEFIAtBf2oiCw0ACwsgAC0AaCEHCyAAIAcgCWo6AGggA0HAAGokAAveAwQFfwN+BX8GfiMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NAEEALQCKigFBBHIhBCABQShqIQVBACkDmIkBIQBBACkDkIkBIQZBACkDiIkBIQdBACkDgIkBIQggAyEJA0AgASAANwMYIAEgBjcDECABIAc3AwggASAINwMAIAEgA0EFdCIDQdGJAWoiCikDADcDKCABIANB2YkBaiILKQMANwMwIAEgA0HhiQFqIgwpAwA3AzggASADQemJAWoiDSkDADcDQCABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCADQYmKAWopAwAhDiABQcAAOgBoIAEgDjcDYCABQgA3AyAgASAEOgBpIAEgADcDiAEgASAGNwOAASABIAc3A3ggASAINwNwIAFBkAFqIAFB8ABqIAVBwABCACAEQf8BcRACIAEpA7ABIQ4gASkDkAEhDyABKQO4ASEQIAEpA5gBIREgASkDwAEhEiABKQOgASETIA0gASkDyAEgASkDqAGFNwMAIAwgEiAThTcDACALIBAgEYU3AwAgCiAOIA+FNwMAIAlBf2oiCUH/AXEiAyACSw0AC0EAIAk6AJCKAQsgAUHQAWokAAvHCQIKfwV+IwBB4AJrIgUkAAJAAkAgAUGACEsNACAFIAA2AvwBIAVB/AFqIAFBgAhGIgZBECACQQEgA0EBQQIgBBABIAZBCnQiByABTw0BIAVB4ABqIgZCADcDACAFQdgAaiIIQgA3AwAgBUHQAGoiCUIANwMAIAVByABqIgpCADcDACAFQcAAaiILQgA3AwAgBUE4aiIMQgA3AwAgBUEwaiINQgA3AwAgBSADOgBqIAVCADcDKCAFQQA7AWggBUEAKQOAiQE3AwAgBUEAKQOIiQE3AwggBUEAKQOQiQE3AxAgBUEAKQOYiQE3AxggBSABQYAIRiIOrSACfDcDICAFIAAgB2pBACABIA4bEAQgBUGIAWpBMGogDSkDADcDACAFQYgBakE4aiAMKQMANwMAIAUgBSkDACIPNwOIASAFIAUpAwgiEDcDkAEgBSAFKQMQIhE3A5gBIAUgBSkDGCISNwOgASAFIAUpAyg3A7ABIAUtAGohACAFLQBpIQcgBSkDICECIAUtAGghASAFQYgBakHAAGogCykDADcDACAFQYgBakHIAGogCikDADcDACAFQYgBakHQAGogCSkDADcDACAFQYgBakHYAGogCCkDADcDACAFQYgBakHgAGogBikDADcDACAFIAE6APABIAUgAjcDqAEgBSAAIAdFckECciIAOgDxASAFIBI3A5gCIAUgETcDkAIgBSAQNwOIAiAFIA83A4ACIAVBoAJqIAVBgAJqIAVBsAFqIAEgAiAAQf8BcRACIAUpA8ACIQIgBSkDoAIhDyAFKQPIAiEQIAUpA6gCIREgBSkD0AIhEiAFKQOwAiETIAQgDkEFdGoiASAFKQPYAiAFKQO4AoU3AxggASASIBOFNwMQIAEgECARhTcDCCABIAIgD4U3AwBBAkEBIA4bIQYMAQsgAEIBIAFBf2pBCnZBAXKteUI/hYYiD6dBCnQiDiACIAMgBRAGIQcgACAOaiABIA5rIA9C////AYMgAnwgAyAFQcAAQSAgDkGACEsbahAGIQECQCAHQQFHDQAgBCAFKQMANwMAIAQgBSkDCDcDCCAEIAUpAxA3AxAgBCAFKQMYNwMYIAQgBSkDIDcDICAEIAUpAyg3AyggBCAFKQMwNwMwIAQgBSkDODcDOEECIQYMAQtBACEGQQAhAAJAIAEgB2oiCUECSQ0AIAlBfmoiCkEBdkEBaiIGQQNxIQ5BACEHAkAgCkEGSQ0AIAZB/P///wdxIQhBACEHIAVBiAFqIQEgBSEAA0AgASAANgIAIAFBDGogAEHAAWo2AgAgAUEIaiAAQYABajYCACABQQRqIABBwABqNgIAIABBgAJqIQAgAUEQaiEBIAggB0EEaiIHRw0ACwsgCkF+cSEIAkAgDkUNACAFIAdBBnRqIQEgBUGIAWogB0ECdGohAANAIAAgATYCACABQcAAaiEBIABBBGohACAOQX9qIg4NAAsLIAhBAmohAAsgBUGIAWogBkEBQgBBACADQQRyQQBBACAEEAEgACAJTw0AIAQgBkEFdGoiASAFIAZBBnRqIgApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggBkEBaiEGCyAFQeACaiQAIAYLrRAIAn8EfgF/AX4EfwR+BH8EfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyIgJBAnI6AGkgAUEoaiEKQgAhCEGACSELIAJBCnJB/wFxIQwDQCABQbABaiABIAogCUH/AXEgCCAMEAIgASABKQPQASINIAEpA7ABhTcDcCABIAEpA9gBIg4gASkDuAGFNwN4IAEgASkD4AEiDyABKQPAAYU3A4ABIAEgASkD6AEiECAGhTcDqAEgASAPIAWFNwOgASABIA4gBIU3A5gBIAEgDSADhTcDkAEgASAQIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQAMAgsLAkACQAJAQQAtAImKASIHQQZ0QQBBAC0AiIoBIhFrRg0AIAEgEToAaCABQQApA4CKATcDYCABQQApA/iJATcDWCABQQApA/CJATcDUCABQQApA+iJATcDSCABQQApA+CJATcDQCABQQApA9iJATcDOCABQQApA9CJATcDMCABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIgM3AxggAUEAKQOwiQEiBDcDECABQQApA6iJASIFNwMIIAFBACkDoIkBIgY3AwAgAUEALQCKigEiEyAHRXJBAnIiCzoAaSATQQRyIRNBACkDmIkBIQ1BACkDkIkBIQ5BACkDiIkBIQ9BACkDgIkBIRAMAQtBwAAhESABQcAAOgBoQgAhCCABQgA3AyAgAUEAKQOYiQEiDTcDGCABQQApA5CJASIONwMQIAFBACkDiIkBIg83AwggAUEAKQOAiQEiEDcDACABQQAtAIqKAUEEciITOgBpIAEgAkF+aiICQQV0IgdByYoBaikDADcDYCABIAdBwYoBaikDADcDWCABIAdBuYoBaikDADcDUCABIAdBsYoBaikDADcDSCABIAdBqYoBaikDADcDQCABIAdBoYoBaikDADcDOCABIAdBmYoBaikDADcDMCABIAdBkYoBaikDADcDKCATIQsgECEGIA8hBSAOIQQgDSEDIAJFDQELIAJBf2oiB0EFdCIUQZGKAWopAwAhFSAUQZmKAWopAwAhFiAUQaGKAWopAwAhFyAUQamKAWopAwAhGCABIAM3A4gBIAEgBDcDgAEgASAFNwN4IAEgBjcDcCABQbABaiABQfAAaiABQShqIhQgESAIIAtB/wFxEAIgASATOgBpIAFBwAA6AGggASAYNwNAIAEgFzcDOCABIBY3AzAgASAVNwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggB0UNACACQQV0QemJAWohAiATQf8BcSERA0AgAkFoaikDACEIIAJBcGopAwAhAyACQXhqKQMAIQQgAikDACEFIAEgDTcDiAEgASAONwOAASABIA83A3ggASAQNwNwIAFBsAFqIAFB8ABqIBRBwABCACAREAIgASATOgBpIAFBwAA6AGggASAFNwNAIAEgBDcDOCABIAM3AzAgASAINwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAkFgaiECIAdBf2oiBw0ACwsgAUEoaiEJQgAhCEGACSELIBNBCHJB/wFxIQoDQCABQbABaiABIAlBwAAgCCAKEAIgASABKQPQASIDIAEpA7ABhTcDcCABIAEpA9gBIgQgASkDuAGFNwN4IAEgASkD4AEiBSABKQPAAYU3A4ABIAEgDSABKQPoASIGhTcDqAEgASAOIAWFNwOgASABIA8gBIU3A5gBIAEgECADhTcDkAEgASAGIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABADCwYAIAAQBwsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAMgAhAHCwsLAQBBgAgLBHgHAAA=",Nn="215d875f",je={name:Xr,data:cs,hash:Nn};let Rc=new a,dn=null;function to(S){return!Number.isInteger(S)||S<8||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..."):null}function Wi(S,O=256,M=null){if(to(O))return Promise.reject(to(O));let Y=null,ie=0;if(M!==null){if(Y=B(M),Y.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));ie=32}let oe=O/8,pe=oe;if(dn===null||dn.hashLength!==oe)return E(Rc,je,oe).then(Ce=>(dn=Ce,ie===32&&dn.writeMemory(Y),dn.calculate(S,ie,pe)));try{ie===32&&dn.writeMemory(Y);let Ce=dn.calculate(S,ie,pe);return Promise.resolve(Ce)}catch(Ce){return Promise.reject(Ce)}}function h(S=256,O=null){if(to(S))return Promise.reject(to(S));let M=null,Y=0;if(O!==null){if(M=B(O),M.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));Y=32}let ie=S/8,oe=ie;return v(je,ie).then(pe=>{Y===32&&pe.writeMemory(M),pe.init(Y);let Ce={init:Y===32?()=>(pe.writeMemory(M),pe.init(Y),Ce):()=>(pe.init(Y),Ce),update:Xe=>(pe.update(Xe),Ce),digest:Xe=>pe.digest(Xe,oe),save:()=>pe.save(),load:Xe=>(pe.load(Xe),Ce),blockSize:64,digestSize:ie};return Ce})}var k="crc32",q="AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwUEAQECAgYOAn8BQZDJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAgtIYXNoX1VwZGF0ZQADCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKkggHBQBBgAkLwwMBA39BgIkBIQFBACECA0AgAUEAQQBBAEEAQQBBAEEAQQAgAkEBcWsgAHEgAkEBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnM2AgAgAUEEaiEBIAJBAWoiAkGAAkcNAAtBACEAA0AgAEGEkQFqIABBhIkBaigCACICQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEmQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYShAWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhKkBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEsQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYS5AWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhMEBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzNgIAIABBBGoiAEH8B0cNAAsLJwACQEEAKAKAyQEgAEYNACAAEAFBACAANgKAyQELQQBBADYChMkBC4gDAQN/QQAoAoTJAUF/cyEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAJBBGooAgAiA0EOdkH8B3FBgJEBaigCACADQRZ2QfwHcUGAiQFqKAIAcyADQQZ2QfwHcUGAmQFqKAIAcyADQf8BcUECdEGAoQFqKAIAcyACKAIAIAFzIgFBFnZB/AdxQYCpAWooAgBzIAFBDnZB/AdxQYCxAWooAgBzIAFBBnZB/AdxQYC5AWooAgBzIAFB/wFxQQJ0QYDBAWooAgBzIQEgAkEIaiECIABBeGoiAEEHSw0ACwsCQCAARQ0AAkACQCAAQQFxDQAgACEDDAELIAFB/wFxIAItAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQFqIQIgAEF/aiEDCyAAQQFGDQADQCABQf8BcSACLQAAc0ECdEGAiQFqKAIAIAFBCHZzIgFB/wFxIAJBAWotAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQJqIQIgA0F+aiIDDQALC0EAIAFBf3M2AoTJAQsyAQF/QQBBACgChMkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgKACQsGAEGEyQELWQACQEEAKAKAyQEgAUYNACABEAFBACABNgKAyQELQQBBADYChMkBIAAQA0EAQQAoAoTJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCgAkLCwsBAEGACAsEBAAAAA==",V="d2eba587",H={name:k,data:q,hash:V};let W=new a,fe=null;function Me(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Polynomial must be a valid 32-bit long unsigned integer"):null}function it(S,O=3988292384){if(Me(O))return Promise.reject(Me(O));if(fe===null)return E(W,H,4).then(M=>(fe=M,fe.calculate(S,O)));try{let M=fe.calculate(S,O);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function we(S=3988292384){return Me(S)?Promise.reject(Me(S)):v(H,4).then(O=>{O.init(S);let M={init:()=>(O.init(S),M),update:Y=>(O.update(Y),M),digest:Y=>O.digest(Y),save:()=>O.save(),load:Y=>(O.load(Y),M),blockSize:4,digestSize:4};return M})}var Re="crc64",On="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAQUEAQECAgYOAn8BQZCJBgt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEKgwgGBQBBgAkL9QMDAX4BfwJ+AkBBACkDgIkCQQApA4AJIgBRDQBBgIkBIQFCACECA0AgAUIAQgBCAEIAQgBCAEIAQgAgAkIBg30gAIMgAkIBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIU3AwAgAUEIaiEBIAJCAXwiAkKAAlINAAtBACEBA0AgAUGImQFqIAFBiIkBaikDACICp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiKkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiLkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiMkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiNkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiOkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiPkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhTcDACABQQhqIgFB+A9HDQALQQAgADcDgIkCC0EAQgA3A4iJAguUAwIBfgJ/QQApA4iJAkJ/hSEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAIpAwAgAYUiAUIwiKdB/wFxQQN0QYCZAWopAwAgAUI4iKdBA3RBgIkBaikDAIUgAUIoiKdB/wFxQQN0QYCpAWopAwCFIAFCIIinQf8BcUEDdEGAuQFqKQMAhSABpyIDQRV2QfgPcUGAyQFqKQMAhSADQQ12QfgPcUGA2QFqKQMAhSADQQV2QfgPcUGA6QFqKQMAhSADQf8BcUEDdEGA+QFqKQMAhSEBIAJBCGohAiAAQXhqIgBBB0sNAAsLAkAgAEUNAAJAAkAgAEEBcQ0AIAAhAwwBCyABQv8BgyACMQAAhadBA3RBgIkBaikDACABQgiIhSEBIAJBAWohAiAAQX9qIQMLIABBAUYNAANAIAFC/wGDIAIxAACFp0EDdEGAiQFqKQMAIAFCCIiFIgFC/wGDIAJBAWoxAACFp0EDdEGAiQFqKQMAIAFCCIiFIQEgAkECaiECIANBfmoiAw0ACwtBACABQn+FNwOIiQILZAEBfkEAQQApA4iJAiIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOACQsGAEGIiQILAgALCwsBAEGACAsECAAAAA==",Xs="c5ac6c16",Zs={name:Re,data:On,hash:Xs};let ea=new a,un=null,ls=new Uint8Array(8);function H0(S){let O="Polynomial must be provided as a 16 char long hex string";if(typeof S!="string"||S.length!==16)return{hi:0,lo:0,err:new Error(O)};let M=+`0x${S.slice(0,8)}`,Y=+`0x${S.slice(8)}`;return Number.isNaN(M)||Number.isNaN(Y)?{hi:M,lo:Y,err:new Error(O)}:{hi:M,lo:Y,err:null}}function Pf(S,O,M){let Y=new DataView(S);Y.setUint32(0,O,!0),Y.setUint32(4,M,!0)}function HC(S,O="c96c5795d7870f42"){let{hi:M,lo:Y,err:ie}=H0(O);if(ie!==null)return Promise.reject(ie);if(un===null)return E(ea,Zs,8).then(oe=>(un=oe,Pf(ls.buffer,Y,M),un.writeMemory(ls),un.calculate(S)));try{Pf(ls.buffer,Y,M),un.writeMemory(ls);let oe=un.calculate(S);return Promise.resolve(oe)}catch(oe){return Promise.reject(oe)}}function KC(S="c96c5795d7870f42"){let{hi:O,lo:M,err:Y}=H0(S);return Y!==null?Promise.reject(Y):v(Zs,8).then(ie=>{let oe=new Uint8Array(8);Pf(oe.buffer,M,O),ie.writeMemory(oe),ie.init();let pe={init:()=>(ie.writeMemory(oe),ie.init(),pe),update:Ce=>(ie.update(Ce),pe),digest:Ce=>ie.digest(Ce),save:()=>ie.save(),load:Ce=>(ie.load(Ce),pe),blockSize:8,digestSize:8};return pe})}var ge="md4",ct="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",Zr="bd8ce7c7",qn={name:ge,data:ct,hash:Zr};let GC=new a,K0=null;function UH(S){if(K0===null)return E(GC,qn,16).then(O=>(K0=O,K0.calculate(S)));try{let O=K0.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function RH(){return v(qn,16).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:16};return O})}var NH="md5",OH="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",qH="e6508e4b",IS={name:NH,data:OH,hash:qH};let MH=new a,G0=null;function LH(S){if(G0===null)return E(MH,IS,16).then(O=>(G0=O,G0.calculate(S)));try{let O=G0.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function HH(){return v(IS,16).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:16};return O})}var KH="sha1",GH="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",zH="6b530c24",wS={name:KH,data:GH,hash:zH};let JH=new a,z0=null;function jH(S){if(z0===null)return E(JH,wS,20).then(O=>(z0=O,z0.calculate(S)));try{let O=z0.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function $H(){return v(wS,20).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:20};return O})}var VH="sha3",YH="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",WH="fb24e536",J0={name:VH,data:YH,hash:WH};let XH=new a,Tf=null;function j0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function ZH(S,O=512){if(j0(O))return Promise.reject(j0(O));let M=O/8;if(Tf===null||Tf.hashLength!==M)return E(XH,J0,M).then(Y=>(Tf=Y,Tf.calculate(S,O,6)));try{let Y=Tf.calculate(S,O,6);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function eK(S=512){if(j0(S))return Promise.reject(j0(S));let O=S/8;return v(J0,O).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,6),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*O,digestSize:O};return Y})}let tK=new a,Uf=null;function $0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function rK(S,O=512){if($0(O))return Promise.reject($0(O));let M=O/8;if(Uf===null||Uf.hashLength!==M)return E(tK,J0,M).then(Y=>(Uf=Y,Uf.calculate(S,O,1)));try{let Y=Uf.calculate(S,O,1);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function iK(S=512){if($0(S))return Promise.reject($0(S));let O=S/8;return v(J0,O).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,1),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*O,digestSize:O};return Y})}var nK="sha256",sK="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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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",aK="8c18dd94",V0={name:nK,data:sK,hash:aK};let oK=new a,Y0=null;function cK(S){if(Y0===null)return E(oK,V0,28).then(O=>(Y0=O,Y0.calculate(S,224)));try{let O=Y0.calculate(S,224);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function lK(){return v(V0,28).then(S=>{S.init(224);let O={init:()=>(S.init(224),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:28};return O})}let dK=new a,W0=null;function uK(S){if(W0===null)return E(dK,V0,32).then(O=>(W0=O,W0.calculate(S,256)));try{let O=W0.calculate(S,256);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function xS(){return v(V0,32).then(S=>{S.init(256);let O={init:()=>(S.init(256),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:32};return O})}var fK="sha512",hK="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",AK="f2e40eb1",X0={name:fK,data:hK,hash:AK};let gK=new a,Z0=null;function pK(S){if(Z0===null)return E(gK,X0,48).then(O=>(Z0=O,Z0.calculate(S,384)));try{let O=Z0.calculate(S,384);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function mK(){return v(X0,48).then(S=>{S.init(384);let O={init:()=>(S.init(384),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:128,digestSize:48};return O})}let yK=new a,eg=null;function IK(S){if(eg===null)return E(yK,X0,64).then(O=>(eg=O,eg.calculate(S,512)));try{let O=eg.calculate(S,512);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function wK(){return v(X0,64).then(S=>{S.init(512);let O={init:()=>(S.init(512),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:128,digestSize:64};return O})}var xK="xxhash32",CK="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",EK="4bb12485",CS={name:xK,data:CK,hash:EK};let BK=new a,tg=null;function rg(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be a valid 32-bit long unsigned integer."):null}function bK(S,O=0){if(rg(O))return Promise.reject(rg(O));if(tg===null)return E(BK,CS,4).then(M=>(tg=M,tg.calculate(S,O)));try{let M=tg.calculate(S,O);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function vK(S=0){return rg(S)?Promise.reject(rg(S)):v(CS,4).then(O=>{O.init(S);let M={init:()=>(O.init(S),M),update:Y=>(O.update(Y),M),digest:Y=>O.digest(Y),save:()=>O.save(),load:Y=>(O.load(Y),M),blockSize:16,digestSize:4};return M})}var kK="xxhash64",SK="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",DK="177fbfa3",ES={name:kK,data:SK,hash:DK};let _K=new a,md=null,ig=new Uint8Array(8);function ro(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function zC(S,O,M){let Y=new DataView(S);Y.setUint32(0,O,!0),Y.setUint32(4,M,!0)}function QK(S,O=0,M=0){if(ro(O))return Promise.reject(ro(O));if(ro(M))return Promise.reject(ro(M));if(md===null)return E(_K,ES,8).then(Y=>(md=Y,zC(ig.buffer,O,M),md.writeMemory(ig),md.calculate(S)));try{zC(ig.buffer,O,M),md.writeMemory(ig);let Y=md.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function FK(S=0,O=0){return ro(S)?Promise.reject(ro(S)):ro(O)?Promise.reject(ro(O)):v(ES,8).then(M=>{let Y=new Uint8Array(8);zC(Y.buffer,S,O),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:oe=>(M.update(oe),ie),digest:oe=>M.digest(oe),save:()=>M.save(),load:oe=>(M.load(oe),ie),blockSize:32,digestSize:8};return ie})}var PK="xxhash3",TK="AGFzbQEAAAABNAhgAAF/YAR/f39/AGAHf39/f39/fwBgBH9+fn4BfmAEf39/fgF+YAN/f34BfmAAAGABfwADDg0AAQIDBAUFBQYHBgAGBQQBAQICBg4CfwFBwI4FC38AQcAJCwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAIC0hhc2hfVXBkYXRlAAkKSGFzaF9GaW5hbAAKDUhhc2hfR2V0U3RhdGUACw5IYXNoX0NhbGN1bGF0ZQAMClNUQVRFX1NJWkUDAQr6QQ0FAEGACgvkAwMPfgF/AX4CQCADRQ0AIAApAzAhBCAAKQM4IQUgACkDICEGIAApAyghByAAKQMQIQggACkDGCEJIAApAwAhCiAAKQMIIQsDQCAFIAFBMGopAwAiDHwgAkE4aikDACABQThqKQMAIg2FIgVCIIggBUL/////D4N+fCEFIAcgAUEgaikDACIOfCACQShqKQMAIAFBKGopAwAiD4UiB0IgiCAHQv////8Pg358IQcgCSABQRBqKQMAIhB8IAJBGGopAwAgAUEYaikDACIRhSIJQiCIIAlC/////w+DfnwhCSALIAEpAwAiEnwgAkEIaiITKQMAIAFBCGopAwAiFIUiC0IgiCALQv////8Pg358IQsgAkEwaikDACAMhSIMQiCIIAxC/////w+DfiAEfCANfCEEIAJBIGopAwAgDoUiDEIgiCAMQv////8Pg34gBnwgD3whBiACQRBqKQMAIBCFIgxCIIggDEL/////D4N+IAh8IBF8IQggAikDACAShSIMQiCIIAxC/////w+DfiAKfCAUfCEKIAFBwABqIQEgEyECIANBf2oiAw0ACyAAIAk3AxggACAKNwMAIAAgCzcDCCAAIAc3AyggACAINwMQIAAgBTcDOCAAIAY3AyAgACAENwMwCwveAgIBfwF+AkAgBCACIAEoAgAiB2siAkkNACAAIAMgBSAHQQN0aiACEAEgACAFIAZqIgcpAwAgACkDACIIQi+IhSAIhUKx893xCX43AwAgACAHKQMIIAApAwgiCEIviIUgCIVCsfPd8Ql+NwMIIAAgBykDECAAKQMQIghCL4iFIAiFQrHz3fEJfjcDECAAIAcpAxggACkDGCIIQi+IhSAIhUKx893xCX43AxggACAHKQMgIAApAyAiCEIviIUgCIVCsfPd8Ql+NwMgIAAgBykDKCAAKQMoIghCL4iFIAiFQrHz3fEJfjcDKCAAIAcpAzAgACkDMCIIQi+IhSAIhUKx893xCX43AzAgACAHKQM4IAApAzgiCEIviIUgCIVCsfPd8Ql+NwM4IAAgAyACQQZ0aiAFIAQgAmsiBxABIAEgBzYCAA8LIAAgAyAFIAdBA3RqIAQQASABIAcgBGo2AgALhQEBAX8gAiABhSADpyIEQRh0IARBgP4DcUEIdHIgBEEIdkGA/gNxIARBGHZycq1CIIYgA4V9QQA1AoCMAUIghiAAQfyLAWo1AgCEhSIDQjGJIANCGImFIAOFQqW+4/TRjIfZn39+IgNCI4ggAK18IAOFQqW+4/TRjIfZn39+IgNCHIggA4ULZwAgAiABc60gA3wiA0IhiEEALQCAjAFBEHQgAEEIdHIgAEEBdkGAjAFqLQAAQRh0ciAAQf+LAWotAAByrYUgA4VCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhQuJAwEEfgJAIABBCUkNAEEAKQOAjAEgASkDICABKQMYhSACfIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAArXwgAEH4iwFqKQMAIAEpAzAgASkDKIUgAn2FIgJ8IAJC/////w+DIgQgA0IgiCIFfiIGQv////8PgyACQiCIIgIgA0L/////D4MiA358IAQgA34iA0IgiHwiBEIghiADQv////8Pg4QgBkIgiCACIAV+fCAEQiCIfIV8IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFDwsCQCAAQQRJDQAgACABQQhqKQMAIAFBEGopAwAgAhADDwsCQCAARQ0AIAAgASgCACABQQRqKAIAIAIQBA8LIAEpAzggASkDQIUgAoUiA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC94IAQZ+IACtQoeVr6+Ytt6bnn9+IQMCQCAAQSFJDQACQCAAQcEASQ0AAkAgAEHhAEkNACABKQNoIAJ9QQApA7iMAYUiBEL/////D4MiBSABKQNgIAJ8QQApA7CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDeCACfSAAQciLAWopAwCFIgNC/////w+DIgQgASkDcCACfCAAQcCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQNIIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQNAIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDWCACfSAAQdiLAWopAwCFIgNC/////w+DIgQgASkDUCACfCAAQdCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMoIAJ9QQApA5iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA5CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDOCACfSAAQeiLAWopAwCFIgNC/////w+DIgQgASkDMCACfCAAQeCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMIIAJ9QQApA4iMAYUiBEL/////D4MiBSABKQMAIAJ8QQApA4CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDGCACfSAAQfiLAWopAwCFIgNC/////w+DIgQgASkDECACfCAAQfCLAWopAwCFIgJCIIgiBX4iBkL/////D4MgA0IgiCIDIAJC/////w+DIgJ+fCAEIAJ+IgJCIIh8IgRCIIYgAkL/////D4OEIAZCIIggAyAFfnwgBEIgiHyFfCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQv8CgQBfwV+An8BfkEAIQMgASkDeCACfUEAKQP4jAGFIgRC/////w+DIgUgASkDcCACfEEAKQPwjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpA2ggAn1BACkD6IwBhSIEQv////8PgyIFIAEpA2AgAnxBACkD4IwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQNYIAJ9QQApA9iMAYUiBEL/////D4MiBSABKQNQIAJ8QQApA9CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDSCACfUEAKQPIjAGFIgRC/////w+DIgUgASkDQCACfEEAKQPAjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAzggAn1BACkDuIwBhSIEQv////8PgyIFIAEpAzAgAnxBACkDsIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQMoIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDGCACfUEAKQOYjAGFIgRC/////w+DIgUgASkDECACfEEAKQOQjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAwggAn1BACkDiIwBhSIEQv////8PgyIFIAEpAwAgAnxBACkDgIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSAArUKHla+vmLbem55/fnx8fHx8fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQCQCAAQZABSA0AIABBBHZBeGohCQNAIAEgA2oiCkELaikDACACfSADQYiNAWopAwCFIgVC/////w+DIgYgCkEDaikDACACfCADQYCNAWopAwCFIgdCIIgiCH4iC0L/////D4MgBUIgiCIFIAdC/////w+DIgd+fCAGIAd+IgZCIIh8IgdCIIYgBkL/////D4OEIAtCIIggBSAIfnwgB0IgiHyFIAR8IQQgA0EQaiEDIAlBf2oiCQ0ACwsgASkDfyACfSAAQfiLAWopAwCFIgVC/////w+DIgYgASkDdyACfCAAQfCLAWopAwCFIgJCIIgiB34iCEL/////D4MgBUIgiCIFIAJC/////w+DIgJ+fCAGIAJ+IgJCIIh8IgZCIIYgAkL/////D4OEIAhCIIggBSAHfnwgBkIgiHyFIAR8IgJCJYggAoVC+fPd8ZnymasWfiICQiCIIAKFC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAA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QQApA4CKATcDACACQQApA4iKATcDCCACQQApA5CKATcDECACQQApA5iKATcDGCACQQApA6CKATcDICACQQApA6iKATcDKCACQQApA7CKASIFNwMwIAJBACkDuIoBIgY3AzgCQAJAQQAoAoCOASIHQcAASQ0AIAJBACgCiI4BNgJAIAIgAkHAAGpBACgCmI4BQYCMASAHQX9qQQZ2IANBACgCnI4BIgAQAiADIABqIgBBeWopAwAhCCAAKQMJIQkgACkDGSEKIAApAykhCyAHQcCLAWopAwAhBSAAKQMBIQwgB0HIiwFqKQMAIQYgB0HQiwFqKQMAIQ0gACkDESEOIAdB2IsBaikDACEPIAdB4IsBaikDACEQIAApAyEhESAHQeiLAWopAwAhEiACKQMAIRMgAikDECEUIAIpAyAhFSACKQMwIRYgAikDCCEXIAIpAxghGCACKQMoIRkgAiACKQM4IAdB8IsBaikDACIafCAAKQMxIAdB+IsBaikDACIbhSIcQiCIIBxC/////w+Dfnw3AzggGSAQfCARIBKFIhFCIIggEUL/////D4N+fCERIBggDXwgDiAPhSIOQiCIIA5C/////w+DfnwhDiAXIAV8IAwgBoUiDEIgiCAMQv////8Pg358IQwgGyAWIAsgGoUiC0IgiCALQv////8Pg358fCELIBIgFSAKIBCFIhBCIIggEEL/////D4N+fHwhECAPIBQgCSANhSINQiCIIA1C/////w+Dfnx8IRIgBiATIAggBYUiBUIgiCAFQv////8Pg358fCEIDAELIAdBwI0BaiEdQcAAIAdrIR4gAkHAAGohAAJAAkACQCAHQThNDQAgHiEfDAELAkACQEE4IAdrQQN2QQFqQQdxIh8NACACQcAAaiEAIB4hHwwBCyACQcAAaiEAIB9BA3QiICEfA0AgACAdKQMANwMAIABBCGohACAdQQhqIR0gH0F4aiIfDQALQcAAIAcgIGprIR8LAkAgBw0AA0AgACAdKQMANwMAIABBCGogHUEIaikDADcDACAAQRBqIB1BEGopAwA3AwAgAEEYaiAdQRhqKQMANwMAIABBIGogHUEgaikDADcDACAAQShqIB1BKGopAwA3AwAgAEEwaiAdQTBqKQMANwMAIABBOGogHUE4aikDADcDACAAQcAAaiEAIB1BwABqIR0gH0FAaiIfQQdLDQALCyAfRQ0BCyAfQX9qISECQCAfQQdxIiBFDQAgH0F4cSEfA0AgACAdLQAAOgAAIABBAWohACAdQQFqIR0gIEF/aiIgDQALCyAhQQdJDQADQCAAIB0pAAA3AAAgAEEIaiEAIB1BCGohHSAfQXhqIh8NAAsLIAJBwABqIB5qIR1BgIwBIQACQAJAAkAgB0EISQ0AAkAgB0E4akEDdkEBakEHcSIfDQAMAgsgH0EDdCEgQYCMASEAA0AgHSAAKQMANwMAIB1BCGohHSAAQQhqIQAgH0F/aiIfDQALIAcgIGshBwsgB0UNAQJAAkAgB0EHcSIgDQAgByEfDAELIAdBeHEhHwNAIB0gAC0AADoAACAdQQFqIR0gAEEBaiEAICBBf2oiIA0ACwsgB0EISQ0BCwNAIB0gACkAADcAACAdQQhqIR0gAEEIaiEAIB9BeGoiHw0ACwsgA0EAKAKcjgFqIgBBeWopAwAhCiAAKQMJIRMgACkDGSEUIAApAykhCyAAKQMBIQwgACkDESEOIAApAyEhESACKQMAIRUgAikDECEWIAIpAyAhFyACKQMIIRggAikDQCENIAIpA0ghDyACKQMYIRkgAikDUCESIAIpA1ghCCACKQMoIRogAikDYCEQIAIpA2ghCSACIAYgAikDcCIbfCAAKQMxIAIpA3giBoUiHEIgiCAcQv////8Pg358NwM4IBogEHwgESAJhSIRQiCIIBFC/////w+DfnwhESAZIBJ8IA4gCIUiDkIgiCAOQv////8Pg358IQ4gGCANfCAMIA+FIgxCIIggDEL/////D4N+fCEMIAYgCyAbhSILQiCIIAtC/////w+DfiAFfHwhCyAJIBcgFCAQhSIFQiCIIAVC/////w+Dfnx8IRAgCCAWIBMgEoUiBUIgiCAFQv////8Pg358fCESIA8gFSAKIA2FIgVCIIggBUL/////D4N+fHwhCAsgAykDQyACKQM4hSIFQv////8PgyIGIAMpAzsgC4UiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDMyARhSIFQv////8PgyIGIAMpAysgEIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDIyAOhSIFQv////8PgyIGIAMpAxsgEoUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDEyAMhSIFQv////8PgyIGIAMpAwsgCIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgBEKHla+vmLbem55/fnx8fHwiBEIliCAEhUL5893xmfKZqxZ+IgRCIIggBIUhBAwBCyAEpyEAAkBBACkDoI4BIgRQDQACQCAAQRBLDQAgAEGACCAEEAUhBAwCCwJAIABBgAFLDQAgAEGACCAEEAYhBAwCCyAAQYAIIAQQByEEDAELAkAgAEEQSw0AIAAgA0IAEAUhBAwBCwJAIABBgAFLDQAgACADQgAQBiEEDAELIAAgA0IAEAchBAtBACAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISENwOACiABJAALBgBBgIoBCwIACwvMAQEAQYAIC8QBuP5sOSOkS758AYEs9yGtHN7UbemDkJfbckCkpLezZx/LeeZOzMDleIJa0H3M/3IhuAhGdPdDJI7gNZDmgTomTDwoUruRwwDLiNBlixtTLqNxZEiXog35TjgZ70ap3qzYqPp2P+OcND/53LvHxwtPHYpR4EvNtFkxyJ9+ydl4c2TqxayDNNPrw8WBoP/6E2PrFw3dUbfw2knTFlUmKdRonisWvlh9R6H8j/i40XrQMc5FyzqPlRYEKK/X+8q7S0B+QAIAAA==",UK="5a2fbdbb",BS={name:PK,data:TK,hash:UK};let RK=new a,yd=null,ng=new Uint8Array(8);function io(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function JC(S,O,M){let Y=new DataView(S);Y.setUint32(0,O,!0),Y.setUint32(4,M,!0)}function NK(S,O=0,M=0){if(io(O))return Promise.reject(io(O));if(io(M))return Promise.reject(io(M));if(yd===null)return E(RK,BS,8).then(Y=>(yd=Y,JC(ng.buffer,O,M),yd.writeMemory(ng),yd.calculate(S)));try{JC(ng.buffer,O,M),yd.writeMemory(ng);let Y=yd.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function OK(S=0,O=0){return io(S)?Promise.reject(io(S)):io(O)?Promise.reject(io(O)):v(BS,8).then(M=>{let Y=new Uint8Array(8);JC(Y.buffer,S,O),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:oe=>(M.update(oe),ie),digest:oe=>M.digest(oe),save:()=>M.save(),load:oe=>(M.load(oe),ie),blockSize:512,digestSize:8};return ie})}var qK="xxhash128",MK="AGFzbQEAAAABKwdgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAR/f39+AGAAAGABfwADDQwAAQIDBAQEBQYFAAUFBAEBAgIGDgJ/AUHAjgULfwBBwAkLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAcLSGFzaF9VcGRhdGUACApIYXNoX0ZpbmFsAAkNSGFzaF9HZXRTdGF0ZQAKDkhhc2hfQ2FsY3VsYXRlAAsKU1RBVEVfU0laRQMBCqBNDAUAQYAKC+QDAw9+AX8BfgJAIANFDQAgACkDMCEEIAApAzghBSAAKQMgIQYgACkDKCEHIAApAxAhCCAAKQMYIQkgACkDACEKIAApAwghCwNAIAUgAUEwaikDACIMfCACQThqKQMAIAFBOGopAwAiDYUiBUIgiCAFQv////8Pg358IQUgByABQSBqKQMAIg58IAJBKGopAwAgAUEoaikDACIPhSIHQiCIIAdC/////w+DfnwhByAJIAFBEGopAwAiEHwgAkEYaikDACABQRhqKQMAIhGFIglCIIggCUL/////D4N+fCEJIAsgASkDACISfCACQQhqIhMpAwAgAUEIaikDACIUhSILQiCIIAtC/////w+DfnwhCyACQTBqKQMAIAyFIgxCIIggDEL/////D4N+IAR8IA18IQQgAkEgaikDACAOhSIMQiCIIAxC/////w+DfiAGfCAPfCEGIAJBEGopAwAgEIUiDEIgiCAMQv////8Pg34gCHwgEXwhCCACKQMAIBKFIgxCIIggDEL/////D4N+IAp8IBR8IQogAUHAAGohASATIQIgA0F/aiIDDQALIAAgCTcDGCAAIAo3AwAgACALNwMIIAAgBzcDKCAAIAg3AxAgACAFNwM4IAAgBjcDICAAIAQ3AzALC94CAgF/AX4CQCAEIAIgASgCACIHayICSQ0AIAAgAyAFIAdBA3RqIAIQASAAIAUgBmoiBykDACAAKQMAIghCL4iFIAiFQrHz3fEJfjcDACAAIAcpAwggACkDCCIIQi+IhSAIhUKx893xCX43AwggACAHKQMQIAApAxAiCEIviIUgCIVCsfPd8Ql+NwMQIAAgBykDGCAAKQMYIghCL4iFIAiFQrHz3fEJfjcDGCAAIAcpAyAgACkDICIIQi+IhSAIhUKx893xCX43AyAgACAHKQMoIAApAygiCEIviIUgCIVCsfPd8Ql+NwMoIAAgBykDMCAAKQMwIghCL4iFIAiFQrHz3fEJfjcDMCAAIAcpAzggACkDOCIIQi+IhSAIhUKx893xCX43AzggACADIAJBBnRqIAUgBCACayIHEAEgASAHNgIADwsgACADIAUgB0EDdGogBBABIAEgByAEajYCAAvtAwEFfiABKQM4IAApAziFIgNC/////w+DIgQgASkDMCAAKQMwhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMoIAApAyiFIgNC/////w+DIgQgASkDICAAKQMghSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMYIAApAxiFIgNC/////w+DIgQgASkDECAAKQMQhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMIIAApAwiFIgNC/////w+DIgQgASkDACAAKQMAhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSACfHx8fCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQu6CAIFfgN/AkAgAUEJSQ0AIAAgAUH4iwFqKQMAIgQgAikDOCACKQMwhSADfIUiBUL/////D4NC95Svrwh+IAVCgICAgHCDfEEAKQOAjAEgAikDKCACKQMghSADfYUgBIUiA0IgiCIEQrHz3fEJfnwgBEKHla+vCH4iBEIgiHwgBEL/////D4MgA0L/////D4MiA0Kx893xCX58IANCh5Wvrwh+IgRCIIh8IgVCIIh8IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgBEL/////D4MgAUF/aq1CNoaEIAVCIIZ8hSIEQiCIIgVCz9bTvgJ+IgZC/////w+DIARC/////w+DIgRCvdzKlQx+fCAEQs/W074CfiIEQiCIfCIHQiCGIghCJYggCCAEQv////8Pg4SFQvnz3fGZ8pmrFn4iBEIgiCAEhTcDACAAIAVCvdzKlQx+IANCz9bTvtLHq9lCfnwgBkIgiHwgB0IgiHwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4U3AwgPCwJAIAFBBEkNACAAIAIpAxggAikDEIUgA6ciAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnKtQiCGIAOFfCABQfyLAWo1AgBCIIZBADUCgIwBhIUiA0IgiCIEIAFBAnRBh5Wvr3hqrSIFfiIGQiCIIARCsfPd8Ql+fCAGQv////8PgyADQv////8PgyIDQrHz3fEJfnwgAyAFfiIDQiCIfCIEQiCIfCAEQiCGIANC/////w+DhCIEQgGGfCIDQiWIIAOFQvnz3fGZ8pmrFn4iBUIgiCAFhTcDCCAAIANCA4ggBIUiA0IjiCADhUKlvuP00YyH2Z9/fiIDQhyIIAOFNwMADwsCQCABRQ0AIAAgAigCBCACKAIAc60gA3wiBEIhiEEALQCAjAFBEHQgAUEIdHIiCSABQQF2QYCMAWotAABBGHRyIgogAUH/iwFqLQAAIgFyIguthSAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMAIAAgAigCDCACKAIIc60gA30iA0IhiCABQRh0IAtBgP4DcUEIdHIgCUEIdkGA/gNxIApBGHZyckENd62FIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwgPCyAAIAIpA1AgAikDWIUgA4UiBEIhiCAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMIIAAgAikDQCACKQNIhSADhSIDQiGIIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwALwwoBCn4gAa0iBEKHla+vmLbem55/fiEFAkACQCABQSFPDQBCACEGDAELQgAhBwJAIAFBwQBJDQBCACEHAkAgAUHhAEkNACACQfgAaikDACADfSABQciLAWopAwAiCIUiB0L/////D4MiCSACKQNwIAN8IAFBwIsBaikDACIKhSILQiCIIgx+Ig1CIIggB0IgiCIHIAx+fCANQv////8PgyAHIAtC/////w+DIgt+fCAJIAt+IgdCIIh8IglCIIh8QQApA7iMASILQQApA7CMASIMfIUgCUIghiAHQv////8Pg4SFIQcgAkHoAGopAwAgA30gC4UiCUL/////D4MiCyACKQNgIAN8IAyFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCALIAx+IgtCIIh8IgxCIIYgC0L/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggCnyFIQULIAJB2ABqKQMAIAN9IAFB2IsBaikDACIIhSIJQv////8PgyIKIAIpA1AgA3wgAUHQiwFqKQMAIguFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCAKIAx+IgpCIIh8IgxCIIYgCkL/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAd8QQApA6iMASIJQQApA6CMASIKfIUhByACQcgAaikDACADfSAJhSIJQv////8PgyIMIAIpA0AgA3wgCoUiCkIgiCINfiIGQv////8PgyAJQiCIIgkgCkL/////D4MiCn58IAwgCn4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgBXwgCCALfIUhBQsgAkE4aikDACADfSABQeiLAWopAwAiCIUiCUL/////D4MiCiACKQMwIAN8IAFB4IsBaikDACILhSIMQiCIIg1+IgZC/////w+DIAlCIIgiCSAMQv////8PgyIMfnwgCiAMfiIKQiCIfCIMQiCGIApC/////w+DhCAGQiCIIAkgDX58IAxCIIh8hSAHfEEAKQOYjAEiB0EAKQOQjAEiCXyFIQYgAkEoaikDACADfSAHhSIHQv////8PgyIKIAIpAyAgA3wgCYUiCUIgiCIMfiINQv////8PgyAHQiCIIgcgCUL/////D4MiCX58IAogCX4iCUIgiHwiCkIghiAJQv////8Pg4QgDUIgiCAHIAx+fCAKQiCIfIUgBXwgCCALfIUhBQsgACACQRhqKQMAIAN9IAFB+IsBaikDACIHhSIIQv////8PgyIJIAIpAxAgA3wgAUHwiwFqKQMAIgqFIgtCIIgiDH4iDUL/////D4MgCEIgiCIIIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAZ8QQApA4iMASIIQQApA4CMASIJfIUiCyACQQhqKQMAIAN9IAiFIghC/////w+DIgwgAikDACADfCAJhSIJQiCIIg1+IgZC/////w+DIAhCIIgiCCAJQv////8PgyIJfnwgDCAJfiIJQiCIfCIMQiCGIAlC/////w+DhCAGQiCIIAggDX58IAxCIIh8hSAFfCAHIAp8hSIFfCIHQiWIIAeFQvnz3fGZ8pmrFn4iB0IgiCAHhTcDACAAQgAgBUKHla+vmLbem55/fiAEIAN9Qs/W077Sx6vZQn58IAtC49zKlfzO8vWFf358IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFfTcDCAuhDwMBfxR+An9BACEEIAJB+ABqKQMAIAN9QQApA/iMASIFhSIGQv////8PgyIHIAIpA3AgA3xBACkD8IwBIgiFIglCIIgiCn4iC0L/////D4MgBkIgiCIGIAlC/////w+DIgl+fCAHIAl+IgdCIIh8IglCIIYgB0L/////D4OEIAtCIIggBiAKfnwgCUIgiHyFIAJB2ABqKQMAIAN9QQApA9iMASIHhSIGQv////8PgyIJIAIpA1AgA3xBACkD0IwBIgqFIgtCIIgiDH4iDUL/////D4MgBkIgiCIGIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAJBOGopAwAgA31BACkDuIwBIgmFIgZC/////w+DIgsgAikDMCADfEEAKQOwjAEiDIUiDUIgiCIOfiIPQv////8PgyAGQiCIIgYgDUL/////D4MiDX58IAsgDX4iC0IgiHwiDUIghiALQv////8Pg4QgD0IgiCAGIA5+fCANQiCIfIUgAkEYaikDACADfUEAKQOYjAEiC4UiBkL/////D4MiDSACKQMQIAN8QQApA5CMASIOhSIPQiCIIhB+IhFC/////w+DIAZCIIgiBiAPQv////8PgyIPfnwgDSAPfiINQiCIfCIPQiCGIA1C/////w+DhCARQiCIIAYgEH58IA9CIIh8hUEAKQOIjAEiDUEAKQOAjAEiD3yFfEEAKQOojAEiEEEAKQOgjAEiEXyFfEEAKQPIjAEiEkEAKQPAjAEiE3yFfEEAKQPojAEiFEEAKQPgjAEiFXyFIgZCJYggBoVC+fPd8ZnymasWfiIGQiCIIAaFIQYgAkHoAGopAwAgA30gFIUiFEL/////D4MiFiACKQNgIAN8IBWFIhVCIIgiF34iGEL/////D4MgFEIgiCIUIBVC/////w+DIhV+fCAWIBV+IhVCIIh8IhZCIIYgFUL/////D4OEIBhCIIggFCAXfnwgFkIgiHyFIAJByABqKQMAIAN9IBKFIhJC/////w+DIhQgAikDQCADfCAThSITQiCIIhV+IhZC/////w+DIBJCIIgiEiATQv////8PgyITfnwgFCATfiITQiCIfCIUQiCGIBNC/////w+DhCAWQiCIIBIgFX58IBRCIIh8hSACQShqKQMAIAN9IBCFIhBC/////w+DIhIgAikDICADfCARhSIRQiCIIhN+IhRC/////w+DIBBCIIgiECARQv////8PgyIRfnwgEiARfiIRQiCIfCISQiCGIBFC/////w+DhCAUQiCIIBAgE358IBJCIIh8hSACQQhqKQMAIAN9IA2FIg1C/////w+DIhAgAikDACADfCAPhSIPQiCIIhF+IhJC/////w+DIA1CIIgiDSAPQv////8PgyIPfnwgECAPfiIPQiCIfCIQQiCGIA9C/////w+DhCASQiCIIA0gEX58IBBCIIh8hSABrSIPQoeVr6+Ytt6bnn9+fCALIA58hXwgCSAMfIV8IAcgCnyFfCAFIAh8hSIFQiWIIAWFQvnz3fGZ8pmrFn4iBUIgiCAFhSEFAkAgAUGgAUgNACABQQV2QXxqIRkDQCACIARqIhpBG2opAwAgA30gBEGYjQFqKQMAIgeFIghC/////w+DIgkgGkETaikDACADfCAEQZCNAWopAwAiCoUiC0IgiCIMfiINQv////8PgyAIQiCIIgggC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAIIAx+fCALQiCIfIUgBnwgBEGIjQFqKQMAIgggBEGAjQFqKQMAIgl8hSEGIBpBC2opAwAgA30gCIUiCEL/////D4MiCyAaQQNqKQMAIAN8IAmFIglCIIgiDH4iDUL/////D4MgCEIgiCIIIAlC/////w+DIgl+fCALIAl+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAV8IAcgCnyFIQUgBEEgaiEEIBlBf2oiGQ0ACwsgACACQf8AaikDACADfCABQeiLAWopAwAiB4UiCEL/////D4MiCSACKQN3IAN9IAFB4IsBaikDACIKhSILQiCIIgx+Ig1C/////w+DIAhCIIgiCCALQv////8PgyILfnwgCSALfiIJQiCIfCILQiCGIAlC/////w+DhCANQiCIIAggDH58IAtCIIh8hSAGfCABQfiLAWopAwAiBiABQfCLAWopAwAiCHyFIgkgAkHvAGopAwAgA3wgBoUiBkL/////D4MiCyACKQNnIAN9IAiFIghCIIgiDH4iDUL/////D4MgBkIgiCIGIAhC/////w+DIgh+fCALIAh+IghCIIh8IgtCIIYgCEL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAV8IAcgCnyFIgZ8IgVCJYggBYVC+fPd8ZnymasWfiIFQiCIIAWFNwMAIABCACAGQoeVr6+Ytt6bnn9+IA8gA31Cz9bTvtLHq9lCfnwgCULj3MqV/M7y9YV/fnwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4V9NwMIC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iL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AkHAAGogDGohC0GAjAEhAAJAAkACQCAHQQhJDQACQCAHQThqQQN2QQFqQQdxIg0NAAwCCyANQQN0IQ5BgIwBIQADQCALIAApAwA3AwAgC0EIaiELIABBCGohACANQX9qIg0NAAsgByAOayEHCyAHRQ0BAkACQCAHQQdxIg4NACAHIQ0MAQsgB0F4cSENA0AgCyAALQAAOgAAIAtBAWohCyAAQQFqIQAgDkF/aiIODQALCyAHQQhJDQELA0AgCyAAKQAANwAAIAtBCGohCyAAQQhqIQAgDUF4aiINDQALCyACIAIpAwggAikDQCIIfCADQQAoApyOAWoiACkDASACKQNIIgmFIgpCIIggCkL/////D4N+fDcDCCACIAIpAxggAikDUCIKfCAAKQMRIAIpA1giEIUiEUIgiCARQv////8Pg358NwMYIAIgECAKIAApAwmFIgpCIIggCkL/////D4N+IAIpAxB8fDcDECACIAkgCCAAQXlqKQMAhSIIQiCIIAhC/////w+DfiACKQMAfHw3AwAgACkDGSEIIAIpAyAhCSACIAIpAyggAikDYCIKfCAAKQMhIAIpA2giEIUiEUIgiCARQv////8Pg358NwMoIAIgECAJIAggCoUiCEIgiCAIQv////8Pg358fDcDICACIAYgAikDcCIIfCAAKQMxIAIpA3giBoUiCUIgiCAJQv////8Pg358NwM4IAIgBiAIIAApAymFIghCIIggCEL/////D4N+IAV8fDcDMAsgAiACIANBC2ogBEKHla+vmLbem55/fhADNwNAIAIgAiADQQAoApyOAWpBdWogBELP1tO+0ser2UJ+Qn+FEAM3A0gMAQsgBKchAAJAQQApA6COASIEUA0AAkAgAEEQSw0AIAJBwABqIABBgAggBBAEDAILAkAgAEGAAUsNACACQcAAaiAAQYAIIAQQBQwCCyACQcAAaiAAQYAIIAQQBgwBCwJAIABBEEsNACACQcAAaiAAIANCABAEDAELAkAgAEGAAUsNACACQcAAaiAAIANCABAFDAELIAJBwABqIAAgA0IAEAYLQQAgAikDcDcDuApBACACKQNgNwOoCkEAIAIpA1A3A5gKQQAgAkH4AGopAwA3A8AKQQAgAkHoAGopAwA3A7AKQQAgAkHYAGopAwA3A6AKQQAgAikDSCIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIgQ3A4AKQQAgBDcDkApBACACKQNAIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3A4gKIAEkAAsGAEGAigELAgALC8wBAQBBgAgLxAG4/mw5I6RLvnwBgSz3Ia0c3tRt6YOQl9tyQKSkt7NnH8t55k7MwOV4glrQfcz/ciG4CEZ090MkjuA1kOaBOiZMPChSu5HDAMuI0GWLG1Muo3FkSJeiDflOOBnvRqnerNio+nY/45w0P/ncu8fHC08dilHgS820WTHIn37J2XhzZOrFrIM00+vDxYGg//oTY+sXDd1Rt/DaSdMWVSYp1GieKxa+WH1HofyP+LjRetAxzkXLOo+VFgQor9f7yrtLQH5AAgAA",LK="b9ab74e2",bS={name:qK,data:MK,hash:LK};let HK=new a,Id=null,sg=new Uint8Array(8);function no(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function jC(S,O,M){let Y=new DataView(S);Y.setUint32(0,O,!0),Y.setUint32(4,M,!0)}function KK(S,O=0,M=0){if(no(O))return Promise.reject(no(O));if(no(M))return Promise.reject(no(M));if(Id===null)return E(HK,bS,16).then(Y=>(Id=Y,jC(sg.buffer,O,M),Id.writeMemory(sg),Id.calculate(S)));try{jC(sg.buffer,O,M),Id.writeMemory(sg);let Y=Id.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function GK(S=0,O=0){return no(S)?Promise.reject(no(S)):no(O)?Promise.reject(no(O)):v(bS,16).then(M=>{let Y=new Uint8Array(8);jC(Y.buffer,S,O),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:oe=>(M.update(oe),ie),digest:oe=>M.digest(oe),save:()=>M.save(),load:oe=>(M.load(oe),ie),blockSize:512,digestSize:16};return ie})}var zK="ripemd160",JK="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",jK="6abbce74",vS={name:zK,data:JK,hash:jK};let $K=new a,ag=null;function VK(S){if(ag===null)return E($K,vS,20).then(O=>(ag=O,ag.calculate(S)));try{let O=ag.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function YK(){return v(vS,20).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:20};return O})}function WK(S,O){let{blockSize:M}=S,Y=B(O);if(Y.length>M){S.update(Y);let ie=S.digest("binary");return S.init(),ie}return new Uint8Array(Y.buffer,Y.byteOffset,Y.length)}function XK(S,O){S.init();let{blockSize:M}=S,Y=WK(S,O),ie=new Uint8Array(M);ie.set(Y);let oe=new Uint8Array(M);for(let Ce=0;Ce<M;Ce++){let Xe=ie[Ce];oe[Ce]=Xe^92,ie[Ce]=Xe^54}S.update(ie);let pe={init:()=>(S.init(),S.update(ie),pe),update:Ce=>(S.update(Ce),pe),digest:(Ce=>{let Xe=S.digest("binary");return S.init(),S.update(oe),S.update(Xe),S.digest(Ce)}),save:()=>{throw new Error("save() not supported")},load:()=>{throw new Error("load() not supported")},blockSize:S.blockSize,digestSize:S.digestSize};return pe}function kS(S,O){if(!S||!S.then)throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');return S.then(M=>XK(M,O))}function ZK(S,O,M,Y,ie){return s(this,void 0,void 0,function*(){let oe=new Uint8Array(Y),pe=new Uint8Array(O.length+4),Ce=new DataView(pe.buffer),Xe=B(O),$t=new Uint8Array(Xe.buffer,Xe.byteOffset,Xe.length);pe.set($t);let ir=0,fr=S.digestSize,Vt=Math.ceil(Y/fr),hn=null,ei=null;for(let so=1;so<=Vt;so++){Ce.setUint32(O.length,so),S.init(),S.update(pe),hn=S.digest("binary"),ei=hn.slice();for(let Mn=1;Mn<M;Mn++){S.init(),S.update(ei),ei=S.digest("binary");for(let ao=0;ao<fr;ao++)hn[ao]^=ei[ao]}oe.set(hn.subarray(0,Y-ir),ir),ir+=fr}if(ie==="binary")return oe;let Rf=new Uint8Array(Y*2);return w(Rf,oe,Y)})}let eG=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.hashFunction||!S.hashFunction.then)throw new Error('Invalid hash function is provided! Usage: pbkdf2("password", "salt", 1000, 32, createSHA1()).');if(!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function $C(S){return s(this,void 0,void 0,function*(){eG(S);let O=yield kS(S.hashFunction,S.password);return ZK(O,S.salt,S.iterations,S.hashLength,S.outputType)})}var tG="scrypt",rG="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cyICajYCOCAAIAAoAjwgAiAKakESdyAGc2o2AjwLvxIDFX8Bfg5/AkAgAkUNACAAQQd0IgNBQGoiBEEAKAKACCIFIAMgAmwiBmogAyABbGoiByADaiIIaiEJIAAgAkEHdCIKIAFBB3RqIgtsIQwgACALQYABamwhDSAAQQV0IgtBASALQQFLGyILQWBxIQ4gC0EBcSEPIAdBeGohECAHQXBqIREgB0FoaiESIAdBYGohEyAHQVhqIRQgB0FQaiEVIAdBSGohFiAHQUBqIRcgAa1Cf3whGCAEIAdqIRkgByAAQQh0IhpqIRsgACAKQYABamwhHCALQQRJIR1BACEeQQAhHwNAQQAoAoAIIiAgAyAfbGohIQJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgByALaiIEICMgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AIAcgIkECdCILaiAhIAtqKAIANgIACwJAIAFFDQBBACElIBwhIyAGISYDQCAFISQgACEiAkACQCAADQAgGyAXKQMANwMAIBsgFikDADcDCCAbIBUpAwA3AxAgGyAUKQMANwMYIBsgEykDADcDICAbIBIpAwA3AyggGyARKQMANwMwIBsgECkDADcDOAwBCwNAICQgJmoiCyAkIAxqIgQpAwA3AwAgC0EIaiAEQQhqKQMANwMAIAtBEGogBEEQaikDADcDACALQRhqIARBGGopAwA3AwAgC0EgaiAEQSBqKQMANwMAIAtBKGogBEEoaikDADcDACALQTBqIARBMGopAwA3AwAgC0E4aiAEQThqKQMANwMAIAtBwABqIARBwABqKQMANwMAIAtByABqIARByABqKQMANwMAIAtB0ABqIARB0ABqKQMANwMAIAtB2ABqIARB2ABqKQMANwMAIAtB4ABqIARB4ABqKQMANwMAIAtB6ABqIARB6ABqKQMANwMAIAtB8ABqIARB8ABqKQMANwMAIAtB+ABqIARB+ABqKQMANwMAICRBgAFqISQgIkF/aiIiDQALIAcgCCAbIAAQAiAFISQgACEiA0AgJCAjaiILICQgDWoiBCkDADcDACALQQhqIARBCGopAwA3AwAgC0EQaiAEQRBqKQMANwMAIAtBGGogBEEYaikDADcDACALQSBqIARBIGopAwA3AwAgC0EoaiAEQShqKQMANwMAIAtBMGogBEEwaikDADcDACALQThqIARBOGopAwA3AwAgC0HAAGogBEHAAGopAwA3AwAgC0HIAGogBEHIAGopAwA3AwAgC0HQAGogBEHQAGopAwA3AwAgC0HYAGogBEHYAGopAwA3AwAgC0HgAGogBEHgAGopAwA3AwAgC0HoAGogBEHoAGopAwA3AwAgC0HwAGogBEHwAGopAwA3AwAgC0H4AGogBEH4AGopAwA3AwAgJEGAAWohJCAiQX9qIiINAAsLIAggByAbIAAQAiAjIBpqISMgJiAaaiEmICVBAmoiJSABSQ0AC0EAISUDQAJAAkAgAA0AIBsgFykDADcDACAbIBYpAwA3AwggGyAVKQMANwMQIBsgFCkDADcDGCAbIBMpAwA3AyAgGyASKQMANwMoIBsgESkDADcDMCAbIBApAwA3AzgMAQsgACAKIBkpAgAgGIOnQQd0amwhJiAFISQgACEiA0AgJCAMaiILIAspAwAgJCAmaiIEKQMAhTcDACALQQhqIiMgIykDACAEQQhqKQMAhTcDACALQRBqIiMgIykDACAEQRBqKQMAhTcDACALQRhqIiMgIykDACAEQRhqKQMAhTcDACALQSBqIiMgIykDACAEQSBqKQMAhTcDACALQShqIiMgIykDACAEQShqKQMAhTcDACALQTBqIiMgIykDACAEQTBqKQMAhTcDACALQThqIiMgIykDACAEQThqKQMAhTcDACALQcAAaiIjICMpAwAgBEHAAGopAwCFNwMAIAtByABqIiMgIykDACAEQcgAaikDAIU3AwAgC0HQAGoiIyAjKQMAIARB0ABqKQMAhTcDACALQdgAaiIjICMpAwAgBEHYAGopAwCFNwMAIAtB4ABqIiMgIykDACAEQeAAaikDAIU3AwAgC0HoAGoiIyAjKQMAIARB6ABqKQMAhTcDACALQfAAaiIjICMpAwAgBEHwAGopAwCFNwMAIAtB+ABqIgsgCykDACAEQfgAaikDAIU3AwAgJEGAAWohJCAiQX9qIiINAAsgByAIIBsgABACIAAgCiAJKQIAIBiDp0EHdGpsISYgBSEkIAAhIgNAICQgDWoiCyALKQMAICQgJmoiBCkDAIU3AwAgC0EIaiIjICMpAwAgBEEIaikDAIU3AwAgC0EQaiIjICMpAwAgBEEQaikDAIU3AwAgC0EYaiIjICMpAwAgBEEYaikDAIU3AwAgC0EgaiIjICMpAwAgBEEgaikDAIU3AwAgC0EoaiIjICMpAwAgBEEoaikDAIU3AwAgC0EwaiIjICMpAwAgBEEwaikDAIU3AwAgC0E4aiIjICMpAwAgBEE4aikDAIU3AwAgC0HAAGoiIyAjKQMAIARBwABqKQMAhTcDACALQcgAaiIjICMpAwAgBEHIAGopAwCFNwMAIAtB0ABqIiMgIykDACAEQdAAaikDAIU3AwAgC0HYAGoiIyAjKQMAIARB2ABqKQMAhTcDACALQeAAaiIjICMpAwAgBEHgAGopAwCFNwMAIAtB6ABqIiMgIykDACAEQegAaikDAIU3AwAgC0HwAGoiIyAjKQMAIARB8ABqKQMAhTcDACALQfgAaiILIAspAwAgBEH4AGopAwCFNwMAICRBgAFqISQgIkF/aiIiDQALCyAIIAcgGyAAEAIgJUECaiIlIAFJDQALCwJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgIyALaiIEIAcgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AICEgIkECdCILaiAHIAtqKAIANgIACyAeIANqIR4gH0EBaiIfIAJHDQALCws=",iG="b32721f8",nG={name:tG,data:rG,hash:iG};function sG(S){return s(this,void 0,void 0,function*(){let{costFactor:O,blockSize:M,parallelism:Y,hashLength:ie}=S,oe=xS(),pe=yield $C({password:S.password,salt:S.salt,iterations:1,hashLength:128*M*Y,hashFunction:oe,outputType:"binary"}),Ce=yield v(nG,0),Xe=128*M*O,$t=256*M;Ce.setMemorySize(pe.length+Xe+$t),Ce.writeMemory(pe,0),Ce.getExports().scrypt(M,O,Y);let ir=Ce.getMemory().subarray(0,128*M*Y),fr=yield $C({password:S.password,salt:ir,iterations:1,hashLength:ie,hashFunction:oe,outputType:"binary"});if(S.outputType==="hex"){let Vt=new Uint8Array(ie*2);return w(Vt,fr,ie)}return fr})}let aG=S=>S&&!(S&S-1),oG=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.blockSize)||S.blockSize<1)throw new Error("Block size should be a positive number");if(!Number.isInteger(S.costFactor)||S.costFactor<2||!aG(S.costFactor))throw new Error("Cost factor should be a power of 2, greater than 1");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function cG(S){return s(this,void 0,void 0,function*(){return oG(S),sG(S)})}var lG="bcrypt",dG="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",uG="8bd8822d",SS={name:lG,data:dG,hash:uG};function fG(S){return s(this,void 0,void 0,function*(){let{costFactor:O,password:M,salt:Y}=S,ie=yield v(SS,0);ie.writeMemory(B(Y),0);let oe=B(M);ie.writeMemory(oe,16);let pe=S.outputType==="encoded"?1:0;ie.getExports().bcrypt(oe.length,O,pe);let Ce=ie.getMemory();if(S.outputType==="encoded")return f(Ce,60);if(S.outputType==="hex"){let Xe=new Uint8Array(48);return w(Xe,Ce,24)}return Ce.slice(0,24)})}let hG=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.costFactor)||S.costFactor<4||S.costFactor>31)throw new Error("Cost factor should be a number between 4 and 31");if(S.password=B(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long");if(S.salt=B(S.salt),S.salt.length!==16)throw new Error("Salt should be 16 bytes long");if(S.outputType===void 0&&(S.outputType="encoded"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function AG(S){return s(this,void 0,void 0,function*(){return hG(S),fG(S)})}let gG=S=>!(!/^\$2[axyb]\$[0-3][0-9]\$[./A-Za-z0-9]{53}$/.test(S)||S[4]==="0"&&Number(S[5])<4||S[4]==="3"&&Number(S[5])>1),pG=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified");if(S.hash.length!==60)throw new Error("Hash should be 60 bytes long");if(!gG(S.hash))throw new Error("Invalid hash");if(S.password=B(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long")};function mG(S){return s(this,void 0,void 0,function*(){pG(S);let{hash:O,password:M}=S,Y=yield v(SS,0);Y.writeMemory(B(O),0);let ie=B(M);return Y.writeMemory(ie,60),!!Y.getExports().bcrypt_verify(ie.length)})}var yG="whirlpool",IG="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",wG="8d8f6035",DS={name:yG,data:IG,hash:wG};let xG=new a,og=null;function CG(S){if(og===null)return E(xG,DS,64).then(O=>(og=O,og.calculate(S)));try{let O=og.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function EG(){return v(DS,64).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:64};return O})}var BG="sm3",bG="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",vG="b6fb4b8e",_S={name:BG,data:bG,hash:vG};let kG=new a,cg=null;function SG(S){if(cg===null)return E(kG,_S,32).then(O=>(cg=O,cg.calculate(S)));try{let O=cg.calculate(S);return Promise.resolve(O)}catch(O){return Promise.reject(O)}}function DG(){return v(_S,32).then(S=>{S.init();let O={init:()=>(S.init(),O),update:M=>(S.update(M),O),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),O),blockSize:64,digestSize:32};return O})}r.adler32=j,r.argon2Verify=Ws,r.argon2d=eo,r.argon2i=be,r.argon2id=cn,r.bcrypt=AG,r.bcryptVerify=mG,r.blake2b=He,r.blake2s=pd,r.blake3=Wi,r.crc32=it,r.crc64=HC,r.createAdler32=z,r.createBLAKE2b=Ue,r.createBLAKE2s=ki,r.createBLAKE3=h,r.createCRC32=we,r.createCRC64=KC,r.createHMAC=kS,r.createKeccak=iK,r.createMD4=RH,r.createMD5=HH,r.createRIPEMD160=YK,r.createSHA1=$H,r.createSHA224=lK,r.createSHA256=xS,r.createSHA3=eK,r.createSHA384=mK,r.createSHA512=wK,r.createSM3=DG,r.createWhirlpool=EG,r.createXXHash128=GK,r.createXXHash3=OK,r.createXXHash32=vK,r.createXXHash64=FK,r.keccak=rK,r.md4=UH,r.md5=LH,r.pbkdf2=$C,r.ripemd160=VK,r.scrypt=cG,r.sha1=jH,r.sha224=cK,r.sha256=uK,r.sha3=ZH,r.sha384=pK,r.sha512=IK,r.sm3=SG,r.whirlpool=CG,r.xxhash128=KK,r.xxhash3=NK,r.xxhash32=bK,r.xxhash64=QK}))});var O5,cl,a1,dI,q5=J(()=>{"use strict";O5=Qr(lI(),1),cl=32,a1=16,dI=class r{dataKey;constructor(e){this.dataKey=e}static async create(e,t){if(!e)throw new Error("[Crypt] password \u4E0D\u80FD\u4E3A\u7A7A");let i=await(0,O5.scrypt)({password:e,salt:t||"",costFactor:16384,blockSize:8,parallelism:1,hashLength:64,outputType:"binary"}),n=await crypto.subtle.importKey("raw",i.slice(0,32),{name:"AES-CTR"},!1,["encrypt","decrypt"]);return new r(n)}encryptedSize(e){return e+cl}decryptedSize(e){return Math.max(0,e-cl)}async encrypt(e){let t=crypto.getRandomValues(new Uint8Array(a1)),i=new Uint8Array(cl);i.set(t,0),crypto.getRandomValues(i.subarray(a1));let n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,e)),s=new Uint8Array(cl+n.length);return s.set(i,0),s.set(n,cl),s}async decrypt(e){if(e.length<cl)throw new Error("[Crypt] \u52A0\u5BC6\u6587\u4EF6\u8FC7\u77ED\uFF08\u7F3A\u5C11\u6587\u4EF6\u5934\uFF09");let t=e.slice(0,a1),i=e.slice(cl);return new Uint8Array(await crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,i))}}});var uI,M5=J(()=>{"use strict";ve();q5();uI=class{addition;cipher=null;remoteDriver=null;remoteRoot="/";suffix;constructor(e){this.addition=e||{},this.suffix=this.addition.encrypted_suffix??".bin"}async init(){let e=this.addition.filename_encryption||"off";if(e!=="off")throw new Error(`[Crypt] filename_encryption='${e}' \u5C1A\u672A\u5B9E\u73B0\uFF0C\u5F53\u524D\u4EC5\u652F\u6301 off \u6A21\u5F0F\uFF08\u5185\u5BB9\u52A0\u5BC6\u3001\u6587\u4EF6\u540D\u4EC5\u52A0\u540E\u7F00\uFF09`);let{resolvePath:t}=await Promise.resolve().then(()=>(nt(),ii)),{getDriver:i}=await Promise.resolve().then(()=>(ar(),tn)),n=await t(this.addition.remote_path||"/");if(n.isVirtual||!n.storage)throw new Error(`[Crypt] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=n.physical||"/",this.remoteDriver=await i(n.storage.driver,n.storage),this.cipher=await dI.create(this.addition.password,this.addition.salt||"")}ensureReady(){if(!this.cipher||!this.remoteDriver)throw new Error("[Crypt] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}decryptName(e){return this.suffix&&e.endsWith(this.suffix)?e.slice(0,-this.suffix.length):e}async list(e,t){this.ensureReady();let i=this.joinRemote(t);return(await this.remoteDriver.list("",i)).map(s=>{if(s.is_dir)return s;let a=this.decryptName(s.name);return{...s,name:a,size:this.cipher.decryptedSize(s.size),type:X(a,!1)}})}async get(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.get("",i);if(n.is_dir)return n;let s=this.decryptName(n.name);return{...n,name:s,size:this.cipher.decryptedSize(n.size),type:X(s,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.rename("",n+this.suffix,i+this.suffix):await this.remoteDriver.rename("",n,i)}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.remove("",n+this.suffix,i):await this.remoteDriver.remove("",n,i)}async move(e,t,i,n,s){this.ensureReady();let a=this.joinRemote(n),o=this.joinRemote(s);await this.isFile(a)?await this.remoteDriver.move(e,t,i,a+this.suffix,o+this.suffix):await this.remoteDriver.move(e,t,i,a,o)}async copy(e,t,i,n,s){this.ensureReady();let a=this.joinRemote(n),o=this.joinRemote(s);await this.isFile(a)?await this.remoteDriver.copy(e,t,i,a+this.suffix,o+this.suffix):await this.remoteDriver.copy(e,t,i,a,o)}async put(e,t,i){this.ensureReady();let n=this.joinRemote(t)+this.suffix,s=await this.cipher.encrypt(new Uint8Array(i));await this.remoteDriver.put("",n,Buffer.from(s))}async createReadStream(e,t){this.ensureReady();let i=this.joinRemote(e)+this.suffix,n=await this.remoteDriver.get("",i);if(!n.raw_url)throw new Error("[Crypt] \u5E95\u5C42\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u65E0\u6CD5\u89E3\u5BC6\u4E0B\u8F7D");let s=await fetch(n.raw_url);if(!s.ok)throw new Error(`[Crypt] \u5E95\u5C42\u4E0B\u8F7D\u5931\u8D25: HTTP ${s.status}`);let a=new Uint8Array(await s.arrayBuffer()),o=await this.cipher.decrypt(a),c=t?.start??0,l=t?.end??o.length-1,d=o.slice(c,l+1);return new ReadableStream({start(u){u.enqueue(d),u.close()}})}async isFile(e){if(!this.suffix)return!1;try{let t=await this.remoteDriver.get("",e+this.suffix);return!!t&&!t.is_dir}catch{return!1}}}});var fI,L5=J(()=>{"use strict";ve();fI=class{addition;constructor(e){this.addition=e||{}}randSize(){let e=this.addition.min_file_size||0,t=this.addition.max_file_size||0;return t<=e?e:e+Math.floor(Math.random()*(t-e))}now(){return new Date().toISOString()}async list(){let e=[];for(let t=0;t<(this.addition.num_file||0);t++){let i=`file_${t}.bin`;e.push({name:i,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(i,!1)})}for(let t=0;t<(this.addition.num_folder||0);t++){let i=`folder_${t}`;e.push({name:i,size:0,is_dir:!0,modified:this.now(),sign:"",type:1})}return e}async get(e,t){let i=String(t||"").split("/").filter(Boolean),n=i[i.length-1]||"file.bin";return{name:n,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){}async rename(){}async remove(){}async move(){}async copy(){}async put(){}async createReadStream(e,t){let i=t?.start??0,n=t?.end??i+this.randSize()-1,s=Math.max(0,n-i+1),a=64*1024,o=s;return new ReadableStream({pull(c){if(o<=0){c.close();return}let l=Math.min(a,o),d=new Uint8Array(l);crypto.getRandomValues(d),c.enqueue(d),o-=l}})}}});var hI,H5=J(()=>{"use strict";ve();$e();hI=class{addition;token;onTokenUpdate;constructor(e,t){this.addition=e||{},this.token=this.addition.token||"",this.onTokenUpdate=t}get baseUrl(){return(this.addition.url||"").replace(/\/+$/,"")}async init(){if(!this.baseUrl)throw new Error("[AListV3] url is required");try{let e=await this.request("/me","GET");this.addition.username&&e.username!==this.addition.username&&await this.login()}catch{this.addition.username&&await this.login()}}async login(){if(!this.addition.username)return;let e=await this.request("/auth/login","POST",{username:this.addition.username,password:this.addition.password},!1);if(this.token=e.token,this.onTokenUpdate)try{await this.onTokenUpdate(this.token)}catch{}}async request(e,t,i,n=!0){let s=await fetch(`${this.baseUrl}/api${e}`,{method:t,headers:{"Content-Type":"application/json",...this.token?{Authorization:this.token}:{}},...i!==void 0?{body:JSON.stringify(i)}:{}}),a=await s.json().catch(()=>({code:s.status,message:"invalid response",data:null}));if(a.code!==200){if((a.code===401||a.code===403)&&n)return await this.login(),this.request(e,t,i,!1);throw new Error(`[AListV3] request failed: code=${a.code}, message=${a.message}`)}return a.data}toFileItem(e){return{name:e.name,size:e.size||0,is_dir:!!e.is_dir,modified:e.modified||new Date().toISOString(),sign:e.sign||"",thumb:e.thumb||"",type:e.type??X(e.name,!!e.is_dir),raw_url:""}}async list(e,t){let n=((await this.request("/fs/list","POST",{path:t,password:this.addition.meta_password||"",page:1,per_page:0,refresh:!1})).content||[]).map(s=>this.toFileItem(s));return ue(n,"name","asc")}async get(e,t){let i=await this.request("/fs/get","POST",{path:t,password:this.addition.meta_password||""});return{...this.toFileItem(i),raw_url:i.raw_url||""}}async mkdir(e,t){await this.request("/fs/mkdir","POST",{path:t})}async rename(e,t,i){await this.request("/fs/rename","POST",{path:t,name:i})}async remove(e,t,i){let n=t.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/remove","POST",{dir:n,names:i})}async move(e,t,i,n,s){let a=n.split("/").slice(0,-1).join("/")||"/",o=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/move","POST",{src_dir:a,dst_dir:o,names:i})}async copy(e,t,i,n,s){let a=n.split("/").slice(0,-1).join("/")||"/",o=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/copy","POST",{src_dir:a,dst_dir:o,names:i})}async put(e,t,i){let n=await fetch(`${this.baseUrl}/api/fs/put`,{method:"PUT",headers:{Authorization:this.token,"File-Path":encodeURIComponent(t),"Content-Type":"application/octet-stream"},body:i}),s=await n.json().catch(()=>({code:n.status,message:"invalid response",data:null}));if(s.code!==200)throw new Error(`[AListV3] put failed: code=${s.code}, message=${s.message}`)}}});function K5(r){let e=r.indexOf("http://"),t=r.indexOf("https://"),i=e>=0?e:t;if(i<0)throw new Error(`invalid line: ${r}, because url is required for file`);let n=r.slice(i),s=r.slice(0,i),a={url:n,name:"",level:0,modified:0,size:0,children:[]};if(i>0){if(!s.endsWith(":"))throw new Error(`invalid line: ${r}, file info must end with ':'`);let o=s.slice(0,-1);if(!o)throw new Error(`invalid line: ${r}, file name can't be empty`);let c=o.split(":");if(a.name=c[0],c.length>1){let l=parseInt(c[1],10);if(Number.isNaN(l))throw new Error(`invalid line: ${r}, file size must be an integer`);if(a.size=l,c.length>2){let d=parseInt(c[2],10);if(Number.isNaN(d))throw new Error(`invalid line: ${r}, modified must be a unix timestamp`);a.modified=d}}}else{let c=new URL(n).pathname.split("/").filter(Boolean);a.name=c[c.length-1]||n}return a}function LY(r){let e={url:"",name:"root",level:-1,modified:0,size:0,children:[]},t=[e],i=String(r||"").split(` +`);for(let n of i){let s=0;for(;s<n.length&&n[s]===" ";)s++;if(s%2!==0)throw new Error(`the line '${n}' indent is not a multiple of 2`);let a=s/2,o=n.slice(s).trim();if(o){for(;a<=t[t.length-1].level;)t.pop();if(o.endsWith(":")){let c={url:"",name:o.slice(0,-1),level:a,modified:0,size:0,children:[]};t[t.length-1].children.push(c),t.push(c)}else{let c=K5(o);c.level=a,t[t.length-1].children.push(c)}}}return e}function Gd(r){if(r.url)return r.size;let e=0;for(let t of r.children)e+=Gd(t);return r.size=e,e}function HY(r){let e=t=>{if(t.level===-1)return t.children.map(e).join(` +`);let i=" ".repeat(t.level);if(!t.url){let o=t.children.map(e).join(` +`);return`${i}${t.name}:${o?` +`+o:""}`}let s=new URL(t.url).pathname.split("/").filter(Boolean).pop()||"";if(t.size===0&&t.modified===0)return`${i}${s===t.name?t.url:`${t.name}:${t.url}`}`;let a=t.name;return(t.size!==0||t.modified!==0)&&(a+=`:${t.size}`),t.modified!==0&&(a+=`:${t.modified}`),`${i}${a}:${t.url}`};return e(r)}function To(r){return r==="/"||!r?["root"]:["root",...r.replace(/\/+$/,"").split("/").filter(Boolean)]}function Is(r,e){let t=To(e),i=r;for(let n=0;n<t.length;n++){if(!i||i.name!==t[n])return null;if(n===t.length-1)return i;let s=null;for(let a of i.children)if(a.name===t[n+1]){s=a;break}i=s}return i}async function KY(r){try{ni(r,"UrlTree head_size");let e=await fetch(r,{method:"HEAD"});if(!e.ok)return 0;let t=parseInt(e.headers.get("Content-Length")||"0",10);return Number.isFinite(t)?t:0}catch{return 0}}var AI,G5=J(()=>{"use strict";ve();$e();el();AI=class{addition;root;onUpdate;constructor(e,t){this.addition=e||{},this.root=LY(this.addition.url_structure||""),Gd(this.root),this.onUpdate=t}async init(){if(!this.addition.url_structure||!this.addition.url_structure.trim())throw new Error("[UrlTree] url_structure is required")}persist(){if(this.addition.writable&&(this.addition.url_structure=HY(this.root),this.onUpdate))try{this.onUpdate(this.addition.url_structure)}catch{}}nodeToFileItem(e,t){let i=!e.url;return{name:e.name,size:e.size,is_dir:i,modified:e.modified?new Date(e.modified*1e3).toISOString():new Date().toISOString(),sign:"",thumb:"",type:X(e.name,i),raw_url:i?"":e.url}}async list(e,t){let i=Is(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);if(i.url)throw new Error(`[UrlTree] not a folder: ${t}`);let n=i.children.map(s=>this.nodeToFileItem(s,`${t.replace(/\/+$/,"")}/${s.name}`));return ue(n,"name","asc")}async get(e,t){let i=Is(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);return this.nodeToFileItem(i,t)}async mkdir(e,t){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let i=To(t),n=i[i.length-1],s=Is(this.root,"/"+i.slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");s.children.push({url:"",name:n,level:s.level+1,modified:0,size:0,children:[]}),this.persist()}async rename(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=Is(this.root,t);if(!n)throw new Error("[UrlTree] path not found");n.name=i,this.persist()}async remove(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=To(t),s=n[n.length-1],a=Is(this.root,"/"+n.slice(1,-1).join("/"));if(!a)throw new Error("[UrlTree] parent not found");a.children=a.children.filter(o=>o.name!==s),Gd(this.root),this.persist()}async move(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let a=Is(this.root,"/"+To(n).slice(1,-1).join("/")),o=Is(this.root,"/"+To(s).slice(1,-1).join("/"));if(!a||!o||o.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=a.children.findIndex(u=>u.name===c);if(l<0)continue;let[d]=a.children.splice(l,1);d.level=o.level+1,o.children.push(d)}Gd(this.root),this.persist()}async copy(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let a=Is(this.root,"/"+To(n).slice(1,-1).join("/")),o=Is(this.root,"/"+To(s).slice(1,-1).join("/"));if(!a||!o||o.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=a.children.find(d=>d.name===c);l&&o.children.push(this.deepCopy(l,o.level+1))}Gd(this.root),this.persist()}async put(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=i.toString("utf8").trim(),s=Is(this.root,"/"+To(t).slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");let a=t.split("/").filter(Boolean).pop()||"file",o=K5(`${a}:${n}`);o.level=s.level+1,s.children.push(o),this.addition.head_size&&(o.size=await KY(o.url)),Gd(this.root),this.persist()}deepCopy(e,t){return{url:e.url,name:e.name,level:t,modified:e.modified,size:e.size,children:e.children.map(i=>this.deepCopy(i,t+1))}}}});function bh(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function z5(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function J5(r){return r.split("/").filter(Boolean).pop()||""}function GY(r){if(r.includes(":")){let t=r.indexOf(":"),i=r.slice(0,t),n=r.slice(t+1);if(!i.includes("/"))return[i,n]}let e=r.split("/").filter(Boolean);return[e[e.length-1]||r,r]}function j5(r){let e=String(r||"/").replace(/^\//,""),t=e.indexOf("/");return t<0?[e,""]:[e.slice(0,t),e.slice(t+1)]}var gI,$5=J(()=>{"use strict";ve();$e();gI=class{addition;pathMap=new Map;remotes=new Map;supportSuffix=new Set;downloadSuffix=new Set;autoFlatten=!1;oneKey="";constructor(e){this.addition=e||{}}async init(){let e=this.addition.paths||"";if(!e.trim())throw new Error("[Strm] paths is required");for(let a of e.split(` +`)){let o=a.trim();if(!o)continue;let[c,l]=GY(o);this.pathMap.has(c)||this.pathMap.set(c,[]),this.pathMap.get(c).push(l)}this.pathMap.size===1&&(this.autoFlatten=!0,this.oneKey=this.pathMap.keys().next().value??"");let t=(this.addition.filterFileTypes||"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac").split(",").map(a=>a.trim().toLowerCase()).filter(Boolean);this.supportSuffix=new Set(t);let i=(this.addition.downloadFileTypes||"ass,srt,vtt,sub,strm").split(",").map(a=>a.trim().toLowerCase()).filter(Boolean);this.downloadSuffix=new Set(i);let{resolvePath:n}=await Promise.resolve().then(()=>(nt(),ii)),{getDriver:s}=await Promise.resolve().then(()=>(ar(),tn));for(let a of this.pathMap.values())for(let o of a)try{let c=await n(o);if(!c.isVirtual&&c.storage){let l=await s(c.storage.driver,c.storage);this.remotes.set(o,{driver:l,physical:c.physical||"/"})}}catch(c){console.warn(`[Strm] failed to resolve remote path '${o}':`,c)}}encodePath(e){return e.split("/").map(t=>encodeURIComponent(t)).join("/")}getLink(e){let t=e;this.addition.encodePath&&(t=this.encodePath(e));let i=this.addition.PathPrefix||"/d";return t=bh(i,t),t.startsWith("/")||(t="/"+t),this.addition.withoutUrl?t:`${(this.addition.siteUrl||"").replace(/\/+$/,"")}${t}`}ext(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}async listRemote(e,t){let i=this.remotes.get(e);if(!i)return[];let n=bh(i.physical,t);try{return await i.driver.list("",n)}catch{return[]}}convert(e,t){let i=[];for(let n of t){if(n.is_dir){i.push(n);continue}let s=this.ext(n.name),a=bh(e,n.name);if(this.downloadSuffix.has(s))i.push({...n,size:n.size});else if(this.supportSuffix.has(s)){let o=n.name.replace(/\.[^.]+$/,"")+".strm";i.push({name:o,size:new TextEncoder().encode(this.getLink(a)).length,is_dir:!1,modified:n.modified,sign:a,thumb:n.thumb||"",type:X(o,!1),raw_url:""})}}return i}async list(e,t){let i=t||"/";if(i==="/"&&!this.autoFlatten){let l=[];for(let d of this.pathMap.keys())l.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""});return l}let{root:n,sub:s}=this.autoFlatten?{root:this.oneKey,sub:i.replace(/^\//,"")}:(()=>{let[l,d]=j5(i);return{root:l,sub:d}})(),a=this.pathMap.get(n);if(!a)throw new Error(`[Strm] path not found: ${i}`);let o=[],c=new Set;for(let l of a){if(!this.remotes.get(l))continue;let u=bh(l,s),f=await this.listRemote(l,s);for(let A of this.convert(u,f))c.has(A.name)||(c.add(A.name),o.push(A))}return ue(o,"name","asc")}async get(e,t){let i=t||"/";if(i.endsWith(".strm")){let o=z5(i),c=J5(i),d=(await this.list("",o)).find(u=>u.name===c);if(!d)throw new Error(`[Strm] not found: ${i}`);return d}let[n,s]=j5(i),a=this.pathMap.get(n);if(!a)throw new Error(`[Strm] path not found: ${i}`);for(let o of a){let c=this.remotes.get(o);if(!c)continue;let l=bh(c.physical,s);try{let d=await c.driver.get("",l);if(d)return d}catch{}}throw new Error(`[Strm] not found: ${i}`)}async mkdir(){throw new Error("[Strm] mkdir is not supported")}async rename(){throw new Error("[Strm] rename is not supported")}async remove(){throw new Error("[Strm] remove is not supported")}async move(){throw new Error("[Strm] move is not supported")}async copy(){throw new Error("[Strm] copy is not supported")}async put(){throw new Error("[Strm] put is not supported")}async createReadStream(e){let t=e||"/",i=z5(t),n=J5(t),a=(await this.list("",i)).find(l=>l.name===n);if(!a||!a.sign)throw new Error(`[Strm] not found: ${t}`);let o=this.getLink(a.sign),c=new TextEncoder().encode(o);return new ReadableStream({start(l){l.enqueue(c),l.close()}})}}});function Uo(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function o1(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function zd(r){return r.split("/").filter(Boolean).pop()||""}var pI,V5=J(()=>{"use strict";ve();pI=class{addition;remoteDriver=null;remoteRoot="/";chunkPrefix;customExt;partSize;constructor(e){this.addition=e||{},this.chunkPrefix=this.addition.chunk_prefix||"[openlist_chunk]",this.customExt=this.addition.custom_ext||"",this.partSize=Number(this.addition.part_size)||0}async init(){if(this.partSize<=0)throw new Error("[Chunk] part_size must be positive");if(!this.chunkPrefix)throw new Error("[Chunk] chunk_prefix must not be empty");let{resolvePath:e}=await Promise.resolve().then(()=>(nt(),ii)),{getDriver:t}=await Promise.resolve().then(()=>(ar(),tn)),i=await e(this.addition.remote_path||"/");if(i.isVirtual||!i.storage)throw new Error(`[Chunk] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=i.physical||"/",this.remoteDriver=await t(i.storage.driver,i.storage)}ensureReady(){if(!this.remoteDriver)throw new Error("[Chunk] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}getPartName(e){return`${e}${this.customExt}`}chunkDirRemote(e){let t=o1(this.joinRemote(e)),i=zd(e);return Uo(t,this.chunkPrefix+i)}async listParts(e){this.ensureReady();let t=this.chunkDirRemote(e),i=await this.remoteDriver.list("",t),n=[];for(let s of i){if(s.is_dir)continue;let a=parseInt(s.name.replace(new RegExp(`${this.customExt}$`),""),10);Number.isNaN(a)||(n[a]={name:s.name,size:s.size,modified:s.modified,raw_url:s.raw_url||"",raw_url_headers:s.raw_url_headers})}return n.filter(s=>!!s)}async totalChunkSize(e){return(await this.listParts(e)).reduce((i,n)=>i+n.size,0)}async list(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.list("",i),s=[],a=[];for(let o of n){if(o.is_dir&&o.name.startsWith(this.chunkPrefix)){let c=o.name.slice(this.chunkPrefix.length),l=s.length;s.push(null),a.push((async()=>{let d=Uo(t,o.name),u=await this.totalChunkSize(d);s[l]={name:c,size:u,is_dir:!1,modified:o.modified,sign:this.chunkPrefix+c,type:X(c,!1),raw_url:""}})());continue}!this.addition.show_hidden&&o.name.startsWith(".")||s.push(o)}return await Promise.all(a),s.filter(o=>!!o)}async get(e,t){this.ensureReady();let i=this.joinRemote(t);try{let o=await this.remoteDriver.get("",i);if(o&&!o.is_dir||o)return o}catch{}let n=zd(t),s=await this.totalChunkSize(t),a=await this.listParts(t);return{name:n,size:s,is_dir:!1,modified:a[0]?.modified||new Date().toISOString(),sign:this.chunkPrefix+n,type:X(n,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.rename("",n,i)}catch{let s=o1(n),a=Uo(s,this.chunkPrefix+zd(t));await this.remoteDriver.rename("",a,this.chunkPrefix+i)}}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.remove("",n,i)}catch{await this.remoteDriver.remove("",this.chunkDirRemote(t),i)}}async move(e,t,i,n,s){this.ensureReady();let a=this.joinRemote(n),o=this.joinRemote(s);try{await this.remoteDriver.get("",a),await this.remoteDriver.move(e,t,i,a,o)}catch{await this.remoteDriver.move(e,t,i,this.chunkDirRemote(n),Uo(o,this.chunkPrefix+zd(n)))}}async copy(e,t,i,n,s){this.ensureReady();let a=this.joinRemote(n),o=this.joinRemote(s);try{await this.remoteDriver.get("",a),await this.remoteDriver.copy(e,t,i,a,o)}catch{await this.remoteDriver.copy(e,t,i,this.chunkDirRemote(n),Uo(o,this.chunkPrefix+zd(n)))}}async put(e,t,i){this.ensureReady();let n=i.length,s=this.joinRemote(t);if(this.addition.chunk_large_file_only&&n<=this.partSize){await this.remoteDriver.put("",s,i);return}if(n<=this.partSize){await this.remoteDriver.put("",s,i);return}let a=this.chunkDirRemote(t);try{await this.remoteDriver.mkdir("",a)}catch{}let o=0,c=0;for(;o<n;){let l=Math.min(o+this.partSize,n),d=i.subarray(o,l),u=Uo(a,this.getPartName(c));await this.remoteDriver.put("",u,Buffer.from(d)),o=l,c++}}async createReadStream(e,t){this.ensureReady();let i=await this.listParts(e),n=i.reduce((d,u)=>d+u.size,0),s=this.remoteDriver,a=this.chunkPrefix,o=t?.start??0,c=t?t.end-t.start+1:n;return new ReadableStream({start:async d=>{for(let u of i){let f=u.size;if(o>=f){o-=f;continue}let A=u.raw_url;if(!A){let m=o1(e),w=Uo(Uo(m,a+zd(e)),u.name);try{A=(await s.get("",w)).raw_url||""}catch{A=""}}if(!A){d.error(new Error(`[Chunk] failed to resolve download url for ${u.name}`));return}let g=await fetch(A,{headers:u.raw_url_headers||{}});if(!g.ok){d.error(new Error(`[Chunk] download part ${u.name} failed: HTTP ${g.status}`));return}let I=new Uint8Array(await g.arrayBuffer());if(o>0&&(I=I.subarray(o),o=0),c>=0&&I.length>c&&(I=I.subarray(0,c)),I.length>0&&d.enqueue(I),c>=0&&(c-=I.length,c<=0))break}d.close()}})}}});function zY(r){let e=r.replace(/^https?:\/\//,""),t=e.indexOf(".");return(t>=0?e.slice(0,t):e).toLowerCase()}function Y5(r){return r.endsWith("/")?r:r+"/"}function vh(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}function JY(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function jY(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function W5(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,new TextEncoder().encode(r));return jY(new Uint8Array(i))}function $Y(r){let e={blobs:[],prefixes:[]},t=/<Blob>([\s\S]*?)<\/Blob>/g,i=/<BlobPrefix>[\s\S]*?<Name>([^<]+)<\/Name>[\s\S]*?<\/BlobPrefix>/g,n;for(;n=t.exec(r);){let s=n[1],a=(s.match(/<Name>([^<]+)<\/Name>/)||[])[1]||"";if(a.endsWith("/"))continue;let o=parseInt((s.match(/<Content-Length>(\d+)<\/Content-Length>/)||[])[1]||"0",10),c=(s.match(/<Last-Modified>([^<]+)<\/Last-Modified>/)||[])[1]||"";e.blobs.push({name:a,size:o,modified:c?new Date(c).toISOString():new Date().toISOString()})}for(;n=i.exec(r);)e.prefixes.push(n[1]);return e}var mI,X5=J(()=>{"use strict";ve();$e();mI=class{addition;accountName;keyBytes;endpoint;container;constructor(e){this.addition=e||{},this.accountName=zY(this.addition.endpoint||""),this.keyBytes=JY(this.addition.access_key||""),this.endpoint=(this.addition.endpoint||"").replace(/\/+$/,""),this.container=(this.addition.container_name||"").replace(/^\/+|\/+$/g,"")}async init(){if(!/^[a-z0-9]+$/.test(this.accountName))throw new Error("[AzureBlob] invalid storage account name");if(!this.container)throw new Error("[AzureBlob] container_name is required");if(!this.addition.access_key)throw new Error("[AzureBlob] access_key is required")}async sharedKeySignature(e,t,i,n,s,a){let o=n["x-ms-date"]||"",c=Object.keys(n).filter(u=>u.startsWith("x-ms-")).sort().map(u=>`${u.toLowerCase()}:${n[u].trim()} `).join(""),l=`/${this.accountName}${t?"/"+t:""} -${i.split("&").filter(Boolean).sort().map(u=>{let[f,h]=u.split("=");return`${f.toLowerCase()}:${h||""}`}).join(` +${i.split("&").filter(Boolean).sort().map(u=>{let[f,A]=u.split("=");return`${f.toLowerCase()}:${A||""}`}).join(` `)}`,d=`${e} ${s} -${o} +${a} -${c}${l}`;return Z4(d,this.keyBytes)}async request(e,t,i,n={}){let s=new Date().toUTCString(),o=n.contentType||"",a=n.body?String(n.body.length):"",c={"x-ms-date":s,"x-ms-version":"2021-08-06",...n.extraHeaders||{}},l=await this.sharedKeySignature(e,t,i,c,a,o),d=`${this.endpoint}/${this.container}${t?"/"+t:""}${i?"?"+i:""}`,u={Authorization:`SharedKey ${this.accountName}:${l}`,...c};return a&&(u["Content-Length"]=a),o&&(u["Content-Type"]=o),fetch(d,{method:e,headers:u,...n.body?{body:n.body}:{}})}async sasUrl(e){let i=new Date(Date.now()+(this.addition.sign_url_expire||4)*3600*1e3).toISOString().replace(/\.\d+Z$/,"Z"),n=`/blob/${this.accountName}/${this.container}/${e}`,s=`r +${c}${l}`;return W5(d,this.keyBytes)}async request(e,t,i,n={}){let s=new Date().toUTCString(),a=n.contentType||"",o=n.body?String(n.body.length):"",c={"x-ms-date":s,"x-ms-version":"2021-08-06",...n.extraHeaders||{}},l=await this.sharedKeySignature(e,t,i,c,o,a),d=`${this.endpoint}/${this.container}${t?"/"+t:""}${i?"?"+i:""}`,u={Authorization:`SharedKey ${this.accountName}:${l}`,...c};return o&&(u["Content-Length"]=o),a&&(u["Content-Type"]=a),fetch(d,{method:e,headers:u,...n.body?{body:n.body}:{}})}async sasUrl(e){let i=new Date(Date.now()+(this.addition.sign_url_expire||4)*3600*1e3).toISOString().replace(/\.\d+Z$/,"Z"),n=`/blob/${this.accountName}/${this.container}/${e}`,s=`r ${i} @@ -183,49 +185,49 @@ ${n} -`,o=encodeURIComponent(await Z4(s,this.keyBytes));return`${this.endpoint}/${this.container}/${e}?sp=r&st=&se=${encodeURIComponent(i)}&sv=2021-08-06&sr=b&sig=${o}`}getKey(e){return String(e||"/").replace(/^\/+/,"")}async list(e,t){let i=this.getKey(t);i&&(i=X4(i));let n=`restype=container&comp=list&delimiter=%2F&prefix=${encodeURIComponent(i)}`,s=await this.request("GET","",n);if(!s.ok)throw new Error(`[AzureBlob] list failed: HTTP ${s.status}`);let o=await s.text(),{blobs:a,prefixes:c}=rj(o),l=[];for(let d of c){let u=d.replace(/\/+$/,"").split("/").filter(Boolean).pop()||d;l.push({name:u,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""})}for(let d of a){let u=d.name.split("/").filter(Boolean).pop()||d.name;l.push({name:u,size:d.size,is_dir:!1,modified:d.modified,sign:d.name,type:X(u,!1),raw_url:""})}return de(l,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=await this.sasUrl(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){let i=X4(this.getKey(t)),n=await this.request("PUT",i,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-meta-hdi_isfolder":"true"}});if(!n.ok)throw new Error(`[AzureBlob] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=rf(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.copyBlob(n,s),await this.deleteBlob(n)}async remove(e,t,i){let n=this.getKey(t);await this.deleteBlob(n)}async move(e,t,i,n,s){for(let o of i){let a=rf(this.getKey(n),o),c=rf(this.getKey(s),o);await this.copyBlob(a,c),await this.deleteBlob(a)}}async copy(e,t,i,n,s){for(let o of i){let a=rf(this.getKey(n),o),c=rf(this.getKey(s),o);await this.copyBlob(a,c)}}async put(e,t,i){let n=this.getKey(t),s=await this.request("PUT",n,"",{body:new Uint8Array(i),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob"}});if(!s.ok)throw new Error(`[AzureBlob] put failed: HTTP ${s.status}`)}async copyBlob(e,t){let i=`${this.endpoint}/${this.container}/${e}`,n=await this.request("PUT",t,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-copy-source":i}});if(n.status!==201&&n.status!==202&&!n.ok)throw new Error(`[AzureBlob] copy failed: HTTP ${n.status}`)}async deleteBlob(e){let t=await this.request("DELETE",e,"");if(t.status!==202&&t.status!==404&&!t.ok)throw new Error(`[AzureBlob] delete failed: HTTP ${t.status}`)}}});function nf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}var Um,tF=j(()=>{"use strict";Be();He();si();Um=class{addition;authHeader;apiBase;constructor(e){this.addition=e||{};let t=this.addition.operator_name||"",i=this.addition.operator_password||"";this.authHeader=`Basic ${btoa(`${t}:${i}`)}`,this.apiBase=`https://v0.api.upyun.com/${this.addition.bucket||""}`}async init(){if(!this.addition.bucket||!this.addition.operator_name||!this.addition.operator_password)throw new Error("[USS] bucket / operator_name / operator_password are required")}getKey(e,t=!1){let i=String(e||"/").replace(/^\/+/,"");return t&&i&&!i.endsWith("/")&&(i+="/"),i}getDownloadHost(){let e=this.addition.endpoint||"";return/^https?:\/\//.test(e)||(e="https://"+e),e.replace(/\/+$/,"")}async list(e,t){let i=this.getKey(t,!0),n=`${this.apiBase}/${i}`,s=await fetch(n,{method:"GET",headers:{Authorization:this.authHeader,Accept:"application/json"}});if(!s.ok)throw new Error(`[USS] list failed: HTTP ${s.status}`);let o=await s.text(),a=[];try{let c=JSON.parse(o);if(Array.isArray(c)){for(let l of c){let d=l.name||l.file_name||"",u=l.type==="F"||l.is_dir===!0||d.endsWith("/");a.push({name:d.replace(/\/+$/,""),size:l.length||l.size||0,is_dir:u,modified:l.last_modified?new Date(l.last_modified*1e3).toISOString():new Date().toISOString(),sign:"",type:X(d,u),raw_url:""})}return de(a,"name","asc")}}catch{}for(let c of o.split(` -`)){let l=c.trim();if(!l)continue;let d=l.split(" "),u=(d[0]||"").trim(),h=(d[1]||"").trim()==="F"||u.endsWith("/");a.push({name:u.replace(/\/+$/,""),size:parseInt(d[2]||"0",10)||0,is_dir:h,modified:d[3]?new Date(parseInt(d[3],10)*1e3).toISOString():new Date().toISOString(),sign:"",type:X(u,h),raw_url:""})}return de(a,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=Math.floor(Date.now()/1e3)+(this.addition.sign_url_expire||4)*3600,a=`${this.addition.anti_theft_chain_token||this.addition.operator_password}&${s}&/${i}`,c=$t(a).slice(12,20)+s,l=encodeURIComponent(n),d=`${this.getDownloadHost()}/${i}?_upd=${l}&_upt=${c}`;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:d}}async mkdir(e,t){let i=this.getKey(t,!0),n=await fetch(`${this.apiBase}/${i}`,{method:"POST",headers:{Authorization:this.authHeader,Folder:"true"}});if(!n.ok)throw new Error(`[USS] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=nf(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.moveOrCopy(n,s,"move")}async remove(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"DELETE",headers:{Authorization:this.authHeader}});if(!s.ok)throw new Error(`[USS] remove failed: HTTP ${s.status}`)}async move(e,t,i,n,s){for(let o of i){let a=nf(this.getKey(n),o),c=nf(this.getKey(s),o);await this.moveOrCopy(a,c,"move")}}async copy(e,t,i,n,s){for(let o of i){let a=nf(this.getKey(n),o),c=nf(this.getKey(s),o);await this.moveOrCopy(a,c,"copy")}}async put(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"PUT",headers:{Authorization:this.authHeader,"Content-Type":"application/octet-stream"},body:i});if(!s.ok)throw new Error(`[USS] put failed: HTTP ${s.status}`)}async moveOrCopy(e,t,i){let n=i==="move"?"X-Upyun-Move-Source":"X-Upyun-Copy-Source",s=await fetch(`${this.apiBase}/${t}`,{method:"PUT",headers:{Authorization:this.authHeader,[n]:`/${e}`}});if(!s.ok)throw new Error(`[USS] ${i} failed: HTTP ${s.status}`)}}});function ij(r){return r?r.message?r.message:r.msg?r.msg:"request failed":"request failed"}var Ms,lE,Rm,rF=j(()=>{"use strict";Ms="https://alidocs.dingtalk.com",lE="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36";Rm=class{constructor(e){this.cookie=e}cookie;headers(){return{Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:Ms+"/",Origin:Ms,"User-Agent":lE}}async request(e,t){let i=await fetch(e,{...t,headers:{...this.headers(),...t?.headers||{}}}),n=await i.json().catch(()=>({}));if(!i.ok||n.isSuccess===!1)throw new Error(ij(n));return n}async checkCookie(){await this.request(`${Ms}/portal/api/v1/mine/info`)}async list(e){let t=new URLSearchParams({dentryUuid:e,withParentAncestors:"true",orderType:"SORT_KEY",sortType:"desc",listDentrySource:"2",pageSize:"1000"});return(await this.request(`${Ms}/box/api/v2/dentry/list?${t.toString()}`)).data?.children||[]}async download(e){let t=new URLSearchParams({dentryUuid:e,version:"1",supportDownloadTypes:"URL_PRE_SIGNATURE,HTTP_TO_CENTER",downloadType:"URL_PRE_SIGNATURE"}),n=(await this.request(`${Ms}/box/api/v2/file/download?${t.toString()}`)).data?.ossUrlPreSignatureInfo?.preSignUrls||[];if(n.length===0)throw new Error("empty download url");return n[0]}async post(e,t){await this.request(`${Ms}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}}});function nj(r){let e={...r||{}};return e.cookie=(e.cookie||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim(),e}function iF(r){let e=r.dentryType==="folder";return{name:r.name,size:e?0:r.fileSize||0,is_dir:e,modified:r.updatedTime?new Date(r.updatedTime).toISOString():new Date().toISOString(),created:r.createdTime?new Date(r.createdTime).toISOString():void 0,sign:r.dentryUuid,type:X(r.name,e)}}var Nm,nF=j(()=>{"use strict";Be();He();rF();Nm=class{addition;client;idCache=new Map;constructor(e){this.addition=nj(e),this.client=new Rm(this.addition.cookie)}async init(){if(!this.addition.cookie)throw new Error("cookie is empty");if(!this.addition.root_folder_id)throw new Error("root folder id is empty");await this.client.checkCookie()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.list(s)).find(d=>d.name===a&&d.dentryType==="folder");if(!l)throw new Error(`folder not found: ${a}`);s=l.dentryUuid,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.list(o)).find(l=>l.name===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.dentryUuid),c.dentryUuid}async list(e,t){let i=await this.resolveId(t),n=await this.client.list(i),s=this.cleanPath(t),o=n.filter(a=>a.dentryUuid&&a.name).map(a=>(this.idCache.set(this.joinPath(s,a.name),a.dentryUuid),iF(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.list(o)).find(u=>u.name===n);if(!c)throw new Error("file not found");let l=c.dentryType==="folder",d="";return l||(d=await this.client.download(c.dentryUuid)),this.idCache.set(i,c.dentryUuid),{...iF(c),raw_url:d,raw_url_headers:{"User-Agent":lE,Referer:Ms+"/",Origin:Ms}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.post("/box/api/v2/dentry/createfolder",{dentryType:"folder",name:s,parentDentryUuid:o,conflictHandleStrategy:"auto_rename"})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v2/dentry/rename",{dentryUuid:n,name:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/move",{targetParentDentryUuid:c,sourceDentryUuid:o,operateFrom:1})}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/copy",{sourceDentryUuid:o,targetParentDentryUuid:c,operateFrom:1,onlyCopyMeta:!1})}async remove(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v1/dentry/recycle",{dentryUuid:n})}async put(e,t,i){throw new Error("AliDoc does not support upload")}}});var sj,qm,sF=j(()=>{"use strict";sj='MediaBrowser Client="OpenList", Device="OpenList", DeviceId="openlist-emby", Version="1.0.0"',qm=class{baseURL;token;userID;constructor(e,t="",i=""){this.baseURL=(e||"").trim().replace(/\/+$/,""),this.token=t,this.userID=i}async login(e,t){let i=await fetch(`${this.baseURL}/Users/AuthenticateByName`,{method:"POST",headers:{"Content-Type":"application/json","X-Emby-Authorization":sj},body:JSON.stringify({Username:e,Pw:t})});if(!i.ok)throw new Error(`emby auth failed: status=${i.status}`);let n=await i.json();if(!n.AccessToken||!n.User?.Id)throw new Error("emby auth response missing access token or user id");this.token=n.AccessToken,this.userID=n.User.Id}async getItems(e){let t=new URLSearchParams({ParentId:e,Recursive:"false",Fields:"Path,Size,DateCreated,SeriesName,IndexNumber,ParentIndexNumber",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items?${t.toString()}`);if(!i.ok)throw new Error(`emby list failed: status=${i.status}`);return await i.json()}async getItemDetail(e){let t=new URLSearchParams({Fields:"MediaSources",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items/${encodeURIComponent(e)}?${t.toString()}`);return i.ok?await i.json():null}}});function oj(r){let e={...r||{}};return e.url=(e.url||"").trim().replace(/\/+$/,""),e.api_key=(e.api_key||"").trim(),e.user_id=(e.user_id||"").trim(),e.username=(e.username||"").trim(),e.password=(e.password||"").trim(),e.link_method=(e.link_method||"stream").toLowerCase(),e.root_folder_id=(e.root_folder_id||"").trim()||"1",e}function oF(r){return{name:r.Name,size:r.IsFolder?0:r.Size||0,is_dir:r.IsFolder,modified:r.DateCreated?new Date(r.DateCreated).toISOString():new Date().toISOString(),sign:r.Id,type:X(r.Name,r.IsFolder)}}var Om,aF=j(()=>{"use strict";Be();He();sF();Om=class{addition;client;idCache=new Map;constructor(e){this.addition=oj(e),this.client=new qm(this.addition.url,this.addition.api_key,this.addition.user_id)}async init(){if(!this.addition.url)throw new Error("url is required");if(this.addition.api_key){if(!this.addition.user_id)throw new Error("user_id is required when api_key is set");return}if(!this.addition.username)throw new Error("please provide api_key+user_id or username(+password)");await this.client.login(this.addition.username,this.addition.password)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.getItems(s)).Items.find(d=>d.Name===a&&d.IsFolder);if(!l)throw new Error(`folder not found: ${a}`);s=l.Id,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.client.getItems(i),s=this.cleanPath(t),o=n.Items.map(a=>(this.idCache.set(this.joinPath(s,a.Name),a.Id),oF(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getItems(o)).Items.find(u=>u.Name===n);if(!c)throw new Error("file not found");let l=c.IsFolder,d="";return l||(d=await this.buildLink(c.Id)),this.idCache.set(i,c.Id),{...oF(c),raw_url:d,raw_url_headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"}}}async buildLink(e){let t=this.addition.link_method==="download",i="",n="";if(!t){let o=await this.client.getItemDetail(e);if(o&&o.MediaSources?.length){let a=o.MediaSources.find(c=>c.Id&&c.SupportsDirectStream)||o.MediaSources.find(c=>c.Id);a&&(i=a.Id,n=a.Container)}}let s=new URL(this.addition.url);return t?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Items/${encodeURIComponent(e)}/Download`:n?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream.${n}`:s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream`,s.searchParams.set("api_key",this.client.token),i&&s.searchParams.set("MediaSourceId",i),t||s.searchParams.set("Static","true"),s.toString()}async mkdir(e,t){throw new Error("Emby is read-only")}async rename(e,t,i){throw new Error("Emby is read-only")}async move(e,t,i,n,s){throw new Error("Emby is read-only")}async copy(e,t,i,n,s){throw new Error("Emby is read-only")}async remove(e,t,i){throw new Error("Emby is read-only")}async put(e,t,i){throw new Error("Emby is read-only")}}});function Lm(r,e){let t=(r||"").trim();if(t||(t=e),!t)throw new Error("empty url");t.includes("://")||(t="https://"+t);let i=new URL(t);if(!i.host)throw new Error("invalid url: "+r);return i.pathname=i.pathname.replace(/\/+$/,""),i.toString()}function Yo(r){return r?"/"+r.replace(/^\/+/,"").split("/").filter(Boolean).join("/"):"/"}function cF(r){let e=new Uint8Array(r),t="";for(let i of e)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function aj(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}async function cj(r,e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",t,new TextEncoder().encode(e))}function lj(r){return Array.from(r.keys()).filter(t=>t!=="token"&&t!=="expires").sort().map(t=>`${t}=${r.get(t)||""}`).join("&")}function Ic(r,e,t){let i=Lm(r.endpoint,Mm),n=new URL(i),s=Yo(e),o=(r.storage_zone_name||"").replace(/^\/+|\/+$/g,"");return s==="/"?n.pathname=`/${o}/`:(n.pathname=`/${o}/${s.replace(/^\/+/,"")}`,t&&!n.pathname.endsWith("/")&&(n.pathname+="/")),n.toString()}function dF(r,e){let t=new URL(r.cdn_base_url),i=Yo(e),n=t.pathname.replace(/\/+$/,"");return i==="/"?t.pathname=n?n+"/":"/":t.pathname=n+"/"+i.replace(/^\/+/,""),t.toString()}async function uF(r,e){let t=r.sign_url_expire>0?r.sign_url_expire:4,i=Math.floor(Date.now()/1e3)+t*3600,n=new URL(e),s=lj(n.searchParams),o=decodeURIComponent(n.pathname),a=(r.cdn_token_method||"sha256").toLowerCase(),c;if(a==="hmac_sha256"){let l=await cj(r.cdn_token_key,o+String(i)+s);c="HS256-"+cF(l)}else{let l=await aj(r.cdn_token_key+o+String(i)+s);c=cF(l)}return n.searchParams.set("token",c),n.searchParams.set("expires",String(i)),n.toString()}async function Ml(r){if(r.ok)return;let e=await r.text().catch(()=>"")||"",t=e.trim();try{let i=JSON.parse(e);i?.length&&i[0].Message&&(t=i[0].Message)}catch{}throw new Error(`bunny storage request failed: ${r.status} ${t}`)}var Mm,lF,fF=j(()=>{"use strict";Mm="storage.bunnycdn.com",lF=".openlist"});function dj(r){let e={...r||{}};return e.storage_zone_name=(e.storage_zone_name||"").trim(),e.access_key=(e.access_key||"").trim(),e.endpoint=(e.endpoint||"").trim()||Mm,e.cdn_base_url=(e.cdn_base_url||"").trim(),e.cdn_token_key=(e.cdn_token_key||"").trim(),e.cdn_token_method=(e.cdn_token_method||"sha256").toLowerCase(),e.cdn_token_include_ip=!!e.cdn_token_include_ip,e.sign_url_expire=Number(e.sign_url_expire||4),e.placeholder=(e.placeholder||"").trim()||lF,e.root_folder_path=e.root_folder_path||"/",e}function uj(r){if(!r)return new Date().toISOString();let e=new Date(r);return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var Hm,AF=j(()=>{"use strict";Be();He();fF();Hm=class{addition;constructor(e){this.addition=dj(e)}async init(){Lm(this.addition.endpoint,Mm),this.addition.cdn_base_url&&Lm(this.addition.cdn_base_url,"")}toFileItem(e,t){let i=e==="/"?`/${t.ObjectName}`:`${e}/${t.ObjectName}`;return{name:t.ObjectName,size:t.IsDirectory?0:t.Length||0,is_dir:t.IsDirectory,modified:uj(t.LastChanged),sign:t.Guid||i,type:X(t.ObjectName,t.IsDirectory)}}async list(e,t){let i=Yo(t),n=Ic(this.addition,i,!0),s=await fetch(n,{headers:{AccessKey:this.addition.access_key}});await Ml(s);let c=(await s.json()).filter(l=>!(!l.ObjectName||!l.IsDirectory&&l.ObjectName===this.addition.placeholder)).map(l=>this.toFileItem(i,l));return de(c,"name","asc")}async get(e,t){let i=Yo(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=Ic(this.addition,s,!0),a=await fetch(o,{headers:{AccessKey:this.addition.access_key}});await Ml(a);let l=(await a.json()).find(f=>f.ObjectName===n);if(!l)throw new Error("object not found");let d="",u={};return l.IsDirectory||(this.addition.cdn_base_url?(d=dF(this.addition,i),this.addition.cdn_token_key&&(d=await uF(this.addition,d))):(d=Ic(this.addition,i,!1),u={AccessKey:this.addition.access_key})),{...this.toFileItem(s,l),raw_url:d,raw_url_headers:u}}async mkdir(e,t){let i=Yo(t),n=i==="/"?`/${this.addition.placeholder}`:`${i}/${this.addition.placeholder}`,s=Ic(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":"0"}});await Ml(o)}async rename(e,t,i){throw new Error("Bunny Storage does not support rename")}async move(e,t,i,n,s){throw new Error("Bunny Storage does not support move")}async copy(e,t,i,n,s){throw new Error("Bunny Storage does not support copy")}async remove(e,t,i){let n=Yo(t),s=await fetch(Ic(this.addition,n,!0),{method:"DELETE",headers:{AccessKey:this.addition.access_key}});await Ml(s)}async put(e,t,i){let n=Yo(t),s=Ic(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":String(i.length)},body:new Uint8Array(i)});await Ml(o)}}});function Gm(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function hF(r,e){if(!r)return 0;for(let t of e){let i=r[t];if(i!=null){let n=Number(i);if(!isNaN(n))return n}}return 0}function gF(r){return hF(r,["FileSizeBytes","File-Size","fileSize","size"])}function pF(r){return hF(r,["TimeStamp","timestamp","modified"])}var Km,mF=j(()=>{"use strict";Km=class{constructor(e,t){this.address=e;this.token=t}address;token;headers(){return{Authorization:"Bearer "+this.token,Accept:"application/json"}}async request(e,t,i){let s=null;for(let o=0;o<3;o++)try{let a=await fetch(this.address+t,{method:e,headers:{...this.headers(),...i&&!(i instanceof FormData)?{"Content-Type":"application/json"}:{}},body:i?i instanceof FormData?i:JSON.stringify(i):void 0});if(a.status===429){await new Promise(u=>setTimeout(u,(o+1)*2e3));continue}let c=await a.text(),l={};try{l=c?JSON.parse(c):{}}catch{l={}}let d=l;if(d.error||d.message)throw new Error("API error: "+(d.error||d.message));if(!a.ok)throw new Error(`HTTP ${a.status}`);return l}catch(a){if(s=a,o<2){await new Promise(c=>setTimeout(c,(o+1)*1e3));continue}}throw s||new Error("max retries exceeded")}async list(e,t,i){return this.request("GET",`/api/manage/list?dir=${encodeURIComponent(e)}&start=${t}&count=${i}`)}async remove(e,t){return this.request("POST",`/api/manage/delete${Gm(e)}?folder=${t}`)}}});function fj(r){let e={...r||{}};return e.address=(e.address||"").trim().replace(/\/+$/,""),e.token=(e.token||"").trim(),e.small_channel_name=(e.small_channel_name||"").trim(),e.large_channel_name=(e.large_channel_name||"").trim(),e.large_channel_type=(e.large_channel_type||"").trim(),e.upload_thread=Math.min(Number(e.upload_thread||3),32),e.root_folder_path=e.root_folder_path||"/",e}var dE,zm,yF=j(()=>{"use strict";Be();He();mF();dE=1e3;zm=class{addition;client;publicUrlPrefix="";constructor(e){this.addition=fj(e),this.client=new Km(this.addition.address,this.addition.token)}async init(){if(!this.addition.address)throw new Error("address is required");if(!this.addition.token)throw new Error("token is required");await this.client.list("/",0,1)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=new Set,s=new Set,o=[],a=0;for(;;){let c=await this.client.list(i,a,dE);if(!c.files?.length&&!c.directories?.length)break;for(let l of c.directories||[]){let d="/"+(l||"").replace(/^\/+|\/+$/g,"");n.has(d)||(n.add(d),o.push({name:d.split("/").filter(Boolean).pop()||"",size:0,is_dir:!0,modified:new Date().toISOString(),sign:d,type:1}))}for(let l of c.files||[])if(!s.has(l.name)){s.add(l.name);let d=l.name.split("/").filter(Boolean).pop()||l.name,u=gF(l.metadata),f=pF(l.metadata);o.push({name:d,size:u,is_dir:!1,modified:f?new Date(f).toISOString():new Date().toISOString(),sign:"/"+(l.name||"").replace(/^\/+/,""),type:X(d,!1)})}if((c.files?.length||0)+(c.directories?.length||0)<dE)break;a+=dE}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=this.publicUrlPrefix?this.publicUrlPrefix+Gm(i):this.addition.address+"/file"+Gm(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){}async rename(e,t,i){throw new Error("cloudflare_imgbed does not support rename")}async move(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support move")}async copy(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support copy")}async remove(e,t,i){let n=this.cleanPath(t);await this.client.remove(n,!1)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=this.addition.small_channel_name;if(!a)throw new Error("channel name not configured");let c=new URLSearchParams({returnFormat:"default",channelName:a,uploadFolder:s,autoRetry:"true"}),l=new FormData;l.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let d=await fetch(`${this.addition.address}/upload?${c.toString()}`,{method:"POST",headers:{Authorization:"Bearer "+this.addition.token},body:l});if(!d.ok)throw new Error(`upload failed ${d.status}: ${await d.text()}`);let u=await d.json();if(!u?.length||!u[0].src)throw new Error("no src returned");if(u[0].publicUrl)try{let f=new URL(u[0].publicUrl);this.publicUrlPrefix=f.protocol+"//"+f.host}catch{}}}});function xF(r){let e=(r||"").trim().replace(/\s/g,"");if(!e)return"";if(e.startsWith("+"))return e.startsWith("+86")&&e.length>3?"+86 "+e.slice(3):e;let t=e.replace(/\D/g,"");return t.startsWith("86")&&t.length>11,t.length===11?"+86 "+t:e}function CF(){let r=crypto.getRandomValues(new Uint8Array(16));return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function EF(r){let e=(r||"").toLowerCase().replace(/-/g,"");return e.length!==32||!/^[0-9a-f]+$/.test(e)?"":e}function uE(r){return r>0?new Date(r*1e3).toISOString():new Date().toISOString()}function wF(r){let e=(r||"").trim().toLowerCase();return e?e==="success"||e==="ok"||e.includes("\u6210\u529F"):!0}function hj(r){let e=(r||"").trim().toLowerCase();return e?e==="\u4E0A\u4F20\u5DF2\u5B8C\u6210"||e==="upload completed"||e==="already uploaded"||e==="\u79D2\u4F20\u6210\u529F":!1}var IF,Aj,sf,BF=j(()=>{"use strict";si();IF="https://account.guangyapan.com",Aj="https://api.guangyapan.com";sf=class{accessToken="";refreshToken="";clientId;deviceId;deviceSign;onTokensChanged;constructor(e){this.clientId=e.client_id||"",this.deviceId=e.device_id||"",this.deviceSign=e.device_sign||"",this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||""}accountHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json","X-Device-Model":"chrome%2F147.0.0.0","X-Device-Name":"PC-Chrome","X-Device-Sign":this.deviceSign,"X-Net-Work-Type":"NONE","X-OS-Version":"MacIntel","X-Platform-Version":"1","X-Protocol-Version":"301","X-Provider-Name":"NONE","X-SDK-Version":"9.0.2","X-Client-Id":this.clientId,"X-Client-Version":"0.0.1","X-Device-Id":this.deviceId}}apiHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json",Did:this.deviceId,Dt:"4",Authorization:"Bearer "+this.accessToken}}get hasToken(){return!!this.accessToken}get hasRefreshToken(){return!!this.refreshToken}async validateToken(){let e=await fetch(`${IF}/v1/user/me`,{headers:{...this.accountHeaders(),Authorization:"Bearer "+this.accessToken}});if(!e.ok)throw new Error(`validate token failed: ${e.status}`)}async refresh(){if(!this.refreshToken)throw new Error("refresh_token is empty");let e=await fetch(`${IF}/v1/auth/token`,{method:"POST",headers:this.accountHeaders(),body:JSON.stringify({client_id:this.clientId,grant_type:"refresh_token",refresh_token:this.refreshToken})}),t=await e.json();if(!e.ok||t.error||!t.access_token)throw new Error("refresh token failed: "+(t.error_description||t.error||e.status));this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),await this.onTokensChanged?.(this.accessToken,this.refreshToken)}async postAPI(e,t){let i=async()=>{let o=await fetch(`${Aj}${e}`,{method:"POST",headers:this.apiHeaders(),body:JSON.stringify(t??{})});return{res:o,json:await o.json().catch(()=>({}))}},{res:n,json:s}=await i();if((n.status===401||n.status===403)&&this.refreshToken){await this.refresh();let o=await i();n=o.res,s=o.json}if(!n.ok)throw new Error(`request failed: status=${n.status}`);return s}async getFileList(e,t,i,n){return this.postAPI("/userres/v1/file/get_file_list",{parentId:e,page:0,pageSize:t,orderBy:i,sortType:n})}async getDownloadURL(e){let t=await this.postAPI("/nd.bizuserres.s/v1/get_res_download_url",{fileId:e});return(t?.data?.signedURL||t?.data?.downloadUrl||"").trim()}async getUploadToken(e,t,i,n){let s={fileSize:i};n&&(s.md5=n);let o=await this.postAPI("/nd.bizuserres.s/v1/get_res_center_token",{capacity:2,name:t,parentId:e,res:s}),a=o.msg||"",c=o.code===156||hj(a);if(!wF(a)&&!c)throw new Error("get upload token failed: "+a);return{data:o.data,code:o.code,alreadyDone:c}}async waitTaskDone(e){for(let t=0;t<30;t++){let i=await this.postAPI("/nd.bizuserres.s/v1/get_task_status",{taskId:e});if(!wF(i.msg))throw new Error("get task status failed: "+i.msg);if(i.data?.status===2)return;if(i.data?.status===-1||i.data?.status===3)throw new Error(`task ${e} failed with status=${i.data.status}`);await new Promise(n=>setTimeout(n,300))}throw new Error(`task ${e} timeout`)}async waitUploadTaskInfo(e){for(let t=0;t<300;t++){if((await this.postAPI("/nd.bizuserres.s/v1/file/get_info_by_task_id",{taskId:e})).data?.fileId)return;await new Promise(n=>setTimeout(n,1e3))}throw new Error(`upload task ${e} timeout`)}static md5(e){return $t(e)}}});function gj(r){let e={...r||{}};return e.client_id=(e.client_id||"").trim(),e.device_id=EF(e.device_id||""),e.device_id||(e.device_id=CF()),e.device_sign=(e.device_sign||"").trim()||"wdi10."+e.device_id,e.page_size=Number(e.page_size||100),e.order_by=Number(e.order_by===void 0?3:e.order_by),e.sort_type=Number(e.sort_type===void 0?1:e.sort_type),e.root_folder_path=(e.root_folder_path||"").trim(),e.access_token=(e.access_token||"").trim(),e.refresh_token=(e.refresh_token||"").trim(),e.phone_number=xF(e.phone_number||""),e}function bF(r){let e=r.resType===2;return{name:r.fileName,size:e?0:r.fileSize||0,is_dir:e,modified:uE(r.utime),created:uE(r.ctime),sign:r.fileId,type:X(r.fileName,e)}}function pj(r,e){let t=(r||"").trim();if(!t)return t;!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t);let i;try{i=new URL(t)}catch{return t}let n=i.host;return e&&n.startsWith(e+".")&&(n=n.slice(e.length+1)),i.host=n,i.toString().replace(/\/+$/,"")}var Jm,vF=j(()=>{"use strict";Be();He();si();BF();Jm=class{addition;client;idCache=new Map;constructor(e,t){this.addition=gj(e),this.client=new sf(this.addition),this.client.onTokensChanged=t}async init(){if(!this.addition.client_id)throw new Error("client_id is required");if(this.addition.access_token)try{await this.client.validateToken();return}catch{this.addition.access_token=""}if(this.addition.refresh_token){await this.client.refresh(),await this.client.validateToken();return}throw new Error("login failed: provide a valid access_token, or refresh_token, or phone_number + verify_code")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s="",o="/";for(let a of n){let l=(await this.client.getFileList(s,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(d=>d.fileName===a&&d.resType===2);if(!l)throw new Error(`folder not found: ${a}`);s=l.fileId,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(l=>l.fileName===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.fileId),c.fileId}async list(e,t){let i=await this.resolveId(t),n=this.cleanPath(t),s=[];for(let o=0;o<1e4;o++){let a=await this.client.getFileList(i,this.addition.page_size,this.addition.order_by,this.addition.sort_type),c=a.data?.list||[];for(let l of c)this.idCache.set(this.joinPath(n,l.fileName),l.fileId),s.push(bF(l));if(c.length<this.addition.page_size||a.data?.total>0&&s.length>=a.data.total)break}return de(s,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(u=>u.fileName===n);if(!c)throw new Error("file not found");let l=c.resType===2,d="";return l||(d=await this.client.getDownloadURL(c.fileId)),this.idCache.set(i,c.fileId),{...bF(c),raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.postAPI("/nd.bizuserres.s/v1/file/create_dir",{parentId:o,dirName:s})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.postAPI("/nd.bizuserres.s/v1/file/rename",{fileId:n,newName:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/move_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/copy_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async remove(e,t,i){let n=await this.resolveItemId(t),s=await this.client.postAPI("/nd.bizuserres.s/v1/file/delete_file",{fileIds:[n]});s?.data?.taskId&&await this.client.waitTaskDone(s.data.taskId)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=await this.resolveId(s),c=new Uint8Array(i),l=sf.md5(c),{data:d,alreadyDone:u}=await this.client.getUploadToken(a,o,c.length,l),f=d?.taskId||"";if(u){if(!f)throw new Error("instant upload returns empty task id");await this.client.waitUploadTaskInfo(f);return}if(!d.objectPath||!d.bucketName||!d.endPoint||!d.accessKeyID||!d.secretAccessKey)throw new Error("upload token is incomplete");let h=pj(d.endPoint,d.bucketName),g=`https://${d.bucketName}.${new URL(h).host}/${d.objectPath.replace(/^\/+/,"")}`,p=new Date().toUTCString(),I="application/octet-stream",y=d.sessionToken?`x-oss-security-token:${d.sessionToken} -`:"",w=`/${d.bucketName}/${d.objectPath.replace(/^\/+/,"")}`,C=`PUT +`,a=encodeURIComponent(await W5(s,this.keyBytes));return`${this.endpoint}/${this.container}/${e}?sp=r&st=&se=${encodeURIComponent(i)}&sv=2021-08-06&sr=b&sig=${a}`}getKey(e){return String(e||"/").replace(/^\/+/,"")}async list(e,t){let i=this.getKey(t);i&&(i=Y5(i));let n=`restype=container&comp=list&delimiter=%2F&prefix=${encodeURIComponent(i)}`,s=await this.request("GET","",n);if(!s.ok)throw new Error(`[AzureBlob] list failed: HTTP ${s.status}`);let a=await s.text(),{blobs:o,prefixes:c}=$Y(a),l=[];for(let d of c){let u=d.replace(/\/+$/,"").split("/").filter(Boolean).pop()||d;l.push({name:u,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""})}for(let d of o){let u=d.name.split("/").filter(Boolean).pop()||d.name;l.push({name:u,size:d.size,is_dir:!1,modified:d.modified,sign:d.name,type:X(u,!1),raw_url:""})}return ue(l,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=await this.sasUrl(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){let i=Y5(this.getKey(t)),n=await this.request("PUT",i,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-meta-hdi_isfolder":"true"}});if(!n.ok)throw new Error(`[AzureBlob] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=vh(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.copyBlob(n,s),await this.deleteBlob(n)}async remove(e,t,i){let n=this.getKey(t);await this.deleteBlob(n)}async move(e,t,i,n,s){for(let a of i){let o=vh(this.getKey(n),a),c=vh(this.getKey(s),a);await this.copyBlob(o,c),await this.deleteBlob(o)}}async copy(e,t,i,n,s){for(let a of i){let o=vh(this.getKey(n),a),c=vh(this.getKey(s),a);await this.copyBlob(o,c)}}async put(e,t,i){let n=this.getKey(t),s=await this.request("PUT",n,"",{body:new Uint8Array(i),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob"}});if(!s.ok)throw new Error(`[AzureBlob] put failed: HTTP ${s.status}`)}async copyBlob(e,t){let i=`${this.endpoint}/${this.container}/${e}`,n=await this.request("PUT",t,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-copy-source":i}});if(n.status!==201&&n.status!==202&&!n.ok)throw new Error(`[AzureBlob] copy failed: HTTP ${n.status}`)}async deleteBlob(e){let t=await this.request("DELETE",e,"");if(t.status!==202&&t.status!==404&&!t.ok)throw new Error(`[AzureBlob] delete failed: HTTP ${t.status}`)}}});function kh(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}var yI,Z5=J(()=>{"use strict";ve();$e();ti();yI=class{addition;authHeader;apiBase;constructor(e){this.addition=e||{};let t=this.addition.operator_name||"",i=this.addition.operator_password||"";this.authHeader=`Basic ${btoa(`${t}:${i}`)}`,this.apiBase=`https://v0.api.upyun.com/${this.addition.bucket||""}`}async init(){if(!this.addition.bucket||!this.addition.operator_name||!this.addition.operator_password)throw new Error("[USS] bucket / operator_name / operator_password are required")}getKey(e,t=!1){let i=String(e||"/").replace(/^\/+/,"");return t&&i&&!i.endsWith("/")&&(i+="/"),i}getDownloadHost(){let e=this.addition.endpoint||"";return/^https?:\/\//.test(e)||(e="https://"+e),e.replace(/\/+$/,"")}async list(e,t){let i=this.getKey(t,!0),n=`${this.apiBase}/${i}`,s=await fetch(n,{method:"GET",headers:{Authorization:this.authHeader,Accept:"application/json"}});if(!s.ok)throw new Error(`[USS] list failed: HTTP ${s.status}`);let a=await s.text(),o=[];try{let c=JSON.parse(a);if(Array.isArray(c)){for(let l of c){let d=l.name||l.file_name||"",u=l.type==="F"||l.is_dir===!0||d.endsWith("/");o.push({name:d.replace(/\/+$/,""),size:l.length||l.size||0,is_dir:u,modified:l.last_modified?new Date(l.last_modified*1e3).toISOString():new Date().toISOString(),sign:"",type:X(d,u),raw_url:""})}return ue(o,"name","asc")}}catch{}for(let c of a.split(` +`)){let l=c.trim();if(!l)continue;let d=l.split(" "),u=(d[0]||"").trim(),A=(d[1]||"").trim()==="F"||u.endsWith("/");o.push({name:u.replace(/\/+$/,""),size:parseInt(d[2]||"0",10)||0,is_dir:A,modified:d[3]?new Date(parseInt(d[3],10)*1e3).toISOString():new Date().toISOString(),sign:"",type:X(u,A),raw_url:""})}return ue(o,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=Math.floor(Date.now()/1e3)+(this.addition.sign_url_expire||4)*3600,o=`${this.addition.anti_theft_chain_token||this.addition.operator_password}&${s}&/${i}`,c=nr(o).slice(12,20)+s,l=encodeURIComponent(n),d=`${this.getDownloadHost()}/${i}?_upd=${l}&_upt=${c}`;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:d}}async mkdir(e,t){let i=this.getKey(t,!0),n=await fetch(`${this.apiBase}/${i}`,{method:"POST",headers:{Authorization:this.authHeader,Folder:"true"}});if(!n.ok)throw new Error(`[USS] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=kh(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.moveOrCopy(n,s,"move")}async remove(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"DELETE",headers:{Authorization:this.authHeader}});if(!s.ok)throw new Error(`[USS] remove failed: HTTP ${s.status}`)}async move(e,t,i,n,s){for(let a of i){let o=kh(this.getKey(n),a),c=kh(this.getKey(s),a);await this.moveOrCopy(o,c,"move")}}async copy(e,t,i,n,s){for(let a of i){let o=kh(this.getKey(n),a),c=kh(this.getKey(s),a);await this.moveOrCopy(o,c,"copy")}}async put(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"PUT",headers:{Authorization:this.authHeader,"Content-Type":"application/octet-stream"},body:i});if(!s.ok)throw new Error(`[USS] put failed: HTTP ${s.status}`)}async moveOrCopy(e,t,i){let n=i==="move"?"X-Upyun-Move-Source":"X-Upyun-Copy-Source",s=await fetch(`${this.apiBase}/${t}`,{method:"PUT",headers:{Authorization:this.authHeader,[n]:`/${e}`}});if(!s.ok)throw new Error(`[USS] ${i} failed: HTTP ${s.status}`)}}});function VY(r){return r?r.message?r.message:r.msg?r.msg:"request failed":"request failed"}var ma,c1,II,e6=J(()=>{"use strict";ma="https://alidocs.dingtalk.com",c1="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36";II=class{constructor(e){this.cookie=e}cookie;headers(){return{Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:ma+"/",Origin:ma,"User-Agent":c1}}async request(e,t){let i=await fetch(e,{...t,headers:{...this.headers(),...t?.headers||{}}}),n=await i.json().catch(()=>({}));if(!i.ok||n.isSuccess===!1)throw new Error(VY(n));return n}async checkCookie(){await this.request(`${ma}/portal/api/v1/mine/info`)}async list(e){let t=new URLSearchParams({dentryUuid:e,withParentAncestors:"true",orderType:"SORT_KEY",sortType:"desc",listDentrySource:"2",pageSize:"1000"});return(await this.request(`${ma}/box/api/v2/dentry/list?${t.toString()}`)).data?.children||[]}async download(e){let t=new URLSearchParams({dentryUuid:e,version:"1",supportDownloadTypes:"URL_PRE_SIGNATURE,HTTP_TO_CENTER",downloadType:"URL_PRE_SIGNATURE"}),n=(await this.request(`${ma}/box/api/v2/file/download?${t.toString()}`)).data?.ossUrlPreSignatureInfo?.preSignUrls||[];if(n.length===0)throw new Error("empty download url");return n[0]}async post(e,t){await this.request(`${ma}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}}});function YY(r){let e={...r||{}};return e.cookie=(e.cookie||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim(),e}function t6(r){let e=r.dentryType==="folder";return{name:r.name,size:e?0:r.fileSize||0,is_dir:e,modified:r.updatedTime?new Date(r.updatedTime).toISOString():new Date().toISOString(),created:r.createdTime?new Date(r.createdTime).toISOString():void 0,sign:r.dentryUuid,type:X(r.name,e)}}var wI,r6=J(()=>{"use strict";ve();$e();e6();wI=class{addition;client;idCache=new Map;constructor(e){this.addition=YY(e),this.client=new II(this.addition.cookie)}async init(){if(!this.addition.cookie)throw new Error("cookie is empty");if(!this.addition.root_folder_id)throw new Error("root folder id is empty");await this.client.checkCookie()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,a="/";for(let o of n){let l=(await this.client.list(s)).find(d=>d.name===o&&d.dentryType==="folder");if(!l)throw new Error(`folder not found: ${o}`);s=l.dentryUuid,a=this.joinPath(a,o),this.idCache.set(a,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",a=await this.resolveId(n),c=(await this.client.list(a)).find(l=>l.name===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.dentryUuid),c.dentryUuid}async list(e,t){let i=await this.resolveId(t),n=await this.client.list(i),s=this.cleanPath(t),a=n.filter(o=>o.dentryUuid&&o.name).map(o=>(this.idCache.set(this.joinPath(s,o.name),o.dentryUuid),t6(o)));return ue(a,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",a=await this.resolveId(s),c=(await this.client.list(a)).find(u=>u.name===n);if(!c)throw new Error("file not found");let l=c.dentryType==="folder",d="";return l||(d=await this.client.download(c.dentryUuid)),this.idCache.set(i,c.dentryUuid),{...t6(c),raw_url:d,raw_url_headers:{"User-Agent":c1,Referer:ma+"/",Origin:ma}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",a=await this.resolveId(n);await this.client.post("/box/api/v2/dentry/createfolder",{dentryType:"folder",name:s,parentDentryUuid:a,conflictHandleStrategy:"auto_rename"})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v2/dentry/rename",{dentryUuid:n,name:i})}async move(e,t,i,n,s){let a=await this.resolveItemId(n),o=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(o);await this.client.post("/box/api/v2/dentry/move",{targetParentDentryUuid:c,sourceDentryUuid:a,operateFrom:1})}async copy(e,t,i,n,s){let a=await this.resolveItemId(n),o=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(o);await this.client.post("/box/api/v2/dentry/copy",{sourceDentryUuid:a,targetParentDentryUuid:c,operateFrom:1,onlyCopyMeta:!1})}async remove(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v1/dentry/recycle",{dentryUuid:n})}async put(e,t,i){throw new Error("AliDoc does not support upload")}}});var WY,xI,i6=J(()=>{"use strict";WY='MediaBrowser Client="OpenList", Device="OpenList", DeviceId="openlist-emby", Version="1.0.0"',xI=class{baseURL;token;userID;constructor(e,t="",i=""){this.baseURL=(e||"").trim().replace(/\/+$/,""),this.token=t,this.userID=i}async login(e,t){let i=await fetch(`${this.baseURL}/Users/AuthenticateByName`,{method:"POST",headers:{"Content-Type":"application/json","X-Emby-Authorization":WY},body:JSON.stringify({Username:e,Pw:t})});if(!i.ok)throw new Error(`emby auth failed: status=${i.status}`);let n=await i.json();if(!n.AccessToken||!n.User?.Id)throw new Error("emby auth response missing access token or user id");this.token=n.AccessToken,this.userID=n.User.Id}async getItems(e){let t=new URLSearchParams({ParentId:e,Recursive:"false",Fields:"Path,Size,DateCreated,SeriesName,IndexNumber,ParentIndexNumber",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items?${t.toString()}`);if(!i.ok)throw new Error(`emby list failed: status=${i.status}`);return await i.json()}async getItemDetail(e){let t=new URLSearchParams({Fields:"MediaSources",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items/${encodeURIComponent(e)}?${t.toString()}`);return i.ok?await i.json():null}}});function XY(r){let e={...r||{}};return e.url=(e.url||"").trim().replace(/\/+$/,""),e.api_key=(e.api_key||"").trim(),e.user_id=(e.user_id||"").trim(),e.username=(e.username||"").trim(),e.password=(e.password||"").trim(),e.link_method=(e.link_method||"stream").toLowerCase(),e.root_folder_id=(e.root_folder_id||"").trim()||"1",e}function n6(r){return{name:r.Name,size:r.IsFolder?0:r.Size||0,is_dir:r.IsFolder,modified:r.DateCreated?new Date(r.DateCreated).toISOString():new Date().toISOString(),sign:r.Id,type:X(r.Name,r.IsFolder)}}var CI,s6=J(()=>{"use strict";ve();$e();i6();CI=class{addition;client;idCache=new Map;constructor(e){this.addition=XY(e),this.client=new xI(this.addition.url,this.addition.api_key,this.addition.user_id)}async init(){if(!this.addition.url)throw new Error("url is required");if(this.addition.api_key){if(!this.addition.user_id)throw new Error("user_id is required when api_key is set");return}if(!this.addition.username)throw new Error("please provide api_key+user_id or username(+password)");await this.client.login(this.addition.username,this.addition.password)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,a="/";for(let o of n){let l=(await this.client.getItems(s)).Items.find(d=>d.Name===o&&d.IsFolder);if(!l)throw new Error(`folder not found: ${o}`);s=l.Id,a=this.joinPath(a,o),this.idCache.set(a,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.client.getItems(i),s=this.cleanPath(t),a=n.Items.map(o=>(this.idCache.set(this.joinPath(s,o.Name),o.Id),n6(o)));return ue(a,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",a=await this.resolveId(s),c=(await this.client.getItems(a)).Items.find(u=>u.Name===n);if(!c)throw new Error("file not found");let l=c.IsFolder,d="";return l||(d=await this.buildLink(c.Id)),this.idCache.set(i,c.Id),{...n6(c),raw_url:d,raw_url_headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"}}}async buildLink(e){let t=this.addition.link_method==="download",i="",n="";if(!t){let a=await this.client.getItemDetail(e);if(a&&a.MediaSources?.length){let o=a.MediaSources.find(c=>c.Id&&c.SupportsDirectStream)||a.MediaSources.find(c=>c.Id);o&&(i=o.Id,n=o.Container)}}let s=new URL(this.addition.url);return t?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Items/${encodeURIComponent(e)}/Download`:n?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream.${n}`:s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream`,s.searchParams.set("api_key",this.client.token),i&&s.searchParams.set("MediaSourceId",i),t||s.searchParams.set("Static","true"),s.toString()}async mkdir(e,t){throw new Error("Emby is read-only")}async rename(e,t,i){throw new Error("Emby is read-only")}async move(e,t,i,n,s){throw new Error("Emby is read-only")}async copy(e,t,i,n,s){throw new Error("Emby is read-only")}async remove(e,t,i){throw new Error("Emby is read-only")}async put(e,t,i){throw new Error("Emby is read-only")}}});function BI(r,e){let t=(r||"").trim();if(t||(t=e),!t)throw new Error("empty url");t.includes("://")||(t="https://"+t);let i=new URL(t);if(!i.host)throw new Error("invalid url: "+r);return i.pathname=i.pathname.replace(/\/+$/,""),i.toString()}function Ro(r){return r?"/"+r.replace(/^\/+/,"").split("/").filter(Boolean).join("/"):"/"}function a6(r){let e=new Uint8Array(r),t="";for(let i of e)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function ZY(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}async function eW(r,e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",t,new TextEncoder().encode(e))}function tW(r){return Array.from(r.keys()).filter(t=>t!=="token"&&t!=="expires").sort().map(t=>`${t}=${r.get(t)||""}`).join("&")}function ll(r,e,t){let i=BI(r.endpoint,EI),n=new URL(i),s=Ro(e),a=(r.storage_zone_name||"").replace(/^\/+|\/+$/g,"");return s==="/"?n.pathname=`/${a}/`:(n.pathname=`/${a}/${s.replace(/^\/+/,"")}`,t&&!n.pathname.endsWith("/")&&(n.pathname+="/")),n.toString()}function c6(r,e){let t=new URL(r.cdn_base_url),i=Ro(e),n=t.pathname.replace(/\/+$/,"");return i==="/"?t.pathname=n?n+"/":"/":t.pathname=n+"/"+i.replace(/^\/+/,""),t.toString()}async function l6(r,e){let t=r.sign_url_expire>0?r.sign_url_expire:4,i=Math.floor(Date.now()/1e3)+t*3600,n=new URL(e),s=tW(n.searchParams),a=decodeURIComponent(n.pathname),o=(r.cdn_token_method||"sha256").toLowerCase(),c;if(o==="hmac_sha256"){let l=await eW(r.cdn_token_key,a+String(i)+s);c="HS256-"+a6(l)}else{let l=await ZY(r.cdn_token_key+a+String(i)+s);c=a6(l)}return n.searchParams.set("token",c),n.searchParams.set("expires",String(i)),n.toString()}async function Jd(r){if(r.ok)return;let e=await r.text().catch(()=>"")||"",t=e.trim();try{let i=JSON.parse(e);i?.length&&i[0].Message&&(t=i[0].Message)}catch{}throw new Error(`bunny storage request failed: ${r.status} ${t}`)}var EI,o6,d6=J(()=>{"use strict";EI="storage.bunnycdn.com",o6=".openlist"});function rW(r){let e={...r||{}};return e.storage_zone_name=(e.storage_zone_name||"").trim(),e.access_key=(e.access_key||"").trim(),e.endpoint=(e.endpoint||"").trim()||EI,e.cdn_base_url=(e.cdn_base_url||"").trim(),e.cdn_token_key=(e.cdn_token_key||"").trim(),e.cdn_token_method=(e.cdn_token_method||"sha256").toLowerCase(),e.cdn_token_include_ip=!!e.cdn_token_include_ip,e.sign_url_expire=Number(e.sign_url_expire||4),e.placeholder=(e.placeholder||"").trim()||o6,e.root_folder_path=e.root_folder_path||"/",e}function iW(r){if(!r)return new Date().toISOString();let e=new Date(r);return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var bI,u6=J(()=>{"use strict";ve();$e();d6();bI=class{addition;constructor(e){this.addition=rW(e)}async init(){BI(this.addition.endpoint,EI),this.addition.cdn_base_url&&BI(this.addition.cdn_base_url,"")}toFileItem(e,t){let i=e==="/"?`/${t.ObjectName}`:`${e}/${t.ObjectName}`;return{name:t.ObjectName,size:t.IsDirectory?0:t.Length||0,is_dir:t.IsDirectory,modified:iW(t.LastChanged),sign:t.Guid||i,type:X(t.ObjectName,t.IsDirectory)}}async list(e,t){let i=Ro(t),n=ll(this.addition,i,!0),s=await fetch(n,{headers:{AccessKey:this.addition.access_key}});await Jd(s);let c=(await s.json()).filter(l=>!(!l.ObjectName||!l.IsDirectory&&l.ObjectName===this.addition.placeholder)).map(l=>this.toFileItem(i,l));return ue(c,"name","asc")}async get(e,t){let i=Ro(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",a=ll(this.addition,s,!0),o=await fetch(a,{headers:{AccessKey:this.addition.access_key}});await Jd(o);let l=(await o.json()).find(f=>f.ObjectName===n);if(!l)throw new Error("object not found");let d="",u={};return l.IsDirectory||(this.addition.cdn_base_url?(d=c6(this.addition,i),this.addition.cdn_token_key&&(d=await l6(this.addition,d))):(d=ll(this.addition,i,!1),u={AccessKey:this.addition.access_key})),{...this.toFileItem(s,l),raw_url:d,raw_url_headers:u}}async mkdir(e,t){let i=Ro(t),n=i==="/"?`/${this.addition.placeholder}`:`${i}/${this.addition.placeholder}`,s=ll(this.addition,n,!1),a=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":"0"}});await Jd(a)}async rename(e,t,i){throw new Error("Bunny Storage does not support rename")}async move(e,t,i,n,s){throw new Error("Bunny Storage does not support move")}async copy(e,t,i,n,s){throw new Error("Bunny Storage does not support copy")}async remove(e,t,i){let n=Ro(t),s=await fetch(ll(this.addition,n,!0),{method:"DELETE",headers:{AccessKey:this.addition.access_key}});await Jd(s)}async put(e,t,i){let n=Ro(t),s=ll(this.addition,n,!1),a=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":String(i.length)},body:new Uint8Array(i)});await Jd(a)}}});function kI(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function f6(r,e){if(!r)return 0;for(let t of e){let i=r[t];if(i!=null){let n=Number(i);if(!isNaN(n))return n}}return 0}function h6(r){return f6(r,["FileSizeBytes","File-Size","fileSize","size"])}function A6(r){return f6(r,["TimeStamp","timestamp","modified"])}var vI,g6=J(()=>{"use strict";vI=class{constructor(e,t){this.address=e;this.token=t}address;token;headers(){return{Authorization:"Bearer "+this.token,Accept:"application/json"}}async request(e,t,i){let s=null;for(let a=0;a<3;a++)try{let o=await fetch(this.address+t,{method:e,headers:{...this.headers(),...i&&!(i instanceof FormData)?{"Content-Type":"application/json"}:{}},body:i?i instanceof FormData?i:JSON.stringify(i):void 0});if(o.status===429){await new Promise(u=>setTimeout(u,(a+1)*2e3));continue}let c=await o.text(),l={};try{l=c?JSON.parse(c):{}}catch{l={}}let d=l;if(d.error||d.message)throw new Error("API error: "+(d.error||d.message));if(!o.ok)throw new Error(`HTTP ${o.status}`);return l}catch(o){if(s=o,a<2){await new Promise(c=>setTimeout(c,(a+1)*1e3));continue}}throw s||new Error("max retries exceeded")}async list(e,t,i){return this.request("GET",`/api/manage/list?dir=${encodeURIComponent(e)}&start=${t}&count=${i}`)}async remove(e,t){return this.request("POST",`/api/manage/delete${kI(e)}?folder=${t}`)}}});function nW(r){let e={...r||{}};return e.address=(e.address||"").trim().replace(/\/+$/,""),e.token=(e.token||"").trim(),e.small_channel_name=(e.small_channel_name||"").trim(),e.large_channel_name=(e.large_channel_name||"").trim(),e.large_channel_type=(e.large_channel_type||"").trim(),e.upload_thread=Math.min(Number(e.upload_thread||3),32),e.root_folder_path=e.root_folder_path||"/",e}var l1,SI,p6=J(()=>{"use strict";ve();$e();g6();l1=1e3;SI=class{addition;client;publicUrlPrefix="";constructor(e){this.addition=nW(e),this.client=new vI(this.addition.address,this.addition.token)}async init(){if(!this.addition.address)throw new Error("address is required");if(!this.addition.token)throw new Error("token is required");await this.client.list("/",0,1)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=new Set,s=new Set,a=[],o=0;for(;;){let c=await this.client.list(i,o,l1);if(!c.files?.length&&!c.directories?.length)break;for(let l of c.directories||[]){let d="/"+(l||"").replace(/^\/+|\/+$/g,"");n.has(d)||(n.add(d),a.push({name:d.split("/").filter(Boolean).pop()||"",size:0,is_dir:!0,modified:new Date().toISOString(),sign:d,type:1}))}for(let l of c.files||[])if(!s.has(l.name)){s.add(l.name);let d=l.name.split("/").filter(Boolean).pop()||l.name,u=h6(l.metadata),f=A6(l.metadata);a.push({name:d,size:u,is_dir:!1,modified:f?new Date(f).toISOString():new Date().toISOString(),sign:"/"+(l.name||"").replace(/^\/+/,""),type:X(d,!1)})}if((c.files?.length||0)+(c.directories?.length||0)<l1)break;o+=l1}return ue(a,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=this.publicUrlPrefix?this.publicUrlPrefix+kI(i):this.addition.address+"/file"+kI(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){}async rename(e,t,i){throw new Error("cloudflare_imgbed does not support rename")}async move(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support move")}async copy(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support copy")}async remove(e,t,i){let n=this.cleanPath(t);await this.client.remove(n,!1)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",a=n.split("/").pop()||"upload",o=this.addition.small_channel_name;if(!o)throw new Error("channel name not configured");let c=new URLSearchParams({returnFormat:"default",channelName:o,uploadFolder:s,autoRetry:"true"}),l=new FormData;l.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),a);let d=await fetch(`${this.addition.address}/upload?${c.toString()}`,{method:"POST",headers:{Authorization:"Bearer "+this.addition.token},body:l});if(!d.ok)throw new Error(`upload failed ${d.status}: ${await d.text()}`);let u=await d.json();if(!u?.length||!u[0].src)throw new Error("no src returned");if(u[0].publicUrl)try{let f=new URL(u[0].publicUrl);this.publicUrlPrefix=f.protocol+"//"+f.host}catch{}}}});function I6(r){let e=(r||"").trim().replace(/\s/g,"");if(!e)return"";if(e.startsWith("+"))return e.startsWith("+86")&&e.length>3?"+86 "+e.slice(3):e;let t=e.replace(/\D/g,"");return t.startsWith("86")&&t.length>11,t.length===11?"+86 "+t:e}function w6(){let r=crypto.getRandomValues(new Uint8Array(16));return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function x6(r){let e=(r||"").toLowerCase().replace(/-/g,"");return e.length!==32||!/^[0-9a-f]+$/.test(e)?"":e}function d1(r){return r>0?new Date(r*1e3).toISOString():new Date().toISOString()}function y6(r){let e=(r||"").trim().toLowerCase();return e?e==="success"||e==="ok"||e.includes("\u6210\u529F"):!0}function aW(r){let e=(r||"").trim().toLowerCase();return e?e==="\u4E0A\u4F20\u5DF2\u5B8C\u6210"||e==="upload completed"||e==="already uploaded"||e==="\u79D2\u4F20\u6210\u529F":!1}var m6,sW,Sh,C6=J(()=>{"use strict";ti();m6="https://account.guangyapan.com",sW="https://api.guangyapan.com";Sh=class{accessToken="";refreshToken="";clientId;deviceId;deviceSign;onTokensChanged;constructor(e){this.clientId=e.client_id||"",this.deviceId=e.device_id||"",this.deviceSign=e.device_sign||"",this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||""}accountHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json","X-Device-Model":"chrome%2F147.0.0.0","X-Device-Name":"PC-Chrome","X-Device-Sign":this.deviceSign,"X-Net-Work-Type":"NONE","X-OS-Version":"MacIntel","X-Platform-Version":"1","X-Protocol-Version":"301","X-Provider-Name":"NONE","X-SDK-Version":"9.0.2","X-Client-Id":this.clientId,"X-Client-Version":"0.0.1","X-Device-Id":this.deviceId}}apiHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json",Did:this.deviceId,Dt:"4",Authorization:"Bearer "+this.accessToken}}get hasToken(){return!!this.accessToken}get hasRefreshToken(){return!!this.refreshToken}async validateToken(){let e=await fetch(`${m6}/v1/user/me`,{headers:{...this.accountHeaders(),Authorization:"Bearer "+this.accessToken}});if(!e.ok)throw new Error(`validate token failed: ${e.status}`)}async refresh(){if(!this.refreshToken)throw new Error("refresh_token is empty");let e=await fetch(`${m6}/v1/auth/token`,{method:"POST",headers:this.accountHeaders(),body:JSON.stringify({client_id:this.clientId,grant_type:"refresh_token",refresh_token:this.refreshToken})}),t=await e.json();if(!e.ok||t.error||!t.access_token)throw new Error("refresh token failed: "+(t.error_description||t.error||e.status));this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),await this.onTokensChanged?.(this.accessToken,this.refreshToken)}async postAPI(e,t){let i=async()=>{let a=await fetch(`${sW}${e}`,{method:"POST",headers:this.apiHeaders(),body:JSON.stringify(t??{})});return{res:a,json:await a.json().catch(()=>({}))}},{res:n,json:s}=await i();if((n.status===401||n.status===403)&&this.refreshToken){await this.refresh();let a=await i();n=a.res,s=a.json}if(!n.ok)throw new Error(`request failed: status=${n.status}`);return s}async getFileList(e,t,i,n){return this.postAPI("/userres/v1/file/get_file_list",{parentId:e,page:0,pageSize:t,orderBy:i,sortType:n})}async getDownloadURL(e){let t=await this.postAPI("/nd.bizuserres.s/v1/get_res_download_url",{fileId:e});return(t?.data?.signedURL||t?.data?.downloadUrl||"").trim()}async getUploadToken(e,t,i,n){let s={fileSize:i};n&&(s.md5=n);let a=await this.postAPI("/nd.bizuserres.s/v1/get_res_center_token",{capacity:2,name:t,parentId:e,res:s}),o=a.msg||"",c=a.code===156||aW(o);if(!y6(o)&&!c)throw new Error("get upload token failed: "+o);return{data:a.data,code:a.code,alreadyDone:c}}async waitTaskDone(e){for(let t=0;t<30;t++){let i=await this.postAPI("/nd.bizuserres.s/v1/get_task_status",{taskId:e});if(!y6(i.msg))throw new Error("get task status failed: "+i.msg);if(i.data?.status===2)return;if(i.data?.status===-1||i.data?.status===3)throw new Error(`task ${e} failed with status=${i.data.status}`);await new Promise(n=>setTimeout(n,300))}throw new Error(`task ${e} timeout`)}async waitUploadTaskInfo(e){for(let t=0;t<300;t++){if((await this.postAPI("/nd.bizuserres.s/v1/file/get_info_by_task_id",{taskId:e})).data?.fileId)return;await new Promise(n=>setTimeout(n,1e3))}throw new Error(`upload task ${e} timeout`)}static md5(e){return nr(e)}}});function oW(r){let e={...r||{}};return e.client_id=(e.client_id||"").trim(),e.device_id=x6(e.device_id||""),e.device_id||(e.device_id=w6()),e.device_sign=(e.device_sign||"").trim()||"wdi10."+e.device_id,e.page_size=Number(e.page_size||100),e.order_by=Number(e.order_by===void 0?3:e.order_by),e.sort_type=Number(e.sort_type===void 0?1:e.sort_type),e.root_folder_path=(e.root_folder_path||"").trim(),e.access_token=(e.access_token||"").trim(),e.refresh_token=(e.refresh_token||"").trim(),e.phone_number=I6(e.phone_number||""),e}function E6(r){let e=r.resType===2;return{name:r.fileName,size:e?0:r.fileSize||0,is_dir:e,modified:d1(r.utime),created:d1(r.ctime),sign:r.fileId,type:X(r.fileName,e)}}function cW(r,e){let t=(r||"").trim();if(!t)return t;!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t);let i;try{i=new URL(t)}catch{return t}let n=i.host;return e&&n.startsWith(e+".")&&(n=n.slice(e.length+1)),i.host=n,i.toString().replace(/\/+$/,"")}var DI,B6=J(()=>{"use strict";ve();$e();ti();C6();DI=class{addition;client;idCache=new Map;constructor(e,t){this.addition=oW(e),this.client=new Sh(this.addition),this.client.onTokensChanged=t}async init(){if(!this.addition.client_id)throw new Error("client_id is required");if(this.addition.access_token)try{await this.client.validateToken();return}catch{this.addition.access_token=""}if(this.addition.refresh_token){await this.client.refresh(),await this.client.validateToken();return}throw new Error("login failed: provide a valid access_token, or refresh_token, or phone_number + verify_code")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s="",a="/";for(let o of n){let l=(await this.client.getFileList(s,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(d=>d.fileName===o&&d.resType===2);if(!l)throw new Error(`folder not found: ${o}`);s=l.fileId,a=this.joinPath(a,o),this.idCache.set(a,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",a=await this.resolveId(n),c=(await this.client.getFileList(a,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(l=>l.fileName===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.fileId),c.fileId}async list(e,t){let i=await this.resolveId(t),n=this.cleanPath(t),s=[];for(let a=0;a<1e4;a++){let o=await this.client.getFileList(i,this.addition.page_size,this.addition.order_by,this.addition.sort_type),c=o.data?.list||[];for(let l of c)this.idCache.set(this.joinPath(n,l.fileName),l.fileId),s.push(E6(l));if(c.length<this.addition.page_size||o.data?.total>0&&s.length>=o.data.total)break}return ue(s,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",a=await this.resolveId(s),c=(await this.client.getFileList(a,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(u=>u.fileName===n);if(!c)throw new Error("file not found");let l=c.resType===2,d="";return l||(d=await this.client.getDownloadURL(c.fileId)),this.idCache.set(i,c.fileId),{...E6(c),raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",a=await this.resolveId(n);await this.client.postAPI("/nd.bizuserres.s/v1/file/create_dir",{parentId:a,dirName:s})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.postAPI("/nd.bizuserres.s/v1/file/rename",{fileId:n,newName:i})}async move(e,t,i,n,s){let a=await this.resolveItemId(n),o=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(o),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/move_file",{fileIds:[a],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async copy(e,t,i,n,s){let a=await this.resolveItemId(n),o=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(o),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/copy_file",{fileIds:[a],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async remove(e,t,i){let n=await this.resolveItemId(t),s=await this.client.postAPI("/nd.bizuserres.s/v1/file/delete_file",{fileIds:[n]});s?.data?.taskId&&await this.client.waitTaskDone(s.data.taskId)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",a=n.split("/").pop()||"upload",o=await this.resolveId(s),c=new Uint8Array(i),l=Sh.md5(c),{data:d,alreadyDone:u}=await this.client.getUploadToken(o,a,c.length,l),f=d?.taskId||"";if(u){if(!f)throw new Error("instant upload returns empty task id");await this.client.waitUploadTaskInfo(f);return}if(!d.objectPath||!d.bucketName||!d.endPoint||!d.accessKeyID||!d.secretAccessKey)throw new Error("upload token is incomplete");let A=cW(d.endPoint,d.bucketName),g=`https://${d.bucketName}.${new URL(A).host}/${d.objectPath.replace(/^\/+/,"")}`,p=new Date().toUTCString(),I="application/octet-stream",m=d.sessionToken?`x-oss-security-token:${d.sessionToken} +`:"",w=`/${d.bucketName}/${d.objectPath.replace(/^\/+/,"")}`,B=`PUT ${I} ${p} -${y}${w}`,b=await Bu(C,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${b}`,_={"Content-Type":I,Date:p,Authorization:x};d.sessionToken&&(_["x-oss-security-token"]=d.sessionToken);let R=await fetch(g,{method:"PUT",headers:_,body:c});if(!R.ok)throw new Error(`OSS upload failed: ${R.status} ${await R.text()}`);f&&await this.client.waitUploadTaskInfo(f)}}});var kF=oe(fE=>{var mj=typeof fE>"u"?{}:fE;(function(r){"use strict";var e="__namespace",t=function(A){return A==null},i=function(A){return A===e||Number.isInteger(A)&&A>=1&&A<=11},n=function(A){return A&&i(A.nodeType)&&typeof A.nodeName=="string"};function s(A){var k=Array.prototype.slice,O=A.length,V=function(W,ue){return function(){return ue.apply(this,W.concat(k.call(arguments)))}},H=function(){var W=k.call(arguments);return W.length<O?V(W,H):A.apply(this,k.apply(arguments,[0,O]))};return H}var o=function(A,k){for(var O=0;O<k.length;O+=1)A(k[O],O,k)},a=function(A,k,O){var V=k;return o(function(H,W){V=A(V,H,W)},O),V},c=function(A,k){var O=new Array(k.length);return o(function(V,H){O[H]=A(V)},k),O},l=function(A,k){var O=[];return o(function(V,H){A(V,H)&&O.push(V)},k),O},d=function(A,k){for(var O=0;O<A.length;O+=1)if(A[O]===k)return!0;return!1};function u(A){return function(){return A}}function f(A){return A.toString()}var h=function(A,k){return k.join(A)},g=function(A,k,O){return A+O+k},p=Array.prototype.concat,I=function(A,k){var O=new Ce;O.addArray(A);var V=O.toArray();return k?V.reverse():V},y=32767;function w(A){for(var k=[],O=0;O<A.length;O+=y){var V=A.slice(O,O+y);k=p.apply(k,V)}return k}function C(A,k){for(var O=Object(A),V=1;V<arguments.length;V++){var H=arguments[V];if(H!=null)for(var W in H)Object.prototype.hasOwnProperty.call(H,W)&&(O[W]=H[W])}return O}var b={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NAMESPACE_NODE:e};x.prototype=new Object,x.prototype.constructor=x,x.superclass=Object.prototype;function x(){this.init()}x.prototype.init=function(){this.reduceActions=[],this.reduceActions[3]=function(A){return new Q(A[0],A[2])},this.reduceActions[5]=function(A){return new v(A[0],A[2])},this.reduceActions[7]=function(A){return new E(A[0],A[2])},this.reduceActions[8]=function(A){return new P(A[0],A[2])},this.reduceActions[10]=function(A){return new N(A[0],A[2])},this.reduceActions[11]=function(A){return new J(A[0],A[2])},this.reduceActions[12]=function(A){return new z(A[0],A[2])},this.reduceActions[13]=function(A){return new L(A[0],A[2])},this.reduceActions[15]=function(A){return new G(A[0],A[2])},this.reduceActions[16]=function(A){return new K(A[0],A[2])},this.reduceActions[18]=function(A){return new $(A[0],A[2])},this.reduceActions[19]=function(A){return new te(A[0],A[2])},this.reduceActions[20]=function(A){return new re(A[0],A[2])},this.reduceActions[22]=function(A){return new D(A[1])},this.reduceActions[24]=function(A){return new ee(A[0],A[2])},this.reduceActions[25]=function(A){return new Z(void 0,void 0,A[0])},this.reduceActions[27]=function(A){return A[0].locationPath=A[2],A[0]},this.reduceActions[28]=function(A){return A[0].locationPath=A[2],A[0].locationPath.steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0]},this.reduceActions[29]=function(A){return new Z(A[0],[],void 0)},this.reduceActions[30]=function(A){return be.instance_of(A[0],Z)?(A[0].filterPredicates==null&&(A[0].filterPredicates=[]),A[0].filterPredicates.push(A[1]),A[0]):new Z(A[0],[A[1]],void 0)},this.reduceActions[32]=function(A){return A[1]},this.reduceActions[33]=function(A){return new we(A[0])},this.reduceActions[34]=function(A){return new Ee(A[0])},this.reduceActions[36]=function(A){return new Or(A[0],[])},this.reduceActions[37]=function(A){return new Or(A[0],A[2])},this.reduceActions[38]=function(A){return[A[0]]},this.reduceActions[39]=function(A){return A[2].unshift(A[0]),A[2]},this.reduceActions[43]=function(A){return new _e(!0,[])},this.reduceActions[44]=function(A){return A[1].absolute=!0,A[1]},this.reduceActions[46]=function(A){return new _e(!1,[A[0]])},this.reduceActions[47]=function(A){return A[0].steps.push(A[2]),A[0]},this.reduceActions[49]=function(A){return new se(A[0],A[1],[])},this.reduceActions[50]=function(A){return new se(se.CHILD,A[0],[])},this.reduceActions[51]=function(A){return new se(A[0],A[1],A[2])},this.reduceActions[52]=function(A){return new se(se.CHILD,A[0],A[1])},this.reduceActions[54]=function(A){return[A[0]]},this.reduceActions[55]=function(A){return A[1].unshift(A[0]),A[1]},this.reduceActions[56]=function(A){return A[0]=="ancestor"?se.ANCESTOR:A[0]=="ancestor-or-self"?se.ANCESTORORSELF:A[0]=="attribute"?se.ATTRIBUTE:A[0]=="child"?se.CHILD:A[0]=="descendant"?se.DESCENDANT:A[0]=="descendant-or-self"?se.DESCENDANTORSELF:A[0]=="following"?se.FOLLOWING:A[0]=="following-sibling"?se.FOLLOWINGSIBLING:A[0]=="namespace"?se.NAMESPACE:A[0]=="parent"?se.PARENT:A[0]=="preceding"?se.PRECEDING:A[0]=="preceding-sibling"?se.PRECEDINGSIBLING:A[0]=="self"?se.SELF:-1},this.reduceActions[57]=function(A){return se.ATTRIBUTE},this.reduceActions[59]=function(A){return A[0]=="comment"?ce.commentTest:A[0]=="text"?ce.textTest:A[0]=="processing-instruction"?ce.anyPiTest:A[0]=="node"?ce.nodeTest:new ce(-1,void 0)},this.reduceActions[60]=function(A){return new ce.PITest(A[2])},this.reduceActions[61]=function(A){return A[1]},this.reduceActions[63]=function(A){return A[1].absolute=!0,A[1].steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[1]},this.reduceActions[64]=function(A){return A[0].steps.push(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0].steps.push(A[2]),A[0]},this.reduceActions[65]=function(A){return new se(se.SELF,ce.nodeTest,[])},this.reduceActions[66]=function(A){return new se(se.PARENT,ce.nodeTest,[])},this.reduceActions[67]=function(A){return new dr(A[1])},this.reduceActions[68]=function(A){return ce.nameTestAny},this.reduceActions[69]=function(A){return new ce.NameTestPrefixAny(A[0].split(":")[0])},this.reduceActions[70]=function(A){return new ce.NameTestQName(A[0])}},x.actionTable=[" s s sssssssss s ss s ss"," s ","r rrrrrrrrr rrrrrrr rr r "," rrrrr "," s s sssssssss s ss s ss","rs rrrrrrrr s sssssrrrrrr rrs rs "," s s sssssssss s ss s ss"," s "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s "," s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr r ","a ","r s rr r ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrs rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r srrrrrrrr rrrrrrs rr sr ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r "," sssss ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrr rrrrr rr r "," s "," s "," rrrrr "," s s sssssssss s sss s ss","r srrrrrrrr rrrrrrs rr r "," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss ss s ss"," s s sssssssss s ss s ss"," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr rr "," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," rr "," s "," rs ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrr rr r "," r "," s ","r srrrrrrrr rrrrrrs rr r ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s s sssssssss s ss s ss","r rrrrrrrrr rrrrrrr rr rr "," r "],x.actionTableNumber=[` 1 0 /.-,+*)(' & %$ # "!`," J ","a aaaaaaaaa aaaaaaa aa a "," YYYYY ",` 1 0 /.-,+*)(' & %$ # "!`,`K1 KKKKKKKK . +*)('KKKKKK KK# K" `,` 1 0 /.-,+*)(' & %$ # "!`," N "," O ","e eeeeeeeee eeeeeee ee ee ","f fffffffff fffffff ff ff ","d ddddddddd ddddddd dd dd ","B BBBBBBBBB BBBBBBB BB BB ","A AAAAAAAAA AAAAAAA AA AA "," P "," Q ",` 1 . +*)(' # " `,"b bbbbbbbbb bbbbbbb bb b "," ","! S !! ! ",'" T" "" " ',"$ V $$ U $$ $ ","& &ZY&& &XW && & ",") ))))) )))\\[ )) ) ",". ....._^] ..... .. . ","1 11111111 11111 11 1 ","5 55555555 55555` 55 5 ","7 77777777 777777 77 7 ","9 99999999 999999 99 9 ",": c:::::::: ::::::b :: a: ","I fIIIIIIII IIIIIIe II I ","= ========= ======= == == ","? ????????? ??????? ?? ?? ","C CCCCCCCCC CCCCCCC CC CC ","J JJJJJJJJ JJJJJJ JJ J ","M MMMMMMMM MMMMMM MM M ","N NNNNNNNNN NNNNNNN NN N ","P PPPPPPPPP PPPPPPP PP P "," +*)(' ","R RRRRRRRRR RRRRRRR RR aR ","U UUUUUUUUU UUUUUUU UU U ","Z ZZZZZZZZZ ZZZZZZZ ZZ ZZ ","c ccccccccc ccccccc cc cc "," j ","L fLLLLLLLL LLLLLLe LL L ","6 66666666 66666 66 6 "," k "," l "," XXXXX ",` 1 0 /.-,+*)(' & %$m # "!`,"_ f________ ______e __ _ ",` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 . +*)(' # " `,` 1 . +*)(' # " `,"> >>>>>>>>> >>>>>>> >> >> ",` 1 . +*)(' # " `,` 1 . +*)(' # " `,"Q QQQQQQQQQ QQQQQQQ QQ aQ ","V VVVVVVVVV VVVVVVV VV aV ","T TTTTTTTTT TTTTTTT TT T ","@ @@@@@@@@@ @@@@@@@ @@ @@ "," \x87 ","[ [[[[[[[[[ [[[[[[[ [[ [[ ","D DDDDDDDDD DDDDDDD DD DD "," HH "," \x88 "," F\x89 ","# T# ## # ","% V %% U %% % ","' 'ZY'' 'XW '' ' ","( (ZY(( (XW (( ( ","+ +++++ +++\\[ ++ + ","* ***** ***\\[ ** * ","- ----- ---\\[ -- - ",", ,,,,, ,,,\\[ ,, , ","0 00000_^] 00000 00 0 ","/ /////_^] ///// // / ","2 22222222 22222 22 2 ","3 33333333 33333 33 3 ","4 44444444 44444 44 4 ","8 88888888 888888 88 8 "," ^ "," \x8A ","; f;;;;;;;; ;;;;;;e ;; ; ","< f<<<<<<<< <<<<<<e << < ","O OOOOOOOOO OOOOOOO OO O ","` ````````` ``````` `` ` ","S SSSSSSSSS SSSSSSS SS S ","W WWWWWWWWW WWWWWWW WW W ","\\ \\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\ \\\\ \\\\ ","E EEEEEEEEE EEEEEEE EE EE ",` 1 0 /.-,+*)(' & %$ # "!`,"] ]]]]]]]]] ]]]]]]] ]] ]] "," G "],x.gotoTable=["3456789:;<=>?@ AB CDEFGH IJ "," "," "," ","L456789:;<=>?@ AB CDEFGH IJ "," M EFGH IJ "," N;<=>?@ AB CDEFGH IJ "," "," "," "," "," "," "," "," "," "," S EFGH IJ "," "," "," "," "," "," "," "," "," "," "," "," "," e "," "," "," "," "," "," "," "," "," h J "," i j "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ ABpqCDEFGH IJ "," "," r6789:;<=>?@ AB CDEFGH IJ "," s789:;<=>?@ AB CDEFGH IJ "," t89:;<=>?@ AB CDEFGH IJ "," u89:;<=>?@ AB CDEFGH IJ "," v9:;<=>?@ AB CDEFGH IJ "," w9:;<=>?@ AB CDEFGH IJ "," x9:;<=>?@ AB CDEFGH IJ "," y9:;<=>?@ AB CDEFGH IJ "," z:;<=>?@ AB CDEFGH IJ "," {:;<=>?@ AB CDEFGH IJ "," |;<=>?@ AB CDEFGH IJ "," };<=>?@ AB CDEFGH IJ "," ~;<=>?@ AB CDEFGH IJ "," \x7F=>?@ AB CDEFGH IJ ","\x80456789:;<=>?@ AB CDEFGH IJ\x81"," \x82 EFGH IJ "," \x83 EFGH IJ "," "," \x84 GH IJ "," \x85 GH IJ "," i \x86 "," i \x87 "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ AB\x8CqCDEFGH IJ "," "," "],x.productions=[[1,1,2],[2,1,3],[3,1,4],[3,3,3,-9,4],[4,1,5],[4,3,4,-8,5],[5,1,6],[5,3,5,-22,6],[5,3,5,-5,6],[6,1,7],[6,3,6,-23,7],[6,3,6,-24,7],[6,3,6,-6,7],[6,3,6,-7,7],[7,1,8],[7,3,7,-25,8],[7,3,7,-26,8],[8,1,9],[8,3,8,-12,9],[8,3,8,-11,9],[8,3,8,-10,9],[9,1,10],[9,2,-26,9],[10,1,11],[10,3,10,-27,11],[11,1,12],[11,1,13],[11,3,13,-28,14],[11,3,13,-4,14],[13,1,15],[13,2,13,16],[15,1,17],[15,3,-29,2,-30],[15,1,-15],[15,1,-16],[15,1,18],[18,3,-13,-29,-30],[18,4,-13,-29,19,-30],[19,1,20],[19,3,20,-31,19],[20,1,2],[12,1,14],[12,1,21],[21,1,-28],[21,2,-28,14],[21,1,22],[14,1,23],[14,3,14,-28,23],[14,1,24],[23,2,25,26],[23,1,26],[23,3,25,26,27],[23,2,26,27],[23,1,28],[27,1,16],[27,2,16,27],[25,2,-14,-3],[25,1,-32],[26,1,29],[26,3,-20,-29,-30],[26,4,-21,-29,-15,-30],[16,3,-33,30,-34],[30,1,2],[22,2,-4,14],[24,3,14,-4,23],[28,1,-35],[28,1,-2],[17,2,-36,-18],[29,1,-17],[29,1,-19],[29,1,-18]],x.DOUBLEDOT=2,x.DOUBLECOLON=3,x.DOUBLESLASH=4,x.NOTEQUAL=5,x.LESSTHANOREQUAL=6,x.GREATERTHANOREQUAL=7,x.AND=8,x.OR=9,x.MOD=10,x.DIV=11,x.MULTIPLYOPERATOR=12,x.FUNCTIONNAME=13,x.AXISNAME=14,x.LITERAL=15,x.NUMBER=16,x.ASTERISKNAMETEST=17,x.QNAME=18,x.NCNAMECOLONASTERISK=19,x.NODETYPE=20,x.PROCESSINGINSTRUCTIONWITHLITERAL=21,x.EQUALS=22,x.LESSTHAN=23,x.GREATERTHAN=24,x.PLUS=25,x.MINUS=26,x.BAR=27,x.SLASH=28,x.LEFTPARENTHESIS=29,x.RIGHTPARENTHESIS=30,x.COMMA=31,x.AT=32,x.LEFTBRACKET=33,x.RIGHTBRACKET=34,x.DOT=35,x.DOLLAR=36,x.prototype.tokenize=function(A){for(var k=[],O=[],V=A+"\0",H=0,W=V.charAt(H++);;){for(;W==" "||W==" "||W=="\r"||W==` -`;)W=V.charAt(H++);if(W=="\0"||H>=V.length)break;if(W=="("){k.push(x.LEFTPARENTHESIS),O.push(W),W=V.charAt(H++);continue}if(W==")"){k.push(x.RIGHTPARENTHESIS),O.push(W),W=V.charAt(H++);continue}if(W=="["){k.push(x.LEFTBRACKET),O.push(W),W=V.charAt(H++);continue}if(W=="]"){k.push(x.RIGHTBRACKET),O.push(W),W=V.charAt(H++);continue}if(W=="@"){k.push(x.AT),O.push(W),W=V.charAt(H++);continue}if(W==","){k.push(x.COMMA),O.push(W),W=V.charAt(H++);continue}if(W=="|"){k.push(x.BAR),O.push(W),W=V.charAt(H++);continue}if(W=="+"){k.push(x.PLUS),O.push(W),W=V.charAt(H++);continue}if(W=="-"){k.push(x.MINUS),O.push(W),W=V.charAt(H++);continue}if(W=="="){k.push(x.EQUALS),O.push(W),W=V.charAt(H++);continue}if(W=="$"){k.push(x.DOLLAR),O.push(W),W=V.charAt(H++);continue}if(W=="."){if(W=V.charAt(H++),W=="."){k.push(x.DOUBLEDOT),O.push(".."),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var ue="."+W;for(W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}k.push(x.DOT),O.push(".");continue}if(W=="'"||W=='"'){for(var Re=W,Ye="";H<V.length&&(W=V.charAt(H))!==Re;)Ye+=W,H+=1;if(W!==Re)throw Ai.fromMessage("Unterminated string literal: "+Re+Ye);H+=1,k.push(x.LITERAL),O.push(Ye),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var ue=W;for(W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);if(W=="."&&V.charAt(H)>="0"&&V.charAt(H)<="9")for(ue+=W,ue+=V.charAt(H++),W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}if(W=="*"){if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){k.push(x.MULTIPLYOPERATOR),O.push(W),W=V.charAt(H++);continue}}k.push(x.ASTERISKNAMETEST),O.push(W),W=V.charAt(H++);continue}if(W==":"&&V.charAt(H)==":"){k.push(x.DOUBLECOLON),O.push("::"),H++,W=V.charAt(H++);continue}if(W=="/"){if(W=V.charAt(H++),W=="/"){k.push(x.DOUBLESLASH),O.push("//"),W=V.charAt(H++);continue}k.push(x.SLASH),O.push("/");continue}if(W=="!"&&V.charAt(H)=="="){k.push(x.NOTEQUAL),O.push("!="),H++,W=V.charAt(H++);continue}if(W=="<"){if(V.charAt(H)=="="){k.push(x.LESSTHANOREQUAL),O.push("<="),H++,W=V.charAt(H++);continue}k.push(x.LESSTHAN),O.push("<"),W=V.charAt(H++);continue}if(W==">"){if(V.charAt(H)=="="){k.push(x.GREATERTHANOREQUAL),O.push(">="),H++,W=V.charAt(H++);continue}k.push(x.GREATERTHAN),O.push(">"),W=V.charAt(H++);continue}if(W=="_"||be.isLetter(W.charCodeAt(0))){var Fe=W;for(W=V.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=V.charAt(H++);if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){if(Fe=="and"){k.push(x.AND),O.push(Fe);continue}if(Fe=="or"){k.push(x.OR),O.push(Fe);continue}if(Fe=="mod"){k.push(x.MOD),O.push(Fe);continue}if(Fe=="div"){k.push(x.DIV),O.push(Fe);continue}}}if(W==":"){if(V.charAt(H)=="*"){k.push(x.NCNAMECOLONASTERISK),O.push(Fe+":*"),H++,W=V.charAt(H++);continue}if(V.charAt(H)=="_"||be.isLetter(V.charCodeAt(H))){for(Fe+=":",W=V.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=V.charAt(H++);if(W=="("){k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}if(V.charAt(H)==":"){k.push(x.AXISNAME),O.push(Fe);continue}}if(W=="("){if(Fe=="comment"||Fe=="text"||Fe=="node"){k.push(x.NODETYPE),O.push(Fe);continue}if(Fe=="processing-instruction"){V.charAt(H)==")"?k.push(x.NODETYPE):k.push(x.PROCESSINGINSTRUCTIONWITHLITERAL),O.push(Fe);continue}k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}throw new Error("Unexpected character "+W)}return k.push(1),O.push("[EOF]"),[k,O]},x.SHIFT="s",x.REDUCE="r",x.ACCEPT="a",x.prototype.parse=function(Ye){if(!Ye)throw new Error("XPath expression unspecified.");if(typeof Ye!="string")throw new Error("XPath expression must be a string.");var k,O,V=this.tokenize(Ye);if(V!=null){k=V[0],O=V[1];var H=0,W=[],ue=[],Re=[],Ye,Ie,Fe;for(W.push(0),ue.push(1),Re.push("_S"),Ie=k[H],Fe=O[H++];;)switch(Ye=W[W.length-1],x.actionTable[Ye].charAt(Ie-1)){case x.SHIFT:ue.push(-Ie),Re.push(Fe),W.push(x.actionTableNumber[Ye].charCodeAt(Ie-1)-32),Ie=k[H],Fe=O[H++];break;case x.REDUCE:for(var yn=x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][1],bs=[],vs=0;vs<yn;vs++)ue.pop(),bs.unshift(Re.pop()),W.pop();var ks=W[W.length-1];ue.push(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]),this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32]==null?Re.push(bs[0]):Re.push(this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32](bs)),W.push(x.gotoTable[ks].charCodeAt(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]-2)-33);break;case x.ACCEPT:return new _(Re.pop());default:throw new Error("XPath parse error")}}},_.prototype=new Object,_.prototype.constructor=_,_.superclass=Object.prototype;function _(A){this.expression=A}_.prototype.toString=function(){return this.expression.toString()};function R(A,k,O){k in A||(A[k]=O)}_.prototype.evaluate=function(A){var k=A.expressionContextNode;if(!(t(k)||n(k)))throw new Error("Context node does not appear to be a valid DOM node.");return A.contextNode=A.expressionContextNode,A.contextSize=1,A.contextPosition=1,A.isHtml&&(R(A,"caseInsensitive",!0),R(A,"allowAnyNamespaceForNoPrefix",!0)),R(A,"caseInsensitive",!1),this.expression.evaluate(A)},_.XML_NAMESPACE_URI="http://www.w3.org/XML/1998/namespace",_.XMLNS_NAMESPACE_URI="http://www.w3.org/2000/xmlns/",U.prototype=new Object,U.prototype.constructor=U,U.superclass=Object.prototype;function U(){}U.prototype.init=function(){},U.prototype.toString=function(){return"<Expression>"},U.prototype.evaluate=function(A){throw new Error("Could not evaluate expression.")},T.prototype=new U,T.prototype.constructor=T,T.superclass=U.prototype;function T(A){arguments.length>0&&this.init(A)}T.prototype.init=function(A){this.rhs=A},D.prototype=new T,D.prototype.constructor=D,D.superclass=T.prototype;function D(A){arguments.length>0&&this.init(A)}D.prototype.init=function(A){D.superclass.init.call(this,A)},D.prototype.evaluate=function(A){return this.rhs.evaluate(A).number().negate()},D.prototype.toString=function(){return"-"+this.rhs.toString()},B.prototype=new U,B.prototype.constructor=B,B.superclass=U.prototype;function B(A,k){arguments.length>0&&this.init(A,k)}B.prototype.init=function(A,k){this.lhs=A,this.rhs=k},Q.prototype=new B,Q.prototype.constructor=Q,Q.superclass=B.prototype;function Q(A,k){arguments.length>0&&this.init(A,k)}Q.prototype.init=function(A,k){Q.superclass.init.call(this,A,k)},Q.prototype.toString=function(){return"("+this.lhs.toString()+" or "+this.rhs.toString()+")"},Q.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?k:this.rhs.evaluate(A).bool()},v.prototype=new B,v.prototype.constructor=v,v.superclass=B.prototype;function v(A,k){arguments.length>0&&this.init(A,k)}v.prototype.init=function(A,k){v.superclass.init.call(this,A,k)},v.prototype.toString=function(){return"("+this.lhs.toString()+" and "+this.rhs.toString()+")"},v.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?this.rhs.evaluate(A).bool():k},E.prototype=new B,E.prototype.constructor=E,E.superclass=B.prototype;function E(A,k){arguments.length>0&&this.init(A,k)}E.prototype.init=function(A,k){E.superclass.init.call(this,A,k)},E.prototype.toString=function(){return"("+this.lhs.toString()+" = "+this.rhs.toString()+")"},E.prototype.evaluate=function(A){return this.lhs.evaluate(A).equals(this.rhs.evaluate(A))},P.prototype=new B,P.prototype.constructor=P,P.superclass=B.prototype;function P(A,k){arguments.length>0&&this.init(A,k)}P.prototype.init=function(A,k){P.superclass.init.call(this,A,k)},P.prototype.toString=function(){return"("+this.lhs.toString()+" != "+this.rhs.toString()+")"},P.prototype.evaluate=function(A){return this.lhs.evaluate(A).notequal(this.rhs.evaluate(A))},N.prototype=new B,N.prototype.constructor=N,N.superclass=B.prototype;function N(A,k){arguments.length>0&&this.init(A,k)}N.prototype.init=function(A,k){N.superclass.init.call(this,A,k)},N.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthan(this.rhs.evaluate(A))},N.prototype.toString=function(){return"("+this.lhs.toString()+" < "+this.rhs.toString()+")"},J.prototype=new B,J.prototype.constructor=J,J.superclass=B.prototype;function J(A,k){arguments.length>0&&this.init(A,k)}J.prototype.init=function(A,k){J.superclass.init.call(this,A,k)},J.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthan(this.rhs.evaluate(A))},J.prototype.toString=function(){return"("+this.lhs.toString()+" > "+this.rhs.toString()+")"},z.prototype=new B,z.prototype.constructor=z,z.superclass=B.prototype;function z(A,k){arguments.length>0&&this.init(A,k)}z.prototype.init=function(A,k){z.superclass.init.call(this,A,k)},z.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthanorequal(this.rhs.evaluate(A))},z.prototype.toString=function(){return"("+this.lhs.toString()+" <= "+this.rhs.toString()+")"},L.prototype=new B,L.prototype.constructor=L,L.superclass=B.prototype;function L(A,k){arguments.length>0&&this.init(A,k)}L.prototype.init=function(A,k){L.superclass.init.call(this,A,k)},L.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthanorequal(this.rhs.evaluate(A))},L.prototype.toString=function(){return"("+this.lhs.toString()+" >= "+this.rhs.toString()+")"},G.prototype=new B,G.prototype.constructor=G,G.superclass=B.prototype;function G(A,k){arguments.length>0&&this.init(A,k)}G.prototype.init=function(A,k){G.superclass.init.call(this,A,k)},G.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().plus(this.rhs.evaluate(A).number())},G.prototype.toString=function(){return"("+this.lhs.toString()+" + "+this.rhs.toString()+")"},K.prototype=new B,K.prototype.constructor=K,K.superclass=B.prototype;function K(A,k){arguments.length>0&&this.init(A,k)}K.prototype.init=function(A,k){K.superclass.init.call(this,A,k)},K.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().minus(this.rhs.evaluate(A).number())},K.prototype.toString=function(){return"("+this.lhs.toString()+" - "+this.rhs.toString()+")"},$.prototype=new B,$.prototype.constructor=$,$.superclass=B.prototype;function $(A,k){arguments.length>0&&this.init(A,k)}$.prototype.init=function(A,k){$.superclass.init.call(this,A,k)},$.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().multiply(this.rhs.evaluate(A).number())},$.prototype.toString=function(){return"("+this.lhs.toString()+" * "+this.rhs.toString()+")"},te.prototype=new B,te.prototype.constructor=te,te.superclass=B.prototype;function te(A,k){arguments.length>0&&this.init(A,k)}te.prototype.init=function(A,k){te.superclass.init.call(this,A,k)},te.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().div(this.rhs.evaluate(A).number())},te.prototype.toString=function(){return"("+this.lhs.toString()+" div "+this.rhs.toString()+")"},re.prototype=new B,re.prototype.constructor=re,re.superclass=B.prototype;function re(A,k){arguments.length>0&&this.init(A,k)}re.prototype.init=function(A,k){re.superclass.init.call(this,A,k)},re.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().mod(this.rhs.evaluate(A).number())},re.prototype.toString=function(){return"("+this.lhs.toString()+" mod "+this.rhs.toString()+")"},ee.prototype=new B,ee.prototype.constructor=ee,ee.superclass=B.prototype;function ee(A,k){arguments.length>0&&this.init(A,k)}ee.prototype.init=function(A,k){ee.superclass.init.call(this,A,k)},ee.prototype.evaluate=function(A){return this.lhs.evaluate(A).nodeset().union(this.rhs.evaluate(A).nodeset())},ee.prototype.toString=function(){return c(f,[this.lhs,this.rhs]).join(" | ")},Z.prototype=new U,Z.prototype.constructor=Z,Z.superclass=U.prototype;function Z(A,k,O){arguments.length>0&&this.init(A,k,O)}Z.prototype.init=function(A,k,O){Z.superclass.init.call(this),this.filter=A,this.filterPredicates=k,this.locationPath=O};function me(A){for(;A&&A.parentNode;)A=A.parentNode;return A}var le=function(A,k,O,V){if(A.length===0)return O;var H=k.extend({});return a(function(W,ue){return H.contextSize=W.length,l(function(Re,Ye){return H.contextNode=Re,H.contextPosition=Ye+1,Z.predicateMatches(ue,H)},W)},I(O,V),A)};Z.getRoot=function(A,k){var O=k[0];if(O&&O.nodeType===b.DOCUMENT_NODE)return O;if(A.virtualRoot)return A.virtualRoot;if(!O)throw new Error("Context node not found when determining document root.");var V=O.ownerDocument;if(V)return V;for(var H=O;H.parentNode!=null;)H=H.parentNode;return H};var Ae=function(A){var k=String(A.name);return k==="xmlns"?"":k.substring(0,6)==="xmlns:"?k.substring(6,k.length):null};Z.applyStep=function(A,k,O){if(!O)throw new Error("Context node not found when evaluating XPath step: "+A);var V=[];switch(k.contextNode=O,A.axis){case se.ANCESTOR:if(k.contextNode===k.virtualRoot)break;var H;for(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode;H!=null&&(A.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);)H=H.parentNode;break;case se.ANCESTORORSELF:for(var H=k.contextNode;H!=null&&(A.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);H=H.nodeType==b.ATTRIBUTE_NODE?Z.getOwnerElement(H):H.parentNode);break;case se.ATTRIBUTE:var W=k.contextNode.attributes;if(W!=null)for(var ue=0;ue<W.length;ue++){var H=W.item(ue);A.nodeTest.matches(H,k)&&V.push(H)}break;case se.CHILD:for(var H=k.contextNode.firstChild;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.DESCENDANT:for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.DESCENDANTORSELF:A.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.FOLLOWING:if(k.contextNode===k.virtualRoot)break;var Fe=[];k.contextNode.firstChild!=null?Fe.unshift(k.contextNode.firstChild):Fe.unshift(k.contextNode.nextSibling);for(var H=k.contextNode.parentNode;H!=null&&H.nodeType!=b.DOCUMENT_NODE&&H!==k.virtualRoot;H=H.parentNode)Fe.unshift(H.nextSibling);do for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;while(Fe.length>0);break;case se.FOLLOWINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.nextSibling;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.NAMESPACE:var Re={};if(k.contextNode.nodeType==b.ELEMENT_NODE){Re.xml=new zi("xml",null,_.XML_NAMESPACE_URI,k.contextNode);for(var H=k.contextNode;H!=null&&H.nodeType==b.ELEMENT_NODE;H=H.parentNode)for(var ue=0;ue<H.attributes.length;ue++){var Ye=H.attributes.item(ue),Ie=Ae(Ye);Ie!=null&&Re[Ie]==null&&(Re[Ie]=new zi(Ie,Ye,Ye.value,k.contextNode))}for(var Ie in Re){var O=Re[Ie];A.nodeTest.matches(O,k)&&V.push(O)}}break;case se.PARENT:H=null,k.contextNode!==k.virtualRoot&&(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode),H!=null&&A.nodeTest.matches(H,k)&&V.push(H);break;case se.PRECEDING:var Fe;k.virtualRoot!=null?Fe=[k.virtualRoot]:Fe=[me(k.contextNode)];e:for(;Fe.length>0;)for(var H=Fe.pop();H!=null;){if(H==k.contextNode)break e;A.nodeTest.matches(H,k)&&V.unshift(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling}break;case se.PRECEDINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.previousSibling;H!=null;H=H.previousSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.SELF:A.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);break;default:}return V};function ve(A,k,O){return le(A.predicates,k,Z.applyStep(A,k,O),d(it,A.axis))}function qe(A,k,O){return w(c(ve.bind(null,O,A),k))}Z.applySteps=function(A,k,O){return a(qe.bind(null,k),O,A)},Z.prototype.applyFilter=function(A,k){if(!this.filter)return{nodes:[A.contextNode]};var O=this.filter.evaluate(A);if(!be.instance_of(O,Ce)){if(this.filterPredicates!=null&&this.filterPredicates.length>0||this.locationPath!=null)throw new Error("Path expression filter must evaluate to a nodeset if predicates or location path are used");return{nonNodes:O}}return{nodes:le(this.filterPredicates||[],k,O.toUnsortedArray(),!1)}},Z.applyLocationPath=function(A,k,O){if(!A)return O;var V=A.absolute?[Z.getRoot(k,O)]:O;return Z.applySteps(A.steps,k,V)},Z.prototype.evaluate=function(A){var k=C(new ii,A),O=this.applyFilter(A,k);if("nonNodes"in O)return O.nonNodes;var V=new Ce;return V.addArray(Z.applyLocationPath(this.locationPath,k,O.nodes)),V},Z.predicateMatches=function(A,k){var O=A.evaluate(k);return be.instance_of(O,Ee)?k.contextPosition===O.numberValue():O.booleanValue()},Z.predicateString=function(A){return g("[","]",A.toString())},Z.predicatesString=function(A){return h("",c(Z.predicateString,A))},Z.prototype.toString=function(){if(this.filter!=null){var A=f(this.filter);return be.instance_of(this.filter,we)?g("'","'",A):this.filterPredicates!=null&&this.filterPredicates.length?g("(",")",A)+Z.predicatesString(this.filterPredicates):this.locationPath!=null?A+(this.locationPath.absolute?"":"/")+f(this.locationPath):A}return f(this.locationPath)},Z.getOwnerElement=function(A){if(A.ownerElement)return A.ownerElement;try{if(A.selectSingleNode)return A.selectSingleNode("..")}catch{}for(var k=A.nodeType==b.DOCUMENT_NODE?A:A.ownerDocument,O=k.getElementsByTagName("*"),V=0;V<O.length;V++)for(var H=O.item(V),W=H.attributes,ue=0;ue<W.length;ue++){var Re=W.item(ue);if(Re===A)return H}return null},_e.prototype=new Object,_e.prototype.constructor=_e,_e.superclass=Object.prototype;function _e(A,k){arguments.length>0&&this.init(A,k)}_e.prototype.init=function(A,k){this.absolute=A,this.steps=k},_e.prototype.toString=function(){return(this.absolute?"/":"")+c(f,this.steps).join("/")},se.prototype=new Object,se.prototype.constructor=se,se.superclass=Object.prototype;function se(A,k,O){arguments.length>0&&this.init(A,k,O)}se.prototype.init=function(A,k,O){this.axis=A,this.nodeTest=k,this.predicates=O},se.prototype.toString=function(){return se.STEPNAMES[this.axis]+"::"+this.nodeTest.toString()+Z.predicatesString(this.predicates)},se.ANCESTOR=0,se.ANCESTORORSELF=1,se.ATTRIBUTE=2,se.CHILD=3,se.DESCENDANT=4,se.DESCENDANTORSELF=5,se.FOLLOWING=6,se.FOLLOWINGSIBLING=7,se.NAMESPACE=8,se.PARENT=9,se.PRECEDING=10,se.PRECEDINGSIBLING=11,se.SELF=12,se.STEPNAMES=a(function(A,k){return A[k[0]]=k[1],A},{},[[se.ANCESTOR,"ancestor"],[se.ANCESTORORSELF,"ancestor-or-self"],[se.ATTRIBUTE,"attribute"],[se.CHILD,"child"],[se.DESCENDANT,"descendant"],[se.DESCENDANTORSELF,"descendant-or-self"],[se.FOLLOWING,"following"],[se.FOLLOWINGSIBLING,"following-sibling"],[se.NAMESPACE,"namespace"],[se.PARENT,"parent"],[se.PRECEDING,"preceding"],[se.PRECEDINGSIBLING,"preceding-sibling"],[se.SELF,"self"]]);var it=[se.ANCESTOR,se.ANCESTORORSELF,se.PARENT,se.PRECEDING,se.PRECEDINGSIBLING];ce.prototype=new Object,ce.prototype.constructor=ce,ce.superclass=Object.prototype;function ce(A,k){arguments.length>0&&this.init(A,k)}ce.prototype.init=function(A,k){this.type=A,this.value=k},ce.prototype.toString=function(){return"<unknown nodetest type>"},ce.prototype.matches=function(A,k){console.warn("unknown node test type")},ce.NAMETESTANY=0,ce.NAMETESTPREFIXANY=1,ce.NAMETESTQNAME=2,ce.COMMENT=3,ce.TEXT=4,ce.PI=5,ce.NODE=6,ce.isNodeType=function(A){return function(k){return d(A,k.nodeType)}},ce.makeNodeTestType=function(A,k,O){var V=O||function(){};return V.prototype=new ce(A),V.prototype.constructor=V,C(V.prototype,k),V},ce.makeNodeTypeTest=function(A,k,O){return new(ce.makeNodeTestType(A,{matches:ce.isNodeType(k),toString:u(O)}))},ce.hasPrefix=function(A){return A.prefix||(A.nodeName||A.tagName).indexOf(":")!==-1},ce.isElementOrAttribute=ce.isNodeType([1,2]),ce.nameSpaceMatches=function(A,k,O){var V=O.namespaceURI||"";if(!A)return!V||k.allowAnyNamespaceForNoPrefix&&!ce.hasPrefix(O);var H=k.namespaceResolver.getNamespace(A,k.expressionContextNode);if(H==null)throw new Error("Cannot resolve QName "+A);return H===V},ce.localNameMatches=function(A,k,O){var V=O.localName||O.nodeName;return k.caseInsensitive?A.toLowerCase()===V.toLowerCase():A===V},ce.NameTestPrefixAny=ce.makeNodeTestType(ce.NAMETESTPREFIXANY,{matches:function(A,k){return ce.isElementOrAttribute(A)&&ce.nameSpaceMatches(this.prefix,k,A)},toString:function(){return this.prefix+":*"}},function(k){this.prefix=k}),ce.NameTestQName=ce.makeNodeTestType(ce.NAMETESTQNAME,{matches:function(A,k){return ce.isNodeType([b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE])(A)&&ce.nameSpaceMatches(this.prefix,k,A)&&ce.localNameMatches(this.localName,k,A)},toString:function(){return this.name}},function(k){var O=k.split(":");this.name=k,this.prefix=O.length>1?O[0]:null,this.localName=O[O.length>1?1:0]}),ce.PITest=ce.makeNodeTestType(ce.PI,{matches:function(A,k){return ce.isNodeType([b.PROCESSING_INSTRUCTION_NODE])(A)&&(A.target||A.nodeName)===this.name},toString:function(){return g('processing-instruction("','")',this.name)}},function(A){this.name=A}),ce.nameTestAny=ce.makeNodeTypeTest(ce.NAMETESTANY,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE],"*"),ce.textTest=ce.makeNodeTypeTest(ce.TEXT,[b.TEXT_NODE,b.CDATA_SECTION_NODE],"text()"),ce.commentTest=ce.makeNodeTypeTest(ce.COMMENT,[b.COMMENT_NODE],"comment()"),ce.nodeTest=ce.makeNodeTypeTest(ce.NODE,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.TEXT_NODE,b.CDATA_SECTION_NODE,b.PROCESSING_INSTRUCTION_NODE,b.COMMENT_NODE,b.DOCUMENT_NODE],"node()"),ce.anyPiTest=ce.makeNodeTypeTest(ce.PI,[b.PROCESSING_INSTRUCTION_NODE],"processing-instruction()"),dr.prototype=new U,dr.prototype.constructor=dr,dr.superclass=U.prototype;function dr(A){arguments.length>0&&this.init(A)}dr.prototype.init=function(A){this.variable=A},dr.prototype.toString=function(){return"$"+this.variable},dr.prototype.evaluate=function(A){var k=be.resolveQName(this.variable,A.namespaceResolver,A.contextNode,!1);if(k[0]==null)throw new Error("Cannot resolve QName "+fn);var O=A.variableResolver.getVariable(k[1],k[0]);if(!O)throw Ai.fromMessage("Undeclared variable: "+this.toString());return O},Or.prototype=new U,Or.prototype.constructor=Or,Or.superclass=U.prototype;function Or(A,k){arguments.length>0&&this.init(A,k)}Or.prototype.init=function(A,k){this.functionName=A,this.arguments=k},Or.prototype.toString=function(){for(var A=this.functionName+"(",k=0;k<this.arguments.length;k++)k>0&&(A+=", "),A+=this.arguments[k].toString();return A+")"},Or.prototype.evaluate=function(A){var k=tr.getFunctionFromContext(this.functionName,A);if(!k)throw new Error("Unknown function "+this.functionName);var O=[A].concat(this.arguments);return k.apply(A.functionResolver.thisArg,O)};var ct=new Object;ct.equals=function(A,k){return A.equals(k)},ct.notequal=function(A,k){return A.notequal(k)},ct.lessthan=function(A,k){return A.lessthan(k)},ct.greaterthan=function(A,k){return A.greaterthan(k)},ct.lessthanorequal=function(A,k){return A.lessthanorequal(k)},ct.greaterthanorequal=function(A,k){return A.greaterthanorequal(k)},we.prototype=new U,we.prototype.constructor=we,we.superclass=U.prototype;function we(A){arguments.length>0&&this.init(A)}we.prototype.init=function(A){this.str=String(A)},we.prototype.toString=function(){return this.str},we.prototype.evaluate=function(A){return this},we.prototype.string=function(){return this},we.prototype.number=function(){return new Ee(this.str)},we.prototype.bool=function(){return new Se(this.str)},we.prototype.nodeset=function(){throw new Error("Cannot convert string to nodeset")},we.prototype.stringValue=function(){return this.str},we.prototype.numberValue=function(){return this.number().numberValue()},we.prototype.booleanValue=function(){return this.bool().booleanValue()},we.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,Ee)?this.number().equals(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.equals):new Se(this.str==A.str)},we.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,Ee)?this.number().notequal(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.notequal):new Se(this.str!=A.str)},we.prototype.lessthan=function(A){return this.number().lessthan(A)},we.prototype.greaterthan=function(A){return this.number().greaterthan(A)},we.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},we.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Ee.prototype=new U,Ee.prototype.constructor=Ee,Ee.superclass=U.prototype;function Ee(A){arguments.length>0&&this.init(A)}Ee.prototype.init=function(A){this.num=typeof A=="string"?this.parse(A):Number(A)},Ee.prototype.numberFormat=/^\s*-?[0-9]*\.?[0-9]+\s*$/,Ee.prototype.parse=function(A){return this.numberFormat.test(A)?parseFloat(A):Number.NaN};function Gi(A){for(var k=A.split("e-"),O=k[0].replace(".",""),V=Number(k[1]),H=0;H<V-1;H+=1)O="0"+O;return"0."+O}function xo(A){for(var k=A.split("e"),O=k[0].replace(".",""),V=Number(k[1]),H=V+1-O.length,W=0;W<H;W+=1)O+="0";return O}Ee.prototype.toString=function(){var A=this.num.toString();return A.indexOf("e-")!==-1?Gi(A):A.indexOf("e")!==-1?xo(A):A},Ee.prototype.evaluate=function(A){return this},Ee.prototype.string=function(){return new we(this.toString())},Ee.prototype.number=function(){return this},Ee.prototype.bool=function(){return new Se(this.num)},Ee.prototype.nodeset=function(){throw new Error("Cannot convert number to nodeset")},Ee.prototype.stringValue=function(){return this.string().stringValue()},Ee.prototype.numberValue=function(){return this.num},Ee.prototype.booleanValue=function(){return this.bool().booleanValue()},Ee.prototype.negate=function(){return new Ee(-this.num)},Ee.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,we)?this.equals(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.equals):new Se(this.num==A.num)},Ee.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,we)?this.notequal(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.notequal):new Se(this.num!=A.num)},Ee.prototype.lessthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthan(A.number()):new Se(this.num<A.num)},Ee.prototype.greaterthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthan(A.number()):new Se(this.num>A.num)},Ee.prototype.lessthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthanorequal(A.number()):new Se(this.num<=A.num)},Ee.prototype.greaterthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthanorequal(A.number()):new Se(this.num>=A.num)},Ee.prototype.plus=function(A){return new Ee(this.num+A.num)},Ee.prototype.minus=function(A){return new Ee(this.num-A.num)},Ee.prototype.multiply=function(A){return new Ee(this.num*A.num)},Ee.prototype.div=function(A){return new Ee(this.num/A.num)},Ee.prototype.mod=function(A){return new Ee(this.num%A.num)},Se.prototype=new U,Se.prototype.constructor=Se,Se.superclass=U.prototype;function Se(A){arguments.length>0&&this.init(A)}Se.prototype.init=function(A){this.b=!!A},Se.prototype.toString=function(){return this.b.toString()},Se.prototype.evaluate=function(A){return this},Se.prototype.string=function(){return new we(this.b)},Se.prototype.number=function(){return new Ee(this.b)},Se.prototype.bool=function(){return this},Se.prototype.nodeset=function(){throw new Error("Cannot convert boolean to nodeset")},Se.prototype.stringValue=function(){return this.string().stringValue()},Se.prototype.numberValue=function(){return this.number().numberValue()},Se.prototype.booleanValue=function(){return this.b},Se.prototype.not=function(){return new Se(!this.b)},Se.prototype.equals=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.equals(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.equals):new Se(this.b==A.b)},Se.prototype.notequal=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.notequal(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.notequal):new Se(this.b!=A.b)},Se.prototype.lessthan=function(A){return this.number().lessthan(A)},Se.prototype.greaterthan=function(A){return this.number().greaterthan(A)},Se.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},Se.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Se.true_=new Se(!0),Se.false_=new Se(!1),Dt.prototype=new Object,Dt.prototype.constructor=Dt,Dt.superclass=Object.prototype;function Dt(A){this.init(A)}Dt.prototype.init=function(A){this.left=null,this.right=null,this.node=A,this.depth=1},Dt.prototype.balance=function(){var A=this.left==null?0:this.left.depth,k=this.right==null?0:this.right.depth;if(A>k+1){var O=this.left.left==null?0:this.left.left.depth,V=this.left.right==null?0:this.left.right.depth;O<V&&this.left.rotateRR(),this.rotateLL()}else if(A+1<k){var H=this.right.right==null?0:this.right.right.depth,W=this.right.left==null?0:this.right.left.depth;W>H&&this.right.rotateLL(),this.rotateRR()}},Dt.prototype.rotateLL=function(){var A=this.node,k=this.right;this.node=this.left.node,this.right=this.left,this.left=this.left.left,this.right.left=this.right.right,this.right.right=k,this.right.node=A,this.right.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.rotateRR=function(){var A=this.node,k=this.left;this.node=this.right.node,this.left=this.right,this.right=this.right.right,this.left.right=this.left.left,this.left.left=k,this.left.node=A,this.left.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.updateInNewLocation=function(){this.getDepthFromChildren()},Dt.prototype.getDepthFromChildren=function(){this.depth=this.node==null?0:1,this.left!=null&&(this.depth=this.left.depth+1),this.right!=null&&this.depth<=this.right.depth&&(this.depth=this.right.depth+1)};function Bs(A,k){if(A===k)return 0;if(A.compareDocumentPosition){var O=A.compareDocumentPosition(k);return O&1||O&10?1:O&20?-1:0}for(var V=0,H=0,W=A;W!=null;W=W.parentNode||W.ownerElement)V++;for(var ue=k;ue!=null;ue=ue.parentNode||ue.ownerElement)H++;if(V>H){for(;V>H;)A=A.parentNode||A.ownerElement,V--;if(A===k)return 1}else if(H>V){for(;H>V;)k=k.parentNode||k.ownerElement,H--;if(A===k)return-1}for(var Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;Re!==Ye;)A=Re,k=Ye,Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;var Ie=Al(A),Fe=Al(k);if(Ie&&!Fe)return-1;if(!Ie&&Fe)return 1;if(A.isXPathNamespace){if(A.nodeValue===_.XML_NAMESPACE_URI||!k.isXPathNamespace)return-1;if(k.nodeValue===_.XML_NAMESPACE_URI)return 1}else if(k.isXPathNamespace)return 1;if(Re)for(var yn=Ie?Re.attributes:Re.childNodes,bs=yn.length,vs=A.baseNode||A,ks=k.baseNode||k,ji=0;ji<bs;ji+=1){var Ln=yn[ji];if(Ln===vs)return-1;if(Ln===ks)return 1}throw new Error("Unexpected: could not determine node order")}Dt.prototype.add=function(A){if(A===this.node)return!1;var k=Bs(A,this.node),O=!1;return k==-1?this.left==null?(this.left=new Dt(A),O=!0):(O=this.left.add(A),O&&this.balance()):k==1&&(this.right==null?(this.right=new Dt(A),O=!0):(O=this.right.add(A),O&&this.balance())),O&&this.getDepthFromChildren(),O},Ce.prototype=new U,Ce.prototype.constructor=Ce,Ce.superclass=U.prototype;function Ce(){this.init()}Ce.prototype.init=function(){this.tree=null,this.nodes=[],this.size=0},Ce.prototype.toString=function(){var A=this.first();return A==null?"":this.stringForNode(A)},Ce.prototype.evaluate=function(A){return this},Ce.prototype.string=function(){return new we(this.toString())},Ce.prototype.stringValue=function(){return this.toString()},Ce.prototype.number=function(){return new Ee(this.string())},Ce.prototype.numberValue=function(){return Number(this.string())},Ce.prototype.bool=function(){return new Se(this.booleanValue())},Ce.prototype.booleanValue=function(){return!!this.size},Ce.prototype.nodeset=function(){return this},Ce.prototype.stringForNode=function(A){return A.nodeType==b.DOCUMENT_NODE||A.nodeType==b.ELEMENT_NODE||A.nodeType===b.DOCUMENT_FRAGMENT_NODE?this.stringForContainerNode(A):A.nodeType===b.ATTRIBUTE_NODE?A.value||A.nodeValue:A.isNamespaceNode?A.namespace:A.nodeValue},Ce.prototype.stringForContainerNode=function(A){for(var k="",O=A.firstChild;O!=null;O=O.nextSibling){var V=O.nodeType;(V===1||V===3||V===4||V===9||V===11)&&(k+=this.stringForNode(O))}return k},Ce.prototype.buildTree=function(){if(!this.tree&&this.nodes.length){this.tree=new Dt(this.nodes[0]);for(var A=1;A<this.nodes.length;A+=1)this.tree.add(this.nodes[A])}return this.tree},Ce.prototype.first=function(){var A=this.buildTree();if(A==null)return null;for(;A.left!=null;)A=A.left;return A.node},Ce.prototype.add=function(A){for(var k=0;k<this.nodes.length;k+=1)if(A===this.nodes[k])return;this.tree=null,this.nodes.push(A),this.size+=1},Ce.prototype.addArray=function(A){var k=this;o(function(O){k.add(O)},A)},Ce.prototype.toArray=function(){var A=[];return this.toArrayRec(this.buildTree(),A),A},Ce.prototype.toArrayRec=function(A,k){A!=null&&(this.toArrayRec(A.left,k),k.push(A.node),this.toArrayRec(A.right,k))},Ce.prototype.toUnsortedArray=function(){return this.nodes.slice()},Ce.prototype.compareWithString=function(A,k){for(var O=this.toUnsortedArray(),V=0;V<O.length;V++){var H=O[V],W=new we(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithNumber=function(A,k){for(var O=this.toUnsortedArray(),V=0;V<O.length;V++){var H=O[V],W=new Ee(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithBoolean=function(A,k){return k(this.bool(),A)},Ce.prototype.compareWithNodeSet=function(A,k){for(var O=this.toUnsortedArray(),V=function(Re,Ye){return k(Ye,Re)},H=0;H<O.length;H++){var W=new we(this.stringForNode(O[H])),ue=A.compareWithString(W,V);if(ue.booleanValue())return ue}return new Se(!1)},Ce.compareWith=s(function(A,k){return be.instance_of(k,we)?this.compareWithString(k,A):be.instance_of(k,Ee)?this.compareWithNumber(k,A):be.instance_of(k,Se)?this.compareWithBoolean(k,A):this.compareWithNodeSet(k,A)}),Ce.prototype.equals=Ce.compareWith(ct.equals),Ce.prototype.notequal=Ce.compareWith(ct.notequal),Ce.prototype.lessthan=Ce.compareWith(ct.lessthan),Ce.prototype.greaterthan=Ce.compareWith(ct.greaterthan),Ce.prototype.lessthanorequal=Ce.compareWith(ct.lessthanorequal),Ce.prototype.greaterthanorequal=Ce.compareWith(ct.greaterthanorequal),Ce.prototype.union=function(A){var k=new Ce;return k.addArray(this.toUnsortedArray()),k.addArray(A.toUnsortedArray()),k},zi.prototype=new Object,zi.prototype.constructor=zi,zi.superclass=Object.prototype;function zi(A,k,O,V){this.isXPathNamespace=!0,this.baseNode=k,this.ownerDocument=V.ownerDocument,this.nodeName=A,this.prefix=A,this.localName=A,this.namespaceURI=null,this.nodeValue=O,this.ownerElement=V,this.nodeType=b.NAMESPACE_NODE}zi.prototype.toString=function(){return'{ "'+this.prefix+'", "'+this.namespaceURI+'" }'},ii.prototype=new Object,ii.prototype.constructor=ii,ii.superclass=Object.prototype;function ii(A,k,O){this.variableResolver=A??new Ir,this.namespaceResolver=k??new ur,this.functionResolver=O??new tr}ii.prototype.extend=function(A){return C(new ii,this,A)},Ir.prototype=new Object,Ir.prototype.constructor=Ir,Ir.superclass=Object.prototype;function Ir(){}Ir.prototype.getVariable=function(A,k){return null},tr.prototype=new Object,tr.prototype.constructor=tr,tr.superclass=Object.prototype;function tr(A){this.thisArg=A??Qe,this.functions=new Object,this.addStandardFunctions()}tr.prototype.addStandardFunctions=function(){this.functions["{}last"]=Qe.last,this.functions["{}position"]=Qe.position,this.functions["{}count"]=Qe.count,this.functions["{}id"]=Qe.id,this.functions["{}local-name"]=Qe.localName,this.functions["{}namespace-uri"]=Qe.namespaceURI,this.functions["{}name"]=Qe.name,this.functions["{}string"]=Qe.string,this.functions["{}concat"]=Qe.concat,this.functions["{}starts-with"]=Qe.startsWith,this.functions["{}contains"]=Qe.contains,this.functions["{}substring-before"]=Qe.substringBefore,this.functions["{}substring-after"]=Qe.substringAfter,this.functions["{}substring"]=Qe.substring,this.functions["{}string-length"]=Qe.stringLength,this.functions["{}normalize-space"]=Qe.normalizeSpace,this.functions["{}translate"]=Qe.translate,this.functions["{}boolean"]=Qe.boolean_,this.functions["{}not"]=Qe.not,this.functions["{}true"]=Qe.true_,this.functions["{}false"]=Qe.false_,this.functions["{}lang"]=Qe.lang,this.functions["{}number"]=Qe.number,this.functions["{}sum"]=Qe.sum,this.functions["{}floor"]=Qe.floor,this.functions["{}ceiling"]=Qe.ceiling,this.functions["{}round"]=Qe.round},tr.prototype.addFunction=function(A,k,O){this.functions["{"+A+"}"+k]=O},tr.getFunctionFromContext=function(A,k){var O=be.resolveQName(A,k.namespaceResolver,k.contextNode,!1);if(O[0]===null)throw new Error("Cannot resolve QName "+name);return k.functionResolver.getFunction(O[1],O[0])},tr.prototype.getFunction=function(A,k){return this.functions["{"+k+"}"+A]},ur.prototype=new Object,ur.prototype.constructor=ur,ur.superclass=Object.prototype;function ur(){}ur.prototype.getNamespace=function(A,k){if(A=="xml")return _.XML_NAMESPACE_URI;if(A=="xmlns")return _.XMLNS_NAMESPACE_URI;for(k.nodeType==b.DOCUMENT_NODE?k=k.documentElement:k.nodeType==b.ATTRIBUTE_NODE?k=Z.getOwnerElement(k):k.nodeType!=b.ELEMENT_NODE&&(k=k.parentNode);k!=null&&k.nodeType==b.ELEMENT_NODE;){for(var O=k.attributes,V=0;V<O.length;V++){var H=O.item(V),W=H.name||H.nodeName;if(W==="xmlns"&&A===""||W==="xmlns:"+A)return String(H.value||H.nodeValue)}k=k.parentNode}return null};var Qe=new Object;Qe.last=function(A){if(arguments.length!=1)throw new Error("Function last expects ()");return new Ee(A.contextSize)},Qe.position=function(A){if(arguments.length!=1)throw new Error("Function position expects ()");return new Ee(A.contextPosition)},Qe.count=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function count expects (node-set)");return new Ee(k.size)},Qe.id=function(){var A=arguments[0],k;if(arguments.length!=2)throw new Error("Function id expects (object)");k=arguments[1].evaluate(A),be.instance_of(k,Ce)?k=k.toArray().join(" "):k=k.stringValue();for(var O=k.split(/[\x0d\x0a\x09\x20]+/),V=0,H=new Ce,W=A.contextNode.nodeType==b.DOCUMENT_NODE?A.contextNode:A.contextNode.ownerDocument,ue=0;ue<O.length;ue++){var Re;W.getElementById?Re=W.getElementById(O[ue]):Re=be.getElementById(W,O[ue]),Re!=null&&(H.add(Re),V++)}return H},Qe.localName=function(A,k){var O;if(arguments.length==1)O=A.contextNode;else if(arguments.length==2)O=k.evaluate(A).first();else throw new Error("Function local-name expects (node-set?)");return O==null?new we(""):new we(O.localName||O.baseName||O.target||O.nodeName||"")},Qe.namespaceURI=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function namespace-uri expects (node-set?)");return k==null?new we(""):new we(k.namespaceURI||"")},Qe.name=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function name expects (node-set?)");return k==null?new we(""):k.nodeType==b.ELEMENT_NODE?new we(k.nodeName):k.nodeType==b.ATTRIBUTE_NODE?new we(k.name||k.nodeName):k.nodeType===b.PROCESSING_INSTRUCTION_NODE?new we(k.target||k.nodeName):k.localName==null?new we(""):new we(k.localName)},Qe.string=function(){var A=arguments[0];if(arguments.length==1)return new we(Ce.prototype.stringForNode(A.contextNode));if(arguments.length==2)return arguments[1].evaluate(A).string();throw new Error("Function string expects (object?)")},Qe.concat=function(A){if(arguments.length<3)throw new Error("Function concat expects (string, string[, string]*)");for(var k="",O=1;O<arguments.length;O++)k+=arguments[O].evaluate(A).stringValue();return new we(k)},Qe.startsWith=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function startsWith expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.substring(0,O.length)==O)},Qe.contains=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function contains expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.indexOf(O)!==-1)},Qe.substringBefore=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-before expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new we(k.substring(0,k.indexOf(O)))},Qe.substringAfter=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-after expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();if(O.length==0)return new we(k);var V=k.indexOf(O);return V==-1?new we(""):new we(k.substring(V+O.length))},Qe.substring=function(){var A=arguments[0];if(!(arguments.length==3||arguments.length==4))throw new Error("Function substring expects (string, number, number?)");var k=arguments[1].evaluate(A).stringValue(),O=Math.round(arguments[2].evaluate(A).numberValue())-1,V=arguments.length==4?O+Math.round(arguments[3].evaluate(A).numberValue()):void 0;return new we(k.substring(O,V))},Qe.stringLength=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function string-length expects (string?)");return new Ee(k.length)},Qe.normalizeSpace=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function normalize-space expects (string?)");for(var O=0,V=k.length-1;be.isSpace(k.charCodeAt(V));)V--;for(var H="";O<=V&&be.isSpace(k.charCodeAt(O));)O++;for(;O<=V;)if(be.isSpace(k.charCodeAt(O)))for(H+=" ";O<=V&&be.isSpace(k.charCodeAt(O));)O++;else H+=k.charAt(O),O++;return new we(H)},Qe.translate=function(A,k,O,V){if(arguments.length!=4)throw new Error("Function translate expects (string, string, string)");var H=k.evaluate(A).stringValue(),W=O.evaluate(A).stringValue(),ue=V.evaluate(A).stringValue(),Re=a(function(Ie,Fe,yn){return Fe in Ie||(Ie[Fe]=yn>ue.length?"":ue[yn]),Ie},{},W),Ye=h("",c(function(Ie){return Ie in Re?Re[Ie]:Ie},H));return new we(Ye)},Qe.boolean_=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function boolean expects (object)");return arguments[1].evaluate(A).bool()},Qe.not=function(A,k){if(arguments.length!=2)throw new Error("Function not expects (object)");return k.evaluate(A).bool().not()},Qe.true_=function(){if(arguments.length!=1)throw new Error("Function true expects ()");return Se.true_},Qe.false_=function(){if(arguments.length!=1)throw new Error("Function false expects ()");return Se.false_},Qe.lang=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function lang expects (string)");for(var k,O=A.contextNode;O!=null&&O.nodeType!=b.DOCUMENT_NODE;O=O.parentNode){var V=O.getAttributeNS(_.XML_NAMESPACE_URI,"lang");if(V!=null){k=String(V);break}}if(k==null)return Se.false_;var H=arguments[1].evaluate(A).stringValue();return new Se(k.substring(0,H.length)==H&&(k.length==H.length||k.charAt(H.length)=="-"))},Qe.number=function(){var A=arguments[0];if(!(arguments.length==1||arguments.length==2))throw new Error("Function number expects (object?)");return arguments.length==1?new Ee(Ce.prototype.stringForNode(A.contextNode)):arguments[1].evaluate(A).number()},Qe.sum=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function sum expects (node-set)");k=k.toUnsortedArray();for(var O=0,V=0;V<k.length;V++)O+=new Ee(Ce.prototype.stringForNode(k[V])).numberValue();return new Ee(O)},Qe.floor=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function floor expects (number)");return new Ee(Math.floor(arguments[1].evaluate(A).numberValue()))},Qe.ceiling=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function ceiling expects (number)");return new Ee(Math.ceil(arguments[1].evaluate(A).numberValue()))},Qe.round=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function round expects (number)");return new Ee(Math.round(arguments[1].evaluate(A).numberValue()))};var be=new Object,Al=function(A){return A&&(A.nodeType===b.ATTRIBUTE_NODE||A.ownerElement||A.isXPathNamespace)};be.splitQName=function(A){var k=A.indexOf(":");return k==-1?[null,A]:[A.substring(0,k),A.substring(k+1)]},be.resolveQName=function(A,k,O,V){var H=be.splitQName(A);return H[0]!=null?H[0]=k.getNamespace(H[0],O):V?(H[0]=k.getNamespace("",O),H[0]==null&&(H[0]="")):H[0]="",H},be.isSpace=function(A){return A==9||A==13||A==10||A==32},be.isLetter=function(A){return A>=65&&A<=90||A>=97&&A<=122||A>=192&&A<=214||A>=216&&A<=246||A>=248&&A<=255||A>=256&&A<=305||A>=308&&A<=318||A>=321&&A<=328||A>=330&&A<=382||A>=384&&A<=451||A>=461&&A<=496||A>=500&&A<=501||A>=506&&A<=535||A>=592&&A<=680||A>=699&&A<=705||A==902||A>=904&&A<=906||A==908||A>=910&&A<=929||A>=931&&A<=974||A>=976&&A<=982||A==986||A==988||A==990||A==992||A>=994&&A<=1011||A>=1025&&A<=1036||A>=1038&&A<=1103||A>=1105&&A<=1116||A>=1118&&A<=1153||A>=1168&&A<=1220||A>=1223&&A<=1224||A>=1227&&A<=1228||A>=1232&&A<=1259||A>=1262&&A<=1269||A>=1272&&A<=1273||A>=1329&&A<=1366||A==1369||A>=1377&&A<=1414||A>=1488&&A<=1514||A>=1520&&A<=1522||A>=1569&&A<=1594||A>=1601&&A<=1610||A>=1649&&A<=1719||A>=1722&&A<=1726||A>=1728&&A<=1742||A>=1744&&A<=1747||A==1749||A>=1765&&A<=1766||A>=2309&&A<=2361||A==2365||A>=2392&&A<=2401||A>=2437&&A<=2444||A>=2447&&A<=2448||A>=2451&&A<=2472||A>=2474&&A<=2480||A==2482||A>=2486&&A<=2489||A>=2524&&A<=2525||A>=2527&&A<=2529||A>=2544&&A<=2545||A>=2565&&A<=2570||A>=2575&&A<=2576||A>=2579&&A<=2600||A>=2602&&A<=2608||A>=2610&&A<=2611||A>=2613&&A<=2614||A>=2616&&A<=2617||A>=2649&&A<=2652||A==2654||A>=2674&&A<=2676||A>=2693&&A<=2699||A==2701||A>=2703&&A<=2705||A>=2707&&A<=2728||A>=2730&&A<=2736||A>=2738&&A<=2739||A>=2741&&A<=2745||A==2749||A==2784||A>=2821&&A<=2828||A>=2831&&A<=2832||A>=2835&&A<=2856||A>=2858&&A<=2864||A>=2866&&A<=2867||A>=2870&&A<=2873||A==2877||A>=2908&&A<=2909||A>=2911&&A<=2913||A>=2949&&A<=2954||A>=2958&&A<=2960||A>=2962&&A<=2965||A>=2969&&A<=2970||A==2972||A>=2974&&A<=2975||A>=2979&&A<=2980||A>=2984&&A<=2986||A>=2990&&A<=2997||A>=2999&&A<=3001||A>=3077&&A<=3084||A>=3086&&A<=3088||A>=3090&&A<=3112||A>=3114&&A<=3123||A>=3125&&A<=3129||A>=3168&&A<=3169||A>=3205&&A<=3212||A>=3214&&A<=3216||A>=3218&&A<=3240||A>=3242&&A<=3251||A>=3253&&A<=3257||A==3294||A>=3296&&A<=3297||A>=3333&&A<=3340||A>=3342&&A<=3344||A>=3346&&A<=3368||A>=3370&&A<=3385||A>=3424&&A<=3425||A>=3585&&A<=3630||A==3632||A>=3634&&A<=3635||A>=3648&&A<=3653||A>=3713&&A<=3714||A==3716||A>=3719&&A<=3720||A==3722||A==3725||A>=3732&&A<=3735||A>=3737&&A<=3743||A>=3745&&A<=3747||A==3749||A==3751||A>=3754&&A<=3755||A>=3757&&A<=3758||A==3760||A>=3762&&A<=3763||A==3773||A>=3776&&A<=3780||A>=3904&&A<=3911||A>=3913&&A<=3945||A>=4256&&A<=4293||A>=4304&&A<=4342||A==4352||A>=4354&&A<=4355||A>=4357&&A<=4359||A==4361||A>=4363&&A<=4364||A>=4366&&A<=4370||A==4412||A==4414||A==4416||A==4428||A==4430||A==4432||A>=4436&&A<=4437||A==4441||A>=4447&&A<=4449||A==4451||A==4453||A==4455||A==4457||A>=4461&&A<=4462||A>=4466&&A<=4467||A==4469||A==4510||A==4520||A==4523||A>=4526&&A<=4527||A>=4535&&A<=4536||A==4538||A>=4540&&A<=4546||A==4587||A==4592||A==4601||A>=7680&&A<=7835||A>=7840&&A<=7929||A>=7936&&A<=7957||A>=7960&&A<=7965||A>=7968&&A<=8005||A>=8008&&A<=8013||A>=8016&&A<=8023||A==8025||A==8027||A==8029||A>=8031&&A<=8061||A>=8064&&A<=8116||A>=8118&&A<=8124||A==8126||A>=8130&&A<=8132||A>=8134&&A<=8140||A>=8144&&A<=8147||A>=8150&&A<=8155||A>=8160&&A<=8172||A>=8178&&A<=8180||A>=8182&&A<=8188||A==8486||A>=8490&&A<=8491||A==8494||A>=8576&&A<=8578||A>=12353&&A<=12436||A>=12449&&A<=12538||A>=12549&&A<=12588||A>=44032&&A<=55203||A>=19968&&A<=40869||A==12295||A>=12321&&A<=12329},be.isNCNameChar=function(A){return A>=48&&A<=57||A>=1632&&A<=1641||A>=1776&&A<=1785||A>=2406&&A<=2415||A>=2534&&A<=2543||A>=2662&&A<=2671||A>=2790&&A<=2799||A>=2918&&A<=2927||A>=3047&&A<=3055||A>=3174&&A<=3183||A>=3302&&A<=3311||A>=3430&&A<=3439||A>=3664&&A<=3673||A>=3792&&A<=3801||A>=3872&&A<=3881||A==46||A==45||A==95||be.isLetter(A)||A>=768&&A<=837||A>=864&&A<=865||A>=1155&&A<=1158||A>=1425&&A<=1441||A>=1443&&A<=1465||A>=1467&&A<=1469||A==1471||A>=1473&&A<=1474||A==1476||A>=1611&&A<=1618||A==1648||A>=1750&&A<=1756||A>=1757&&A<=1759||A>=1760&&A<=1764||A>=1767&&A<=1768||A>=1770&&A<=1773||A>=2305&&A<=2307||A==2364||A>=2366&&A<=2380||A==2381||A>=2385&&A<=2388||A>=2402&&A<=2403||A>=2433&&A<=2435||A==2492||A==2494||A==2495||A>=2496&&A<=2500||A>=2503&&A<=2504||A>=2507&&A<=2509||A==2519||A>=2530&&A<=2531||A==2562||A==2620||A==2622||A==2623||A>=2624&&A<=2626||A>=2631&&A<=2632||A>=2635&&A<=2637||A>=2672&&A<=2673||A>=2689&&A<=2691||A==2748||A>=2750&&A<=2757||A>=2759&&A<=2761||A>=2763&&A<=2765||A>=2817&&A<=2819||A==2876||A>=2878&&A<=2883||A>=2887&&A<=2888||A>=2891&&A<=2893||A>=2902&&A<=2903||A>=2946&&A<=2947||A>=3006&&A<=3010||A>=3014&&A<=3016||A>=3018&&A<=3021||A==3031||A>=3073&&A<=3075||A>=3134&&A<=3140||A>=3142&&A<=3144||A>=3146&&A<=3149||A>=3157&&A<=3158||A>=3202&&A<=3203||A>=3262&&A<=3268||A>=3270&&A<=3272||A>=3274&&A<=3277||A>=3285&&A<=3286||A>=3330&&A<=3331||A>=3390&&A<=3395||A>=3398&&A<=3400||A>=3402&&A<=3405||A==3415||A==3633||A>=3636&&A<=3642||A>=3655&&A<=3662||A==3761||A>=3764&&A<=3769||A>=3771&&A<=3772||A>=3784&&A<=3789||A>=3864&&A<=3865||A==3893||A==3895||A==3897||A==3902||A==3903||A>=3953&&A<=3972||A>=3974&&A<=3979||A>=3984&&A<=3989||A==3991||A>=3993&&A<=4013||A>=4017&&A<=4023||A==4025||A>=8400&&A<=8412||A==8417||A>=12330&&A<=12335||A==12441||A==12442||A==183||A==720||A==721||A==903||A==1600||A==3654||A==3782||A==12293||A>=12337&&A<=12341||A>=12445&&A<=12446||A>=12540&&A<=12542},be.coalesceText=function(A){for(var k=A.firstChild;k!=null;k=k.nextSibling)if(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE){var O=k.nodeValue,V=k;for(k=k.nextSibling;k!=null&&(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE);){O+=k.nodeValue;var H=k;k=k.nextSibling,H.parentNode.removeChild(H)}if(V.nodeType==b.CDATA_SECTION_NODE){var W=V.parentNode;if(V.nextSibling==null)W.removeChild(V),W.appendChild(W.ownerDocument.createTextNode(O));else{var ue=V.nextSibling;W.removeChild(V),W.insertBefore(W.ownerDocument.createTextNode(O),ue)}}else V.nodeValue=O;if(k==null)break}else k.nodeType==b.ELEMENT_NODE&&be.coalesceText(k)},be.instance_of=function(A,k){for(;A!=null;){if(A.constructor===k)return!0;if(A===Object)return!1;A=A.constructor.superclass}return!1},be.getElementById=function(A,k){if(A.nodeType==b.ELEMENT_NODE&&(A.getAttribute("id")==k||A.getAttributeNS(null,"id")==k))return A;for(var O=A.firstChild;O!=null;O=O.nextSibling){var V=be.getElementById(O,k);if(V!=null)return V}return null};var Ai=(function(){function A(O,V){var H=V?": "+V.toString():"";switch(O){case k.INVALID_EXPRESSION_ERR:return"Invalid expression"+H;case k.TYPE_ERR:return"Type error"+H}return null}function k(O,V,H){var W=Error.call(this,A(O,V)||H);return W.code=O,W.exception=V,W}return k.prototype=Object.create(Error.prototype),k.prototype.constructor=k,k.superclass=Error,k.prototype.toString=function(){return this.message},k.fromMessage=function(O,V){return new k(null,V,O)},k.INVALID_EXPRESSION_ERR=51,k.TYPE_ERR=52,k})();Mr.prototype={},Mr.prototype.constructor=Mr,Mr.superclass=Object.prototype;function Mr(A,k,O){this.xpath=O.parse(A),this.context=new ii,this.context.namespaceResolver=new Mn(k)}Mr.getOwnerDocument=function(A){return A.nodeType===b.DOCUMENT_NODE?A:A.ownerDocument},Mr.detectHtmlDom=function(A){if(!A)return!1;var k=Mr.getOwnerDocument(A);try{return k.implementation.hasFeature("HTML","2.0")}catch{return!0}},Mr.prototype.evaluate=function(A,k,O){this.context.expressionContextNode=A,this.context.caseInsensitive=Mr.detectHtmlDom(A);var V=this.xpath.evaluate(this.context);return new Le(V,k)},Mn.prototype={},Mn.prototype.constructor=Mn,Mn.superclass=Object.prototype;function Mn(A){this.xpathNSResolver=A}Mn.prototype.getNamespace=function(A,k){return this.xpathNSResolver==null?null:this.xpathNSResolver.lookupNamespaceURI(A)},mn.prototype={},mn.prototype.constructor=mn,mn.superclass=Object.prototype;function mn(A){this.node=A,this.namespaceResolver=new ur}mn.prototype.lookupNamespaceURI=function(A){return this.namespaceResolver.getNamespace(A,this.node)},Le.prototype={},Le.prototype.constructor=Le,Le.superclass=Object.prototype;function Le(A,k){switch(k==Le.ANY_TYPE&&(A.constructor===we?k=Le.STRING_TYPE:A.constructor===Ee?k=Le.NUMBER_TYPE:A.constructor===Se?k=Le.BOOLEAN_TYPE:A.constructor===Ce&&(k=Le.UNORDERED_NODE_ITERATOR_TYPE)),this.resultType=k,k){case Le.NUMBER_TYPE:this.numberValue=A.numberValue();return;case Le.STRING_TYPE:this.stringValue=A.stringValue();return;case Le.BOOLEAN_TYPE:this.booleanValue=A.booleanValue();return;case Le.ANY_UNORDERED_NODE_TYPE:case Le.FIRST_ORDERED_NODE_TYPE:if(A.constructor===Ce){this.singleNodeValue=A.first();return}break;case Le.UNORDERED_NODE_ITERATOR_TYPE:case Le.ORDERED_NODE_ITERATOR_TYPE:if(A.constructor===Ce){this.invalidIteratorState=!1,this.nodes=A.toArray(),this.iteratorIndex=0;return}break;case Le.UNORDERED_NODE_SNAPSHOT_TYPE:case Le.ORDERED_NODE_SNAPSHOT_TYPE:if(A.constructor===Ce){this.nodes=A.toArray(),this.snapshotLength=this.nodes.length;return}break}throw new Ai(Ai.TYPE_ERR)}Le.prototype.iterateNext=function(){if(this.resultType!=Le.UNORDERED_NODE_ITERATOR_TYPE&&this.resultType!=Le.ORDERED_NODE_ITERATOR_TYPE)throw new Ai(Ai.TYPE_ERR);return this.nodes[this.iteratorIndex++]},Le.prototype.snapshotItem=function(A){if(this.resultType!=Le.UNORDERED_NODE_SNAPSHOT_TYPE&&this.resultType!=Le.ORDERED_NODE_SNAPSHOT_TYPE)throw new Ai(Ai.TYPE_ERR);return this.nodes[A]},Le.ANY_TYPE=0,Le.NUMBER_TYPE=1,Le.STRING_TYPE=2,Le.BOOLEAN_TYPE=3,Le.UNORDERED_NODE_ITERATOR_TYPE=4,Le.ORDERED_NODE_ITERATOR_TYPE=5,Le.UNORDERED_NODE_SNAPSHOT_TYPE=6,Le.ORDERED_NODE_SNAPSHOT_TYPE=7,Le.ANY_UNORDERED_NODE_TYPE=8,Le.FIRST_ORDERED_NODE_TYPE=9;function Ja(A,k){A.createExpression=function(O,V){try{return new Mr(O,V,k)}catch(H){throw new Ai(Ai.INVALID_EXPRESSION_ERR,H)}},A.createNSResolver=function(O){return new mn(O)},A.evaluate=function(O,V,H,W,ue){if(W<0||W>9)throw{code:0,toString:function(){return"Request type not supported"}};return A.createExpression(O,H,k).evaluate(V,W,ue)}}try{var Ji=!0;try{document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("XPath",null)&&(Ji=!1)}catch{}Ji&&Ja(document,new x)}catch{}Ja(r,new x),(function(){var A=new x,k=new ur,O=new tr,V=new Ir;function H(he){return{getNamespace:function(Ze,Lr){var In=he(Ze,Lr);return In||k.getNamespace(Ze,Lr)}}}function W(he){return H(he.getNamespace.bind(he))}function ue(he){return H(function(Ze){return he[Ze]})}function Re(he){return he&&typeof he.getNamespace=="function"?W(he):typeof he=="function"?H(he):typeof he=="object"?ue(he):k}function Ye(he){if(he===null||typeof he>"u"||he instanceof we||he instanceof Se||he instanceof Ee||he instanceof Ce)return he;switch(typeof he){case"string":return new we(he);case"boolean":return new Se(he);case"number":return new Ee(he)}var Ze=new Ce;return Ze.addArray([].concat(he)),Ze}function Ie(he){return function(Ze){var Lr=Array.prototype.slice.call(arguments,1).map(function(ex){return ex.evaluate(Ze)}),In=he.apply(this,[].concat(Ze,Lr));return Ye(In)}}function Fe(he){return{getFunction:function(Ze,Lr){var In=he(Ze,Lr);return In?Ie(In):O.getFunction(Ze,Lr)}}}function yn(he){return Fe(he.getFunction.bind(he))}function bs(he){return Fe(function(Ze){return he[Ze]})}function vs(he){return he&&typeof he.getFunction=="function"?yn(he):typeof he=="function"?Fe(he):typeof he=="object"?bs(he):O}function ks(he){return{getVariable:function(Ze,Lr){var In=he(Ze,Lr);return Ye(In)}}}function ji(he){if(he){if(typeof he.getVariable=="function")return ks(he.getVariable.bind(he));if(typeof he=="function")return ks(he);if(typeof he=="object")return ks(function(Ze){return he[Ze]})}return V}function Ln(he,Ze,Lr){he in Lr&&(Ze[he]=Lr[he])}function f0(he){var Ze=new ii;return he?(Ze.namespaceResolver=Re(he.namespaces),Ze.functionResolver=vs(he.functions),Ze.variableResolver=ji(he.variables),Ze.expressionContextNode=he.node,Ln("allowAnyNamespaceForNoPrefix",Ze,he),Ln("isHtml",Ze,he)):Ze.namespaceResolver=k,Ze}function pu(he,Ze){var Lr=f0(Ze);return he.evaluate(Lr)}var Xw={evaluate:function(he){return pu(this.expression,he)},evaluateNumber:function(he){return this.evaluate(he).numberValue()},evaluateString:function(he){return this.evaluate(he).stringValue()},evaluateBoolean:function(he){return this.evaluate(he).booleanValue()},evaluateNodeSet:function(he){return this.evaluate(he).nodeset()},select:function(he){return this.evaluateNodeSet(he).toArray()},select1:function(he){return this.select(he)[0]}};function Zw(he){var Ze=A.parse(he);return Object.create(Xw,{expression:{value:Ze}})}r.parse=Zw})(),C(r,{XPath:_,XPathParser:x,XPathResult:Le,Step:se,PathExpr:Z,NodeTest:ce,LocationPath:_e,OrOperation:Q,AndOperation:v,BarOperation:ee,EqualsOperation:E,NotEqualOperation:P,LessThanOperation:N,GreaterThanOperation:J,LessThanOrEqualOperation:z,GreaterThanOrEqualOperation:L,PlusOperation:G,MinusOperation:K,MultiplyOperation:$,DivOperation:te,ModOperation:re,UnaryMinusOperation:D,FunctionCall:Or,VariableReference:dr,XPathContext:ii,XNodeSet:Ce,XBoolean:Se,XString:we,XNumber:Ee,NamespaceResolver:ur,FunctionResolver:tr,VariableResolver:Ir,Utilities:be}),r.select=function(A,k,O){return r.selectWithResolver(A,k,null,O)},r.useNamespaces=function(A){var k={mappings:A||{},lookupNamespaceURI:function(O){return this.mappings[O]}};return function(O,V,H){return r.selectWithResolver(O,V,k,H)}},r.selectWithResolver=function(A,k,O,V){var H=new Mr(A,O,new x),W=Le.ANY_TYPE,ue=H.evaluate(k,W,null);return ue.resultType==Le.STRING_TYPE?ue=ue.stringValue:ue.resultType==Le.NUMBER_TYPE?ue=ue.numberValue:ue.resultType==Le.BOOLEAN_TYPE?ue=ue.booleanValue:(ue=ue.nodes,V&&(ue=ue[0])),ue},r.select1=function(A,k){return r.select(A,k,!0)};var Co=function(A){return Array.isArray(A)&&A.every(n)},Ti=function(A){return function(k){return n(k)&&k.nodeType===A}};C(r,{isNodeLike:n,isArrayOfNodes:Co,isElement:Ti(b.ELEMENT_NODE),isAttribute:Ti(b.ATTRIBUTE_NODE),isTextNode:Ti(b.TEXT_NODE),isCDATASection:Ti(b.CDATA_SECTION_NODE),isProcessingInstruction:Ti(b.PROCESSING_INSTRUCTION_NODE),isComment:Ti(b.COMMENT_NODE),isDocumentNode:Ti(b.DOCUMENT_NODE),isDocumentTypeNode:Ti(b.DOCUMENT_TYPE_NODE),isDocumentFragment:Ti(b.DOCUMENT_FRAGMENT_NODE)})})(mj)});var xc=oe(Fr=>{"use strict";function yj(r,e,t){if(t===void 0&&(t=Array.prototype),r&&typeof t.find=="function")return t.find.call(r,e);for(var i=0;i<r.length;i++)if(wc(r,i)){var n=r[i];if(e.call(void 0,n,i,r))return n}}function Ll(r,e){return e===void 0&&(e=Object),e&&typeof e.getOwnPropertyDescriptors=="function"&&(r=e.create(null,e.getOwnPropertyDescriptors(r))),e&&typeof e.freeze=="function"?e.freeze(r):r}function wc(r,e){return Object.prototype.hasOwnProperty.call(r,e)}function Ij(r,e){if(r===null||typeof r!="object")throw new TypeError("target is not an object");for(var t in e)wc(e,t)&&(r[t]=e[t]);return r}var SF=Ll({allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,default:!0,defer:!0,disabled:!0,formnovalidate:!0,hidden:!0,ismap:!0,itemscope:!0,loop:!0,multiple:!0,muted:!0,nomodule:!0,novalidate:!0,open:!0,playsinline:!0,readonly:!0,required:!0,reversed:!0,selected:!0});function wj(r){return wc(SF,r.toLowerCase())}var DF=Ll({area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function xj(r){return wc(DF,r.toLowerCase())}var of=Ll({script:!1,style:!1,textarea:!0,title:!0});function Cj(r){var e=r.toLowerCase();return wc(of,e)&&!of[e]}function Ej(r){var e=r.toLowerCase();return wc(of,e)&&of[e]}function QF(r){return r===af.HTML}function Bj(r){return QF(r)||r===af.XML_XHTML_APPLICATION}var af=Ll({HTML:"text/html",XML_APPLICATION:"application/xml",XML_TEXT:"text/xml",XML_XHTML_APPLICATION:"application/xhtml+xml",XML_SVG_IMAGE:"image/svg+xml"}),bj=Object.keys(af).map(function(r){return af[r]});function vj(r){return bj.indexOf(r)>-1}var kj=Ll({HTML:"http://www.w3.org/1999/xhtml",SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});Fr.assign=Ij;Fr.find=yj;Fr.freeze=Ll;Fr.HTML_BOOLEAN_ATTRIBUTES=SF;Fr.HTML_RAW_TEXT_ELEMENTS=of;Fr.HTML_VOID_ELEMENTS=DF;Fr.hasDefaultHTMLNamespace=Bj;Fr.hasOwn=wc;Fr.isHTMLBooleanAttribute=wj;Fr.isHTMLRawTextElement=Cj;Fr.isHTMLEscapableRawTextElement=Ej;Fr.isHTMLMimeType=QF;Fr.isHTMLVoidElement=xj;Fr.isValidMimeType=vj;Fr.MIME_TYPE=af;Fr.NAMESPACE=kj});var ff=oe(uf=>{"use strict";var Sj=xc();function FF(r,e){r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:r.name,enumerable:!0,writable:e}})}var lf=Sj.freeze({Error:"Error",IndexSizeError:"IndexSizeError",DomstringSizeError:"DomstringSizeError",HierarchyRequestError:"HierarchyRequestError",WrongDocumentError:"WrongDocumentError",InvalidCharacterError:"InvalidCharacterError",NoDataAllowedError:"NoDataAllowedError",NoModificationAllowedError:"NoModificationAllowedError",NotFoundError:"NotFoundError",NotSupportedError:"NotSupportedError",InUseAttributeError:"InUseAttributeError",InvalidStateError:"InvalidStateError",SyntaxError:"SyntaxError",InvalidModificationError:"InvalidModificationError",NamespaceError:"NamespaceError",InvalidAccessError:"InvalidAccessError",ValidationError:"ValidationError",TypeMismatchError:"TypeMismatchError",SecurityError:"SecurityError",NetworkError:"NetworkError",AbortError:"AbortError",URLMismatchError:"URLMismatchError",QuotaExceededError:"QuotaExceededError",TimeoutError:"TimeoutError",InvalidNodeTypeError:"InvalidNodeTypeError",DataCloneError:"DataCloneError",EncodingError:"EncodingError",NotReadableError:"NotReadableError",UnknownError:"UnknownError",ConstraintError:"ConstraintError",DataError:"DataError",TransactionInactiveError:"TransactionInactiveError",ReadOnlyError:"ReadOnlyError",VersionError:"VersionError",OperationError:"OperationError",NotAllowedError:"NotAllowedError",OptOutError:"OptOutError"}),PF=Object.keys(lf);function TF(r){return typeof r=="number"&&r>=1&&r<=25}function Dj(r){return typeof r=="string"&&r.substring(r.length-lf.Error.length)===lf.Error}function df(r,e){TF(r)?(this.name=PF[r],this.message=e||""):(this.message=r,this.name=Dj(e)?e:lf.Error),Error.captureStackTrace&&Error.captureStackTrace(this,df)}FF(df,!0);Object.defineProperties(df.prototype,{code:{enumerable:!0,get:function(){var r=PF.indexOf(this.name);return TF(r)?r:0}}});var UF={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},AE=Object.entries(UF);for(cf=0;cf<AE.length;cf++)_F=AE[cf][0],df[_F]=AE[cf][1];var _F,cf;function hE(r,e,t){this.message=r,this.locator=e,this.cause=t,Error.captureStackTrace&&Error.captureStackTrace(this,hE)}FF(hE);uf.DOMException=df;uf.DOMExceptionName=lf;uf.ExceptionCode=UF;uf.ParseError=hE});var xE=oe(Ke=>{"use strict";function LF(r){try{typeof r!="function"&&(r=RegExp);var e=new r("\u{1D306}","u").exec("\u{1D306}");return!!e&&e[0].length===2}catch{}return!1}var Gl=LF();function Wo(r){if(r.source[0]!=="[")throw new Error(r+" can not be used with chars");return r.source.slice(1,r.source.lastIndexOf("]"))}function Hl(r,e){if(r.source[0]!=="[")throw new Error("/"+r.source+"/ can not be used with chars_without");if(!e||typeof e!="string")throw new Error(JSON.stringify(e)+" is not a valid search");if(r.source.indexOf(e)===-1)throw new Error('"'+e+'" is not is /'+r.source+"/");if(e==="-"&&r.source.indexOf(e)!==1)throw new Error('"'+e+'" is not at the first postion of /'+r.source+"/");return new RegExp(r.source.replace(e,""),Gl?"u":"")}function $e(r){var e=this;return new RegExp(Array.prototype.slice.call(arguments).map(function(t){var i=typeof t=="string";if(i&&e===void 0&&t==="|")throw new Error("use regg instead of reg to wrap expressions with `|`!");return i?t:t.source}).join(""),Gl?"u":"")}function Oe(r){if(arguments.length===0)throw new Error("no parameters provided");return $e.apply(Oe,["(?:"].concat(Array.prototype.slice.call(arguments),[")"]))}var Qj="\uFFFD",Xo=/[-\x09\x0A\x0D\x20-\x2C\x2E-\uD7FF\uE000-\uFFFD]/;Gl&&(Xo=$e("[",Wo(Xo),"\\u{10000}-\\u{10FFFF}","]"));var _j=new RegExp("[^"+Wo(Xo)+"]",Gl?"u":""),jm=/[\x20\x09\x0D\x0A]/,Fj=Wo(jm),gt=$e(jm,"+"),Qt=$e(jm,"*"),Af=/[:_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;Gl&&(Af=$e("[",Wo(Af),"\\u{10000}-\\u{10FFFF}","]"));var Pj=Wo(Af),mE=$e("[",Pj,Wo(/[-.0-9\xB7]/),Wo(/[\u0300-\u036F\u203F-\u2040]/),"]"),Oi=$e(Af,mE,"*"),Tj=$e("^",Oi,"$"),RF=$e(mE,"+"),Uj=$e("&",Oi,";"),Rj=Oe(/&#[0-9]+;|&#x[0-9a-fA-F]+;/),hf=Oe(Uj,"|",Rj),gf=$e("%",Oi,";"),yE=Oe($e('"',Oe(/[^%&"]/,"|",gf,"|",hf),"*",'"'),"|",$e("'",Oe(/[^%&']/,"|",gf,"|",hf),"*","'")),Nj=Oe('"',Oe(/[^<&"]/,"|",hf),"*",'"',"|","'",Oe(/[^<&']/,"|",hf),"*","'"),qj=Hl(Af,":"),Oj=Hl(mE,":"),gE=$e(qj,Oj,"*"),Mj=$e("^",gE,"$"),pf=$e(gE,Oe(":",gE),"?"),Lj=$e("^",pf,"$"),Hj=$e("(",pf,")"),Kl=Oe(/"[^"]*"|'[^']*'/),Kj=$e(/^<\?/,"(",Oi,")",Oe(gt,"(?!",jm,")(",Xo,"*?)"),"?",/\?>/),NF=/[\x20\x0D\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/,mf=Oe('"',NF,'*"',"|","'",Hl(NF,"'"),"*'"),HF="<!--",KF="-->",Gj=$e(HF,Oe(Hl(Xo,"-"),"|",$e("-",Hl(Xo,"-"))),"*",KF),qF="#PCDATA",zj=Oe($e(/\(/,Qt,qF,Oe(Qt,/\|/,Qt,pf),"*",Qt,/\)\*/),"|",$e(/\(/,Qt,qF,Qt,/\)/)),Jj=/[?*+]?/,jj=$e(/\([^>]+\)/,Jj),$j=Oe("EMPTY","|","ANY","|",zj,"|",jj),Vj="<!ELEMENT",Yj=$e(Vj,gt,Oe(pf,"|",gf),gt,Oe($j,"|",gf),Qt,">"),Wj=$e("NOTATION",gt,/\(/,Qt,Oi,Oe(Qt,/\|/,Qt,Oi),"*",Qt,/\)/),Xj=$e(/\(/,Qt,RF,Oe(Qt,/\|/,Qt,RF),"*",Qt,/\)/),Zj=Oe(Wj,"|",Xj),e$=Oe(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/,"|",Zj),t$=Oe(/#REQUIRED|#IMPLIED/,"|",Oe(Oe("#FIXED",gt),"?",Nj)),r$=Oe(gt,Oi,gt,e$,gt,t$),i$="<!ATTLIST",n$=$e(i$,gt,Oi,r$,"*",Qt,">"),pE="about:legacy-compat",s$=Oe('"'+pE+'"',"|","'"+pE+"'"),IE="SYSTEM",$m="PUBLIC",Vm=Oe(Oe(IE,gt,Kl),"|",Oe($m,gt,mf,gt,Kl)),o$=$e("^",Oe(Oe(IE,gt,"(?<SystemLiteralOnly>",Kl,")"),"|",Oe($m,gt,"(?<PubidLiteral>",mf,")",gt,"(?<SystemLiteral>",Kl,")"))),a$=$e("^",mf,"$"),c$=$e("^",Kl,"$"),l$=Oe(gt,"NDATA",gt,Oi),d$=Oe(yE,"|",Oe(Vm,l$,"?")),GF="<!ENTITY",u$=$e(GF,gt,Oi,gt,d$,Qt,">"),f$=Oe(yE,"|",Vm),A$=$e(GF,gt,"%",gt,Oi,gt,f$,Qt,">"),h$=Oe(u$,"|",A$),g$=$e($m,gt,mf),p$=$e("<!NOTATION",gt,Oi,gt,Oe(Vm,"|",g$),Qt,">"),wE=$e(Qt,"=",Qt),OF=/1[.]\d+/,m$=$e(gt,"version",wE,Oe("'",OF,"'","|",'"',OF,'"')),MF=/[A-Za-z][-A-Za-z0-9._]*/,y$=Oe(gt,"encoding",wE,Oe('"',MF,'"',"|","'",MF,"'")),I$=Oe(gt,"standalone",wE,Oe("'",Oe("yes","|","no"),"'","|",'"',Oe("yes","|","no"),'"')),w$=$e(/^<\?xml/,m$,y$,"?",I$,"?",Qt,/\?>/),x$="<!DOCTYPE",C$="<![CDATA[",E$="]]>",B$=/<!\[CDATA\[/,b$=/\]\]>/,v$=$e(Xo,"*?",b$),k$=$e(B$,v$);Ke.chars=Wo;Ke.chars_without=Hl;Ke.detectUnicodeSupport=LF;Ke.reg=$e;Ke.regg=Oe;Ke.ABOUT_LEGACY_COMPAT=pE;Ke.ABOUT_LEGACY_COMPAT_SystemLiteral=s$;Ke.AttlistDecl=n$;Ke.CDATA_START=C$;Ke.CDATA_END=E$;Ke.CDSect=k$;Ke.Char=Xo;Ke.Comment=Gj;Ke.COMMENT_START=HF;Ke.COMMENT_END=KF;Ke.DOCTYPE_DECL_START=x$;Ke.elementdecl=Yj;Ke.EntityDecl=h$;Ke.EntityValue=yE;Ke.ExternalID=Vm;Ke.ExternalID_match=o$;Ke.Name=Oi;Ke.Name_exact=Tj;Ke.NCName_exact=Mj;Ke.NotationDecl=p$;Ke.Reference=hf;Ke.PEReference=gf;Ke.PI=Kj;Ke.PUBLIC=$m;Ke.PubidLiteral=mf;Ke.PubidLiteral_match=a$;Ke.QName=pf;Ke.QName_exact=Lj;Ke.QName_group=Hj;Ke.S=gt;Ke.SChar_s=Fj;Ke.S_OPT=Qt;Ke.SYSTEM=IE;Ke.SystemLiteral=Kl;Ke.SystemLiteral_match=c$;Ke.InvalidChar=_j;Ke.UNICODE_REPLACEMENT_CHARACTER=Qj;Ke.UNICODE_SUPPORT=Gl;Ke.XMLDecl=w$});var _E=oe(Ht=>{"use strict";var en=xc(),Xn=en.find,S$=en.hasDefaultHTMLNamespace,Jl=en.hasOwn,D$=en.isHTMLMimeType,Q$=en.isHTMLRawTextElement,_$=en.isHTMLVoidElement,yf=en.MIME_TYPE,Zn=en.NAMESPACE,ci=Symbol(),WF=ff(),ke=WF.DOMException,jr=WF.DOMExceptionName,Lt=xE();function gi(r){if(r!==ci)throw new TypeError("Illegal constructor")}function F$(r){return r!==""}function P$(r){return r?r.split(/[\t\n\f\r ]+/).filter(F$):[]}function T$(r,e){return Jl(r,e)||(r[e]=!0),r}function zF(r){if(!r)return[];var e=P$(r);return Object.keys(e.reduce(T$,{}))}function U$(r){return function(e){return r&&r.indexOf(e)!==-1}}function XF(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in qualified name "'+r+'"')}function EE(r,e){XF(e),r=r||null;var t=null,i=e;if(e.indexOf(":")>=0){var n=e.split(":");t=n[0],i=n[1]}if(t!==null&&r===null)throw new ke(ke.NAMESPACE_ERR,"prefix is non-null and namespace is null");if(t==="xml"&&r!==en.NAMESPACE.XML)throw new ke(ke.NAMESPACE_ERR,'prefix is "xml" and namespace is not the XML namespace');if((t==="xmlns"||e==="xmlns")&&r!==en.NAMESPACE.XMLNS)throw new ke(ke.NAMESPACE_ERR,'either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace');if(r===en.NAMESPACE.XMLNS&&t!=="xmlns"&&e!=="xmlns")throw new ke(ke.NAMESPACE_ERR,'namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns"');return[r,t,i]}function Vl(r,e){for(var t in r)Jl(r,t)&&(e[t]=r[t])}function pi(r,e){var t=r.prototype;if(!(t instanceof e)){let i=function(){};i.prototype=e.prototype,i=new i,Vl(t,i),r.prototype=t=i}t.constructor!=r&&(typeof r!="function"&&console.error("unknown Class:"+r),t.constructor=r)}var mi={},Zi=mi.ELEMENT_NODE=1,jl=mi.ATTRIBUTE_NODE=2,If=mi.TEXT_NODE=3,ZF=mi.CDATA_SECTION_NODE=4,eP=mi.ENTITY_REFERENCE_NODE=5,R$=mi.ENTITY_NODE=6,BE=mi.PROCESSING_INSTRUCTION_NODE=7,bE=mi.COMMENT_NODE=8,zl=mi.DOCUMENT_NODE=9,tP=mi.DOCUMENT_TYPE_NODE=10,Zo=mi.DOCUMENT_FRAGMENT_NODE=11,N$=mi.NOTATION_NODE=12,Mt=en.freeze({DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:2,DOCUMENT_POSITION_FOLLOWING:4,DOCUMENT_POSITION_CONTAINS:8,DOCUMENT_POSITION_CONTAINED_BY:16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32});function rP(r,e){if(e.length<r.length)return rP(e,r);var t=null;for(var i in r){if(r[i]!==e[i])return t;t=r[i]}return t}function JF(r){return r.guid||(r.guid=Math.random()),r.guid}function Ar(){}Ar.prototype={length:0,item:function(r){return r>=0&&r<this.length?this[r]:null},toString:function(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};for(var t=[],i=0;i<this.length;i++)QE(this[i],t,null,e);return t.join("")},filter:function(r){return Array.prototype.filter.call(this,r)},indexOf:function(r){return Array.prototype.indexOf.call(this,r)}};Ar.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function Wn(r,e){this._node=r,this._refresh=e,Zm(this)}function Zm(r){var e=r._node._inc||r._node.ownerDocument._inc;if(r._inc!==e){var t=r._refresh(r._node);if(AP(r,"length",t.length),!r.$$length||t.length<r.$$length)for(var i=t.length;i in r;i++)Jl(r,i)&&delete r[i];Vl(t,r),r._inc=e}}Wn.prototype.item=function(r){return Zm(this),this[r]||null};pi(Wn,Ar);function $l(){this._nsIndex=Object.create(null),this._noNsIndex=Object.create(null)}function iP(r,e){for(var t=0;t<r.length;){if(r[t]===e)return t;t++}}function vE(r,e,t){if(!e)return r._noNsIndex;var i=r._nsIndex[e];return!i&&t&&(i=r._nsIndex[e]=Object.create(null)),i}function q$(r,e,t){var i=vE(r,e,!1),n=i&&i[t];return n||null}function O$(r,e){vE(r,e.namespaceURI,!0)[e.localName]=e}function M$(r,e){var t=vE(r,e.namespaceURI,!1);t&&delete t[e.localName]}function L$(r,e,t,i){if(i?e[iP(e,i)]=t:(e[e.length]=t,e.length++),O$(e,t),r){t.ownerElement=r;var n=r.ownerDocument;n&&(i&&oP(n,r,i),H$(n,r,t))}}function jF(r,e,t){var i=iP(e,t);if(i>=0){for(var n=e.length-1;i<=n;)e[i]=e[++i];if(e.length=n,M$(e,t),r){var s=r.ownerDocument;s&&oP(s,r,t),t.ownerElement=null}}}$l.prototype={length:0,item:Ar.prototype.item,getNamedItem:function(r){this._ownerElement&&this._ownerElement._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());for(var e=0;e<this.length;){var t=this[e];if(t.nodeName===r)return t;e++}return null},setNamedItem:function(r){var e=r.ownerElement;if(e&&e!==this._ownerElement)throw new ke(ke.INUSE_ATTRIBUTE_ERR);var t=q$(this,r.namespaceURI,r.localName);return t===r?r:(L$(this._ownerElement,this,r,t),t)},setNamedItemNS:function(r){return this.setNamedItem(r)},removeNamedItem:function(r){var e=this.getNamedItem(r);if(!e)throw new ke(ke.NOT_FOUND_ERR,r);return jF(this._ownerElement,this,e),e},removeNamedItemNS:function(r,e){var t=this.getNamedItemNS(r,e);if(!t)throw new ke(ke.NOT_FOUND_ERR,r?r+" : "+e:e);return jF(this._ownerElement,this,t),t},getNamedItemNS:function(r,e){r||(r=null);for(var t=0;t<this.length;){var i=this[t];if(i.localName===e&&i.namespaceURI===r)return i;t++}return null}};$l.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function nP(){}nP.prototype={hasFeature:function(r,e){return!0},createDocument:function(r,e,t){var i=yf.XML_APPLICATION;r===Zn.HTML?i=yf.XML_XHTML_APPLICATION:r===Zn.SVG&&(i=yf.XML_SVG_IMAGE);var n=new Hs(ci,{contentType:i});if(n.implementation=this,n.childNodes=new Ar,n.doctype=t||null,t&&n.appendChild(t),e){var s=n.createElementNS(r,e);n.appendChild(s)}return n},createDocumentType:function(r,e,t,i){XF(r);var n=new ry(ci);return n.name=r,n.nodeName=r,n.publicId=e||"",n.systemId=t||"",n.internalSubset=i||"",n.childNodes=new Ar,n},createHTMLDocument:function(r){var e=new Hs(ci,{contentType:yf.HTML});if(e.implementation=this,e.childNodes=new Ar,r!==!1){e.doctype=this.createDocumentType("html"),e.doctype.ownerDocument=e,e.appendChild(e.doctype);var t=e.createElement("html");e.appendChild(t);var i=e.createElement("head");if(t.appendChild(i),typeof r=="string"){var n=e.createElement("title");n.appendChild(e.createTextNode(r)),i.appendChild(n)}t.appendChild(e.createElement("body"))}return e}};function st(r){gi(r)}st.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,parentNode:null,get parentElement(){return this.parentNode&&this.parentNode.nodeType===this.ELEMENT_NODE?this.parentNode:null},childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,baseURI:"about:blank",get isConnected(){var r=this.getRootNode();return r&&r.nodeType===r.DOCUMENT_NODE},contains:function(r){if(!r)return!1;var e=r;do{if(this===e)return!0;e=e.parentNode}while(e);return!1},getRootNode:function(r){var e=this;do{if(!e.parentNode)return e;e=e.parentNode}while(e)},isEqualNode:function(r){if(!r)return!1;for(var e=[{node:this,other:r}];e.length>0;){var t=e.pop(),i=t.node,n=t.other;if(i.nodeType!==n.nodeType)return!1;switch(i.nodeType){case i.DOCUMENT_TYPE_NODE:if(i.name!==n.name||i.publicId!==n.publicId||i.systemId!==n.systemId)return!1;break;case i.ELEMENT_NODE:if(i.namespaceURI!==n.namespaceURI||i.prefix!==n.prefix||i.localName!==n.localName||i.attributes.length!==n.attributes.length)return!1;for(var s=0;s<i.attributes.length;s++){var o=i.attributes.item(s),a=n.getAttributeNodeNS(o.namespaceURI,o.localName);if(!a)return!1;e.push({node:o,other:a})}break;case i.ATTRIBUTE_NODE:if(i.namespaceURI!==n.namespaceURI||i.localName!==n.localName||i.value!==n.value)return!1;break;case i.PROCESSING_INSTRUCTION_NODE:if(i.target!==n.target||i.data!==n.data)return!1;break;case i.TEXT_NODE:case i.CDATA_SECTION_NODE:case i.COMMENT_NODE:if(i.data!==n.data)return!1;break}if(i.childNodes.length!==n.childNodes.length)return!1;for(var s=i.childNodes.length-1;s>=0;s--)e.push({node:i.childNodes[s],other:n.childNodes[s]})}return!0},isSameNode:function(r){return this===r},insertBefore:function(r,e){return Xm(this,r,e)},replaceChild:function(r,e){Xm(this,r,e,lP),e&&this.removeChild(e)},removeChild:function(r){return aP(this,r)},appendChild:function(r){return this.insertBefore(r,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(r){return fP(this.ownerDocument||this,this,r)},normalize:function(){Pr(this,null,{enter:function(r){for(var e=r.firstChild;e;){var t=e.nextSibling;if(t!==null&&t.nodeType===If&&e.nodeType===If){for(var i=[],n=t;n!==null&&n.nodeType===If;)i.push(n.data),n=n.nextSibling;for(var s=e.nextSibling;s!==n;){var o=s.nextSibling;s.parentNode=null,s.previousSibling=null,s.nextSibling=null,s=o}e.nextSibling=n,n!==null?n.previousSibling=e:r.lastChild=e,e.appendData(i.join("")),kE(r.ownerDocument,r),e=n}else e=t}return!0}})},isSupported:function(r,e){return this.ownerDocument.implementation.hasFeature(r,e)},lookupPrefix:function(r){for(var e=this;e;){var t=e._nsMap;if(t){for(var i in t)if(Jl(t,i)&&t[i]===r)return i}e=e.nodeType==jl?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(r){for(var e=this;e;){var t=e._nsMap;if(t&&Jl(t,r))return t[r];e=e.nodeType==jl?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(r){var e=this.lookupPrefix(r);return e==null},compareDocumentPosition:function(r){if(this===r)return 0;var e=r,t=this,i=null,n=null;if(e instanceof Cc&&(i=e,e=i.ownerElement),t instanceof Cc&&(n=t,t=n.ownerElement,i&&e&&t===e))for(var s=0,o;o=t.attributes[s];s++){if(o===i)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_PRECEDING;if(o===n)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_FOLLOWING}if(!e||!t||t.ownerDocument!==e.ownerDocument)return Mt.DOCUMENT_POSITION_DISCONNECTED+Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+(JF(t.ownerDocument)>JF(e.ownerDocument)?Mt.DOCUMENT_POSITION_FOLLOWING:Mt.DOCUMENT_POSITION_PRECEDING);if(n&&e===t)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;if(i&&e===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;for(var a=[],c=e.parentNode;c;){if(!n&&c===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;a.push(c),c=c.parentNode}a.reverse();for(var l=[],d=t.parentNode;d;){if(!i&&d===e)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;l.push(d),d=d.parentNode}l.reverse();var u=rP(a,l);for(var f in u.childNodes){var h=u.childNodes[f];if(h===t)return Mt.DOCUMENT_POSITION_FOLLOWING;if(h===e)return Mt.DOCUMENT_POSITION_PRECEDING;if(l.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_FOLLOWING;if(a.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_PRECEDING}return 0}};function sP(r){return r=="<"&&"<"||r==">"&&">"||r=="&"&&"&"||r=='"'&&"""||"&#"+r.charCodeAt()+";"}Vl(mi,st);Vl(mi,st.prototype);Vl(Mt,st);Vl(Mt,st.prototype);function Wm(r,e){Pr(r,null,{enter:function(t){return e(t)?Pr.STOP:!0}})}function Pr(r,e,t){for(var i=[{node:r,context:e,phase:Pr.ENTER}];i.length>0;){var n=i.pop();if(n.phase===Pr.ENTER){var s=t.enter(n.node,n.context);if(s===Pr.STOP)return Pr.STOP;if(i.push({node:n.node,context:s,phase:Pr.EXIT}),s==null)continue;for(var o=n.node.lastChild;o;)i.push({node:o,context:s,phase:Pr.ENTER}),o=o.previousSibling}else t.exit&&t.exit(n.node,n.context)}}Pr.STOP=Symbol("walkDOM.STOP");Pr.ENTER=0;Pr.EXIT=1;function Hs(r,e){gi(r);var t=e||{};this.ownerDocument=this,this.contentType=t.contentType||yf.XML_APPLICATION,this.type=D$(this.contentType)?"html":"xml"}function H$(r,e,t){r&&r._inc++;var i=t.namespaceURI;i===Zn.XMLNS&&(e._nsMap[t.prefix?t.localName:""]=t.value)}function oP(r,e,t,i){r&&r._inc++;var n=t.namespaceURI;n===Zn.XMLNS&&delete e._nsMap[t.prefix?t.localName:""]}function kE(r,e,t){if(r&&r._inc){r._inc++;var i=e.childNodes;if(t&&!t.nextSibling)i[i.length++]=t;else{for(var n=e.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s,delete i[i.length]}}}function aP(r,e){if(r!==e.parentNode)throw new ke(ke.NOT_FOUND_ERR,"child's parent is not parent");var t=e.previousSibling,i=e.nextSibling;return t?t.nextSibling=i:r.firstChild=i,i?i.previousSibling=t:r.lastChild=t,kE(r.ownerDocument,r),e.parentNode=null,e.previousSibling=null,e.nextSibling=null,e}function K$(r){return r&&(r.nodeType===st.DOCUMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.ELEMENT_NODE)}function G$(r){return r&&(r.nodeType===st.CDATA_SECTION_NODE||r.nodeType===st.COMMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.DOCUMENT_TYPE_NODE||r.nodeType===st.ELEMENT_NODE||r.nodeType===st.PROCESSING_INSTRUCTION_NODE||r.nodeType===st.TEXT_NODE)}function ea(r){return r&&r.nodeType===st.DOCUMENT_TYPE_NODE}function Ls(r){return r&&r.nodeType===st.ELEMENT_NODE}function cP(r){return r&&r.nodeType===st.TEXT_NODE}function $F(r,e){var t=r.childNodes||[];if(Xn(t,Ls)||ea(e))return!1;var i=Xn(t,ea);return!(e&&i&&t.indexOf(i)>t.indexOf(e))}function VF(r,e){var t=r.childNodes||[];function i(s){return Ls(s)&&s!==e}if(Xn(t,i))return!1;var n=Xn(t,ea);return!(e&&n&&t.indexOf(n)>t.indexOf(e))}function z$(r,e,t){if(!K$(r))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected parent node type "+r.nodeType);if(t&&t.parentNode!==r)throw new ke(ke.NOT_FOUND_ERR,"child not in parent");if(!G$(e)||ea(e)&&r.nodeType!==st.DOCUMENT_NODE)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected node type "+e.nodeType+" for parent node type "+r.nodeType)}function J$(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ls);if(s.length>1||Xn(n,cP))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!$F(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ls(e)&&!$F(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(ea(e)){if(Xn(i,ea))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=Xn(i,Ls);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element");if(!t&&o)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can not be appended since element is present")}}function lP(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ls);if(s.length>1||Xn(n,cP))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!VF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ls(e)&&!VF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(ea(e)){if(Xn(i,function(c){return ea(c)&&c!==t}))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=Xn(i,Ls);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element")}}function Xm(r,e,t,i){z$(r,e,t),r.nodeType===st.DOCUMENT_NODE&&(i||J$)(r,e,t);var n=e.parentNode;if(n&&n.removeChild(e),e.nodeType===Zo){var s=e.firstChild;if(s==null)return e;var o=e.lastChild}else s=o=e;var a=t?t.previousSibling:r.lastChild;s.previousSibling=a,o.nextSibling=t,a?a.nextSibling=s:r.firstChild=s,t==null?r.lastChild=o:t.previousSibling=o;do s.parentNode=r;while(s!==o&&(s=s.nextSibling));return kE(r.ownerDocument||r,r,e),e.nodeType==Zo&&(e.firstChild=e.lastChild=null),e}Hs.prototype={implementation:null,nodeName:"#document",nodeType:zl,doctype:null,documentElement:null,_inc:1,insertBefore:function(r,e){if(r.nodeType===Zo){for(var t=r.firstChild;t;){var i=t.nextSibling;this.insertBefore(t,e),t=i}return r}return Xm(this,r,e),r.ownerDocument=this,this.documentElement===null&&r.nodeType===Zi&&(this.documentElement=r),r},removeChild:function(r){var e=aP(this,r);return e===this.documentElement&&(this.documentElement=null),e},replaceChild:function(r,e){Xm(this,r,e,lP),r.ownerDocument=this,e&&this.removeChild(e),Ls(r)&&(this.documentElement=r)},importNode:function(r,e){return j$(this,r,e)},getElementById:function(r){var e=null;return Wm(this.documentElement,function(t){if(t.nodeType==Zi&&t.getAttribute("id")==r)return e=t,!0}),e},createElement:function(r){var e=new Ks(ci);e.ownerDocument=this,this.type==="html"&&(r=r.toLowerCase()),S$(this.contentType)&&(e.namespaceURI=Zn.HTML),e.nodeName=r,e.tagName=r,e.localName=r,e.childNodes=new Ar;var t=e.attributes=new $l;return t._ownerElement=e,e},createDocumentFragment:function(){var r=new Yl(ci);return r.ownerDocument=this,r.childNodes=new Ar,r},createTextNode:function(r){var e=new wf(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createComment:function(r){var e=new ey(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createCDATASection:function(r){if(r.indexOf("]]>")!==-1)throw new ke(ke.INVALID_CHARACTER_ERR,'data contains "]]>"');var e=new ty(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createProcessingInstruction:function(r,e){var t=new ny(ci);return t.ownerDocument=this,t.childNodes=new Ar,t.nodeName=t.target=r,t.nodeValue=t.data=e,t},createAttribute:function(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in name "'+r+'"');return this.type==="html"&&(r=r.toLowerCase()),this._createAttribute(r)},_createAttribute:function(r){var e=new Cc(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.name=r,e.nodeName=r,e.localName=r,e.specified=!0,e},createEntityReference:function(r){if(!Lt.Name_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'not a valid xml name "'+r+'"');if(this.type==="html")throw new ke("document is an html document",jr.NotSupportedError);var e=new iy(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.nodeName=r,e},createElementNS:function(r,e){var t=EE(r,e),i=new Ks(ci),n=i.attributes=new $l;return i.childNodes=new Ar,i.ownerDocument=this,i.nodeName=e,i.tagName=e,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],n._ownerElement=i,i},createAttributeNS:function(r,e){var t=EE(r,e),i=new Cc(ci);return i.ownerDocument=this,i.childNodes=new Ar,i.nodeName=e,i.name=e,i.specified=!0,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],i}};pi(Hs,st);function Ks(r){gi(r),this._nsMap=Object.create(null)}Ks.prototype={nodeType:Zi,attributes:null,getQualifiedName:function(){return this.prefix?this.prefix+":"+this.localName:this.localName},_isInHTMLDocumentAndNamespace:function(){return this.ownerDocument.type==="html"&&this.namespaceURI===Zn.HTML},hasAttributes:function(){return!!(this.attributes&&this.attributes.length)},hasAttribute:function(r){return!!this.getAttributeNode(r)},getAttribute:function(r){var e=this.getAttributeNode(r);return e?e.value:null},getAttributeNode:function(r){return this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase()),this.attributes.getNamedItem(r)},setAttribute:function(r,e){this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());var t=this.getAttributeNode(r);t?t.value=t.nodeValue=""+e:(t=this.ownerDocument._createAttribute(r),t.value=t.nodeValue=""+e,this.setAttributeNode(t))},removeAttribute:function(r){var e=this.getAttributeNode(r);e&&this.removeAttributeNode(e)},setAttributeNode:function(r){return this.attributes.setNamedItem(r)},setAttributeNodeNS:function(r){return this.attributes.setNamedItemNS(r)},removeAttributeNode:function(r){return this.attributes.removeNamedItem(r.nodeName)},removeAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);t&&this.removeAttributeNode(t)},hasAttributeNS:function(r,e){return this.getAttributeNodeNS(r,e)!=null},getAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);return t?t.value:null},setAttributeNS:function(r,e,t){var i=EE(r,e),n=i[2],s=this.getAttributeNodeNS(r,n);s?s.value=s.nodeValue=""+t:(s=this.ownerDocument.createAttributeNS(r,e),s.value=s.nodeValue=""+t,this.setAttributeNode(s))},getAttributeNodeNS:function(r,e){return this.attributes.getNamedItemNS(r,e)},getElementsByClassName:function(r){var e=zF(r);return new Wn(this,function(t){var i=[];return e.length>0&&Wm(t,function(n){if(n!==t&&n.nodeType===Zi){var s=n.getAttribute("class");if(s){var o=r===s;if(!o){var a=zF(s);o=e.every(U$(a))}o&&i.push(n)}}}),i})},getElementsByTagName:function(r){var e=(this.nodeType===zl?this:this.ownerDocument).type==="html",t=r.toLowerCase();return new Wn(this,function(i){var n=[];return Wm(i,function(s){if(!(s===i||s.nodeType!==Zi))if(r==="*")n.push(s);else{var o=s.getQualifiedName(),a=e&&s.namespaceURI===Zn.HTML?t:r;o===a&&n.push(s)}}),n})},getElementsByTagNameNS:function(r,e){return new Wn(this,function(t){var i=[];return Wm(t,function(n){n!==t&&n.nodeType===Zi&&(r==="*"||n.namespaceURI===r)&&(e==="*"||n.localName==e)&&i.push(n)}),i})}};Hs.prototype.getElementsByClassName=Ks.prototype.getElementsByClassName;Hs.prototype.getElementsByTagName=Ks.prototype.getElementsByTagName;Hs.prototype.getElementsByTagNameNS=Ks.prototype.getElementsByTagNameNS;pi(Ks,st);function Cc(r){gi(r),this.namespaceURI=null,this.prefix=null,this.ownerElement=null}Cc.prototype.nodeType=jl;pi(Cc,st);function ta(r){gi(r)}ta.prototype={data:"",substringData:function(r,e){return this.data.substring(r,r+e)},appendData:function(r){r=this.data+r,this.nodeValue=this.data=r,this.length=r.length},insertData:function(r,e){this.replaceData(r,0,e)},deleteData:function(r,e){this.replaceData(r,e,"")},replaceData:function(r,e,t){var i=this.data.substring(0,r),n=this.data.substring(r+e);t=i+t+n,this.nodeValue=this.data=t,this.length=t.length}};pi(ta,st);function wf(r){gi(r)}wf.prototype={nodeName:"#text",nodeType:If,splitText:function(r){var e=this.data,t=e.substring(r);e=e.substring(0,r),this.data=this.nodeValue=e,this.length=e.length;var i=this.ownerDocument.createTextNode(t);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};pi(wf,ta);function ey(r){gi(r)}ey.prototype={nodeName:"#comment",nodeType:bE};pi(ey,ta);function ty(r){gi(r)}ty.prototype={nodeName:"#cdata-section",nodeType:ZF};pi(ty,wf);function ry(r){gi(r)}ry.prototype.nodeType=tP;pi(ry,st);function SE(r){gi(r)}SE.prototype.nodeType=N$;pi(SE,st);function DE(r){gi(r)}DE.prototype.nodeType=R$;pi(DE,st);function iy(r){gi(r)}iy.prototype.nodeType=eP;pi(iy,st);function Yl(r){gi(r)}Yl.prototype.nodeName="#document-fragment";Yl.prototype.nodeType=Zo;pi(Yl,st);function ny(r){gi(r)}ny.prototype.nodeType=BE;pi(ny,ta);function dP(){}dP.prototype.serializeToString=function(r,e){return uP.call(r,e)};st.prototype.toString=uP;function uP(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r!=null?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};var t=[],i=this.nodeType===zl&&this.documentElement||this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return QE(this,t,o,e),t.join("")}function YF(r,e,t){var i=r.prefix||"",n=r.namespaceURI;if(!n||i==="xml"&&n===Zn.XML||n===Zn.XMLNS)return!1;for(var s=t.length;s--;){var o=t[s];if(o.prefix===i)return o.namespace!==n}return!0}function Ym(r,e,t,i){if(i&&!Lt.QName_exact.test(e))throw new ke('The attribute name "'+e+'" is not a valid XML QName',jr.InvalidStateError);r.push(" ",e,'="',t.replace(/[<>&"\t\n\r]/g,sP),'"')}function QE(r,e,t,i){t||(t=[]);var n=i.nodeFilter,s=i.requireWellFormed,o=i.splitCDATASections,a=r.nodeType===zl?r:r.ownerDocument,c=a.type==="html";Pr(r,{ns:t},{enter:function(l,d){var u=d.ns;if(n)if(l=n(l),l){if(typeof l=="string")return e.push(l),null}else return null;switch(l.nodeType){case Zi:var f=l.attributes,h=f.length,g=l.tagName,p=g;if(!c&&!l.prefix&&l.namespaceURI){for(var I,y=0;y<f.length;y++)if(f.item(y).name==="xmlns"){I=f.item(y).value;break}if(!I)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.prefix===""&&C.namespace===l.namespaceURI){I=C.namespace;break}}if(I!==l.namespaceURI)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.namespace===l.namespaceURI){C.prefix&&(p=C.prefix+":"+g);break}}}if(s&&!Lt.QName_exact.test(p))throw new ke('The element name "'+p+'" is not a valid XML QName',jr.InvalidStateError);e.push("<",p);for(var b=u.slice(),x=0;x<h;x++){var _=f.item(x);_.prefix=="xmlns"?b.push({prefix:_.localName,namespace:_.value}):_.nodeName=="xmlns"&&b.push({prefix:"",namespace:_.value})}for(var x=0;x<h;x++){var _=f.item(x);if(YF(_,c,b)){var R=_.prefix||"",U=_.namespaceURI;Ym(e,R?"xmlns:"+R:"xmlns",U,s),b.push({prefix:R,namespace:U})}var T=n?n(_):_;T&&(typeof T=="string"?e.push(T):Ym(e,T.name,T.value,s))}if(g===p&&YF(l,c,b)){var D=l.prefix||"",U=l.namespaceURI;Ym(e,D?"xmlns:"+D:"xmlns",U,s),b.push({prefix:D,namespace:U})}var B=!l.firstChild;if(B&&(c||l.namespaceURI===Zn.HTML)&&(B=_$(g)),B)return e.push("/>"),null;if(e.push(">"),c&&Q$(g)){for(var Q=l.firstChild;Q;)Q.data?e.push(Q.data):QE(Q,e,b.slice(),i),Q=Q.nextSibling;return e.push("</",p,">"),null}return{ns:b,tag:p};case zl:case Zo:if(s&&l.nodeType===zl&&l.documentElement==null)throw new ke("The Document has no documentElement",jr.InvalidStateError);return{ns:u};case jl:return Ym(e,l.name,l.value,s),null;case If:if(s&&Lt.InvalidChar.test(l.data))throw new ke("The Text node data contains characters outside the XML Char production",jr.InvalidStateError);return e.push(l.data.replace(/[<&>]/g,sP)),null;case ZF:if(s&&l.data.indexOf("]]>")!==-1)throw new ke('The CDATASection data contains "]]>"',jr.InvalidStateError);return o?e.push(Lt.CDATA_START,l.data.replace(/]]>/g,"]]]]><![CDATA[>"),Lt.CDATA_END):e.push(Lt.CDATA_START,l.data,Lt.CDATA_END),null;case bE:if(s){if(Lt.InvalidChar.test(l.data))throw new ke("The comment node data contains characters outside the XML Char production",jr.InvalidStateError);if(l.data.indexOf("--")!==-1||l.data[l.data.length-1]==="-")throw new ke('The comment node data contains "--" or ends with "-"',jr.InvalidStateError)}return e.push(Lt.COMMENT_START,l.data,Lt.COMMENT_END),null;case tP:var v=l.publicId,E=l.systemId;if(s){if(!Lt.Name_exact.test(l.name))throw new ke('The doctype name "'+l.name+'" is not a valid XML Name',jr.InvalidStateError);if(v&&!Lt.PubidLiteral_match.test(v))throw new ke("DocumentType publicId is not a valid PubidLiteral",jr.InvalidStateError);if(E&&E!=="."&&!Lt.SystemLiteral_match.test(E))throw new ke("DocumentType systemId is not a valid SystemLiteral",jr.InvalidStateError);if(l.internalSubset&&l.internalSubset.indexOf("]>")!==-1)throw new ke('DocumentType internalSubset contains "]>"',jr.InvalidStateError)}return e.push(Lt.DOCTYPE_DECL_START," ",l.name),v?(e.push(" ",Lt.PUBLIC," ",v),E&&E!=="."&&e.push(" ",E)):E&&E!=="."&&e.push(" ",Lt.SYSTEM," ",E),l.internalSubset&&e.push(" [",l.internalSubset,"]"),e.push(">"),null;case BE:if(s){if(!Lt.NCName_exact.test(l.target)||l.target.toLowerCase()==="xml")throw new ke('The processing instruction target "'+l.target+'" is not a valid XML NCName or is reserved',jr.InvalidStateError);if(Lt.InvalidChar.test(l.data))throw new ke("The ProcessingInstruction data contains characters outside the XML Char production",jr.InvalidStateError);if(l.data.indexOf("?>")!==-1)throw new ke('The ProcessingInstruction data contains "?>"',jr.InvalidStateError)}return e.push("<?",l.target," ",l.data,"?>"),null;case eP:if(s&&!Lt.Name_exact.test(l.nodeName))throw new ke('The entity reference name "'+l.nodeName+'" is not a valid XML Name',jr.InvalidStateError);return e.push("&",l.nodeName,";"),null;default:return e.push("??",l.nodeName),null}},exit:function(l,d){d&&d.tag&&e.push("</",d.tag,">")}})}function j$(r,e,t){var i;return Pr(e,null,{enter:function(n,s){var o=n.cloneNode(!1);o.ownerDocument=r,o.parentNode=null,s===null?i=o:s.appendChild(o);var a=n.nodeType===jl||t;return a?o:null}}),i}function fP(r,e,t){var i;return Pr(e,null,{enter:function(n,s){var o=new n.constructor(ci);for(var a in n)if(Jl(n,a)){var c=n[a];typeof c!="object"&&c!=o[a]&&(o[a]=c)}n.childNodes&&(o.childNodes=new Ar),o.ownerDocument=r;var l=t;switch(o.nodeType){case Zi:var d=n.attributes,u=o.attributes=new $l,f=d.length;u._ownerElement=o;for(var h=0;h<f;h++)o.setAttributeNode(fP(r,d.item(h),!0));break;case jl:l=!0}return s!==null?s.appendChild(o):i=o,l?o:null}}),i}function AP(r,e,t){r[e]=t}function CE(r){for(var e=[],t=r.firstChild;t;)t.nodeType===Zi&&e.push(t),t=t.nextSibling;return e}try{Object.defineProperty&&(Object.defineProperty(Wn.prototype,"length",{get:function(){return Zm(this),this.$$length}}),Object.defineProperty(st.prototype,"textContent",{get:function(){if(this.nodeType===Zi||this.nodeType===Zo){var r=[];return Pr(this,null,{enter:function(e){if(e.nodeType===Zi||e.nodeType===Zo)return!0;if(e.nodeType===BE||e.nodeType===bE)return null;r.push(e.nodeValue)}}),r.join("")}return this.nodeValue},set:function(r){switch(this.nodeType){case Zi:case Zo:for(;this.firstChild;)this.removeChild(this.firstChild);(r||String(r))&&this.appendChild(this.ownerDocument.createTextNode(r));break;default:this.data=r,this.value=r,this.nodeValue=r}}}),Object.defineProperty(ta.prototype,"data",{get:function(){return this._data!=null?this._data:""},set:function(r){this._data=r,this.length=typeof r=="string"?r.length:0}}),Object.defineProperty(ta.prototype,"nodeValue",{get:function(){return this.data},set:function(r){this.data=r},enumerable:!0,configurable:!0}),Object.defineProperty(Ks.prototype,"children",{get:function(){return new Wn(this,CE)}}),Object.defineProperty(Hs.prototype,"children",{get:function(){return new Wn(this,CE)}}),Object.defineProperty(Yl.prototype,"children",{get:function(){return new Wn(this,CE)}}),AP=function(r,e,t){r["$$"+e]=t})}catch{}Ht._updateLiveList=Zm;Ht.Attr=Cc;Ht.CDATASection=ty;Ht.CharacterData=ta;Ht.Comment=ey;Ht.Document=Hs;Ht.DocumentFragment=Yl;Ht.DocumentType=ry;Ht.DOMImplementation=nP;Ht.Element=Ks;Ht.Entity=DE;Ht.EntityReference=iy;Ht.LiveNodeList=Wn;Ht.NamedNodeMap=$l;Ht.Node=st;Ht.NodeList=Ar;Ht.Notation=SE;Ht.Text=wf;Ht.ProcessingInstruction=ny;Ht.walkDOM=Pr;Ht.XMLSerializer=dP});var gP=oe(xf=>{"use strict";var hP=xc().freeze;xf.XML_ENTITIES=hP({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'});xf.HTML_ENTITIES=hP({Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",AMP:"&",amp:"&",And:"\u2A53",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",ap:"\u2248",apacir:"\u2A6F",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",Barwed:"\u2306",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",Because:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxDL:"\u2557",boxDl:"\u2556",boxdL:"\u2555",boxdl:"\u2510",boxDR:"\u2554",boxDr:"\u2553",boxdR:"\u2552",boxdr:"\u250C",boxH:"\u2550",boxh:"\u2500",boxHD:"\u2566",boxHd:"\u2564",boxhD:"\u2565",boxhd:"\u252C",boxHU:"\u2569",boxHu:"\u2567",boxhU:"\u2568",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxUL:"\u255D",boxUl:"\u255C",boxuL:"\u255B",boxul:"\u2518",boxUR:"\u255A",boxUr:"\u2559",boxuR:"\u2558",boxur:"\u2514",boxV:"\u2551",boxv:"\u2502",boxVH:"\u256C",boxVh:"\u256B",boxvH:"\u256A",boxvh:"\u253C",boxVL:"\u2563",boxVl:"\u2562",boxvL:"\u2561",boxvl:"\u2524",boxVR:"\u2560",boxVr:"\u255F",boxvR:"\u255E",boxvr:"\u251C",bprime:"\u2035",Breve:"\u02D8",breve:"\u02D8",brvbar:"\xA6",Bscr:"\u212C",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",Cap:"\u22D2",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",CenterDot:"\xB7",centerdot:"\xB7",Cfr:"\u212D",cfr:"\u{1D520}",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",Colon:"\u2237",colon:":",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",Conint:"\u222F",conint:"\u222E",ContourIntegral:"\u222E",Copf:"\u2102",copf:"\u{1D554}",coprod:"\u2210",Coproduct:"\u2210",COPY:"\xA9",copy:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",Cross:"\u2A2F",cross:"\u2717",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",Cup:"\u22D3",cup:"\u222A",cupbrcap:"\u2A48",CupCap:"\u224D",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",Dagger:"\u2021",dagger:"\u2020",daleth:"\u2138",Darr:"\u21A1",dArr:"\u21D3",darr:"\u2193",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",DD:"\u2145",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",Diamond:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",Downarrow:"\u21D3",downarrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",ecir:"\u2256",Ecirc:"\xCA",ecirc:"\xEA",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",eDot:"\u2251",edot:"\u0117",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",Escr:"\u2130",escr:"\u212F",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",ExponentialE:"\u2147",exponentiale:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",ForAll:"\u2200",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",Fscr:"\u2131",fscr:"\u{1D4BB}",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",gE:"\u2267",ge:"\u2265",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",Gg:"\u22D9",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gnE:"\u2269",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",Gt:"\u226B",GT:">",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",hArr:"\u21D4",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",Hfr:"\u210C",hfr:"\u{1D525}",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",Hopf:"\u210D",hopf:"\u{1D559}",horbar:"\u2015",HorizontalLine:"\u2500",Hscr:"\u210B",hscr:"\u{1D4BD}",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",Ifr:"\u2111",ifr:"\u{1D526}",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Im:"\u2111",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",Int:"\u222C",int:"\u222B",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",Iscr:"\u2110",iscr:"\u{1D4BE}",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",Lang:"\u27EA",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",Larr:"\u219E",lArr:"\u21D0",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",lAtail:"\u291B",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lBarr:"\u290E",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",lE:"\u2266",le:"\u2264",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",Leftarrow:"\u21D0",leftarrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",Ll:"\u22D8",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lnE:"\u2268",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftarrow:"\u27F5",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",Lscr:"\u2112",lscr:"\u{1D4C1}",Lsh:"\u21B0",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",Lt:"\u226A",LT:"<",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",Mscr:"\u2133",mscr:"\u{1D4C2}",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",neArr:"\u21D7",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlArr:"\u21CD",nlarr:"\u219A",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nLeftarrow:"\u21CD",nleftarrow:"\u219A",nLeftrightarrow:"\u21CE",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",nopf:"\u{1D55F}",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nRightarrow:"\u21CF",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nVDash:"\u22AF",nVdash:"\u22AE",nvDash:"\u22AD",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwArr:"\u21D6",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",Ocirc:"\xD4",ocirc:"\xF4",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",Or:"\u2A54",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",Otimes:"\u2A37",otimes:"\u2297",otimesas:"\u2A36",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",Popf:"\u2119",popf:"\u{1D561}",pound:"\xA3",Pr:"\u2ABB",pr:"\u227A",prap:"\u2AB7",prcue:"\u227C",prE:"\u2AB3",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",Prime:"\u2033",prime:"\u2032",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",Qopf:"\u211A",qopf:"\u{1D562}",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",QUOT:'"',quot:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",Rang:"\u27EB",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",Rarr:"\u21A0",rArr:"\u21D2",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",rAtail:"\u291C",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",RBarr:"\u2910",rBarr:"\u290F",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",REG:"\xAE",reg:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",Rfr:"\u211C",rfr:"\u{1D52F}",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",Rightarrow:"\u21D2",rightarrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",Ropf:"\u211D",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",Rscr:"\u211B",rscr:"\u{1D4C7}",Rsh:"\u21B1",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",Sc:"\u2ABC",sc:"\u227B",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",sccue:"\u227D",scE:"\u2AB4",sce:"\u2AB0",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",seArr:"\u21D8",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",Square:"\u25A1",square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",Sub:"\u22D0",sub:"\u2282",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",Subset:"\u22D0",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",Sum:"\u2211",sum:"\u2211",sung:"\u266A",Sup:"\u22D1",sup:"\u2283",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",Supset:"\u22D1",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swArr:"\u21D9",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",Therefore:"\u2234",therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",Tilde:"\u223C",tilde:"\u02DC",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",TRADE:"\u2122",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",Uarr:"\u219F",uArr:"\u21D1",uarr:"\u2191",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrow:"\u2191",Uparrow:"\u21D1",uparrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",Updownarrow:"\u21D5",updownarrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",upsi:"\u03C5",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",vArr:"\u21D5",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",Vbar:"\u2AEB",vBar:"\u2AE8",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",VDash:"\u22AB",Vdash:"\u22A9",vDash:"\u22A8",vdash:"\u22A2",Vdashl:"\u2AE6",Vee:"\u22C1",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",Verbar:"\u2016",verbar:"|",Vert:"\u2016",vert:"|",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",Wedge:"\u22C0",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",Xi:"\u039E",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",Yuml:"\u0178",yuml:"\xFF",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",Zfr:"\u2128",zfr:"\u{1D537}",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",Zopf:"\u2124",zopf:"\u{1D56B}",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"});xf.entityMap=xf.HTML_ENTITIES});var BP=oe(oy=>{"use strict";var td=xc(),Ge=xE(),IP=ff(),$$=td.isHTMLEscapableRawTextElement,V$=td.isHTMLMimeType,Y$=td.isHTMLRawTextElement,Bf=td.hasOwn,pP=td.NAMESPACE,W$=IP.ParseError,X$=IP.DOMException,Wl=0,ra=1,Xl=2,Cf=3,Zl=4,ed=5,Ef=6,sy=7;function wP(){}wP.prototype={parse:function(r,e,t){var i=this.domBuilder;i.startDocument(),rV(e,e=Object.create(null)),Z$(r,e,t,i,this.errorHandler),i.endDocument()}};var FE=/&#?\w+;?/g;function Z$(r,e,t,i,n){var s=V$(i.mimeType);r.indexOf(Ge.UNICODE_REPLACEMENT_CHARACTER)>=0&&n.warning("Unicode replacement character detected, source encoding issues?");function o(K){if(K>65535){K-=65536;var $=55296+(K>>10),te=56320+(K&1023);return String.fromCharCode($,te)}else return String.fromCharCode(K)}function a(K){var $=K[K.length-1]===";"?K:K+";";if(!s&&$!==K)return n.error("EntityRef: expecting ;"),K;var te=Ge.Reference.exec($);if(!te||te[0].length!==$.length)return n.error("entity not matching Reference production: "+K),K;var re=$.slice(1,-1);return Bf(t,re)?t[re]:re.charAt(0)==="#"?o(parseInt(re.substring(1).replace("x","0x"))):(n.error("entity not found:"+K),K)}function c(K){if(K>I){var $=r.substring(I,K).replace(FE,a);f&&h(I),i.characters($,0,K-I),I=K}}var l=0,d=0,u=/\r\n?|\n|$/g,f=i.locator;function h(K,$){for(;K>=d&&($=u.exec(r));)l=d,d=$.index+$[0].length,f.lineNumber++;f.columnNumber=K-l+1}for(var g=[{currentNSMap:e}],p=[],I=0;;){try{var y=r.indexOf("<",I);if(y<0){if(!s&&p.length>0)return n.fatalError("unclosed xml tag(s): "+p.join(", "));if(!r.substring(I).match(/^\s*$/)){var w=i.doc,C=w.createTextNode(r.substring(I));if(w.documentElement)return n.error("Extra content at the end of the document");w.appendChild(C),i.currentElement=C}return}if(y>I){var b=r.substring(I,y);!s&&p.length===0&&(b=b.replace(new RegExp(Ge.S_OPT.source,"g"),""),b&&n.error("Unexpected content outside root element: '"+b+"'")),c(y)}switch(r.charAt(y+1)){case"/":var N=r.indexOf(">",y+2),x=r.substring(y+2,N>0?N:void 0);if(!x)return n.fatalError("end tag name missing");var _=Ge.reg("^",Ge.QName_group,Ge.S_OPT,"$"),R=N>0&&_.exec(x);if(!R){var U=N>0&&Ge.reg("^",Ge.QName_group).exec(x);if(s&&U)n.warning('end tag name contains invalid trailing characters: "'+x+'"'),R=U;else if(U&&new RegExp(_.source,_.flags+"m").test(x))n.error('end tag name is followed by a line break and trailing content: "'+x+'"'),R=U;else return n.fatalError('end tag name contains invalid characters: "'+x+'"')}if(!i.currentElement&&!i.doc.documentElement)return;var T=p[p.length-1]||i.currentElement.tagName||i.doc.documentElement.tagName||"";if(T!==R[1]){var D=R[1].toLowerCase();if(!s||T.toLowerCase()!==D)return n.fatalError('Opening and ending tag mismatch: "'+T+'" != "'+x+'"')}var B=g.pop();p.pop();var Q=B.localNSMap;if(i.endElement(B.uri,B.localName,T),Q)for(var v in Q)Bf(Q,v)&&i.endPrefixMapping(v);N++;break;case"?":f&&h(y),N=nV(r,y,i,n);break;case"!":f&&h(y),N=CP(r,y,i,n,s);break;default:f&&h(y);var E=new EP,P=g[g.length-1].currentNSMap,N=eV(r,y,E,P,a,n,s),J=E.length;if(E.closed||(s&&td.isHTMLVoidElement(E.tagName)?E.closed=!0:p.push(E.tagName)),f&&J){for(var z=mP(f,{}),L=0;L<J;L++){var G=E[L];h(G.offset),G.locator=mP(f,{})}i.locator=z,yP(E,i,P)&&g.push(E),i.locator=f}else yP(E,i,P)&&g.push(E);s&&!E.closed?N=tV(r,N,E.tagName,a,i):N++}}catch(K){if(K instanceof W$)throw K;if(K instanceof X$)return n.fatalError("Error constructing the DOM: "+K.name+": "+K.message,K);n.error("element parse error: "+K),N=-1}N>I?I=N:c(Math.max(y,I)+1)}}function mP(r,e){return e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber,e}function eV(r,e,t,i,n,s,o){function a(h,g,p){if(Bf(t.attributeNames,h))return s.fatalError("Attribute "+h+" redefined");if(!o&&g.indexOf("<")>=0)return s.fatalError("Unescaped '<' not allowed in attributes values");t.addValue(h,g.replace(/[\t\n\r]/g," ").replace(FE,n),p)}for(var c,l,d=++e,u=Wl;;){var f=r.charAt(d);if(u===Wl&&f==="<")throw new Error("unexpected < in tag name: "+r.slice(e,d));switch(f){case"=":if(u===ra)c=r.slice(e,d),u=Cf;else if(u===Xl)u=Cf;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(u===Cf||u===ra)if(u===ra&&(s.warning('attribute value must after "="'),c=r.slice(e,d)),e=d+1,d=r.indexOf(f,e),d>0)l=r.slice(e,d),a(c,l,e-1),u=ed;else throw new Error("attribute value no end '"+f+"' match");else if(u==Zl)l=r.slice(e,d),a(c,l,e),s.warning('attribute "'+c+'" missed start quot('+f+")!!"),e=d+1,u=ed;else throw new Error('attribute value must after "="');break;case"/":switch(u){case Wl:t.setTagName(r.slice(e,d));case ed:case Ef:case sy:u=sy,t.closed=!0;case Zl:case ra:break;case Xl:t.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),u==Wl&&t.setTagName(r.slice(e,d)),d;case">":switch(u){case Wl:t.setTagName(r.slice(e,d));case ed:case Ef:case sy:break;case Zl:case ra:l=r.slice(e,d),l.slice(-1)==="/"&&(t.closed=!0,l=l.slice(0,-1));case Xl:u===Xl&&(l=c),u==Zl?(s.warning('attribute "'+l+'" missed quot(")!'),a(c,l,e)):(o||s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),a(l,l,e));break;case Cf:if(!o)return s.fatalError(`AttValue: ' or " expected`)}return d;case"\x80":f=" ";default:if(f<=" ")switch(u){case Wl:t.setTagName(r.slice(e,d)),u=Ef;break;case ra:c=r.slice(e,d),u=Xl;break;case Zl:var l=r.slice(e,d);s.warning('attribute "'+l+'" missed quot(")!!'),a(c,l,e);case ed:u=Ef;break}else switch(u){case Xl:o||s.warning('attribute "'+c+'" missed value!! "'+c+'" instead2!!'),a(c,c,e),e=d,u=ra;break;case ed:s.warning('attribute space is required"'+c+'"!!');case Ef:u=ra,e=d;break;case Cf:u=Zl,e=d;break;case sy:throw new Error("elements closed character '/' and '>' must be connected to")}}d++}}function yP(r,e,t){for(var i=r.tagName,n=null,u=r.length;u--;){var s=r[u],o=s.qName,a=s.value,f=o.indexOf(":");if(f>0)var c=s.prefix=o.slice(0,f),l=o.slice(f+1),d=c==="xmlns"&&l;else l=o,c=null,d=o==="xmlns"&&"";s.localName=l,d!==!1&&(n==null&&(n=Object.create(null),t=Object.create(t)),t[d]=n[d]=a,s.uri=pP.XMLNS,e.startPrefixMapping(d,a))}for(var u=r.length;u--;)s=r[u],s.prefix&&(s.prefix==="xml"&&(s.uri=pP.XML),s.prefix!=="xmlns"&&(s.uri=t[s.prefix]));var f=i.indexOf(":");f>0?(c=r.prefix=i.slice(0,f),l=r.localName=i.slice(f+1)):(c=null,l=r.localName=i);var h=r.uri=t[c||""];if(e.startElement(h,l,i,r),r.closed){if(e.endElement(h,l,i),n)for(c in n)Bf(n,c)&&e.endPrefixMapping(c)}else return r.currentNSMap=t,r.localNSMap=n,!0}function tV(r,e,t,i,n){var s=$$(t);if(s||Y$(t)){var o=new RegExp("</"+t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+">","ig");o.lastIndex=e;var a=o.exec(r),c=a?a.index:-1;if(c<0)return e+1;var l=r.substring(e+1,c);return s&&(l=l.replace(FE,i)),n.characters(l,0,l.length),c}return e+1}function rV(r,e){for(var t in r)Bf(r,t)&&(e[t]=r[t])}function xP(r,e){var t=e;function i(d){return d=d||0,r.charAt(t+d)}function n(d){d=d||1,t+=d}function s(){for(var d=0;t<r.length;){var u=i();if(u!==" "&&u!==` -`&&u!==" "&&u!=="\r")return d;d++,n()}return-1}function o(){return r.substring(t)}function a(d){return r.substring(t,t+d.length)===d}function c(d){return r.substring(t,t+d.length).toUpperCase()===d.toUpperCase()}function l(d){var u=Ge.reg("^",d),f=u.exec(o());return f?(n(f[0].length),f[0]):null}return{char:i,getIndex:function(){return t},getMatch:l,getSource:function(){return r},skip:n,skipBlanks:s,substringFromIndex:o,substringStartsWith:a,substringStartsWithCaseInsensitive:c}}function iV(r,e){function t(a,c){var l=Ge.PI.exec(a.substringFromIndex());return l?l[1].toLowerCase()==="xml"?c.fatalError("xml declaration is only allowed at the start of the document, but found at position "+a.getIndex()):(a.skip(l[0].length),l[0]):c.fatalError("processing instruction is not well-formed at position "+a.getIndex())}var i=r.getSource();if(r.char()==="["){r.skip(1);for(var n=r.getIndex();r.getIndex()<i.length;){if(r.skipBlanks(),r.char()==="]"){var s=i.substring(n,r.getIndex());return r.skip(1),s}var o=null;if(r.char()==="<"&&r.char(1)==="!")switch(r.char(2)){case"E":r.char(3)==="L"?o=r.getMatch(Ge.elementdecl):r.char(3)==="N"&&(o=r.getMatch(Ge.EntityDecl));break;case"A":o=r.getMatch(Ge.AttlistDecl);break;case"N":o=r.getMatch(Ge.NotationDecl);break;case"-":o=r.getMatch(Ge.Comment);break}else if(r.char()==="<"&&r.char(1)==="?")o=t(r,e);else if(r.char()==="%")o=r.getMatch(Ge.PEReference);else return e.fatalError("Error detected in Markup declaration");if(!o)return e.fatalError("Error in internal subset at position "+r.getIndex())}return e.fatalError("doctype internal subset is not well-formed, missing ]")}}function CP(r,e,t,i,n){var s=xP(r,e);switch(n?s.char(2).toUpperCase():s.char(2)){case"-":var o=s.getMatch(Ge.Comment);return o?(t.comment(o,Ge.COMMENT_START.length,o.length-Ge.COMMENT_START.length-Ge.COMMENT_END.length),s.getIndex()):i.fatalError("comment is not well-formed at position "+s.getIndex());case"[":var a=s.getMatch(Ge.CDSect);return a?!n&&!t.currentElement?i.fatalError("CDATA outside of element"):(t.startCDATA(),t.characters(a,Ge.CDATA_START.length,a.length-Ge.CDATA_START.length-Ge.CDATA_END.length),t.endCDATA(),s.getIndex()):i.fatalError("Invalid CDATA starting at position "+e);case"D":{if(t.doc&&t.doc.documentElement)return i.fatalError("Doctype not allowed inside or after documentElement at position "+s.getIndex());if(n?!s.substringStartsWithCaseInsensitive(Ge.DOCTYPE_DECL_START):!s.substringStartsWith(Ge.DOCTYPE_DECL_START))return i.fatalError("Expected "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());if(s.skip(Ge.DOCTYPE_DECL_START.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());var c={name:void 0,publicId:void 0,systemId:void 0,internalSubset:void 0};if(c.name=s.getMatch(Ge.Name),!c.name)return i.fatalError("doctype name missing or contains unexpected characters at position "+s.getIndex());if(n&&c.name.toLowerCase()!=="html"&&i.warning("Unexpected DOCTYPE in HTML document at position "+s.getIndex()),s.skipBlanks(),s.substringStartsWith(Ge.PUBLIC)||s.substringStartsWith(Ge.SYSTEM)){var l=Ge.ExternalID_match.exec(s.substringFromIndex());if(!l)return i.fatalError("doctype external id is not well-formed at position "+s.getIndex());l.groups.SystemLiteralOnly!==void 0?c.systemId=l.groups.SystemLiteralOnly:(c.systemId=l.groups.SystemLiteral,c.publicId=l.groups.PubidLiteral),s.skip(l[0].length)}else if(n&&s.substringStartsWithCaseInsensitive(Ge.SYSTEM)){if(s.skip(Ge.SYSTEM.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.SYSTEM+" at position "+s.getIndex());if(c.systemId=s.getMatch(Ge.ABOUT_LEGACY_COMPAT_SystemLiteral),!c.systemId)return i.fatalError("Expected "+Ge.ABOUT_LEGACY_COMPAT+" in single or double quotes after "+Ge.SYSTEM+" at position "+s.getIndex())}return n&&c.systemId&&!Ge.ABOUT_LEGACY_COMPAT_SystemLiteral.test(c.systemId)&&i.warning("Unexpected doctype.systemId in HTML document at position "+s.getIndex()),n||(s.skipBlanks(),c.internalSubset=iV(s,i)),s.skipBlanks(),s.char()!==">"?i.fatalError("doctype not terminated with > at position "+s.getIndex()):(s.skip(1),t.startDTD(c.name,c.publicId,c.systemId,c.internalSubset),t.endDTD(),s.getIndex())}default:return i.fatalError('Not well-formed XML starting with "<!" at position '+e)}}function nV(r,e,t,i){var n=r.substring(e).match(Ge.PI);if(!n)return i.fatalError("Invalid processing instruction starting at position "+e);if(n[1].toLowerCase()==="xml"){if(e>0)return i.fatalError("processing instruction at position "+e+" is an xml declaration which is only at the start of the document");if(!Ge.XMLDecl.test(r.substring(e)))return i.fatalError("xml declaration is not well-formed")}return t.processingInstruction(n[1],n[2]),e+n[0].length}function EP(){this.attributeNames=Object.create(null)}EP.prototype={setTagName:function(r){if(!Ge.QName_exact.test(r))throw new Error("invalid tagName:"+r);this.tagName=r},addValue:function(r,e,t){if(!Ge.QName_exact.test(r))throw new Error("invalid attribute:"+r);this.attributeNames[r]=this.length,this[this.length++]={qName:r,value:e,offset:t}},length:0,getLocalName:function(r){return this[r].localName},getLocator:function(r){return this[r].locator},getQName:function(r){return this[r].qName},getURI:function(r){return this[r].uri},getValue:function(r){return this[r].value}};oy.XMLReader=wP;oy.parseUtils=xP;oy.parseDoctypeCommentOrCData=CP});var _P=oe(id=>{"use strict";var Ec=xc(),sV=_E(),oV=ff(),bP=gP(),aV=BP(),cV=sV.DOMImplementation,lV=Ec.hasDefaultHTMLNamespace,dV=Ec.isHTMLMimeType,uV=Ec.isValidMimeType,SP=Ec.MIME_TYPE,PE=Ec.NAMESPACE,vP=oV.ParseError,fV=aV.XMLReader;function DP(r){return r.replace(/\r[\n\u0085]/g,` +${m}${w}`,C=await Gf(B,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${C}`,_={"Content-Type":I,Date:p,Authorization:x};d.sessionToken&&(_["x-oss-security-token"]=d.sessionToken);let R=await fetch(g,{method:"PUT",headers:_,body:c});if(!R.ok)throw new Error(`OSS upload failed: ${R.status} ${await R.text()}`);f&&await this.client.waitUploadTaskInfo(f)}}});var b6=ae(u1=>{var lW=typeof u1>"u"?{}:u1;(function(r){"use strict";var e="__namespace",t=function(h){return h==null},i=function(h){return h===e||Number.isInteger(h)&&h>=1&&h<=11},n=function(h){return h&&i(h.nodeType)&&typeof h.nodeName=="string"};function s(h){var k=Array.prototype.slice,q=h.length,V=function(W,fe){return function(){return fe.apply(this,W.concat(k.call(arguments)))}},H=function(){var W=k.call(arguments);return W.length<q?V(W,H):h.apply(this,k.apply(arguments,[0,q]))};return H}var a=function(h,k){for(var q=0;q<k.length;q+=1)h(k[q],q,k)},o=function(h,k,q){var V=k;return a(function(H,W){V=h(V,H,W)},q),V},c=function(h,k){var q=new Array(k.length);return a(function(V,H){q[H]=h(V)},k),q},l=function(h,k){var q=[];return a(function(V,H){h(V,H)&&q.push(V)},k),q},d=function(h,k){for(var q=0;q<h.length;q+=1)if(h[q]===k)return!0;return!1};function u(h){return function(){return h}}function f(h){return h.toString()}var A=function(h,k){return k.join(h)},g=function(h,k,q){return h+q+k},p=Array.prototype.concat,I=function(h,k){var q=new Be;q.addArray(h);var V=q.toArray();return k?V.reverse():V},m=32767;function w(h){for(var k=[],q=0;q<h.length;q+=m){var V=h.slice(q,q+m);k=p.apply(k,V)}return k}function B(h,k){for(var q=Object(h),V=1;V<arguments.length;V++){var H=arguments[V];if(H!=null)for(var W in H)Object.prototype.hasOwnProperty.call(H,W)&&(q[W]=H[W])}return q}var C={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NAMESPACE_NODE:e};x.prototype=new Object,x.prototype.constructor=x,x.superclass=Object.prototype;function x(){this.init()}x.prototype.init=function(){this.reduceActions=[],this.reduceActions[3]=function(h){return new Q(h[0],h[2])},this.reduceActions[5]=function(h){return new v(h[0],h[2])},this.reduceActions[7]=function(h){return new E(h[0],h[2])},this.reduceActions[8]=function(h){return new P(h[0],h[2])},this.reduceActions[10]=function(h){return new N(h[0],h[2])},this.reduceActions[11]=function(h){return new j(h[0],h[2])},this.reduceActions[12]=function(h){return new z(h[0],h[2])},this.reduceActions[13]=function(h){return new L(h[0],h[2])},this.reduceActions[15]=function(h){return new G(h[0],h[2])},this.reduceActions[16]=function(h){return new K(h[0],h[2])},this.reduceActions[18]=function(h){return new $(h[0],h[2])},this.reduceActions[19]=function(h){return new te(h[0],h[2])},this.reduceActions[20]=function(h){return new re(h[0],h[2])},this.reduceActions[22]=function(h){return new D(h[1])},this.reduceActions[24]=function(h){return new ee(h[0],h[2])},this.reduceActions[25]=function(h){return new Z(void 0,void 0,h[0])},this.reduceActions[27]=function(h){return h[0].locationPath=h[2],h[0]},this.reduceActions[28]=function(h){return h[0].locationPath=h[2],h[0].locationPath.steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),h[0]},this.reduceActions[29]=function(h){return new Z(h[0],[],void 0)},this.reduceActions[30]=function(h){return Se.instance_of(h[0],Z)?(h[0].filterPredicates==null&&(h[0].filterPredicates=[]),h[0].filterPredicates.push(h[1]),h[0]):new Z(h[0],[h[1]],void 0)},this.reduceActions[32]=function(h){return h[1]},this.reduceActions[33]=function(h){return new xe(h[0])},this.reduceActions[34]=function(h){return new be(h[0])},this.reduceActions[36]=function(h){return new Wr(h[0],[])},this.reduceActions[37]=function(h){return new Wr(h[0],h[2])},this.reduceActions[38]=function(h){return[h[0]]},this.reduceActions[39]=function(h){return h[2].unshift(h[0]),h[2]},this.reduceActions[43]=function(h){return new Ue(!0,[])},this.reduceActions[44]=function(h){return h[1].absolute=!0,h[1]},this.reduceActions[46]=function(h){return new Ue(!1,[h[0]])},this.reduceActions[47]=function(h){return h[0].steps.push(h[2]),h[0]},this.reduceActions[49]=function(h){return new se(h[0],h[1],[])},this.reduceActions[50]=function(h){return new se(se.CHILD,h[0],[])},this.reduceActions[51]=function(h){return new se(h[0],h[1],h[2])},this.reduceActions[52]=function(h){return new se(se.CHILD,h[0],h[1])},this.reduceActions[54]=function(h){return[h[0]]},this.reduceActions[55]=function(h){return h[1].unshift(h[0]),h[1]},this.reduceActions[56]=function(h){return h[0]=="ancestor"?se.ANCESTOR:h[0]=="ancestor-or-self"?se.ANCESTORORSELF:h[0]=="attribute"?se.ATTRIBUTE:h[0]=="child"?se.CHILD:h[0]=="descendant"?se.DESCENDANT:h[0]=="descendant-or-self"?se.DESCENDANTORSELF:h[0]=="following"?se.FOLLOWING:h[0]=="following-sibling"?se.FOLLOWINGSIBLING:h[0]=="namespace"?se.NAMESPACE:h[0]=="parent"?se.PARENT:h[0]=="preceding"?se.PRECEDING:h[0]=="preceding-sibling"?se.PRECEDINGSIBLING:h[0]=="self"?se.SELF:-1},this.reduceActions[57]=function(h){return se.ATTRIBUTE},this.reduceActions[59]=function(h){return h[0]=="comment"?ce.commentTest:h[0]=="text"?ce.textTest:h[0]=="processing-instruction"?ce.anyPiTest:h[0]=="node"?ce.nodeTest:new ce(-1,void 0)},this.reduceActions[60]=function(h){return new ce.PITest(h[2])},this.reduceActions[61]=function(h){return h[1]},this.reduceActions[63]=function(h){return h[1].absolute=!0,h[1].steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),h[1]},this.reduceActions[64]=function(h){return h[0].steps.push(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),h[0].steps.push(h[2]),h[0]},this.reduceActions[65]=function(h){return new se(se.SELF,ce.nodeTest,[])},this.reduceActions[66]=function(h){return new se(se.PARENT,ce.nodeTest,[])},this.reduceActions[67]=function(h){return new wr(h[1])},this.reduceActions[68]=function(h){return ce.nameTestAny},this.reduceActions[69]=function(h){return new ce.NameTestPrefixAny(h[0].split(":")[0])},this.reduceActions[70]=function(h){return new ce.NameTestQName(h[0])}},x.actionTable=[" s s sssssssss s ss s ss"," s ","r rrrrrrrrr rrrrrrr rr r "," rrrrr "," s s sssssssss s ss s ss","rs rrrrrrrr s sssssrrrrrr rrs rs "," s s sssssssss s ss s ss"," s "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s "," s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr r ","a ","r s rr r ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrs rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r srrrrrrrr rrrrrrs rr sr ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r "," sssss ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrr rrrrr rr r "," s "," s "," rrrrr "," s s sssssssss s sss s ss","r srrrrrrrr rrrrrrs rr r "," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss ss s ss"," s s sssssssss s ss s ss"," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr rr "," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," rr "," s "," rs ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrr rr r "," r "," s ","r srrrrrrrr rrrrrrs rr r ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s s sssssssss s ss s ss","r rrrrrrrrr rrrrrrr rr rr "," r "],x.actionTableNumber=[` 1 0 /.-,+*)(' & %$ # "!`," J ","a aaaaaaaaa aaaaaaa aa a "," YYYYY ",` 1 0 /.-,+*)(' & %$ # "!`,`K1 KKKKKKKK . +*)('KKKKKK KK# K" `,` 1 0 /.-,+*)(' & %$ # "!`," N "," O ","e eeeeeeeee eeeeeee ee ee ","f fffffffff fffffff ff ff ","d ddddddddd ddddddd dd dd ","B BBBBBBBBB BBBBBBB BB BB ","A AAAAAAAAA AAAAAAA AA AA "," P "," Q ",` 1 . +*)(' # " `,"b bbbbbbbbb bbbbbbb bb b "," ","! S !! ! ",'" T" "" " ',"$ V $$ U $$ $ ","& &ZY&& &XW && & ",") ))))) )))\\[ )) ) ",". ....._^] ..... .. . ","1 11111111 11111 11 1 ","5 55555555 55555` 55 5 ","7 77777777 777777 77 7 ","9 99999999 999999 99 9 ",": c:::::::: ::::::b :: a: ","I fIIIIIIII IIIIIIe II I ","= ========= ======= == == ","? ????????? ??????? ?? ?? ","C CCCCCCCCC CCCCCCC CC CC ","J JJJJJJJJ JJJJJJ JJ J ","M MMMMMMMM MMMMMM MM M ","N NNNNNNNNN NNNNNNN NN N ","P PPPPPPPPP PPPPPPP PP P "," +*)(' ","R RRRRRRRRR RRRRRRR RR aR ","U UUUUUUUUU UUUUUUU UU U ","Z ZZZZZZZZZ ZZZZZZZ ZZ ZZ ","c ccccccccc ccccccc cc cc "," j ","L fLLLLLLLL LLLLLLe LL L ","6 66666666 66666 66 6 "," k "," l "," XXXXX ",` 1 0 /.-,+*)(' & %$m # "!`,"_ f________ ______e __ _ ",` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 . +*)(' # " `,` 1 . +*)(' # " `,"> >>>>>>>>> >>>>>>> >> >> ",` 1 . +*)(' # " `,` 1 . +*)(' # " `,"Q QQQQQQQQQ QQQQQQQ QQ aQ ","V VVVVVVVVV VVVVVVV VV aV ","T TTTTTTTTT TTTTTTT TT T ","@ @@@@@@@@@ @@@@@@@ @@ @@ "," \x87 ","[ [[[[[[[[[ [[[[[[[ [[ [[ ","D DDDDDDDDD DDDDDDD DD DD "," HH "," \x88 "," F\x89 ","# T# ## # ","% V %% U %% % ","' 'ZY'' 'XW '' ' ","( (ZY(( (XW (( ( ","+ +++++ +++\\[ ++ + ","* ***** ***\\[ ** * ","- ----- ---\\[ -- - ",", ,,,,, ,,,\\[ ,, , ","0 00000_^] 00000 00 0 ","/ /////_^] ///// // / ","2 22222222 22222 22 2 ","3 33333333 33333 33 3 ","4 44444444 44444 44 4 ","8 88888888 888888 88 8 "," ^ "," \x8A ","; f;;;;;;;; ;;;;;;e ;; ; ","< f<<<<<<<< <<<<<<e << < ","O OOOOOOOOO OOOOOOO OO O ","` ````````` ``````` `` ` ","S SSSSSSSSS SSSSSSS SS S ","W WWWWWWWWW WWWWWWW WW W ","\\ \\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\ \\\\ \\\\ ","E EEEEEEEEE EEEEEEE EE EE ",` 1 0 /.-,+*)(' & %$ # "!`,"] ]]]]]]]]] ]]]]]]] ]] ]] "," G "],x.gotoTable=["3456789:;<=>?@ AB CDEFGH IJ "," "," "," ","L456789:;<=>?@ AB CDEFGH IJ "," M EFGH IJ "," N;<=>?@ AB CDEFGH IJ "," "," "," "," "," "," "," "," "," "," S EFGH IJ "," "," "," "," "," "," "," "," "," "," "," "," "," e "," "," "," "," "," "," "," "," "," h J "," i j "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ ABpqCDEFGH IJ "," "," r6789:;<=>?@ AB CDEFGH IJ "," s789:;<=>?@ AB CDEFGH IJ "," t89:;<=>?@ AB CDEFGH IJ "," u89:;<=>?@ AB CDEFGH IJ "," v9:;<=>?@ AB CDEFGH IJ "," w9:;<=>?@ AB CDEFGH IJ "," x9:;<=>?@ AB CDEFGH IJ "," y9:;<=>?@ AB CDEFGH IJ "," z:;<=>?@ AB CDEFGH IJ "," {:;<=>?@ AB CDEFGH IJ "," |;<=>?@ AB CDEFGH IJ "," };<=>?@ AB CDEFGH IJ "," ~;<=>?@ AB CDEFGH IJ "," \x7F=>?@ AB CDEFGH IJ ","\x80456789:;<=>?@ AB CDEFGH IJ\x81"," \x82 EFGH IJ "," \x83 EFGH IJ "," "," \x84 GH IJ "," \x85 GH IJ "," i \x86 "," i \x87 "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ AB\x8CqCDEFGH IJ "," "," "],x.productions=[[1,1,2],[2,1,3],[3,1,4],[3,3,3,-9,4],[4,1,5],[4,3,4,-8,5],[5,1,6],[5,3,5,-22,6],[5,3,5,-5,6],[6,1,7],[6,3,6,-23,7],[6,3,6,-24,7],[6,3,6,-6,7],[6,3,6,-7,7],[7,1,8],[7,3,7,-25,8],[7,3,7,-26,8],[8,1,9],[8,3,8,-12,9],[8,3,8,-11,9],[8,3,8,-10,9],[9,1,10],[9,2,-26,9],[10,1,11],[10,3,10,-27,11],[11,1,12],[11,1,13],[11,3,13,-28,14],[11,3,13,-4,14],[13,1,15],[13,2,13,16],[15,1,17],[15,3,-29,2,-30],[15,1,-15],[15,1,-16],[15,1,18],[18,3,-13,-29,-30],[18,4,-13,-29,19,-30],[19,1,20],[19,3,20,-31,19],[20,1,2],[12,1,14],[12,1,21],[21,1,-28],[21,2,-28,14],[21,1,22],[14,1,23],[14,3,14,-28,23],[14,1,24],[23,2,25,26],[23,1,26],[23,3,25,26,27],[23,2,26,27],[23,1,28],[27,1,16],[27,2,16,27],[25,2,-14,-3],[25,1,-32],[26,1,29],[26,3,-20,-29,-30],[26,4,-21,-29,-15,-30],[16,3,-33,30,-34],[30,1,2],[22,2,-4,14],[24,3,14,-4,23],[28,1,-35],[28,1,-2],[17,2,-36,-18],[29,1,-17],[29,1,-19],[29,1,-18]],x.DOUBLEDOT=2,x.DOUBLECOLON=3,x.DOUBLESLASH=4,x.NOTEQUAL=5,x.LESSTHANOREQUAL=6,x.GREATERTHANOREQUAL=7,x.AND=8,x.OR=9,x.MOD=10,x.DIV=11,x.MULTIPLYOPERATOR=12,x.FUNCTIONNAME=13,x.AXISNAME=14,x.LITERAL=15,x.NUMBER=16,x.ASTERISKNAMETEST=17,x.QNAME=18,x.NCNAMECOLONASTERISK=19,x.NODETYPE=20,x.PROCESSINGINSTRUCTIONWITHLITERAL=21,x.EQUALS=22,x.LESSTHAN=23,x.GREATERTHAN=24,x.PLUS=25,x.MINUS=26,x.BAR=27,x.SLASH=28,x.LEFTPARENTHESIS=29,x.RIGHTPARENTHESIS=30,x.COMMA=31,x.AT=32,x.LEFTBRACKET=33,x.RIGHTBRACKET=34,x.DOT=35,x.DOLLAR=36,x.prototype.tokenize=function(h){for(var k=[],q=[],V=h+"\0",H=0,W=V.charAt(H++);;){for(;W==" "||W==" "||W=="\r"||W==` +`;)W=V.charAt(H++);if(W=="\0"||H>=V.length)break;if(W=="("){k.push(x.LEFTPARENTHESIS),q.push(W),W=V.charAt(H++);continue}if(W==")"){k.push(x.RIGHTPARENTHESIS),q.push(W),W=V.charAt(H++);continue}if(W=="["){k.push(x.LEFTBRACKET),q.push(W),W=V.charAt(H++);continue}if(W=="]"){k.push(x.RIGHTBRACKET),q.push(W),W=V.charAt(H++);continue}if(W=="@"){k.push(x.AT),q.push(W),W=V.charAt(H++);continue}if(W==","){k.push(x.COMMA),q.push(W),W=V.charAt(H++);continue}if(W=="|"){k.push(x.BAR),q.push(W),W=V.charAt(H++);continue}if(W=="+"){k.push(x.PLUS),q.push(W),W=V.charAt(H++);continue}if(W=="-"){k.push(x.MINUS),q.push(W),W=V.charAt(H++);continue}if(W=="="){k.push(x.EQUALS),q.push(W),W=V.charAt(H++);continue}if(W=="$"){k.push(x.DOLLAR),q.push(W),W=V.charAt(H++);continue}if(W=="."){if(W=V.charAt(H++),W=="."){k.push(x.DOUBLEDOT),q.push(".."),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var fe="."+W;for(W=V.charAt(H++);W>="0"&&W<="9";)fe+=W,W=V.charAt(H++);k.push(x.NUMBER),q.push(fe);continue}k.push(x.DOT),q.push(".");continue}if(W=="'"||W=='"'){for(var Me=W,it="";H<V.length&&(W=V.charAt(H))!==Me;)it+=W,H+=1;if(W!==Me)throw ki.fromMessage("Unterminated string literal: "+Me+it);H+=1,k.push(x.LITERAL),q.push(it),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var fe=W;for(W=V.charAt(H++);W>="0"&&W<="9";)fe+=W,W=V.charAt(H++);if(W=="."&&V.charAt(H)>="0"&&V.charAt(H)<="9")for(fe+=W,fe+=V.charAt(H++),W=V.charAt(H++);W>="0"&&W<="9";)fe+=W,W=V.charAt(H++);k.push(x.NUMBER),q.push(fe);continue}if(W=="*"){if(k.length>0){var we=k[k.length-1];if(we!=x.AT&&we!=x.DOUBLECOLON&&we!=x.LEFTPARENTHESIS&&we!=x.LEFTBRACKET&&we!=x.AND&&we!=x.OR&&we!=x.MOD&&we!=x.DIV&&we!=x.MULTIPLYOPERATOR&&we!=x.SLASH&&we!=x.DOUBLESLASH&&we!=x.BAR&&we!=x.PLUS&&we!=x.MINUS&&we!=x.EQUALS&&we!=x.NOTEQUAL&&we!=x.LESSTHAN&&we!=x.LESSTHANOREQUAL&&we!=x.GREATERTHAN&&we!=x.GREATERTHANOREQUAL){k.push(x.MULTIPLYOPERATOR),q.push(W),W=V.charAt(H++);continue}}k.push(x.ASTERISKNAMETEST),q.push(W),W=V.charAt(H++);continue}if(W==":"&&V.charAt(H)==":"){k.push(x.DOUBLECOLON),q.push("::"),H++,W=V.charAt(H++);continue}if(W=="/"){if(W=V.charAt(H++),W=="/"){k.push(x.DOUBLESLASH),q.push("//"),W=V.charAt(H++);continue}k.push(x.SLASH),q.push("/");continue}if(W=="!"&&V.charAt(H)=="="){k.push(x.NOTEQUAL),q.push("!="),H++,W=V.charAt(H++);continue}if(W=="<"){if(V.charAt(H)=="="){k.push(x.LESSTHANOREQUAL),q.push("<="),H++,W=V.charAt(H++);continue}k.push(x.LESSTHAN),q.push("<"),W=V.charAt(H++);continue}if(W==">"){if(V.charAt(H)=="="){k.push(x.GREATERTHANOREQUAL),q.push(">="),H++,W=V.charAt(H++);continue}k.push(x.GREATERTHAN),q.push(">"),W=V.charAt(H++);continue}if(W=="_"||Se.isLetter(W.charCodeAt(0))){var Re=W;for(W=V.charAt(H++);Se.isNCNameChar(W.charCodeAt(0));)Re+=W,W=V.charAt(H++);if(k.length>0){var we=k[k.length-1];if(we!=x.AT&&we!=x.DOUBLECOLON&&we!=x.LEFTPARENTHESIS&&we!=x.LEFTBRACKET&&we!=x.AND&&we!=x.OR&&we!=x.MOD&&we!=x.DIV&&we!=x.MULTIPLYOPERATOR&&we!=x.SLASH&&we!=x.DOUBLESLASH&&we!=x.BAR&&we!=x.PLUS&&we!=x.MINUS&&we!=x.EQUALS&&we!=x.NOTEQUAL&&we!=x.LESSTHAN&&we!=x.LESSTHANOREQUAL&&we!=x.GREATERTHAN&&we!=x.GREATERTHANOREQUAL){if(Re=="and"){k.push(x.AND),q.push(Re);continue}if(Re=="or"){k.push(x.OR),q.push(Re);continue}if(Re=="mod"){k.push(x.MOD),q.push(Re);continue}if(Re=="div"){k.push(x.DIV),q.push(Re);continue}}}if(W==":"){if(V.charAt(H)=="*"){k.push(x.NCNAMECOLONASTERISK),q.push(Re+":*"),H++,W=V.charAt(H++);continue}if(V.charAt(H)=="_"||Se.isLetter(V.charCodeAt(H))){for(Re+=":",W=V.charAt(H++);Se.isNCNameChar(W.charCodeAt(0));)Re+=W,W=V.charAt(H++);if(W=="("){k.push(x.FUNCTIONNAME),q.push(Re);continue}k.push(x.QNAME),q.push(Re);continue}if(V.charAt(H)==":"){k.push(x.AXISNAME),q.push(Re);continue}}if(W=="("){if(Re=="comment"||Re=="text"||Re=="node"){k.push(x.NODETYPE),q.push(Re);continue}if(Re=="processing-instruction"){V.charAt(H)==")"?k.push(x.NODETYPE):k.push(x.PROCESSINGINSTRUCTIONWITHLITERAL),q.push(Re);continue}k.push(x.FUNCTIONNAME),q.push(Re);continue}k.push(x.QNAME),q.push(Re);continue}throw new Error("Unexpected character "+W)}return k.push(1),q.push("[EOF]"),[k,q]},x.SHIFT="s",x.REDUCE="r",x.ACCEPT="a",x.prototype.parse=function(it){if(!it)throw new Error("XPath expression unspecified.");if(typeof it!="string")throw new Error("XPath expression must be a string.");var k,q,V=this.tokenize(it);if(V!=null){k=V[0],q=V[1];var H=0,W=[],fe=[],Me=[],it,we,Re;for(W.push(0),fe.push(1),Me.push("_S"),we=k[H],Re=q[H++];;)switch(it=W[W.length-1],x.actionTable[it].charAt(we-1)){case x.SHIFT:fe.push(-we),Me.push(Re),W.push(x.actionTableNumber[it].charCodeAt(we-1)-32),we=k[H],Re=q[H++];break;case x.REDUCE:for(var On=x.productions[x.actionTableNumber[it].charCodeAt(we-1)-32][1],Xs=[],Zs=0;Zs<On;Zs++)fe.pop(),Xs.unshift(Me.pop()),W.pop();var ea=W[W.length-1];fe.push(x.productions[x.actionTableNumber[it].charCodeAt(we-1)-32][0]),this.reduceActions[x.actionTableNumber[it].charCodeAt(we-1)-32]==null?Me.push(Xs[0]):Me.push(this.reduceActions[x.actionTableNumber[it].charCodeAt(we-1)-32](Xs)),W.push(x.gotoTable[ea].charCodeAt(x.productions[x.actionTableNumber[it].charCodeAt(we-1)-32][0]-2)-33);break;case x.ACCEPT:return new _(Me.pop());default:throw new Error("XPath parse error")}}},_.prototype=new Object,_.prototype.constructor=_,_.superclass=Object.prototype;function _(h){this.expression=h}_.prototype.toString=function(){return this.expression.toString()};function R(h,k,q){k in h||(h[k]=q)}_.prototype.evaluate=function(h){var k=h.expressionContextNode;if(!(t(k)||n(k)))throw new Error("Context node does not appear to be a valid DOM node.");return h.contextNode=h.expressionContextNode,h.contextSize=1,h.contextPosition=1,h.isHtml&&(R(h,"caseInsensitive",!0),R(h,"allowAnyNamespaceForNoPrefix",!0)),R(h,"caseInsensitive",!1),this.expression.evaluate(h)},_.XML_NAMESPACE_URI="http://www.w3.org/XML/1998/namespace",_.XMLNS_NAMESPACE_URI="http://www.w3.org/2000/xmlns/",U.prototype=new Object,U.prototype.constructor=U,U.superclass=Object.prototype;function U(){}U.prototype.init=function(){},U.prototype.toString=function(){return"<Expression>"},U.prototype.evaluate=function(h){throw new Error("Could not evaluate expression.")},T.prototype=new U,T.prototype.constructor=T,T.superclass=U.prototype;function T(h){arguments.length>0&&this.init(h)}T.prototype.init=function(h){this.rhs=h},D.prototype=new T,D.prototype.constructor=D,D.superclass=T.prototype;function D(h){arguments.length>0&&this.init(h)}D.prototype.init=function(h){D.superclass.init.call(this,h)},D.prototype.evaluate=function(h){return this.rhs.evaluate(h).number().negate()},D.prototype.toString=function(){return"-"+this.rhs.toString()},b.prototype=new U,b.prototype.constructor=b,b.superclass=U.prototype;function b(h,k){arguments.length>0&&this.init(h,k)}b.prototype.init=function(h,k){this.lhs=h,this.rhs=k},Q.prototype=new b,Q.prototype.constructor=Q,Q.superclass=b.prototype;function Q(h,k){arguments.length>0&&this.init(h,k)}Q.prototype.init=function(h,k){Q.superclass.init.call(this,h,k)},Q.prototype.toString=function(){return"("+this.lhs.toString()+" or "+this.rhs.toString()+")"},Q.prototype.evaluate=function(h){var k=this.lhs.evaluate(h).bool();return k.booleanValue()?k:this.rhs.evaluate(h).bool()},v.prototype=new b,v.prototype.constructor=v,v.superclass=b.prototype;function v(h,k){arguments.length>0&&this.init(h,k)}v.prototype.init=function(h,k){v.superclass.init.call(this,h,k)},v.prototype.toString=function(){return"("+this.lhs.toString()+" and "+this.rhs.toString()+")"},v.prototype.evaluate=function(h){var k=this.lhs.evaluate(h).bool();return k.booleanValue()?this.rhs.evaluate(h).bool():k},E.prototype=new b,E.prototype.constructor=E,E.superclass=b.prototype;function E(h,k){arguments.length>0&&this.init(h,k)}E.prototype.init=function(h,k){E.superclass.init.call(this,h,k)},E.prototype.toString=function(){return"("+this.lhs.toString()+" = "+this.rhs.toString()+")"},E.prototype.evaluate=function(h){return this.lhs.evaluate(h).equals(this.rhs.evaluate(h))},P.prototype=new b,P.prototype.constructor=P,P.superclass=b.prototype;function P(h,k){arguments.length>0&&this.init(h,k)}P.prototype.init=function(h,k){P.superclass.init.call(this,h,k)},P.prototype.toString=function(){return"("+this.lhs.toString()+" != "+this.rhs.toString()+")"},P.prototype.evaluate=function(h){return this.lhs.evaluate(h).notequal(this.rhs.evaluate(h))},N.prototype=new b,N.prototype.constructor=N,N.superclass=b.prototype;function N(h,k){arguments.length>0&&this.init(h,k)}N.prototype.init=function(h,k){N.superclass.init.call(this,h,k)},N.prototype.evaluate=function(h){return this.lhs.evaluate(h).lessthan(this.rhs.evaluate(h))},N.prototype.toString=function(){return"("+this.lhs.toString()+" < "+this.rhs.toString()+")"},j.prototype=new b,j.prototype.constructor=j,j.superclass=b.prototype;function j(h,k){arguments.length>0&&this.init(h,k)}j.prototype.init=function(h,k){j.superclass.init.call(this,h,k)},j.prototype.evaluate=function(h){return this.lhs.evaluate(h).greaterthan(this.rhs.evaluate(h))},j.prototype.toString=function(){return"("+this.lhs.toString()+" > "+this.rhs.toString()+")"},z.prototype=new b,z.prototype.constructor=z,z.superclass=b.prototype;function z(h,k){arguments.length>0&&this.init(h,k)}z.prototype.init=function(h,k){z.superclass.init.call(this,h,k)},z.prototype.evaluate=function(h){return this.lhs.evaluate(h).lessthanorequal(this.rhs.evaluate(h))},z.prototype.toString=function(){return"("+this.lhs.toString()+" <= "+this.rhs.toString()+")"},L.prototype=new b,L.prototype.constructor=L,L.superclass=b.prototype;function L(h,k){arguments.length>0&&this.init(h,k)}L.prototype.init=function(h,k){L.superclass.init.call(this,h,k)},L.prototype.evaluate=function(h){return this.lhs.evaluate(h).greaterthanorequal(this.rhs.evaluate(h))},L.prototype.toString=function(){return"("+this.lhs.toString()+" >= "+this.rhs.toString()+")"},G.prototype=new b,G.prototype.constructor=G,G.superclass=b.prototype;function G(h,k){arguments.length>0&&this.init(h,k)}G.prototype.init=function(h,k){G.superclass.init.call(this,h,k)},G.prototype.evaluate=function(h){return this.lhs.evaluate(h).number().plus(this.rhs.evaluate(h).number())},G.prototype.toString=function(){return"("+this.lhs.toString()+" + "+this.rhs.toString()+")"},K.prototype=new b,K.prototype.constructor=K,K.superclass=b.prototype;function K(h,k){arguments.length>0&&this.init(h,k)}K.prototype.init=function(h,k){K.superclass.init.call(this,h,k)},K.prototype.evaluate=function(h){return this.lhs.evaluate(h).number().minus(this.rhs.evaluate(h).number())},K.prototype.toString=function(){return"("+this.lhs.toString()+" - "+this.rhs.toString()+")"},$.prototype=new b,$.prototype.constructor=$,$.superclass=b.prototype;function $(h,k){arguments.length>0&&this.init(h,k)}$.prototype.init=function(h,k){$.superclass.init.call(this,h,k)},$.prototype.evaluate=function(h){return this.lhs.evaluate(h).number().multiply(this.rhs.evaluate(h).number())},$.prototype.toString=function(){return"("+this.lhs.toString()+" * "+this.rhs.toString()+")"},te.prototype=new b,te.prototype.constructor=te,te.superclass=b.prototype;function te(h,k){arguments.length>0&&this.init(h,k)}te.prototype.init=function(h,k){te.superclass.init.call(this,h,k)},te.prototype.evaluate=function(h){return this.lhs.evaluate(h).number().div(this.rhs.evaluate(h).number())},te.prototype.toString=function(){return"("+this.lhs.toString()+" div "+this.rhs.toString()+")"},re.prototype=new b,re.prototype.constructor=re,re.superclass=b.prototype;function re(h,k){arguments.length>0&&this.init(h,k)}re.prototype.init=function(h,k){re.superclass.init.call(this,h,k)},re.prototype.evaluate=function(h){return this.lhs.evaluate(h).number().mod(this.rhs.evaluate(h).number())},re.prototype.toString=function(){return"("+this.lhs.toString()+" mod "+this.rhs.toString()+")"},ee.prototype=new b,ee.prototype.constructor=ee,ee.superclass=b.prototype;function ee(h,k){arguments.length>0&&this.init(h,k)}ee.prototype.init=function(h,k){ee.superclass.init.call(this,h,k)},ee.prototype.evaluate=function(h){return this.lhs.evaluate(h).nodeset().union(this.rhs.evaluate(h).nodeset())},ee.prototype.toString=function(){return c(f,[this.lhs,this.rhs]).join(" | ")},Z.prototype=new U,Z.prototype.constructor=Z,Z.superclass=U.prototype;function Z(h,k,q){arguments.length>0&&this.init(h,k,q)}Z.prototype.init=function(h,k,q){Z.superclass.init.call(this),this.filter=h,this.filterPredicates=k,this.locationPath=q};function ye(h){for(;h&&h.parentNode;)h=h.parentNode;return h}var de=function(h,k,q,V){if(h.length===0)return q;var H=k.extend({});return o(function(W,fe){return H.contextSize=W.length,l(function(Me,it){return H.contextNode=Me,H.contextPosition=it+1,Z.predicateMatches(fe,H)},W)},I(q,V),h)};Z.getRoot=function(h,k){var q=k[0];if(q&&q.nodeType===C.DOCUMENT_NODE)return q;if(h.virtualRoot)return h.virtualRoot;if(!q)throw new Error("Context node not found when determining document root.");var V=q.ownerDocument;if(V)return V;for(var H=q;H.parentNode!=null;)H=H.parentNode;return H};var Ae=function(h){var k=String(h.name);return k==="xmlns"?"":k.substring(0,6)==="xmlns:"?k.substring(6,k.length):null};Z.applyStep=function(h,k,q){if(!q)throw new Error("Context node not found when evaluating XPath step: "+h);var V=[];switch(k.contextNode=q,h.axis){case se.ANCESTOR:if(k.contextNode===k.virtualRoot)break;var H;for(k.contextNode.nodeType==C.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode;H!=null&&(h.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);)H=H.parentNode;break;case se.ANCESTORORSELF:for(var H=k.contextNode;H!=null&&(h.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);H=H.nodeType==C.ATTRIBUTE_NODE?Z.getOwnerElement(H):H.parentNode);break;case se.ATTRIBUTE:var W=k.contextNode.attributes;if(W!=null)for(var fe=0;fe<W.length;fe++){var H=W.item(fe);h.nodeTest.matches(H,k)&&V.push(H)}break;case se.CHILD:for(var H=k.contextNode.firstChild;H!=null;H=H.nextSibling)h.nodeTest.matches(H,k)&&V.push(H);break;case se.DESCENDANT:for(var Re=[k.contextNode.firstChild];Re.length>0;)for(var H=Re.pop();H!=null;)h.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Re.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.DESCENDANTORSELF:h.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);for(var Re=[k.contextNode.firstChild];Re.length>0;)for(var H=Re.pop();H!=null;)h.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Re.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.FOLLOWING:if(k.contextNode===k.virtualRoot)break;var Re=[];k.contextNode.firstChild!=null?Re.unshift(k.contextNode.firstChild):Re.unshift(k.contextNode.nextSibling);for(var H=k.contextNode.parentNode;H!=null&&H.nodeType!=C.DOCUMENT_NODE&&H!==k.virtualRoot;H=H.parentNode)Re.unshift(H.nextSibling);do for(var H=Re.pop();H!=null;)h.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Re.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;while(Re.length>0);break;case se.FOLLOWINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.nextSibling;H!=null;H=H.nextSibling)h.nodeTest.matches(H,k)&&V.push(H);break;case se.NAMESPACE:var Me={};if(k.contextNode.nodeType==C.ELEMENT_NODE){Me.xml=new ln("xml",null,_.XML_NAMESPACE_URI,k.contextNode);for(var H=k.contextNode;H!=null&&H.nodeType==C.ELEMENT_NODE;H=H.parentNode)for(var fe=0;fe<H.attributes.length;fe++){var it=H.attributes.item(fe),we=Ae(it);we!=null&&Me[we]==null&&(Me[we]=new ln(we,it,it.value,k.contextNode))}for(var we in Me){var q=Me[we];h.nodeTest.matches(q,k)&&V.push(q)}}break;case se.PARENT:H=null,k.contextNode!==k.virtualRoot&&(k.contextNode.nodeType==C.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode),H!=null&&h.nodeTest.matches(H,k)&&V.push(H);break;case se.PRECEDING:var Re;k.virtualRoot!=null?Re=[k.virtualRoot]:Re=[ye(k.contextNode)];e:for(;Re.length>0;)for(var H=Re.pop();H!=null;){if(H==k.contextNode)break e;h.nodeTest.matches(H,k)&&V.unshift(H),H.firstChild!=null?(Re.push(H.nextSibling),H=H.firstChild):H=H.nextSibling}break;case se.PRECEDINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.previousSibling;H!=null;H=H.previousSibling)h.nodeTest.matches(H,k)&&V.push(H);break;case se.SELF:h.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);break;default:}return V};function De(h,k,q){return de(h.predicates,k,Z.applyStep(h,k,q),d(ut,h.axis))}function He(h,k,q){return w(c(De.bind(null,q,h),k))}Z.applySteps=function(h,k,q){return o(He.bind(null,k),q,h)},Z.prototype.applyFilter=function(h,k){if(!this.filter)return{nodes:[h.contextNode]};var q=this.filter.evaluate(h);if(!Se.instance_of(q,Be)){if(this.filterPredicates!=null&&this.filterPredicates.length>0||this.locationPath!=null)throw new Error("Path expression filter must evaluate to a nodeset if predicates or location path are used");return{nonNodes:q}}return{nodes:de(this.filterPredicates||[],k,q.toUnsortedArray(),!1)}},Z.applyLocationPath=function(h,k,q){if(!h)return q;var V=h.absolute?[Z.getRoot(k,q)]:q;return Z.applySteps(h.steps,k,V)},Z.prototype.evaluate=function(h){var k=B(new mi,h),q=this.applyFilter(h,k);if("nonNodes"in q)return q.nonNodes;var V=new Be;return V.addArray(Z.applyLocationPath(this.locationPath,k,q.nodes)),V},Z.predicateMatches=function(h,k){var q=h.evaluate(k);return Se.instance_of(q,be)?k.contextPosition===q.numberValue():q.booleanValue()},Z.predicateString=function(h){return g("[","]",h.toString())},Z.predicatesString=function(h){return A("",c(Z.predicateString,h))},Z.prototype.toString=function(){if(this.filter!=null){var h=f(this.filter);return Se.instance_of(this.filter,xe)?g("'","'",h):this.filterPredicates!=null&&this.filterPredicates.length?g("(",")",h)+Z.predicatesString(this.filterPredicates):this.locationPath!=null?h+(this.locationPath.absolute?"":"/")+f(this.locationPath):h}return f(this.locationPath)},Z.getOwnerElement=function(h){if(h.ownerElement)return h.ownerElement;try{if(h.selectSingleNode)return h.selectSingleNode("..")}catch{}for(var k=h.nodeType==C.DOCUMENT_NODE?h:h.ownerDocument,q=k.getElementsByTagName("*"),V=0;V<q.length;V++)for(var H=q.item(V),W=H.attributes,fe=0;fe<W.length;fe++){var Me=W.item(fe);if(Me===h)return H}return null},Ue.prototype=new Object,Ue.prototype.constructor=Ue,Ue.superclass=Object.prototype;function Ue(h,k){arguments.length>0&&this.init(h,k)}Ue.prototype.init=function(h,k){this.absolute=h,this.steps=k},Ue.prototype.toString=function(){return(this.absolute?"/":"")+c(f,this.steps).join("/")},se.prototype=new Object,se.prototype.constructor=se,se.superclass=Object.prototype;function se(h,k,q){arguments.length>0&&this.init(h,k,q)}se.prototype.init=function(h,k,q){this.axis=h,this.nodeTest=k,this.predicates=q},se.prototype.toString=function(){return se.STEPNAMES[this.axis]+"::"+this.nodeTest.toString()+Z.predicatesString(this.predicates)},se.ANCESTOR=0,se.ANCESTORORSELF=1,se.ATTRIBUTE=2,se.CHILD=3,se.DESCENDANT=4,se.DESCENDANTORSELF=5,se.FOLLOWING=6,se.FOLLOWINGSIBLING=7,se.NAMESPACE=8,se.PARENT=9,se.PRECEDING=10,se.PRECEDINGSIBLING=11,se.SELF=12,se.STEPNAMES=o(function(h,k){return h[k[0]]=k[1],h},{},[[se.ANCESTOR,"ancestor"],[se.ANCESTORORSELF,"ancestor-or-self"],[se.ATTRIBUTE,"attribute"],[se.CHILD,"child"],[se.DESCENDANT,"descendant"],[se.DESCENDANTORSELF,"descendant-or-self"],[se.FOLLOWING,"following"],[se.FOLLOWINGSIBLING,"following-sibling"],[se.NAMESPACE,"namespace"],[se.PARENT,"parent"],[se.PRECEDING,"preceding"],[se.PRECEDINGSIBLING,"preceding-sibling"],[se.SELF,"self"]]);var ut=[se.ANCESTOR,se.ANCESTORORSELF,se.PARENT,se.PRECEDING,se.PRECEDINGSIBLING];ce.prototype=new Object,ce.prototype.constructor=ce,ce.superclass=Object.prototype;function ce(h,k){arguments.length>0&&this.init(h,k)}ce.prototype.init=function(h,k){this.type=h,this.value=k},ce.prototype.toString=function(){return"<unknown nodetest type>"},ce.prototype.matches=function(h,k){console.warn("unknown node test type")},ce.NAMETESTANY=0,ce.NAMETESTPREFIXANY=1,ce.NAMETESTQNAME=2,ce.COMMENT=3,ce.TEXT=4,ce.PI=5,ce.NODE=6,ce.isNodeType=function(h){return function(k){return d(h,k.nodeType)}},ce.makeNodeTestType=function(h,k,q){var V=q||function(){};return V.prototype=new ce(h),V.prototype.constructor=V,B(V.prototype,k),V},ce.makeNodeTypeTest=function(h,k,q){return new(ce.makeNodeTestType(h,{matches:ce.isNodeType(k),toString:u(q)}))},ce.hasPrefix=function(h){return h.prefix||(h.nodeName||h.tagName).indexOf(":")!==-1},ce.isElementOrAttribute=ce.isNodeType([1,2]),ce.nameSpaceMatches=function(h,k,q){var V=q.namespaceURI||"";if(!h)return!V||k.allowAnyNamespaceForNoPrefix&&!ce.hasPrefix(q);var H=k.namespaceResolver.getNamespace(h,k.expressionContextNode);if(H==null)throw new Error("Cannot resolve QName "+h);return H===V},ce.localNameMatches=function(h,k,q){var V=q.localName||q.nodeName;return k.caseInsensitive?h.toLowerCase()===V.toLowerCase():h===V},ce.NameTestPrefixAny=ce.makeNodeTestType(ce.NAMETESTPREFIXANY,{matches:function(h,k){return ce.isElementOrAttribute(h)&&ce.nameSpaceMatches(this.prefix,k,h)},toString:function(){return this.prefix+":*"}},function(k){this.prefix=k}),ce.NameTestQName=ce.makeNodeTestType(ce.NAMETESTQNAME,{matches:function(h,k){return ce.isNodeType([C.ELEMENT_NODE,C.ATTRIBUTE_NODE,C.NAMESPACE_NODE])(h)&&ce.nameSpaceMatches(this.prefix,k,h)&&ce.localNameMatches(this.localName,k,h)},toString:function(){return this.name}},function(k){var q=k.split(":");this.name=k,this.prefix=q.length>1?q[0]:null,this.localName=q[q.length>1?1:0]}),ce.PITest=ce.makeNodeTestType(ce.PI,{matches:function(h,k){return ce.isNodeType([C.PROCESSING_INSTRUCTION_NODE])(h)&&(h.target||h.nodeName)===this.name},toString:function(){return g('processing-instruction("','")',this.name)}},function(h){this.name=h}),ce.nameTestAny=ce.makeNodeTypeTest(ce.NAMETESTANY,[C.ELEMENT_NODE,C.ATTRIBUTE_NODE,C.NAMESPACE_NODE],"*"),ce.textTest=ce.makeNodeTypeTest(ce.TEXT,[C.TEXT_NODE,C.CDATA_SECTION_NODE],"text()"),ce.commentTest=ce.makeNodeTypeTest(ce.COMMENT,[C.COMMENT_NODE],"comment()"),ce.nodeTest=ce.makeNodeTypeTest(ce.NODE,[C.ELEMENT_NODE,C.ATTRIBUTE_NODE,C.TEXT_NODE,C.CDATA_SECTION_NODE,C.PROCESSING_INSTRUCTION_NODE,C.COMMENT_NODE,C.DOCUMENT_NODE],"node()"),ce.anyPiTest=ce.makeNodeTypeTest(ce.PI,[C.PROCESSING_INSTRUCTION_NODE],"processing-instruction()"),wr.prototype=new U,wr.prototype.constructor=wr,wr.superclass=U.prototype;function wr(h){arguments.length>0&&this.init(h)}wr.prototype.init=function(h){this.variable=h},wr.prototype.toString=function(){return"$"+this.variable},wr.prototype.evaluate=function(h){var k=Se.resolveQName(this.variable,h.namespaceResolver,h.contextNode,!1);if(k[0]==null)throw new Error("Cannot resolve QName "+fn);var q=h.variableResolver.getVariable(k[1],k[0]);if(!q)throw ki.fromMessage("Undeclared variable: "+this.toString());return q},Wr.prototype=new U,Wr.prototype.constructor=Wr,Wr.superclass=U.prototype;function Wr(h,k){arguments.length>0&&this.init(h,k)}Wr.prototype.init=function(h,k){this.functionName=h,this.arguments=k},Wr.prototype.toString=function(){for(var h=this.functionName+"(",k=0;k<this.arguments.length;k++)k>0&&(h+=", "),h+=this.arguments[k].toString();return h+")"},Wr.prototype.evaluate=function(h){var k=ur.getFunctionFromContext(this.functionName,h);if(!k)throw new Error("Unknown function "+this.functionName);var q=[h].concat(this.arguments);return k.apply(h.functionResolver.thisArg,q)};var mt=new Object;mt.equals=function(h,k){return h.equals(k)},mt.notequal=function(h,k){return h.notequal(k)},mt.lessthan=function(h,k){return h.lessthan(k)},mt.greaterthan=function(h,k){return h.greaterthan(k)},mt.lessthanorequal=function(h,k){return h.lessthanorequal(k)},mt.greaterthanorequal=function(h,k){return h.greaterthanorequal(k)},xe.prototype=new U,xe.prototype.constructor=xe,xe.superclass=U.prototype;function xe(h){arguments.length>0&&this.init(h)}xe.prototype.init=function(h){this.str=String(h)},xe.prototype.toString=function(){return this.str},xe.prototype.evaluate=function(h){return this},xe.prototype.string=function(){return this},xe.prototype.number=function(){return new be(this.str)},xe.prototype.bool=function(){return new Qe(this.str)},xe.prototype.nodeset=function(){throw new Error("Cannot convert string to nodeset")},xe.prototype.stringValue=function(){return this.str},xe.prototype.numberValue=function(){return this.number().numberValue()},xe.prototype.booleanValue=function(){return this.bool().booleanValue()},xe.prototype.equals=function(h){return Se.instance_of(h,Qe)?this.bool().equals(h):Se.instance_of(h,be)?this.number().equals(h):Se.instance_of(h,Be)?h.compareWithString(this,mt.equals):new Qe(this.str==h.str)},xe.prototype.notequal=function(h){return Se.instance_of(h,Qe)?this.bool().notequal(h):Se.instance_of(h,be)?this.number().notequal(h):Se.instance_of(h,Be)?h.compareWithString(this,mt.notequal):new Qe(this.str!=h.str)},xe.prototype.lessthan=function(h){return this.number().lessthan(h)},xe.prototype.greaterthan=function(h){return this.number().greaterthan(h)},xe.prototype.lessthanorequal=function(h){return this.number().lessthanorequal(h)},xe.prototype.greaterthanorequal=function(h){return this.number().greaterthanorequal(h)},be.prototype=new U,be.prototype.constructor=be,be.superclass=U.prototype;function be(h){arguments.length>0&&this.init(h)}be.prototype.init=function(h){this.num=typeof h=="string"?this.parse(h):Number(h)},be.prototype.numberFormat=/^\s*-?[0-9]*\.?[0-9]+\s*$/,be.prototype.parse=function(h){return this.numberFormat.test(h)?parseFloat(h):Number.NaN};function cn(h){for(var k=h.split("e-"),q=k[0].replace(".",""),V=Number(k[1]),H=0;H<V-1;H+=1)q="0"+q;return"0."+q}function eo(h){for(var k=h.split("e"),q=k[0].replace(".",""),V=Number(k[1]),H=V+1-q.length,W=0;W<H;W+=1)q+="0";return q}be.prototype.toString=function(){var h=this.num.toString();return h.indexOf("e-")!==-1?cn(h):h.indexOf("e")!==-1?eo(h):h},be.prototype.evaluate=function(h){return this},be.prototype.string=function(){return new xe(this.toString())},be.prototype.number=function(){return this},be.prototype.bool=function(){return new Qe(this.num)},be.prototype.nodeset=function(){throw new Error("Cannot convert number to nodeset")},be.prototype.stringValue=function(){return this.string().stringValue()},be.prototype.numberValue=function(){return this.num},be.prototype.booleanValue=function(){return this.bool().booleanValue()},be.prototype.negate=function(){return new be(-this.num)},be.prototype.equals=function(h){return Se.instance_of(h,Qe)?this.bool().equals(h):Se.instance_of(h,xe)?this.equals(h.number()):Se.instance_of(h,Be)?h.compareWithNumber(this,mt.equals):new Qe(this.num==h.num)},be.prototype.notequal=function(h){return Se.instance_of(h,Qe)?this.bool().notequal(h):Se.instance_of(h,xe)?this.notequal(h.number()):Se.instance_of(h,Be)?h.compareWithNumber(this,mt.notequal):new Qe(this.num!=h.num)},be.prototype.lessthan=function(h){return Se.instance_of(h,Be)?h.compareWithNumber(this,mt.greaterthan):Se.instance_of(h,Qe)||Se.instance_of(h,xe)?this.lessthan(h.number()):new Qe(this.num<h.num)},be.prototype.greaterthan=function(h){return Se.instance_of(h,Be)?h.compareWithNumber(this,mt.lessthan):Se.instance_of(h,Qe)||Se.instance_of(h,xe)?this.greaterthan(h.number()):new Qe(this.num>h.num)},be.prototype.lessthanorequal=function(h){return Se.instance_of(h,Be)?h.compareWithNumber(this,mt.greaterthanorequal):Se.instance_of(h,Qe)||Se.instance_of(h,xe)?this.lessthanorequal(h.number()):new Qe(this.num<=h.num)},be.prototype.greaterthanorequal=function(h){return Se.instance_of(h,Be)?h.compareWithNumber(this,mt.lessthanorequal):Se.instance_of(h,Qe)||Se.instance_of(h,xe)?this.greaterthanorequal(h.number()):new Qe(this.num>=h.num)},be.prototype.plus=function(h){return new be(this.num+h.num)},be.prototype.minus=function(h){return new be(this.num-h.num)},be.prototype.multiply=function(h){return new be(this.num*h.num)},be.prototype.div=function(h){return new be(this.num/h.num)},be.prototype.mod=function(h){return new be(this.num%h.num)},Qe.prototype=new U,Qe.prototype.constructor=Qe,Qe.superclass=U.prototype;function Qe(h){arguments.length>0&&this.init(h)}Qe.prototype.init=function(h){this.b=!!h},Qe.prototype.toString=function(){return this.b.toString()},Qe.prototype.evaluate=function(h){return this},Qe.prototype.string=function(){return new xe(this.b)},Qe.prototype.number=function(){return new be(this.b)},Qe.prototype.bool=function(){return this},Qe.prototype.nodeset=function(){throw new Error("Cannot convert boolean to nodeset")},Qe.prototype.stringValue=function(){return this.string().stringValue()},Qe.prototype.numberValue=function(){return this.number().numberValue()},Qe.prototype.booleanValue=function(){return this.b},Qe.prototype.not=function(){return new Qe(!this.b)},Qe.prototype.equals=function(h){return Se.instance_of(h,xe)||Se.instance_of(h,be)?this.equals(h.bool()):Se.instance_of(h,Be)?h.compareWithBoolean(this,mt.equals):new Qe(this.b==h.b)},Qe.prototype.notequal=function(h){return Se.instance_of(h,xe)||Se.instance_of(h,be)?this.notequal(h.bool()):Se.instance_of(h,Be)?h.compareWithBoolean(this,mt.notequal):new Qe(this.b!=h.b)},Qe.prototype.lessthan=function(h){return this.number().lessthan(h)},Qe.prototype.greaterthan=function(h){return this.number().greaterthan(h)},Qe.prototype.lessthanorequal=function(h){return this.number().lessthanorequal(h)},Qe.prototype.greaterthanorequal=function(h){return this.number().greaterthanorequal(h)},Qe.true_=new Qe(!0),Qe.false_=new Qe(!1),qt.prototype=new Object,qt.prototype.constructor=qt,qt.superclass=Object.prototype;function qt(h){this.init(h)}qt.prototype.init=function(h){this.left=null,this.right=null,this.node=h,this.depth=1},qt.prototype.balance=function(){var h=this.left==null?0:this.left.depth,k=this.right==null?0:this.right.depth;if(h>k+1){var q=this.left.left==null?0:this.left.left.depth,V=this.left.right==null?0:this.left.right.depth;q<V&&this.left.rotateRR(),this.rotateLL()}else if(h+1<k){var H=this.right.right==null?0:this.right.right.depth,W=this.right.left==null?0:this.right.left.depth;W>H&&this.right.rotateLL(),this.rotateRR()}},qt.prototype.rotateLL=function(){var h=this.node,k=this.right;this.node=this.left.node,this.right=this.left,this.left=this.left.left,this.right.left=this.right.right,this.right.right=k,this.right.node=h,this.right.updateInNewLocation(),this.updateInNewLocation()},qt.prototype.rotateRR=function(){var h=this.node,k=this.left;this.node=this.right.node,this.left=this.right,this.right=this.right.right,this.left.right=this.left.left,this.left.left=k,this.left.node=h,this.left.updateInNewLocation(),this.updateInNewLocation()},qt.prototype.updateInNewLocation=function(){this.getDepthFromChildren()},qt.prototype.getDepthFromChildren=function(){this.depth=this.node==null?0:1,this.left!=null&&(this.depth=this.left.depth+1),this.right!=null&&this.depth<=this.right.depth&&(this.depth=this.right.depth+1)};function Ws(h,k){if(h===k)return 0;if(h.compareDocumentPosition){var q=h.compareDocumentPosition(k);return q&1||q&10?1:q&20?-1:0}for(var V=0,H=0,W=h;W!=null;W=W.parentNode||W.ownerElement)V++;for(var fe=k;fe!=null;fe=fe.parentNode||fe.ownerElement)H++;if(V>H){for(;V>H;)h=h.parentNode||h.ownerElement,V--;if(h===k)return 1}else if(H>V){for(;H>V;)k=k.parentNode||k.ownerElement,H--;if(h===k)return-1}for(var Me=h.parentNode||h.ownerElement,it=k.parentNode||k.ownerElement;Me!==it;)h=Me,k=it,Me=h.parentNode||h.ownerElement,it=k.parentNode||k.ownerElement;var we=pd(h),Re=pd(k);if(we&&!Re)return-1;if(!we&&Re)return 1;if(h.isXPathNamespace){if(h.nodeValue===_.XML_NAMESPACE_URI||!k.isXPathNamespace)return-1;if(k.nodeValue===_.XML_NAMESPACE_URI)return 1}else if(k.isXPathNamespace)return 1;if(Me)for(var On=we?Me.attributes:Me.childNodes,Xs=On.length,Zs=h.baseNode||h,ea=k.baseNode||k,un=0;un<Xs;un+=1){var ls=On[un];if(ls===Zs)return-1;if(ls===ea)return 1}throw new Error("Unexpected: could not determine node order")}qt.prototype.add=function(h){if(h===this.node)return!1;var k=Ws(h,this.node),q=!1;return k==-1?this.left==null?(this.left=new qt(h),q=!0):(q=this.left.add(h),q&&this.balance()):k==1&&(this.right==null?(this.right=new qt(h),q=!0):(q=this.right.add(h),q&&this.balance())),q&&this.getDepthFromChildren(),q},Be.prototype=new U,Be.prototype.constructor=Be,Be.superclass=U.prototype;function Be(){this.init()}Be.prototype.init=function(){this.tree=null,this.nodes=[],this.size=0},Be.prototype.toString=function(){var h=this.first();return h==null?"":this.stringForNode(h)},Be.prototype.evaluate=function(h){return this},Be.prototype.string=function(){return new xe(this.toString())},Be.prototype.stringValue=function(){return this.toString()},Be.prototype.number=function(){return new be(this.string())},Be.prototype.numberValue=function(){return Number(this.string())},Be.prototype.bool=function(){return new Qe(this.booleanValue())},Be.prototype.booleanValue=function(){return!!this.size},Be.prototype.nodeset=function(){return this},Be.prototype.stringForNode=function(h){return h.nodeType==C.DOCUMENT_NODE||h.nodeType==C.ELEMENT_NODE||h.nodeType===C.DOCUMENT_FRAGMENT_NODE?this.stringForContainerNode(h):h.nodeType===C.ATTRIBUTE_NODE?h.value||h.nodeValue:h.isNamespaceNode?h.namespace:h.nodeValue},Be.prototype.stringForContainerNode=function(h){for(var k="",q=h.firstChild;q!=null;q=q.nextSibling){var V=q.nodeType;(V===1||V===3||V===4||V===9||V===11)&&(k+=this.stringForNode(q))}return k},Be.prototype.buildTree=function(){if(!this.tree&&this.nodes.length){this.tree=new qt(this.nodes[0]);for(var h=1;h<this.nodes.length;h+=1)this.tree.add(this.nodes[h])}return this.tree},Be.prototype.first=function(){var h=this.buildTree();if(h==null)return null;for(;h.left!=null;)h=h.left;return h.node},Be.prototype.add=function(h){for(var k=0;k<this.nodes.length;k+=1)if(h===this.nodes[k])return;this.tree=null,this.nodes.push(h),this.size+=1},Be.prototype.addArray=function(h){var k=this;a(function(q){k.add(q)},h)},Be.prototype.toArray=function(){var h=[];return this.toArrayRec(this.buildTree(),h),h},Be.prototype.toArrayRec=function(h,k){h!=null&&(this.toArrayRec(h.left,k),k.push(h.node),this.toArrayRec(h.right,k))},Be.prototype.toUnsortedArray=function(){return this.nodes.slice()},Be.prototype.compareWithString=function(h,k){for(var q=this.toUnsortedArray(),V=0;V<q.length;V++){var H=q[V],W=new xe(this.stringForNode(H)),fe=k(W,h);if(fe.booleanValue())return fe}return new Qe(!1)},Be.prototype.compareWithNumber=function(h,k){for(var q=this.toUnsortedArray(),V=0;V<q.length;V++){var H=q[V],W=new be(this.stringForNode(H)),fe=k(W,h);if(fe.booleanValue())return fe}return new Qe(!1)},Be.prototype.compareWithBoolean=function(h,k){return k(this.bool(),h)},Be.prototype.compareWithNodeSet=function(h,k){for(var q=this.toUnsortedArray(),V=function(Me,it){return k(it,Me)},H=0;H<q.length;H++){var W=new xe(this.stringForNode(q[H])),fe=h.compareWithString(W,V);if(fe.booleanValue())return fe}return new Qe(!1)},Be.compareWith=s(function(h,k){return Se.instance_of(k,xe)?this.compareWithString(k,h):Se.instance_of(k,be)?this.compareWithNumber(k,h):Se.instance_of(k,Qe)?this.compareWithBoolean(k,h):this.compareWithNodeSet(k,h)}),Be.prototype.equals=Be.compareWith(mt.equals),Be.prototype.notequal=Be.compareWith(mt.notequal),Be.prototype.lessthan=Be.compareWith(mt.lessthan),Be.prototype.greaterthan=Be.compareWith(mt.greaterthan),Be.prototype.lessthanorequal=Be.compareWith(mt.lessthanorequal),Be.prototype.greaterthanorequal=Be.compareWith(mt.greaterthanorequal),Be.prototype.union=function(h){var k=new Be;return k.addArray(this.toUnsortedArray()),k.addArray(h.toUnsortedArray()),k},ln.prototype=new Object,ln.prototype.constructor=ln,ln.superclass=Object.prototype;function ln(h,k,q,V){this.isXPathNamespace=!0,this.baseNode=k,this.ownerDocument=V.ownerDocument,this.nodeName=h,this.prefix=h,this.localName=h,this.namespaceURI=null,this.nodeValue=q,this.ownerElement=V,this.nodeType=C.NAMESPACE_NODE}ln.prototype.toString=function(){return'{ "'+this.prefix+'", "'+this.namespaceURI+'" }'},mi.prototype=new Object,mi.prototype.constructor=mi,mi.superclass=Object.prototype;function mi(h,k,q){this.variableResolver=h??new _r,this.namespaceResolver=k??new xr,this.functionResolver=q??new ur}mi.prototype.extend=function(h){return B(new mi,this,h)},_r.prototype=new Object,_r.prototype.constructor=_r,_r.superclass=Object.prototype;function _r(){}_r.prototype.getVariable=function(h,k){return null},ur.prototype=new Object,ur.prototype.constructor=ur,ur.superclass=Object.prototype;function ur(h){this.thisArg=h??Pe,this.functions=new Object,this.addStandardFunctions()}ur.prototype.addStandardFunctions=function(){this.functions["{}last"]=Pe.last,this.functions["{}position"]=Pe.position,this.functions["{}count"]=Pe.count,this.functions["{}id"]=Pe.id,this.functions["{}local-name"]=Pe.localName,this.functions["{}namespace-uri"]=Pe.namespaceURI,this.functions["{}name"]=Pe.name,this.functions["{}string"]=Pe.string,this.functions["{}concat"]=Pe.concat,this.functions["{}starts-with"]=Pe.startsWith,this.functions["{}contains"]=Pe.contains,this.functions["{}substring-before"]=Pe.substringBefore,this.functions["{}substring-after"]=Pe.substringAfter,this.functions["{}substring"]=Pe.substring,this.functions["{}string-length"]=Pe.stringLength,this.functions["{}normalize-space"]=Pe.normalizeSpace,this.functions["{}translate"]=Pe.translate,this.functions["{}boolean"]=Pe.boolean_,this.functions["{}not"]=Pe.not,this.functions["{}true"]=Pe.true_,this.functions["{}false"]=Pe.false_,this.functions["{}lang"]=Pe.lang,this.functions["{}number"]=Pe.number,this.functions["{}sum"]=Pe.sum,this.functions["{}floor"]=Pe.floor,this.functions["{}ceiling"]=Pe.ceiling,this.functions["{}round"]=Pe.round},ur.prototype.addFunction=function(h,k,q){this.functions["{"+h+"}"+k]=q},ur.getFunctionFromContext=function(h,k){var q=Se.resolveQName(h,k.namespaceResolver,k.contextNode,!1);if(q[0]===null)throw new Error("Cannot resolve QName "+name);return k.functionResolver.getFunction(q[1],q[0])},ur.prototype.getFunction=function(h,k){return this.functions["{"+k+"}"+h]},xr.prototype=new Object,xr.prototype.constructor=xr,xr.superclass=Object.prototype;function xr(){}xr.prototype.getNamespace=function(h,k){if(h=="xml")return _.XML_NAMESPACE_URI;if(h=="xmlns")return _.XMLNS_NAMESPACE_URI;for(k.nodeType==C.DOCUMENT_NODE?k=k.documentElement:k.nodeType==C.ATTRIBUTE_NODE?k=Z.getOwnerElement(k):k.nodeType!=C.ELEMENT_NODE&&(k=k.parentNode);k!=null&&k.nodeType==C.ELEMENT_NODE;){for(var q=k.attributes,V=0;V<q.length;V++){var H=q.item(V),W=H.name||H.nodeName;if(W==="xmlns"&&h===""||W==="xmlns:"+h)return String(H.value||H.nodeValue)}k=k.parentNode}return null};var Pe=new Object;Pe.last=function(h){if(arguments.length!=1)throw new Error("Function last expects ()");return new be(h.contextSize)},Pe.position=function(h){if(arguments.length!=1)throw new Error("Function position expects ()");return new be(h.contextPosition)},Pe.count=function(){var h=arguments[0],k;if(arguments.length!=2||!Se.instance_of(k=arguments[1].evaluate(h),Be))throw new Error("Function count expects (node-set)");return new be(k.size)},Pe.id=function(){var h=arguments[0],k;if(arguments.length!=2)throw new Error("Function id expects (object)");k=arguments[1].evaluate(h),Se.instance_of(k,Be)?k=k.toArray().join(" "):k=k.stringValue();for(var q=k.split(/[\x0d\x0a\x09\x20]+/),V=0,H=new Be,W=h.contextNode.nodeType==C.DOCUMENT_NODE?h.contextNode:h.contextNode.ownerDocument,fe=0;fe<q.length;fe++){var Me;W.getElementById?Me=W.getElementById(q[fe]):Me=Se.getElementById(W,q[fe]),Me!=null&&(H.add(Me),V++)}return H},Pe.localName=function(h,k){var q;if(arguments.length==1)q=h.contextNode;else if(arguments.length==2)q=k.evaluate(h).first();else throw new Error("Function local-name expects (node-set?)");return q==null?new xe(""):new xe(q.localName||q.baseName||q.target||q.nodeName||"")},Pe.namespaceURI=function(){var h=arguments[0],k;if(arguments.length==1)k=h.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(h).first();else throw new Error("Function namespace-uri expects (node-set?)");return k==null?new xe(""):new xe(k.namespaceURI||"")},Pe.name=function(){var h=arguments[0],k;if(arguments.length==1)k=h.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(h).first();else throw new Error("Function name expects (node-set?)");return k==null?new xe(""):k.nodeType==C.ELEMENT_NODE?new xe(k.nodeName):k.nodeType==C.ATTRIBUTE_NODE?new xe(k.name||k.nodeName):k.nodeType===C.PROCESSING_INSTRUCTION_NODE?new xe(k.target||k.nodeName):k.localName==null?new xe(""):new xe(k.localName)},Pe.string=function(){var h=arguments[0];if(arguments.length==1)return new xe(Be.prototype.stringForNode(h.contextNode));if(arguments.length==2)return arguments[1].evaluate(h).string();throw new Error("Function string expects (object?)")},Pe.concat=function(h){if(arguments.length<3)throw new Error("Function concat expects (string, string[, string]*)");for(var k="",q=1;q<arguments.length;q++)k+=arguments[q].evaluate(h).stringValue();return new xe(k)},Pe.startsWith=function(){var h=arguments[0];if(arguments.length!=3)throw new Error("Function startsWith expects (string, string)");var k=arguments[1].evaluate(h).stringValue(),q=arguments[2].evaluate(h).stringValue();return new Qe(k.substring(0,q.length)==q)},Pe.contains=function(){var h=arguments[0];if(arguments.length!=3)throw new Error("Function contains expects (string, string)");var k=arguments[1].evaluate(h).stringValue(),q=arguments[2].evaluate(h).stringValue();return new Qe(k.indexOf(q)!==-1)},Pe.substringBefore=function(){var h=arguments[0];if(arguments.length!=3)throw new Error("Function substring-before expects (string, string)");var k=arguments[1].evaluate(h).stringValue(),q=arguments[2].evaluate(h).stringValue();return new xe(k.substring(0,k.indexOf(q)))},Pe.substringAfter=function(){var h=arguments[0];if(arguments.length!=3)throw new Error("Function substring-after expects (string, string)");var k=arguments[1].evaluate(h).stringValue(),q=arguments[2].evaluate(h).stringValue();if(q.length==0)return new xe(k);var V=k.indexOf(q);return V==-1?new xe(""):new xe(k.substring(V+q.length))},Pe.substring=function(){var h=arguments[0];if(!(arguments.length==3||arguments.length==4))throw new Error("Function substring expects (string, number, number?)");var k=arguments[1].evaluate(h).stringValue(),q=Math.round(arguments[2].evaluate(h).numberValue())-1,V=arguments.length==4?q+Math.round(arguments[3].evaluate(h).numberValue()):void 0;return new xe(k.substring(q,V))},Pe.stringLength=function(){var h=arguments[0],k;if(arguments.length==1)k=Be.prototype.stringForNode(h.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(h).stringValue();else throw new Error("Function string-length expects (string?)");return new be(k.length)},Pe.normalizeSpace=function(){var h=arguments[0],k;if(arguments.length==1)k=Be.prototype.stringForNode(h.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(h).stringValue();else throw new Error("Function normalize-space expects (string?)");for(var q=0,V=k.length-1;Se.isSpace(k.charCodeAt(V));)V--;for(var H="";q<=V&&Se.isSpace(k.charCodeAt(q));)q++;for(;q<=V;)if(Se.isSpace(k.charCodeAt(q)))for(H+=" ";q<=V&&Se.isSpace(k.charCodeAt(q));)q++;else H+=k.charAt(q),q++;return new xe(H)},Pe.translate=function(h,k,q,V){if(arguments.length!=4)throw new Error("Function translate expects (string, string, string)");var H=k.evaluate(h).stringValue(),W=q.evaluate(h).stringValue(),fe=V.evaluate(h).stringValue(),Me=o(function(we,Re,On){return Re in we||(we[Re]=On>fe.length?"":fe[On]),we},{},W),it=A("",c(function(we){return we in Me?Me[we]:we},H));return new xe(it)},Pe.boolean_=function(){var h=arguments[0];if(arguments.length!=2)throw new Error("Function boolean expects (object)");return arguments[1].evaluate(h).bool()},Pe.not=function(h,k){if(arguments.length!=2)throw new Error("Function not expects (object)");return k.evaluate(h).bool().not()},Pe.true_=function(){if(arguments.length!=1)throw new Error("Function true expects ()");return Qe.true_},Pe.false_=function(){if(arguments.length!=1)throw new Error("Function false expects ()");return Qe.false_},Pe.lang=function(){var h=arguments[0];if(arguments.length!=2)throw new Error("Function lang expects (string)");for(var k,q=h.contextNode;q!=null&&q.nodeType!=C.DOCUMENT_NODE;q=q.parentNode){var V=q.getAttributeNS(_.XML_NAMESPACE_URI,"lang");if(V!=null){k=String(V);break}}if(k==null)return Qe.false_;var H=arguments[1].evaluate(h).stringValue();return new Qe(k.substring(0,H.length)==H&&(k.length==H.length||k.charAt(H.length)=="-"))},Pe.number=function(){var h=arguments[0];if(!(arguments.length==1||arguments.length==2))throw new Error("Function number expects (object?)");return arguments.length==1?new be(Be.prototype.stringForNode(h.contextNode)):arguments[1].evaluate(h).number()},Pe.sum=function(){var h=arguments[0],k;if(arguments.length!=2||!Se.instance_of(k=arguments[1].evaluate(h),Be))throw new Error("Function sum expects (node-set)");k=k.toUnsortedArray();for(var q=0,V=0;V<k.length;V++)q+=new be(Be.prototype.stringForNode(k[V])).numberValue();return new be(q)},Pe.floor=function(){var h=arguments[0];if(arguments.length!=2)throw new Error("Function floor expects (number)");return new be(Math.floor(arguments[1].evaluate(h).numberValue()))},Pe.ceiling=function(){var h=arguments[0];if(arguments.length!=2)throw new Error("Function ceiling expects (number)");return new be(Math.ceil(arguments[1].evaluate(h).numberValue()))},Pe.round=function(){var h=arguments[0];if(arguments.length!=2)throw new Error("Function round expects (number)");return new be(Math.round(arguments[1].evaluate(h).numberValue()))};var Se=new Object,pd=function(h){return h&&(h.nodeType===C.ATTRIBUTE_NODE||h.ownerElement||h.isXPathNamespace)};Se.splitQName=function(h){var k=h.indexOf(":");return k==-1?[null,h]:[h.substring(0,k),h.substring(k+1)]},Se.resolveQName=function(h,k,q,V){var H=Se.splitQName(h);return H[0]!=null?H[0]=k.getNamespace(H[0],q):V?(H[0]=k.getNamespace("",q),H[0]==null&&(H[0]="")):H[0]="",H},Se.isSpace=function(h){return h==9||h==13||h==10||h==32},Se.isLetter=function(h){return h>=65&&h<=90||h>=97&&h<=122||h>=192&&h<=214||h>=216&&h<=246||h>=248&&h<=255||h>=256&&h<=305||h>=308&&h<=318||h>=321&&h<=328||h>=330&&h<=382||h>=384&&h<=451||h>=461&&h<=496||h>=500&&h<=501||h>=506&&h<=535||h>=592&&h<=680||h>=699&&h<=705||h==902||h>=904&&h<=906||h==908||h>=910&&h<=929||h>=931&&h<=974||h>=976&&h<=982||h==986||h==988||h==990||h==992||h>=994&&h<=1011||h>=1025&&h<=1036||h>=1038&&h<=1103||h>=1105&&h<=1116||h>=1118&&h<=1153||h>=1168&&h<=1220||h>=1223&&h<=1224||h>=1227&&h<=1228||h>=1232&&h<=1259||h>=1262&&h<=1269||h>=1272&&h<=1273||h>=1329&&h<=1366||h==1369||h>=1377&&h<=1414||h>=1488&&h<=1514||h>=1520&&h<=1522||h>=1569&&h<=1594||h>=1601&&h<=1610||h>=1649&&h<=1719||h>=1722&&h<=1726||h>=1728&&h<=1742||h>=1744&&h<=1747||h==1749||h>=1765&&h<=1766||h>=2309&&h<=2361||h==2365||h>=2392&&h<=2401||h>=2437&&h<=2444||h>=2447&&h<=2448||h>=2451&&h<=2472||h>=2474&&h<=2480||h==2482||h>=2486&&h<=2489||h>=2524&&h<=2525||h>=2527&&h<=2529||h>=2544&&h<=2545||h>=2565&&h<=2570||h>=2575&&h<=2576||h>=2579&&h<=2600||h>=2602&&h<=2608||h>=2610&&h<=2611||h>=2613&&h<=2614||h>=2616&&h<=2617||h>=2649&&h<=2652||h==2654||h>=2674&&h<=2676||h>=2693&&h<=2699||h==2701||h>=2703&&h<=2705||h>=2707&&h<=2728||h>=2730&&h<=2736||h>=2738&&h<=2739||h>=2741&&h<=2745||h==2749||h==2784||h>=2821&&h<=2828||h>=2831&&h<=2832||h>=2835&&h<=2856||h>=2858&&h<=2864||h>=2866&&h<=2867||h>=2870&&h<=2873||h==2877||h>=2908&&h<=2909||h>=2911&&h<=2913||h>=2949&&h<=2954||h>=2958&&h<=2960||h>=2962&&h<=2965||h>=2969&&h<=2970||h==2972||h>=2974&&h<=2975||h>=2979&&h<=2980||h>=2984&&h<=2986||h>=2990&&h<=2997||h>=2999&&h<=3001||h>=3077&&h<=3084||h>=3086&&h<=3088||h>=3090&&h<=3112||h>=3114&&h<=3123||h>=3125&&h<=3129||h>=3168&&h<=3169||h>=3205&&h<=3212||h>=3214&&h<=3216||h>=3218&&h<=3240||h>=3242&&h<=3251||h>=3253&&h<=3257||h==3294||h>=3296&&h<=3297||h>=3333&&h<=3340||h>=3342&&h<=3344||h>=3346&&h<=3368||h>=3370&&h<=3385||h>=3424&&h<=3425||h>=3585&&h<=3630||h==3632||h>=3634&&h<=3635||h>=3648&&h<=3653||h>=3713&&h<=3714||h==3716||h>=3719&&h<=3720||h==3722||h==3725||h>=3732&&h<=3735||h>=3737&&h<=3743||h>=3745&&h<=3747||h==3749||h==3751||h>=3754&&h<=3755||h>=3757&&h<=3758||h==3760||h>=3762&&h<=3763||h==3773||h>=3776&&h<=3780||h>=3904&&h<=3911||h>=3913&&h<=3945||h>=4256&&h<=4293||h>=4304&&h<=4342||h==4352||h>=4354&&h<=4355||h>=4357&&h<=4359||h==4361||h>=4363&&h<=4364||h>=4366&&h<=4370||h==4412||h==4414||h==4416||h==4428||h==4430||h==4432||h>=4436&&h<=4437||h==4441||h>=4447&&h<=4449||h==4451||h==4453||h==4455||h==4457||h>=4461&&h<=4462||h>=4466&&h<=4467||h==4469||h==4510||h==4520||h==4523||h>=4526&&h<=4527||h>=4535&&h<=4536||h==4538||h>=4540&&h<=4546||h==4587||h==4592||h==4601||h>=7680&&h<=7835||h>=7840&&h<=7929||h>=7936&&h<=7957||h>=7960&&h<=7965||h>=7968&&h<=8005||h>=8008&&h<=8013||h>=8016&&h<=8023||h==8025||h==8027||h==8029||h>=8031&&h<=8061||h>=8064&&h<=8116||h>=8118&&h<=8124||h==8126||h>=8130&&h<=8132||h>=8134&&h<=8140||h>=8144&&h<=8147||h>=8150&&h<=8155||h>=8160&&h<=8172||h>=8178&&h<=8180||h>=8182&&h<=8188||h==8486||h>=8490&&h<=8491||h==8494||h>=8576&&h<=8578||h>=12353&&h<=12436||h>=12449&&h<=12538||h>=12549&&h<=12588||h>=44032&&h<=55203||h>=19968&&h<=40869||h==12295||h>=12321&&h<=12329},Se.isNCNameChar=function(h){return h>=48&&h<=57||h>=1632&&h<=1641||h>=1776&&h<=1785||h>=2406&&h<=2415||h>=2534&&h<=2543||h>=2662&&h<=2671||h>=2790&&h<=2799||h>=2918&&h<=2927||h>=3047&&h<=3055||h>=3174&&h<=3183||h>=3302&&h<=3311||h>=3430&&h<=3439||h>=3664&&h<=3673||h>=3792&&h<=3801||h>=3872&&h<=3881||h==46||h==45||h==95||Se.isLetter(h)||h>=768&&h<=837||h>=864&&h<=865||h>=1155&&h<=1158||h>=1425&&h<=1441||h>=1443&&h<=1465||h>=1467&&h<=1469||h==1471||h>=1473&&h<=1474||h==1476||h>=1611&&h<=1618||h==1648||h>=1750&&h<=1756||h>=1757&&h<=1759||h>=1760&&h<=1764||h>=1767&&h<=1768||h>=1770&&h<=1773||h>=2305&&h<=2307||h==2364||h>=2366&&h<=2380||h==2381||h>=2385&&h<=2388||h>=2402&&h<=2403||h>=2433&&h<=2435||h==2492||h==2494||h==2495||h>=2496&&h<=2500||h>=2503&&h<=2504||h>=2507&&h<=2509||h==2519||h>=2530&&h<=2531||h==2562||h==2620||h==2622||h==2623||h>=2624&&h<=2626||h>=2631&&h<=2632||h>=2635&&h<=2637||h>=2672&&h<=2673||h>=2689&&h<=2691||h==2748||h>=2750&&h<=2757||h>=2759&&h<=2761||h>=2763&&h<=2765||h>=2817&&h<=2819||h==2876||h>=2878&&h<=2883||h>=2887&&h<=2888||h>=2891&&h<=2893||h>=2902&&h<=2903||h>=2946&&h<=2947||h>=3006&&h<=3010||h>=3014&&h<=3016||h>=3018&&h<=3021||h==3031||h>=3073&&h<=3075||h>=3134&&h<=3140||h>=3142&&h<=3144||h>=3146&&h<=3149||h>=3157&&h<=3158||h>=3202&&h<=3203||h>=3262&&h<=3268||h>=3270&&h<=3272||h>=3274&&h<=3277||h>=3285&&h<=3286||h>=3330&&h<=3331||h>=3390&&h<=3395||h>=3398&&h<=3400||h>=3402&&h<=3405||h==3415||h==3633||h>=3636&&h<=3642||h>=3655&&h<=3662||h==3761||h>=3764&&h<=3769||h>=3771&&h<=3772||h>=3784&&h<=3789||h>=3864&&h<=3865||h==3893||h==3895||h==3897||h==3902||h==3903||h>=3953&&h<=3972||h>=3974&&h<=3979||h>=3984&&h<=3989||h==3991||h>=3993&&h<=4013||h>=4017&&h<=4023||h==4025||h>=8400&&h<=8412||h==8417||h>=12330&&h<=12335||h==12441||h==12442||h==183||h==720||h==721||h==903||h==1600||h==3654||h==3782||h==12293||h>=12337&&h<=12341||h>=12445&&h<=12446||h>=12540&&h<=12542},Se.coalesceText=function(h){for(var k=h.firstChild;k!=null;k=k.nextSibling)if(k.nodeType==C.TEXT_NODE||k.nodeType==C.CDATA_SECTION_NODE){var q=k.nodeValue,V=k;for(k=k.nextSibling;k!=null&&(k.nodeType==C.TEXT_NODE||k.nodeType==C.CDATA_SECTION_NODE);){q+=k.nodeValue;var H=k;k=k.nextSibling,H.parentNode.removeChild(H)}if(V.nodeType==C.CDATA_SECTION_NODE){var W=V.parentNode;if(V.nextSibling==null)W.removeChild(V),W.appendChild(W.ownerDocument.createTextNode(q));else{var fe=V.nextSibling;W.removeChild(V),W.insertBefore(W.ownerDocument.createTextNode(q),fe)}}else V.nodeValue=q;if(k==null)break}else k.nodeType==C.ELEMENT_NODE&&Se.coalesceText(k)},Se.instance_of=function(h,k){for(;h!=null;){if(h.constructor===k)return!0;if(h===Object)return!1;h=h.constructor.superclass}return!1},Se.getElementById=function(h,k){if(h.nodeType==C.ELEMENT_NODE&&(h.getAttribute("id")==k||h.getAttributeNS(null,"id")==k))return h;for(var q=h.firstChild;q!=null;q=q.nextSibling){var V=Se.getElementById(q,k);if(V!=null)return V}return null};var ki=(function(){function h(q,V){var H=V?": "+V.toString():"";switch(q){case k.INVALID_EXPRESSION_ERR:return"Invalid expression"+H;case k.TYPE_ERR:return"Type error"+H}return null}function k(q,V,H){var W=Error.call(this,h(q,V)||H);return W.code=q,W.exception=V,W}return k.prototype=Object.create(Error.prototype),k.prototype.constructor=k,k.superclass=Error,k.prototype.toString=function(){return this.message},k.fromMessage=function(q,V){return new k(null,V,q)},k.INVALID_EXPRESSION_ERR=51,k.TYPE_ERR=52,k})();Xr.prototype={},Xr.prototype.constructor=Xr,Xr.superclass=Object.prototype;function Xr(h,k,q){this.xpath=q.parse(h),this.context=new mi,this.context.namespaceResolver=new cs(k)}Xr.getOwnerDocument=function(h){return h.nodeType===C.DOCUMENT_NODE?h:h.ownerDocument},Xr.detectHtmlDom=function(h){if(!h)return!1;var k=Xr.getOwnerDocument(h);try{return k.implementation.hasFeature("HTML","2.0")}catch{return!0}},Xr.prototype.evaluate=function(h,k,q){this.context.expressionContextNode=h,this.context.caseInsensitive=Xr.detectHtmlDom(h);var V=this.xpath.evaluate(this.context);return new je(V,k)},cs.prototype={},cs.prototype.constructor=cs,cs.superclass=Object.prototype;function cs(h){this.xpathNSResolver=h}cs.prototype.getNamespace=function(h,k){return this.xpathNSResolver==null?null:this.xpathNSResolver.lookupNamespaceURI(h)},Nn.prototype={},Nn.prototype.constructor=Nn,Nn.superclass=Object.prototype;function Nn(h){this.node=h,this.namespaceResolver=new xr}Nn.prototype.lookupNamespaceURI=function(h){return this.namespaceResolver.getNamespace(h,this.node)},je.prototype={},je.prototype.constructor=je,je.superclass=Object.prototype;function je(h,k){switch(k==je.ANY_TYPE&&(h.constructor===xe?k=je.STRING_TYPE:h.constructor===be?k=je.NUMBER_TYPE:h.constructor===Qe?k=je.BOOLEAN_TYPE:h.constructor===Be&&(k=je.UNORDERED_NODE_ITERATOR_TYPE)),this.resultType=k,k){case je.NUMBER_TYPE:this.numberValue=h.numberValue();return;case je.STRING_TYPE:this.stringValue=h.stringValue();return;case je.BOOLEAN_TYPE:this.booleanValue=h.booleanValue();return;case je.ANY_UNORDERED_NODE_TYPE:case je.FIRST_ORDERED_NODE_TYPE:if(h.constructor===Be){this.singleNodeValue=h.first();return}break;case je.UNORDERED_NODE_ITERATOR_TYPE:case je.ORDERED_NODE_ITERATOR_TYPE:if(h.constructor===Be){this.invalidIteratorState=!1,this.nodes=h.toArray(),this.iteratorIndex=0;return}break;case je.UNORDERED_NODE_SNAPSHOT_TYPE:case je.ORDERED_NODE_SNAPSHOT_TYPE:if(h.constructor===Be){this.nodes=h.toArray(),this.snapshotLength=this.nodes.length;return}break}throw new ki(ki.TYPE_ERR)}je.prototype.iterateNext=function(){if(this.resultType!=je.UNORDERED_NODE_ITERATOR_TYPE&&this.resultType!=je.ORDERED_NODE_ITERATOR_TYPE)throw new ki(ki.TYPE_ERR);return this.nodes[this.iteratorIndex++]},je.prototype.snapshotItem=function(h){if(this.resultType!=je.UNORDERED_NODE_SNAPSHOT_TYPE&&this.resultType!=je.ORDERED_NODE_SNAPSHOT_TYPE)throw new ki(ki.TYPE_ERR);return this.nodes[h]},je.ANY_TYPE=0,je.NUMBER_TYPE=1,je.STRING_TYPE=2,je.BOOLEAN_TYPE=3,je.UNORDERED_NODE_ITERATOR_TYPE=4,je.ORDERED_NODE_ITERATOR_TYPE=5,je.UNORDERED_NODE_SNAPSHOT_TYPE=6,je.ORDERED_NODE_SNAPSHOT_TYPE=7,je.ANY_UNORDERED_NODE_TYPE=8,je.FIRST_ORDERED_NODE_TYPE=9;function Rc(h,k){h.createExpression=function(q,V){try{return new Xr(q,V,k)}catch(H){throw new ki(ki.INVALID_EXPRESSION_ERR,H)}},h.createNSResolver=function(q){return new Nn(q)},h.evaluate=function(q,V,H,W,fe){if(W<0||W>9)throw{code:0,toString:function(){return"Request type not supported"}};return h.createExpression(q,H,k).evaluate(V,W,fe)}}try{var dn=!0;try{document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("XPath",null)&&(dn=!1)}catch{}dn&&Rc(document,new x)}catch{}Rc(r,new x),(function(){var h=new x,k=new xr,q=new ur,V=new _r;function H(ge){return{getNamespace:function(ct,Zr){var qn=ge(ct,Zr);return qn||k.getNamespace(ct,Zr)}}}function W(ge){return H(ge.getNamespace.bind(ge))}function fe(ge){return H(function(ct){return ge[ct]})}function Me(ge){return ge&&typeof ge.getNamespace=="function"?W(ge):typeof ge=="function"?H(ge):typeof ge=="object"?fe(ge):k}function it(ge){if(ge===null||typeof ge>"u"||ge instanceof xe||ge instanceof Qe||ge instanceof be||ge instanceof Be)return ge;switch(typeof ge){case"string":return new xe(ge);case"boolean":return new Qe(ge);case"number":return new be(ge)}var ct=new Be;return ct.addArray([].concat(ge)),ct}function we(ge){return function(ct){var Zr=Array.prototype.slice.call(arguments,1).map(function(GC){return GC.evaluate(ct)}),qn=ge.apply(this,[].concat(ct,Zr));return it(qn)}}function Re(ge){return{getFunction:function(ct,Zr){var qn=ge(ct,Zr);return qn?we(qn):q.getFunction(ct,Zr)}}}function On(ge){return Re(ge.getFunction.bind(ge))}function Xs(ge){return Re(function(ct){return ge[ct]})}function Zs(ge){return ge&&typeof ge.getFunction=="function"?On(ge):typeof ge=="function"?Re(ge):typeof ge=="object"?Xs(ge):q}function ea(ge){return{getVariable:function(ct,Zr){var qn=ge(ct,Zr);return it(qn)}}}function un(ge){if(ge){if(typeof ge.getVariable=="function")return ea(ge.getVariable.bind(ge));if(typeof ge=="function")return ea(ge);if(typeof ge=="object")return ea(function(ct){return ge[ct]})}return V}function ls(ge,ct,Zr){ge in Zr&&(ct[ge]=Zr[ge])}function H0(ge){var ct=new mi;return ge?(ct.namespaceResolver=Me(ge.namespaces),ct.functionResolver=Zs(ge.functions),ct.variableResolver=un(ge.variables),ct.expressionContextNode=ge.node,ls("allowAnyNamespaceForNoPrefix",ct,ge),ls("isHtml",ct,ge)):ct.namespaceResolver=k,ct}function Pf(ge,ct){var Zr=H0(ct);return ge.evaluate(Zr)}var HC={evaluate:function(ge){return Pf(this.expression,ge)},evaluateNumber:function(ge){return this.evaluate(ge).numberValue()},evaluateString:function(ge){return this.evaluate(ge).stringValue()},evaluateBoolean:function(ge){return this.evaluate(ge).booleanValue()},evaluateNodeSet:function(ge){return this.evaluate(ge).nodeset()},select:function(ge){return this.evaluateNodeSet(ge).toArray()},select1:function(ge){return this.select(ge)[0]}};function KC(ge){var ct=h.parse(ge);return Object.create(HC,{expression:{value:ct}})}r.parse=KC})(),B(r,{XPath:_,XPathParser:x,XPathResult:je,Step:se,PathExpr:Z,NodeTest:ce,LocationPath:Ue,OrOperation:Q,AndOperation:v,BarOperation:ee,EqualsOperation:E,NotEqualOperation:P,LessThanOperation:N,GreaterThanOperation:j,LessThanOrEqualOperation:z,GreaterThanOrEqualOperation:L,PlusOperation:G,MinusOperation:K,MultiplyOperation:$,DivOperation:te,ModOperation:re,UnaryMinusOperation:D,FunctionCall:Wr,VariableReference:wr,XPathContext:mi,XNodeSet:Be,XBoolean:Qe,XString:xe,XNumber:be,NamespaceResolver:xr,FunctionResolver:ur,VariableResolver:_r,Utilities:Se}),r.select=function(h,k,q){return r.selectWithResolver(h,k,null,q)},r.useNamespaces=function(h){var k={mappings:h||{},lookupNamespaceURI:function(q){return this.mappings[q]}};return function(q,V,H){return r.selectWithResolver(q,V,k,H)}},r.selectWithResolver=function(h,k,q,V){var H=new Xr(h,q,new x),W=je.ANY_TYPE,fe=H.evaluate(k,W,null);return fe.resultType==je.STRING_TYPE?fe=fe.stringValue:fe.resultType==je.NUMBER_TYPE?fe=fe.numberValue:fe.resultType==je.BOOLEAN_TYPE?fe=fe.booleanValue:(fe=fe.nodes,V&&(fe=fe[0])),fe},r.select1=function(h,k){return r.select(h,k,!0)};var to=function(h){return Array.isArray(h)&&h.every(n)},Wi=function(h){return function(k){return n(k)&&k.nodeType===h}};B(r,{isNodeLike:n,isArrayOfNodes:to,isElement:Wi(C.ELEMENT_NODE),isAttribute:Wi(C.ATTRIBUTE_NODE),isTextNode:Wi(C.TEXT_NODE),isCDATASection:Wi(C.CDATA_SECTION_NODE),isProcessingInstruction:Wi(C.PROCESSING_INSTRUCTION_NODE),isComment:Wi(C.COMMENT_NODE),isDocumentNode:Wi(C.DOCUMENT_NODE),isDocumentTypeNode:Wi(C.DOCUMENT_TYPE_NODE),isDocumentFragment:Wi(C.DOCUMENT_FRAGMENT_NODE)})})(lW)});var ul=ae(Kr=>{"use strict";function dW(r,e,t){if(t===void 0&&(t=Array.prototype),r&&typeof t.find=="function")return t.find.call(r,e);for(var i=0;i<r.length;i++)if(dl(r,i)){var n=r[i];if(e.call(void 0,n,i,r))return n}}function jd(r,e){return e===void 0&&(e=Object),e&&typeof e.getOwnPropertyDescriptors=="function"&&(r=e.create(null,e.getOwnPropertyDescriptors(r))),e&&typeof e.freeze=="function"?e.freeze(r):r}function dl(r,e){return Object.prototype.hasOwnProperty.call(r,e)}function uW(r,e){if(r===null||typeof r!="object")throw new TypeError("target is not an object");for(var t in e)dl(e,t)&&(r[t]=e[t]);return r}var v6=jd({allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,default:!0,defer:!0,disabled:!0,formnovalidate:!0,hidden:!0,ismap:!0,itemscope:!0,loop:!0,multiple:!0,muted:!0,nomodule:!0,novalidate:!0,open:!0,playsinline:!0,readonly:!0,required:!0,reversed:!0,selected:!0});function fW(r){return dl(v6,r.toLowerCase())}var k6=jd({area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function hW(r){return dl(k6,r.toLowerCase())}var Dh=jd({script:!1,style:!1,textarea:!0,title:!0});function AW(r){var e=r.toLowerCase();return dl(Dh,e)&&!Dh[e]}function gW(r){var e=r.toLowerCase();return dl(Dh,e)&&Dh[e]}function S6(r){return r===_h.HTML}function pW(r){return S6(r)||r===_h.XML_XHTML_APPLICATION}var _h=jd({HTML:"text/html",XML_APPLICATION:"application/xml",XML_TEXT:"text/xml",XML_XHTML_APPLICATION:"application/xhtml+xml",XML_SVG_IMAGE:"image/svg+xml"}),mW=Object.keys(_h).map(function(r){return _h[r]});function yW(r){return mW.indexOf(r)>-1}var IW=jd({HTML:"http://www.w3.org/1999/xhtml",SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});Kr.assign=uW;Kr.find=dW;Kr.freeze=jd;Kr.HTML_BOOLEAN_ATTRIBUTES=v6;Kr.HTML_RAW_TEXT_ELEMENTS=Dh;Kr.HTML_VOID_ELEMENTS=k6;Kr.hasDefaultHTMLNamespace=pW;Kr.hasOwn=dl;Kr.isHTMLBooleanAttribute=fW;Kr.isHTMLRawTextElement=AW;Kr.isHTMLEscapableRawTextElement=gW;Kr.isHTMLMimeType=S6;Kr.isHTMLVoidElement=hW;Kr.isValidMimeType=yW;Kr.MIME_TYPE=_h;Kr.NAMESPACE=IW});var Uh=ae(Th=>{"use strict";var wW=ul();function _6(r,e){r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:r.name,enumerable:!0,writable:e}})}var Fh=wW.freeze({Error:"Error",IndexSizeError:"IndexSizeError",DomstringSizeError:"DomstringSizeError",HierarchyRequestError:"HierarchyRequestError",WrongDocumentError:"WrongDocumentError",InvalidCharacterError:"InvalidCharacterError",NoDataAllowedError:"NoDataAllowedError",NoModificationAllowedError:"NoModificationAllowedError",NotFoundError:"NotFoundError",NotSupportedError:"NotSupportedError",InUseAttributeError:"InUseAttributeError",InvalidStateError:"InvalidStateError",SyntaxError:"SyntaxError",InvalidModificationError:"InvalidModificationError",NamespaceError:"NamespaceError",InvalidAccessError:"InvalidAccessError",ValidationError:"ValidationError",TypeMismatchError:"TypeMismatchError",SecurityError:"SecurityError",NetworkError:"NetworkError",AbortError:"AbortError",URLMismatchError:"URLMismatchError",QuotaExceededError:"QuotaExceededError",TimeoutError:"TimeoutError",InvalidNodeTypeError:"InvalidNodeTypeError",DataCloneError:"DataCloneError",EncodingError:"EncodingError",NotReadableError:"NotReadableError",UnknownError:"UnknownError",ConstraintError:"ConstraintError",DataError:"DataError",TransactionInactiveError:"TransactionInactiveError",ReadOnlyError:"ReadOnlyError",VersionError:"VersionError",OperationError:"OperationError",NotAllowedError:"NotAllowedError",OptOutError:"OptOutError"}),Q6=Object.keys(Fh);function F6(r){return typeof r=="number"&&r>=1&&r<=25}function xW(r){return typeof r=="string"&&r.substring(r.length-Fh.Error.length)===Fh.Error}function Ph(r,e){F6(r)?(this.name=Q6[r],this.message=e||""):(this.message=r,this.name=xW(e)?e:Fh.Error),Error.captureStackTrace&&Error.captureStackTrace(this,Ph)}_6(Ph,!0);Object.defineProperties(Ph.prototype,{code:{enumerable:!0,get:function(){var r=Q6.indexOf(this.name);return F6(r)?r:0}}});var P6={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},f1=Object.entries(P6);for(Qh=0;Qh<f1.length;Qh++)D6=f1[Qh][0],Ph[D6]=f1[Qh][1];var D6,Qh;function h1(r,e,t){this.message=r,this.locator=e,this.cause=t,Error.captureStackTrace&&Error.captureStackTrace(this,h1)}_6(h1);Th.DOMException=Ph;Th.DOMExceptionName=Fh;Th.ExceptionCode=P6;Th.ParseError=h1});var w1=ae(Ve=>{"use strict";function q6(r){try{typeof r!="function"&&(r=RegExp);var e=new r("\u{1D306}","u").exec("\u{1D306}");return!!e&&e[0].length===2}catch{}return!1}var Yd=q6();function No(r){if(r.source[0]!=="[")throw new Error(r+" can not be used with chars");return r.source.slice(1,r.source.lastIndexOf("]"))}function $d(r,e){if(r.source[0]!=="[")throw new Error("/"+r.source+"/ can not be used with chars_without");if(!e||typeof e!="string")throw new Error(JSON.stringify(e)+" is not a valid search");if(r.source.indexOf(e)===-1)throw new Error('"'+e+'" is not is /'+r.source+"/");if(e==="-"&&r.source.indexOf(e)!==1)throw new Error('"'+e+'" is not at the first postion of /'+r.source+"/");return new RegExp(r.source.replace(e,""),Yd?"u":"")}function tt(r){var e=this;return new RegExp(Array.prototype.slice.call(arguments).map(function(t){var i=typeof t=="string";if(i&&e===void 0&&t==="|")throw new Error("use regg instead of reg to wrap expressions with `|`!");return i?t:t.source}).join(""),Yd?"u":"")}function ze(r){if(arguments.length===0)throw new Error("no parameters provided");return tt.apply(ze,["(?:"].concat(Array.prototype.slice.call(arguments),[")"]))}var CW="\uFFFD",Oo=/[-\x09\x0A\x0D\x20-\x2C\x2E-\uD7FF\uE000-\uFFFD]/;Yd&&(Oo=tt("[",No(Oo),"\\u{10000}-\\u{10FFFF}","]"));var EW=new RegExp("[^"+No(Oo)+"]",Yd?"u":""),_I=/[\x20\x09\x0D\x0A]/,BW=No(_I),bt=tt(_I,"+"),Mt=tt(_I,"*"),Rh=/[:_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;Yd&&(Rh=tt("[",No(Rh),"\\u{10000}-\\u{10FFFF}","]"));var bW=No(Rh),p1=tt("[",bW,No(/[-.0-9\xB7]/),No(/[\u0300-\u036F\u203F-\u2040]/),"]"),rn=tt(Rh,p1,"*"),vW=tt("^",rn,"$"),T6=tt(p1,"+"),kW=tt("&",rn,";"),SW=ze(/&#[0-9]+;|&#x[0-9a-fA-F]+;/),Nh=ze(kW,"|",SW),Oh=tt("%",rn,";"),m1=ze(tt('"',ze(/[^%&"]/,"|",Oh,"|",Nh),"*",'"'),"|",tt("'",ze(/[^%&']/,"|",Oh,"|",Nh),"*","'")),DW=ze('"',ze(/[^<&"]/,"|",Nh),"*",'"',"|","'",ze(/[^<&']/,"|",Nh),"*","'"),_W=$d(Rh,":"),QW=$d(p1,":"),A1=tt(_W,QW,"*"),FW=tt("^",A1,"$"),qh=tt(A1,ze(":",A1),"?"),PW=tt("^",qh,"$"),TW=tt("(",qh,")"),Vd=ze(/"[^"]*"|'[^']*'/),UW=tt(/^<\?/,"(",rn,")",ze(bt,"(?!",_I,")(",Oo,"*?)"),"?",/\?>/),U6=/[\x20\x0D\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/,Mh=ze('"',U6,'*"',"|","'",$d(U6,"'"),"*'"),M6="<!--",L6="-->",RW=tt(M6,ze($d(Oo,"-"),"|",tt("-",$d(Oo,"-"))),"*",L6),R6="#PCDATA",NW=ze(tt(/\(/,Mt,R6,ze(Mt,/\|/,Mt,qh),"*",Mt,/\)\*/),"|",tt(/\(/,Mt,R6,Mt,/\)/)),OW=/[?*+]?/,qW=tt(/\([^>]+\)/,OW),MW=ze("EMPTY","|","ANY","|",NW,"|",qW),LW="<!ELEMENT",HW=tt(LW,bt,ze(qh,"|",Oh),bt,ze(MW,"|",Oh),Mt,">"),KW=tt("NOTATION",bt,/\(/,Mt,rn,ze(Mt,/\|/,Mt,rn),"*",Mt,/\)/),GW=tt(/\(/,Mt,T6,ze(Mt,/\|/,Mt,T6),"*",Mt,/\)/),zW=ze(KW,"|",GW),JW=ze(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/,"|",zW),jW=ze(/#REQUIRED|#IMPLIED/,"|",ze(ze("#FIXED",bt),"?",DW)),$W=ze(bt,rn,bt,JW,bt,jW),VW="<!ATTLIST",YW=tt(VW,bt,rn,$W,"*",Mt,">"),g1="about:legacy-compat",WW=ze('"'+g1+'"',"|","'"+g1+"'"),y1="SYSTEM",QI="PUBLIC",FI=ze(ze(y1,bt,Vd),"|",ze(QI,bt,Mh,bt,Vd)),XW=tt("^",ze(ze(y1,bt,"(?<SystemLiteralOnly>",Vd,")"),"|",ze(QI,bt,"(?<PubidLiteral>",Mh,")",bt,"(?<SystemLiteral>",Vd,")"))),ZW=tt("^",Mh,"$"),eX=tt("^",Vd,"$"),tX=ze(bt,"NDATA",bt,rn),rX=ze(m1,"|",ze(FI,tX,"?")),H6="<!ENTITY",iX=tt(H6,bt,rn,bt,rX,Mt,">"),nX=ze(m1,"|",FI),sX=tt(H6,bt,"%",bt,rn,bt,nX,Mt,">"),aX=ze(iX,"|",sX),oX=tt(QI,bt,Mh),cX=tt("<!NOTATION",bt,rn,bt,ze(FI,"|",oX),Mt,">"),I1=tt(Mt,"=",Mt),N6=/1[.]\d+/,lX=tt(bt,"version",I1,ze("'",N6,"'","|",'"',N6,'"')),O6=/[A-Za-z][-A-Za-z0-9._]*/,dX=ze(bt,"encoding",I1,ze('"',O6,'"',"|","'",O6,"'")),uX=ze(bt,"standalone",I1,ze("'",ze("yes","|","no"),"'","|",'"',ze("yes","|","no"),'"')),fX=tt(/^<\?xml/,lX,dX,"?",uX,"?",Mt,/\?>/),hX="<!DOCTYPE",AX="<![CDATA[",gX="]]>",pX=/<!\[CDATA\[/,mX=/\]\]>/,yX=tt(Oo,"*?",mX),IX=tt(pX,yX);Ve.chars=No;Ve.chars_without=$d;Ve.detectUnicodeSupport=q6;Ve.reg=tt;Ve.regg=ze;Ve.ABOUT_LEGACY_COMPAT=g1;Ve.ABOUT_LEGACY_COMPAT_SystemLiteral=WW;Ve.AttlistDecl=YW;Ve.CDATA_START=AX;Ve.CDATA_END=gX;Ve.CDSect=IX;Ve.Char=Oo;Ve.Comment=RW;Ve.COMMENT_START=M6;Ve.COMMENT_END=L6;Ve.DOCTYPE_DECL_START=hX;Ve.elementdecl=HW;Ve.EntityDecl=aX;Ve.EntityValue=m1;Ve.ExternalID=FI;Ve.ExternalID_match=XW;Ve.Name=rn;Ve.Name_exact=vW;Ve.NCName_exact=FW;Ve.NotationDecl=cX;Ve.Reference=Nh;Ve.PEReference=Oh;Ve.PI=UW;Ve.PUBLIC=QI;Ve.PubidLiteral=Mh;Ve.PubidLiteral_match=ZW;Ve.QName=qh;Ve.QName_exact=PW;Ve.QName_group=TW;Ve.S=bt;Ve.SChar_s=BW;Ve.S_OPT=Mt;Ve.SYSTEM=y1;Ve.SystemLiteral=Vd;Ve.SystemLiteral_match=eX;Ve.InvalidChar=EW;Ve.UNICODE_REPLACEMENT_CHARACTER=CW;Ve.UNICODE_SUPPORT=Yd;Ve.XMLDecl=fX});var _1=ae(Xt=>{"use strict";var In=ul(),xs=In.find,wX=In.hasDefaultHTMLNamespace,Xd=In.hasOwn,xX=In.isHTMLMimeType,CX=In.isHTMLRawTextElement,EX=In.isHTMLVoidElement,Lh=In.MIME_TYPE,Cs=In.NAMESPACE,xi=Symbol(),V6=Uh(),_e=V6.DOMException,ai=V6.DOMExceptionName,Wt=w1();function _i(r){if(r!==xi)throw new TypeError("Illegal constructor")}function BX(r){return r!==""}function bX(r){return r?r.split(/[\t\n\f\r ]+/).filter(BX):[]}function vX(r,e){return Xd(r,e)||(r[e]=!0),r}function K6(r){if(!r)return[];var e=bX(r);return Object.keys(e.reduce(vX,{}))}function kX(r){return function(e){return r&&r.indexOf(e)!==-1}}function Y6(r){if(!Wt.QName_exact.test(r))throw new _e(_e.INVALID_CHARACTER_ERR,'invalid character in qualified name "'+r+'"')}function C1(r,e){Y6(e),r=r||null;var t=null,i=e;if(e.indexOf(":")>=0){var n=e.split(":");t=n[0],i=n[1]}if(t!==null&&r===null)throw new _e(_e.NAMESPACE_ERR,"prefix is non-null and namespace is null");if(t==="xml"&&r!==In.NAMESPACE.XML)throw new _e(_e.NAMESPACE_ERR,'prefix is "xml" and namespace is not the XML namespace');if((t==="xmlns"||e==="xmlns")&&r!==In.NAMESPACE.XMLNS)throw new _e(_e.NAMESPACE_ERR,'either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace');if(r===In.NAMESPACE.XMLNS&&t!=="xmlns"&&e!=="xmlns")throw new _e(_e.NAMESPACE_ERR,'namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns"');return[r,t,i]}function tu(r,e){for(var t in r)Xd(r,t)&&(e[t]=r[t])}function Qi(r,e){var t=r.prototype;if(!(t instanceof e)){let i=function(){};i.prototype=e.prototype,i=new i,tu(t,i),r.prototype=t=i}t.constructor!=r&&(typeof r!="function"&&console.error("unknown Class:"+r),t.constructor=r)}var Fi={},yn=Fi.ELEMENT_NODE=1,Zd=Fi.ATTRIBUTE_NODE=2,Hh=Fi.TEXT_NODE=3,W6=Fi.CDATA_SECTION_NODE=4,X6=Fi.ENTITY_REFERENCE_NODE=5,SX=Fi.ENTITY_NODE=6,E1=Fi.PROCESSING_INSTRUCTION_NODE=7,B1=Fi.COMMENT_NODE=8,Wd=Fi.DOCUMENT_NODE=9,Z6=Fi.DOCUMENT_TYPE_NODE=10,qo=Fi.DOCUMENT_FRAGMENT_NODE=11,DX=Fi.NOTATION_NODE=12,Yt=In.freeze({DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:2,DOCUMENT_POSITION_FOLLOWING:4,DOCUMENT_POSITION_CONTAINS:8,DOCUMENT_POSITION_CONTAINED_BY:16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32});function eT(r,e){if(e.length<r.length)return eT(e,r);var t=null;for(var i in r){if(r[i]!==e[i])return t;t=r[i]}return t}function G6(r){return r.guid||(r.guid=Math.random()),r.guid}function Br(){}Br.prototype={length:0,item:function(r){return r>=0&&r<this.length?this[r]:null},toString:function(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};for(var t=[],i=0;i<this.length;i++)D1(this[i],t,null,e);return t.join("")},filter:function(r){return Array.prototype.filter.call(this,r)},indexOf:function(r){return Array.prototype.indexOf.call(this,r)}};Br.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function ws(r,e){this._node=r,this._refresh=e,RI(this)}function RI(r){var e=r._node._inc||r._node.ownerDocument._inc;if(r._inc!==e){var t=r._refresh(r._node);if(uT(r,"length",t.length),!r.$$length||t.length<r.$$length)for(var i=t.length;i in r;i++)Xd(r,i)&&delete r[i];tu(t,r),r._inc=e}}ws.prototype.item=function(r){return RI(this),this[r]||null};Qi(ws,Br);function eu(){this._nsIndex=Object.create(null),this._noNsIndex=Object.create(null)}function tT(r,e){for(var t=0;t<r.length;){if(r[t]===e)return t;t++}}function b1(r,e,t){if(!e)return r._noNsIndex;var i=r._nsIndex[e];return!i&&t&&(i=r._nsIndex[e]=Object.create(null)),i}function _X(r,e,t){var i=b1(r,e,!1),n=i&&i[t];return n||null}function QX(r,e){b1(r,e.namespaceURI,!0)[e.localName]=e}function FX(r,e){var t=b1(r,e.namespaceURI,!1);t&&delete t[e.localName]}function PX(r,e,t,i){if(i?e[tT(e,i)]=t:(e[e.length]=t,e.length++),QX(e,t),r){t.ownerElement=r;var n=r.ownerDocument;n&&(i&&nT(n,r,i),TX(n,r,t))}}function z6(r,e,t){var i=tT(e,t);if(i>=0){for(var n=e.length-1;i<=n;)e[i]=e[++i];if(e.length=n,FX(e,t),r){var s=r.ownerDocument;s&&nT(s,r,t),t.ownerElement=null}}}eu.prototype={length:0,item:Br.prototype.item,getNamedItem:function(r){this._ownerElement&&this._ownerElement._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());for(var e=0;e<this.length;){var t=this[e];if(t.nodeName===r)return t;e++}return null},setNamedItem:function(r){var e=r.ownerElement;if(e&&e!==this._ownerElement)throw new _e(_e.INUSE_ATTRIBUTE_ERR);var t=_X(this,r.namespaceURI,r.localName);return t===r?r:(PX(this._ownerElement,this,r,t),t)},setNamedItemNS:function(r){return this.setNamedItem(r)},removeNamedItem:function(r){var e=this.getNamedItem(r);if(!e)throw new _e(_e.NOT_FOUND_ERR,r);return z6(this._ownerElement,this,e),e},removeNamedItemNS:function(r,e){var t=this.getNamedItemNS(r,e);if(!t)throw new _e(_e.NOT_FOUND_ERR,r?r+" : "+e:e);return z6(this._ownerElement,this,t),t},getNamedItemNS:function(r,e){r||(r=null);for(var t=0;t<this.length;){var i=this[t];if(i.localName===e&&i.namespaceURI===r)return i;t++}return null}};eu.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function rT(){}rT.prototype={hasFeature:function(r,e){return!0},createDocument:function(r,e,t){var i=Lh.XML_APPLICATION;r===Cs.HTML?i=Lh.XML_XHTML_APPLICATION:r===Cs.SVG&&(i=Lh.XML_SVG_IMAGE);var n=new Ia(xi,{contentType:i});if(n.implementation=this,n.childNodes=new Br,n.doctype=t||null,t&&n.appendChild(t),e){var s=n.createElementNS(r,e);n.appendChild(s)}return n},createDocumentType:function(r,e,t,i){Y6(r);var n=new qI(xi);return n.name=r,n.nodeName=r,n.publicId=e||"",n.systemId=t||"",n.internalSubset=i||"",n.childNodes=new Br,n},createHTMLDocument:function(r){var e=new Ia(xi,{contentType:Lh.HTML});if(e.implementation=this,e.childNodes=new Br,r!==!1){e.doctype=this.createDocumentType("html"),e.doctype.ownerDocument=e,e.appendChild(e.doctype);var t=e.createElement("html");e.appendChild(t);var i=e.createElement("head");if(t.appendChild(i),typeof r=="string"){var n=e.createElement("title");n.appendChild(e.createTextNode(r)),i.appendChild(n)}t.appendChild(e.createElement("body"))}return e}};function ht(r){_i(r)}ht.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,parentNode:null,get parentElement(){return this.parentNode&&this.parentNode.nodeType===this.ELEMENT_NODE?this.parentNode:null},childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,baseURI:"about:blank",get isConnected(){var r=this.getRootNode();return r&&r.nodeType===r.DOCUMENT_NODE},contains:function(r){if(!r)return!1;var e=r;do{if(this===e)return!0;e=e.parentNode}while(e);return!1},getRootNode:function(r){var e=this;do{if(!e.parentNode)return e;e=e.parentNode}while(e)},isEqualNode:function(r){if(!r)return!1;for(var e=[{node:this,other:r}];e.length>0;){var t=e.pop(),i=t.node,n=t.other;if(i.nodeType!==n.nodeType)return!1;switch(i.nodeType){case i.DOCUMENT_TYPE_NODE:if(i.name!==n.name||i.publicId!==n.publicId||i.systemId!==n.systemId)return!1;break;case i.ELEMENT_NODE:if(i.namespaceURI!==n.namespaceURI||i.prefix!==n.prefix||i.localName!==n.localName||i.attributes.length!==n.attributes.length)return!1;for(var s=0;s<i.attributes.length;s++){var a=i.attributes.item(s),o=n.getAttributeNodeNS(a.namespaceURI,a.localName);if(!o)return!1;e.push({node:a,other:o})}break;case i.ATTRIBUTE_NODE:if(i.namespaceURI!==n.namespaceURI||i.localName!==n.localName||i.value!==n.value)return!1;break;case i.PROCESSING_INSTRUCTION_NODE:if(i.target!==n.target||i.data!==n.data)return!1;break;case i.TEXT_NODE:case i.CDATA_SECTION_NODE:case i.COMMENT_NODE:if(i.data!==n.data)return!1;break}if(i.childNodes.length!==n.childNodes.length)return!1;for(var s=i.childNodes.length-1;s>=0;s--)e.push({node:i.childNodes[s],other:n.childNodes[s]})}return!0},isSameNode:function(r){return this===r},insertBefore:function(r,e){return UI(this,r,e)},replaceChild:function(r,e){UI(this,r,e,oT),e&&this.removeChild(e)},removeChild:function(r){return sT(this,r)},appendChild:function(r){return this.insertBefore(r,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(r){return dT(this.ownerDocument||this,this,r)},normalize:function(){Gr(this,null,{enter:function(r){for(var e=r.firstChild;e;){var t=e.nextSibling;if(t!==null&&t.nodeType===Hh&&e.nodeType===Hh){for(var i=[],n=t;n!==null&&n.nodeType===Hh;)i.push(n.data),n=n.nextSibling;for(var s=e.nextSibling;s!==n;){var a=s.nextSibling;s.parentNode=null,s.previousSibling=null,s.nextSibling=null,s=a}e.nextSibling=n,n!==null?n.previousSibling=e:r.lastChild=e,e.appendData(i.join("")),v1(r.ownerDocument,r),e=n}else e=t}return!0}})},isSupported:function(r,e){return this.ownerDocument.implementation.hasFeature(r,e)},lookupPrefix:function(r){for(var e=this;e;){var t=e._nsMap;if(t){for(var i in t)if(Xd(t,i)&&t[i]===r)return i}e=e.nodeType==Zd?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(r){for(var e=this;e;){var t=e._nsMap;if(t&&Xd(t,r))return t[r];e=e.nodeType==Zd?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(r){var e=this.lookupPrefix(r);return e==null},compareDocumentPosition:function(r){if(this===r)return 0;var e=r,t=this,i=null,n=null;if(e instanceof fl&&(i=e,e=i.ownerElement),t instanceof fl&&(n=t,t=n.ownerElement,i&&e&&t===e))for(var s=0,a;a=t.attributes[s];s++){if(a===i)return Yt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Yt.DOCUMENT_POSITION_PRECEDING;if(a===n)return Yt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Yt.DOCUMENT_POSITION_FOLLOWING}if(!e||!t||t.ownerDocument!==e.ownerDocument)return Yt.DOCUMENT_POSITION_DISCONNECTED+Yt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+(G6(t.ownerDocument)>G6(e.ownerDocument)?Yt.DOCUMENT_POSITION_FOLLOWING:Yt.DOCUMENT_POSITION_PRECEDING);if(n&&e===t)return Yt.DOCUMENT_POSITION_CONTAINS+Yt.DOCUMENT_POSITION_PRECEDING;if(i&&e===t)return Yt.DOCUMENT_POSITION_CONTAINED_BY+Yt.DOCUMENT_POSITION_FOLLOWING;for(var o=[],c=e.parentNode;c;){if(!n&&c===t)return Yt.DOCUMENT_POSITION_CONTAINED_BY+Yt.DOCUMENT_POSITION_FOLLOWING;o.push(c),c=c.parentNode}o.reverse();for(var l=[],d=t.parentNode;d;){if(!i&&d===e)return Yt.DOCUMENT_POSITION_CONTAINS+Yt.DOCUMENT_POSITION_PRECEDING;l.push(d),d=d.parentNode}l.reverse();var u=eT(o,l);for(var f in u.childNodes){var A=u.childNodes[f];if(A===t)return Yt.DOCUMENT_POSITION_FOLLOWING;if(A===e)return Yt.DOCUMENT_POSITION_PRECEDING;if(l.indexOf(A)>=0)return Yt.DOCUMENT_POSITION_FOLLOWING;if(o.indexOf(A)>=0)return Yt.DOCUMENT_POSITION_PRECEDING}return 0}};function iT(r){return r=="<"&&"<"||r==">"&&">"||r=="&"&&"&"||r=='"'&&"""||"&#"+r.charCodeAt()+";"}tu(Fi,ht);tu(Fi,ht.prototype);tu(Yt,ht);tu(Yt,ht.prototype);function TI(r,e){Gr(r,null,{enter:function(t){return e(t)?Gr.STOP:!0}})}function Gr(r,e,t){for(var i=[{node:r,context:e,phase:Gr.ENTER}];i.length>0;){var n=i.pop();if(n.phase===Gr.ENTER){var s=t.enter(n.node,n.context);if(s===Gr.STOP)return Gr.STOP;if(i.push({node:n.node,context:s,phase:Gr.EXIT}),s==null)continue;for(var a=n.node.lastChild;a;)i.push({node:a,context:s,phase:Gr.ENTER}),a=a.previousSibling}else t.exit&&t.exit(n.node,n.context)}}Gr.STOP=Symbol("walkDOM.STOP");Gr.ENTER=0;Gr.EXIT=1;function Ia(r,e){_i(r);var t=e||{};this.ownerDocument=this,this.contentType=t.contentType||Lh.XML_APPLICATION,this.type=xX(this.contentType)?"html":"xml"}function TX(r,e,t){r&&r._inc++;var i=t.namespaceURI;i===Cs.XMLNS&&(e._nsMap[t.prefix?t.localName:""]=t.value)}function nT(r,e,t,i){r&&r._inc++;var n=t.namespaceURI;n===Cs.XMLNS&&delete e._nsMap[t.prefix?t.localName:""]}function v1(r,e,t){if(r&&r._inc){r._inc++;var i=e.childNodes;if(t&&!t.nextSibling)i[i.length++]=t;else{for(var n=e.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s,delete i[i.length]}}}function sT(r,e){if(r!==e.parentNode)throw new _e(_e.NOT_FOUND_ERR,"child's parent is not parent");var t=e.previousSibling,i=e.nextSibling;return t?t.nextSibling=i:r.firstChild=i,i?i.previousSibling=t:r.lastChild=t,v1(r.ownerDocument,r),e.parentNode=null,e.previousSibling=null,e.nextSibling=null,e}function UX(r){return r&&(r.nodeType===ht.DOCUMENT_NODE||r.nodeType===ht.DOCUMENT_FRAGMENT_NODE||r.nodeType===ht.ELEMENT_NODE)}function RX(r){return r&&(r.nodeType===ht.CDATA_SECTION_NODE||r.nodeType===ht.COMMENT_NODE||r.nodeType===ht.DOCUMENT_FRAGMENT_NODE||r.nodeType===ht.DOCUMENT_TYPE_NODE||r.nodeType===ht.ELEMENT_NODE||r.nodeType===ht.PROCESSING_INSTRUCTION_NODE||r.nodeType===ht.TEXT_NODE)}function Mo(r){return r&&r.nodeType===ht.DOCUMENT_TYPE_NODE}function ya(r){return r&&r.nodeType===ht.ELEMENT_NODE}function aT(r){return r&&r.nodeType===ht.TEXT_NODE}function J6(r,e){var t=r.childNodes||[];if(xs(t,ya)||Mo(e))return!1;var i=xs(t,Mo);return!(e&&i&&t.indexOf(i)>t.indexOf(e))}function j6(r,e){var t=r.childNodes||[];function i(s){return ya(s)&&s!==e}if(xs(t,i))return!1;var n=xs(t,Mo);return!(e&&n&&t.indexOf(n)>t.indexOf(e))}function NX(r,e,t){if(!UX(r))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Unexpected parent node type "+r.nodeType);if(t&&t.parentNode!==r)throw new _e(_e.NOT_FOUND_ERR,"child not in parent");if(!RX(e)||Mo(e)&&r.nodeType!==ht.DOCUMENT_NODE)throw new _e(_e.HIERARCHY_REQUEST_ERR,"Unexpected node type "+e.nodeType+" for parent node type "+r.nodeType)}function OX(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===ht.DOCUMENT_FRAGMENT_NODE){var s=n.filter(ya);if(s.length>1||xs(n,aT))throw new _e(_e.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!J6(r,t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(ya(e)&&!J6(r,t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(Mo(e)){if(xs(i,Mo))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var a=xs(i,ya);if(t&&i.indexOf(a)<i.indexOf(t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element");if(!t&&a)throw new _e(_e.HIERARCHY_REQUEST_ERR,"Doctype can not be appended since element is present")}}function oT(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===ht.DOCUMENT_FRAGMENT_NODE){var s=n.filter(ya);if(s.length>1||xs(n,aT))throw new _e(_e.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!j6(r,t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(ya(e)&&!j6(r,t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(Mo(e)){if(xs(i,function(c){return Mo(c)&&c!==t}))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var a=xs(i,ya);if(t&&i.indexOf(a)<i.indexOf(t))throw new _e(_e.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element")}}function UI(r,e,t,i){NX(r,e,t),r.nodeType===ht.DOCUMENT_NODE&&(i||OX)(r,e,t);var n=e.parentNode;if(n&&n.removeChild(e),e.nodeType===qo){var s=e.firstChild;if(s==null)return e;var a=e.lastChild}else s=a=e;var o=t?t.previousSibling:r.lastChild;s.previousSibling=o,a.nextSibling=t,o?o.nextSibling=s:r.firstChild=s,t==null?r.lastChild=a:t.previousSibling=a;do s.parentNode=r;while(s!==a&&(s=s.nextSibling));return v1(r.ownerDocument||r,r,e),e.nodeType==qo&&(e.firstChild=e.lastChild=null),e}Ia.prototype={implementation:null,nodeName:"#document",nodeType:Wd,doctype:null,documentElement:null,_inc:1,insertBefore:function(r,e){if(r.nodeType===qo){for(var t=r.firstChild;t;){var i=t.nextSibling;this.insertBefore(t,e),t=i}return r}return UI(this,r,e),r.ownerDocument=this,this.documentElement===null&&r.nodeType===yn&&(this.documentElement=r),r},removeChild:function(r){var e=sT(this,r);return e===this.documentElement&&(this.documentElement=null),e},replaceChild:function(r,e){UI(this,r,e,oT),r.ownerDocument=this,e&&this.removeChild(e),ya(r)&&(this.documentElement=r)},importNode:function(r,e){return qX(this,r,e)},getElementById:function(r){var e=null;return TI(this.documentElement,function(t){if(t.nodeType==yn&&t.getAttribute("id")==r)return e=t,!0}),e},createElement:function(r){var e=new wa(xi);e.ownerDocument=this,this.type==="html"&&(r=r.toLowerCase()),wX(this.contentType)&&(e.namespaceURI=Cs.HTML),e.nodeName=r,e.tagName=r,e.localName=r,e.childNodes=new Br;var t=e.attributes=new eu;return t._ownerElement=e,e},createDocumentFragment:function(){var r=new ru(xi);return r.ownerDocument=this,r.childNodes=new Br,r},createTextNode:function(r){var e=new Kh(xi);return e.ownerDocument=this,e.childNodes=new Br,e.appendData(r),e},createComment:function(r){var e=new NI(xi);return e.ownerDocument=this,e.childNodes=new Br,e.appendData(r),e},createCDATASection:function(r){if(r.indexOf("]]>")!==-1)throw new _e(_e.INVALID_CHARACTER_ERR,'data contains "]]>"');var e=new OI(xi);return e.ownerDocument=this,e.childNodes=new Br,e.appendData(r),e},createProcessingInstruction:function(r,e){var t=new LI(xi);return t.ownerDocument=this,t.childNodes=new Br,t.nodeName=t.target=r,t.nodeValue=t.data=e,t},createAttribute:function(r){if(!Wt.QName_exact.test(r))throw new _e(_e.INVALID_CHARACTER_ERR,'invalid character in name "'+r+'"');return this.type==="html"&&(r=r.toLowerCase()),this._createAttribute(r)},_createAttribute:function(r){var e=new fl(xi);return e.ownerDocument=this,e.childNodes=new Br,e.name=r,e.nodeName=r,e.localName=r,e.specified=!0,e},createEntityReference:function(r){if(!Wt.Name_exact.test(r))throw new _e(_e.INVALID_CHARACTER_ERR,'not a valid xml name "'+r+'"');if(this.type==="html")throw new _e("document is an html document",ai.NotSupportedError);var e=new MI(xi);return e.ownerDocument=this,e.childNodes=new Br,e.nodeName=r,e},createElementNS:function(r,e){var t=C1(r,e),i=new wa(xi),n=i.attributes=new eu;return i.childNodes=new Br,i.ownerDocument=this,i.nodeName=e,i.tagName=e,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],n._ownerElement=i,i},createAttributeNS:function(r,e){var t=C1(r,e),i=new fl(xi);return i.ownerDocument=this,i.childNodes=new Br,i.nodeName=e,i.name=e,i.specified=!0,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],i}};Qi(Ia,ht);function wa(r){_i(r),this._nsMap=Object.create(null)}wa.prototype={nodeType:yn,attributes:null,getQualifiedName:function(){return this.prefix?this.prefix+":"+this.localName:this.localName},_isInHTMLDocumentAndNamespace:function(){return this.ownerDocument.type==="html"&&this.namespaceURI===Cs.HTML},hasAttributes:function(){return!!(this.attributes&&this.attributes.length)},hasAttribute:function(r){return!!this.getAttributeNode(r)},getAttribute:function(r){var e=this.getAttributeNode(r);return e?e.value:null},getAttributeNode:function(r){return this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase()),this.attributes.getNamedItem(r)},setAttribute:function(r,e){this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());var t=this.getAttributeNode(r);t?t.value=t.nodeValue=""+e:(t=this.ownerDocument._createAttribute(r),t.value=t.nodeValue=""+e,this.setAttributeNode(t))},removeAttribute:function(r){var e=this.getAttributeNode(r);e&&this.removeAttributeNode(e)},setAttributeNode:function(r){return this.attributes.setNamedItem(r)},setAttributeNodeNS:function(r){return this.attributes.setNamedItemNS(r)},removeAttributeNode:function(r){return this.attributes.removeNamedItem(r.nodeName)},removeAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);t&&this.removeAttributeNode(t)},hasAttributeNS:function(r,e){return this.getAttributeNodeNS(r,e)!=null},getAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);return t?t.value:null},setAttributeNS:function(r,e,t){var i=C1(r,e),n=i[2],s=this.getAttributeNodeNS(r,n);s?s.value=s.nodeValue=""+t:(s=this.ownerDocument.createAttributeNS(r,e),s.value=s.nodeValue=""+t,this.setAttributeNode(s))},getAttributeNodeNS:function(r,e){return this.attributes.getNamedItemNS(r,e)},getElementsByClassName:function(r){var e=K6(r);return new ws(this,function(t){var i=[];return e.length>0&&TI(t,function(n){if(n!==t&&n.nodeType===yn){var s=n.getAttribute("class");if(s){var a=r===s;if(!a){var o=K6(s);a=e.every(kX(o))}a&&i.push(n)}}}),i})},getElementsByTagName:function(r){var e=(this.nodeType===Wd?this:this.ownerDocument).type==="html",t=r.toLowerCase();return new ws(this,function(i){var n=[];return TI(i,function(s){if(!(s===i||s.nodeType!==yn))if(r==="*")n.push(s);else{var a=s.getQualifiedName(),o=e&&s.namespaceURI===Cs.HTML?t:r;a===o&&n.push(s)}}),n})},getElementsByTagNameNS:function(r,e){return new ws(this,function(t){var i=[];return TI(t,function(n){n!==t&&n.nodeType===yn&&(r==="*"||n.namespaceURI===r)&&(e==="*"||n.localName==e)&&i.push(n)}),i})}};Ia.prototype.getElementsByClassName=wa.prototype.getElementsByClassName;Ia.prototype.getElementsByTagName=wa.prototype.getElementsByTagName;Ia.prototype.getElementsByTagNameNS=wa.prototype.getElementsByTagNameNS;Qi(wa,ht);function fl(r){_i(r),this.namespaceURI=null,this.prefix=null,this.ownerElement=null}fl.prototype.nodeType=Zd;Qi(fl,ht);function Lo(r){_i(r)}Lo.prototype={data:"",substringData:function(r,e){return this.data.substring(r,r+e)},appendData:function(r){r=this.data+r,this.nodeValue=this.data=r,this.length=r.length},insertData:function(r,e){this.replaceData(r,0,e)},deleteData:function(r,e){this.replaceData(r,e,"")},replaceData:function(r,e,t){var i=this.data.substring(0,r),n=this.data.substring(r+e);t=i+t+n,this.nodeValue=this.data=t,this.length=t.length}};Qi(Lo,ht);function Kh(r){_i(r)}Kh.prototype={nodeName:"#text",nodeType:Hh,splitText:function(r){var e=this.data,t=e.substring(r);e=e.substring(0,r),this.data=this.nodeValue=e,this.length=e.length;var i=this.ownerDocument.createTextNode(t);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};Qi(Kh,Lo);function NI(r){_i(r)}NI.prototype={nodeName:"#comment",nodeType:B1};Qi(NI,Lo);function OI(r){_i(r)}OI.prototype={nodeName:"#cdata-section",nodeType:W6};Qi(OI,Kh);function qI(r){_i(r)}qI.prototype.nodeType=Z6;Qi(qI,ht);function k1(r){_i(r)}k1.prototype.nodeType=DX;Qi(k1,ht);function S1(r){_i(r)}S1.prototype.nodeType=SX;Qi(S1,ht);function MI(r){_i(r)}MI.prototype.nodeType=X6;Qi(MI,ht);function ru(r){_i(r)}ru.prototype.nodeName="#document-fragment";ru.prototype.nodeType=qo;Qi(ru,ht);function LI(r){_i(r)}LI.prototype.nodeType=E1;Qi(LI,Lo);function cT(){}cT.prototype.serializeToString=function(r,e){return lT.call(r,e)};ht.prototype.toString=lT;function lT(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r!=null?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};var t=[],i=this.nodeType===Wd&&this.documentElement||this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var a=[{namespace:s,prefix:null}]}return D1(this,t,a,e),t.join("")}function $6(r,e,t){var i=r.prefix||"",n=r.namespaceURI;if(!n||i==="xml"&&n===Cs.XML||n===Cs.XMLNS)return!1;for(var s=t.length;s--;){var a=t[s];if(a.prefix===i)return a.namespace!==n}return!0}function PI(r,e,t,i){if(i&&!Wt.QName_exact.test(e))throw new _e('The attribute name "'+e+'" is not a valid XML QName',ai.InvalidStateError);r.push(" ",e,'="',t.replace(/[<>&"\t\n\r]/g,iT),'"')}function D1(r,e,t,i){t||(t=[]);var n=i.nodeFilter,s=i.requireWellFormed,a=i.splitCDATASections,o=r.nodeType===Wd?r:r.ownerDocument,c=o.type==="html";Gr(r,{ns:t},{enter:function(l,d){var u=d.ns;if(n)if(l=n(l),l){if(typeof l=="string")return e.push(l),null}else return null;switch(l.nodeType){case yn:var f=l.attributes,A=f.length,g=l.tagName,p=g;if(!c&&!l.prefix&&l.namespaceURI){for(var I,m=0;m<f.length;m++)if(f.item(m).name==="xmlns"){I=f.item(m).value;break}if(!I)for(var w=u.length-1;w>=0;w--){var B=u[w];if(B.prefix===""&&B.namespace===l.namespaceURI){I=B.namespace;break}}if(I!==l.namespaceURI)for(var w=u.length-1;w>=0;w--){var B=u[w];if(B.namespace===l.namespaceURI){B.prefix&&(p=B.prefix+":"+g);break}}}if(s&&!Wt.QName_exact.test(p))throw new _e('The element name "'+p+'" is not a valid XML QName',ai.InvalidStateError);e.push("<",p);for(var C=u.slice(),x=0;x<A;x++){var _=f.item(x);_.prefix=="xmlns"?C.push({prefix:_.localName,namespace:_.value}):_.nodeName=="xmlns"&&C.push({prefix:"",namespace:_.value})}for(var x=0;x<A;x++){var _=f.item(x);if($6(_,c,C)){var R=_.prefix||"",U=_.namespaceURI;PI(e,R?"xmlns:"+R:"xmlns",U,s),C.push({prefix:R,namespace:U})}var T=n?n(_):_;T&&(typeof T=="string"?e.push(T):PI(e,T.name,T.value,s))}if(g===p&&$6(l,c,C)){var D=l.prefix||"",U=l.namespaceURI;PI(e,D?"xmlns:"+D:"xmlns",U,s),C.push({prefix:D,namespace:U})}var b=!l.firstChild;if(b&&(c||l.namespaceURI===Cs.HTML)&&(b=EX(g)),b)return e.push("/>"),null;if(e.push(">"),c&&CX(g)){for(var Q=l.firstChild;Q;)Q.data?e.push(Q.data):D1(Q,e,C.slice(),i),Q=Q.nextSibling;return e.push("</",p,">"),null}return{ns:C,tag:p};case Wd:case qo:if(s&&l.nodeType===Wd&&l.documentElement==null)throw new _e("The Document has no documentElement",ai.InvalidStateError);return{ns:u};case Zd:return PI(e,l.name,l.value,s),null;case Hh:if(s&&Wt.InvalidChar.test(l.data))throw new _e("The Text node data contains characters outside the XML Char production",ai.InvalidStateError);return e.push(l.data.replace(/[<&>]/g,iT)),null;case W6:if(s&&l.data.indexOf("]]>")!==-1)throw new _e('The CDATASection data contains "]]>"',ai.InvalidStateError);return a?e.push(Wt.CDATA_START,l.data.replace(/]]>/g,"]]]]><![CDATA[>"),Wt.CDATA_END):e.push(Wt.CDATA_START,l.data,Wt.CDATA_END),null;case B1:if(s){if(Wt.InvalidChar.test(l.data))throw new _e("The comment node data contains characters outside the XML Char production",ai.InvalidStateError);if(l.data.indexOf("--")!==-1||l.data[l.data.length-1]==="-")throw new _e('The comment node data contains "--" or ends with "-"',ai.InvalidStateError)}return e.push(Wt.COMMENT_START,l.data,Wt.COMMENT_END),null;case Z6:var v=l.publicId,E=l.systemId;if(s){if(!Wt.Name_exact.test(l.name))throw new _e('The doctype name "'+l.name+'" is not a valid XML Name',ai.InvalidStateError);if(v&&!Wt.PubidLiteral_match.test(v))throw new _e("DocumentType publicId is not a valid PubidLiteral",ai.InvalidStateError);if(E&&E!=="."&&!Wt.SystemLiteral_match.test(E))throw new _e("DocumentType systemId is not a valid SystemLiteral",ai.InvalidStateError);if(l.internalSubset&&l.internalSubset.indexOf("]>")!==-1)throw new _e('DocumentType internalSubset contains "]>"',ai.InvalidStateError)}return e.push(Wt.DOCTYPE_DECL_START," ",l.name),v?(e.push(" ",Wt.PUBLIC," ",v),E&&E!=="."&&e.push(" ",E)):E&&E!=="."&&e.push(" ",Wt.SYSTEM," ",E),l.internalSubset&&e.push(" [",l.internalSubset,"]"),e.push(">"),null;case E1:if(s){if(!Wt.NCName_exact.test(l.target)||l.target.toLowerCase()==="xml")throw new _e('The processing instruction target "'+l.target+'" is not a valid XML NCName or is reserved',ai.InvalidStateError);if(Wt.InvalidChar.test(l.data))throw new _e("The ProcessingInstruction data contains characters outside the XML Char production",ai.InvalidStateError);if(l.data.indexOf("?>")!==-1)throw new _e('The ProcessingInstruction data contains "?>"',ai.InvalidStateError)}return e.push("<?",l.target," ",l.data,"?>"),null;case X6:if(s&&!Wt.Name_exact.test(l.nodeName))throw new _e('The entity reference name "'+l.nodeName+'" is not a valid XML Name',ai.InvalidStateError);return e.push("&",l.nodeName,";"),null;default:return e.push("??",l.nodeName),null}},exit:function(l,d){d&&d.tag&&e.push("</",d.tag,">")}})}function qX(r,e,t){var i;return Gr(e,null,{enter:function(n,s){var a=n.cloneNode(!1);a.ownerDocument=r,a.parentNode=null,s===null?i=a:s.appendChild(a);var o=n.nodeType===Zd||t;return o?a:null}}),i}function dT(r,e,t){var i;return Gr(e,null,{enter:function(n,s){var a=new n.constructor(xi);for(var o in n)if(Xd(n,o)){var c=n[o];typeof c!="object"&&c!=a[o]&&(a[o]=c)}n.childNodes&&(a.childNodes=new Br),a.ownerDocument=r;var l=t;switch(a.nodeType){case yn:var d=n.attributes,u=a.attributes=new eu,f=d.length;u._ownerElement=a;for(var A=0;A<f;A++)a.setAttributeNode(dT(r,d.item(A),!0));break;case Zd:l=!0}return s!==null?s.appendChild(a):i=a,l?a:null}}),i}function uT(r,e,t){r[e]=t}function x1(r){for(var e=[],t=r.firstChild;t;)t.nodeType===yn&&e.push(t),t=t.nextSibling;return e}try{Object.defineProperty&&(Object.defineProperty(ws.prototype,"length",{get:function(){return RI(this),this.$$length}}),Object.defineProperty(ht.prototype,"textContent",{get:function(){if(this.nodeType===yn||this.nodeType===qo){var r=[];return Gr(this,null,{enter:function(e){if(e.nodeType===yn||e.nodeType===qo)return!0;if(e.nodeType===E1||e.nodeType===B1)return null;r.push(e.nodeValue)}}),r.join("")}return this.nodeValue},set:function(r){switch(this.nodeType){case yn:case qo:for(;this.firstChild;)this.removeChild(this.firstChild);(r||String(r))&&this.appendChild(this.ownerDocument.createTextNode(r));break;default:this.data=r,this.value=r,this.nodeValue=r}}}),Object.defineProperty(Lo.prototype,"data",{get:function(){return this._data!=null?this._data:""},set:function(r){this._data=r,this.length=typeof r=="string"?r.length:0}}),Object.defineProperty(Lo.prototype,"nodeValue",{get:function(){return this.data},set:function(r){this.data=r},enumerable:!0,configurable:!0}),Object.defineProperty(wa.prototype,"children",{get:function(){return new ws(this,x1)}}),Object.defineProperty(Ia.prototype,"children",{get:function(){return new ws(this,x1)}}),Object.defineProperty(ru.prototype,"children",{get:function(){return new ws(this,x1)}}),uT=function(r,e,t){r["$$"+e]=t})}catch{}Xt._updateLiveList=RI;Xt.Attr=fl;Xt.CDATASection=OI;Xt.CharacterData=Lo;Xt.Comment=NI;Xt.Document=Ia;Xt.DocumentFragment=ru;Xt.DocumentType=qI;Xt.DOMImplementation=rT;Xt.Element=wa;Xt.Entity=S1;Xt.EntityReference=MI;Xt.LiveNodeList=ws;Xt.NamedNodeMap=eu;Xt.Node=ht;Xt.NodeList=Br;Xt.Notation=k1;Xt.Text=Kh;Xt.ProcessingInstruction=LI;Xt.walkDOM=Gr;Xt.XMLSerializer=cT});var hT=ae(Gh=>{"use strict";var fT=ul().freeze;Gh.XML_ENTITIES=fT({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'});Gh.HTML_ENTITIES=fT({Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",AMP:"&",amp:"&",And:"\u2A53",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",ap:"\u2248",apacir:"\u2A6F",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",Barwed:"\u2306",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",Because:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxDL:"\u2557",boxDl:"\u2556",boxdL:"\u2555",boxdl:"\u2510",boxDR:"\u2554",boxDr:"\u2553",boxdR:"\u2552",boxdr:"\u250C",boxH:"\u2550",boxh:"\u2500",boxHD:"\u2566",boxHd:"\u2564",boxhD:"\u2565",boxhd:"\u252C",boxHU:"\u2569",boxHu:"\u2567",boxhU:"\u2568",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxUL:"\u255D",boxUl:"\u255C",boxuL:"\u255B",boxul:"\u2518",boxUR:"\u255A",boxUr:"\u2559",boxuR:"\u2558",boxur:"\u2514",boxV:"\u2551",boxv:"\u2502",boxVH:"\u256C",boxVh:"\u256B",boxvH:"\u256A",boxvh:"\u253C",boxVL:"\u2563",boxVl:"\u2562",boxvL:"\u2561",boxvl:"\u2524",boxVR:"\u2560",boxVr:"\u255F",boxvR:"\u255E",boxvr:"\u251C",bprime:"\u2035",Breve:"\u02D8",breve:"\u02D8",brvbar:"\xA6",Bscr:"\u212C",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",Cap:"\u22D2",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",CenterDot:"\xB7",centerdot:"\xB7",Cfr:"\u212D",cfr:"\u{1D520}",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",Colon:"\u2237",colon:":",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",Conint:"\u222F",conint:"\u222E",ContourIntegral:"\u222E",Copf:"\u2102",copf:"\u{1D554}",coprod:"\u2210",Coproduct:"\u2210",COPY:"\xA9",copy:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",Cross:"\u2A2F",cross:"\u2717",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",Cup:"\u22D3",cup:"\u222A",cupbrcap:"\u2A48",CupCap:"\u224D",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",Dagger:"\u2021",dagger:"\u2020",daleth:"\u2138",Darr:"\u21A1",dArr:"\u21D3",darr:"\u2193",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",DD:"\u2145",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",Diamond:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",Downarrow:"\u21D3",downarrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",ecir:"\u2256",Ecirc:"\xCA",ecirc:"\xEA",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",eDot:"\u2251",edot:"\u0117",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",Escr:"\u2130",escr:"\u212F",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",ExponentialE:"\u2147",exponentiale:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",ForAll:"\u2200",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",Fscr:"\u2131",fscr:"\u{1D4BB}",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",gE:"\u2267",ge:"\u2265",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",Gg:"\u22D9",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gnE:"\u2269",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",Gt:"\u226B",GT:">",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",hArr:"\u21D4",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",Hfr:"\u210C",hfr:"\u{1D525}",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",Hopf:"\u210D",hopf:"\u{1D559}",horbar:"\u2015",HorizontalLine:"\u2500",Hscr:"\u210B",hscr:"\u{1D4BD}",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",Ifr:"\u2111",ifr:"\u{1D526}",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Im:"\u2111",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",Int:"\u222C",int:"\u222B",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",Iscr:"\u2110",iscr:"\u{1D4BE}",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",Lang:"\u27EA",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",Larr:"\u219E",lArr:"\u21D0",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",lAtail:"\u291B",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lBarr:"\u290E",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",lE:"\u2266",le:"\u2264",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",Leftarrow:"\u21D0",leftarrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",Ll:"\u22D8",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lnE:"\u2268",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftarrow:"\u27F5",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",Lscr:"\u2112",lscr:"\u{1D4C1}",Lsh:"\u21B0",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",Lt:"\u226A",LT:"<",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",Mscr:"\u2133",mscr:"\u{1D4C2}",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",neArr:"\u21D7",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlArr:"\u21CD",nlarr:"\u219A",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nLeftarrow:"\u21CD",nleftarrow:"\u219A",nLeftrightarrow:"\u21CE",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",nopf:"\u{1D55F}",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nRightarrow:"\u21CF",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nVDash:"\u22AF",nVdash:"\u22AE",nvDash:"\u22AD",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwArr:"\u21D6",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",Ocirc:"\xD4",ocirc:"\xF4",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",Or:"\u2A54",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",Otimes:"\u2A37",otimes:"\u2297",otimesas:"\u2A36",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",Popf:"\u2119",popf:"\u{1D561}",pound:"\xA3",Pr:"\u2ABB",pr:"\u227A",prap:"\u2AB7",prcue:"\u227C",prE:"\u2AB3",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",Prime:"\u2033",prime:"\u2032",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",Qopf:"\u211A",qopf:"\u{1D562}",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",QUOT:'"',quot:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",Rang:"\u27EB",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",Rarr:"\u21A0",rArr:"\u21D2",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",rAtail:"\u291C",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",RBarr:"\u2910",rBarr:"\u290F",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",REG:"\xAE",reg:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",Rfr:"\u211C",rfr:"\u{1D52F}",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",Rightarrow:"\u21D2",rightarrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",Ropf:"\u211D",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",Rscr:"\u211B",rscr:"\u{1D4C7}",Rsh:"\u21B1",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",Sc:"\u2ABC",sc:"\u227B",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",sccue:"\u227D",scE:"\u2AB4",sce:"\u2AB0",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",seArr:"\u21D8",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",Square:"\u25A1",square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",Sub:"\u22D0",sub:"\u2282",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",Subset:"\u22D0",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",Sum:"\u2211",sum:"\u2211",sung:"\u266A",Sup:"\u22D1",sup:"\u2283",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",Supset:"\u22D1",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swArr:"\u21D9",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",Therefore:"\u2234",therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",Tilde:"\u223C",tilde:"\u02DC",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",TRADE:"\u2122",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",Uarr:"\u219F",uArr:"\u21D1",uarr:"\u2191",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrow:"\u2191",Uparrow:"\u21D1",uparrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",Updownarrow:"\u21D5",updownarrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",upsi:"\u03C5",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",vArr:"\u21D5",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",Vbar:"\u2AEB",vBar:"\u2AE8",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",VDash:"\u22AB",Vdash:"\u22A9",vDash:"\u22A8",vdash:"\u22A2",Vdashl:"\u2AE6",Vee:"\u22C1",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",Verbar:"\u2016",verbar:"|",Vert:"\u2016",vert:"|",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",Wedge:"\u22C0",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",Xi:"\u039E",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",Yuml:"\u0178",yuml:"\xFF",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",Zfr:"\u2128",zfr:"\u{1D537}",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",Zopf:"\u2124",zopf:"\u{1D56B}",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"});Gh.entityMap=Gh.HTML_ENTITIES});var CT=ae(KI=>{"use strict";var ou=ul(),Ye=w1(),mT=Uh(),MX=ou.isHTMLEscapableRawTextElement,LX=ou.isHTMLMimeType,HX=ou.isHTMLRawTextElement,jh=ou.hasOwn,AT=ou.NAMESPACE,KX=mT.ParseError,GX=mT.DOMException,iu=0,Ho=1,nu=2,zh=3,su=4,au=5,Jh=6,HI=7;function yT(){}yT.prototype={parse:function(r,e,t){var i=this.domBuilder;i.startDocument(),$X(e,e=Object.create(null)),zX(r,e,t,i,this.errorHandler),i.endDocument()}};var Q1=/&#?\w+;?/g;function zX(r,e,t,i,n){var s=LX(i.mimeType);r.indexOf(Ye.UNICODE_REPLACEMENT_CHARACTER)>=0&&n.warning("Unicode replacement character detected, source encoding issues?");function a(K){if(K>65535){K-=65536;var $=55296+(K>>10),te=56320+(K&1023);return String.fromCharCode($,te)}else return String.fromCharCode(K)}function o(K){var $=K[K.length-1]===";"?K:K+";";if(!s&&$!==K)return n.error("EntityRef: expecting ;"),K;var te=Ye.Reference.exec($);if(!te||te[0].length!==$.length)return n.error("entity not matching Reference production: "+K),K;var re=$.slice(1,-1);return jh(t,re)?t[re]:re.charAt(0)==="#"?a(parseInt(re.substring(1).replace("x","0x"))):(n.error("entity not found:"+K),K)}function c(K){if(K>I){var $=r.substring(I,K).replace(Q1,o);f&&A(I),i.characters($,0,K-I),I=K}}var l=0,d=0,u=/\r\n?|\n|$/g,f=i.locator;function A(K,$){for(;K>=d&&($=u.exec(r));)l=d,d=$.index+$[0].length,f.lineNumber++;f.columnNumber=K-l+1}for(var g=[{currentNSMap:e}],p=[],I=0;;){try{var m=r.indexOf("<",I);if(m<0){if(!s&&p.length>0)return n.fatalError("unclosed xml tag(s): "+p.join(", "));if(!r.substring(I).match(/^\s*$/)){var w=i.doc,B=w.createTextNode(r.substring(I));if(w.documentElement)return n.error("Extra content at the end of the document");w.appendChild(B),i.currentElement=B}return}if(m>I){var C=r.substring(I,m);!s&&p.length===0&&(C=C.replace(new RegExp(Ye.S_OPT.source,"g"),""),C&&n.error("Unexpected content outside root element: '"+C+"'")),c(m)}switch(r.charAt(m+1)){case"/":var N=r.indexOf(">",m+2),x=r.substring(m+2,N>0?N:void 0);if(!x)return n.fatalError("end tag name missing");var _=Ye.reg("^",Ye.QName_group,Ye.S_OPT,"$"),R=N>0&&_.exec(x);if(!R){var U=N>0&&Ye.reg("^",Ye.QName_group).exec(x);if(s&&U)n.warning('end tag name contains invalid trailing characters: "'+x+'"'),R=U;else if(U&&new RegExp(_.source,_.flags+"m").test(x))n.error('end tag name is followed by a line break and trailing content: "'+x+'"'),R=U;else return n.fatalError('end tag name contains invalid characters: "'+x+'"')}if(!i.currentElement&&!i.doc.documentElement)return;var T=p[p.length-1]||i.currentElement.tagName||i.doc.documentElement.tagName||"";if(T!==R[1]){var D=R[1].toLowerCase();if(!s||T.toLowerCase()!==D)return n.fatalError('Opening and ending tag mismatch: "'+T+'" != "'+x+'"')}var b=g.pop();p.pop();var Q=b.localNSMap;if(i.endElement(b.uri,b.localName,T),Q)for(var v in Q)jh(Q,v)&&i.endPrefixMapping(v);N++;break;case"?":f&&A(m),N=YX(r,m,i,n);break;case"!":f&&A(m),N=wT(r,m,i,n,s);break;default:f&&A(m);var E=new xT,P=g[g.length-1].currentNSMap,N=JX(r,m,E,P,o,n,s),j=E.length;if(E.closed||(s&&ou.isHTMLVoidElement(E.tagName)?E.closed=!0:p.push(E.tagName)),f&&j){for(var z=gT(f,{}),L=0;L<j;L++){var G=E[L];A(G.offset),G.locator=gT(f,{})}i.locator=z,pT(E,i,P)&&g.push(E),i.locator=f}else pT(E,i,P)&&g.push(E);s&&!E.closed?N=jX(r,N,E.tagName,o,i):N++}}catch(K){if(K instanceof KX)throw K;if(K instanceof GX)return n.fatalError("Error constructing the DOM: "+K.name+": "+K.message,K);n.error("element parse error: "+K),N=-1}N>I?I=N:c(Math.max(m,I)+1)}}function gT(r,e){return e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber,e}function JX(r,e,t,i,n,s,a){function o(A,g,p){if(jh(t.attributeNames,A))return s.fatalError("Attribute "+A+" redefined");if(!a&&g.indexOf("<")>=0)return s.fatalError("Unescaped '<' not allowed in attributes values");t.addValue(A,g.replace(/[\t\n\r]/g," ").replace(Q1,n),p)}for(var c,l,d=++e,u=iu;;){var f=r.charAt(d);if(u===iu&&f==="<")throw new Error("unexpected < in tag name: "+r.slice(e,d));switch(f){case"=":if(u===Ho)c=r.slice(e,d),u=zh;else if(u===nu)u=zh;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(u===zh||u===Ho)if(u===Ho&&(s.warning('attribute value must after "="'),c=r.slice(e,d)),e=d+1,d=r.indexOf(f,e),d>0)l=r.slice(e,d),o(c,l,e-1),u=au;else throw new Error("attribute value no end '"+f+"' match");else if(u==su)l=r.slice(e,d),o(c,l,e),s.warning('attribute "'+c+'" missed start quot('+f+")!!"),e=d+1,u=au;else throw new Error('attribute value must after "="');break;case"/":switch(u){case iu:t.setTagName(r.slice(e,d));case au:case Jh:case HI:u=HI,t.closed=!0;case su:case Ho:break;case nu:t.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),u==iu&&t.setTagName(r.slice(e,d)),d;case">":switch(u){case iu:t.setTagName(r.slice(e,d));case au:case Jh:case HI:break;case su:case Ho:l=r.slice(e,d),l.slice(-1)==="/"&&(t.closed=!0,l=l.slice(0,-1));case nu:u===nu&&(l=c),u==su?(s.warning('attribute "'+l+'" missed quot(")!'),o(c,l,e)):(a||s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),o(l,l,e));break;case zh:if(!a)return s.fatalError(`AttValue: ' or " expected`)}return d;case"\x80":f=" ";default:if(f<=" ")switch(u){case iu:t.setTagName(r.slice(e,d)),u=Jh;break;case Ho:c=r.slice(e,d),u=nu;break;case su:var l=r.slice(e,d);s.warning('attribute "'+l+'" missed quot(")!!'),o(c,l,e);case au:u=Jh;break}else switch(u){case nu:a||s.warning('attribute "'+c+'" missed value!! "'+c+'" instead2!!'),o(c,c,e),e=d,u=Ho;break;case au:s.warning('attribute space is required"'+c+'"!!');case Jh:u=Ho,e=d;break;case zh:u=su,e=d;break;case HI:throw new Error("elements closed character '/' and '>' must be connected to")}}d++}}function pT(r,e,t){for(var i=r.tagName,n=null,u=r.length;u--;){var s=r[u],a=s.qName,o=s.value,f=a.indexOf(":");if(f>0)var c=s.prefix=a.slice(0,f),l=a.slice(f+1),d=c==="xmlns"&&l;else l=a,c=null,d=a==="xmlns"&&"";s.localName=l,d!==!1&&(n==null&&(n=Object.create(null),t=Object.create(t)),t[d]=n[d]=o,s.uri=AT.XMLNS,e.startPrefixMapping(d,o))}for(var u=r.length;u--;)s=r[u],s.prefix&&(s.prefix==="xml"&&(s.uri=AT.XML),s.prefix!=="xmlns"&&(s.uri=t[s.prefix]));var f=i.indexOf(":");f>0?(c=r.prefix=i.slice(0,f),l=r.localName=i.slice(f+1)):(c=null,l=r.localName=i);var A=r.uri=t[c||""];if(e.startElement(A,l,i,r),r.closed){if(e.endElement(A,l,i),n)for(c in n)jh(n,c)&&e.endPrefixMapping(c)}else return r.currentNSMap=t,r.localNSMap=n,!0}function jX(r,e,t,i,n){var s=MX(t);if(s||HX(t)){var a=new RegExp("</"+t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+">","ig");a.lastIndex=e;var o=a.exec(r),c=o?o.index:-1;if(c<0)return e+1;var l=r.substring(e+1,c);return s&&(l=l.replace(Q1,i)),n.characters(l,0,l.length),c}return e+1}function $X(r,e){for(var t in r)jh(r,t)&&(e[t]=r[t])}function IT(r,e){var t=e;function i(d){return d=d||0,r.charAt(t+d)}function n(d){d=d||1,t+=d}function s(){for(var d=0;t<r.length;){var u=i();if(u!==" "&&u!==` +`&&u!==" "&&u!=="\r")return d;d++,n()}return-1}function a(){return r.substring(t)}function o(d){return r.substring(t,t+d.length)===d}function c(d){return r.substring(t,t+d.length).toUpperCase()===d.toUpperCase()}function l(d){var u=Ye.reg("^",d),f=u.exec(a());return f?(n(f[0].length),f[0]):null}return{char:i,getIndex:function(){return t},getMatch:l,getSource:function(){return r},skip:n,skipBlanks:s,substringFromIndex:a,substringStartsWith:o,substringStartsWithCaseInsensitive:c}}function VX(r,e){function t(o,c){var l=Ye.PI.exec(o.substringFromIndex());return l?l[1].toLowerCase()==="xml"?c.fatalError("xml declaration is only allowed at the start of the document, but found at position "+o.getIndex()):(o.skip(l[0].length),l[0]):c.fatalError("processing instruction is not well-formed at position "+o.getIndex())}var i=r.getSource();if(r.char()==="["){r.skip(1);for(var n=r.getIndex();r.getIndex()<i.length;){if(r.skipBlanks(),r.char()==="]"){var s=i.substring(n,r.getIndex());return r.skip(1),s}var a=null;if(r.char()==="<"&&r.char(1)==="!")switch(r.char(2)){case"E":r.char(3)==="L"?a=r.getMatch(Ye.elementdecl):r.char(3)==="N"&&(a=r.getMatch(Ye.EntityDecl));break;case"A":a=r.getMatch(Ye.AttlistDecl);break;case"N":a=r.getMatch(Ye.NotationDecl);break;case"-":a=r.getMatch(Ye.Comment);break}else if(r.char()==="<"&&r.char(1)==="?")a=t(r,e);else if(r.char()==="%")a=r.getMatch(Ye.PEReference);else return e.fatalError("Error detected in Markup declaration");if(!a)return e.fatalError("Error in internal subset at position "+r.getIndex())}return e.fatalError("doctype internal subset is not well-formed, missing ]")}}function wT(r,e,t,i,n){var s=IT(r,e);switch(n?s.char(2).toUpperCase():s.char(2)){case"-":var a=s.getMatch(Ye.Comment);return a?(t.comment(a,Ye.COMMENT_START.length,a.length-Ye.COMMENT_START.length-Ye.COMMENT_END.length),s.getIndex()):i.fatalError("comment is not well-formed at position "+s.getIndex());case"[":var o=s.getMatch(Ye.CDSect);return o?!n&&!t.currentElement?i.fatalError("CDATA outside of element"):(t.startCDATA(),t.characters(o,Ye.CDATA_START.length,o.length-Ye.CDATA_START.length-Ye.CDATA_END.length),t.endCDATA(),s.getIndex()):i.fatalError("Invalid CDATA starting at position "+e);case"D":{if(t.doc&&t.doc.documentElement)return i.fatalError("Doctype not allowed inside or after documentElement at position "+s.getIndex());if(n?!s.substringStartsWithCaseInsensitive(Ye.DOCTYPE_DECL_START):!s.substringStartsWith(Ye.DOCTYPE_DECL_START))return i.fatalError("Expected "+Ye.DOCTYPE_DECL_START+" at position "+s.getIndex());if(s.skip(Ye.DOCTYPE_DECL_START.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ye.DOCTYPE_DECL_START+" at position "+s.getIndex());var c={name:void 0,publicId:void 0,systemId:void 0,internalSubset:void 0};if(c.name=s.getMatch(Ye.Name),!c.name)return i.fatalError("doctype name missing or contains unexpected characters at position "+s.getIndex());if(n&&c.name.toLowerCase()!=="html"&&i.warning("Unexpected DOCTYPE in HTML document at position "+s.getIndex()),s.skipBlanks(),s.substringStartsWith(Ye.PUBLIC)||s.substringStartsWith(Ye.SYSTEM)){var l=Ye.ExternalID_match.exec(s.substringFromIndex());if(!l)return i.fatalError("doctype external id is not well-formed at position "+s.getIndex());l.groups.SystemLiteralOnly!==void 0?c.systemId=l.groups.SystemLiteralOnly:(c.systemId=l.groups.SystemLiteral,c.publicId=l.groups.PubidLiteral),s.skip(l[0].length)}else if(n&&s.substringStartsWithCaseInsensitive(Ye.SYSTEM)){if(s.skip(Ye.SYSTEM.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ye.SYSTEM+" at position "+s.getIndex());if(c.systemId=s.getMatch(Ye.ABOUT_LEGACY_COMPAT_SystemLiteral),!c.systemId)return i.fatalError("Expected "+Ye.ABOUT_LEGACY_COMPAT+" in single or double quotes after "+Ye.SYSTEM+" at position "+s.getIndex())}return n&&c.systemId&&!Ye.ABOUT_LEGACY_COMPAT_SystemLiteral.test(c.systemId)&&i.warning("Unexpected doctype.systemId in HTML document at position "+s.getIndex()),n||(s.skipBlanks(),c.internalSubset=VX(s,i)),s.skipBlanks(),s.char()!==">"?i.fatalError("doctype not terminated with > at position "+s.getIndex()):(s.skip(1),t.startDTD(c.name,c.publicId,c.systemId,c.internalSubset),t.endDTD(),s.getIndex())}default:return i.fatalError('Not well-formed XML starting with "<!" at position '+e)}}function YX(r,e,t,i){var n=r.substring(e).match(Ye.PI);if(!n)return i.fatalError("Invalid processing instruction starting at position "+e);if(n[1].toLowerCase()==="xml"){if(e>0)return i.fatalError("processing instruction at position "+e+" is an xml declaration which is only at the start of the document");if(!Ye.XMLDecl.test(r.substring(e)))return i.fatalError("xml declaration is not well-formed")}return t.processingInstruction(n[1],n[2]),e+n[0].length}function xT(){this.attributeNames=Object.create(null)}xT.prototype={setTagName:function(r){if(!Ye.QName_exact.test(r))throw new Error("invalid tagName:"+r);this.tagName=r},addValue:function(r,e,t){if(!Ye.QName_exact.test(r))throw new Error("invalid attribute:"+r);this.attributeNames[r]=this.length,this[this.length++]={qName:r,value:e,offset:t}},length:0,getLocalName:function(r){return this[r].localName},getLocator:function(r){return this[r].locator},getQName:function(r){return this[r].qName},getURI:function(r){return this[r].uri},getValue:function(r){return this[r].value}};KI.XMLReader=yT;KI.parseUtils=IT;KI.parseDoctypeCommentOrCData=wT});var DT=ae(lu=>{"use strict";var hl=ul(),WX=_1(),XX=Uh(),ET=hT(),ZX=CT(),eZ=WX.DOMImplementation,tZ=hl.hasDefaultHTMLNamespace,rZ=hl.isHTMLMimeType,iZ=hl.isValidMimeType,vT=hl.MIME_TYPE,F1=hl.NAMESPACE,BT=XX.ParseError,nZ=ZX.XMLReader;function kT(r){return r.replace(/\r[\n\u0085]/g,` `).replace(/[\r\u0085\u2028\u2029]/g,` -`)}function QP(r){if(r=r||{},r.locator===void 0&&(r.locator=!0),this.assign=r.assign||Ec.assign,this.domHandler=r.domHandler||cy,this.onError=r.onError||r.errorHandler,r.errorHandler&&typeof r.errorHandler!="function")throw new TypeError("errorHandler object is no longer supported, switch to onError!");r.errorHandler&&r.errorHandler("warning","The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=r.normalizeLineEndings||DP,this.locator=!!r.locator,this.xmlns=this.assign(Object.create(null),r.xmlns)}QP.prototype.parseFromString=function(r,e){if(!uV(e))throw new TypeError('DOMParser.parseFromString: the provided mimeType "'+e+'" is not valid.');var t=this.assign(Object.create(null),this.xmlns),i=bP.XML_ENTITIES,n=t[""]||null;lV(e)?(i=bP.HTML_ENTITIES,n=PE.HTML):e===SP.XML_SVG_IMAGE&&(n=PE.SVG),t[""]=n,t.xml=t.xml||PE.XML;var s=new this.domHandler({mimeType:e,defaultNamespace:n,onError:this.onError}),o=this.locator?{}:void 0;this.locator&&s.setDocumentLocator(o);var a=new fV;a.errorHandler=s,a.domBuilder=s;var c=!Ec.isHTMLMimeType(e);return c&&typeof r!="string"&&a.errorHandler.fatalError("source is not a string"),a.parse(this.normalizeLineEndings(String(r)),t,i),s.doc.documentElement||a.errorHandler.fatalError("missing root element"),s.doc};function cy(r){var e=r||{};this.mimeType=e.mimeType||SP.XML_APPLICATION,this.defaultNamespace=e.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=e.onError}function rd(r,e){e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber}cy.prototype={startDocument:function(){var r=new cV;this.doc=dV(this.mimeType)?r.createHTMLDocument(!1):r.createDocument(this.defaultNamespace,"")},startElement:function(r,e,t,i){var n=this.doc,s=n.createElementNS(r,t||e),o=i.length;ay(this,s),this.currentElement=s,this.locator&&rd(this.locator,s);for(var a=0;a<o;a++){var r=i.getURI(a),c=i.getValue(a),t=i.getQName(a),l=n.createAttributeNS(r,t);this.locator&&rd(i.getLocator(a),l),l.value=l.nodeValue=c,s.setAttributeNode(l)}},endElement:function(r,e,t){this.currentElement=this.currentElement.parentNode},startPrefixMapping:function(r,e){},endPrefixMapping:function(r){},processingInstruction:function(r,e){var t=this.doc.createProcessingInstruction(r,e);this.locator&&rd(this.locator,t),ay(this,t)},ignorableWhitespace:function(r,e,t){},characters:function(r,e,t){if(r=kP.apply(this,arguments),r){if(this.cdata)var i=this.doc.createCDATASection(r);else var i=this.doc.createTextNode(r);this.currentElement?this.currentElement.appendChild(i):/^\s*$/.test(r)&&this.doc.appendChild(i),this.locator&&rd(this.locator,i)}},skippedEntity:function(r){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(r){r&&(r.lineNumber=0),this.locator=r},comment:function(r,e,t){r=kP.apply(this,arguments);var i=this.doc.createComment(r);this.locator&&rd(this.locator,i),ay(this,i)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(r,e,t,i){var n=this.doc.implementation;if(n&&n.createDocumentType){var s=n.createDocumentType(r,e,t,i);this.locator&&rd(this.locator,s),ay(this,s),this.doc.doctype=s}},reportError:function(r,e){if(typeof this.onError=="function")try{this.onError(r,e,this)}catch(t){throw new vP("Reporting "+r+' "'+e+'" caused '+t,this.locator)}else console.error("[xmldom "+r+"] "+e,AV(this.locator))},warning:function(r){this.reportError("warning",r)},error:function(r){this.reportError("error",r)},fatalError:function(r,e){throw this.reportError("fatalError",r),new vP(r,this.locator,e)}};function AV(r){if(r)return` -@#[line:`+r.lineNumber+",col:"+r.columnNumber+"]"}function kP(r,e,t){return typeof r=="string"?r.substr(e,t):r.length>=e+t||e?new java.lang.String(r,e,t)+"":r}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(r){cy.prototype[r]=function(){return null}});function ay(r,e){r.currentElement?r.currentElement.appendChild(e):r.doc.appendChild(e)}function hV(r){if(r==="error")throw"onErrorStopParsing"}function gV(){throw"onWarningStopParsing"}id.__DOMHandler=cy;id.DOMParser=QP;id.normalizeLineEndings=DP;id.onErrorStopParsing=hV;id.onWarningStopParsing=gV});var FP=oe(ot=>{"use strict";var nd=xc();ot.assign=nd.assign;ot.hasDefaultHTMLNamespace=nd.hasDefaultHTMLNamespace;ot.isHTMLMimeType=nd.isHTMLMimeType;ot.isValidMimeType=nd.isValidMimeType;ot.MIME_TYPE=nd.MIME_TYPE;ot.NAMESPACE=nd.NAMESPACE;var ly=ff();ot.DOMException=ly.DOMException;ot.DOMExceptionName=ly.DOMExceptionName;ot.ExceptionCode=ly.ExceptionCode;ot.ParseError=ly.ParseError;var hr=_E();ot.Attr=hr.Attr;ot.CDATASection=hr.CDATASection;ot.CharacterData=hr.CharacterData;ot.Comment=hr.Comment;ot.Document=hr.Document;ot.DocumentFragment=hr.DocumentFragment;ot.DocumentType=hr.DocumentType;ot.DOMImplementation=hr.DOMImplementation;ot.Element=hr.Element;ot.Entity=hr.Entity;ot.EntityReference=hr.EntityReference;ot.LiveNodeList=hr.LiveNodeList;ot.NamedNodeMap=hr.NamedNodeMap;ot.Node=hr.Node;ot.NodeList=hr.NodeList;ot.Notation=hr.Notation;ot.ProcessingInstruction=hr.ProcessingInstruction;ot.Text=hr.Text;ot.XMLSerializer=hr.XMLSerializer;var dy=_P();ot.DOMParser=dy.DOMParser;ot.normalizeLineEndings=dy.normalizeLineEndings;ot.onErrorStopParsing=dy.onErrorStopParsing;ot.onWarningStopParsing=dy.onWarningStopParsing});function PP(r){if(typeof r=="string")return r.trim()||void 0;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Array.isArray(r)&&r.length>0){let e=r[0];return(e?.nodeValue??e?.textContent??"").trim()||void 0}}function mV(r){let e=r;return e=e.replace(/<!DOCTYPE[^>]*>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(new RegExp(`<(${pV})([^>]*?)/?>`,"gi"),"<$1$2/>"),e}function UP(r,e,t,i,n,s){let o=new TP.DOMParser({onError:()=>{}}).parseFromString(mV(r),"text/xml"),a=bf.select(e,o),c=[];for(let l of a)try{let d=bf.select(t,l);if(d.length===0)continue;let u=d[0],f="",h="";if(u.nodeType===1){let y=u;f=y.textContent?.trim()||"",h=y.getAttribute("href")||""}else if(u.nodeType===2){let y=u;f=y.value.trim(),h=y.value}else f=u.textContent?.trim()||"";let g=f.endsWith("/");if(g&&(f=f.slice(0,-1)),!f||s.includes(f))continue;let p=PP(bf.select(i,l)),I=PP(bf.select(n,l));c.push({name:f,url:h,isDir:g,size:p,modified:I})}catch{}return c}function IV(r){for(let e=r.length-1;e>=0;e--)if(r[e]>="0"&&r[e]<="9")return[r.slice(0,e+1).trim(),r.slice(e+1).trim()];return["",r]}function RP(r){if(!r||r.trim()==="-")return 0;let e=r.trim(),[t,i]=IV(e),n=i.toLowerCase(),s=yV[n]??1,o=parseFloat(t);return isNaN(o)?0:Math.round(o*s)}function NP(r,e){if(!r)return new Date().toISOString();try{let t=r.match(/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})/);if(t){let[,n,s,o,a,c]=t;return new Date(`${n}-${s}-${o}T${a}:${c}:00`).toISOString()}let i=new Date(r);if(!isNaN(i.getTime()))return i.toISOString()}catch{}return new Date().toISOString()}var bf,TP,pV,yV,qP=j(()=>{"use strict";bf=Qr(kF(),1),TP=Qr(FP(),1);pV="area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr";yV={"":1,b:1,byte:1,bytes:1,k:1024,kb:1024,kib:1024,m:1<<20,mb:1<<20,mib:1<<20,g:1<<30,gb:1<<30,gib:1<<30,t:256,tb:256,tib:256,p:1<<50,pb:1<<50,pib:1<<50}});function wV(r){let e={...r||{}};return e.url=(e.url||"").trim(),e.url&&!/:\/\//.test(e.url)&&(e.url="https://"+e.url),e.url&&!e.url.endsWith("/")&&(e.url+="/"),e.item_xpath=e.item_xpath||OP,e.name_xpath=e.name_xpath||MP,e.size_xpath=e.size_xpath||LP,e.modified_xpath=e.modified_xpath||HP,e.modified_time_format=e.modified_time_format||"",e.ignore_file_names=e.ignore_file_names||"",e}var OP,MP,LP,HP,uy,KP=j(()=>{"use strict";Be();He();qP();OP="//pre/a",MP="@href",LP="string(following-sibling::text()[1])",HP="string(following-sibling::text()[2])";uy=class{addition;ignoreNames=[];constructor(e){this.addition=wV(e),this.addition.ignore_file_names&&(this.ignoreNames=this.addition.ignore_file_names.split(/\r?\n|,/).map(t=>t.trim()).filter(t=>t))}async init(){if(!this.addition.url)throw new Error("url is required")}cleanRel(e){return(e||"").split("/").filter(Boolean).join("/")}buildDirURL(e){let t=this.cleanRel(e);return this.addition.url+t+(t?"/":"")}nodeToFileItem(e,t){let i=new URL(e.url,t).toString(),n=e.isDir;return{name:e.name,size:e.size?RP(e.size):0,is_dir:n,modified:e.modified?NP(e.modified,this.addition.modified_time_format||""):new Date().toISOString(),sign:"",type:X(e.name,n),raw_url:n?"":i}}async list(e,t){let i=this.buildDirURL(t),n=await fetch(i);if(!n.ok)throw new Error(`Failed to fetch ${i}: HTTP ${n.status}`);let s=await n.text(),a=UP(s,this.addition.item_xpath||OP,this.addition.name_xpath||MP,this.addition.size_xpath||LP,this.addition.modified_xpath||HP,this.ignoreNames).filter(c=>c.name!==".."&&c.name!==".").map(c=>this.nodeToFileItem(c,i));return de(a,"name","asc")}async get(e,t){let i=this.cleanRel(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.url,type:1};let s=this.addition.url+i;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:s,type:X(n,!1),raw_url:s}}async mkdir(e,t){throw new Error("AutoIndex is read-only")}async rename(e,t,i){throw new Error("AutoIndex is read-only")}async remove(e,t,i){throw new Error("AutoIndex is read-only")}async move(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async copy(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async put(e,t,i){throw new Error("AutoIndex is read-only")}}});var ia,GP,zP,JP,jP,$P,VP,Hye,YP,Kye,WP,XP,ZP,e5,Gye,t5,TE=j(()=>{"use strict";ia="https://drive.proton.me/api",GP="https://account.proton.me/api/auth/info",zP="https://account.proton.me/api/auth/v4",JP="https://account.proton.me/api/auth/v4/2fa",jP="https://account.proton.me/api/auth/v4/refresh",$P=ia+"/core/v4/keys/salts",VP=ia+"/core/v4/users",Hye=ia+"/core/v4/addresses",YP=ia+"/drive/shares",Kye=ia+"/drive/volumes",WP="application/vnd.protonmail.v1+json",XP="js@0.3.0",ZP="ProtonDrive/v1.70.0 (Windows NT 10.0.22000; Win64; x64)",e5="web-drive@5.2.0+0f69f7a8",Gye=4*1024*1024,t5=1});var i5=oe((r5,na)=>{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof wt=="function"&&typeof na=="object"&&na&&na.exports?na.exports=e():(r.dcodeIO=r.dcodeIO||{}).bcrypt=e()})(r5,function(){"use strict";var r={},e=null;function t(D){if(typeof na<"u"&&na&&na.exports)try{return wt("crypto").randomBytes(D)}catch{}try{var B;return(self.crypto||self.msCrypto).getRandomValues(B=new Uint32Array(D)),Array.prototype.slice.call(B)}catch{}if(!e)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return e(D)}var i=!1;try{t(1),i=!0}catch{}e=null,r.setRandomFallback=function(D){e=D},r.genSaltSync=function(D,B){if(D=D||g,typeof D!="number")throw Error("Illegal arguments: "+typeof D+", "+typeof B);D<4?D=4:D>31&&(D=31);var Q=[];return Q.push("$2a$"),D<10&&Q.push("0"),Q.push(D.toString()),Q.push("$"),Q.push(d(t(h),h)),Q.join("")},r.genSalt=function(D,B,Q){if(typeof B=="function"&&(Q=B,B=void 0),typeof D=="function"&&(Q=D,D=void 0),typeof D>"u")D=g;else if(typeof D!="number")throw Error("illegal arguments: "+typeof D);function v(E){s(function(){try{E(null,r.genSaltSync(D))}catch(P){E(P)}})}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);v(Q)}else return new Promise(function(E,P){v(function(N,J){if(N){P(N);return}E(J)})})},r.hashSync=function(D,B){if(typeof B>"u"&&(B=g),typeof B=="number"&&(B=r.genSaltSync(B)),typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return T(D,B)},r.hash=function(D,B,Q,v){function E(P){typeof D=="string"&&typeof B=="number"?r.genSalt(B,function(N,J){T(D,J,P,v)}):typeof D=="string"&&typeof B=="string"?T(D,B,P,v):s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)))}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})};function n(D,B){for(var Q=0,v=0,E=0,P=D.length;E<P;++E)D.charCodeAt(E)===B.charCodeAt(E)?++Q:++v;return Q<0?!1:v===0}r.compareSync=function(D,B){if(typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return B.length!==60?!1:n(r.hashSync(D,B.substr(0,B.length-31)),B)},r.compare=function(D,B,Q,v){function E(P){if(typeof D!="string"||typeof B!="string"){s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)));return}if(B.length!==60){s(P.bind(this,null,!1));return}r.hash(D,B.substr(0,29),function(N,J){N?P(N):P(null,n(J,B))},v)}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})},r.getRounds=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);return parseInt(D.split("$")[2],10)},r.getSalt=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);if(D.length!==60)throw Error("Illegal hash length: "+D.length+" != 60");return D.substring(0,29)};var s=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function o(D){var B=[],Q=0;return f.encodeUTF16toUTF8(function(){return Q>=D.length?null:D.charCodeAt(Q++)},function(v){B.push(v)}),B}var a="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],l=String.fromCharCode;function d(D,B){var Q=0,v=[],E,P;if(B<=0||B>D.length)throw Error("Illegal len: "+B);for(;Q<B;){if(E=D[Q++]&255,v.push(a[E>>2&63]),E=(E&3)<<4,Q>=B){v.push(a[E&63]);break}if(P=D[Q++]&255,E|=P>>4&15,v.push(a[E&63]),E=(P&15)<<2,Q>=B){v.push(a[E&63]);break}P=D[Q++]&255,E|=P>>6&3,v.push(a[E&63]),v.push(a[P&63])}return v.join("")}function u(D,B){var Q=0,v=D.length,E=0,P=[],N,J,z,L,G,K;if(B<=0)throw Error("Illegal len: "+B);for(;Q<v-1&&E<B&&(K=D.charCodeAt(Q++),N=K<c.length?c[K]:-1,K=D.charCodeAt(Q++),J=K<c.length?c[K]:-1,!(N==-1||J==-1||(G=N<<2>>>0,G|=(J&48)>>4,P.push(l(G)),++E>=B||Q>=v)||(K=D.charCodeAt(Q++),z=K<c.length?c[K]:-1,z==-1)||(G=(J&15)<<4>>>0,G|=(z&60)>>2,P.push(l(G)),++E>=B||Q>=v)));)K=D.charCodeAt(Q++),L=K<c.length?c[K]:-1,G=(z&3)<<6>>>0,G|=L,P.push(l(G)),++E;var $=[];for(Q=0;Q<E;Q++)$.push(P[Q].charCodeAt(0));return $}var f=(function(){"use strict";var D={};return D.MAX_CODEPOINT=1114111,D.encodeUTF8=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<128?Q(v&127):v<2048?(Q(v>>6&31|192),Q(v&63|128)):v<65536?(Q(v>>12&15|224),Q(v>>6&63|128),Q(v&63|128)):(Q(v>>18&7|240),Q(v>>12&63|128),Q(v>>6&63|128),Q(v&63|128)),v=null},D.decodeUTF8=function(B,Q){for(var v,E,P,N,J=function(z){z=z.slice(0,z.indexOf(null));var L=Error(z.toString());throw L.name="TruncatedError",L.bytes=z,L};(v=B())!==null;)if((v&128)===0)Q(v);else if((v&224)===192)(E=B())===null&&J([v,E]),Q((v&31)<<6|E&63);else if((v&240)===224)((E=B())===null||(P=B())===null)&&J([v,E,P]),Q((v&15)<<12|(E&63)<<6|P&63);else if((v&248)===240)((E=B())===null||(P=B())===null||(N=B())===null)&&J([v,E,P,N]),Q((v&7)<<18|(E&63)<<12|(P&63)<<6|N&63);else throw RangeError("Illegal starting byte: "+v)},D.UTF16toUTF8=function(B,Q){for(var v,E=null;(v=E!==null?E:B())!==null;){if(v>=55296&&v<=57343&&(E=B())!==null&&E>=56320&&E<=57343){Q((v-55296)*1024+E-56320+65536),E=null;continue}Q(v)}E!==null&&Q(E)},D.UTF8toUTF16=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<=65535?Q(v):(v-=65536,Q((v>>10)+55296),Q(v%1024+56320)),v=null},D.encodeUTF16toUTF8=function(B,Q){D.UTF16toUTF8(B,function(v){D.encodeUTF8(v,Q)})},D.decodeUTF8toUTF16=function(B,Q){D.decodeUTF8(B,function(v){D.UTF8toUTF16(v,Q)})},D.calculateCodePoint=function(B){return B<128?1:B<2048?2:B<65536?3:4},D.calculateUTF8=function(B){for(var Q,v=0;(Q=B())!==null;)v+=D.calculateCodePoint(Q);return v},D.calculateUTF16asUTF8=function(B){var Q=0,v=0;return D.UTF16toUTF8(B,function(E){++Q,v+=D.calculateCodePoint(E)}),[Q,v]},D})();Date.now=Date.now||function(){return+new Date};var h=16,g=10,p=16,I=100,y=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],w=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],C=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function b(D,B,Q,v){var E,P=D[B],N=D[B+1];return P^=Q[0],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[1],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[2],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[3],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[4],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[5],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[6],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[7],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[8],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[9],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[10],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[11],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[12],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[13],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[14],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[15],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[16],D[B]=N^Q[p+1],D[B+1]=P,D}function x(D,B){for(var Q=0,v=0;Q<4;++Q)v=v<<8|D[B]&255,B=(B+1)%D.length;return{key:v,offp:B}}function _(D,B,Q){for(var v=0,E=[0,0],P=B.length,N=Q.length,J,z=0;z<P;z++)J=x(D,v),v=J.offp,B[z]=B[z]^J.key;for(z=0;z<P;z+=2)E=b(E,0,B,Q),B[z]=E[0],B[z+1]=E[1];for(z=0;z<N;z+=2)E=b(E,0,B,Q),Q[z]=E[0],Q[z+1]=E[1]}function R(D,B,Q,v){for(var E=0,P=[0,0],N=Q.length,J=v.length,z,L=0;L<N;L++)z=x(B,E),E=z.offp,Q[L]=Q[L]^z.key;for(E=0,L=0;L<N;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),Q[L]=P[0],Q[L+1]=P[1];for(L=0;L<J;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),v[L]=P[0],v[L+1]=P[1]}function U(D,B,Q,v,E){var P=C.slice(),N=P.length,J;if(Q<4||Q>31)if(J=Error("Illegal number of rounds (4-31): "+Q),v){s(v.bind(this,J));return}else throw J;if(B.length!==h)if(J=Error("Illegal salt length: "+B.length+" != "+h),v){s(v.bind(this,J));return}else throw J;Q=1<<Q>>>0;var z,L,G=0,K;Int32Array?(z=new Int32Array(y),L=new Int32Array(w)):(z=y.slice(),L=w.slice()),R(B,D,z,L);function $(){if(E&&E(G/Q),G<Q)for(var re=Date.now();G<Q&&(G=G+1,_(D,z,L),_(B,z,L),!(Date.now()-re>I)););else{for(G=0;G<64;G++)for(K=0;K<N>>1;K++)b(P,K<<1,z,L);var ee=[];for(G=0;G<N;G++)ee.push((P[G]>>24&255)>>>0),ee.push((P[G]>>16&255)>>>0),ee.push((P[G]>>8&255)>>>0),ee.push((P[G]&255)>>>0);if(v){v(null,ee);return}else return ee}v&&s($)}if(typeof v<"u")$();else for(var te;;)if(typeof(te=$())<"u")return te||[]}function T(D,B,Q,v){var E;if(typeof D!="string"||typeof B!="string")if(E=Error("Invalid string / salt: Not a string"),Q){s(Q.bind(this,E));return}else throw E;var P,N;if(B.charAt(0)!=="$"||B.charAt(1)!=="2")if(E=Error("Invalid salt version: "+B.substring(0,2)),Q){s(Q.bind(this,E));return}else throw E;if(B.charAt(2)==="$")P="\0",N=3;else{if(P=B.charAt(2),P!=="a"&&P!=="b"&&P!=="y"||B.charAt(3)!=="$")if(E=Error("Invalid salt revision: "+B.substring(2,4)),Q){s(Q.bind(this,E));return}else throw E;N=4}if(B.charAt(N+2)>"$")if(E=Error("Missing salt rounds"),Q){s(Q.bind(this,E));return}else throw E;var J=parseInt(B.substring(N,N+1),10)*10,z=parseInt(B.substring(N+1,N+2),10),L=J+z,G=B.substring(N+3,N+25);D+=P>="a"?"\0":"";var K=o(D),$=u(G,h);function te(re){var ee=[];return ee.push("$2"),P>="a"&&ee.push(P),ee.push("$"),L<10&&ee.push("0"),ee.push(L.toString()),ee.push("$"),ee.push(d($,$.length)),ee.push(d(re,C.length*4-1)),ee.join("")}if(typeof Q>"u")return te(U(K,$,L));U(K,$,L,function(re,ee){re?Q(re,null):Q(null,te(ee))},v)}return r.encodeBase64=d,r.decodeBase64=u,r})});var UE=oe((jye,n5)=>{n5.exports=i5()});function sd(r){let e="0x";for(let t of r)e+=t.toString(16).padStart(2,"0");return BigInt(e)}function vf(r,e){let t=r.toString(16);t.length%2!==0&&(t="0"+t);let i=new Uint8Array(t.length/2);for(let n=0;n<i.length;n++)i[n]=parseInt(t.slice(n*2,n*2+2),16);if(e!==void 0&&i.length<e){let n=new Uint8Array(e);return n.set(i,e-i.length),n}return i}function xV(...r){let e=r.reduce((n,s)=>n+s.length,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.length;return t}function CV(r,e){let t=Math.max(r.length,e.length),i=new Uint8Array(t);for(let n=0;n<t;n++)i[n]=(r[n]||0)^(e[n]||0);return i}async function Bc(...r){let e=r.length===1?r[0]:xV(...r),t=await crypto.subtle.digest("SHA-256",e);return new Uint8Array(t)}function RE(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function s5(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function EV(r){return r.length>1&&r[0]===0?r.slice(1):r}function NE(r,e,t){if(t===1n)return 0n;let i=1n,n=r%t,s=e;for(;s>0n;)s&1n&&(i=i*n%t),n=n*n%t,s>>=1n;return i}function BV(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=qE[i>>t&63];return t>0&&(e+=qE[i<<6-t&63]),e}function bV(r,e,t){if(r<2)return new TextEncoder().encode(e);let n=`$2a$10$${BV(t).padEnd(22,".")}`,o=o5.default.hashSync(e,n).slice(n.length);return vV(o)}function vV(r){let e=[],t=0,i=0;for(let n of r){let s=qE.indexOf(n);s<0||(t=t<<6|s,i+=6,i>=8&&(i-=8,e.push(t>>i&255)))}return new Uint8Array(e)}async function a5(r,e,t){let i=t.Version??4,n=EV(RE(t.Modulus)),s=sd(n),o=sd(RE(t.ServerEphemeral)),a=RE(t.Salt);if(o%s===0n)throw new Error("invalid server ephemeral (B % N == 0)");let c=bV(i,e,a),l=await Bc(a,c),d=sd(l),u=crypto.getRandomValues(new Uint8Array(32)),f=sd(u),h=NE(fy,f,s),g=vf(h,n.length),p=0n;if(i>=2){let v=vf(fy,n.length),E=await Bc(n,v);p=sd(E)}let I=vf(o,n.length),y=await Bc(g,I),w=sd(y),C=NE(fy,d,s),b=(o-p*C%s)%s;b<0n&&(b+=s);let x=f+w*d,_=NE(b,x,s),R=vf(_,n.length),U=await Bc(n),T=await Bc(vf(fy)),D=await Bc(new TextEncoder().encode(r)),B=CV(U,T),Q=await Bc(B,D,a,g,I,R);return{ClientEphemeral:s5(g),ClientProof:s5(Q),SRPSession:t.SRPSession}}var o5,fy,qE,c5=j(()=>{"use strict";o5=Qr(UE(),1),fy=2n;qE="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});import{createRequire as S6}from"module";import*as Mi from"node:crypto";function kV(r,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in r)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(r)}function St(r){return r&&r.getReader&&Array.isArray(r)}function cA(r){if(!St(r)){let e=r.getWriter(),t=e.releaseLock;return e.releaseLock=()=>{e.closed.catch(function(){}),t.call(e)},e}this.stream=r}function or(r){if(St(r))return"array";if(eo.ReadableStream&&eo.ReadableStream.prototype.isPrototypeOf(r))return"web";if(r&&!(eo.ReadableStream&&r instanceof eo.ReadableStream)&&typeof r._read=="function"&&typeof r._readableState=="object")throw new Error("Native Node streams are no longer supported: please manually convert the stream to a WebStream, using e.g. `stream.Readable.toWeb`");return r&&r.getReader?"web-like":!1}function yI(r){return Uint8Array.prototype.isPrototypeOf(r)}function _6(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!yI(r[n]))throw new Error("concatUint8Array: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(function(n){t.set(n,i),i+=n.length}),t}function gs(r){if(this.stream=r,r[xt]&&(this[xt]=r[xt].slice()),St(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{},this._cancel=()=>{};return}if(or(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{i.closed.catch(function(){}),i.releaseLock()},this._cancel=i.cancel.bind(i);return}let t=!1;this._read=async()=>t||l5.has(r)?{value:void 0,done:!0}:(t=!0,{value:r,done:!1}),this._releaseLock=()=>{if(t)try{l5.add(r)}catch{}}}function lA(r){return or(r)?r:new ReadableStream({start(e){e.enqueue(r),e.close()}})}function F6(r){let e=or(r);if(e){if(e!=="array")throw new Error("Can't convert Stream to ArrayStream here, call `readToEnd` first");return r}let t=new on;return(async()=>{let i=Hi(t);await i.write(r),await i.close()})(),t}function di(r){return r.some(e=>or(e)&&!St(e))?SV(r):r.some(e=>St(e))?DV(r):typeof r[0]=="string"?r.join(""):_6(r)}function SV(r){let e=r.map(lA),t=P6(async function(s){await Promise.all(n.map(o=>pB(o,s)))}),i=Promise.resolve(),n=e.map((s,o)=>Ba(s,(a,c)=>(i=i.then(()=>Pd(a,t.writable,{preventClose:o!==e.length-1})),i)));return t.readable}function DV(r){let e=new on,t=Promise.resolve();return r.forEach((i,n)=>(t=t.then(()=>Pd(i,e,{preventClose:n!==r.length-1})),t)),e}async function Pd(r,e,{preventClose:t=!1,preventAbort:i=!1,preventCancel:n=!1}={}){if(or(r)&&!St(r)&&!St(e)){r=lA(r);try{if(r[xt]){let a=Hi(e);for(let c=0;c<r[xt].length;c++)await a.ready,await a.write(r[xt][c]);a.releaseLock()}await r.pipeTo(e,{preventClose:t,preventAbort:i,preventCancel:n})}catch{}return}or(r)||(r=F6(r));let s=_n(r),o=Hi(e);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){t||await o.close();break}await o.write(c)}}catch(a){i||await o.abort(a)}finally{s.releaseLock(),o.releaseLock()}}function P6(r){let e=!1,t=!1,i,n,s;return{readable:new ReadableStream({start(o){s=o},pull(){i?i():e=!0},async cancel(o){t=!0,r&&await r(o),n&&n(o)}},{highWaterMark:0}),writable:new WritableStream({write:async function(o){if(t)throw new Error("Stream is cancelled");s.enqueue(o),e?e=!1:(await new Promise((a,c)=>{i=a,n=c}),i=null,n=null)},close:s.close.bind(s),abort:s.error.bind(s)})}}function sr(r,e=()=>{},t=()=>{},i={highWaterMark:0}){if(or(r))return T6(r,e,t,i);let n=e(r),s=t();return n!==void 0&&s!==void 0?di([n,s]):n!==void 0?n:s}async function gB(r,e=async()=>{},t=async()=>{},i={highWaterMark:1}){if(or(r))return T6(r,e,t,i);let n=await e(r),s=await t();return n!==void 0&&s!==void 0?di([n,s]):n!==void 0?n:s}function T6(r,e,t,i){if(St(r)){let n=new on;return(async()=>{let s=Hi(n);try{let o=await Xt(r),a=await e(o),c=await t(),l;a!==void 0&&c!==void 0?l=di([a,c]):l=a!==void 0?a:c,await s.write(l),await s.close()}catch(o){await s.abort(o)}})(),n}if(or(r)){let n,s=!1;return new ReadableStream({start(){n=r.getReader()},async pull(o){if(s){o.close(),r.releaseLock();return}try{for(;;){let{value:a,done:c}=await n.read();s=c;let l=await(c?t:e)(a);if(l!==void 0){o.enqueue(l);return}if(c){o.close(),r.releaseLock();return}}}catch(a){o.error(a)}},async cancel(o){await n.cancel(o)}},i)}throw new Error("Unreachable")}function Ba(r,e){if(or(r)&&!St(r)){let i,n=new TransformStream({start(a){i=a}}),s=Pd(r,n.writable),o=P6(async function(a){i.error(a),await s,await new Promise(c=>setTimeout(c))});return e(n.readable,o.writable),o.readable}r=F6(r);let t=new on;return e(r,t),t}function II(r,e){let t,i=Ba(r,(n,s)=>{let o=_n(n);o.remainder=()=>(o.releaseLock(),Pd(n,s),i),t=e(o)});return t}function QV(r){if(St(r))throw new Error("ArrayStream cannot be tee()d, use clone() instead");if(or(r)){let e=lA(r).tee();return e[0][xt]=e[1][xt]=r[xt],e}return[Ur(r),Ur(r)]}function Uc(r){if(St(r))return r.clone();if(or(r)){let e=QV(r);return U6(r,e[0]),e[1]}return Ur(r)}function Mf(r){return St(r)?Uc(r):or(r)?new ReadableStream({start(e){let t=Ba(r,async(i,n)=>{let s=_n(i),o=Hi(n);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){try{e.close()}catch{}await o.close();return}try{e.enqueue(c)}catch{}await o.write(c)}}catch(a){e.error(a),await o.abort(a)}});U6(r,t)}}):Ur(r)}function U6(r,e){Object.entries(Object.getOwnPropertyDescriptors(r.constructor.prototype)).forEach(([t,i])=>{t!=="constructor"&&(i.value?i.value=i.value.bind(e):i.get=i.get.bind(e),Object.defineProperty(r,t,i))})}function Ur(r,e=0,t=1/0){if(St(r))throw new Error("Not implemented");if(or(r)){if(e>=0&&t>=0){let i,n=0;return new ReadableStream({start(){i=r.getReader()},async pull(s){try{for(;;)if(n<t){let{value:o,done:a}=await i.read();if(a){s.close(),r.releaseLock();return}let c;if(n+o.length>=e&&(c=Ur(o,Math.max(e-n,0),t-n)),n+=o.length,c){s.enqueue(c);return}}else{s.close(),r.releaseLock();return}}catch(o){s.error(o)}},async cancel(s){await i.cancel(s)}},{highWaterMark:0})}if(e<0&&(t<0||t===1/0)){let i=[];return sr(r,n=>{n.length>=-e?i=[n]:i.push(n)},()=>Ur(di(i),e,t))}if(e===0&&t<0){let i;return sr(r,n=>{let s=i?di([i,n]):n;if(s.length>=-t)return i=Ur(s,t),Ur(s,e,t);i=s})}return console.warn(`stream.slice(input, ${e}, ${t}) not implemented efficiently.`),Hc(async()=>Ur(await Xt(r),e,t))}return r[xt]&&(r=di(r[xt].concat([r]))),yI(r)?r.subarray(e,t===1/0?r.length:t):r.slice(e,t)}async function Xt(r,e=di){return St(r)?r.readToEnd(e):or(r)?_n(r).readToEnd(e):r}async function pB(r,e){if(or(r)){if(r.cancel){let t=await r.cancel(e);return await new Promise(i=>setTimeout(i)),t}if(r.destroy)return r.destroy(e),await new Promise(t=>setTimeout(t)),e}}function Hc(r){let e=new on;return(async()=>{let t=Hi(e);try{await t.write(await r()),await t.close()}catch(i){await t.abort(i)}})(),e}function _n(r){return new gs(r)}function Hi(r){return new cA(r)}function Ws(r){let e=new Uint8Array;return sr(r,t=>{e=F.concatUint8Array([e,t]);let i=[],n=45,s=Math.floor(e.length/n),o=s*n,a=Uy(e.subarray(0,o));for(let c=0;c<s;c++)i.push(a.substr(c*60,60)),i.push(` -`);return e=e.subarray(o),i.join("")},()=>e.length?Uy(e)+` -`:"")}function R6(r){let e="";return sr(r,t=>{e+=t;let i=0,n=[" "," ","\r",` -`];for(let a=0;a<n.length;a++){let c=n[a];for(let l=e.indexOf(c);l!==-1;l=e.indexOf(c,l+1))i++}let s=e.length;for(;s>0&&(s-i)%4!==0;s--)n.includes(e[s])&&i--;let o=Ry(e.substr(0,s));return e=e.substr(s),o},()=>Ry(e))}function wi(r){return R6(r.replace(/-/g,"+").replace(/_/g,"/"))}function Tr(r,e){let t=Ws(r).replace(/[\r\n]/g,"");return t=t.replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,""),t}function _V(r){let e=/^-----BEGIN PGP (MESSAGE, PART \d+\/\d+|MESSAGE, PART \d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m,t=r.match(e);if(!t)throw new Error("Unknown ASCII armor type");if(/MESSAGE, PART \d+\/\d+/.test(t[1]))return m.armor.multipartSection;if(/MESSAGE, PART \d+/.test(t[1]))return m.armor.multipartLast;if(/SIGNED MESSAGE/.test(t[1]))return m.armor.signed;if(/MESSAGE/.test(t[1]))return m.armor.message;if(/PUBLIC KEY BLOCK/.test(t[1]))return m.armor.publicKey;if(/PRIVATE KEY BLOCK/.test(t[1]))return m.armor.privateKey;if(/SIGNATURE/.test(t[1]))return m.armor.signature}function bc(r,e){let t="";return e.showVersion&&(t+="Version: "+e.versionString+` +`)}function ST(r){if(r=r||{},r.locator===void 0&&(r.locator=!0),this.assign=r.assign||hl.assign,this.domHandler=r.domHandler||zI,this.onError=r.onError||r.errorHandler,r.errorHandler&&typeof r.errorHandler!="function")throw new TypeError("errorHandler object is no longer supported, switch to onError!");r.errorHandler&&r.errorHandler("warning","The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=r.normalizeLineEndings||kT,this.locator=!!r.locator,this.xmlns=this.assign(Object.create(null),r.xmlns)}ST.prototype.parseFromString=function(r,e){if(!iZ(e))throw new TypeError('DOMParser.parseFromString: the provided mimeType "'+e+'" is not valid.');var t=this.assign(Object.create(null),this.xmlns),i=ET.XML_ENTITIES,n=t[""]||null;tZ(e)?(i=ET.HTML_ENTITIES,n=F1.HTML):e===vT.XML_SVG_IMAGE&&(n=F1.SVG),t[""]=n,t.xml=t.xml||F1.XML;var s=new this.domHandler({mimeType:e,defaultNamespace:n,onError:this.onError}),a=this.locator?{}:void 0;this.locator&&s.setDocumentLocator(a);var o=new nZ;o.errorHandler=s,o.domBuilder=s;var c=!hl.isHTMLMimeType(e);return c&&typeof r!="string"&&o.errorHandler.fatalError("source is not a string"),o.parse(this.normalizeLineEndings(String(r)),t,i),s.doc.documentElement||o.errorHandler.fatalError("missing root element"),s.doc};function zI(r){var e=r||{};this.mimeType=e.mimeType||vT.XML_APPLICATION,this.defaultNamespace=e.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=e.onError}function cu(r,e){e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber}zI.prototype={startDocument:function(){var r=new eZ;this.doc=rZ(this.mimeType)?r.createHTMLDocument(!1):r.createDocument(this.defaultNamespace,"")},startElement:function(r,e,t,i){var n=this.doc,s=n.createElementNS(r,t||e),a=i.length;GI(this,s),this.currentElement=s,this.locator&&cu(this.locator,s);for(var o=0;o<a;o++){var r=i.getURI(o),c=i.getValue(o),t=i.getQName(o),l=n.createAttributeNS(r,t);this.locator&&cu(i.getLocator(o),l),l.value=l.nodeValue=c,s.setAttributeNode(l)}},endElement:function(r,e,t){this.currentElement=this.currentElement.parentNode},startPrefixMapping:function(r,e){},endPrefixMapping:function(r){},processingInstruction:function(r,e){var t=this.doc.createProcessingInstruction(r,e);this.locator&&cu(this.locator,t),GI(this,t)},ignorableWhitespace:function(r,e,t){},characters:function(r,e,t){if(r=bT.apply(this,arguments),r){if(this.cdata)var i=this.doc.createCDATASection(r);else var i=this.doc.createTextNode(r);this.currentElement?this.currentElement.appendChild(i):/^\s*$/.test(r)&&this.doc.appendChild(i),this.locator&&cu(this.locator,i)}},skippedEntity:function(r){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(r){r&&(r.lineNumber=0),this.locator=r},comment:function(r,e,t){r=bT.apply(this,arguments);var i=this.doc.createComment(r);this.locator&&cu(this.locator,i),GI(this,i)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(r,e,t,i){var n=this.doc.implementation;if(n&&n.createDocumentType){var s=n.createDocumentType(r,e,t,i);this.locator&&cu(this.locator,s),GI(this,s),this.doc.doctype=s}},reportError:function(r,e){if(typeof this.onError=="function")try{this.onError(r,e,this)}catch(t){throw new BT("Reporting "+r+' "'+e+'" caused '+t,this.locator)}else console.error("[xmldom "+r+"] "+e,sZ(this.locator))},warning:function(r){this.reportError("warning",r)},error:function(r){this.reportError("error",r)},fatalError:function(r,e){throw this.reportError("fatalError",r),new BT(r,this.locator,e)}};function sZ(r){if(r)return` +@#[line:`+r.lineNumber+",col:"+r.columnNumber+"]"}function bT(r,e,t){return typeof r=="string"?r.substr(e,t):r.length>=e+t||e?new java.lang.String(r,e,t)+"":r}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(r){zI.prototype[r]=function(){return null}});function GI(r,e){r.currentElement?r.currentElement.appendChild(e):r.doc.appendChild(e)}function aZ(r){if(r==="error")throw"onErrorStopParsing"}function oZ(){throw"onWarningStopParsing"}lu.__DOMHandler=zI;lu.DOMParser=ST;lu.normalizeLineEndings=kT;lu.onErrorStopParsing=aZ;lu.onWarningStopParsing=oZ});var _T=ae(At=>{"use strict";var du=ul();At.assign=du.assign;At.hasDefaultHTMLNamespace=du.hasDefaultHTMLNamespace;At.isHTMLMimeType=du.isHTMLMimeType;At.isValidMimeType=du.isValidMimeType;At.MIME_TYPE=du.MIME_TYPE;At.NAMESPACE=du.NAMESPACE;var JI=Uh();At.DOMException=JI.DOMException;At.DOMExceptionName=JI.DOMExceptionName;At.ExceptionCode=JI.ExceptionCode;At.ParseError=JI.ParseError;var br=_1();At.Attr=br.Attr;At.CDATASection=br.CDATASection;At.CharacterData=br.CharacterData;At.Comment=br.Comment;At.Document=br.Document;At.DocumentFragment=br.DocumentFragment;At.DocumentType=br.DocumentType;At.DOMImplementation=br.DOMImplementation;At.Element=br.Element;At.Entity=br.Entity;At.EntityReference=br.EntityReference;At.LiveNodeList=br.LiveNodeList;At.NamedNodeMap=br.NamedNodeMap;At.Node=br.Node;At.NodeList=br.NodeList;At.Notation=br.Notation;At.ProcessingInstruction=br.ProcessingInstruction;At.Text=br.Text;At.XMLSerializer=br.XMLSerializer;var jI=DT();At.DOMParser=jI.DOMParser;At.normalizeLineEndings=jI.normalizeLineEndings;At.onErrorStopParsing=jI.onErrorStopParsing;At.onWarningStopParsing=jI.onWarningStopParsing});function QT(r){if(typeof r=="string")return r.trim()||void 0;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Array.isArray(r)&&r.length>0){let e=r[0];return(e?.nodeValue??e?.textContent??"").trim()||void 0}}function lZ(r){let e=r;return e=e.replace(/<!DOCTYPE[^>]*>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(new RegExp(`<(${cZ})([^>]*?)/?>`,"gi"),"<$1$2/>"),e}function PT(r,e,t,i,n,s){let a=new FT.DOMParser({onError:()=>{}}).parseFromString(lZ(r),"text/xml"),o=$h.select(e,a),c=[];for(let l of o)try{let d=$h.select(t,l);if(d.length===0)continue;let u=d[0],f="",A="";if(u.nodeType===1){let m=u;f=m.textContent?.trim()||"",A=m.getAttribute("href")||""}else if(u.nodeType===2){let m=u;f=m.value.trim(),A=m.value}else f=u.textContent?.trim()||"";let g=f.endsWith("/");if(g&&(f=f.slice(0,-1)),!f||s.includes(f))continue;let p=QT($h.select(i,l)),I=QT($h.select(n,l));c.push({name:f,url:A,isDir:g,size:p,modified:I})}catch{}return c}function uZ(r){for(let e=r.length-1;e>=0;e--)if(r[e]>="0"&&r[e]<="9")return[r.slice(0,e+1).trim(),r.slice(e+1).trim()];return["",r]}function TT(r){if(!r||r.trim()==="-")return 0;let e=r.trim(),[t,i]=uZ(e),n=i.toLowerCase(),s=dZ[n]??1,a=parseFloat(t);return isNaN(a)?0:Math.round(a*s)}function UT(r,e){if(!r)return new Date().toISOString();try{let t=r.match(/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})/);if(t){let[,n,s,a,o,c]=t;return new Date(`${n}-${s}-${a}T${o}:${c}:00`).toISOString()}let i=new Date(r);if(!isNaN(i.getTime()))return i.toISOString()}catch{}return new Date().toISOString()}var $h,FT,cZ,dZ,RT=J(()=>{"use strict";$h=Qr(b6(),1),FT=Qr(_T(),1);cZ="area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr";dZ={"":1,b:1,byte:1,bytes:1,k:1024,kb:1024,kib:1024,m:1<<20,mb:1<<20,mib:1<<20,g:1<<30,gb:1<<30,gib:1<<30,t:256,tb:256,tib:256,p:1<<50,pb:1<<50,pib:1<<50}});function fZ(r){let e={...r||{}};return e.url=(e.url||"").trim(),e.url&&!/:\/\//.test(e.url)&&(e.url="https://"+e.url),e.url&&!e.url.endsWith("/")&&(e.url+="/"),e.item_xpath=e.item_xpath||NT,e.name_xpath=e.name_xpath||OT,e.size_xpath=e.size_xpath||qT,e.modified_xpath=e.modified_xpath||MT,e.modified_time_format=e.modified_time_format||"",e.ignore_file_names=e.ignore_file_names||"",e}var NT,OT,qT,MT,$I,LT=J(()=>{"use strict";ve();$e();RT();NT="//pre/a",OT="@href",qT="string(following-sibling::text()[1])",MT="string(following-sibling::text()[2])";$I=class{addition;ignoreNames=[];constructor(e){this.addition=fZ(e),this.addition.ignore_file_names&&(this.ignoreNames=this.addition.ignore_file_names.split(/\r?\n|,/).map(t=>t.trim()).filter(t=>t))}async init(){if(!this.addition.url)throw new Error("url is required")}cleanRel(e){return(e||"").split("/").filter(Boolean).join("/")}buildDirURL(e){let t=this.cleanRel(e);return this.addition.url+t+(t?"/":"")}nodeToFileItem(e,t){let i=new URL(e.url,t).toString(),n=e.isDir;return{name:e.name,size:e.size?TT(e.size):0,is_dir:n,modified:e.modified?UT(e.modified,this.addition.modified_time_format||""):new Date().toISOString(),sign:"",type:X(e.name,n),raw_url:n?"":i}}async list(e,t){let i=this.buildDirURL(t),n=await fetch(i);if(!n.ok)throw new Error(`Failed to fetch ${i}: HTTP ${n.status}`);let s=await n.text(),o=PT(s,this.addition.item_xpath||NT,this.addition.name_xpath||OT,this.addition.size_xpath||qT,this.addition.modified_xpath||MT,this.ignoreNames).filter(c=>c.name!==".."&&c.name!==".").map(c=>this.nodeToFileItem(c,i));return ue(o,"name","asc")}async get(e,t){let i=this.cleanRel(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.url,type:1};let s=this.addition.url+i;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:s,type:X(n,!1),raw_url:s}}async mkdir(e,t){throw new Error("AutoIndex is read-only")}async rename(e,t,i){throw new Error("AutoIndex is read-only")}async remove(e,t,i){throw new Error("AutoIndex is read-only")}async move(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async copy(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async put(e,t,i){throw new Error("AutoIndex is read-only")}}});var Ko,HT,KT,GT,zT,JT,jT,sBe,$T,aBe,VT,YT,WT,XT,oBe,ZT,P1=J(()=>{"use strict";Ko="https://drive.proton.me/api",HT="https://account.proton.me/api/auth/info",KT="https://account.proton.me/api/auth/v4",GT="https://account.proton.me/api/auth/v4/2fa",zT="https://account.proton.me/api/auth/v4/refresh",JT=Ko+"/core/v4/keys/salts",jT=Ko+"/core/v4/users",sBe=Ko+"/core/v4/addresses",$T=Ko+"/drive/shares",aBe=Ko+"/drive/volumes",VT="application/vnd.protonmail.v1+json",YT="js@0.3.0",WT="ProtonDrive/v1.70.0 (Windows NT 10.0.22000; Win64; x64)",XT="web-drive@5.2.0+0f69f7a8",oBe=4*1024*1024,ZT=1});var tU=ae((eU,Go)=>{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof _t=="function"&&typeof Go=="object"&&Go&&Go.exports?Go.exports=e():(r.dcodeIO=r.dcodeIO||{}).bcrypt=e()})(eU,function(){"use strict";var r={},e=null;function t(D){if(typeof Go<"u"&&Go&&Go.exports)try{return _t("crypto").randomBytes(D)}catch{}try{var b;return(self.crypto||self.msCrypto).getRandomValues(b=new Uint32Array(D)),Array.prototype.slice.call(b)}catch{}if(!e)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return e(D)}var i=!1;try{t(1),i=!0}catch{}e=null,r.setRandomFallback=function(D){e=D},r.genSaltSync=function(D,b){if(D=D||g,typeof D!="number")throw Error("Illegal arguments: "+typeof D+", "+typeof b);D<4?D=4:D>31&&(D=31);var Q=[];return Q.push("$2a$"),D<10&&Q.push("0"),Q.push(D.toString()),Q.push("$"),Q.push(d(t(A),A)),Q.join("")},r.genSalt=function(D,b,Q){if(typeof b=="function"&&(Q=b,b=void 0),typeof D=="function"&&(Q=D,D=void 0),typeof D>"u")D=g;else if(typeof D!="number")throw Error("illegal arguments: "+typeof D);function v(E){s(function(){try{E(null,r.genSaltSync(D))}catch(P){E(P)}})}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);v(Q)}else return new Promise(function(E,P){v(function(N,j){if(N){P(N);return}E(j)})})},r.hashSync=function(D,b){if(typeof b>"u"&&(b=g),typeof b=="number"&&(b=r.genSaltSync(b)),typeof D!="string"||typeof b!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof b);return T(D,b)},r.hash=function(D,b,Q,v){function E(P){typeof D=="string"&&typeof b=="number"?r.genSalt(b,function(N,j){T(D,j,P,v)}):typeof D=="string"&&typeof b=="string"?T(D,b,P,v):s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof b)))}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(j,z){if(j){N(j);return}P(z)})})};function n(D,b){for(var Q=0,v=0,E=0,P=D.length;E<P;++E)D.charCodeAt(E)===b.charCodeAt(E)?++Q:++v;return Q<0?!1:v===0}r.compareSync=function(D,b){if(typeof D!="string"||typeof b!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof b);return b.length!==60?!1:n(r.hashSync(D,b.substr(0,b.length-31)),b)},r.compare=function(D,b,Q,v){function E(P){if(typeof D!="string"||typeof b!="string"){s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof b)));return}if(b.length!==60){s(P.bind(this,null,!1));return}r.hash(D,b.substr(0,29),function(N,j){N?P(N):P(null,n(j,b))},v)}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(j,z){if(j){N(j);return}P(z)})})},r.getRounds=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);return parseInt(D.split("$")[2],10)},r.getSalt=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);if(D.length!==60)throw Error("Illegal hash length: "+D.length+" != 60");return D.substring(0,29)};var s=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function a(D){var b=[],Q=0;return f.encodeUTF16toUTF8(function(){return Q>=D.length?null:D.charCodeAt(Q++)},function(v){b.push(v)}),b}var o="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],l=String.fromCharCode;function d(D,b){var Q=0,v=[],E,P;if(b<=0||b>D.length)throw Error("Illegal len: "+b);for(;Q<b;){if(E=D[Q++]&255,v.push(o[E>>2&63]),E=(E&3)<<4,Q>=b){v.push(o[E&63]);break}if(P=D[Q++]&255,E|=P>>4&15,v.push(o[E&63]),E=(P&15)<<2,Q>=b){v.push(o[E&63]);break}P=D[Q++]&255,E|=P>>6&3,v.push(o[E&63]),v.push(o[P&63])}return v.join("")}function u(D,b){var Q=0,v=D.length,E=0,P=[],N,j,z,L,G,K;if(b<=0)throw Error("Illegal len: "+b);for(;Q<v-1&&E<b&&(K=D.charCodeAt(Q++),N=K<c.length?c[K]:-1,K=D.charCodeAt(Q++),j=K<c.length?c[K]:-1,!(N==-1||j==-1||(G=N<<2>>>0,G|=(j&48)>>4,P.push(l(G)),++E>=b||Q>=v)||(K=D.charCodeAt(Q++),z=K<c.length?c[K]:-1,z==-1)||(G=(j&15)<<4>>>0,G|=(z&60)>>2,P.push(l(G)),++E>=b||Q>=v)));)K=D.charCodeAt(Q++),L=K<c.length?c[K]:-1,G=(z&3)<<6>>>0,G|=L,P.push(l(G)),++E;var $=[];for(Q=0;Q<E;Q++)$.push(P[Q].charCodeAt(0));return $}var f=(function(){"use strict";var D={};return D.MAX_CODEPOINT=1114111,D.encodeUTF8=function(b,Q){var v=null;for(typeof b=="number"&&(v=b,b=function(){return null});v!==null||(v=b())!==null;)v<128?Q(v&127):v<2048?(Q(v>>6&31|192),Q(v&63|128)):v<65536?(Q(v>>12&15|224),Q(v>>6&63|128),Q(v&63|128)):(Q(v>>18&7|240),Q(v>>12&63|128),Q(v>>6&63|128),Q(v&63|128)),v=null},D.decodeUTF8=function(b,Q){for(var v,E,P,N,j=function(z){z=z.slice(0,z.indexOf(null));var L=Error(z.toString());throw L.name="TruncatedError",L.bytes=z,L};(v=b())!==null;)if((v&128)===0)Q(v);else if((v&224)===192)(E=b())===null&&j([v,E]),Q((v&31)<<6|E&63);else if((v&240)===224)((E=b())===null||(P=b())===null)&&j([v,E,P]),Q((v&15)<<12|(E&63)<<6|P&63);else if((v&248)===240)((E=b())===null||(P=b())===null||(N=b())===null)&&j([v,E,P,N]),Q((v&7)<<18|(E&63)<<12|(P&63)<<6|N&63);else throw RangeError("Illegal starting byte: "+v)},D.UTF16toUTF8=function(b,Q){for(var v,E=null;(v=E!==null?E:b())!==null;){if(v>=55296&&v<=57343&&(E=b())!==null&&E>=56320&&E<=57343){Q((v-55296)*1024+E-56320+65536),E=null;continue}Q(v)}E!==null&&Q(E)},D.UTF8toUTF16=function(b,Q){var v=null;for(typeof b=="number"&&(v=b,b=function(){return null});v!==null||(v=b())!==null;)v<=65535?Q(v):(v-=65536,Q((v>>10)+55296),Q(v%1024+56320)),v=null},D.encodeUTF16toUTF8=function(b,Q){D.UTF16toUTF8(b,function(v){D.encodeUTF8(v,Q)})},D.decodeUTF8toUTF16=function(b,Q){D.decodeUTF8(b,function(v){D.UTF8toUTF16(v,Q)})},D.calculateCodePoint=function(b){return b<128?1:b<2048?2:b<65536?3:4},D.calculateUTF8=function(b){for(var Q,v=0;(Q=b())!==null;)v+=D.calculateCodePoint(Q);return v},D.calculateUTF16asUTF8=function(b){var Q=0,v=0;return D.UTF16toUTF8(b,function(E){++Q,v+=D.calculateCodePoint(E)}),[Q,v]},D})();Date.now=Date.now||function(){return+new Date};var A=16,g=10,p=16,I=100,m=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],w=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],B=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function C(D,b,Q,v){var E,P=D[b],N=D[b+1];return P^=Q[0],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[1],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[2],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[3],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[4],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[5],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[6],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[7],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[8],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[9],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[10],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[11],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[12],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[13],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[14],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[15],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[16],D[b]=N^Q[p+1],D[b+1]=P,D}function x(D,b){for(var Q=0,v=0;Q<4;++Q)v=v<<8|D[b]&255,b=(b+1)%D.length;return{key:v,offp:b}}function _(D,b,Q){for(var v=0,E=[0,0],P=b.length,N=Q.length,j,z=0;z<P;z++)j=x(D,v),v=j.offp,b[z]=b[z]^j.key;for(z=0;z<P;z+=2)E=C(E,0,b,Q),b[z]=E[0],b[z+1]=E[1];for(z=0;z<N;z+=2)E=C(E,0,b,Q),Q[z]=E[0],Q[z+1]=E[1]}function R(D,b,Q,v){for(var E=0,P=[0,0],N=Q.length,j=v.length,z,L=0;L<N;L++)z=x(b,E),E=z.offp,Q[L]=Q[L]^z.key;for(E=0,L=0;L<N;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=C(P,0,Q,v),Q[L]=P[0],Q[L+1]=P[1];for(L=0;L<j;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=C(P,0,Q,v),v[L]=P[0],v[L+1]=P[1]}function U(D,b,Q,v,E){var P=B.slice(),N=P.length,j;if(Q<4||Q>31)if(j=Error("Illegal number of rounds (4-31): "+Q),v){s(v.bind(this,j));return}else throw j;if(b.length!==A)if(j=Error("Illegal salt length: "+b.length+" != "+A),v){s(v.bind(this,j));return}else throw j;Q=1<<Q>>>0;var z,L,G=0,K;Int32Array?(z=new Int32Array(m),L=new Int32Array(w)):(z=m.slice(),L=w.slice()),R(b,D,z,L);function $(){if(E&&E(G/Q),G<Q)for(var re=Date.now();G<Q&&(G=G+1,_(D,z,L),_(b,z,L),!(Date.now()-re>I)););else{for(G=0;G<64;G++)for(K=0;K<N>>1;K++)C(P,K<<1,z,L);var ee=[];for(G=0;G<N;G++)ee.push((P[G]>>24&255)>>>0),ee.push((P[G]>>16&255)>>>0),ee.push((P[G]>>8&255)>>>0),ee.push((P[G]&255)>>>0);if(v){v(null,ee);return}else return ee}v&&s($)}if(typeof v<"u")$();else for(var te;;)if(typeof(te=$())<"u")return te||[]}function T(D,b,Q,v){var E;if(typeof D!="string"||typeof b!="string")if(E=Error("Invalid string / salt: Not a string"),Q){s(Q.bind(this,E));return}else throw E;var P,N;if(b.charAt(0)!=="$"||b.charAt(1)!=="2")if(E=Error("Invalid salt version: "+b.substring(0,2)),Q){s(Q.bind(this,E));return}else throw E;if(b.charAt(2)==="$")P="\0",N=3;else{if(P=b.charAt(2),P!=="a"&&P!=="b"&&P!=="y"||b.charAt(3)!=="$")if(E=Error("Invalid salt revision: "+b.substring(2,4)),Q){s(Q.bind(this,E));return}else throw E;N=4}if(b.charAt(N+2)>"$")if(E=Error("Missing salt rounds"),Q){s(Q.bind(this,E));return}else throw E;var j=parseInt(b.substring(N,N+1),10)*10,z=parseInt(b.substring(N+1,N+2),10),L=j+z,G=b.substring(N+3,N+25);D+=P>="a"?"\0":"";var K=a(D),$=u(G,A);function te(re){var ee=[];return ee.push("$2"),P>="a"&&ee.push(P),ee.push("$"),L<10&&ee.push("0"),ee.push(L.toString()),ee.push("$"),ee.push(d($,$.length)),ee.push(d(re,B.length*4-1)),ee.join("")}if(typeof Q>"u")return te(U(K,$,L));U(K,$,L,function(re,ee){re?Q(re,null):Q(null,te(ee))},v)}return r.encodeBase64=d,r.decodeBase64=u,r})});var T1=ae((dBe,rU)=>{rU.exports=tU()});function uu(r){let e="0x";for(let t of r)e+=t.toString(16).padStart(2,"0");return BigInt(e)}function Vh(r,e){let t=r.toString(16);t.length%2!==0&&(t="0"+t);let i=new Uint8Array(t.length/2);for(let n=0;n<i.length;n++)i[n]=parseInt(t.slice(n*2,n*2+2),16);if(e!==void 0&&i.length<e){let n=new Uint8Array(e);return n.set(i,e-i.length),n}return i}function hZ(...r){let e=r.reduce((n,s)=>n+s.length,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.length;return t}function AZ(r,e){let t=Math.max(r.length,e.length),i=new Uint8Array(t);for(let n=0;n<t;n++)i[n]=(r[n]||0)^(e[n]||0);return i}async function Al(...r){let e=r.length===1?r[0]:hZ(...r),t=await crypto.subtle.digest("SHA-256",e);return new Uint8Array(t)}function U1(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function iU(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function gZ(r){return r.length>1&&r[0]===0?r.slice(1):r}function R1(r,e,t){if(t===1n)return 0n;let i=1n,n=r%t,s=e;for(;s>0n;)s&1n&&(i=i*n%t),n=n*n%t,s>>=1n;return i}function pZ(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=N1[i>>t&63];return t>0&&(e+=N1[i<<6-t&63]),e}function mZ(r,e,t){if(r<2)return new TextEncoder().encode(e);let n=`$2a$10$${pZ(t).padEnd(22,".")}`,a=nU.default.hashSync(e,n).slice(n.length);return yZ(a)}function yZ(r){let e=[],t=0,i=0;for(let n of r){let s=N1.indexOf(n);s<0||(t=t<<6|s,i+=6,i>=8&&(i-=8,e.push(t>>i&255)))}return new Uint8Array(e)}async function sU(r,e,t){let i=t.Version??4,n=gZ(U1(t.Modulus)),s=uu(n),a=uu(U1(t.ServerEphemeral)),o=U1(t.Salt);if(a%s===0n)throw new Error("invalid server ephemeral (B % N == 0)");let c=mZ(i,e,o),l=await Al(o,c),d=uu(l),u=crypto.getRandomValues(new Uint8Array(32)),f=uu(u),A=R1(VI,f,s),g=Vh(A,n.length),p=0n;if(i>=2){let v=Vh(VI,n.length),E=await Al(n,v);p=uu(E)}let I=Vh(a,n.length),m=await Al(g,I),w=uu(m),B=R1(VI,d,s),C=(a-p*B%s)%s;C<0n&&(C+=s);let x=f+w*d,_=R1(C,x,s),R=Vh(_,n.length),U=await Al(n),T=await Al(Vh(VI)),D=await Al(new TextEncoder().encode(r)),b=AZ(U,T),Q=await Al(b,D,o,g,I,R);return{ClientEphemeral:iU(g),ClientProof:iU(Q),SRPSession:t.SRPSession}}var nU,VI,N1,aU=J(()=>{"use strict";nU=Qr(T1(),1),VI=2n;N1="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});import{createRequire as vR}from"module";import*as nn from"node:crypto";function IZ(r,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in r)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(r)}function Ot(r){return r&&r.getReader&&Array.isArray(r)}function QA(r){if(!Ot(r)){let e=r.getWriter(),t=e.releaseLock;return e.releaseLock=()=>{e.closed.catch(function(){}),t.call(e)},e}this.stream=r}function pr(r){if(Ot(r))return"array";if(Qa.ReadableStream&&Qa.ReadableStream.prototype.isPrototypeOf(r))return"web";if(r&&!(Qa.ReadableStream&&r instanceof Qa.ReadableStream)&&typeof r._read=="function"&&typeof r._readableState=="object")throw new Error("Native Node streams are no longer supported: please manually convert the stream to a WebStream, using e.g. `stream.Readable.toWeb`");return r&&r.getReader?"web-like":!1}function tx(r){return Uint8Array.prototype.isPrototypeOf(r)}function DR(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!tx(r[n]))throw new Error("concatUint8Array: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(function(n){t.set(n,i),i+=n.length}),t}function Os(r){if(this.stream=r,r[Qt]&&(this[Qt]=r[Qt].slice()),Ot(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{},this._cancel=()=>{};return}if(pr(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{i.closed.catch(function(){}),i.releaseLock()},this._cancel=i.cancel.bind(i);return}let t=!1;this._read=async()=>t||oU.has(r)?{value:void 0,done:!0}:(t=!0,{value:r,done:!1}),this._releaseLock=()=>{if(t)try{oU.add(r)}catch{}}}function FA(r){return pr(r)?r:new ReadableStream({start(e){e.enqueue(r),e.close()}})}function _R(r){let e=pr(r);if(e){if(e!=="array")throw new Error("Can't convert Stream to ArrayStream here, call `readToEnd` first");return r}let t=new Bn;return(async()=>{let i=an(t);await i.write(r),await i.close()})(),t}function Ei(r){return r.some(e=>pr(e)&&!Ot(e))?wZ(r):r.some(e=>Ot(e))?xZ(r):typeof r[0]=="string"?r.join(""):DR(r)}function wZ(r){let e=r.map(FA),t=QR(async function(s){await Promise.all(n.map(a=>gb(a,s)))}),i=Promise.resolve(),n=e.map((s,a)=>dc(s,(o,c)=>(i=i.then(()=>qu(o,t.writable,{preventClose:a!==e.length-1})),i)));return t.readable}function xZ(r){let e=new Bn,t=Promise.resolve();return r.forEach((i,n)=>(t=t.then(()=>qu(i,e,{preventClose:n!==r.length-1})),t)),e}async function qu(r,e,{preventClose:t=!1,preventAbort:i=!1,preventCancel:n=!1}={}){if(pr(r)&&!Ot(r)&&!Ot(e)){r=FA(r);try{if(r[Qt]){let o=an(e);for(let c=0;c<r[Qt].length;c++)await o.ready,await o.write(r[Qt][c]);o.releaseLock()}await r.pipeTo(e,{preventClose:t,preventAbort:i,preventCancel:n})}catch{}return}pr(r)||(r=_R(r));let s=Xn(r),a=an(e);try{for(;;){await a.ready;let{done:o,value:c}=await s.read();if(o){t||await a.close();break}await a.write(c)}}catch(o){i||await a.abort(o)}finally{s.releaseLock(),a.releaseLock()}}function QR(r){let e=!1,t=!1,i,n,s;return{readable:new ReadableStream({start(a){s=a},pull(){i?i():e=!0},async cancel(a){t=!0,r&&await r(a),n&&n(a)}},{highWaterMark:0}),writable:new WritableStream({write:async function(a){if(t)throw new Error("Stream is cancelled");s.enqueue(a),e?e=!1:(await new Promise((o,c)=>{i=o,n=c}),i=null,n=null)},close:s.close.bind(s),abort:s.error.bind(s)})}}function gr(r,e=()=>{},t=()=>{},i={highWaterMark:0}){if(pr(r))return FR(r,e,t,i);let n=e(r),s=t();return n!==void 0&&s!==void 0?Ei([n,s]):n!==void 0?n:s}async function Ab(r,e=async()=>{},t=async()=>{},i={highWaterMark:1}){if(pr(r))return FR(r,e,t,i);let n=await e(r),s=await t();return n!==void 0&&s!==void 0?Ei([n,s]):n!==void 0?n:s}function FR(r,e,t,i){if(Ot(r)){let n=new Bn;return(async()=>{let s=an(n);try{let a=await cr(r),o=await e(a),c=await t(),l;o!==void 0&&c!==void 0?l=Ei([o,c]):l=o!==void 0?o:c,await s.write(l),await s.close()}catch(a){await s.abort(a)}})(),n}if(pr(r)){let n,s=!1;return new ReadableStream({start(){n=r.getReader()},async pull(a){if(s){a.close(),r.releaseLock();return}try{for(;;){let{value:o,done:c}=await n.read();s=c;let l=await(c?t:e)(o);if(l!==void 0){a.enqueue(l);return}if(c){a.close(),r.releaseLock();return}}}catch(o){a.error(o)}},async cancel(a){await n.cancel(a)}},i)}throw new Error("Unreachable")}function dc(r,e){if(pr(r)&&!Ot(r)){let i,n=new TransformStream({start(o){i=o}}),s=qu(r,n.writable),a=QR(async function(o){i.error(o),await s,await new Promise(c=>setTimeout(c))});return e(n.readable,a.writable),a.readable}r=_R(r);let t=new Bn;return e(r,t),t}function rx(r,e){let t,i=dc(r,(n,s)=>{let a=Xn(n);a.remainder=()=>(a.releaseLock(),qu(n,s),i),t=e(a)});return t}function CZ(r){if(Ot(r))throw new Error("ArrayStream cannot be tee()d, use clone() instead");if(pr(r)){let e=FA(r).tee();return e[0][Qt]=e[1][Qt]=r[Qt],e}return[Jr(r),Jr(r)]}function bl(r){if(Ot(r))return r.clone();if(pr(r)){let e=CZ(r);return PR(r,e[0]),e[1]}return Jr(r)}function lA(r){return Ot(r)?bl(r):pr(r)?new ReadableStream({start(e){let t=dc(r,async(i,n)=>{let s=Xn(i),a=an(n);try{for(;;){await a.ready;let{done:o,value:c}=await s.read();if(o){try{e.close()}catch{}await a.close();return}try{e.enqueue(c)}catch{}await a.write(c)}}catch(o){e.error(o),await a.abort(o)}});PR(r,t)}}):Jr(r)}function PR(r,e){Object.entries(Object.getOwnPropertyDescriptors(r.constructor.prototype)).forEach(([t,i])=>{t!=="constructor"&&(i.value?i.value=i.value.bind(e):i.get=i.get.bind(e),Object.defineProperty(r,t,i))})}function Jr(r,e=0,t=1/0){if(Ot(r))throw new Error("Not implemented");if(pr(r)){if(e>=0&&t>=0){let i,n=0;return new ReadableStream({start(){i=r.getReader()},async pull(s){try{for(;;)if(n<t){let{value:a,done:o}=await i.read();if(o){s.close(),r.releaseLock();return}let c;if(n+a.length>=e&&(c=Jr(a,Math.max(e-n,0),t-n)),n+=a.length,c){s.enqueue(c);return}}else{s.close(),r.releaseLock();return}}catch(a){s.error(a)}},async cancel(s){await i.cancel(s)}},{highWaterMark:0})}if(e<0&&(t<0||t===1/0)){let i=[];return gr(r,n=>{n.length>=-e?i=[n]:i.push(n)},()=>Jr(Ei(i),e,t))}if(e===0&&t<0){let i;return gr(r,n=>{let s=i?Ei([i,n]):n;if(s.length>=-t)return i=Jr(s,t),Jr(s,e,t);i=s})}return console.warn(`stream.slice(input, ${e}, ${t}) not implemented efficiently.`),Fl(async()=>Jr(await cr(r),e,t))}return r[Qt]&&(r=Ei(r[Qt].concat([r]))),tx(r)?r.subarray(e,t===1/0?r.length:t):r.slice(e,t)}async function cr(r,e=Ei){return Ot(r)?r.readToEnd(e):pr(r)?Xn(r).readToEnd(e):r}async function gb(r,e){if(pr(r)){if(r.cancel){let t=await r.cancel(e);return await new Promise(i=>setTimeout(i)),t}if(r.destroy)return r.destroy(e),await new Promise(t=>setTimeout(t)),e}}function Fl(r){let e=new Bn;return(async()=>{let t=an(e);try{await t.write(await r()),await t.close()}catch(i){await t.abort(i)}})(),e}function Xn(r){return new Os(r)}function an(r){return new QA(r)}function Sa(r){let e=new Uint8Array;return gr(r,t=>{e=F.concatUint8Array([e,t]);let i=[],n=45,s=Math.floor(e.length/n),a=s*n,o=yw(e.subarray(0,a));for(let c=0;c<s;c++)i.push(o.substr(c*60,60)),i.push(` +`);return e=e.subarray(a),i.join("")},()=>e.length?yw(e)+` +`:"")}function TR(r){let e="";return gr(r,t=>{e+=t;let i=0,n=[" "," ","\r",` +`];for(let o=0;o<n.length;o++){let c=n[o];for(let l=e.indexOf(c);l!==-1;l=e.indexOf(c,l+1))i++}let s=e.length;for(;s>0&&(s-i)%4!==0;s--)n.includes(e[s])&&i--;let a=Iw(e.substr(0,s));return e=e.substr(s),a},()=>Iw(e))}function Ui(r){return TR(r.replace(/-/g,"+").replace(/_/g,"/"))}function zr(r,e){let t=Sa(r).replace(/[\r\n]/g,"");return t=t.replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,""),t}function EZ(r){let e=/^-----BEGIN PGP (MESSAGE, PART \d+\/\d+|MESSAGE, PART \d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m,t=r.match(e);if(!t)throw new Error("Unknown ASCII armor type");if(/MESSAGE, PART \d+\/\d+/.test(t[1]))return y.armor.multipartSection;if(/MESSAGE, PART \d+/.test(t[1]))return y.armor.multipartLast;if(/SIGNED MESSAGE/.test(t[1]))return y.armor.signed;if(/MESSAGE/.test(t[1]))return y.armor.message;if(/PUBLIC KEY BLOCK/.test(t[1]))return y.armor.publicKey;if(/PRIVATE KEY BLOCK/.test(t[1]))return y.armor.privateKey;if(/SIGNATURE/.test(t[1]))return y.armor.signature}function gl(r,e){let t="";return e.showVersion&&(t+="Version: "+e.versionString+` `),e.showComment&&(t+="Comment: "+e.commentString+` `),r&&(t+="Comment: "+r+` `),t+=` -`,t}function vc(r){let e=PV(r);return Ws(e)}function PV(r){let e=13501623;return sr(r,t=>{let i=FV?Math.floor(t.length/4):0,n=new Uint32Array(t.buffer,t.byteOffset,i);for(let s=0;s<i;s++)e^=n[s],e=br[0][e>>24&255]^br[1][e>>16&255]^br[2][e>>8&255]^br[3][e>>0&255];for(let s=i*4;s<t.length;s++)e=e>>8^br[0][e&255^t[s]]},()=>new Uint8Array([e,e>>8,e>>16]))}function u5(r){for(let e=0;e<r.length;e++)/^([^\s:]|[^\s:][^:]*[^\s:]): .+$/.test(r[e])||F.printDebugError(new Error("Improperly formatted armor header: "+r[e])),/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(r[e])||F.printDebugError(new Error("Unknown header: "+r[e]))}function TV(r){let e=r,t=r.lastIndexOf("=");return t>=0&&t!==r.length-1&&(e=r.slice(0,t)),e}function wI(r){return new Promise((e,t)=>{try{let i=/^-----[^-]+-----$/m,n=/^[ \f\r\t\u00a0\u2000-\u200a\u202f\u205f\u3000]*$/,s,o=[],a=o,c,l=[],d,u=R6(Ba(r,async(f,h)=>{let g=_n(f);try{for(;;){let I=await g.readLine();if(I===void 0)throw new Error("Misformed armored text");if(I=F.removeTrailingSpaces(I.replace(/[\r\n]/g,"")),!s)i.test(I)&&(s=_V(I));else if(c)!d&&s===m.armor.signed&&(i.test(I)?(l=l.join(`\r -`),d=!0,u5(a),a=[],c=!1):l.push(I.replace(/^- /,"")));else if(i.test(I)&&t(new Error("Mandatory blank line missing between armor headers and armor data")),!n.test(I))a.push(I);else if(u5(a),c=!0,d||s!==m.armor.signed){e({text:l,data:u,headers:o,type:s});break}}}catch(I){t(I);return}let p=Hi(h);try{for(;;){await p.ready;let{done:I,value:y}=await g.read();if(I)throw new Error("Misformed armored text");let w=y+"";if(w.indexOf("=")===-1&&w.indexOf("-")===-1)await p.write(w);else{let C=await g.readToEnd();C.length||(C=""),C=w+C,C=F.removeTrailingSpaces(C.replace(/\r/g,""));let b=C.split(i);if(b.length===1)throw new Error("Misformed armored text");let x=TV(b[0].slice(0,-1));await p.write(x);break}}await p.ready,await p.close()}catch(I){await p.abort(I)}}))}catch(i){t(i)}}).then(async e=>(St(e.data)&&(e.data=await Xt(e.data)),e))}function dA(r,e,t,i,n,s=!1,o=pe){let a,c;r===m.armor.signed&&(a=e.text,c=e.hash,e=e.data);let l=s&&Mf(e),d=[];switch(r){case m.armor.multipartSection:d.push("-----BEGIN PGP MESSAGE, PART "+t+"/"+i+`----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push("-----END PGP MESSAGE, PART "+t+"/"+i+`----- -`);break;case m.armor.multipartLast:d.push("-----BEGIN PGP MESSAGE, PART "+t+`----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push("-----END PGP MESSAGE, PART "+t+`----- -`);break;case m.armor.signed:d.push(`-----BEGIN PGP SIGNED MESSAGE----- +`,t}function pl(r){let e=bZ(r);return Sa(e)}function bZ(r){let e=13501623;return gr(r,t=>{let i=BZ?Math.floor(t.length/4):0,n=new Uint32Array(t.buffer,t.byteOffset,i);for(let s=0;s<i;s++)e^=n[s],e=Nr[0][e>>24&255]^Nr[1][e>>16&255]^Nr[2][e>>8&255]^Nr[3][e>>0&255];for(let s=i*4;s<t.length;s++)e=e>>8^Nr[0][e&255^t[s]]},()=>new Uint8Array([e,e>>8,e>>16]))}function lU(r){for(let e=0;e<r.length;e++)/^([^\s:]|[^\s:][^:]*[^\s:]): .+$/.test(r[e])||F.printDebugError(new Error("Improperly formatted armor header: "+r[e])),/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(r[e])||F.printDebugError(new Error("Unknown header: "+r[e]))}function vZ(r){let e=r,t=r.lastIndexOf("=");return t>=0&&t!==r.length-1&&(e=r.slice(0,t)),e}function ix(r){return new Promise((e,t)=>{try{let i=/^-----[^-]+-----$/m,n=/^[ \f\r\t\u00a0\u2000-\u200a\u202f\u205f\u3000]*$/,s,a=[],o=a,c,l=[],d,u=TR(dc(r,async(f,A)=>{let g=Xn(f);try{for(;;){let I=await g.readLine();if(I===void 0)throw new Error("Misformed armored text");if(I=F.removeTrailingSpaces(I.replace(/[\r\n]/g,"")),!s)i.test(I)&&(s=EZ(I));else if(c)!d&&s===y.armor.signed&&(i.test(I)?(l=l.join(`\r +`),d=!0,lU(o),o=[],c=!1):l.push(I.replace(/^- /,"")));else if(i.test(I)&&t(new Error("Mandatory blank line missing between armor headers and armor data")),!n.test(I))o.push(I);else if(lU(o),c=!0,d||s!==y.armor.signed){e({text:l,data:u,headers:a,type:s});break}}}catch(I){t(I);return}let p=an(A);try{for(;;){await p.ready;let{done:I,value:m}=await g.read();if(I)throw new Error("Misformed armored text");let w=m+"";if(w.indexOf("=")===-1&&w.indexOf("-")===-1)await p.write(w);else{let B=await g.readToEnd();B.length||(B=""),B=w+B,B=F.removeTrailingSpaces(B.replace(/\r/g,""));let C=B.split(i);if(C.length===1)throw new Error("Misformed armored text");let x=vZ(C[0].slice(0,-1));await p.write(x);break}}await p.ready,await p.close()}catch(I){await p.abort(I)}}))}catch(i){t(i)}}).then(async e=>(Ot(e.data)&&(e.data=await cr(e.data)),e))}function PA(r,e,t,i,n,s=!1,a=me){let o,c;r===y.armor.signed&&(o=e.text,c=e.hash,e=e.data);let l=s&&lA(e),d=[];switch(r){case y.armor.multipartSection:d.push("-----BEGIN PGP MESSAGE, PART "+t+"/"+i+`----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push("-----END PGP MESSAGE, PART "+t+"/"+i+`----- +`);break;case y.armor.multipartLast:d.push("-----BEGIN PGP MESSAGE, PART "+t+`----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push("-----END PGP MESSAGE, PART "+t+`----- +`);break;case y.armor.signed:d.push(`-----BEGIN PGP SIGNED MESSAGE----- `),d.push(c?`Hash: ${c} `:` -`),d.push(a.replace(/^-/mg,"- -")),d.push(` +`),d.push(o.replace(/^-/mg,"- -")),d.push(` -----BEGIN PGP SIGNATURE----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP SIGNATURE----- -`);break;case m.armor.message:d.push(`-----BEGIN PGP MESSAGE----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP MESSAGE----- -`);break;case m.armor.publicKey:d.push(`-----BEGIN PGP PUBLIC KEY BLOCK----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP PUBLIC KEY BLOCK----- -`);break;case m.armor.privateKey:d.push(`-----BEGIN PGP PRIVATE KEY BLOCK----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP PRIVATE KEY BLOCK----- -`);break;case m.armor.signature:d.push(`-----BEGIN PGP SIGNATURE----- -`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP SIGNATURE----- -`);break}return F.concat(d)}function Te(r){let e="0123456789ABCDEF",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),BigInt("0x0"+t)}function rt(r,e){let t=r%e;return t<Ci?t+e:t}function UV(r,e,t){let i=-r;return e&i|t&~i}function vr(r,e,t){if(t===Ci)throw Error("Modulo cannot be zero");if(t===md)return BigInt(0);if(e<Ci)throw Error("Unsopported negative exponent");let i=e,n=r;n%=t;let s=BigInt(1);for(;i>Ci;){let o=i&md;i>>=md;let a=s*n%t;s=UV(o,a,s),n=n*n%t}return s}function f5(r){return r>=Ci?r:-r}function RV(r,e){let t=BigInt(0),i=BigInt(1),n=BigInt(1),s=BigInt(0),o=f5(r),a=f5(e),c=r<Ci,l=e<Ci;for(;a!==Ci;){let d=o/a,u=t;t=n-d*t,n=u,u=i,i=s-d*i,s=u,u=a,a=o%a,o=u}return{x:c?-n:n,y:l?-s:s,gcd:o}}function Bd(r,e){let{gcd:t,x:i}=RV(r,e);if(t!==md)throw new Error("Inverse does not exist");return rt(i+e,e)}function NV(r,e){let t=r,i=e;for(;i!==Ci;){let n=i;i=t%i,t=n}return t}function mB(r){let e=Number(r);if(e>Number.MAX_SAFE_INTEGER)throw new Error("Number can only safely store up to 53 bits");return e}function qV(r,e){return(r>>BigInt(e)&md)===Ci?0:1}function Td(r){let e=r<Ci?BigInt(-1):Ci,t=1,i=r;for(;(i>>=md)!==e;)t++;return t}function Ei(r){let e=r<Ci?BigInt(-1):Ci,t=BigInt(8),i=1,n=r;for(;(n>>=t)!==e;)i++;return i}function Wt(r,e="be",t){let i=r.toString(16);i.length%2===1&&(i="0"+i);let n=i.length/2,s=new Uint8Array(t||n),o=t?t-n:0,a=0;for(;a<n;)s[a+o]=parseInt(i.slice(2*a,2*a+2),16),a++;return e!=="be"&&s.reverse(),s}function Rr(r){let e=typeof crypto<"u"?crypto:OV?.webcrypto;if(e?.getRandomValues){let t=new Uint8Array(r);return e.getRandomValues(t)}else throw new Error("No secure random number generator available.")}function ba(r,e){if(e<r)throw new Error("Illegal parameter value: max <= min");let t=e-r,i=Ei(t),n=Te(Rr(i+8));return rt(n,t)+r}function A5(r,e,t){let i=BigInt(30),n=cs<<BigInt(r-1),s=[1,6,5,4,3,2,1,4,3,2,1,2,1,4,3,2,1,2,1,4,3,2,1,6,5,4,3,2,1,2],o=ba(n,n<<cs),a=mB(rt(o,i));do o+=BigInt(s[a]),a=(a+s[a])%s.length,Td(o)>r&&(o=rt(o,n<<cs),o+=n,a=mB(rt(o,i)));while(!N6(o,e,t));return o}function N6(r,e,t){return!(e&&NV(r-cs,e)!==cs||!LV(r)||!MV(r)||!KV(r,t))}function MV(r,e=BigInt(2)){return vr(e,r-cs,r)===cs}function LV(r){let e=BigInt(0);return HV.every(t=>rt(r,t)!==e)}function KV(r,e,t){let i=Td(r);e||(e=Math.max(1,i/48|0));let n=r-cs,s=0;for(;!qV(n,s);)s++;let o=r>>BigInt(s);for(;e>0;e--){let a=ba(BigInt(2),n),c=vr(a,o,r);if(c===cs||c===n)continue;let l;for(l=1;l<s;l++){if(c=rt(c*c,r),c===cs)return!1;if(c===n)break}if(l===s)return!1}return!0}function oo(r){if(!(!Ny||!GV.includes(r)))return async function(e){let t=Ny.createHash(r);return sr(e,i=>{t.update(i)},()=>new Uint8Array(t.digest()))}}function ao(r,e){let t=async()=>{let{nobleHashes:i}=await Promise.resolve().then(function(){return jee}),n=i.get(r);if(!n)throw new Error("Unsupported hash");return n};return async function(i){if(St(i)&&(i=await Xt(i)),F.isStream(i)){let s=(await t()).create();return sr(i,o=>{s.update(o)},()=>s.digest())}else return h5&&e?new Uint8Array(await h5.digest(e,i)):(await t())(i)}}function fs(r,e){switch(r){case m.hash.md5:return zV(e);case m.hash.sha1:return JV(e);case m.hash.ripemd:return WV(e);case m.hash.sha256:return $V(e);case m.hash.sha384:return VV(e);case m.hash.sha512:return YV(e);case m.hash.sha224:return jV(e);case m.hash.sha3_256:return XV(e);case m.hash.sha3_512:return ZV(e);default:throw new Error("Unsupported hash function")}}function gr(r){switch(r){case m.hash.md5:return 16;case m.hash.sha1:case m.hash.ripemd:return 20;case m.hash.sha256:return 32;case m.hash.sha384:return 48;case m.hash.sha512:return 64;case m.hash.sha224:return 28;case m.hash.sha3_256:return 32;case m.hash.sha3_512:return 64;default:throw new Error("Invalid hash algorithm.")}}function eY(r){let e=new Uint8Array(r),t=0;for(;t<r;){let i=Rr(r-t);for(let n=0;n<i.length;n++)i[n]!==0&&(e[t++]=i[n])}return e}function q6(r,e){let t=r.length;if(t>e-11)throw new Error("Message too long");let i=eY(e-t-3),n=new Uint8Array(e);return n[1]=2,n.set(i,2),n.set(r,e-t),n}function O6(r,e){let t=2,i=1;for(let a=t;a<r.length;a++)i&=r[a]!==0,t+=i;let n=t-2,s=r.subarray(t+1),o=r[0]===0&r[1]===2&n>=8&!i;if(e)return F.selectUint8Array(o,s,e);if(o)return s;throw new Error("Decryption error")}function M6(r,e,t){let i;if(e.length!==gr(r))throw new Error("Invalid hash length");let n=new Uint8Array(nn[r].length);for(i=0;i<nn[r].length;i++)n[i]=nn[r][i];let s=n.length+e.length;if(t<s+11)throw new Error("Intended encoded message length too short");let o=new Uint8Array(t-s-3).fill(255),a=new Uint8Array(t);return a[1]=1,a.set(o,2),a.set(n,t-s),a.set(e,t-e.length),a}async function tY(r,e,t,i,n,s,o,a,c){if(gr(r)>=t.length)throw new Error("Digest size cannot exceed key modulus size");if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await cY(m.read(m.webHash,r),e,t,i,n,s,o,a)}catch(l){F.printDebugError(l)}else if(F.getNodeCrypto())return lY(r,e,t,i,n,s,o,a)}return aY(r,t,n,c)}async function rY(r,e,t,i,n,s){if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await uY(m.read(m.webHash,r),e,t,i,n)}catch(o){F.printDebugError(o)}else if(F.getNodeCrypto())return fY(r,e,t,i,n)}return dY(r,t,i,n,s)}async function iY(r,e,t){return F.getNodeCrypto()?AY(r,e,t):hY(r,e,t)}async function nY(r,e,t,i,n,s,o,a){if(F.getNodeCrypto()&&!a)try{return gY(r,e,t,i,n,s,o)}catch(c){F.printDebugError(c)}return pY(r,e,t,i,n,s,o,a)}async function sY(r,e){if(e=BigInt(e),F.getWebCrypto()){let o={name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:Wt(e),hash:{name:"SHA-1"}},a=await bd.generateKey(o,!0,["sign","verify"]),c=await bd.exportKey("jwk",a.privateKey);return g5(c,e)}else if(F.getNodeCrypto()){let o={modulusLength:r,publicExponent:mB(e),publicKeyEncoding:{type:"pkcs1",format:"jwk"},privateKeyEncoding:{type:"pkcs1",format:"jwk"}},a=await new Promise((c,l)=>{Rc.generateKeyPair("rsa",o,(d,u,f)=>{d?l(d):c(f)})});return g5(a,e)}let t,i,n;do i=A5(r-(r>>1),e,40),t=A5(r>>1,e,40),n=t*i;while(Td(n)!==r);let s=(t-wa)*(i-wa);return i<t&&([t,i]=[i,t]),{n:Wt(n),e:Wt(e),d:Wt(Bd(e,s)),p:Wt(t),q:Wt(i),u:Wt(Bd(t,i))}}async function oY(r,e,t,i,n,s){if(r=Te(r),i=Te(i),n=Te(n),i*n!==r)return!1;let o=BigInt(2);if(s=Te(s),rt(i*s,n)!==BigInt(1))return!1;e=Te(e),t=Te(t);let a=BigInt(Math.floor(Td(r)/3)),c=ba(o,o<<a),l=c*t*e;return rt(l,i-wa)===c&&rt(l,n-wa)===c}function aY(r,e,t,i){e=Te(e);let n=Te(M6(r,i,Ei(e)));return t=Te(t),Wt(vr(n,t,e),"be",Ei(e))}async function cY(r,e,t,i,n,s,o,a){let c=e1(t,i,n,s,o,a),l={name:"RSASSA-PKCS1-v1_5",hash:{name:r}},d=await bd.importKey("jwk",c,l,!1,["sign"]);return new Uint8Array(await bd.sign("RSASSA-PKCS1-v1_5",d,e))}function lY(r,e,t,i,n,s,o,a){let c=Rc.createSign(m.read(m.hash,r));c.write(e),c.end();let l=e1(t,i,n,s,o,a);return new Uint8Array(c.sign({key:l,format:"jwk",type:"pkcs1"}))}function dY(r,e,t,i,n){if(t=Te(t),e=Te(e),i=Te(i),e>=t)throw new Error("Signature size cannot exceed modulus size");let s=Wt(vr(e,i,t),"be",Ei(t)),o=M6(r,n,Ei(t));return F.equalsUint8Array(s,o)}async function uY(r,e,t,i,n){let s=t1(i,n),o=await bd.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:{name:r}},!1,["verify"]);return bd.verify("RSASSA-PKCS1-v1_5",o,t,e)}function fY(r,e,t,i,n){let o={key:t1(i,n),format:"jwk",type:"pkcs1"},a=Rc.createVerify(m.read(m.hash,r));a.write(e),a.end();try{return a.verify(o,t)}catch{return!1}}function AY(r,e,t){let n={key:t1(e,t),format:"jwk",type:"pkcs1",padding:Rc.constants.RSA_PKCS1_PADDING};return new Uint8Array(Rc.publicEncrypt(n,r))}function hY(r,e,t){if(e=Te(e),r=Te(q6(r,Ei(e))),t=Te(t),r>=e)throw new Error("Message size cannot exceed modulus size");return Wt(vr(r,t,e),"be",Ei(e))}function gY(r,e,t,i,n,s,o){let c={key:e1(e,t,i,n,s,o),format:"jwk",type:"pkcs1",padding:Rc.constants.RSA_PKCS1_PADDING};try{return new Uint8Array(Rc.privateDecrypt(c,r))}catch{throw new Error("Decryption error")}}function pY(r,e,t,i,n,s,o,a){if(r=Te(r),e=Te(e),t=Te(t),i=Te(i),n=Te(n),s=Te(s),o=Te(o),r>=e)throw new Error("Data too large.");let c=rt(i,s-wa),l=rt(i,n-wa),d=ba(BigInt(2),e),u=vr(Bd(d,e),t,e);r=rt(r*u,e);let f=vr(r,l,n),h=vr(r,c,s),p=rt(o*(h-f),s)*n+f;return p=rt(p*d,e),O6(Wt(p,"be",Ei(e)),a)}function e1(r,e,t,i,n,s){let o=Te(i),a=Te(n),c=Te(t),l=rt(c,a-wa),d=rt(c,o-wa);return d=Wt(d),l=Wt(l),{kty:"RSA",n:Tr(r),e:Tr(e),d:Tr(t),p:Tr(n),q:Tr(i),dp:Tr(l),dq:Tr(d),qi:Tr(s),ext:!0}}function t1(r,e){return{kty:"RSA",n:Tr(r),e:Tr(e),ext:!0}}function g5(r,e){return{n:wi(r.n),e:Wt(e),d:wi(r.d),p:wi(r.q),q:wi(r.p),u:wi(r.qi)}}async function mY(r,e,t,i){e=Te(e),t=Te(t),i=Te(i);let n=q6(r,Ei(e)),s=Te(n),o=ba(ga,e-ga);return{c1:Wt(vr(t,o,e)),c2:Wt(rt(vr(i,o,e)*s,e))}}async function yY(r,e,t,i,n){r=Te(r),e=Te(e),t=Te(t),i=Te(i);let s=rt(Bd(vr(r,i,t),t)*e,t);return O6(Wt(s,"be",Ei(t)),n)}async function IY(r,e,t,i){let n=Te(r),s=Te(e),o=Te(t);if(s<=ga||s>=n)return!1;let a=BigInt(Td(n)),c=BigInt(1023);if(a<c||vr(s,n-ga,n)!==ga)return!1;let l=s,d=BigInt(1),u=BigInt(2),f=u<<BigInt(17);for(;d<f;){if(l=rt(l*s,n),l===ga)return!1;d++}let h=Te(i),g=ba(u<<a-ga,u<<a),p=(n-ga)*g+h;return o===vr(s,p,n)}function L6(r){let e=0,t,i=r[0];return i<192?([e]=r,t=1):i<255?(e=(r[0]-192<<8)+r[1]+192,t=2):i===255&&(e=F.readNumber(r.subarray(1,5)),t=5),{len:e,offset:t}}function xI(r){return r<192?new Uint8Array([r]):r>191&&r<8384?new Uint8Array([(r-192>>8)+192,r-192&255]):F.concatUint8Array([new Uint8Array([255]),F.writeNumber(r,4)])}function xY(r){if(r<0||r>30)throw new Error("Partial Length power must be between 1 and 30");return new Uint8Array([224+r])}function qy(r){return new Uint8Array([192|r])}function p5(r,e){return F.concatUint8Array([qy(r),xI(e)])}function ky(r){return[m.packet.literalData,m.packet.compressedData,m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData].includes(r)}async function CY(r,e,t){let i,n;try{let s=await r.peekBytes(2);if(!s||s.length<2||(s[0]&128)===0)throw new Error("Error during parsing. This message / key probably does not conform to a valid OpenPGP format.");let o=await r.readByte(),a=-1,c=-1,l;c=0,(o&64)!==0&&(c=1);let d;c?a=o&63:(a=(o&63)>>2,d=o&3);let u=ky(a),f=null;if(e&&u){if(e==="array"){let g=new on;i=Hi(g),f=g}else{let g=new TransformStream;i=Hi(g.writable),f=g.readable}n=t({tag:a,packet:f})}else f=[];let h;do{if(c){let g=await r.readByte();if(h=!1,g<192)l=g;else if(g>=192&&g<224)l=(g-192<<8)+await r.readByte()+192;else if(g>223&&g<255){if(l=1<<(g&31),h=!0,!u)throw new TypeError("This packet type does not support partial lengths.")}else l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte()}else switch(d){case 0:l=await r.readByte();break;case 1:l=await r.readByte()<<8|await r.readByte();break;case 2:l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte();break;default:l=1/0;break}if(l>0){let g=0;for(;;){i&&await i.ready;let{done:p,value:I}=await r.read();if(p){if(l===1/0)break;throw new Error("Unexpected end of packet")}let y=l===1/0?I:I.subarray(0,l-g);if(i?await i.write(y):f.push(y),g+=I.length,g>=l){r.unshift(I.subarray(l-g+I.length));break}}}}while(h);i?(await i.ready,await i.close()):(f=F.concatUint8Array(f),await t({tag:a,packet:f}))}catch(s){if(i)return await i.abort(s),!0;throw s}finally{i&&await n}}async function r1(r){switch(r){case m.publicKey.ed25519:try{let e=F.getWebCrypto(),t=await e.generateKey("Ed25519",!0,["sign","verify"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);return{A:new Uint8Array(wi(n.x)),seed:wi(i.d,!0)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Jc}),i=Rr(CI(r)),{publicKey:n}=t.sign.keyPair.fromSeed(i);return{A:n,seed:i}}case m.publicKey.ed448:{let e=await F.getNobleCurve(m.publicKey.ed448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,seed:t}}default:throw new Error("Unsupported EdDSA algorithm")}}async function i1(r,e,t,i,n,s){if(gr(e)<gr(EI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=H6(r,i,n),c=await o.importKey("jwk",a,"Ed25519",!1,["sign"]);return{RS:new Uint8Array(await o.sign("Ed25519",c,s))}}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Jc}),c=F.concatUint8Array([n,i]);return{RS:a.sign.detached(s,c)}}case m.publicKey.ed448:return{RS:(await F.getNobleCurve(m.publicKey.ed448)).sign(s,n)};default:throw new Error("Unsupported EdDSA algorithm")}}async function n1(r,e,{RS:t},i,n,s){if(gr(e)<gr(EI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=o1(r,n),c=await o.importKey("jwk",a,"Ed25519",!1,["verify"]);return await o.verify("Ed25519",c,t,s)}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Jc});return a.sign.detached.verify(s,t,n)}case m.publicKey.ed448:return(await F.getNobleCurve(m.publicKey.ed448)).verify(t,s,n);default:throw new Error("Unsupported EdDSA algorithm")}}async function s1(r,e,t){switch(r){case m.publicKey.ed25519:try{let i=F.getWebCrypto(),n=H6(r,e,t),s=o1(r,e),o=await i.importKey("jwk",n,"Ed25519",!1,["sign"]),a=await i.importKey("jwk",s,"Ed25519",!1,["verify"]),c=Rr(8),l=new Uint8Array(await i.sign("Ed25519",o,c));return await i.verify("Ed25519",a,l,c)}catch(i){if(i.name!=="NotSupportedError")return!1;let{default:n}=await Promise.resolve().then(function(){return Jc}),{publicKey:s}=n.sign.keyPair.fromSeed(t);return F.equalsUint8Array(e,s)}case m.publicKey.ed448:{let n=(await F.getNobleCurve(m.publicKey.ed448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}function CI(r){switch(r){case m.publicKey.ed25519:return 32;case m.publicKey.ed448:return 57;default:throw new Error("Unsupported EdDSA algorithm")}}function EI(r){switch(r){case m.publicKey.ed25519:return m.hash.sha256;case m.publicKey.ed448:return m.hash.sha512;default:throw new Error("Unknown EdDSA algo")}}function K6(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function kt(r,...e){if(!K6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Oy(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function G6(r,e){kt(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function a1(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function Et(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Xr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function BI(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function bY(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function zf(r){if(typeof r=="string")r=bY(r);else if(K6(r))r=Bi(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function z6(r,e){return r.buffer===e.buffer&&r.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<r.byteOffset+r.byteLength}function c1(r,e){if(z6(r,e)&&r.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function vY(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];kt(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function J6(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r[i]^e[i];return t===0}function fA(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!sn(e))throw new Error("invalid output, must be aligned");return e}function yB(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=0,l=4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function kY(r,e,t){let i=new Uint8Array(16),n=BI(i);return yB(n,0,BigInt(e),t),yB(n,8,BigInt(r),t),i}function sn(r){return r.byteOffset%4===0}function Bi(r){return Uint8Array.from(r)}function QY(r){r.reverse();let e=r[15]&1,t=0;for(let i=0;i<r.length;i++){let n=r[i];r[i]=n>>>1|t,t=(n&1)<<7}return r[0]^=-e&225,r}function j6(r){let e=(i,n)=>r(n,i.length).update(zf(i)).digest(),t=r(new Uint8Array(16),0);return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=(i,n)=>r(i,n),e}function u1(r){return r<<1^FY&-(r>>7)}function Ad(r,e){let t=0;for(;e>0;e>>=1)t^=r&-(e&1),r=u1(r);return t}function $6(r,e){if(r.length!==256)throw new Error("Wrong sbox length");let t=new Uint32Array(256).map((l,d)=>e(r[d])),i=t.map(ME),n=i.map(ME),s=n.map(ME),o=new Uint32Array(256*256),a=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){let u=l*256+d;o[u]=t[l]^i[d],a[u]=n[l]^s[d],c[u]=r[l]<<8|r[d]}return{sbox:r,sbox2:c,T0:t,T1:i,T2:n,T3:s,T01:o,T23:a}}function Kc(r){kt(r);let e=r.length;if(![16,24,32].includes(e))throw new Error("aes: invalid key size, should be 16, 24 or 32, got "+e);let{sbox2:t}=f1,i=[];sn(r)||i.push(r=Bi(r));let n=Et(r),s=n.length,o=c=>os(t,c,c,c,c),a=new Uint32Array(e+28);a.set(n);for(let c=s;c<a.length;c++){let l=a[c-1];c%s===0?l=o(TY(l))^UY[c/s-1]:s>6&&c%s===4&&(l=o(l)),a[c]=a[c-s]^l}return Xr(...i),a}function A1(r){let e=Kc(r),t=e.slice(),i=e.length,{sbox2:n}=f1,{T0:s,T1:o,T2:a,T3:c}=V6;for(let l=0;l<i;l+=4)for(let d=0;d<4;d++)t[l+d]=e[i-l-4+d];Xr(e);for(let l=4;l<i-4;l++){let d=t[l],u=os(n,d,d,d,d);t[l]=s[u&255]^o[u>>>8&255]^a[u>>>16&255]^c[u>>>24]}return t}function ma(r,e,t,i,n,s){return r[t<<8&65280|i>>>8&255]^e[n>>>8&65280|s>>>24&255]}function os(r,e,t,i,n){return r[e&255|t&65280]|r[i>>>16&255|n>>>16&65280]<<16}function Fn(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=f1,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ma(o,a,e,t,i,n),I=r[c++]^ma(o,a,t,i,n,e),y=r[c++]^ma(o,a,i,n,e,t),w=r[c++]^ma(o,a,n,e,t,i);e=p,t=I,i=y,n=w}let d=r[c++]^os(s,e,t,i,n),u=r[c++]^os(s,t,i,n,e),f=r[c++]^os(s,i,n,e,t),h=r[c++]^os(s,n,e,t,i);return{s0:d,s1:u,s2:f,s3:h}}function bI(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=V6,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ma(o,a,e,n,i,t),I=r[c++]^ma(o,a,t,e,n,i),y=r[c++]^ma(o,a,i,t,e,n),w=r[c++]^ma(o,a,n,i,t,e);e=p,t=I,i=y,n=w}let d=r[c++]^os(s,e,n,i,t),u=r[c++]^os(s,t,e,n,i),f=r[c++]^os(s,i,t,e,n),h=r[c++]^os(s,n,i,t,e);return{s0:d,s1:u,s2:f,s3:h}}function Y6(r,e,t,i){kt(e,bi),kt(t);let n=t.length;i=fA(n,i),c1(t,i);let s=e,o=Et(s),{s0:a,s1:c,s2:l,s3:d}=Fn(r,o[0],o[1],o[2],o[3]),u=Et(t),f=Et(i);for(let g=0;g+4<=u.length;g+=4){f[g+0]=u[g+0]^a,f[g+1]=u[g+1]^c,f[g+2]=u[g+2]^l,f[g+3]=u[g+3]^d;let p=1;for(let I=s.length-1;I>=0;I--)p=p+(s[I]&255)|0,s[I]=p&255,p>>>=8;({s0:a,s1:c,s2:l,s3:d}=Fn(r,o[0],o[1],o[2],o[3]))}let h=bi*Math.floor(u.length/d1);if(h<n){let g=new Uint32Array([a,c,l,d]),p=a1(g);for(let I=h,y=0;I<n;I++,y++)i[I]=t[I]^p[y];Xr(g)}return i}function qf(r,e,t,i,n){kt(t,bi),kt(i),n=fA(i.length,n);let s=t,o=Et(s),a=BI(s),c=Et(i),l=Et(n),d=e?0:12,u=i.length,f=a.getUint32(d,e),{s0:h,s1:g,s2:p,s3:I}=Fn(r,o[0],o[1],o[2],o[3]);for(let w=0;w+4<=c.length;w+=4)l[w+0]=c[w+0]^h,l[w+1]=c[w+1]^g,l[w+2]=c[w+2]^p,l[w+3]=c[w+3]^I,f=f+1>>>0,a.setUint32(d,f,e),{s0:h,s1:g,s2:p,s3:I}=Fn(r,o[0],o[1],o[2],o[3]);let y=bi*Math.floor(c.length/d1);if(y<u){let w=new Uint32Array([h,g,p,I]),C=a1(w);for(let b=y,x=0;b<u;b++,x++)n[b]=i[b]^C[x];Xr(w)}return n}function NY(r){if(kt(r),r.length%bi!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+bi)}function qY(r,e,t){kt(r);let i=r.length,n=i%bi;if(!e&&n!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");sn(r)||(r=Bi(r));let s=Et(r);if(e){let a=bi-n;a||(a=bi),i=i+a}t=fA(i,t),c1(r,t);let o=Et(t);return{b:s,o,out:t}}function OY(r,e){if(!e)return r;let t=r.length;if(!t)throw new Error("aes/pcks5: empty ciphertext not allowed");let i=r[t-1];if(i<=0||i>16)throw new Error("aes/pcks5: wrong padding");let n=r.subarray(0,-i);for(let s=0;s<i;s++)if(r[t-s-1]!==i)throw new Error("aes/pcks5: wrong padding");return n}function MY(r){let e=new Uint8Array(16),t=Et(e);e.set(r);let i=bi-r.length;for(let n=bi-i;n<bi;n++)e[n]=i;return t}function LY(r,e,t,i,n){let s=n?n.length:0,o=r.create(t,i.length+s);n&&o.update(n);let a=kY(8*i.length,8*s,e);o.update(i),o.update(a);let c=o.digest();return Xr(a),c}function X6(r){return r instanceof Uint32Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint32Array"}function Z6(r,e){if(kt(e,16),!X6(r))throw new Error("_encryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=Fn(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}function eT(r,e){if(kt(e,16),!X6(r))throw new Error("_decryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=bI(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}async function rT(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:throw new Error("Not a legacy cipher");case m.symmetric.cast5:case m.symmetric.blowfish:case m.symmetric.twofish:case m.symmetric.tripledes:{let{legacyCiphers:e}=await Promise.resolve().then(function(){return fte}),t=m.read(m.symmetric,r),i=e.get(t);if(!i)throw new Error("Unsupported cipher algorithm");return i}default:throw new Error("Unsupported cipher algorithm")}}function HY(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:case m.symmetric.twofish:return 16;case m.symmetric.blowfish:case m.symmetric.cast5:case m.symmetric.tripledes:return 8;default:throw new Error("Unsupported cipher")}}function KY(r){switch(r){case m.symmetric.aes128:case m.symmetric.blowfish:case m.symmetric.cast5:return 16;case m.symmetric.aes192:case m.symmetric.tripledes:return 24;case m.symmetric.aes256:case m.symmetric.twofish:return 32;default:throw new Error("Unsupported cipher")}}function It(r){return{keySize:KY(r),blockSize:HY(r)}}async function CB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");try{let n=await Id.importKey("raw",e,{name:"AES-KW"},!1,["wrapKey"]),s=await Id.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!0,["sign"]),o=await Id.wrapKey("raw",s,n,{name:"AES-KW"});return new Uint8Array(o)}catch(n){if(n.name!=="NotSupportedError"&&!(e.length===24&&n.name==="OperationError"))throw n;F.printDebugError("Browser did not support operation: "+n.message)}return tT(e).encrypt(t)}async function EB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");let n;try{n=await Id.importKey("raw",e,{name:"AES-KW"},!1,["unwrapKey"])}catch(s){if(s.name!=="NotSupportedError"&&!(e.length===24&&s.name==="OperationError"))throw s;return F.printDebugError("Browser did not support operation: "+s.message),tT(e).decrypt(t)}try{let s=await Id.unwrapKey("raw",t,n,{name:"AES-KW"},{name:"HMAC",hash:"SHA-256"},!0,["sign"]);return new Uint8Array(await Id.exportKey("raw",s))}catch(s){throw s.name==="OperationError"?new Error("Key Data Integrity failed"):s}}async function xa(r,e,t,i,n){let s=F.getWebCrypto(),o=m.read(m.webHash,r);if(!o)throw new Error("Hash algo not supported with HKDF");let a=await s.importKey("raw",e,"HKDF",!1,["deriveBits"]),c=await s.deriveBits({name:"HKDF",hash:o,salt:t,info:i},a,n*8);return new Uint8Array(c)}async function h1(r){switch(r){case m.publicKey.x25519:try{let e=F.getWebCrypto(),t=await e.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);if(i.x!==n.x){let s=new Error("Unexpected mismatching public point");throw s.name="NotSupportedError",s}return{A:new Uint8Array(wi(n.x)),k:wi(i.d)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Jc}),{secretKey:i,publicKey:n}=t.box.keyPair();return{A:n,k:i}}case m.publicKey.x448:{let e=await F.getNobleCurve(m.publicKey.x448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,k:t}}default:throw new Error("Unsupported ECDH algorithm")}}async function g1(r,e,t){switch(r){case m.publicKey.x25519:try{let{ephemeralPublicKey:i,sharedSecret:n}=await kI(r,e),s=await SI(r,i,e,t);return F.equalsUint8Array(n,s)}catch{return!1}case m.publicKey.x448:{let n=(await F.getNobleCurve(m.publicKey.x448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}async function iT(r,e,t){let{ephemeralPublicKey:i,sharedSecret:n}=await kI(r,t),s=F.concatUint8Array([i,t,n]);switch(r){case m.publicKey.x25519:{let o=m.symmetric.aes128,{keySize:a}=It(o),c=await xa(m.hash.sha256,s,new Uint8Array,Ly.x25519,a),l=await CB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}case m.publicKey.x448:{let o=m.symmetric.aes256,{keySize:a}=It(m.symmetric.aes256),c=await xa(m.hash.sha512,s,new Uint8Array,Ly.x448,a),l=await CB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}default:throw new Error("Unsupported ECDH algorithm")}}async function nT(r,e,t,i,n){let s=await SI(r,e,i,n),o=F.concatUint8Array([e,i,s]);switch(r){case m.publicKey.x25519:{let a=m.symmetric.aes128,{keySize:c}=It(a),l=await xa(m.hash.sha256,o,new Uint8Array,Ly.x25519,c);return EB(a,l,t)}case m.publicKey.x448:{let a=m.symmetric.aes256,{keySize:c}=It(m.symmetric.aes256),l=await xa(m.hash.sha512,o,new Uint8Array,Ly.x448,c);return EB(a,l,t)}default:throw new Error("Unsupported ECDH algorithm")}}function vI(r){switch(r){case m.publicKey.x25519:return 32;case m.publicKey.x448:return 56;default:throw new Error("Unsupported ECDH algorithm")}}async function kI(r,e){switch(r){case m.publicKey.x25519:try{let t=F.getWebCrypto(),i=await t.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(l=>{if(l.name==="OperationError"){let d=new Error("Unexpected key generation issue");throw d.name="NotSupportedError",d}throw l}),n=await t.exportKey("jwk",i.publicKey);if((await t.exportKey("jwk",i.privateKey)).x!==n.x){let l=new Error("Unexpected mismatching public point");throw l.name="NotSupportedError",l}let o=p1(r,e),a=await t.importKey("jwk",o,"X25519",!1,[]),c=await t.deriveBits({name:"X25519",public:a},i.privateKey,vI(r)*8);return{sharedSecret:new Uint8Array(c),ephemeralPublicKey:new Uint8Array(wi(n.x))}}catch(t){if(t.name!=="NotSupportedError")throw t;let{default:i}=await Promise.resolve().then(function(){return Jc}),{secretKey:n,publicKey:s}=i.box.keyPair(),o=i.scalarMult(n,e);return Hy(o),{ephemeralPublicKey:s,sharedSecret:o}}case m.publicKey.x448:{let t=await F.getNobleCurve(m.publicKey.x448),{secretKey:i,publicKey:n}=t.keygen(),s=t.getSharedSecret(i,e);return Hy(s),{ephemeralPublicKey:n,sharedSecret:s}}default:throw new Error("Unsupported ECDH algorithm")}}async function SI(r,e,t,i){switch(r){case m.publicKey.x25519:try{let n=F.getWebCrypto(),s=GY(r,t,i),o=p1(r,e),a=await n.importKey("jwk",s,"X25519",!1,["deriveKey","deriveBits"]),c=await n.importKey("jwk",o,"X25519",!1,[]),l=await n.deriveBits({name:"X25519",public:c},a,vI(r)*8);return new Uint8Array(l)}catch(n){if(n.name!=="NotSupportedError")throw n;let{default:s}=await Promise.resolve().then(function(){return Jc}),o=s.scalarMult(i,e);return Hy(o),o}case m.publicKey.x448:{let s=(await F.getNobleCurve(m.publicKey.x448)).getSharedSecret(i,e);return Hy(s),s}default:throw new Error("Unsupported ECDH algorithm")}}function Hy(r){let e=0;for(let t=0;t<r.length;t++)e|=r[t];if(e===0)throw new Error("Unexpected low order point")}function p1(r,e){if(r===m.publicKey.x25519)return{kty:"OKP",crv:"X25519",x:Tr(e),ext:!0};throw new Error("Unsupported ECDH algorithm")}function GY(r,e,t){if(r===m.publicKey.x25519){let i=p1(r,e);return i.d=Tr(t),i}else throw new Error("Unsupported ECDH algorithm")}async function Sy(r){let e=new vi(r),{oid:t,hash:i,cipher:n}=e,s=await e.genKeyPair();return{oid:t,Q:s.publicKey,secret:F.leftPad(s.privateKey,e.payloadSize),hash:i,cipher:n}}function oT(r){return sT[r.getName()].hash}async function aT(r,e,t,i){let n={[m.curve.nistP256]:!0,[m.curve.nistP384]:!0,[m.curve.nistP521]:!0,[m.curve.secp256k1]:!0,[m.curve.curve25519Legacy]:r===m.publicKey.ecdh,[m.curve.brainpoolP256r1]:!0,[m.curve.brainpoolP384r1]:!0,[m.curve.brainpoolP512r1]:!0},s=e.getName();if(!n[s])return!1;if(s===m.curve.curve25519Legacy){let c=i.slice().reverse();return t.length<1||t[0]!==64?!1:g1(m.publicKey.x25519,t.subarray(1),c)}let a=(await F.getNobleCurve(m.publicKey.ecdsa,s)).getPublicKey(i,!1);return!!F.equalsUint8Array(a,t)}function Nc(r,e){let{payloadSize:t,wireFormatLeadingByte:i,name:n}=r,s=n===m.curve.curve25519Legacy||n===m.curve.ed25519Legacy?t:t*2;if(e[0]!==i||e.length!==s+1)throw new Error("Invalid point encoding")}async function C5(r){let e=await F.getNobleCurve(m.publicKey.ecdsa,r),{secretKey:t}=e.keygen();return{publicKey:e.getPublicKey(t,!1),privateKey:t}}async function JY(r,e){let t=await LE.generateKey({name:"ECDSA",namedCurve:ls[r]},!0,["sign","verify"]),i=await LE.exportKey("jwk",t.privateKey),n=await LE.exportKey("jwk",t.publicKey);return{publicKey:cT(n,e),privateKey:wi(i.d)}}function jY(r){let e=Ky.createECDH(is[r]);return e.generateKeys(),{publicKey:new Uint8Array(e.getPublicKey()),privateKey:new Uint8Array(e.getPrivateKey())}}function cT(r,e){let t=wi(r.x),i=wi(r.y),n=new Uint8Array(t.length+i.length+1);return n[0]=e,n.set(t,1),n.set(i,t.length+1),n}function DI(r,e,t){let i=r,n=t.slice(1,i+1),s=t.slice(i+1,i*2+1);return{kty:"EC",crv:e,x:Tr(n),y:Tr(s),ext:!0}}function lT(r,e,t,i){let n=DI(r,e,t);return n.d=Tr(i),n}async function m1(r,e,t,i,n,s){let o=new vi(r);if(Nc(o,i),t&&!F.isStream(t)){let l={publicKey:i,privateKey:n};switch(o.type){case"web":try{return await VY(o,e,t,l)}catch(d){if(o.name!=="nistP521"&&(d.name==="DataError"||d.name==="OperationError"))throw d;F.printDebugError("Browser did not support signing: "+d.message)}break;case"node":return WY(o,e,t,n)}}let c=(await F.getNobleCurve(m.publicKey.ecdsa,o.name)).sign(s,n,{lowS:!1});return{r:Wt(c.r,"be",o.payloadSize),s:Wt(c.s,"be",o.payloadSize)}}async function y1(r,e,t,i,n,s){let o=new vi(r);Nc(o,n);let a=async()=>s[0]===0?E5(o,t,s.subarray(1),n):!1;if(i&&!F.isStream(i))switch(o.type){case"web":try{return await YY(o,e,t,i,n)||a()}catch(l){if(o.name!=="nistP521"&&(l.name==="DataError"||l.name==="OperationError"))throw l;F.printDebugError("Browser did not support verifying: "+l.message)}break;case"node":return XY(o,e,t,i,n)||a()}return await E5(o,t,s,n)||a()}async function $Y(r,e,t){let i=new vi(r);if(i.keyType!==m.publicKey.ecdsa)return!1;switch(i.type){case"web":case"node":{let n=Rr(8),s=m.hash.sha256,o=await fs(s,n);try{let a=await m1(r,s,n,e,t,o);return await y1(r,s,a,n,e,o)}catch{return!1}}default:return aT(m.publicKey.ecdsa,r,e,t)}}async function E5(r,e,t,i){return(await F.getNobleCurve(m.publicKey.ecdsa,r.name)).verify(F.concatUint8Array([e.r,e.s]),t,i,{lowS:!1})}async function VY(r,e,t,i){let n=r.payloadSize,s=lT(r.payloadSize,ls[r.name],i.publicKey,i.privateKey),o=await Gy.importKey("jwk",s,{name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["sign"]),a=new Uint8Array(await Gy.sign({name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,e)}},o,t));return{r:a.slice(0,n),s:a.slice(n,n<<1)}}async function YY(r,e,{r:t,s:i},n,s){let o=DI(r.payloadSize,ls[r.name],s),a=await Gy.importKey("jwk",o,{name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["verify"]),c=F.concatUint8Array([t,i]).buffer;return Gy.verify({name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,e)}},a,c,n)}function WY(r,e,t,i){let n=F.nodeRequire("eckey-utils"),s=F.getNodeBuffer(),{privateKey:o}=n.generateDer({curveName:is[r.name],privateKey:s.from(i)}),a=dT.createSign(m.read(m.hash,e));a.write(t),a.end();let c=new Uint8Array(a.sign({key:o,format:"der",type:"sec1",dsaEncoding:"ieee-p1363"})),l=r.payloadSize;return{r:c.subarray(0,l),s:c.subarray(l,l<<1)}}function XY(r,e,{r:t,s:i},n,s){let o=F.nodeRequire("eckey-utils"),a=F.getNodeBuffer(),{publicKey:c}=o.generateDer({curveName:is[r.name],publicKey:a.from(s)}),l=dT.createVerify(m.read(m.hash,e));l.write(n),l.end();let d=F.concatUint8Array([t,i]);try{return l.verify({key:c,format:"der",type:"spki",dsaEncoding:"ieee-p1363"},d)}catch{return!1}}async function uT(r,e,t,i,n,s){let o=new vi(r);if(Nc(o,i),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let{RS:a}=await i1(m.publicKey.ed25519,e,t,i.subarray(1),n,s);return{r:a.subarray(0,32),s:a.subarray(32)}}async function fT(r,e,{r:t,s:i},n,s,o){let a=new vi(r);if(Nc(a,s),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let c=F.concatUint8Array([t,i]);return n1(m.publicKey.ed25519,e,{RS:c},n,s.subarray(1),o)}async function AT(r,e,t){return r.getName()!==m.curve.ed25519Legacy||e.length<1||e[0]!==64?!1:s1(m.publicKey.ed25519,e.subarray(1),t)}function tW(r){let e=8-r.length%8,t=new Uint8Array(r.length+e).fill(e);return t.set(r),t}function rW(r){let e=r.length;if(e>0){let t=r[e-1];if(t>=1){let i=r.subarray(e-t),n=new Uint8Array(t).fill(t);if(F.equalsUint8Array(i,n))return r.subarray(0,e-t)}}throw new Error("Invalid padding")}async function iW(r,e,t){return aT(m.publicKey.ecdh,r,e,t)}function hT(r,e,t,i){return F.concatUint8Array([e.write(),new Uint8Array([r]),t.write(),F.stringToUint8Array("Anonymous Sender "),i])}async function gT(r,e,t,i,n=!1,s=!1){let o;if(n){for(o=0;o<e.length&&e[o]===0;o++);e=e.subarray(o)}if(s){for(o=e.length-1;o>=0&&e[o]===0;o--);e=e.subarray(0,o+1)}return(await fs(r,F.concatUint8Array([new Uint8Array([0,0,0,1]),e,i]))).subarray(0,t)}async function nW(r,e){switch(r.type){case"curve25519Legacy":{let{sharedSecret:t,ephemeralPublicKey:i}=await kI(m.publicKey.x25519,e.subarray(1));return{publicKey:F.concatUint8Array([new Uint8Array([r.wireFormatLeadingByte]),i]),sharedKey:t}}case"web":if(r.web&&F.getWebCrypto())try{return await aW(r,e)}catch(t){return F.printDebugError(t),b5(r,e)}break;case"node":return lW(r,e);default:return b5(r,e)}}async function pT(r,e,t,i,n){let s=tW(t),o=new vi(r);Nc(o,i);let{publicKey:a,sharedKey:c}=await nW(o,i),l=hT(m.publicKey.ecdh,r,e,n),{keySize:d}=It(e.cipher),u=await gT(e.hash,c,d,l),f=await CB(e.cipher,u,s);return{publicKey:a,wrappedKey:f}}async function sW(r,e,t,i){if(i.length!==r.payloadSize){let n=new Uint8Array(r.payloadSize);n.set(i,r.payloadSize-i.length),i=n}switch(r.type){case"curve25519Legacy":{let n=i.slice().reverse(),s=await SI(m.publicKey.x25519,e.subarray(1),t.subarray(1),n);return{secretKey:n,sharedKey:s}}case"web":if(r.web&&F.getWebCrypto())try{return await oW(r,e,t,i)}catch(n){return F.printDebugError(n),B5(r,e,i)}break;case"node":return cW(r,e,i);default:return B5(r,e,i)}}async function mT(r,e,t,i,n,s,o){let a=new vi(r);Nc(a,n),Nc(a,t);let{sharedKey:c}=await sW(a,t,n,s),l=hT(m.publicKey.ecdh,r,e,o),{keySize:d}=It(e.cipher),u;for(let f=0;f<3;f++)try{let h=await gT(e.hash,c,d,l,f===1,f===2);return rW(await EB(e.cipher,h,i))}catch(h){u=h}throw u}async function B5(r,e,t){let s=(await F.getNobleCurve(m.publicKey.ecdh,r.name)).getSharedSecret(t,e).subarray(1);return{secretKey:t,sharedKey:s}}async function b5(r,e){let t=await F.getNobleCurve(m.publicKey.ecdh,r.name),{publicKey:i,privateKey:n}=await r.genKeyPair(),o=t.getSharedSecret(n,e).subarray(1);return{publicKey:i,sharedKey:o}}async function oW(r,e,t,i){let n=F.getWebCrypto(),s=lT(r.payloadSize,r.web,t,i),o=n.importKey("jwk",s,{name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),a=DI(r.payloadSize,r.web,e),c=n.importKey("jwk",a,{name:"ECDH",namedCurve:r.web},!0,[]);[o,c]=await Promise.all([o,c]);let l=n.deriveBits({name:"ECDH",namedCurve:r.web,public:c},o,r.sharedSize),d=n.exportKey("jwk",o);[l,d]=await Promise.all([l,d]);let u=new Uint8Array(l);return{secretKey:wi(d.d),sharedKey:u}}async function aW(r,e){let t=F.getWebCrypto(),i=DI(r.payloadSize,r.web,e),n=t.generateKey({name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),s=t.importKey("jwk",i,{name:"ECDH",namedCurve:r.web},!1,[]);[n,s]=await Promise.all([n,s]);let o=t.deriveBits({name:"ECDH",namedCurve:r.web,public:s},n.privateKey,r.sharedSize),a=t.exportKey("jwk",n.publicKey);[o,a]=await Promise.all([o,a]);let c=new Uint8Array(o);return{publicKey:new Uint8Array(cT(a,r.wireFormatLeadingByte)),sharedKey:c}}function cW(r,e,t){let n=F.getNodeCrypto().createECDH(r.node);n.setPrivateKey(t);let s=new Uint8Array(n.computeSecret(e));return{secretKey:new Uint8Array(n.getPrivateKey()),sharedKey:s}}function lW(r,e){let i=F.getNodeCrypto().createECDH(r.node);i.generateKeys();let n=new Uint8Array(i.computeSecret(e));return{publicKey:new Uint8Array(i.getPublicKey()),sharedKey:n}}async function fW(r,e,t,i,n,s){let o=BigInt(0);i=Te(i),n=Te(n),t=Te(t),s=Te(s);let a,c,l,d;t=rt(t,i),s=rt(s,n);let u=rt(Te(e.subarray(0,Ei(n))),n);for(;;){if(a=ba(Of,n),c=rt(vr(t,a,i),n),c===o)continue;let f=rt(s*c,n);if(d=rt(u+f,n),l=rt(Bd(a,n)*d,n),l!==o)break}return{r:Wt(c,"be",Ei(i)),s:Wt(l,"be",Ei(i))}}async function AW(r,e,t,i,n,s,o,a){if(e=Te(e),t=Te(t),s=Te(s),o=Te(o),n=Te(n),a=Te(a),e<=Dy||e>=o||t<=Dy||t>=o)return F.printDebug("invalid DSA Signature"),!1;let c=rt(Te(i.subarray(0,Ei(o))),o),l=Bd(t,o);if(l===Dy)return F.printDebug("invalid DSA Signature"),!1;n=rt(n,s),a=rt(a,s);let d=rt(c*l,o),u=rt(e*l,o),f=vr(n,d,s),h=vr(a,u,s);return rt(rt(f*h,s),o)===e}async function hW(r,e,t,i,n){let s=Te(r),o=Te(e),a=Te(t),c=Te(i);if(a<=Of||a>=s||rt(s-Of,o)!==Dy||vr(a,o,s)!==Of)return!1;let l=BigInt(Td(o)),d=BigInt(150);if(l<d||!N6(o,null,32))return!1;let u=Te(n),f=BigInt(2),h=ba(f<<l-Of,f<<l),g=o*h+u;return c===vr(a,g,s)}async function gW(r,e,t,i,n){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:{let{n:s,e:o}=t;return{c:await iY(i,s,o)}}case m.publicKey.elgamal:{let{p:s,g:o,y:a}=t;return mY(i,s,o,a)}case m.publicKey.ecdh:{let{oid:s,Q:o,kdfParams:a}=t,{publicKey:c,wrappedKey:l}=await pT(s,a,i,o,n);return{V:c,C:new zy(l)}}case m.publicKey.x25519:case m.publicKey.x448:{if(e&&!F.isAES(e))throw new Error("X25519 and X448 keys can only encrypt AES session keys");let{A:s}=t,{ephemeralPublicKey:o,wrappedKey:a}=await iT(r,i,s),c=jy.fromObject({algorithm:e,wrappedKey:a});return{ephemeralPublicKey:o,C:c}}default:return[]}}async function pW(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:{let{c:o}=i,{n:a,e:c}=e,{d:l,p:d,q:u,u:f}=t;return nY(o,a,c,l,d,u,f,s)}case m.publicKey.elgamal:{let{c1:o,c2:a}=i,c=e.p,l=t.x;return yY(o,a,c,l,s)}case m.publicKey.ecdh:{let{oid:o,Q:a,kdfParams:c}=e,{d:l}=t,{V:d,C:u}=i;return mT(o,c,d,u.data,a,l,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:o}=e,{k:a}=t,{ephemeralPublicKey:c,C:l}=i;if(l.algorithm!==null&&!F.isAES(l.algorithm))throw new Error("AES session key expected");return nT(r,c,l.wrappedKey,o,a)}default:throw new Error("Unknown public key encryption algorithm.")}}function mW(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{n:i,e:n}}}case m.publicKey.dsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));t+=s.length+2;let o=F.readMPI(e.subarray(t));return t+=o.length+2,{read:t,publicParams:{p:i,q:n,g:s,y:o}}}case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));return t+=s.length+2,{read:t,publicParams:{p:i,g:n,y:s}}}case m.publicKey.ecdsa:{let i=new ro;t+=i.read(e),HE(i);let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.eddsaLegacy:{let i=new ro;if(t+=i.read(e),HE(i),i.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let n=F.readMPI(e.subarray(t));return t+=n.length+2,n=F.leftPad(n,33),{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.ecdh:{let i=new ro;t+=i.read(e),HE(i);let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=new Jy;return t+=s.read(e.subarray(t)),{read:t,publicParams:{oid:i,Q:n,kdfParams:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:case m.publicKey.x25519:case m.publicKey.x448:{let i=F.readExactSubarray(e,t,t+hd(r));return t+=i.length,{read:t,publicParams:{A:i}}}default:throw new ft("Unknown public key encryption algorithm.")}}function v5(r,e,t){let i=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let n=F.readMPI(e.subarray(i));i+=n.length+2;let s=F.readMPI(e.subarray(i));i+=s.length+2;let o=F.readMPI(e.subarray(i));i+=o.length+2;let a=F.readMPI(e.subarray(i));return i+=a.length+2,{read:i,privateParams:{d:n,p:s,q:o,u:a}}}case m.publicKey.dsa:case m.publicKey.elgamal:{let n=F.readMPI(e.subarray(i));return i+=n.length+2,{read:i,privateParams:{x:n}}}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let n=hd(r,t.oid),s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{d:s}}}case m.publicKey.eddsaLegacy:{let n=hd(r,t.oid);if(t.oid.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{seed:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let n=hd(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{seed:s}}}case m.publicKey.x25519:case m.publicKey.x448:{let n=hd(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{k:s}}}default:throw new ft("Unknown public key encryption algorithm.")}}function yW(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:return{c:F.readMPI(e.subarray(t))};case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return{c1:i,c2:n}}case m.publicKey.ecdh:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=new zy;return n.read(e.subarray(t)),{V:i,C:n}}case m.publicKey.x25519:case m.publicKey.x448:{let i=hd(r),n=F.readExactSubarray(e,t,t+i);t+=n.length;let s=new jy;return s.read(e.subarray(t)),{ephemeralPublicKey:n,C:s}}default:throw new ft("Unknown public key encryption algorithm.")}}function vd(r,e){let t=new Set([m.publicKey.ed25519,m.publicKey.x25519,m.publicKey.ed448,m.publicKey.x448]),i=Object.keys(e).map(n=>{let s=e[n];return F.isUint8Array(s)?t.has(r)?s:F.uint8ArrayToMPI(s):s.write()});return F.concatUint8Array(i)}function IW(r,e,t){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:return sY(e,65537).then(({n:i,e:n,d:s,p:o,q:a,u:c})=>({privateParams:{d:s,p:o,q:a,u:c},publicParams:{n:i,e:n}}));case m.publicKey.ecdsa:return Sy(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{d:s},publicParams:{oid:new ro(i),Q:n}}));case m.publicKey.eddsaLegacy:return Sy(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{seed:s},publicParams:{oid:new ro(i),Q:n}}));case m.publicKey.ecdh:return Sy(t).then(({oid:i,Q:n,secret:s,hash:o,cipher:a})=>({privateParams:{d:s},publicParams:{oid:new ro(i),Q:n,kdfParams:new Jy({hash:o,cipher:a})}}));case m.publicKey.ed25519:case m.publicKey.ed448:return r1(r).then(({A:i,seed:n})=>({privateParams:{seed:n},publicParams:{A:i}}));case m.publicKey.x25519:case m.publicKey.x448:return h1(r).then(({A:i,k:n})=>({privateParams:{k:n},publicParams:{A:i}}));case m.publicKey.dsa:case m.publicKey.elgamal:throw new Error("Unsupported algorithm for key generation.");default:throw new Error("Unknown public key algorithm.")}}async function wW(r,e,t){if(!e||!t)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let{n:i,e:n}=e,{d:s,p:o,q:a,u:c}=t;return oY(i,n,s,o,a,c)}case m.publicKey.dsa:{let{p:i,q:n,g:s,y:o}=e,{x:a}=t;return hW(i,n,s,o,a)}case m.publicKey.elgamal:{let{p:i,g:n,y:s}=e,{x:o}=t;return IY(i,n,s,o)}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let i=uW[m.read(m.publicKey,r)],{oid:n,Q:s}=e,{d:o}=t;return i.validateParams(n,s,o)}case m.publicKey.eddsaLegacy:{let{Q:i,oid:n}=e,{seed:s}=t;return AT(n,i,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:i}=e,{seed:n}=t;return s1(r,i,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:i}=e,{k:n}=t;return g1(r,i,n)}default:throw new Error("Unknown public key algorithm.")}}function BB(r){let{keySize:e}=It(r);return Rr(e)}function HE(r){try{r.getName()}catch{throw new ft("Unknown curve OID")}}function hd(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.ecdh:case m.publicKey.eddsaLegacy:return new vi(e).payloadSize;case m.publicKey.ed25519:case m.publicKey.ed448:return CI(r);case m.publicKey.x25519:case m.publicKey.x448:return vI(r);default:throw new Error("Unknown elliptic algo")}}function xW(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return oT(e);case m.publicKey.ed25519:case m.publicKey.ed448:return EI(r);default:throw new Error("Unknown elliptic signing algo")}}function yT(r){let{blockSize:e}=It(r),t=Rr(e),i=new Uint8Array([t[t.length-2],t[t.length-1]]);return F.concat([t,i])}async function jf(r,e,t,i,n){let s=m.read(m.symmetric,r);if(F.getNodeCrypto()&&QI[s])return BW(r,e,t,i);if(F.isAES(r))return CW(r,e,t,i);let o=await rT(r),a=new o(e),c=a.blockSize,l=i.slice(),d=new Uint8Array,u=f=>{f&&(d=F.concatUint8Array([d,f]));let h=new Uint8Array(d.length),g,p=0;for(;f?d.length>=c:d.length;){let I=a.encrypt(l);for(g=0;g<c;g++)l[g]=d[g]^I[g],h[p++]=l[g];d=d.subarray(c)}return h.subarray(0,p)};return sr(t,u,u)}async function _I(r,e,t,i){let n=m.read(m.symmetric,r);if(Jf&&QI[n])return bW(r,e,t,i);if(F.isAES(r))return EW(r,e,t,i);let s=await rT(r),o=new s(e),a=o.blockSize,c=i,l=new Uint8Array,d=u=>{u&&(l=F.concatUint8Array([l,u]));let f=new Uint8Array(l.length),h,g=0;for(;u?l.length>=a:l.length;){let p=o.encrypt(c);for(c=l.subarray(0,a),h=0;h<a;h++)f[g++]=c[h]^p[h];l=l.subarray(a)}return f.subarray(0,g)};return sr(t,d,d)}async function CW(r,e,t,i){if(Qy&&await $y.isSupported(r)){let n=new $y(r,e,i);return F.isStream(t)?gB(t,s=>n.encryptChunk(s),()=>n.finish()):n.encrypt(t)}else if(F.isStream(t)){let n=new Vy(!0,r,e,i);return gB(t,s=>n.processChunk(s),()=>n.finish())}return W6(e,i).encrypt(t)}function EW(r,e,t,i){if(F.isStream(t)){let n=new Vy(!1,r,e,i);return gB(t,s=>n.processChunk(s),()=>n.finish())}return W6(e,i).decrypt(t)}function gy(r,e){let t=Math.min(r.length,e.length);for(let i=0;i<t;i++)r[i]=r[i]^e[i]}function BW(r,e,t,i){let n=m.read(m.symmetric,r),s=new Jf.createCipheriv(QI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function bW(r,e,t,i){let n=m.read(m.symmetric,r),s=new Jf.createDecipheriv(QI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function S5(r,e){let t=r.length-io;for(let i=0;i<io;i++)r[i+t]^=e[i];return r}function kW(r,e,t){if(r.length&&r.length%io===0)return S5(r,e);let i=new Uint8Array(r.length+(io-r.length%io));return i.set(r),i[r.length]=128,S5(i,t)}async function SW(r){let e=await DW(r),t=F.double(await e(_y)),i=F.double(t);return async function(n){return(await e(kW(n,t,i))).subarray(-io)}}async function DW(r){if(F.getNodeCrypto())return async function(e){let i=new vW.createCipheriv("aes-"+r.length*8+"-cbc",r,_y).update(e);return new Uint8Array(i)};if(F.getWebCrypto())try{return r=await k5.importKey("raw",r,{name:"AES-CBC",length:r.length*8},!1,["encrypt"]),async function(e){let t=await k5.encrypt({name:"AES-CBC",iv:_y,length:io*8},r,e);return new Uint8Array(t).subarray(0,t.byteLength-io)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e){return xB(r,_y,{disablePadding:!0}).encrypt(e)}}async function PW(r){let e=await SW(r);return function(t,i){return e(F.concatUint8Array([t,i]))}}async function TW(r){if(F.getNodeCrypto())return async function(e,t){let i=new QW.createCipheriv("aes-"+r.length*8+"-ctr",r,t),n=_W.concat([i.update(e),i.final()]);return new Uint8Array(n)};if(F.getWebCrypto())try{let e=await D5.importKey("raw",r,{name:"AES-CTR",length:r.length*8},!1,["encrypt"]);return async function(t,i){let n=await D5.encrypt({name:"AES-CTR",counter:i,length:co*8},e,t);return new Uint8Array(n)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e,t){return RY(r,t).encrypt(e)}}async function AA(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("EAX mode supports only AES cipher");let[t,i]=await Promise.all([PW(e),TW(e)]);return{encrypt:async function(n,s,o){let[a,c]=await Promise.all([t(Q5,s),t(bB,o)]),l=await i(n,a),u=await t(vB,l);for(let f=0;f<ud;f++)u[f]^=c[f]^a[f];return F.concatUint8Array([l,u])},decrypt:async function(n,s,o){if(n.length<ud)throw new Error("Invalid EAX ciphertext");let a=n.subarray(0,-ud),c=n.subarray(-ud),[l,d,u]=await Promise.all([t(Q5,s),t(bB,o),t(vB,a)]),f=u;for(let g=0;g<ud;g++)f[g]^=d[g]^l[g];if(!F.equalsUint8Array(c,f))throw new Error("Authentication tag mismatch");return await i(a,l)}}}function _5(r){let e=0;for(let t=1;(r&t)===0;t<<=1)e++;return e}function yi(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t];return r}function py(r,e){return yi(r.slice(),e)}async function hA(r,e){let{keySize:t}=It(r);if(!F.isAES(r)||e.length!==t)throw new Error("Unexpected algorithm or key size");let i=0,n=u=>xB(e,Sf,{disablePadding:!0}).encrypt(u),s=u=>xB(e,Sf,{disablePadding:!0}).decrypt(u),o;a();function a(){let u=n(Sf),f=F.double(u);o=[],o[0]=F.double(f),o.x=u,o.$=f}function c(u,f){let h=F.nbits(Math.max(u.length,f.length)/li|0)-1;for(let g=i+1;g<=h;g++)o[g]=F.double(o[g-1]);i=h}function l(u){if(!u.length)return Sf;let f=u.length/li|0,h=new Uint8Array(li),g=new Uint8Array(li);for(let p=0;p<f;p++)yi(h,o[_5(p+1)]),yi(g,n(py(h,u))),u=u.subarray(li);if(u.length){yi(h,o.x);let p=new Uint8Array(li);p.set(u,0),p[u.length]=128,yi(p,h),yi(g,n(p))}return g}function d(u,f,h,g){let p=f.length/li|0;c(f,g);let I=F.concatUint8Array([Sf.subarray(0,IT-h.length),UW,h]),y=I[li-1]&63;I[li-1]&=192;let w=n(I),C=F.concatUint8Array([w,py(w.subarray(0,8),w.subarray(1,9))]),b=F.shiftRight(C.subarray(0+(y>>3),17+(y>>3)),8-(y&7)).subarray(1),x=new Uint8Array(li),_=new Uint8Array(f.length+ha),R,U=0;for(R=0;R<p;R++)yi(b,o[_5(R+1)]),_.set(yi(u(py(b,f)),b),U),yi(x,u===n?f:_.subarray(U)),f=f.subarray(li),U+=li;if(f.length){yi(b,o.x);let D=n(b);_.set(py(f,D),U);let B=new Uint8Array(li);B.set(u===n?f:_.subarray(U,-ha),0),B[f.length]=128,yi(x,B),U+=f.length}let T=yi(n(yi(yi(x,b),o.$)),l(g));return _.set(T,U),_}return{encrypt:async function(u,f,h){return d(n,u,f,h)},decrypt:async function(u,f,h){if(u.length<ha)throw new Error("Invalid OCB ciphertext");let g=u.subarray(-ha);u=u.subarray(0,-ha);let p=d(s,u,f,h);if(F.equalsUint8Array(g,p.subarray(-ha)))return p.subarray(0,-ha);throw new Error("Authentication tag mismatch")}}}async function kd(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("GCM mode supports only AES cipher");if(F.getNodeCrypto())return{encrypt:async function(t,i,n=new Uint8Array){let s=new F5.createCipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n);let o=P5.concat([s.update(t),s.final(),s.getAuthTag()]);return new Uint8Array(o)},decrypt:async function(t,i,n=new Uint8Array){let s=new F5.createDecipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n),s.setAuthTag(t.slice(t.length-fd,t.length));let o=P5.concat([s.update(t.slice(0,t.length-fd)),s.final()]);return new Uint8Array(o)}};if(F.getWebCrypto())try{let t=await GE.importKey("raw",e,{name:zE},!1,["encrypt","decrypt"]),i=navigator.userAgent.match(/Version\/13\.\d(\.\d)* Safari/)||navigator.userAgent.match(/Version\/(13|14)\.\d(\.\d)* Mobile\/\S* Safari/);return{encrypt:async function(n,s,o=new Uint8Array){if(i&&!n.length)return hy(e,s,o).encrypt(n);let a=await GE.encrypt({name:zE,iv:s,additionalData:o,tagLength:fd*8},t,n);return new Uint8Array(a)},decrypt:async function(n,s,o=new Uint8Array){if(i&&n.length===fd)return hy(e,s,o).decrypt(n);try{let a=await GE.decrypt({name:zE,iv:s,additionalData:o,tagLength:fd*8},t,n);return new Uint8Array(a)}catch(a){if(a.name==="OperationError")throw new Error("Authentication tag mismatch")}}}}catch(t){if(t.name!=="NotSupportedError"&&!(e.length===24&&t.name==="OperationError"))throw t;F.printDebugError("Browser did not support operation: "+t.message)}return{encrypt:async function(t,i,n){return hy(e,i,n).encrypt(t)},decrypt:async function(t,i,n){return hy(e,i,n).decrypt(t)}}}function no(r,e=!1){switch(r){case m.aead.eax:return AA;case m.aead.ocb:return hA;case m.aead.gcm:return kd;case m.aead.experimentalGCM:if(!e)throw new Error("Unexpected non-standard `experimentalGCM` AEAD algorithm provided in `config.preferredAEADAlgorithm`: use `gcm` instead");return kd;default:throw new Error("Unsupported AEAD mode")}}function qW(r,e){let t=0;switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));return t+=i.length+2,{read:t,signatureParams:{s:i}}}case m.publicKey.dsa:case m.publicKey.ecdsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.eddsaLegacy:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let i=2*CI(r),n=F.readExactSubarray(e,t,t+i);return t+=n.length,{read:t,signatureParams:{RS:n}}}default:throw new ft("Unknown signature algorithm.")}}async function OW(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=i,c=F.leftPad(t.s,o.length);return rY(e,n,c,o,a,s)}case m.publicKey.dsa:{let{g:o,p:a,q:c,y:l}=i,{r:d,s:u}=t;return AW(e,d,u,s,o,a,c,l)}case m.publicKey.ecdsa:{let{oid:o,Q:a}=i,c=new vi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return y1(o,e,{r:l,s:d},n,a,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=i,c=new vi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return fT(o,e,{r:l,s:d},n,a,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=i;return n1(r,e,t,n,o,s)}default:throw new Error("Unknown signature algorithm.")}}async function MW(r,e,t,i,n,s){if(!t||!i)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=t,{d:c,p:l,q:d,u}=i;return{s:await tY(e,n,o,a,c,l,d,u,s)}}case m.publicKey.dsa:{let{g:o,p:a,q:c}=t,{x:l}=i;return fW(e,s,o,a,c,l)}case m.publicKey.elgamal:throw new Error("Signing with Elgamal is not defined in the OpenPGP standard.");case m.publicKey.ecdsa:{let{oid:o,Q:a}=t,{d:c}=i;return m1(o,e,n,a,c,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=t,{seed:c}=i;return uT(o,e,n,a,c,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=t,{seed:a}=i;return i1(r,e,n,o,a,s)}default:throw new Error("Unknown signature algorithm.")}}function Yy(r,e=pe){switch(r){case m.s2k.argon2:return new kB(e);case m.s2k.iterated:case m.s2k.gnu:case m.s2k.salted:case m.s2k.simple:return new SB(r,e);default:throw new ft("Unsupported S2K type")}}function wT(r){let{s2kType:e}=r;if(!zW.has(e))throw new Error("The provided `config.s2kType` value is not allowed");return Yy(e,r)}function yt(r,e,t){let i=[];return i.push(xI(t.length+1)),i.push(new Uint8Array([(e?128:0)|r])),i.push(t),F.concat(i)}function VE(r){switch(r){case m.hash.sha256:return 16;case m.hash.sha384:return 24;case m.hash.sha512:return 32;case m.hash.sha224:return 16;case m.hash.sha3_256:return 16;case m.hash.sha3_512:return 32;default:throw new Error("Unsupported hash function")}}function uX(r,e){if(!e[r]){let t;try{t=m.read(m.packet,r)}catch{throw new yd(`Unknown packet type with tag: ${r}`)}throw new Error(`Packet not allowed in this context: ${t}`)}return new e[r]}function AX(r){let t=_n(r);return new ReadableStream({async pull(i){try{let{value:n,done:s}=await t.read();if(s){i.close();return}for(let o=0;o<=n.length;o+=65536)(!o||o<n.length)&&i.enqueue(n.subarray(o,o+65536))}catch(n){i.error(n)}}},{highWaterMark:0})}function Xy(r,e){return t=>{let i;if(St(t)?i=new ReadableStream({async start(c){try{c.enqueue(await Xt(t)),c.close()}catch(l){c.error(l)}}}):or(t)?i=t:i=lA(t),i=AX(i),r)try{let c=r();return i.pipeThrough(c)}catch(c){if(c.name!=="TypeError")throw c}let n=_n(i),s=new e,o=!1,a=!1;return new ReadableStream({start(c){s.ondata=(l,d)=>{c.enqueue(l),o=!0,d&&(c.close(),a=!0)}},async pull(){for(o=!1;!o&&!a;){let{done:c,value:l}=await n.read();if(c){s.push(new Uint8Array,!0);return}else l.length&&s.push(l)}}},{highWaterMark:0})}}function hX(){return async function(r){let{default:e}=await Promise.resolve().then(function(){return Kte});return e(lA(r))}}async function eI(r,e,t,i){let n=r instanceof Dd&&r.version===2,s=!n&&r.constructor.tag===m.packet.aeadEncryptedData;if(!n&&!s)throw new Error("Unexpected packet type");let o=no(r.aeadAlgorithm,s),a=e==="decrypt"?o.tagLength:0,c=e==="encrypt"?o.tagLength:0,l=2**(r.chunkSizeByte+6)+a,d=s?8:0,u=new ArrayBuffer(13+d),f=new Uint8Array(u,0,5+d),h=new Uint8Array(u),g=new DataView(u),p=new Uint8Array(u,5,8);f.set([192|r.constructor.tag,r.version,r.cipherAlgorithm,r.aeadAlgorithm,r.chunkSizeByte],0);let I=0,y=Promise.resolve(),w=0,C=0,b,x;if(n){let{keySize:R}=It(r.cipherAlgorithm),{ivLength:U}=o,T=new Uint8Array(u,0,5),D=await xa(m.hash.sha256,t,r.salt,T,R+U);t=D.subarray(0,R),b=D.subarray(R),b.fill(0,b.length-8),x=new DataView(b.buffer,b.byteOffset,b.byteLength)}else b=r.iv;let _=await o(r.cipherAlgorithm,t);return Ba(i,async(R,U)=>{if(F.isStream(R)!=="array"){let B=new TransformStream({},{highWaterMark:F.getHardwareConcurrency()*2**(r.chunkSizeByte+6),size:Q=>Q.length});Pd(B.readable,U),U=B.writable}let T=_n(R),D=Hi(U);try{for(;;){let B=await T.readBytes(l+a)||new Uint8Array,Q=B.subarray(B.length-a);B=B.subarray(0,B.length-a);let v,E,P;if(n)P=b;else{P=b.slice();for(let N=0;N<8;N++)P[b.length-8+N]^=p[N]}if(!I||B.length?(T.unshift(Q),v=_[e](B,P,f),v.catch(()=>{}),C+=B.length-a+c):(g.setInt32(5+d+4,w),v=_[e](Q,P,h),v.catch(()=>{}),C+=c,E=!0),w+=B.length-a,y=y.then(()=>v).then(async N=>{await D.ready,await D.write(N),C-=N.length}).catch(N=>D.abort(N)),(E||C>D.desiredSize)&&await y,!E)n?x.setInt32(b.length-4,++I):g.setInt32(9,++I);else{await D.close();break}}}catch(B){await D.ready.catch(()=>{}),await D.abort(B)}})}function M5(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:return F.concatUint8Array([new Uint8Array(r===6?[]:[t]),i,F.writeChecksum(i.subarray(i.length%8))]);case m.publicKey.x25519:case m.publicKey.x448:return i;default:throw new Error("Unsupported public key algorithm")}}function IX(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:{let n=t.subarray(0,t.length-2),s=t.subarray(t.length-2),o=F.writeChecksum(n.subarray(n.length%8)),a=o[0]===s[0]&o[1]===s[1],c=r===6?{sessionKeyAlgorithm:null,sessionKey:n}:{sessionKeyAlgorithm:n[0],sessionKey:n.subarray(1)};if(i){let l=a&c.sessionKeyAlgorithm===i.sessionKeyAlgorithm&c.sessionKey.length===i.sessionKey.length;return{sessionKey:F.selectUint8Array(l,c.sessionKey,i.sessionKey),sessionKeyAlgorithm:r===6?null:F.selectUint8(l,c.sessionKeyAlgorithm,i.sessionKeyAlgorithm)}}else{if(a&&(r===6||m.read(m.symmetric,c.sessionKeyAlgorithm)))return c;throw new Error("Decryption error")}}case m.publicKey.x25519:case m.publicKey.x448:return{sessionKeyAlgorithm:null,sessionKey:t};default:throw new Error("Unsupported public key algorithm")}}async function YE(r,e,t,i,n,s,o,a){if(e.type==="argon2"&&!n)throw new Error("Using Argon2 S2K without AEAD is not allowed");if(e.type==="simple"&&r===6)throw new Error("Using Simple S2K with version 6 keys is not allowed");let{keySize:c}=It(i),l=await e.produceKey(t,c,a);if(!n||r===5||o)return l;let d=F.concatUint8Array([s,new Uint8Array([r,i,n])]);return xa(m.hash.sha256,l,new Uint8Array,d,c)}async function kT(r,e){let t=new iI(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve),await t.computeFingerprintAndKeyID(),t}async function xX(r,e){let t=new Wf(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve,r.config),await t.computeFingerprintAndKeyID(),t}async function kn(r,e,t,i,n=new Date,s){let o,a;for(let c=r.length-1;c>=0;c--)try{(!o||r[c].created>=o.created)&&(await r[c].verify(e,t,i,n,void 0,s),o=r[c])}catch(l){a=l}if(!o)throw F.wrapError(`Could not find valid ${m.read(m.signature,t)} signature in key ${e.getKeyID().toHex()}`.replace("certGeneric ","self-").replace(/([a-z])([A-Z])/g,(c,l,d)=>l+" "+d.toLowerCase()),a);return o}function RB(r,e,t=new Date){let i=F.normalizeDate(t);if(i!==null){let n=sI(r,e);return!(r.created<=i&&i<n)}return!1}async function ST(r,e,t,i){let n={};n.key=e,n.bind=r;let s={signatureType:m.signature.subkeyBinding};return t.sign?(s.keyFlags=[m.keyFlags.signData],s.embeddedSignature=await us(n,[],r,{signatureType:m.signature.keyBinding},t.date,void 0,void 0,void 0,i)):s.keyFlags=[m.keyFlags.encryptCommunication|m.keyFlags.encryptStorage],t.keyExpirationTime>0&&(s.keyExpirationTime=t.keyExpirationTime,s.keyNeverExpires=!1),await us(n,[],e,s,t.date,void 0,void 0,void 0,i)}async function CX(r,e,t=new Date,i=[],n){let s=m.hash.sha256,o=n.preferredHashAlgorithm,a=await Promise.all(r.map(async(f,h)=>(await f.getPrimarySelfSignature(t,i[h],n)).preferredHashAlgorithms||[])),c=new Map;for(let f of a)for(let h of f)try{let g=m.write(m.hash,h);c.set(g,c.has(g)?c.get(g)+1:1)}catch{}let l=f=>r.length===0||c.get(f)===r.length||f===s,d=()=>{if(c.size===0)return s;let h=Array.from(c.keys()).filter(g=>l(g)).sort((g,p)=>gr(g)-gr(p))[0];return gr(h)>=gr(s)?h:s};if(new Set([m.publicKey.ecdsa,m.publicKey.eddsaLegacy,m.publicKey.ed25519,m.publicKey.ed448]).has(e.algorithm)){let f=xW(e.algorithm,e.publicParams.oid),h=l(o),g=gr(o)>=gr(f);if(h&&g)return o;{let p=d();return gr(p)>=gr(f)?p:f}}return l(o)?o:d()}async function EX(r=[],e=new Date,t=[],i=pe){let n=m.compression.uncompressed,s=i.preferredCompressionAlgorithm;return(await Promise.all(r.map(async function(a,c){let d=(await a.getPrimarySelfSignature(e,t[c],i)).preferredCompressionAlgorithms;return!!d&&d.indexOf(s)>=0}))).every(Boolean)?s:n}async function BX(r=[],e=new Date,t=[],i=pe){let n=await Promise.all(r.map((c,l)=>c.getPrimarySelfSignature(e,t[l],i)));if(r.length?n.every(c=>c.features&&c.features[0]&m.features.seipdv2):i.aeadProtect){let c={symmetricAlgo:m.symmetric.aes128,aeadAlgo:m.aead.ocb},l=[{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:i.preferredAEADAlgorithm},{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:m.aead.ocb},{symmetricAlgo:m.symmetric.aes128,aeadAlgo:i.preferredAEADAlgorithm}];for(let d of l)if(n.every(u=>u.preferredCipherSuites&&u.preferredCipherSuites.some(f=>f[0]===d.symmetricAlgo&&f[1]===d.aeadAlgo)))return d;return c}let o=m.symmetric.aes128,a=i.preferredSymmetricAlgorithm;return{symmetricAlgo:n.every(c=>c.preferredSymmetricAlgorithms&&c.preferredSymmetricAlgorithms.includes(a))?a:o,aeadAlgo:void 0}}async function us(r,e,t,i,n,s,o=[],a=!1,c){if(t.isDummy())throw new Error("Cannot sign with a gnu-dummy key.");if(!t.isDecrypted())throw new Error("Signing key is not decrypted.");let l=new Nr;return Object.assign(l,i),l.publicKeyAlgorithm=t.algorithm,l.hashAlgorithm=await CX(e,t,n,s,c),l.rawNotations=[...o],await l.sign(t,r,n,a,c),l}async function Pc(r,e,t,i=new Date,n){r=r[t],r&&(e[t].length?await Promise.all(r.map(async function(s){!s.isExpired(i)&&(!n||await n(s))&&!e[t].some(function(o){return F.equalsUint8Array(o.writeParams(),s.writeParams())})&&e[t].push(s)})):e[t]=r)}async function Qd(r,e,t,i,n,s,o=new Date,a){s=s||r;let c=[];return await Promise.all(i.map(async function(l){try{if(!n||l.issuerKeyID.equals(n.issuerKeyID)){let d=![m.reasonForRevocation.keyRetired,m.reasonForRevocation.keySuperseded,m.reasonForRevocation.userIDInvalid].includes(l.reasonForRevocationFlag);await l.verify(s,e,t,d?null:o,!1,a),c.push(l.issuerKeyID)}}catch{}})),n?(n.revoked=c.some(l=>l.equals(n.issuerKeyID))?!0:n.revoked||!1,n.revoked):c.length>0}function sI(r,e){let t;return e.keyNeverExpires===!1&&(t=r.created.getTime()+e.keyExpirationTime*1e3),t?new Date(t):1/0}function NB(r,e={}){switch(r.type=r.type||e.type,r.curve=r.curve||e.curve,r.rsaBits=r.rsaBits||e.rsaBits,r.keyExpirationTime=r.keyExpirationTime!==void 0?r.keyExpirationTime:e.keyExpirationTime,r.passphrase=F.isString(r.passphrase)?r.passphrase:e.passphrase,r.date=r.date||e.date,r.sign=r.sign||!1,r.type){case"ecc":try{r.curve=m.write(m.curve,r.curve)}catch{throw new Error("Unknown curve")}(r.curve===m.curve.ed25519Legacy||r.curve===m.curve.curve25519Legacy||r.curve==="ed25519"||r.curve==="curve25519")&&(r.curve=r.sign?m.curve.ed25519Legacy:m.curve.curve25519Legacy),r.sign?r.algorithm=r.curve===m.curve.ed25519Legacy?m.publicKey.eddsaLegacy:m.publicKey.ecdsa:r.algorithm=m.publicKey.ecdh;break;case"curve25519":r.algorithm=r.sign?m.publicKey.ed25519:m.publicKey.x25519;break;case"curve448":r.algorithm=r.sign?m.publicKey.ed448:m.publicKey.x448;break;case"rsa":r.algorithm=m.publicKey.rsaEncryptSign;break;default:throw new Error(`Unsupported key type ${r.type}`)}return r}function L5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ed25519:case m.publicKey.ed448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0;default:return!1}}function H5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function K5(r,e,t){if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:return(!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0)&&t.allowInsecureDecryptionWithSigningKeys?!0:!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function pa(r,e){let t=m.write(m.publicKey,r.algorithm),i=r.getAlgorithmInfo();if(e.rejectPublicKeyAlgorithms.has(t))throw new Error(`${i.algorithm} keys are considered too weak.`);switch(t){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.rsaEncrypt:if(i.bits<e.minRSABits)throw new Error(`RSA keys shorter than ${e.minRSABits} bits are considered too weak.`);break;case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ecdh:if(e.rejectCurves.has(i.curve))throw new Error(`Support for ${i.algorithm} keys using curve ${i.curve} is disabled.`);break}}function vX(r){switch(m.write(m.publicKey,r)){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:return"rsa";case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return"ecc";case m.publicKey.ed25519:return"curve25519";case m.publicKey.ed448:return"curve448";default:throw new Error("Unsupported algorithm")}}async function SX(r,e){r.sign=!0,r=NB(r),r.subkeys=r.subkeys.map((o,a)=>NB(r.subkeys[a],r));let t=[xX(r,e)];t=t.concat(r.subkeys.map(o=>kT(o,e)));let i=await Promise.all(t),n=await DX(i[0],i.slice(1),r,e),s=await n.getRevocationCertificate(r.date,e);return n.revocationSignatures=[],{key:n,revocationCertificate:s}}async function DX(r,e,t,i){t.passphrase&&await r.encrypt(t.passphrase,i),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l].passphrase;d&&await c.encrypt(d,i)}));let n=new Ct;n.push(r);function s(c,l){return[l,...c.filter(d=>d!==l)]}function o(){let c={};c.keyFlags=[m.keyFlags.certifyKeys|m.keyFlags.signData];let l=s([m.symmetric.aes256,m.symmetric.aes128],i.preferredSymmetricAlgorithm);if(c.preferredSymmetricAlgorithms=l,i.aeadProtect){let d=s([m.aead.gcm,m.aead.eax,m.aead.ocb],i.preferredAEADAlgorithm);c.preferredCipherSuites=d.flatMap(u=>l.map(f=>[f,u]))}return c.preferredHashAlgorithms=s([m.hash.sha512,m.hash.sha256,m.hash.sha3_512,m.hash.sha3_256],i.preferredHashAlgorithm),c.preferredCompressionAlgorithms=s([m.compression.uncompressed,m.compression.zlib,m.compression.zip],i.preferredCompressionAlgorithm),c.features=[0],c.features[0]|=m.features.modificationDetection,i.aeadProtect&&(c.features[0]|=m.features.seipdv2),t.keyExpirationTime>0&&(c.keyExpirationTime=t.keyExpirationTime,c.keyNeverExpires=!1),c}if(r.version===6){let c={key:r},l=o();l.signatureType=m.signature.key;let d=await us(c,[],r,l,t.date,void 0,t.signatureNotations,void 0,i);n.push(d)}await Promise.all(t.userIDs.map(async function(c,l){let d=rI.fromObject(c),u={userID:d,key:r},f=r.version!==6?o():{};f.signatureType=m.signature.certPositive,l===0&&(f.isPrimaryUserID=!0);let h=await us(u,[],r,f,t.date,void 0,t.signatureNotations,void 0,i);return{userIDPacket:d,signaturePacket:h}})).then(c=>{c.forEach(({userIDPacket:l,signaturePacket:d})=>{n.push(l),n.push(d)})}),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l],u=await ST(c,r,d,i);return{secretSubkeyPacket:c,subkeySignaturePacket:u}})).then(c=>{c.forEach(({secretSubkeyPacket:l,subkeySignaturePacket:d})=>{n.push(l),n.push(d)})});let a={key:r};return n.push(await us(a,[],r,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.reasonForRevocation.noReason,reasonForRevocationString:""},t.date,void 0,void 0,void 0,i)),t.passphrase&&r.clearPrivateParams(),e.map(function(c,l){t.subkeys[l].passphrase&&c.clearPrivateParams()}),new cI(n)}async function TI({armoredKey:r,binaryKey:e,config:t,...i}){if(t={...pe,...t},!r&&!e)throw new Error("readPrivateKey: must pass options object containing `armoredKey` or `binaryKey`");if(r&&!F.isString(r))throw new Error("readPrivateKey: options.armoredKey must be a string");if(e&&!F.isUint8Array(e))throw new Error("readPrivateKey: options.binaryKey must be a Uint8Array");let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);let s;if(r){let{type:c,data:l}=await wI(r);if(c!==m.armor.privateKey)throw new Error("Armored text not of type private key");s=l}else s=e;let o=await Ct.fromBinary(s,kX,t),a=o.indexOfTag(m.packet.publicKey,m.packet.secretKey);for(let c=0;c<a.length;c++){if(o[a[c]].constructor.tag===m.packet.publicKey)continue;let l=o.slice(a[c],a[c+1]);return new cI(l)}throw new Error("No secret key packet found")}async function J5(r,e,t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=!1,d=pe){let u=new Ct,f=r.text===null?m.signature.binary:m.signature.text;if(await Promise.all(e.map(async(h,g)=>{let p=o[g];if(!h.isPrivate())throw new Error("Need private key for signing");let I=await h.getSigningKey(n[g],s,p,d);return us(r,t.length?t:[h],I.keyPacket,{signatureType:f},s,a,c,l,d)})).then(h=>{u.push(...h)}),i){let h=i.packets.filterByTag(m.packet.signature);u.push(...h)}return u}function PX(r,e,t,i=new Date,n=!1,s=pe){let o,a;for(let u of t){let f=u.getKeys(r.issuerKeyID);if(f.length>0){o=u,a=f[0];break}}let l=r instanceof an?r.correspondingSig:r,d={keyID:r.issuerKeyID,verified:(async()=>{if(!a)throw new Error(`Could not find signing key with key ID ${r.issuerKeyID.toHex()}`);await r.verify(a.keyPacket,r.signatureType,e[0],i,n,s);let u=await l;if(a.getCreationTime()>u.created)throw new Error("Key is newer than the signature");try{await o.getSigningKey(a.getKeyID(),u.created,void 0,s)}catch(f){if(s.allowInsecureVerificationWithReformattedKeys&&f.message.match(/Signature creation time is in the future/))await o.getSigningKey(a.getKeyID(),i,void 0,s);else throw f}return!0})(),signature:(async()=>{let u=await l,f=new Ct;return u&&f.push(u),new nI(f)})()};return d.signature.catch(()=>{}),d.verified.catch(()=>{}),d}function WE(r,e,t,i=new Date,n=!1,s=pe){return r.filter(o=>["text","binary"].includes(m.read(m.signature,o.signatureType))).map(o=>PX(o,e,t,i,n,s))}async function gA({armoredMessage:r,binaryMessage:e,config:t,...i}){t={...pe,...t};let n=r||e;if(!n)throw new Error("readMessage: must pass options object containing `armoredMessage` or `binaryMessage`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("readMessage: options.armoredMessage must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("readMessage: options.binaryMessage must be a Uint8Array or stream");let s=Object.keys(i);if(s.length>0)throw new Error(`Unknown option: ${s.join(", ")}`);let o=F.isStream(n);if(r){let{type:l,data:d}=await wI(n);if(l!==m.armor.message)throw new Error("Armored text not of type message");n=d}let a=await Ct.fromBinary(n,QX,t,new Sd),c=new Zf(a);return c.fromStream=o,c}async function DT({text:r,binary:e,filename:t,date:i=new Date,format:n=r!==void 0?"utf8":"binary",...s}){let o=r!==void 0?r:e;if(o===void 0)throw new Error("createMessage: must pass options object containing `text` or `binary`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("createMessage: options.text must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("createMessage: options.binary must be a Uint8Array or stream");let a=Object.keys(s);if(a.length>0)throw new Error(`Unknown option: ${a.join(", ")}`);let c=F.isStream(o),l=new Ea(i);r!==void 0?l.setText(o,m.write(m.literal,n)):l.setBytes(o,m.write(m.literal,n)),t!==void 0&&l.setFilename(t);let d=new Ct;d.push(l);let u=new Zf(d);return u.fromStream=c,u}async function C1({userIDs:r=[],passphrase:e,type:t,curve:i,rsaBits:n=4096,keyExpirationTime:s=0,date:o=new Date,subkeys:a=[{}],format:c="armored",signatureNotations:l=[],config:d,...u}){d={...pe,...d},pA(d),!t&&!i?(t=d.v6Keys?"curve25519":"ecc",i="curve25519Legacy"):(t=t||"ecc",i=i||"curve25519Legacy"),r=Wr(r),l=Wr(l);let f=Object.keys(u);if(f.length>0)throw new Error(`Unknown option: ${f.join(", ")}`);if(r.length===0&&!d.v6Keys)throw new Error("UserIDs are required for V4 keys");if(t==="rsa"&&n<d.minRSABits)throw new Error(`rsaBits should be at least ${d.minRSABits}, got: ${n}`);let h={userIDs:r,passphrase:e,type:t,rsaBits:n,curve:i,keyExpirationTime:s,date:o,subkeys:a,signatureNotations:l};try{let{key:g,revocationCertificate:p}=await SX(h,d);return g.getKeys().forEach(({keyPacket:I})=>pa(I,d)),{privateKey:j5(g,c,d),publicKey:j5(g.toPublic(),c,d),revocationCertificate:p}}catch(g){throw F.wrapError("Error generating keypair",g)}}async function UI({privateKey:r,passphrase:e,config:t,...i}){t={...pe,...t},pA(t);let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);if(!r.isPrivate())throw new Error("Cannot decrypt a public key");let s=r.clone(!0),o=F.isArray(e)?e:[e];try{return await Promise.all(s.getKeys().map(a=>F.anyPromise(o.map(c=>a.keyPacket.decrypt(c,t))))),await s.validate(t),s}catch(a){throw s.clearPrivateParams(),F.wrapError("Error decrypting private key",a)}}async function QT({message:r,encryptionKeys:e,signingKeys:t,passwords:i,sessionKey:n,format:s="armored",signature:o=null,wildcard:a=!1,signingKeyIDs:c=[],encryptionKeyIDs:l=[],date:d=new Date,signingUserIDs:u=[],encryptionUserIDs:f=[],signatureNotations:h=[],config:g,...p}){if(g={...pe,...g},pA(g),E1(r),TX(s),e=Wr(e),t=Wr(t),i=Wr(i),c=Wr(c),l=Wr(l),u=Wr(u),f=Wr(f),h=Wr(h),p.detached)throw new Error("The `detached` option has been removed from openpgp.encrypt, separately call openpgp.sign instead. Don't forget to remove the `privateKeys` option as well.");if(p.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.encrypt, pass `encryptionKeys` instead");if(p.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.encrypt, pass `signingKeys` instead");if(p.armor!==void 0)throw new Error("The `armor` option has been removed from openpgp.encrypt, pass `format` instead.");let I=Object.keys(p);if(I.length>0)throw new Error(`Unknown option: ${I.join(", ")}`);t||(t=[]);try{if((t.length||o)&&(r=await r.sign(t,e,o,c,d,u,l,h,g)),r=r.compress(await EX(e,d,f,g),g),r=await r.encrypt(e,i,n,a,l,d,f,g),s==="object")return r;let w=s==="armored"?r.armor(g):r.write();return await FT(w)}catch(y){throw F.wrapError("Error encrypting message",y)}}async function RI({message:r,decryptionKeys:e,passwords:t,sessionKeys:i,verificationKeys:n,expectSigned:s=!1,format:o="utf8",signature:a=null,date:c=new Date,config:l,...d}){if(l={...pe,...l},pA(l),E1(r),n=Wr(n),e=Wr(e),t=Wr(t),i=Wr(i),d.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decrypt, pass `decryptionKeys` instead");if(d.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.decrypt, pass `verificationKeys` instead");let u=Object.keys(d);if(u.length>0)throw new Error(`Unknown option: ${u.join(", ")}`);try{let f=await r.decrypt(e,t,i,c,l);n||(n=[]);let h={};if(h.signatures=a?await f.verifyDetached(a,n,c,l):await f.verify(n,c,l),h.data=o==="binary"?f.getLiteralData():f.getText(),h.filename=f.getFilename(),RX(h,r,...new Set([f,f.unwrapCompressed()])),s){if(n.length===0)throw new Error("Verification keys are required to verify message signatures");if(h.signatures.length===0)throw new Error("Message is not signed");h.data=di([h.data,Hc(async()=>(await F.anyPromise(h.signatures.map(g=>g.verified)),o==="binary"?new Uint8Array:""))])}return h.data=await FT(h.data),h}catch(f){throw F.wrapError("Error decrypting message",f)}}async function _T({message:r,decryptionKeys:e,passwords:t,date:i=new Date,config:n,...s}){if(n={...pe,...n},pA(n),E1(r),e=Wr(e),t=Wr(t),s.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decryptSessionKeys, pass `decryptionKeys` instead");let o=Object.keys(s);if(o.length>0)throw new Error(`Unknown option: ${o.join(", ")}`);try{return await r.decryptSessionKeys(e,t,void 0,i,n)}catch(a){throw F.wrapError("Error decrypting session keys",a)}}function E1(r){if(!(r instanceof Zf))throw new Error("Parameter [message] needs to be of type Message")}function TX(r){if(r!=="armored"&&r!=="binary"&&r!=="object")throw new Error(`Unsupported format ${r}`)}function pA(r){let e=Object.keys(r);if(e.length!==UX){for(let t of e)if(pe[t]===void 0)throw new Error(`Unknown config property: ${t}`)}}function Wr(r){return r&&!F.isArray(r)&&(r=[r]),r}async function FT(r){return F.isStream(r)==="array"?Xt(r):r}function RX(r,e,...t){r.data=Ba(e.packets.stream,async(i,n)=>{await Pd(r.data,n,{preventClose:!0});let s=Hi(n);try{await Xt(i,o=>o),await Promise.all(t.map(o=>Xt(o.packets.stream,a=>a))),await s.close()}catch(o){await s.abort(o)}})}function j5(r,e,t){switch(e){case"object":return r;case"armored":return r.armor(t);case"binary":return r.write();default:throw new Error(`Unsupported format ${e}`)}}function mA(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function eA(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function hs(r,...e){if(!mA(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function PT(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");eA(r.outputLen),eA(r.blockLen)}function _d(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function TT(r,e){hs(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function NX(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function cn(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function XE(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function es(r,e){return r<<32-e|r>>>e}function ya(r,e){return r<<e|r>>>32-e>>>0}function OX(r){return r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255}function MX(r){for(let e=0;e<r.length;e++)r[e]=OX(r[e]);return r}function Tc(r){if(hs(r),UT)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=LX[r[t]];return e}function V5(r){if(r>=js._0&&r<=js._9)return r-js._0;if(r>=js.A&&r<=js.F)return r-(js.A-10);if(r>=js.a&&r<=js.f)return r-(js.a-10)}function lI(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(UT)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let i=new Uint8Array(t);for(let n=0,s=0;n<t;n++,s+=2){let o=V5(r.charCodeAt(s)),a=V5(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}i[n]=o*16+a}return i}function HX(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function yA(r){return typeof r=="string"&&(r=HX(r)),hs(r),r}function Sn(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];hs(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function lo(r){let e=i=>r().update(yA(i)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function KX(r){let e=(i,n)=>r(n).update(yA(i)).digest(),t=r({});return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=i=>r(i),e}function NI(r=32){if(od&&typeof od.getRandomValues=="function")return od.getRandomValues(new Uint8Array(r));if(od&&typeof od.randomBytes=="function")return Uint8Array.from(od.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Oc(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}"`;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Qn(r,e,t=""){let i=mA(r),n=r?.length,s=e!==void 0;if(!i||s&&n!==e){let o=t&&`"${t}" `,a=s?` of length ${e}`:"",c=i?`length=${n}`:`type=${typeof r}`;throw new Error(o+"expected Uint8Array"+a+", got "+c)}return r}function yy(r){let e=r.toString(16);return e.length&1?"0"+e:e}function RT(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?B1:BigInt("0x"+r)}function qI(r){return RT(Tc(r))}function Mc(r){return hs(r),RT(Tc(Uint8Array.from(r).reverse()))}function b1(r,e){return lI(r.toString(16).padStart(e*2,"0"))}function v1(r,e){return b1(r,e).reverse()}function vt(r,e,t){let i;if(typeof e=="string")try{i=lI(e)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(mA(e))i=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let n=i.length;if(typeof t=="number"&&n!==t)throw new Error(r+" of length "+t+" expected, got "+n);return i}function Y5(r){return Uint8Array.from(r)}function zX(r){return Uint8Array.from(r,(e,t)=>{let i=e.charCodeAt(0);if(e.length!==1||i>127)throw new Error(`string contains non-ASCII character "${r[t]}" with code ${i} at position ${t}`);return i})}function JX(r,e,t){return ZE(r)&&ZE(e)&&ZE(t)&&e<=r&&r<t}function rA(r,e,t,i){if(!JX(e,t,i))throw new Error("expected valid "+r+": "+t+" <= n < "+i+", got "+e)}function NT(r){let e;for(e=0;r>B1;r>>=OB,e+=1);return e}function jX(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let i=h=>new Uint8Array(h),n=h=>Uint8Array.of(h),s=i(r),o=i(r),a=0,c=()=>{s.fill(1),o.fill(0),a=0},l=(...h)=>t(o,s,...h),d=(h=i(0))=>{o=l(n(0),h),s=l(),h.length!==0&&(o=l(n(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0,g=[];for(;h<e;){s=l();let p=s.slice();g.push(p),h+=s.length}return Sn(...g)};return(h,g)=>{c(),d(h);let p;for(;!(p=g(u()));)d();return c(),p}}function Ud(r,e,t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function i(n,s,o){let a=r[n];if(o&&a===void 0)return;let c=typeof a;if(c!==s||a===null)throw new Error(`param "${n}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([n,s])=>i(n,s,!1)),Object.entries(t).forEach(([n,s])=>i(n,s,!0))}function dI(r){let e=new WeakMap;return(t,...i)=>{let n=e.get(t);if(n!==void 0)return n;let s=r(t,...i);return e.set(t,s),s}}function pr(r,e){let t=r%e;return t>=xi?t:e+t}function bt(r,e,t){let i=r;for(;e-- >xi;)i*=i,i%=t;return i}function W5(r,e){if(r===xi)throw new Error("invert: expected non-zero number");if(e<=xi)throw new Error("invert: expected positive modulus, got "+e);let t=pr(r,e),i=e,n=xi,s=ui;for(;t!==xi;){let a=i/t,c=i%t,l=n-s*a;i=t,t=c,n=s,s=l}if(i!==ui)throw new Error("invert: does not exist");return pr(n,e)}function k1(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function KT(r,e){let t=(r.ORDER+ui)/OT,i=r.pow(e,t);return k1(r,i,e),i}function YX(r,e){let t=(r.ORDER-MT)/LT,i=r.mul(e,Qc),n=r.pow(i,t),s=r.mul(e,n),o=r.mul(r.mul(s,Qc),n),a=r.mul(s,r.sub(o,r.ONE));return k1(r,a,e),a}function WX(r){let e=Si(r),t=GT(r),i=t(e,e.neg(e.ONE)),n=t(e,i),s=t(e,e.neg(i)),o=(r+$X)/HT;return(a,c)=>{let l=a.pow(c,o),d=a.mul(l,i),u=a.mul(l,n),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);let p=a.eql(a.sqr(d),c),I=a.cmov(l,d,p);return k1(a,I,c),I}}function GT(r){if(r<qT)throw new Error("sqrt is not defined for small field");let e=r-ui,t=0;for(;e%Qc===xi;)e/=Qc,t++;let i=Qc,n=Si(r);for(;X5(n,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return KT;let s=n.pow(i,e),o=(e+ui)/Qc;return function(c,l){if(c.is0(l))return l;if(X5(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,o);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,p=c.sqr(f);for(;!c.eql(p,c.ONE);)if(g++,p=c.sqr(p),g===d)throw new Error("Cannot find square root");let I=ui<<BigInt(d-g-1),y=c.pow(u,I);d=g,u=c.sqr(y),f=c.mul(f,u),h=c.mul(h,y)}return h}}function XX(r){return r%OT===qT?KT:r%LT===MT?YX:r%HT===VX?WX(r):GT(r)}function eZ(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},t=ZX.reduce((i,n)=>(i[n]="function",i),e);return Ud(r,t),r}function tZ(r,e,t){if(t<xi)throw new Error("invalid exponent, negatives unsupported");if(t===xi)return r.ONE;if(t===ui)return e;let i=r.ONE,n=e;for(;t>xi;)t&ui&&(i=r.mul(i,n)),n=r.sqr(n),t>>=ui;return i}function zT(r,e,t=!1){let i=new Array(e.length).fill(t?r.ZERO:void 0),n=e.reduce((o,a,c)=>r.is0(a)?o:(i[c]=o,r.mul(o,a)),r.ONE),s=r.inv(n);return e.reduceRight((o,a,c)=>r.is0(a)?o:(i[c]=r.mul(o,i[c]),r.mul(o,a)),s),i}function X5(r,e){let t=(r.ORDER-ui)/Qc,i=r.pow(e,t),n=r.eql(i,r.ONE),s=r.eql(i,r.ZERO),o=r.eql(i,r.neg(r.ONE));if(!n&&!s&&!o)throw new Error("invalid Legendre symbol result");return n?1:s?0:-1}function JT(r,e){e!==void 0&&eA(e);let t=e!==void 0?e:r.toString(2).length,i=Math.ceil(t/8);return{nBitLength:t,nByteLength:i}}function Si(r,e,t=!1,i={}){if(r<=xi)throw new Error("invalid field: expected ORDER > 0, got "+r);let n,s,o=!1,a;if(typeof e=="object"&&e!=null){if(i.sqrt||t)throw new Error("cannot specify opts in two arguments");let f=e;f.BITS&&(n=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(t=f.isLE),typeof f.modFromBytes=="boolean"&&(o=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(n=e),i.sqrt&&(s=i.sqrt);let{nBitLength:c,nByteLength:l}=JT(r,n);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,u=Object.freeze({ORDER:r,isLE:t,BITS:c,BYTES:l,MASK:IA(c),ZERO:xi,ONE:ui,allowedLengths:a,create:f=>pr(f,r),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return xi<=f&&f<r},is0:f=>f===xi,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&ui)===ui,neg:f=>pr(-f,r),eql:(f,h)=>f===h,sqr:f=>pr(f*f,r),add:(f,h)=>pr(f+h,r),sub:(f,h)=>pr(f-h,r),mul:(f,h)=>pr(f*h,r),pow:(f,h)=>tZ(u,f,h),div:(f,h)=>pr(f*W5(h,r),r),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>W5(f,r),sqrt:s||(f=>(d||(d=XX(r)),d(u,f))),toBytes:f=>t?v1(f,l):b1(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);let p=new Uint8Array(l);p.set(f,t?0:p.length-f.length),f=p}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=t?Mc(f):qI(f);if(o&&(g=pr(g,r)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>zT(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function jT(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function $T(r){let e=jT(r);return e+Math.ceil(e/2)}function rZ(r,e,t=!1){let i=r.length,n=jT(e),s=$T(e);if(i<16||i<s||i>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+i);let o=t?Mc(r):qI(r),a=pr(o,e-ui)+ui;return t?v1(a,n):b1(a,n)}function iZ(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=i?4:0,l=i?0:4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function VT(r,e,t){return r&e^~r&t}function YT(r,e,t){return r&e^r&t^e&t}function nZ(r,e=!1){return e?{h:Number(r&Iy),l:Number(r>>Z5&Iy)}:{h:Number(r>>Z5&Iy)|0,l:Number(r&Iy)|0}}function WT(r,e=!1){let t=r.length,i=new Uint32Array(t),n=new Uint32Array(t);for(let s=0;s<t;s++){let{h:o,l:a}=nZ(r[s],e);[i[s],n[s]]=[o,a]}return[i,n]}function $s(r,e,t,i){let n=(e>>>0)+(i>>>0);return{h:r+t+(n/2**32|0)|0,l:n|0}}function hI(r,e){let t=e.negate();return r?t:e}function Fc(r,e){let t=zT(r.Fp,e.map(i=>i.Z));return e.map((i,n)=>r.fromAffine(i.toAffine(t[n])))}function rU(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function eB(r,e){rU(r,e);let t=Math.ceil(e/r)+1,i=2**(r-1),n=2**r,s=IA(r),o=BigInt(r);return{windows:t,windowSize:i,mask:s,maxNumber:n,shiftBy:o}}function r6(r,e,t){let{windowSize:i,mask:n,maxNumber:s,shiftBy:o}=t,a=Number(r&n),c=r>>o;a>i&&(a-=s,c+=_c);let l=e*i,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function IZ(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,i)=>{if(!(t instanceof e))throw new Error("invalid point at index "+i)})}function wZ(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,i)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+i)})}function rB(r){return iU.get(r)||1}function i6(r){if(r!==Fd)throw new Error("invalid wNAF")}function xZ(r,e,t,i){let n=e,s=r.ZERO,o=r.ZERO;for(;t>Fd||i>Fd;)t&_c&&(s=s.add(n)),i&_c&&(o=o.add(n)),n=n.double(),t>>=_c,i>>=_c;return{p1:s,p2:o}}function nU(r,e,t,i){IZ(t,r),wZ(i,e);let n=t.length,s=i.length;if(n!==s)throw new Error("arrays of points and scalars must have equal length");let o=r.ZERO,a=NT(BigInt(n)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let l=IA(c),d=new Array(Number(l)+1).fill(o),u=Math.floor((e.BITS-1)/c)*c,f=o;for(let h=u;h>=0;h-=c){d.fill(o);for(let p=0;p<s;p++){let I=i[p],y=Number(I>>BigInt(h)&l);d[y]=d[y].add(t[p])}let g=o;for(let p=d.length-1,I=o;p>0;p--)I=I.add(d[p]),g=g.add(I);if(f=f.add(g),h!==0)for(let p=0;p<c;p++)f=f.double()}return f}function n6(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return eZ(e),e}else return Si(r,{isLE:t})}function sU(r,e,t={},i){if(i===void 0&&(i=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Fd))throw new Error(`CURVE.${c} must be positive bigint`)}let n=n6(e.p,t.Fp,i),s=n6(e.n,t.Fn,i),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!n.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:n,Fn:s}}function CZ(r,e,t){let[[i,n],[s,o]]=e,a=s6(o*r,t),c=s6(-n*r,t),l=r-a*i-c*s,d=-a*n-c*o,u=l<to,f=d<to;u&&(l=-l),f&&(d=-d);let h=IA(Math.ceil(NT(t)/2))+Cd;if(l<to||l>=h||d<to||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function HB(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function iB(r,e){let t={};for(let i of Object.keys(e))t[i]=r[i]===void 0?e[i]:r[i];return Oc(t.lowS,"lowS"),Oc(t.prehash,"prehash"),t.format!==void 0&&HB(t.format),t}function gd(r,e){let{BYTES:t}=r,i;if(typeof e=="bigint")i=e;else{let n=vt("private key",e);try{i=r.fromBytes(n)}catch{throw new Error(`invalid private key: expected ui8a of size ${t}, got ${typeof e}`)}}if(!r.isValidNot0(i))throw new Error("invalid private key: out of range [1..N-1]");return i}function BZ(r,e={}){let t=sU("weierstrass",r,e),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o,n:a}=s;Ud(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=e;if(c&&(!i.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=cU(i,n);function d(){if(!i.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(Q,v,E){let{x:P,y:N}=v.toAffine(),J=i.toBytes(P);if(Oc(E,"isCompressed"),E){d();let z=!i.isOdd(N);return Sn(aU(z),J)}else return Sn(Uint8Array.of(4),J,i.toBytes(N))}function f(Q){Qn(Q,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,P=Q.length,N=Q[0],J=Q.subarray(1);if(P===v&&(N===2||N===3)){let z=i.fromBytes(J);if(!i.isValid(z))throw new Error("bad point: is not on curve, wrong x");let L=p(z),G;try{G=i.sqrt(L)}catch(te){let re=te instanceof Error?": "+te.message:"";throw new Error("bad point: is not on curve, sqrt error"+re)}d();let K=i.isOdd(G);return(N&1)===1!==K&&(G=i.neg(G)),{x:z,y:G}}else if(P===E&&N===4){let z=i.BYTES,L=i.fromBytes(J.subarray(0,z)),G=i.fromBytes(J.subarray(z,z*2));if(!I(L,G))throw new Error("bad point: is not on curve");return{x:L,y:G}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${E}`)}let h=e.toBytes||u,g=e.fromBytes||f;function p(Q){let v=i.sqr(Q),E=i.mul(v,Q);return i.add(i.add(E,i.mul(Q,s.a)),s.b)}function I(Q,v){let E=i.sqr(v),P=p(Q);return i.eql(E,P)}if(!I(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let y=i.mul(i.pow(s.a,Cy),EZ),w=i.mul(i.sqr(s.b),BigInt(27));if(i.is0(i.add(y,w)))throw new Error("bad curve params: a or b");function C(Q,v,E=!1){if(!i.isValid(v)||E&&i.is0(v))throw new Error(`bad point coordinate ${Q}`);return v}function b(Q){if(!(Q instanceof T))throw new Error("ProjectivePoint expected")}function x(Q){if(!c||!c.basises)throw new Error("no endo");return CZ(Q,c.basises,n.ORDER)}let _=dI((Q,v)=>{let{X:E,Y:P,Z:N}=Q;if(i.eql(N,i.ONE))return{x:E,y:P};let J=Q.is0();v==null&&(v=J?i.ONE:i.inv(N));let z=i.mul(E,v),L=i.mul(P,v),G=i.mul(N,v);if(J)return{x:i.ZERO,y:i.ZERO};if(!i.eql(G,i.ONE))throw new Error("invZ was invalid");return{x:z,y:L}}),R=dI(Q=>{if(Q.is0()){if(e.allowInfinityPoint&&!i.is0(Q.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=Q.toAffine();if(!i.isValid(v)||!i.isValid(E))throw new Error("bad point: x or y not field elements");if(!I(v,E))throw new Error("bad point: equation left != right");if(!Q.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function U(Q,v,E,P,N){return E=new T(i.mul(E.X,Q),E.Y,E.Z),v=hI(P,v),E=hI(N,E),v.add(E)}class T{constructor(v,E,P){this.X=C("x",v),this.Y=C("y",E,!0),this.Z=C("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:P}=v||{};if(!v||!i.isValid(E)||!i.isValid(P))throw new Error("invalid affine point");if(v instanceof T)throw new Error("projective point not allowed");return i.is0(E)&&i.is0(P)?T.ZERO:new T(E,P,i.ONE)}static fromBytes(v){let E=T.fromAffine(g(Qn(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return T.fromBytes(vt("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return B.createCache(this,v),E||this.multiply(Cy),this}assertValidity(){R(this)}hasEvenY(){let{y:v}=this.toAffine();if(!i.isOdd)throw new Error("Field doesn't support isOdd");return!i.isOdd(v)}equals(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.eql(i.mul(E,L),i.mul(J,N)),K=i.eql(i.mul(P,L),i.mul(z,N));return G&&K}negate(){return new T(this.X,i.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,P=i.mul(E,Cy),{X:N,Y:J,Z:z}=this,L=i.ZERO,G=i.ZERO,K=i.ZERO,$=i.mul(N,N),te=i.mul(J,J),re=i.mul(z,z),ee=i.mul(N,J);return ee=i.add(ee,ee),K=i.mul(N,z),K=i.add(K,K),L=i.mul(v,K),G=i.mul(P,re),G=i.add(L,G),L=i.sub(te,G),G=i.add(te,G),G=i.mul(L,G),L=i.mul(ee,L),K=i.mul(P,K),re=i.mul(v,re),ee=i.sub($,re),ee=i.mul(v,ee),ee=i.add(ee,K),K=i.add($,$),$=i.add(K,$),$=i.add($,re),$=i.mul($,ee),G=i.add(G,$),re=i.mul(J,z),re=i.add(re,re),$=i.mul(re,ee),L=i.sub(L,$),K=i.mul(re,te),K=i.add(K,K),K=i.add(K,K),new T(L,G,K)}add(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.ZERO,K=i.ZERO,$=i.ZERO,te=s.a,re=i.mul(s.b,Cy),ee=i.mul(E,J),Z=i.mul(P,z),me=i.mul(N,L),le=i.add(E,P),Ae=i.add(J,z);le=i.mul(le,Ae),Ae=i.add(ee,Z),le=i.sub(le,Ae),Ae=i.add(E,N);let ve=i.add(J,L);return Ae=i.mul(Ae,ve),ve=i.add(ee,me),Ae=i.sub(Ae,ve),ve=i.add(P,N),G=i.add(z,L),ve=i.mul(ve,G),G=i.add(Z,me),ve=i.sub(ve,G),$=i.mul(te,Ae),G=i.mul(re,me),$=i.add(G,$),G=i.sub(Z,$),$=i.add(Z,$),K=i.mul(G,$),Z=i.add(ee,ee),Z=i.add(Z,ee),me=i.mul(te,me),Ae=i.mul(re,Ae),Z=i.add(Z,me),me=i.sub(ee,me),me=i.mul(te,me),Ae=i.add(Ae,me),ee=i.mul(Z,Ae),K=i.add(K,ee),ee=i.mul(ve,Ae),G=i.mul(le,G),G=i.sub(G,ee),ee=i.mul(le,Z),$=i.mul(ve,$),$=i.add($,ee),new T(G,K,$)}subtract(v){return this.add(v.negate())}is0(){return this.equals(T.ZERO)}multiply(v){let{endo:E}=e;if(!n.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N,J=z=>B.cached(this,z,L=>Fc(T,L));if(E){let{k1neg:z,k1:L,k2neg:G,k2:K}=x(v),{p:$,f:te}=J(L),{p:re,f:ee}=J(K);N=te.add(ee),P=U(E.beta,$,re,z,G)}else{let{p:z,f:L}=J(v);P=z,N=L}return Fc(T,[P,N])[0]}multiplyUnsafe(v){let{endo:E}=e,P=this;if(!n.isValid(v))throw new Error("invalid scalar: out of range");if(v===to||P.is0())return T.ZERO;if(v===Cd)return P;if(B.hasCache(this))return this.multiply(v);if(E){let{k1neg:N,k1:J,k2neg:z,k2:L}=x(v),{p1:G,p2:K}=xZ(T,P,J,L);return U(E.beta,G,K,N,z)}else return B.unsafe(P,v)}multiplyAndAddUnsafe(v,E,P){let N=this.multiplyUnsafe(E).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return _(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return o===Cd?!0:v?v(T,this):B.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:v}=e;return o===Cd?this:v?v(T,this):this.multiplyUnsafe(o)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}toBytes(v=!0){return Oc(v,"isCompressed"),this.assertValidity(),h(T,this,v)}toHex(v=!0){return Tc(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return Fc(T,v)}static msm(v,E){return nU(T,n,v,E)}static fromPrivateKey(v){return T.BASE.multiply(gd(n,v))}}T.BASE=new T(s.Gx,s.Gy,i.ONE),T.ZERO=new T(i.ZERO,i.ONE,i.ZERO),T.Fp=i,T.Fn=n;let D=n.BITS,B=new gI(T,e.endo?Math.ceil(D/2):D);return T.BASE.precompute(8),T}function aU(r){return Uint8Array.of(r?2:3)}function cU(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function bZ(r,e={}){let{Fn:t}=r,i=e.randomBytes||NI,n=Object.assign(cU(r.Fp,t),{seed:$T(t.ORDER)});function s(h){try{return!!gd(t,h)}catch{return!1}}function o(h,g){let{publicKey:p,publicKeyUncompressed:I}=n;try{let y=h.length;return g===!0&&y!==p||g===!1&&y!==I?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=i(n.seed)){return rZ(Qn(h,n.seed,"seed"),t.ORDER)}function c(h,g=!0){return r.BASE.multiply(gd(t,h)).toBytes(g)}function l(h){let g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof r)return!0;let{secretKey:g,publicKey:p,publicKeyUncompressed:I}=n;if(t.allowedLengths||g===p)return;let y=vt("key",h).length;return y===p||y===I}function u(h,g,p=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");let I=gd(t,h);return r.fromHex(g).multiply(I).toBytes(p)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:o,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>gd(t,h),precompute(h=8,g=r.BASE){return g.precompute(h,!1)}},lengths:n})}function vZ(r,e,t={}){PT(e),Ud(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let i=t.randomBytes||NI,n=t.hmac||((E,...P)=>tU(e,E,Sn(...P))),{Fp:s,Fn:o}=r,{ORDER:a,BITS:c}=o,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=bZ(r,t),g={prehash:!1,lowS:typeof t.lowS=="boolean"?t.lowS:!1,format:void 0,extraEntropy:!1},p="compact";function I(E){let P=a>>Cd;return E>P}function y(E,P){if(!o.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function w(E,P){HB(P);let N=h.signature,J=P==="compact"?N:P==="recovered"?N+1:void 0;return Qn(E,J,`${P} signature`)}class C{constructor(P,N,J){this.r=y("r",P),this.s=y("s",N),J!=null&&(this.recovery=J),Object.freeze(this)}static fromBytes(P,N=p){w(P,N);let J;if(N==="der"){let{r:K,s:$}=Zs.toSig(Qn(P));return new C(K,$)}N==="recovered"&&(J=P[0],N="compact",P=P.subarray(1));let z=o.BYTES,L=P.subarray(0,z),G=P.subarray(z,z*2);return new C(o.fromBytes(L),o.fromBytes(G),J)}static fromHex(P,N){return this.fromBytes(lI(P),N)}addRecoveryBit(P){return new C(this.r,this.s,P)}recoverPublicKey(P){let N=s.ORDER,{r:J,s:z,recovery:L}=this;if(L==null||![0,1,2,3].includes(L))throw new Error("recovery id invalid");if(a*oU<N&&L>1)throw new Error("recovery id is ambiguous for h>1 curve");let K=L===2||L===3?J+a:J;if(!s.isValid(K))throw new Error("recovery id 2 or 3 invalid");let $=s.toBytes(K),te=r.fromBytes(Sn(aU((L&1)===0),$)),re=o.inv(K),ee=x(vt("msgHash",P)),Z=o.create(-ee*re),me=o.create(z*re),le=r.BASE.multiplyUnsafe(Z).add(te.multiplyUnsafe(me));if(le.is0())throw new Error("point at infinify");return le.assertValidity(),le}hasHighS(){return I(this.s)}toBytes(P=p){if(HB(P),P==="der")return lI(Zs.hexFromSig(this));let N=o.toBytes(this.r),J=o.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return Sn(Uint8Array.of(this.recovery),N,J)}return Sn(N,J)}toHex(P){return Tc(this.toBytes(P))}assertValidity(){}static fromCompact(P){return C.fromBytes(vt("sig",P),"compact")}static fromDER(P){return C.fromBytes(vt("sig",P),"der")}normalizeS(){return this.hasHighS()?new C(this.r,o.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return Tc(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return Tc(this.toBytes("compact"))}}let b=t.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");let N=qI(P),J=P.length*8-c;return J>0?N>>BigInt(J):N},x=t.bits2int_modN||function(P){return o.create(b(P))},_=IA(c);function R(E){return rA("num < 2^"+c,E,to,_),o.toBytes(E)}function U(E,P){return Qn(E,void 0,"message"),P?Qn(e(E),void 0,"prehashed message"):E}function T(E,P,N){if(["recovered","canonical"].some(Z=>Z in N))throw new Error("sign() legacy options not supported");let{lowS:J,prehash:z,extraEntropy:L}=iB(N,g);E=U(E,z);let G=x(E),K=gd(o,P),$=[R(K),R(G)];if(L!=null&&L!==!1){let Z=L===!0?i(h.secretKey):L;$.push(vt("extraEntropy",Z))}let te=Sn(...$),re=G;function ee(Z){let me=b(Z);if(!o.isValidNot0(me))return;let le=o.inv(me),Ae=r.BASE.multiply(me).toAffine(),ve=o.create(Ae.x);if(ve===to)return;let qe=o.create(le*o.create(re+ve*K));if(qe===to)return;let _e=(Ae.x===ve?0:2)|Number(Ae.y&Cd),se=qe;return J&&I(qe)&&(se=o.neg(qe),_e^=1),new C(ve,se,_e)}return{seed:te,k2sig:ee}}function D(E,P,N={}){E=vt("message",E);let{seed:J,k2sig:z}=T(E,P,N);return jX(e.outputLen,o.BYTES,n)(J,z)}function B(E){let P,N=typeof E=="string"||mA(E),J=!N&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!N&&!J)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(J)P=new C(E.r,E.s);else if(N){try{P=C.fromBytes(vt("sig",E),"der")}catch(z){if(!(z instanceof Zs.Err))throw z}if(!P)try{P=C.fromBytes(vt("sig",E),"compact")}catch{return!1}}return P||!1}function Q(E,P,N,J={}){let{lowS:z,prehash:L,format:G}=iB(J,g);if(N=vt("publicKey",N),P=U(vt("message",P),L),"strict"in J)throw new Error("options.strict was renamed to lowS");let K=G===void 0?B(E):C.fromBytes(vt("sig",E),G);if(K===!1)return!1;try{let $=r.fromBytes(N);if(z&&K.hasHighS())return!1;let{r:te,s:re}=K,ee=x(P),Z=o.inv(re),me=o.create(ee*Z),le=o.create(te*Z),Ae=r.BASE.multiplyUnsafe(me).add($.multiplyUnsafe(le));return Ae.is0()?!1:o.create(Ae.x)===te}catch{return!1}}function v(E,P,N={}){let{prehash:J}=iB(N,g);return P=U(P,J),C.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:r,sign:D,verify:Q,recoverPublicKey:v,Signature:C,hash:e})}function kZ(r){let e={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(o=>Math.ceil(o/2)))):void 0,n=Si(e.n,{BITS:r.nBitLength,allowedLengths:i,modFromBytes:r.wrapPrivateKey}),s={Fp:t,Fn:n,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:e,curveOpts:s}}function SZ(r){let{CURVE:e,curveOpts:t}=kZ(r),i={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:e,curveOpts:t,hash:r.hash,ecdsaOpts:i}}function DZ(r,e){let t=e.Point;return Object.assign({},e,{ProjectivePoint:t,CURVE:Object.assign({},r,JT(t.Fn.ORDER,t.Fn.BITS))})}function QZ(r){let{CURVE:e,curveOpts:t,hash:i,ecdsaOpts:n}=SZ(r),s=BZ(e,t),o=vZ(s,i,n);return DZ(r,o)}function Gc(r,e){let t=i=>QZ({...r,hash:i});return{...t(e),create:t}}function jZ(r,e=24){let t=new Uint32Array(10);for(let i=24-e;i<24;i++){for(let o=0;o<10;o++)t[o]=r[o]^r[o+10]^r[o+20]^r[o+30]^r[o+40];for(let o=0;o<10;o+=2){let a=(o+8)%10,c=(o+2)%10,l=t[c],d=t[c+1],u=o6(l,d,1)^t[a],f=a6(l,d,1)^t[a+1];for(let h=0;h<50;h+=10)r[o+h]^=u,r[o+h+1]^=f}let n=r[2],s=r[3];for(let o=0;o<24;o++){let a=AU[o],c=o6(n,s,a),l=a6(n,s,a),d=fU[o];n=r[d],s=r[d+1],r[d]=c,r[d+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)t[a]=r[o+a];for(let a=0;a<10;a++)r[o+a]^=~t[(a+2)%10]&t[(a+4)%10]}r[0]^=zZ[i],r[1]^=JZ[i]}cn(t)}function ZZ(r,e,t,i){let n=r.sqr(t),s=r.sqr(i),o=r.add(r.mul(e.a,n),s),a=r.add(r.ONE,r.mul(e.d,r.mul(n,s)));return r.eql(o,a)}function mU(r,e={}){let t=sU("edwards",r,e,e.FpFnLE),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o}=s;Ud(e,{},{uvRatio:"function"});let a=nB<<BigInt(n.BYTES*8)-Er,c=I=>i.create(I),l=e.uvRatio||((I,y)=>{try{return{isValid:!0,value:i.sqrt(i.div(I,y))}}catch{return{isValid:!1,value:da}}});if(!ZZ(i,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(I,y,w=!1){let C=w?Er:da;return rA("coordinate "+I,y,C,a),y}function u(I){if(!(I instanceof g))throw new Error("ExtendedPoint expected")}let f=dI((I,y)=>{let{X:w,Y:C,Z:b}=I,x=I.is0();y==null&&(y=x?XZ:i.inv(b));let _=c(w*y),R=c(C*y),U=i.mul(b,y);if(x)return{x:da,y:Er};if(U!==Er)throw new Error("invZ was invalid");return{x:_,y:R}}),h=dI(I=>{let{a:y,d:w}=s;if(I.is0())throw new Error("bad point: ZERO");let{X:C,Y:b,Z:x,T:_}=I,R=c(C*C),U=c(b*b),T=c(x*x),D=c(T*T),B=c(R*y),Q=c(T*c(B+U)),v=c(D+c(w*c(R*U)));if(Q!==v)throw new Error("bad point: equation left != right (1)");let E=c(C*b),P=c(x*_);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(y,w,C,b){this.X=d("x",y),this.Y=d("y",w),this.Z=d("z",C,!0),this.T=d("t",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(y){if(y instanceof g)throw new Error("extended point not allowed");let{x:w,y:C}=y||{};return d("x",w),d("y",C),new g(w,C,Er,c(w*C))}static fromBytes(y,w=!1){let C=i.BYTES,{a:b,d:x}=s;y=Y5(Qn(y,C,"point")),Oc(w,"zip215");let _=Y5(y),R=y[C-1];_[C-1]=R&-129;let U=Mc(_),T=w?a:i.ORDER;rA("point.y",U,da,T);let D=c(U*U),B=c(D-Er),Q=c(x*D-b),{isValid:v,value:E}=l(B,Q);if(!v)throw new Error("bad point: invalid y coordinate");let P=(E&Er)===Er,N=(R&128)!==0;if(!w&&E===da&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(E=c(-E)),g.fromAffine({x:E,y:U})}static fromHex(y,w=!1){return g.fromBytes(vt("point",y),w)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,w=!0){return p.createCache(this,y),w||this.multiply(nB),this}assertValidity(){h(this)}equals(y){u(y);let{X:w,Y:C,Z:b}=this,{X:x,Y:_,Z:R}=y,U=c(w*R),T=c(x*b),D=c(C*R),B=c(_*b);return U===T&&D===B}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:y}=s,{X:w,Y:C,Z:b}=this,x=c(w*w),_=c(C*C),R=c(nB*c(b*b)),U=c(y*x),T=w+C,D=c(c(T*T)-x-_),B=U+_,Q=B-R,v=U-_,E=c(D*Q),P=c(B*v),N=c(D*v),J=c(Q*B);return new g(E,P,J,N)}add(y){u(y);let{a:w,d:C}=s,{X:b,Y:x,Z:_,T:R}=this,{X:U,Y:T,Z:D,T:B}=y,Q=c(b*U),v=c(x*T),E=c(R*C*B),P=c(_*D),N=c((b+x)*(U+T)-Q-v),J=P-E,z=P+E,L=c(v-w*Q),G=c(N*J),K=c(z*L),$=c(N*L),te=c(J*z);return new g(G,K,te,$)}subtract(y){return this.add(y.negate())}multiply(y){if(!n.isValidNot0(y))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:w,f:C}=p.cached(this,y,b=>Fc(g,b));return Fc(g,[w,C])[0]}multiplyUnsafe(y,w=g.ZERO){if(!n.isValid(y))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return y===da?g.ZERO:this.is0()||y===Er?this:p.unsafe(this,y,C=>Fc(g,C),w)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(y){return f(this,y)}clearCofactor(){return o===Er?this:this.multiplyUnsafe(o)}toBytes(){let{x:y,y:w}=this.toAffine(),C=i.toBytes(w);return C[C.length-1]|=y&Er?128:0,C}toHex(){return Tc(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(y){return Fc(g,y)}static msm(y,w){return nU(g,n,y,w)}_setWindowSize(y){this.precompute(y)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Er,c(s.Gx*s.Gy)),g.ZERO=new g(da,Er,Er,da),g.Fp=i,g.Fn=n;let p=new gI(g,n.BITS);return g.BASE.precompute(8),g}function eee(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Ud(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:i}=t,{BASE:n,Fp:s,Fn:o}=r,a=t.randomBytes||NI,c=t.adjustScalarBytes||(T=>T),l=t.domain||((T,D,B)=>{if(Oc(B,"phflag"),D.length||B)throw new Error("Contexts/pre-hash are not supported");return T});function d(T){return o.create(Mc(T))}function u(T){let D=C.secretKey;T=vt("private key",T,D);let B=vt("hashed private key",e(T),2*D),Q=c(B.slice(0,D)),v=B.slice(D,2*D),E=d(Q);return{head:Q,prefix:v,scalar:E}}function f(T){let{head:D,prefix:B,scalar:Q}=u(T),v=n.multiply(Q),E=v.toBytes();return{head:D,prefix:B,scalar:Q,point:v,pointBytes:E}}function h(T){return f(T).pointBytes}function g(T=Uint8Array.of(),...D){let B=Sn(...D);return d(e(l(B,vt("context",T),!!i)))}function p(T,D,B={}){T=vt("message",T),i&&(T=i(T));let{prefix:Q,scalar:v,pointBytes:E}=f(D),P=g(B.context,Q,T),N=n.multiply(P).toBytes(),J=g(B.context,N,E,T),z=o.create(P+J*v);if(!o.isValid(z))throw new Error("sign failed: invalid s");let L=Sn(N,o.toBytes(z));return Qn(L,C.signature,"result")}let I={zip215:!0};function y(T,D,B,Q=I){let{context:v,zip215:E}=Q,P=C.signature;T=vt("signature",T,P),D=vt("message",D),B=vt("publicKey",B,C.publicKey),E!==void 0&&Oc(E,"zip215"),i&&(D=i(D));let N=P/2,J=T.subarray(0,N),z=Mc(T.subarray(N,P)),L,G,K;try{L=r.fromBytes(B,E),G=r.fromBytes(J,E),K=n.multiplyUnsafe(z)}catch{return!1}if(!E&&L.isSmallOrder())return!1;let $=g(v,G.toBytes(),L.toBytes(),D);return G.add(L.multiplyUnsafe($)).subtract(K).clearCofactor().is0()}let w=s.BYTES,C={secretKey:w,publicKey:w,signature:2*w,seed:w};function b(T=a(C.seed)){return Qn(T,C.seed,"seed")}function x(T){let D=U.randomSecretKey(T);return{secretKey:D,publicKey:h(D)}}function _(T){return mA(T)&&T.length===o.BYTES}function R(T,D){try{return!!r.fromBytes(T,D)}catch{return!1}}let U={getExtendedPublicKey:f,randomSecretKey:b,isValidSecretKey:_,isValidPublicKey:R,toMontgomery(T){let{y:D}=r.fromBytes(T),B=C.publicKey,Q=B===32;if(!Q&&B!==57)throw new Error("only defined for 25519 and 448");let v=Q?s.div(Er+D,Er-D):s.div(D-Er,D+Er);return s.toBytes(v)},toMontgomerySecret(T){let D=C.secretKey;Qn(T,D);let B=e(T.subarray(0,D));return c(B).subarray(0,D)},randomPrivateKey:b,precompute(T=8,D=r.BASE){return D.precompute(T,!1)}};return Object.freeze({keygen:x,getPublicKey:h,sign:p,verify:y,utils:U,Point:r,lengths:C})}function tee(r){let e={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=Si(e.n,r.nBitLength,!0),n={Fp:t,Fn:i,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:e,curveOpts:n,hash:r.hash,eddsaOpts:s}}function ree(r,e){let t=e.Point;return Object.assign({},e,{ExtendedPoint:t,CURVE:r,nBitLength:t.Fn.BITS,nByteLength:t.Fn.BYTES})}function iee(r){let{CURVE:e,curveOpts:t,hash:i,eddsaOpts:n}=tee(r),s=mU(e,t),o=eee(s,i,n);return ree(r,o)}function nee(r){return Ud(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function see(r){let e=nee(r),{P:t,type:i,adjustScalarBytes:n,powPminus2:s,randomBytes:o}=e,a=i==="x25519";if(!a&&i!=="x448")throw new Error("invalid type");let c=o||NI,l=a?255:448,d=a?32:56,u=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Ey**BigInt(254):Ey**BigInt(447),g=a?BigInt(8)*Ey**BigInt(251)-ld:BigInt(4)*Ey**BigInt(445)-ld,p=h+g+ld,I=v=>pr(v,t),y=w(u);function w(v){return v1(I(v),d)}function C(v){let E=vt("u coordinate",v,d);return a&&(E[31]&=127),I(Mc(E))}function b(v){return Mc(n(vt("scalar",v,d)))}function x(v,E){let P=U(C(E),b(v));if(P===Tf)throw new Error("invalid private or public key received");return w(P)}function _(v){return x(v,y)}function R(v,E,P){let N=I(v*(E-P));return E=I(E-N),P=I(P+N),{x_2:E,x_3:P}}function U(v,E){rA("u",v,Tf,t),rA("scalar",E,h,p);let P=E,N=v,J=ld,z=Tf,L=v,G=ld,K=Tf;for(let te=BigInt(l-1);te>=Tf;te--){let re=P>>te&ld;K^=re,{x_2:J,x_3:L}=R(K,J,L),{x_2:z,x_3:G}=R(K,z,G),K=re;let ee=J+z,Z=I(ee*ee),me=J-z,le=I(me*me),Ae=Z-le,ve=L+G,qe=L-G,_e=I(qe*ee),se=I(ve*me),it=_e+se,ce=_e-se;L=I(it*it),G=I(N*I(ce*ce)),J=I(Z*le),z=I(Ae*(Z+I(f*Ae)))}({x_2:J,x_3:L}=R(K,J,L)),{x_2:z,x_3:G}=R(K,z,G);let $=s(z);return I(J*$)}let T={secretKey:d,publicKey:d,seed:d},D=(v=c(d))=>(hs(v,T.seed),v);function B(v){let E=D(v);return{secretKey:E,publicKey:_(E)}}return{keygen:B,getSharedSecret:(v,E)=>x(v,E),getPublicKey:v=>_(v),scalarMult:x,scalarMultBase:_,utils:{randomSecretKey:D,randomPrivateKey:D},GuBytes:y.slice(),lengths:T}}function yU(r){let e=zc.p,t=r*r*r%e,i=t*t*r%e,n=bt(i,c6,e)*i%e,s=bt(n,c6,e)*i%e,o=bt(s,GB,e)*t%e,a=bt(o,lee,e)*o%e,c=bt(a,dee,e)*a%e,l=bt(c,l6,e)*c%e,d=bt(l,uee,e)*l%e,u=bt(d,l6,e)*c%e,f=bt(u,GB,e)*t%e,h=bt(f,cee,e)*r%e;return bt(h,fee,e)*f%e}function IU(r){return r[0]&=252,r[55]|=128,r[56]=0,r}function Aee(r,e){let t=zc.p,i=pr(r*r*e,t),n=pr(i*r,t),s=pr(n*i*e,t),o=yU(s),a=pr(n*o,t),c=pr(a*a,t);return{isValid:pr(c*e,t)===r,value:a}}function gee(r,e,t){if(e.length>255)throw new Error("context must be smaller than 255, got: "+e.length);return Sn(zX("SigEd448"),new Uint8Array([t?1:0,e.length]),e,r)}function wee(r){let e=D1.p,t=BigInt(3),i=BigInt(6),n=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=bt(d,t,e)*d%e,f=bt(u,t,e)*d%e,h=bt(f,u6,e)*l%e,g=bt(h,n,e)*h%e,p=bt(g,s,e)*g%e,I=bt(p,a,e)*p%e,y=bt(I,c,e)*I%e,w=bt(y,a,e)*p%e,C=bt(w,t,e)*d%e,b=bt(C,o,e)*g%e,x=bt(b,i,e)*l%e,_=bt(x,u6,e);if(!zB.eql(zB.sqr(_),r))throw new Error("Cannot find square root");return _}function f6(r,e,t,i){return r===0?e^t^i:r===1?e&t|~e&i:r===2?(e|~t)^i:r===3?e&i|t&~i:e^(t|~i)}function p6(r,e,t,i){r[e]=t>>24&255,r[e+1]=t>>16&255,r[e+2]=t>>8&255,r[e+3]=t&255,r[e+4]=i>>24&255,r[e+5]=i>>16&255,r[e+6]=i>>8&255,r[e+7]=i&255}function Xee(r,e,t,i,n){var s,o=0;for(s=0;s<n;s++)o|=r[e+s]^t[i+s];return(1&o-1>>>8)-1}function FU(r,e,t,i){return Xee(r,e,t,i,32)}function Ia(r,e){var t;for(t=0;t<16;t++)r[t]=e[t]|0}function aB(r){var e,t,i=1;for(e=0;e<16;e++)t=r[e]+i+65535,i=Math.floor(t/65536),r[e]=t-i*65536;r[0]+=i-1+37*(i-1)}function pd(r,e,t){for(var i,n=~(t-1),s=0;s<16;s++)i=n&(r[s]^e[s]),r[s]^=i,e[s]^=i}function iA(r,e){var t,i,n,s=Pe(),o=Pe();for(t=0;t<16;t++)o[t]=e[t];for(aB(o),aB(o),aB(o),i=0;i<2;i++){for(s[0]=o[0]-65517,t=1;t<15;t++)s[t]=o[t]-65535-(s[t-1]>>16&1),s[t-1]&=65535;s[15]=o[15]-32767-(s[14]>>16&1),n=s[15]>>16&1,s[14]&=65535,pd(o,s,1-n)}for(t=0;t<16;t++)r[2*t]=o[t]&255,r[2*t+1]=o[t]>>8}function m6(r,e){var t=new Uint8Array(32),i=new Uint8Array(32);return iA(t,r),iA(i,e),FU(t,0,i,0)}function PU(r){var e=new Uint8Array(32);return iA(e,r),e[0]&1}function TU(r,e){var t;for(t=0;t<16;t++)r[t]=e[2*t]+(e[2*t+1]<<8);r[15]&=32767}function ss(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]+t[i]}function as(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]-t[i]}function at(r,e,t){var i,n,s=0,o=0,a=0,c=0,l=0,d=0,u=0,f=0,h=0,g=0,p=0,I=0,y=0,w=0,C=0,b=0,x=0,_=0,R=0,U=0,T=0,D=0,B=0,Q=0,v=0,E=0,P=0,N=0,J=0,z=0,L=0,G=t[0],K=t[1],$=t[2],te=t[3],re=t[4],ee=t[5],Z=t[6],me=t[7],le=t[8],Ae=t[9],ve=t[10],qe=t[11],_e=t[12],se=t[13],it=t[14],ce=t[15];i=e[0],s+=i*G,o+=i*K,a+=i*$,c+=i*te,l+=i*re,d+=i*ee,u+=i*Z,f+=i*me,h+=i*le,g+=i*Ae,p+=i*ve,I+=i*qe,y+=i*_e,w+=i*se,C+=i*it,b+=i*ce,i=e[1],o+=i*G,a+=i*K,c+=i*$,l+=i*te,d+=i*re,u+=i*ee,f+=i*Z,h+=i*me,g+=i*le,p+=i*Ae,I+=i*ve,y+=i*qe,w+=i*_e,C+=i*se,b+=i*it,x+=i*ce,i=e[2],a+=i*G,c+=i*K,l+=i*$,d+=i*te,u+=i*re,f+=i*ee,h+=i*Z,g+=i*me,p+=i*le,I+=i*Ae,y+=i*ve,w+=i*qe,C+=i*_e,b+=i*se,x+=i*it,_+=i*ce,i=e[3],c+=i*G,l+=i*K,d+=i*$,u+=i*te,f+=i*re,h+=i*ee,g+=i*Z,p+=i*me,I+=i*le,y+=i*Ae,w+=i*ve,C+=i*qe,b+=i*_e,x+=i*se,_+=i*it,R+=i*ce,i=e[4],l+=i*G,d+=i*K,u+=i*$,f+=i*te,h+=i*re,g+=i*ee,p+=i*Z,I+=i*me,y+=i*le,w+=i*Ae,C+=i*ve,b+=i*qe,x+=i*_e,_+=i*se,R+=i*it,U+=i*ce,i=e[5],d+=i*G,u+=i*K,f+=i*$,h+=i*te,g+=i*re,p+=i*ee,I+=i*Z,y+=i*me,w+=i*le,C+=i*Ae,b+=i*ve,x+=i*qe,_+=i*_e,R+=i*se,U+=i*it,T+=i*ce,i=e[6],u+=i*G,f+=i*K,h+=i*$,g+=i*te,p+=i*re,I+=i*ee,y+=i*Z,w+=i*me,C+=i*le,b+=i*Ae,x+=i*ve,_+=i*qe,R+=i*_e,U+=i*se,T+=i*it,D+=i*ce,i=e[7],f+=i*G,h+=i*K,g+=i*$,p+=i*te,I+=i*re,y+=i*ee,w+=i*Z,C+=i*me,b+=i*le,x+=i*Ae,_+=i*ve,R+=i*qe,U+=i*_e,T+=i*se,D+=i*it,B+=i*ce,i=e[8],h+=i*G,g+=i*K,p+=i*$,I+=i*te,y+=i*re,w+=i*ee,C+=i*Z,b+=i*me,x+=i*le,_+=i*Ae,R+=i*ve,U+=i*qe,T+=i*_e,D+=i*se,B+=i*it,Q+=i*ce,i=e[9],g+=i*G,p+=i*K,I+=i*$,y+=i*te,w+=i*re,C+=i*ee,b+=i*Z,x+=i*me,_+=i*le,R+=i*Ae,U+=i*ve,T+=i*qe,D+=i*_e,B+=i*se,Q+=i*it,v+=i*ce,i=e[10],p+=i*G,I+=i*K,y+=i*$,w+=i*te,C+=i*re,b+=i*ee,x+=i*Z,_+=i*me,R+=i*le,U+=i*Ae,T+=i*ve,D+=i*qe,B+=i*_e,Q+=i*se,v+=i*it,E+=i*ce,i=e[11],I+=i*G,y+=i*K,w+=i*$,C+=i*te,b+=i*re,x+=i*ee,_+=i*Z,R+=i*me,U+=i*le,T+=i*Ae,D+=i*ve,B+=i*qe,Q+=i*_e,v+=i*se,E+=i*it,P+=i*ce,i=e[12],y+=i*G,w+=i*K,C+=i*$,b+=i*te,x+=i*re,_+=i*ee,R+=i*Z,U+=i*me,T+=i*le,D+=i*Ae,B+=i*ve,Q+=i*qe,v+=i*_e,E+=i*se,P+=i*it,N+=i*ce,i=e[13],w+=i*G,C+=i*K,b+=i*$,x+=i*te,_+=i*re,R+=i*ee,U+=i*Z,T+=i*me,D+=i*le,B+=i*Ae,Q+=i*ve,v+=i*qe,E+=i*_e,P+=i*se,N+=i*it,J+=i*ce,i=e[14],C+=i*G,b+=i*K,x+=i*$,_+=i*te,R+=i*re,U+=i*ee,T+=i*Z,D+=i*me,B+=i*le,Q+=i*Ae,v+=i*ve,E+=i*qe,P+=i*_e,N+=i*se,J+=i*it,z+=i*ce,i=e[15],b+=i*G,x+=i*K,_+=i*$,R+=i*te,U+=i*re,T+=i*ee,D+=i*Z,B+=i*me,Q+=i*le,v+=i*Ae,E+=i*ve,P+=i*qe,N+=i*_e,J+=i*se,z+=i*it,L+=i*ce,s+=38*x,o+=38*_,a+=38*R,c+=38*U,l+=38*T,d+=38*D,u+=38*B,f+=38*Q,h+=38*v,g+=38*E,p+=38*P,I+=38*N,y+=38*J,w+=38*z,C+=38*L,n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),r[0]=s,r[1]=o,r[2]=a,r[3]=c,r[4]=l,r[5]=d,r[6]=u,r[7]=f,r[8]=h,r[9]=g,r[10]=p,r[11]=I,r[12]=y,r[13]=w,r[14]=C,r[15]=b}function Dn(r,e){at(r,e,e)}function UU(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=253;i>=0;i--)Dn(t,t),i!==2&&i!==4&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function Zee(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=250;i>=0;i--)Dn(t,t),i!==1&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function RU(r,e,t){var i=new Uint8Array(32),n=new Float64Array(80),s,o,a=Pe(),c=Pe(),l=Pe(),d=Pe(),u=Pe(),f=Pe();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,TU(n,t),o=0;o<16;o++)c[o]=n[o],d[o]=a[o]=l[o]=0;for(a[0]=d[0]=1,o=254;o>=0;--o)s=i[o>>>3]>>>(o&7)&1,pd(a,c,s),pd(l,d,s),ss(u,a,l),as(a,a,l),ss(l,c,d),as(c,c,d),Dn(d,u),Dn(f,a),at(a,l,a),at(l,c,u),ss(u,a,l),as(a,a,l),Dn(c,a),as(l,d,f),at(a,l,$ee),ss(a,a,d),at(l,l,a),at(a,d,f),at(d,c,n),Dn(c,u),pd(a,c,s),pd(l,d,s);for(o=0;o<16;o++)n[o+16]=a[o],n[o+32]=l[o],n[o+48]=c[o],n[o+64]=d[o];var h=n.subarray(32),g=n.subarray(16);return UU(h,h),at(g,g,h),iA(r,g),0}function NU(r,e){return RU(r,e,_U)}function ete(r,e){return Q1(e,32),NU(r,e)}function I6(r,e,t,i){for(var n=new Int32Array(16),s=new Int32Array(16),o,a,c,l,d,u,f,h,g,p,I,y,w,C,b,x,_,R,U,T,D,B,Q,v,E,P,N=r[0],J=r[1],z=r[2],L=r[3],G=r[4],K=r[5],$=r[6],te=r[7],re=e[0],ee=e[1],Z=e[2],me=e[3],le=e[4],Ae=e[5],ve=e[6],qe=e[7],_e=0;i>=128;){for(U=0;U<16;U++)T=8*U+_e,n[U]=t[T+0]<<24|t[T+1]<<16|t[T+2]<<8|t[T+3],s[U]=t[T+4]<<24|t[T+5]<<16|t[T+6]<<8|t[T+7];for(U=0;U<80;U++)if(o=N,a=J,c=z,l=L,d=G,u=K,f=$,h=te,g=re,p=ee,I=Z,y=me,w=le,C=Ae,b=ve,x=qe,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(G>>>14|le<<18)^(G>>>18|le<<14)^(le>>>9|G<<23),B=(le>>>14|G<<18)^(le>>>18|G<<14)^(G>>>9|le<<23),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=G&K^~G&$,B=le&Ae^~le&ve,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=y6[U*2],B=y6[U*2+1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=n[U%16],B=s[U%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,_=E&65535|P<<16,R=Q&65535|v<<16,D=_,B=R,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(N>>>28|re<<4)^(re>>>2|N<<30)^(re>>>7|N<<25),B=(re>>>28|N<<4)^(N>>>2|re<<30)^(N>>>7|re<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=N&J^N&z^J&z,B=re&ee^re&Z^ee&Z,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,h=E&65535|P<<16,x=Q&65535|v<<16,D=l,B=y,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=_,B=R,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,l=E&65535|P<<16,y=Q&65535|v<<16,J=o,z=a,L=c,G=l,K=d,$=u,te=f,N=h,ee=g,Z=p,me=I,le=y,Ae=w,ve=C,qe=b,re=x,U%16===15)for(T=0;T<16;T++)D=n[T],B=s[T],Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=n[(T+9)%16],B=s[(T+9)%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+1)%16],R=s[(T+1)%16],D=(_>>>1|R<<31)^(_>>>8|R<<24)^_>>>7,B=(R>>>1|_<<31)^(R>>>8|_<<24)^(R>>>7|_<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+14)%16],R=s[(T+14)%16],D=(_>>>19|R<<13)^(R>>>29|_<<3)^_>>>6,B=(R>>>19|_<<13)^(_>>>29|R<<3)^(R>>>6|_<<26),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,n[T]=E&65535|P<<16,s[T]=Q&65535|v<<16;D=N,B=re,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[0],B=e[0],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[0]=N=E&65535|P<<16,e[0]=re=Q&65535|v<<16,D=J,B=ee,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[1],B=e[1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[1]=J=E&65535|P<<16,e[1]=ee=Q&65535|v<<16,D=z,B=Z,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[2],B=e[2],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[2]=z=E&65535|P<<16,e[2]=Z=Q&65535|v<<16,D=L,B=me,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[3],B=e[3],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[3]=L=E&65535|P<<16,e[3]=me=Q&65535|v<<16,D=G,B=le,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[4],B=e[4],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[4]=G=E&65535|P<<16,e[4]=le=Q&65535|v<<16,D=K,B=Ae,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[5],B=e[5],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[5]=K=E&65535|P<<16,e[5]=Ae=Q&65535|v<<16,D=$,B=ve,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[6],B=e[6],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[6]=$=E&65535|P<<16,e[6]=ve=Q&65535|v<<16,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[7],B=e[7],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[7]=te=E&65535|P<<16,e[7]=qe=Q&65535|v<<16,_e+=128,i-=128}return i}function Kf(r,e,t){var i=new Int32Array(8),n=new Int32Array(8),s=new Uint8Array(256),o,a=t;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,I6(i,n,e,t),t%=128,o=0;o<t;o++)s[o]=e[a-t+o];for(s[t]=128,t=256-128*(t<112?1:0),s[t-9]=0,p6(s,t-8,a/536870912|0,a<<3),I6(i,n,s,t),o=0;o<8;o++)p6(r,8*o,i[o],n[o]);return 0}function YB(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe(),l=Pe(),d=Pe();as(t,r[1],r[0]),as(d,e[1],e[0]),at(t,t,d),ss(i,r[0],r[1]),ss(d,e[0],e[1]),at(i,i,d),at(n,r[3],e[3]),at(n,n,Yee),at(s,r[2],e[2]),ss(s,s,s),as(o,i,t),as(a,s,n),ss(c,s,n),ss(l,i,t),at(r[0],o,a),at(r[1],l,c),at(r[2],c,a),at(r[3],o,l)}function w6(r,e,t){var i;for(i=0;i<4;i++)pd(r[i],e[i],t)}function _1(r,e){var t=Pe(),i=Pe(),n=Pe();UU(n,e[2]),at(t,e[0],n),at(i,e[1],n),iA(r,i),r[31]^=PU(t)<<7}function qU(r,e,t){var i,n;for(Ia(r[0],VB),Ia(r[1],mI),Ia(r[2],mI),Ia(r[3],VB),n=255;n>=0;--n)i=t[n/8|0]>>(n&7)&1,w6(r,e,i),YB(e,r),YB(r,r),w6(r,e,i)}function F1(r,e){var t=[Pe(),Pe(),Pe(),Pe()];Ia(t[0],h6),Ia(t[1],g6),Ia(t[2],mI),at(t[3],h6,g6),qU(r,t,e)}function OU(r,e,t){var i=new Uint8Array(64),n=[Pe(),Pe(),Pe(),Pe()],s;for(t||Q1(e,32),Kf(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,F1(n,i),_1(r,n),s=0;s<32;s++)e[s+32]=r[s];return 0}function MU(r,e){var t,i,n,s;for(i=63;i>=32;--i){for(t=0,n=i-32,s=i-12;n<s;++n)e[n]+=t-16*e[i]*cB[n-(i-32)],t=Math.floor((e[n]+128)/256),e[n]-=t*256;e[n]+=t,e[i]=0}for(t=0,n=0;n<32;n++)e[n]+=t-(e[31]>>4)*cB[n],t=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=t*cB[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,r[i]=e[i]&255}function WB(r){var e=new Float64Array(64),t;for(t=0;t<64;t++)e[t]=r[t];for(t=0;t<64;t++)r[t]=0;MU(r,e)}function tte(r,e,t,i){var n=new Uint8Array(64),s=new Uint8Array(64),o=new Uint8Array(64),a,c,l=new Float64Array(64),d=[Pe(),Pe(),Pe(),Pe()];Kf(n,i,32),n[0]&=248,n[31]&=127,n[31]|=64;var u=t+64;for(a=0;a<t;a++)r[64+a]=e[a];for(a=0;a<32;a++)r[32+a]=n[32+a];for(Kf(o,r.subarray(32),t+32),WB(o),F1(d,o),_1(r,d),a=32;a<64;a++)r[a]=i[a];for(Kf(s,r,t+64),WB(s),a=0;a<64;a++)l[a]=0;for(a=0;a<32;a++)l[a]=o[a];for(a=0;a<32;a++)for(c=0;c<32;c++)l[a+c]+=s[a]*n[c];return MU(r.subarray(32),l),u}function rte(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe();return Ia(r[2],mI),TU(r[1],e),Dn(n,r[1]),at(s,n,Vee),as(n,n,r[2]),ss(s,r[2],s),Dn(o,s),Dn(a,o),at(c,a,o),at(t,c,n),at(t,t,s),Zee(t,t),at(t,t,n),at(t,t,s),at(t,t,s),at(r[0],t,s),Dn(i,r[0]),at(i,i,s),m6(i,n)&&at(r[0],r[0],Wee),Dn(i,r[0]),at(i,i,s),m6(i,n)?-1:(PU(r[0])===e[31]>>7&&as(r[0],VB,r[0]),at(r[3],r[0],r[1]),0)}function ite(r,e,t,i){var n,s=new Uint8Array(32),o=new Uint8Array(64),a=[Pe(),Pe(),Pe(),Pe()],c=[Pe(),Pe(),Pe(),Pe()];if(t<64||rte(c,i))return-1;for(n=0;n<t;n++)r[n]=e[n];for(n=0;n<32;n++)r[n+32]=i[n];if(Kf(o,r,t),WB(o),qU(a,c,o),F1(c,e.subarray(32)),YB(a,c),_1(s,a),t-=64,FU(e,0,s,0)){for(n=0;n<t;n++)r[n]=0;return-1}for(n=0;n<t;n++)r[n]=e[n+64];return t}function Rd(){for(var r=0;r<arguments.length;r++)if(!(arguments[r]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function ote(r){for(var e=0;e<r.length;e++)r[e]=0}function lB(r,e,t,i,n,s){let o=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],a=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],c=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],u=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],f=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],h=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696],g=0,p,I,y,w,C,b,x,_,R,U,T=e.length,D=r.length===32?3:9;D===3?_=t?[0,32,2]:[30,-2,-2]:_=t?[0,32,2,62,30,-2,64,96,2]:[94,62,-2,32,64,2,30,-2,-2],t&&(e=ate(e),T=e.length);let B=new Uint8Array(T),Q=0;for(;g<T;){for(b=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],x=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],y=(b>>>4^x)&252645135,x^=y,b^=y<<4,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,b=b<<1|b>>>31,x=x<<1|x>>>31,I=0;I<D;I+=3){for(R=_[I+1],U=_[I+2],p=_[I];p!==R;p+=U)w=x^r[p],C=(x>>>4|x<<28)^r[p+1],y=b,b=x,x=y^(a[w>>>24&63]|l[w>>>16&63]|u[w>>>8&63]|h[w&63]|o[C>>>24&63]|c[C>>>16&63]|d[C>>>8&63]|f[C&63]);y=b,b=x,x=y}b=b>>>1|b<<31,x=x>>>1|x<<31,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(b>>>4^x)&252645135,x^=y,b^=y<<4,B[Q++]=b>>>24,B[Q++]=b>>>16&255,B[Q++]=b>>>8&255,B[Q++]=b&255,B[Q++]=x>>>24,B[Q++]=x>>>16&255,B[Q++]=x>>>8&255,B[Q++]=x&255}return t||(B=cte(B)),B}function dB(r){let e=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],t=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],n=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],s=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],o=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],a=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],c=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],l=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],d=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],u=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],f=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],h=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],g=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],p=r.length>8?3:1,I=new Array(32*p),y=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],w,C,b=0,x=0,_;for(let R=0;R<p;R++){let U=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++],T=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++];_=(U>>>4^T)&252645135,T^=_,U^=_<<4,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>2^T)&858993459,T^=_,U^=_<<2,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=(T>>>8^U)&16711935,U^=_,T^=_<<8,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=U<<8|T>>>20&240,U=T<<24|T<<8&16711680|T>>>8&65280|T>>>24&240,T=_;for(let D=0;D<y.length;D++)y[D]?(U=U<<2|U>>>26,T=T<<2|T>>>26):(U=U<<1|U>>>27,T=T<<1|T>>>27),U&=-15,T&=-15,w=e[U>>>28]|t[U>>>24&15]|i[U>>>20&15]|n[U>>>16&15]|s[U>>>12&15]|o[U>>>8&15]|a[U>>>4&15],C=c[T>>>28]|l[T>>>24&15]|d[T>>>20&15]|u[T>>>16&15]|f[T>>>12&15]|h[T>>>8&15]|g[T>>>4&15],_=(C>>>16^w)&65535,I[x++]=w^_,I[x++]=C^_<<16}return I}function ate(r,e){let t=8-r.length%8,i;if(t<8)i=0;else{if(t===8)return r;throw new Error("des: invalid padding")}let n=new Uint8Array(r.length+t);for(let s=0;s<r.length;s++)n[s]=r[s];for(let s=0;s<t;s++)n[r.length+s]=i;return n}function cte(r,e){let t=null,i;if(i=0,!t){for(t=1;r[r.length-t]===i;)t++;t--}return r.subarray(0,r.length-t)}function nA(r){this.key=[];for(let e=0;e<3;e++)this.key.push(new Uint8Array(r.subarray(e*8,e*8+8)));this.encrypt=function(e){return lB(dB(this.key[2]),lB(dB(this.key[1]),lB(dB(this.key[0]),e,!0,0,null,null),!1,0,null,null),!0)}}function lte(){this.BlockSize=8,this.KeySize=16,this.setKey=function(o){if(this.masking=new Array(16),this.rotate=new Array(16),this.reset(),o.length===this.KeySize)this.keySchedule(o);else throw new Error("CAST-128: keys must be 16 bytes");return!0},this.reset=function(){for(let o=0;o<16;o++)this.masking[o]=0,this.rotate[o]=0},this.getBlockSize=function(){return this.BlockSize},this.encrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>>16&255,a[c+6]=l>>>8&255,a[c+7]=l&255}return a},this.decrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>16&255,a[c+6]=l>>8&255,a[c+7]=l&255}return a};let r=new Array(4);r[0]=new Array(4),r[0][0]=[4,0,13,15,12,14,8],r[0][1]=[5,2,16,18,17,19,10],r[0][2]=[6,3,23,22,21,20,9],r[0][3]=[7,1,26,25,27,24,11],r[1]=new Array(4),r[1][0]=[0,6,21,23,20,22,16],r[1][1]=[1,4,0,2,1,3,18],r[1][2]=[2,5,7,6,5,4,17],r[1][3]=[3,7,10,9,11,8,19],r[2]=new Array(4),r[2][0]=[4,0,13,15,12,14,8],r[2][1]=[5,2,16,18,17,19,10],r[2][2]=[6,3,23,22,21,20,9],r[2][3]=[7,1,26,25,27,24,11],r[3]=new Array(4),r[3][0]=[0,6,21,23,20,22,16],r[3][1]=[1,4,0,2,1,3,18],r[3][2]=[2,5,7,6,5,4,17],r[3][3]=[3,7,10,9,11,8,19];let e=new Array(4);e[0]=new Array(4),e[0][0]=[24,25,23,22,18],e[0][1]=[26,27,21,20,22],e[0][2]=[28,29,19,18,25],e[0][3]=[30,31,17,16,28],e[1]=new Array(4),e[1][0]=[3,2,12,13,8],e[1][1]=[1,0,14,15,13],e[1][2]=[7,6,8,9,3],e[1][3]=[5,4,10,11,7],e[2]=new Array(4),e[2][0]=[19,18,28,29,25],e[2][1]=[17,16,30,31,28],e[2][2]=[23,22,24,25,18],e[2][3]=[21,20,26,27,22],e[3]=new Array(4),e[3][0]=[8,9,7,6,3],e[3][1]=[10,11,5,4,7],e[3][2]=[12,13,3,2,8],e[3][3]=[14,15,1,0,13],this.keySchedule=function(o){let a=new Array(8),c=new Array(32),l;for(let h=0;h<4;h++)l=h*4,a[h]=o[l]<<24|o[l+1]<<16|o[l+2]<<8|o[l+3];let d=[6,7,4,5],u=0,f;for(let h=0;h<2;h++)for(let g=0;g<4;g++){for(l=0;l<4;l++){let p=r[g][l];f=a[p[1]],f^=s[4][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[5][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[6][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],f^=s[7][a[p[5]>>>2]>>>24-8*(p[5]&3)&255],f^=s[d[l]][a[p[6]>>>2]>>>24-8*(p[6]&3)&255],a[p[0]]=f}for(l=0;l<4;l++){let p=e[g][l];f=s[4][a[p[0]>>>2]>>>24-8*(p[0]&3)&255],f^=s[5][a[p[1]>>>2]>>>24-8*(p[1]&3)&255],f^=s[6][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[7][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[4+l][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],c[u]=f,u++}}for(let h=0;h<16;h++)this.masking[h]=c[h],this.rotate[h]=c[16+h]&31};function t(o,a,c){let l=a+o,d=l<<c|l>>>32-c;return(s[0][d>>>24]^s[1][d>>>16&255])-s[2][d>>>8&255]+s[3][d&255]}function i(o,a,c){let l=a^o,d=l<<c|l>>>32-c;return s[0][d>>>24]-s[1][d>>>16&255]+s[2][d>>>8&255]^s[3][d&255]}function n(o,a,c){let l=a-o,d=l<<c|l>>>32-c;return(s[0][d>>>24]+s[1][d>>>16&255]^s[2][d>>>8&255])-s[3][d&255]}let s=new Array(8);s[0]=[821772500,2678128395,1810681135,1059425402,505495343,2617265619,1610868032,3483355465,3218386727,2294005173,3791863952,2563806837,1852023008,365126098,3269944861,584384398,677919599,3229601881,4280515016,2002735330,1136869587,3744433750,2289869850,2731719981,2714362070,879511577,1639411079,575934255,717107937,2857637483,576097850,2731753936,1725645e3,2810460463,5111599,767152862,2543075244,1251459544,1383482551,3052681127,3089939183,3612463449,1878520045,1510570527,2189125840,2431448366,582008916,3163445557,1265446783,1354458274,3529918736,3202711853,3073581712,3912963487,3029263377,1275016285,4249207360,2905708351,3304509486,1442611557,3585198765,2712415662,2731849581,3248163920,2283946226,208555832,2766454743,1331405426,1447828783,3315356441,3108627284,2957404670,2981538698,3339933917,1669711173,286233437,1465092821,1782121619,3862771680,710211251,980974943,1651941557,430374111,2051154026,704238805,4128970897,3144820574,2857402727,948965521,3333752299,2227686284,718756367,2269778983,2731643755,718440111,2857816721,3616097120,1113355533,2478022182,410092745,1811985197,1944238868,2696854588,1415722873,1682284203,1060277122,1998114690,1503841958,82706478,2315155686,1068173648,845149890,2167947013,1768146376,1993038550,3566826697,3390574031,940016341,3355073782,2328040721,904371731,1205506512,4094660742,2816623006,825647681,85914773,2857843460,1249926541,1417871568,3287612,3211054559,3126306446,1975924523,1353700161,2814456437,2438597621,1800716203,722146342,2873936343,1151126914,4160483941,2877670899,458611604,2866078500,3483680063,770352098,2652916994,3367839148,3940505011,3585973912,3809620402,718646636,2504206814,2914927912,3631288169,2857486607,2860018678,575749918,2857478043,718488780,2069512688,3548183469,453416197,1106044049,3032691430,52586708,3378514636,3459808877,3211506028,1785789304,218356169,3571399134,3759170522,1194783844,1523787992,3007827094,1975193539,2555452411,1341901877,3045838698,3776907964,3217423946,2802510864,2889438986,1057244207,1636348243,3761863214,1462225785,2632663439,481089165,718503062,24497053,3332243209,3344655856,3655024856,3960371065,1195698900,2971415156,3710176158,2115785917,4027663609,3525578417,2524296189,2745972565,3564906415,1372086093,1452307862,2780501478,1476592880,3389271281,18495466,2378148571,901398090,891748256,3279637769,3157290713,2560960102,1447622437,4284372637,216884176,2086908623,1879786977,3588903153,2242455666,2938092967,3559082096,2810645491,758861177,1121993112,215018983,642190776,4169236812,1196255959,2081185372,3508738393,941322904,4124243163,2877523539,1848581667,2205260958,3180453958,2589345134,3694731276,550028657,2519456284,3789985535,2973870856,2093648313,443148163,46942275,2734146937,1117713533,1115362972,1523183689,3717140224,1551984063],s[1]=[522195092,4010518363,1776537470,960447360,4267822970,4005896314,1435016340,1929119313,2913464185,1310552629,3579470798,3724818106,2579771631,1594623892,417127293,2715217907,2696228731,1508390405,3994398868,3925858569,3695444102,4019471449,3129199795,3770928635,3520741761,990456497,4187484609,2783367035,21106139,3840405339,631373633,3783325702,532942976,396095098,3548038825,4267192484,2564721535,2011709262,2039648873,620404603,3776170075,2898526339,3612357925,4159332703,1645490516,223693667,1567101217,3362177881,1029951347,3470931136,3570957959,1550265121,119497089,972513919,907948164,3840628539,1613718692,3594177948,465323573,2659255085,654439692,2575596212,2699288441,3127702412,277098644,624404830,4100943870,2717858591,546110314,2403699828,3655377447,1321679412,4236791657,1045293279,4010672264,895050893,2319792268,494945126,1914543101,2777056443,3894764339,2219737618,311263384,4275257268,3458730721,669096869,3584475730,3835122877,3319158237,3949359204,2005142349,2713102337,2228954793,3769984788,569394103,3855636576,1425027204,108000370,2736431443,3671869269,3043122623,1750473702,2211081108,762237499,3972989403,2798899386,3061857628,2943854345,867476300,964413654,1591880597,1594774276,2179821409,552026980,3026064248,3726140315,2283577634,3110545105,2152310760,582474363,1582640421,1383256631,2043843868,3322775884,1217180674,463797851,2763038571,480777679,2718707717,2289164131,3118346187,214354409,200212307,3810608407,3025414197,2674075964,3997296425,1847405948,1342460550,510035443,4080271814,815934613,833030224,1620250387,1945732119,2703661145,3966000196,1388869545,3456054182,2687178561,2092620194,562037615,1356438536,3409922145,3261847397,1688467115,2150901366,631725691,3840332284,549916902,3455104640,394546491,837744717,2114462948,751520235,2221554606,2415360136,3999097078,2063029875,803036379,2702586305,821456707,3019566164,360699898,4018502092,3511869016,3677355358,2402471449,812317050,49299192,2570164949,3259169295,2816732080,3331213574,3101303564,2156015656,3705598920,3546263921,143268808,3200304480,1638124008,3165189453,3341807610,578956953,2193977524,3638120073,2333881532,807278310,658237817,2969561766,1641658566,11683945,3086995007,148645947,1138423386,4158756760,1981396783,2401016740,3699783584,380097457,2680394679,2803068651,3334260286,441530178,4016580796,1375954390,761952171,891809099,2183123478,157052462,3683840763,1592404427,341349109,2438483839,1417898363,644327628,2233032776,2353769706,2201510100,220455161,1815641738,182899273,2995019788,3627381533,3702638151,2890684138,1052606899,588164016,1681439879,4038439418,2405343923,4229449282,167996282,1336969661,1688053129,2739224926,1543734051,1046297529,1138201970,2121126012,115334942,1819067631,1902159161,1941945968,2206692869,1159982321],s[2]=[2381300288,637164959,3952098751,3893414151,1197506559,916448331,2350892612,2932787856,3199334847,4009478890,3905886544,1373570990,2450425862,4037870920,3778841987,2456817877,286293407,124026297,3001279700,1028597854,3115296800,4208886496,2691114635,2188540206,1430237888,1218109995,3572471700,308166588,570424558,2187009021,2455094765,307733056,1310360322,3135275007,1384269543,2388071438,863238079,2359263624,2801553128,3380786597,2831162807,1470087780,1728663345,4072488799,1090516929,532123132,2389430977,1132193179,2578464191,3051079243,1670234342,1434557849,2711078940,1241591150,3314043432,3435360113,3091448339,1812415473,2198440252,267246943,796911696,3619716990,38830015,1526438404,2806502096,374413614,2943401790,1489179520,1603809326,1920779204,168801282,260042626,2358705581,1563175598,2397674057,1356499128,2217211040,514611088,2037363785,2186468373,4022173083,2792511869,2913485016,1173701892,4200428547,3896427269,1334932762,2455136706,602925377,2835607854,1613172210,41346230,2499634548,2457437618,2188827595,41386358,4172255629,1313404830,2405527007,3801973774,2217704835,873260488,2528884354,2478092616,4012915883,2555359016,2006953883,2463913485,575479328,2218240648,2099895446,660001756,2341502190,3038761536,3888151779,3848713377,3286851934,1022894237,1620365795,3449594689,1551255054,15374395,3570825345,4249311020,4151111129,3181912732,310226346,1133119310,530038928,136043402,2476768958,3107506709,2544909567,1036173560,2367337196,1681395281,1758231547,3641649032,306774401,1575354324,3716085866,1990386196,3114533736,2455606671,1262092282,3124342505,2768229131,4210529083,1833535011,423410938,660763973,2187129978,1639812e3,3508421329,3467445492,310289298,272797111,2188552562,2456863912,310240523,677093832,1013118031,901835429,3892695601,1116285435,3036471170,1337354835,243122523,520626091,277223598,4244441197,4194248841,1766575121,594173102,316590669,742362309,3536858622,4176435350,3838792410,2501204839,1229605004,3115755532,1552908988,2312334149,979407927,3959474601,1148277331,176638793,3614686272,2083809052,40992502,1340822838,2731552767,3535757508,3560899520,1354035053,122129617,7215240,2732932949,3118912700,2718203926,2539075635,3609230695,3725561661,1928887091,2882293555,1988674909,2063640240,2491088897,1459647954,4189817080,2302804382,1113892351,2237858528,1927010603,4002880361,1856122846,1594404395,2944033133,3855189863,3474975698,1643104450,4054590833,3431086530,1730235576,2984608721,3084664418,2131803598,4178205752,267404349,1617849798,1616132681,1462223176,736725533,2327058232,551665188,2945899023,1749386277,2575514597,1611482493,674206544,2201269090,3642560800,728599968,1680547377,2620414464,1388111496,453204106,4156223445,1094905244,2754698257,2201108165,3757000246,2704524545,3922940700,3996465027],s[3]=[2645754912,532081118,2814278639,3530793624,1246723035,1689095255,2236679235,4194438865,2116582143,3859789411,157234593,2045505824,4245003587,1687664561,4083425123,605965023,672431967,1336064205,3376611392,214114848,4258466608,3232053071,489488601,605322005,3998028058,264917351,1912574028,756637694,436560991,202637054,135989450,85393697,2152923392,3896401662,2895836408,2145855233,3535335007,115294817,3147733898,1922296357,3464822751,4117858305,1037454084,2725193275,2127856640,1417604070,1148013728,1827919605,642362335,2929772533,909348033,1346338451,3547799649,297154785,1917849091,4161712827,2883604526,3968694238,1469521537,3780077382,3375584256,1763717519,136166297,4290970789,1295325189,2134727907,2798151366,1566297257,3672928234,2677174161,2672173615,965822077,2780786062,289653839,1133871874,3491843819,35685304,1068898316,418943774,672553190,642281022,2346158704,1954014401,3037126780,4079815205,2030668546,3840588673,672283427,1776201016,359975446,3750173538,555499703,2769985273,1324923,69110472,152125443,3176785106,3822147285,1340634837,798073664,1434183902,15393959,216384236,1303690150,3881221631,3711134124,3960975413,106373927,2578434224,1455997841,1801814300,1578393881,1854262133,3188178946,3258078583,2302670060,1539295533,3505142565,3078625975,2372746020,549938159,3278284284,2620926080,181285381,2865321098,3970029511,68876850,488006234,1728155692,2608167508,836007927,2435231793,919367643,3339422534,3655756360,1457871481,40520939,1380155135,797931188,234455205,2255801827,3990488299,397000196,739833055,3077865373,2871719860,4022553888,772369276,390177364,3853951029,557662966,740064294,1640166671,1699928825,3535942136,622006121,3625353122,68743880,1742502,219489963,1664179233,1577743084,1236991741,410585305,2366487942,823226535,1050371084,3426619607,3586839478,212779912,4147118561,1819446015,1911218849,530248558,3486241071,3252585495,2886188651,3410272728,2342195030,20547779,2982490058,3032363469,3631753222,312714466,1870521650,1493008054,3491686656,615382978,4103671749,2534517445,1932181,2196105170,278426614,6369430,3274544417,2913018367,697336853,2143000447,2946413531,701099306,1558357093,2805003052,3500818408,2321334417,3567135975,216290473,3591032198,23009561,1996984579,3735042806,2024298078,3739440863,569400510,2339758983,3016033873,3097871343,3639523026,3844324983,3256173865,795471839,2951117563,4101031090,4091603803,3603732598,971261452,534414648,428311343,3389027175,2844869880,694888862,1227866773,2456207019,3043454569,2614353370,3749578031,3676663836,459166190,4132644070,1794958188,51825668,2252611902,3084671440,2036672799,3436641603,1099053433,2469121526,3059204941,1323291266,2061838604,1018778475,2233344254,2553501054,334295216,3556750194,1065731521,183467730],s[4]=[2127105028,745436345,2601412319,2788391185,3093987327,500390133,1155374404,389092991,150729210,3891597772,3523549952,1935325696,716645080,946045387,2901812282,1774124410,3869435775,4039581901,3293136918,3438657920,948246080,363898952,3867875531,1286266623,1598556673,68334250,630723836,1104211938,1312863373,613332731,2377784574,1101634306,441780740,3129959883,1917973735,2510624549,3238456535,2544211978,3308894634,1299840618,4076074851,1756332096,3977027158,297047435,3790297736,2265573040,3621810518,1311375015,1667687725,47300608,3299642885,2474112369,201668394,1468347890,576830978,3594690761,3742605952,1958042578,1747032512,3558991340,1408974056,3366841779,682131401,1033214337,1545599232,4265137049,206503691,103024618,2855227313,1337551222,2428998917,2963842932,4015366655,3852247746,2796956967,3865723491,3747938335,247794022,3755824572,702416469,2434691994,397379957,851939612,2314769512,218229120,1380406772,62274761,214451378,3170103466,2276210409,3845813286,28563499,446592073,1693330814,3453727194,29968656,3093872512,220656637,2470637031,77972100,1667708854,1358280214,4064765667,2395616961,325977563,4277240721,4220025399,3605526484,3355147721,811859167,3069544926,3962126810,652502677,3075892249,4132761541,3498924215,1217549313,3250244479,3858715919,3053989961,1538642152,2279026266,2875879137,574252750,3324769229,2651358713,1758150215,141295887,2719868960,3515574750,4093007735,4194485238,1082055363,3417560400,395511885,2966884026,179534037,3646028556,3738688086,1092926436,2496269142,257381841,3772900718,1636087230,1477059743,2499234752,3811018894,2675660129,3285975680,90732309,1684827095,1150307763,1723134115,3237045386,1769919919,1240018934,815675215,750138730,2239792499,1234303040,1995484674,138143821,675421338,1145607174,1936608440,3238603024,2345230278,2105974004,323969391,779555213,3004902369,2861610098,1017501463,2098600890,2628620304,2940611490,2682542546,1171473753,3656571411,3687208071,4091869518,393037935,159126506,1662887367,1147106178,391545844,3452332695,1891500680,3016609650,1851642611,546529401,1167818917,3194020571,2848076033,3953471836,575554290,475796850,4134673196,450035699,2351251534,844027695,1080539133,86184846,1554234488,3692025454,1972511363,2018339607,1491841390,1141460869,1061690759,4244549243,2008416118,2351104703,2868147542,1598468138,722020353,1027143159,212344630,1387219594,1725294528,3745187956,2500153616,458938280,4129215917,1828119673,544571780,3503225445,2297937496,1241802790,267843827,2694610800,1397140384,1558801448,3782667683,1806446719,929573330,2234912681,400817706,616011623,4121520928,3603768725,1761550015,1968522284,4053731006,4192232858,4005120285,872482584,3140537016,3894607381,2287405443,1963876937,3663887957,1584857e3,2975024454,1833426440,4025083860],s[5]=[4143615901,749497569,1285769319,3795025788,2514159847,23610292,3974978748,844452780,3214870880,3751928557,2213566365,1676510905,448177848,3730751033,4086298418,2307502392,871450977,3222878141,4110862042,3831651966,2735270553,1310974780,2043402188,1218528103,2736035353,4274605013,2702448458,3936360550,2693061421,162023535,2827510090,687910808,23484817,3784910947,3371371616,779677500,3503626546,3473927188,4157212626,3500679282,4248902014,2466621104,3899384794,1958663117,925738300,1283408968,3669349440,1840910019,137959847,2679828185,1239142320,1315376211,1547541505,1690155329,739140458,3128809933,3933172616,3876308834,905091803,1548541325,4040461708,3095483362,144808038,451078856,676114313,2861728291,2469707347,993665471,373509091,2599041286,4025009006,4170239449,2149739950,3275793571,3749616649,2794760199,1534877388,572371878,2590613551,1753320020,3467782511,1405125690,4270405205,633333386,3026356924,3475123903,632057672,2846462855,1404951397,3882875879,3915906424,195638627,2385783745,3902872553,1233155085,3355999740,2380578713,2702246304,2144565621,3663341248,3894384975,2502479241,4248018925,3094885567,1594115437,572884632,3385116731,767645374,1331858858,1475698373,3793881790,3532746431,1321687957,619889600,1121017241,3440213920,2070816767,2833025776,1933951238,4095615791,890643334,3874130214,859025556,360630002,925594799,1764062180,3920222280,4078305929,979562269,2810700344,4087740022,1949714515,546639971,1165388173,3069891591,1495988560,922170659,1291546247,2107952832,1813327274,3406010024,3306028637,4241950635,153207855,2313154747,1608695416,1150242611,1967526857,721801357,1220138373,3691287617,3356069787,2112743302,3281662835,1111556101,1778980689,250857638,2298507990,673216130,2846488510,3207751581,3562756981,3008625920,3417367384,2198807050,529510932,3547516680,3426503187,2364944742,102533054,2294910856,1617093527,1204784762,3066581635,1019391227,1069574518,1317995090,1691889997,3661132003,510022745,3238594800,1362108837,1817929911,2184153760,805817662,1953603311,3699844737,120799444,2118332377,207536705,2282301548,4120041617,145305846,2508124933,3086745533,3261524335,1877257368,2977164480,3160454186,2503252186,4221677074,759945014,254147243,2767453419,3801518371,629083197,2471014217,907280572,3900796746,940896768,2751021123,2625262786,3161476951,3661752313,3260732218,1425318020,2977912069,1496677566,3988592072,2140652971,3126511541,3069632175,977771578,1392695845,1698528874,1411812681,1369733098,1343739227,3620887944,1142123638,67414216,3102056737,3088749194,1626167401,2546293654,3941374235,697522451,33404913,143560186,2595682037,994885535,1247667115,3859094837,2699155541,3547024625,4114935275,2968073508,3199963069,2732024527,1237921620,951448369,1898488916,1211705605,2790989240,2233243581,3598044975],s[6]=[2246066201,858518887,1714274303,3485882003,713916271,2879113490,3730835617,539548191,36158695,1298409750,419087104,1358007170,749914897,2989680476,1261868530,2995193822,2690628854,3443622377,3780124940,3796824509,2976433025,4259637129,1551479e3,512490819,1296650241,951993153,2436689437,2460458047,144139966,3136204276,310820559,3068840729,643875328,1969602020,1680088954,2185813161,3283332454,672358534,198762408,896343282,276269502,3014846926,84060815,197145886,376173866,3943890818,3813173521,3545068822,1316698879,1598252827,2633424951,1233235075,859989710,2358460855,3503838400,3409603720,1203513385,1193654839,2792018475,2060853022,207403770,1144516871,3068631394,1121114134,177607304,3785736302,326409831,1929119770,2983279095,4183308101,3474579288,3200513878,3228482096,119610148,1170376745,3378393471,3163473169,951863017,3337026068,3135789130,2907618374,1183797387,2015970143,4045674555,2182986399,2952138740,3928772205,384012900,2454997643,10178499,2879818989,2596892536,111523738,2995089006,451689641,3196290696,235406569,1441906262,3890558523,3013735005,4158569349,1644036924,376726067,1006849064,3664579700,2041234796,1021632941,1374734338,2566452058,371631263,4007144233,490221539,206551450,3140638584,1053219195,1853335209,3412429660,3562156231,735133835,1623211703,3104214392,2738312436,4096837757,3366392578,3110964274,3956598718,3196820781,2038037254,3877786376,2339753847,300912036,3766732888,2372630639,1516443558,4200396704,1574567987,4069441456,4122592016,2699739776,146372218,2748961456,2043888151,35287437,2596680554,655490400,1132482787,110692520,1031794116,2188192751,1324057718,1217253157,919197030,686247489,3261139658,1028237775,3135486431,3059715558,2460921700,986174950,2661811465,4062904701,2752986992,3709736643,367056889,1353824391,731860949,1650113154,1778481506,784341916,357075625,3608602432,1074092588,2480052770,3811426202,92751289,877911070,3600361838,1231880047,480201094,3756190983,3094495953,434011822,87971354,363687820,1717726236,1901380172,3926403882,2481662265,400339184,1490350766,2661455099,1389319756,2558787174,784598401,1983468483,30828846,3550527752,2716276238,3841122214,1765724805,1955612312,1277890269,1333098070,1564029816,2704417615,1026694237,3287671188,1260819201,3349086767,1016692350,1582273796,1073413053,1995943182,694588404,1025494639,3323872702,3551898420,4146854327,453260480,1316140391,1435673405,3038941953,3486689407,1622062951,403978347,817677117,950059133,4246079218,3278066075,1486738320,1417279718,481875527,2549965225,3933690356,760697757,1452955855,3897451437,1177426808,1702951038,4085348628,2447005172,1084371187,3516436277,3068336338,1073369276,1027665953,3284188590,1230553676,1368340146,2226246512,267243139,2274220762,4070734279,2497715176,2423353163,2504755875],s[7]=[3793104909,3151888380,2817252029,895778965,2005530807,3871412763,237245952,86829237,296341424,3851759377,3974600970,2475086196,709006108,1994621201,2972577594,937287164,3734691505,168608556,3189338153,2225080640,3139713551,3033610191,3025041904,77524477,185966941,1208824168,2344345178,1721625922,3354191921,1066374631,1927223579,1971335949,2483503697,1551748602,2881383779,2856329572,3003241482,48746954,1398218158,2050065058,313056748,4255789917,393167848,1912293076,940740642,3465845460,3091687853,2522601570,2197016661,1727764327,364383054,492521376,1291706479,3264136376,1474851438,1685747964,2575719748,1619776915,1814040067,970743798,1561002147,2925768690,2123093554,1880132620,3151188041,697884420,2550985770,2607674513,2659114323,110200136,1489731079,997519150,1378877361,3527870668,478029773,2766872923,1022481122,431258168,1112503832,897933369,2635587303,669726182,3383752315,918222264,163866573,3246985393,3776823163,114105080,1903216136,761148244,3571337562,1690750982,3166750252,1037045171,1888456500,2010454850,642736655,616092351,365016990,1185228132,4174898510,1043824992,2023083429,2241598885,3863320456,3279669087,3674716684,108438443,2132974366,830746235,606445527,4173263986,2204105912,1844756978,2532684181,4245352700,2969441100,3796921661,1335562986,4061524517,2720232303,2679424040,634407289,885462008,3294724487,3933892248,2094100220,339117932,4048830727,3202280980,1458155303,2689246273,1022871705,2464987878,3714515309,353796843,2822958815,4256850100,4052777845,551748367,618185374,3778635579,4020649912,1904685140,3069366075,2670879810,3407193292,2954511620,4058283405,2219449317,3135758300,1120655984,3447565834,1474845562,3577699062,550456716,3466908712,2043752612,881257467,869518812,2005220179,938474677,3305539448,3850417126,1315485940,3318264702,226533026,965733244,321539988,1136104718,804158748,573969341,3708209826,937399083,3290727049,2901666755,1461057207,4013193437,4066861423,3242773476,2421326174,1581322155,3028952165,786071460,3900391652,3918438532,1485433313,4023619836,3708277595,3678951060,953673138,1467089153,1930354364,1533292819,2492563023,1346121658,1685000834,1965281866,3765933717,4190206607,2052792609,3515332758,690371149,3125873887,2180283551,2903598061,3933952357,436236910,289419410,14314871,1242357089,2904507907,1616633776,2666382180,585885352,3471299210,2699507360,1432659641,277164553,3354103607,770115018,2303809295,3741942315,3177781868,2853364978,2269453327,3774259834,987383833,1290892879,225909803,1741533526,890078084,1496906255,1111072499,916028167,243534141,1252605537,2204162171,531204876,290011180,3916834213,102027703,237315147,209093447,1486785922,220223953,2758195998,4175039106,82940208,3127791296,2569425252,518464269,1353887104,3941492737,2377294467,3935040926]}function sA(r){this.cast5=new lte,this.cast5.setKey(r),this.encrypt=function(e){return this.cast5.encrypt(e)}}function ts(r,e){return(r<<e|r>>>32-e)&tn}function Vs(r,e){return r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24}function fa(r,e,t){r.splice(e,4,t&255,t>>>8&255,t>>>16&255,t>>>24&255)}function ze(r,e){return r>>>e*8&255}function dte(){let r=null,e=null,t=-1,i=[],n=[[],[],[],[]];function s(g){r=g;let p,I,y,w,C,b=[],x=[],_=[],R,U=[],T,D,B,Q=[[8,1,7,13,6,15,3,2,0,11,5,9,14,12,10,4],[2,8,11,13,15,7,6,14,3,1,9,4,0,10,12,5]],v=[[14,12,11,8,1,2,3,5,15,4,10,6,7,0,9,13],[1,14,2,11,4,12,3,7,6,13,10,5,15,9,0,8]],E=[[11,10,5,14,6,13,9,0,12,8,15,3,2,4,7,1],[4,12,7,5,1,6,9,10,0,14,13,8,2,11,3,15]],P=[[13,7,15,4,1,2,6,14,9,11,3,0,8,5,12,10],[11,9,5,1,12,3,13,14,6,4,7,15,2,0,8,10]],N=[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15],J=[0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7],z=[[],[]],L=[[],[],[],[]];function G(ee){return ee^ee>>2^[0,90,180,238][ee&3]}function K(ee){return ee^ee>>1^ee>>2^[0,238,180,90][ee&3]}function $(ee,Z){let me,le,Ae;for(me=0;me<8;me++)le=Z>>>24,Z=Z<<8&tn|ee>>>24,ee=ee<<8&tn,Ae=le<<1,le&128&&(Ae^=333),Z^=le^Ae<<16,Ae^=le>>>1,le&1&&(Ae^=166),Z^=Ae<<24|Ae<<8;return Z}function te(ee,Z){let me=Z>>4,le=Z&15,Ae=Q[ee][me^le],ve=v[ee][N[le]^J[me]];return P[ee][N[ve]^J[Ae]]<<4|E[ee][Ae^ve]}function re(ee,Z){let me=ze(ee,0),le=ze(ee,1),Ae=ze(ee,2),ve=ze(ee,3);switch(R){case 4:me=z[1][me]^ze(Z[3],0),le=z[0][le]^ze(Z[3],1),Ae=z[0][Ae]^ze(Z[3],2),ve=z[1][ve]^ze(Z[3],3);case 3:me=z[1][me]^ze(Z[2],0),le=z[1][le]^ze(Z[2],1),Ae=z[0][Ae]^ze(Z[2],2),ve=z[0][ve]^ze(Z[2],3);case 2:me=z[0][z[0][me]^ze(Z[1],0)]^ze(Z[0],0),le=z[0][z[1][le]^ze(Z[1],1)]^ze(Z[0],1),Ae=z[1][z[0][Ae]^ze(Z[1],2)]^ze(Z[0],2),ve=z[1][z[1][ve]^ze(Z[1],3)]^ze(Z[0],3)}return L[0][me]^L[1][le]^L[2][Ae]^L[3][ve]}for(r=r.slice(0,32),p=r.length;p!==16&&p!==24&&p!==32;)r[p++]=0;for(p=0;p<r.length;p+=4)_[p>>2]=Vs(r,p);for(p=0;p<256;p++)z[0][p]=te(0,p),z[1][p]=te(1,p);for(p=0;p<256;p++)T=z[1][p],D=G(T),B=K(T),L[0][p]=T+(D<<8)+(B<<16)+(B<<24),L[2][p]=D+(B<<8)+(T<<16)+(B<<24),T=z[0][p],D=G(T),B=K(T),L[1][p]=B+(B<<8)+(D<<16)+(T<<24),L[3][p]=D+(T<<8)+(B<<16)+(D<<24);for(R=_.length/2,p=0;p<R;p++)I=_[p+p],b[p]=I,y=_[p+p+1],x[p]=y,U[R-p-1]=$(I,y);for(p=0;p<40;p+=2)I=16843009*p,y=I+16843009,I=re(I,b),y=ts(re(y,x),8),i[p]=I+y&tn,i[p+1]=ts(I+2*y,9);for(p=0;p<256;p++)switch(I=y=w=C=p,R){case 4:I=z[1][I]^ze(U[3],0),y=z[0][y]^ze(U[3],1),w=z[0][w]^ze(U[3],2),C=z[1][C]^ze(U[3],3);case 3:I=z[1][I]^ze(U[2],0),y=z[1][y]^ze(U[2],1),w=z[0][w]^ze(U[2],2),C=z[0][C]^ze(U[2],3);case 2:n[0][p]=L[0][z[0][z[0][I]^ze(U[1],0)]^ze(U[0],0)],n[1][p]=L[1][z[0][z[1][y]^ze(U[1],1)]^ze(U[0],1)],n[2][p]=L[2][z[1][z[0][w]^ze(U[1],2)]^ze(U[0],2)],n[3][p]=L[3][z[1][z[1][C]^ze(U[1],3)]^ze(U[0],3)]}}function o(g){return n[0][ze(g,0)]^n[1][ze(g,1)]^n[2][ze(g,2)]^n[3][ze(g,3)]}function a(g){return n[0][ze(g,3)]^n[1][ze(g,0)]^n[2][ze(g,1)]^n[3][ze(g,2)]}function c(g,p){let I=o(p[0]),y=a(p[1]);p[2]=ts(p[2]^I+y+i[4*g+8]&tn,31),p[3]=ts(p[3],1)^I+2*y+i[4*g+9]&tn,I=o(p[2]),y=a(p[3]),p[0]=ts(p[0]^I+y+i[4*g+10]&tn,31),p[1]=ts(p[1],1)^I+2*y+i[4*g+11]&tn}function l(g,p){let I=o(p[0]),y=a(p[1]);p[2]=ts(p[2],1)^I+y+i[4*g+10]&tn,p[3]=ts(p[3]^I+2*y+i[4*g+11]&tn,31),I=o(p[2]),y=a(p[3]),p[0]=ts(p[0],1)^I+y+i[4*g+8]&tn,p[1]=ts(p[1]^I+2*y+i[4*g+9]&tn,31)}function d(){i=[],n=[[],[],[],[]]}function u(g,p){e=g,t=p;let I=[Vs(e,t)^i[0],Vs(e,t+4)^i[1],Vs(e,t+8)^i[2],Vs(e,t+12)^i[3]];for(let y=0;y<8;y++)c(y,I);return fa(e,t,I[2]^i[4]),fa(e,t+4,I[3]^i[5]),fa(e,t+8,I[0]^i[6]),fa(e,t+12,I[1]^i[7]),t+=16,e}function f(g,p){e=g,t=p;let I=[Vs(e,t)^i[4],Vs(e,t+4)^i[5],Vs(e,t+8)^i[6],Vs(e,t+12)^i[7]];for(let y=7;y>=0;y--)l(y,I);fa(e,t,I[2]^i[0]),fa(e,t+4,I[3]^i[1]),fa(e,t+8,I[0]^i[2]),fa(e,t+12,I[1]^i[3]),t+=16}function h(){return e}return{name:"twofish",blocksize:128/8,open:s,close:d,encrypt:u,decrypt:f,finalize:h}}function oA(r){this.tf=dte(),this.tf.open(Array.from(r),0),this.encrypt=function(e){return this.tf.encrypt(Array.from(e),0)}}function Pn(){}function aA(r){this.bf=new Pn,this.bf.init(r),this.encrypt=function(e){return this.bf.encryptBlock(e)}}function dd(r,e,t,i){r[e]+=t[i],r[e+1]+=t[i+1]+(r[e]<t[i])}function C6(r,e){r[0]+=e,r[1]+=r[0]<e}function Aa(r,e,t,i,n,s,o,a){dd(r,t,r,i),dd(r,t,e,o);let c=r[s]^r[t],l=r[s+1]^r[t+1];r[s]=l,r[s+1]=c,dd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=c>>>24^l<<8,r[i+1]=l>>>24^c<<8,dd(r,t,r,i),dd(r,t,e,a),c=r[s]^r[t],l=r[s+1]^r[t+1],r[s]=c>>>16^l<<16,r[s+1]=l>>>16^c<<16,dd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=l>>>31^c<<1,r[i+1]=c>>>31^l<<1}function E6(r,e){let t=new Uint32Array(32),i=new Uint32Array(r.b.buffer,r.b.byteOffset,32);for(let s=0;s<16;s++)t[s]=r.h[s],t[s+16]=KU[s];t[24]^=r.t0[0],t[25]^=r.t0[1];let n=e?4294967295:0;t[28]^=n,t[29]^=n;for(let s=0;s<12;s++){let o=s<<4;Aa(t,i,0,8,16,24,Yr[o+0],Yr[o+1]),Aa(t,i,2,10,18,26,Yr[o+2],Yr[o+3]),Aa(t,i,4,12,20,28,Yr[o+4],Yr[o+5]),Aa(t,i,6,14,22,30,Yr[o+6],Yr[o+7]),Aa(t,i,0,10,20,30,Yr[o+8],Yr[o+9]),Aa(t,i,2,12,22,24,Yr[o+10],Yr[o+11]),Aa(t,i,4,14,16,26,Yr[o+12],Yr[o+13]),Aa(t,i,6,8,18,28,Yr[o+14],Yr[o+15])}for(let s=0;s<16;s++)r.h[s]^=t[s]^t[s+16]}function Ty(r,e,t,i){if(r>ZB)throw new Error(`outlen must be at most ${ZB} (given: ${r})`);return new XB(r,e,t,i)}function Ii(r,e,t){return r[t+0]=e,r[t+1]=e>>8,r[t+2]=e>>16,r[t+3]=e>>24,r}function Sc(r,e,t){if(e>Number.MAX_SAFE_INTEGER)throw new Error("LE64: large numbers unsupported");let i=e;for(let n=t;n<t+7;n++)r[n]=i,i=(i-r[n])/256;return r}function uB(r,e,t){let i=new Uint8Array(64),n=new Uint8Array(4+e.length);if(Ii(n,r,0),n.set(e,4),r<=64)return Ty(r).update(n).digest(t),t;let s=Math.ceil(r/32)-2;for(let a=0;a<s;a++)Ty(64).update(a===0?n:i).digest(i),t.set(i.subarray(0,32),a*32);let o=new Uint8Array(Ty(r-32*s).update(i).digest());return t.set(o,s*32),t}function B6(r,e,t,i){return r.fn.XOR(e.byteOffset,t.byteOffset,i.byteOffset),e}function Bte(r,e,t,i){return r.fn.G(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function bte(r,e,t,i){return r.fn.G2(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function*vte(r,e,t,i,n,s,o,a){r.refs.prngTmp.fill(0);let c=r.refs.prngTmp.subarray(0,48);Sc(c,e,0),Sc(c,t,8),Sc(c,i,16),Sc(c,n,24),Sc(c,s,32),Sc(c,P1,40);for(let l=1;l<=o;l++){Sc(r.refs.prngTmp,l,c.length);let d=bte(r,r.refs.ZERO1024,r.refs.prngTmp,r.refs.prngR);for(let u=l===1?a*8:0;u<d.length;u+=8)yield d.subarray(u,u+8)}return[]}function kte({type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,parallelism:a,memorySize:c,passes:l}){let d=(u,f,h,g)=>{if(f<h||f>g)throw new Error(`${u} size should be between ${h} and ${g} bytes`)};if(r!==P1||e!==GU)throw new Error("Unsupported type or version");return d("password",i,yte,mte),d("salt",n,pte,gte),d("tag",t,hte,Ate),d("memory",c,8*a,Ite),s&&d("associated data",s,0,wte),o&&d("secret",o,0,xte),{type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,lanes:a,memorySize:c,passes:l}}function Dte(r,{memory:e,instance:t}){if(!Ete)throw new Error("BigEndian system not supported");let i=kte({type:P1,version:GU,...r}),{G:n,G2:s,xor:o,getLZ:a}=t.exports,c={},l={};l.G=n,l.G2=s,l.XOR=o;let d=4*i.lanes*Math.floor(i.memorySize/(4*i.lanes)),u=d*Ys+10*zU;if(e.buffer.byteLength<u){let D=Math.ceil((u-e.buffer.byteLength)/Ste);e.grow(D)}let f=0;c.gZ=new Uint8Array(e.buffer,f,Ys),f+=c.gZ.length,c.prngR=new Uint8Array(e.buffer,f,Ys),f+=c.prngR.length,c.prngTmp=new Uint8Array(e.buffer,f,Ys),f+=c.prngTmp.length,c.ZERO1024=new Uint8Array(e.buffer,f,1024),f+=c.ZERO1024.length;let h=new Uint32Array(e.buffer,f,2);f+=h.length*Uint32Array.BYTES_PER_ELEMENT;let g={fn:l,refs:c},p=new Uint8Array(e.buffer,f,Ys);f+=p.length;let I=new Uint8Array(e.buffer,f,i.memorySize*Ys),y=new Uint8Array(e.buffer,0,f),w=Qte(i),C=d/i.lanes,b=new Array(i.lanes).fill(null).map(()=>new Array(C)),x=(D,B)=>(b[D][B]=I.subarray(D*C*1024+B*1024,D*C*1024+B*1024+Ys),b[D][B]);for(let D=0;D<i.lanes;D++){let B=new Uint8Array(w.length+8);B.set(w),Ii(B,0,w.length),Ii(B,D,w.length+4),uB(Ys,B,x(D,0)),Ii(B,1,w.length),uB(Ys,B,x(D,1))}let _=4,R=C/_;for(let D=0;D<i.passes;D++)for(let B=0;B<_;B++){let Q=D===0&&B<=1;for(let v=0;v<i.lanes;v++){let E=B===0&&D===0?2:0,P=Q?vte(g,D,v,B,d,i.passes,R,E):null;for(E;E<R;E++){let N=B*R+E,J=N>0?b[v][N-1]:b[v][C-1],z=Q?P.next().value:J;a(h.byteOffset,z.byteOffset,v,i.lanes,D,B,E,_,R);let L=h[0],G=h[1];D===0&&x(v,N),Bte(g,J,b[L][G],D>0?p:b[v][N]),D>0&&B6(g,b[v][N],p,b[v][N])}}}let U=b[0][C-1];for(let D=1;D<i.lanes;D++)B6(g,U,U,b[D][C-1]);let T=uB(i.tagLength,U,new Uint8Array(i.tagLength));return y.fill(0),e.grow(0),T}function Qte(r){let e=Ty(Cte),t=new Uint8Array(4),i=new Uint8Array(24);Ii(i,r.lanes,0),Ii(i,r.tagLength,4),Ii(i,r.memorySize,8),Ii(i,r.passes,12),Ii(i,r.version,16),Ii(i,r.type,20);let n=[i];r.password?(n.push(Ii(new Uint8Array(4),r.password.length,0)),n.push(r.password)):n.push(t),r.salt?(n.push(Ii(new Uint8Array(4),r.salt.length,0)),n.push(r.salt)):n.push(t),r.secret?(n.push(Ii(new Uint8Array(4),r.secret.length,0)),n.push(r.secret)):n.push(t),r.ad?(n.push(Ii(new Uint8Array(4),r.ad.length,0)),n.push(r.ad)):n.push(t),e.update(_te(n));let s=e.digest();return new Uint8Array(s)}function _te(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!(r[n]instanceof Uint8Array))throw new Error("concatArrays: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(n=>{t.set(n,i),i+=n.length}),t}async function Fte(r,e,t){let i={env:{memory:r}};if(vy===void 0)try{let s=await e(i);return vy=!0,s}catch{vy=!1}return(vy?e:t)(i)}async function Pte(r,e){let t=new WebAssembly.Memory({initial:1040,maximum:65536}),i=await Fte(t,r,e);return s=>Dte(s,{instance:i.instance,memory:t})}function JU(r,e,t,i){function n(o,a,c){var l=c?WebAssembly.instantiateStreaming:WebAssembly.instantiate,d=c?WebAssembly.compileStreaming:WebAssembly.compile;return a?l(o,a):d(o)}var s=null;return s=Buffer.from(t,"base64"),n(s,i,!1)}function Tte(r){return JU(0,null,"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",r)}function Ute(r){return JU(0,null,"AGFzbQEAAAABPwhgBH9/f38AYAABf2AAAGADf39/AGARf39/f39/f39/f39/f39/f38AYAl/f39/f39/f38Bf2ABfwBgAX8BfwITAQNlbnYGbWVtb3J5AgGQCICABAMLCgIDBAAABQEGBwEEBQFwAQICBgkBfwFBkIjAAgsHfQoDeG9yAAEBRwADAkcyAAQFZ2V0TFoABRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALX2luaXRpYWxpemUAABBfX2Vycm5vX2xvY2F0aW9uAAkJc3RhY2tTYXZlAAYMc3RhY2tSZXN0b3JlAAcKc3RhY2tBbGxvYwAICQcBAEEBCwEACssaCgMAAQtQAQJ/A0AgACAEQQN0IgNqIAIgA2opAwAgASADaikDAIU3AwAgACADQQhyIgNqIAIgA2opAwAgASADaikDAIU3AwAgBEECaiIEQYABRw0ACwveDwICfgF/IAAgAUEDdGoiEyATKQMAIhEgACAFQQN0aiIBKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA1BA3RqIgUgESAFKQMAhUIgiSIRNwMAIAAgCUEDdGoiCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIoiSIRNwMAIBMgESATKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAFIBEgBSkDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgASARIAEpAwCFQgGJNwMAIAAgAkEDdGoiDSANKQMAIhEgACAGQQN0aiICKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA5BA3RqIgYgESAGKQMAhUIgiSIRNwMAIAAgCkEDdGoiCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIoiSIRNwMAIA0gESANKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAKIBEgCikDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAiARIAIpAwCFQgGJNwMAIAAgA0EDdGoiDiAOKQMAIhEgACAHQQN0aiIDKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA9BA3RqIgcgESAHKQMAhUIgiSIRNwMAIAAgC0EDdGoiCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAMgESADKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAHIBEgBykDAIVCMIkiETcDACALIBEgCykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQgGJNwMAIAAgBEEDdGoiDyAPKQMAIhEgACAIQQN0aiIEKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIBBBA3RqIgggESAIKQMAhUIgiSIRNwMAIAAgDEEDdGoiACARIAApAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA8gESAPKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAIIBEgCCkDAIVCMIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIBMgEykDACIRIAIpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAggESAIKQMAhUIgiSIRNwMAIAsgESALKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACACIBEgAikDAIVCKIkiETcDACATIBEgEykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgCCARIAgpAwCFQjCJIhE3AwAgCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIBiTcDACANIA0pAwAiESADKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAFIBEgBSkDAIVCIIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQiiJIhE3AwAgDSARIA0pAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAUgESAFKQMAhUIwiSIRNwMAIAAgESAAKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACADIBEgAykDAIVCAYk3AwAgDiAOKQMAIhEgBCkDACISfCARQgGGQv7///8fgyASQv////8Pg358IhE3AwAgBiARIAYpAwCFQiCJIhE3AwAgCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIA8gDykDACIRIAEpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAcgESAHKQMAhUIgiSIRNwMAIAogESAKKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACABIBEgASkDAIVCKIkiETcDACAPIBEgDykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgByARIAcpAwCFQjCJIhE3AwAgCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIBiTcDAAvdCAEPfwNAIAIgBUEDdCIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAIgBkEIciIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAVBAmoiBUGAAUcNAAsDQCADIARBA3QiAGogACACaikDADcDACADIARBAXIiAEEDdCIBaiABIAJqKQMANwMAIAMgBEECciIBQQN0IgVqIAIgBWopAwA3AwAgAyAEQQNyIgVBA3QiBmogAiAGaikDADcDACADIARBBHIiBkEDdCIHaiACIAdqKQMANwMAIAMgBEEFciIHQQN0IghqIAIgCGopAwA3AwAgAyAEQQZyIghBA3QiCWogAiAJaikDADcDACADIARBB3IiCUEDdCIKaiACIApqKQMANwMAIAMgBEEIciIKQQN0IgtqIAIgC2opAwA3AwAgAyAEQQlyIgtBA3QiDGogAiAMaikDADcDACADIARBCnIiDEEDdCINaiACIA1qKQMANwMAIAMgBEELciINQQN0Ig5qIAIgDmopAwA3AwAgAyAEQQxyIg5BA3QiD2ogAiAPaikDADcDACADIARBDXIiD0EDdCIQaiACIBBqKQMANwMAIAMgBEEOciIQQQN0IhFqIAIgEWopAwA3AwAgAyAEQQ9yIhFBA3QiEmogAiASaikDADcDACADIARB//8DcSAAQf//A3EgAUH//wNxIAVB//8DcSAGQf//A3EgB0H//wNxIAhB//8DcSAJQf//A3EgCkH//wNxIAtB//8DcSAMQf//A3EgDUH//wNxIA5B//8DcSAPQf//A3EgEEH//wNxIBFB//8DcRACIARB8ABJIQAgBEEQaiEEIAANAAtBACEBIANBAEEBQRBBEUEgQSFBMEExQcAAQcEAQdAAQdEAQeAAQeEAQfAAQfEAEAIgA0ECQQNBEkETQSJBI0EyQTNBwgBBwwBB0gBB0wBB4gBB4wBB8gBB8wAQAiADQQRBBUEUQRVBJEElQTRBNUHEAEHFAEHUAEHVAEHkAEHlAEH0AEH1ABACIANBBkEHQRZBF0EmQSdBNkE3QcYAQccAQdYAQdcAQeYAQecAQfYAQfcAEAIgA0EIQQlBGEEZQShBKUE4QTlByABByQBB2ABB2QBB6ABB6QBB+ABB+QAQAiADQQpBC0EaQRtBKkErQTpBO0HKAEHLAEHaAEHbAEHqAEHrAEH6AEH7ABACIANBDEENQRxBHUEsQS1BPEE9QcwAQc0AQdwAQd0AQewAQe0AQfwAQf0AEAIgA0EOQQ9BHkEfQS5BL0E+QT9BzgBBzwBB3gBB3wBB7gBB7wBB/gBB/wAQAgNAIAIgAUEDdCIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAiAAQQhyIgRqIgUgAyAEaikDACAFKQMAhTcDACACIABBEHIiBGoiBSADIARqKQMAIAUpAwCFNwMAIAIgAEEYciIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAUEEaiIBQYABRw0ACwsWACAAIAEgAiADEAMgACACIAIgAxADC3sCAX8BfiACIQkgATUCACEKIAQgBXIEQCABKAIEIANwIQkLIAAgCTYCACAAIAdBAWsgBSAEGyAIbCAGQQFrQQBBfyAGGyACIAlGG2oiASAFQQFqIAhsQQAgBBtqIAGtIAogCn5CIIh+QiCIp0F/c2ogByAIbHA2AgQgAAsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwUAQYAICw==",r)}function qte(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Ote(){if(b6)return fB;b6=1;function r(i){this.name="Bzip2Error",this.message=i,this.stack=new Error().stack}r.prototype=new Error;var e={Error:function(i){throw new r(i)}},t={};return t.Bzip2Error=r,t.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188],t.array=function(i){var n=0,s=0,o=[0,1,3,7,15,31,63,127,255];return function(a){for(var c=0;a>0;){var l=8-n;a>=l?(c<<=l,c|=o[l]&i[s++],n=0,a-=l):(c<<=a,c|=(i[s]&o[a]<<8-a-n)>>8-a-n,n+=a,a=0)}return c}},t.simple=function(i,n){var s=t.array(i),o=t.header(s),a=!1,c=1e5*o,l=new Int32Array(c);do a=t.decompress(s,n,l,c);while(!a)},t.header=function(i){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),i(24)!=4348520&&e.Error("No magic number found");var n=i(8)-48;return(n<1||n>9)&&e.Error("Not a BZIP archive"),n},t.decompress=function(i,n,s,o,a){for(var c=20,l=258,d=0,u=1,f=50,h=-1,g="",p=0;p<6;p++)g+=i(8).toString(16);if(g=="177245385090"){var I=i(32)|0;return I!==a&&e.Error("Error in bzip2: crc32 do not match"),i(null),null}g!="314159265359"&&e.Error("Invalid bzip data");var y=i(32)|0;i(1)&&e.Error("unsupported obsolete version");var w=i(24);w>o&&e.Error("Initial position larger than buffer size");var C=i(16),b=0;for(p=0;p<16;p++)if(C&1<<15-p){var x=i(16);for(te=0;te<16;te++)x&1<<15-te&&(this.symToByte[b++]=16*p+te)}var _=i(3);(_<2||_>6)&&e.Error("Invalid bzip data");var R=i(15);R==0&&e.Error("Invalid bzip data");for(var p=0;p<_;p++)this.mtfSymbol[p]=p;for(var p=0;p<R;p++){for(var te=0;i(1);te++)te>=_&&e.Error("Invalid bzip data");for(var U=this.mtfSymbol[te],x=te-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,this.selectors[p]=U}for(var G=b+2,T=[],D=new Uint8Array(l),B=new Uint16Array(c+1),Q,te=0;te<_;te++){C=i(5);for(var p=0;p<G;p++){for(;(C<1||C>c)&&e.Error("Invalid bzip data"),!!i(1);)i(1)?C--:C++;D[p]=C}var v,E;v=E=D[0];for(var p=1;p<G;p++)D[p]>E?E=D[p]:D[p]<v&&(v=D[p]);Q=T[te]={},Q.permute=new Int32Array(l),Q.limit=new Int32Array(c+1),Q.base=new Int32Array(c+1),Q.minLen=v,Q.maxLen=E;for(var P=Q.base,N=Q.limit,J=0,p=v;p<=E;p++)for(var C=0;C<G;C++)D[C]==p&&(Q.permute[J++]=C);for(p=v;p<=E;p++)B[p]=N[p]=0;for(p=0;p<G;p++)B[D[p]]++;for(J=C=0,p=v;p<E;p++)J+=B[p],N[p]=J-1,J<<=1,P[p+1]=J-(C+=B[p]);N[E]=J+B[E]-1,P[v]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var z,L,G,K;for(z=L=G=K=0;;){for(G--||(G=f-1,K>=R&&e.Error("Invalid bzip data"),Q=T[this.selectors[K++]],P=Q.base,N=Q.limit),p=Q.minLen,te=i(p);p>Q.maxLen&&e.Error("Invalid bzip data"),!(te<=N[p]);)p++,te=te<<1|i(1);te-=P[p],(te<0||te>=l)&&e.Error("Invalid bzip data");var $=Q.permute[te];if($==d||$==u){z||(z=1,C=0),$==d?C+=z:C+=2*z,z<<=1;continue}if(z)for(z=0,L+C>o&&e.Error("Invalid bzip data"),U=this.symToByte[this.mtfSymbol[0]],this.byteCount[U]+=C;C--;)s[L++]=U;if($>b)break;L>=o&&e.Error("Invalid bzip data"),p=$-1,U=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,U=this.symToByte[U],this.byteCount[U]++,s[L++]=U}(w<0||w>=L)&&e.Error("Invalid bzip data");for(var te=0,p=0;p<256;p++)x=te+this.byteCount[p],this.byteCount[p]=te,te=x;for(var p=0;p<L;p++)U=s[p]&255,s[this.byteCount[U]]|=p<<8,this.byteCount[U]++;var re=0,ee=0,Z=0;L&&(re=s[w],ee=re&255,re>>=8,Z=-1),L=L;for(var me,le,Ae;L;){for(L--,le=ee,re=s[re],ee=re&255,re>>=8,Z++==3?(me=ee,Ae=le,ee=-1):(me=1,Ae=ee);me--;)h=(h<<8^this.crcTable[(h>>24^Ae)&255])&4294967295,n(Ae);ee!=le&&(Z=0)}return h=(h^-1)>>>0,(h|0)!=(y|0)&&e.Error("Error in bzip2: crc32 do not match"),a=(h^(a<<1|a>>>31))&4294967295,a},fB=t,fB}function Mte(){if(v6)return AB;v6=1;var r=[0,1,3,7,15,31,63,127,255];return AB=function(t){var i=0,n=0,s=t(),o=function(a){if(a===null&&i!=0){i=0,n++;return}for(var c=0;a>0;){n>=s.length&&(n=0,s=t());var l=8-i;i===0&&a>0&&o.bytesRead++,a>=l?(c<<=l,c|=r[l]&s[n++],i=0,a-=l):(c<<=a,c|=(s[n]&r[a]<<8-a-i)>>8-a-i,i+=a,a=0)}return c};return o.bytesRead=0,o},AB}function Lte(){if(k6)return hB;k6=1;let r=Ote(),e=Mte();hB=t;function t(i){let n=[],s=0,o=0,a=!1,c=!1,l=null,d=null;function u(p){if(o){let I=1e5*o,y=new Int32Array(I),w=[],C=function(b){w.push(b)};return d=r.decompress(l,C,y,I,d),d===null?(o=0,!1):(p(new Uint8Array(w)),!0)}else return o=r.header(l),d=0,!1}let f=0;function h(p){if(!a)try{return u(function(I){p.enqueue(I),I!==null&&(f+=I.length)})}catch(I){return p.error(I),a=!0,!0}}let g;return new ReadableStream({start(){g=i.getReader()},async pull(p){try{for(;;){for(;!(c||l&&s-l.bytesRead+1>=25e3+1e5*(o||4));){let{value:I,done:y}=await g.read();y?c=!0:(n.push(I),s+=I.length,l===null&&(l=e(function(){return n.shift()})))}for(;c?l&&s>l.bytesRead:l&&s-l.bytesRead+1>=25e3+1e5*(o||4);)if(h(p))return;if(c&&!a&&(!l||s<=l.bytesRead)){d===null?p.close():p.error(new Error("input stream ended prematurely"));return}}}catch(I){p.error(I)}},async cancel(p){await g.abort(p)}},{highWaterMark:0})}return hB}var eo,Ed,D6,Q6,Nf,on,l5,xt,kf,m,pe,d5,F,OE,Uy,Ry,br,FV,Ci,md,OV,cs,HV,h5,Ny,GV,zV,JV,jV,$V,VV,YV,WV,XV,ZV,nn,bd,Rc,wa,ga,wY,ro,ft,yd,Lf,Gf,o1,H6,EY,BY,uA,Xs,l1,ns,SY,DY,rn,_Y,My,IB,m5,bi,d1,Ay,FY,wB,PY,TY,ME,y5,f1,V6,UY,RY,xB,W6,hy,I5,w5,tT,x5,Id,Ly,zY,LE,Ky,ls,Gs,is,sT,vi,Gy,dT,ZY,eW,dW,uW,Dy,Of,zy,Jy,jy,Qy,Jf,kc,QI,$y,Vy,KE,k5,vW,io,_y,D5,QW,_W,co,FW,ud,Q5,bB,vB,li,IT,ha,Sf,UW,GE,F5,P5,RW,NW,fd,zE,LW,HW,KW,T5,wd,my,Df,GW,kB,SB,zW,JW,xd,jW,$W,Gt,Li,I1,FI,PI,DB,xT,xd,CT,QB,ET,VW,U5,_B,zs,ut,ds,Ca,ut,ut,ut,ut,$f,ut,YW,WW,XW,ZW,JE,vn,jE,w1,Hf,eX,Br,tX,Js,Qf,$E,FB,R5,_f,x1,N5,rX,Wy,iX,BT,bT,vT,nX,sX,Fy,Py,oX,aX,cX,lX,Ea,so,Ff,q5,dX,Nr,an,Ct,rs,Kt,Sd,fX,qc,Zy,gX,pX,mX,Dd,yX,O5,PB,Vf,Yf,As,wX,TB,tI,UB,Wf,rI,iI,nI,qB,Xf,bX,G5,z5,oI,aI,cI,kX,QX,_X,FX,Zf,UX,od,qX,$5,UT,LX,js,tA,GX,B1,OB,ZE,IA,xi,ui,Qc,qT,OT,MT,$X,LT,VX,HT,ZX,Lc,sa,oa,$r,Vr,Iy,Z5,e6,t6,ad,cd,wy,xy,sZ,oZ,aZ,cZ,lZ,dZ,uZ,fZ,AZ,hZ,gZ,aa,uI,MB,XT,pZ,mZ,ca,la,fI,LB,S1,yZ,ZT,eU,AI,tU,Fd,_c,tB,iU,gI,s6,KB,Zs,to,Cd,oU,Cy,EZ,lU,dU,uU,_Z,FZ,PZ,TZ,UZ,RZ,NZ,qZ,OZ,MZ,Pf,LZ,HZ,KZ,GZ,fU,AU,hU,gU,zZ,JZ,o6,a6,pI,pU,$Z,VZ,YZ,WZ,da,Er,nB,XZ,Tf,ld,Ey,zc,oee,aee,cee,GB,c6,lee,dee,l6,uee,fee,hee,d6,pee,mee,yee,D1,Iee,u6,zB,xee,wU,Cee,xU,Eee,Bee,bee,CU,EU,BU,vee,kee,See,bU,Dee,Qee,_ee,Fee,Pee,Uf,ua,JB,Tee,Uee,vU,Ree,kU,SU,DU,QU,Nee,qee,Oee,Mee,By,jB,Lee,Hee,Kee,Gee,A6,by,sB,$B,zee,Jee,jee,oB,ki,Pe,Q1,_U,VB,mI,$ee,Vee,Yee,h6,g6,Wee,y6,cB,x6,nte,LU,HU,Dc,OI,MI,ste,Jc,tn,ute,fte,KU,Yr,XB,ZB,Rf,P1,GU,Ate,hte,gte,pte,mte,yte,Ite,wte,xte,Ys,Cte,Ete,zU,Ste,vy,Rte,Nte,fB,b6,AB,v6,hB,k6,jU,Hte,Kte,T1=j(()=>{eo=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};Ed=Symbol("doneWritingPromise"),D6=Symbol("doneWritingResolve"),Q6=Symbol("doneWritingReject"),Nf=Symbol("readingIndex"),on=class r extends Array{constructor(){super(),Object.setPrototypeOf(this,r.prototype),this[Ed]=new Promise((e,t)=>{this[D6]=e,this[Q6]=t}),this[Ed].catch(()=>{})}};on.prototype.getReader=function(){return this[Nf]===void 0&&(this[Nf]=0),{read:async()=>(await this[Ed],this[Nf]===this.length?{value:void 0,done:!0}:{value:this[this[Nf]++],done:!1})}};on.prototype.readToEnd=async function(r){await this[Ed];let e=r(this.slice(this[Nf]));return this.length=0,e};on.prototype.clone=function(){let r=new on;return r[Ed]=this[Ed].then(()=>{r.push(...this)}),r};cA.prototype.write=async function(r){this.stream.push(r)};cA.prototype.close=async function(){this.stream[D6]()};cA.prototype.abort=async function(r){return this.stream[Q6](r),r};cA.prototype.releaseLock=function(){};typeof eo.process=="object"&&eo.process.versions;l5=new WeakSet,xt=Symbol("externalBuffer");gs.prototype.read=async function(){return this[xt]&&this[xt].length?{done:!1,value:this[xt].shift()}:this._read()};gs.prototype.releaseLock=function(){this[xt]&&(this.stream[xt]=this[xt]),this._releaseLock()};gs.prototype.cancel=function(r){return this._cancel(r)};gs.prototype.readLine=async function(){let r=[],e;for(;!e;){let{done:t,value:i}=await this.read();if(i+="",t)return r.length?di(r):void 0;let n=i.indexOf(` -`)+1;n&&(e=di(r.concat(i.substr(0,n))),r=[]),n!==i.length&&r.push(i.substr(n))}return this.unshift(...r),e};gs.prototype.readByte=async function(){let{done:r,value:e}=await this.read();if(r)return;let t=e[0];return this.unshift(Ur(e,1)),t};gs.prototype.readBytes=async function(r){let e=[],t=0;for(;;){let{done:i,value:n}=await this.read();if(i)return e.length?di(e):void 0;if(e.push(n),t+=n.length,t>=r){let s=di(e);return this.unshift(Ur(s,r)),Ur(s,0,r)}}};gs.prototype.peekBytes=async function(r){let e=await this.readBytes(r);return this.unshift(e),e};gs.prototype.unshift=function(...r){if(this[xt]||(this[xt]=[]),r.length===1&&yI(r[0])&&this[xt].length&&r[0].length&&this[xt][0].byteOffset>=r[0].length){this[xt][0]=new Uint8Array(this[xt][0].buffer,this[xt][0].byteOffset-r[0].length,this[xt][0].byteLength+r[0].length);return}this[xt].unshift(...r.filter(e=>e&&e.length))};gs.prototype.readToEnd=async function(r=di){let e=[];for(;;){let{done:t,value:i}=await this.read();if(t)break;e.push(i)}return r(e)};kf=Symbol("byValue"),m={curve:{nistP256:"nistP256",p256:"nistP256",nistP384:"nistP384",p384:"nistP384",nistP521:"nistP521",p521:"nistP521",secp256k1:"secp256k1",ed25519Legacy:"ed25519Legacy",ed25519:"ed25519Legacy",curve25519Legacy:"curve25519Legacy",curve25519:"curve25519Legacy",brainpoolP256r1:"brainpoolP256r1",brainpoolP384r1:"brainpoolP384r1",brainpoolP512r1:"brainpoolP512r1"},s2k:{simple:0,salted:1,iterated:3,argon2:4,gnu:101},publicKey:{rsaEncryptSign:1,rsaEncrypt:2,rsaSign:3,elgamal:16,dsa:17,ecdh:18,ecdsa:19,eddsaLegacy:22,aedh:23,aedsa:24,x25519:25,x448:26,ed25519:27,ed448:28},symmetric:{idea:1,tripledes:2,cast5:3,blowfish:4,aes128:7,aes192:8,aes256:9,twofish:10},compression:{uncompressed:0,zip:1,zlib:2,bzip2:3},hash:{md5:1,sha1:2,ripemd:3,sha256:8,sha384:9,sha512:10,sha224:11,sha3_256:12,sha3_512:14},webHash:{"SHA-1":2,"SHA-256":8,"SHA-384":9,"SHA-512":10},aead:{eax:1,ocb:2,gcm:3,experimentalGCM:100},packet:{publicKeyEncryptedSessionKey:1,signature:2,symEncryptedSessionKey:3,onePassSignature:4,secretKey:5,publicKey:6,secretSubkey:7,compressedData:8,symmetricallyEncryptedData:9,marker:10,literalData:11,trust:12,userID:13,publicSubkey:14,userAttribute:17,symEncryptedIntegrityProtectedData:18,modificationDetectionCode:19,aeadEncryptedData:20,padding:21},literal:{binary:98,text:116,utf8:117,mime:109},signature:{binary:0,text:1,standalone:2,certGeneric:16,certPersona:17,certCasual:18,certPositive:19,certRevocation:48,subkeyBinding:24,keyBinding:25,key:31,keyRevocation:32,subkeyRevocation:40,timestamp:64,thirdParty:80},signatureSubpacket:{signatureCreationTime:2,signatureExpirationTime:3,exportableCertification:4,trustSignature:5,regularExpression:6,revocable:7,keyExpirationTime:9,placeholderBackwardsCompatibility:10,preferredSymmetricAlgorithms:11,revocationKey:12,issuerKeyID:16,notationData:20,preferredHashAlgorithms:21,preferredCompressionAlgorithms:22,keyServerPreferences:23,preferredKeyServer:24,primaryUserID:25,policyURI:26,keyFlags:27,signersUserID:28,reasonForRevocation:29,features:30,signatureTarget:31,embeddedSignature:32,issuerFingerprint:33,preferredAEADAlgorithms:34,preferredCipherSuites:39},keyFlags:{certifyKeys:1,signData:2,encryptCommunication:4,encryptStorage:8,splitPrivateKey:16,authentication:32,sharedPrivateKey:128},armor:{multipartSection:0,multipartLast:1,signed:2,message:3,publicKey:4,privateKey:5,signature:6},reasonForRevocation:{noReason:0,keySuperseded:1,keyCompromised:2,keyRetired:3,userIDInvalid:32},features:{modificationDetection:1,aead:2,v5Keys:4,seipdv2:8},write:function(r,e){if(typeof e=="number"&&(e=this.read(r,e)),r[e]!==void 0)return r[e];throw new Error("Invalid enum value.")},read:function(r,e){if(r[kf]||(r[kf]=[],Object.entries(r).forEach(([t,i])=>{r[kf][i]=t})),r[kf][e]!==void 0)return r[kf][e];throw new Error("Invalid enum value.")}},pe={preferredHashAlgorithm:m.hash.sha512,preferredSymmetricAlgorithm:m.symmetric.aes256,preferredCompressionAlgorithm:m.compression.uncompressed,aeadProtect:!1,parseAEADEncryptedV4KeysAsLegacy:!1,preferredAEADAlgorithm:m.aead.gcm,aeadChunkSizeByte:12,v6Keys:!1,enableParsingV5Entities:!1,s2kType:m.s2k.iterated,s2kIterationCountByte:224,s2kArgon2Params:{passes:3,parallelism:4,memoryExponent:16},maxArgon2MemoryExponent:30,allowUnauthenticatedMessages:!1,allowUnauthenticatedStream:!1,minRSABits:2047,passwordCollisionCheck:!1,allowInsecureDecryptionWithSigningKeys:!1,allowInsecureVerificationWithReformattedKeys:!1,allowMissingKeyFlags:!1,constantTimePKCS1Decryption:!1,constantTimePKCS1DecryptionSupportedSymmetricAlgorithms:new Set([m.symmetric.aes128,m.symmetric.aes192,m.symmetric.aes256]),ignoreUnsupportedPackets:!0,ignoreMalformedPackets:!1,enforceGrammar:!0,additionalAllowedPackets:[],showVersion:!1,showComment:!1,versionString:"OpenPGP.js 6.3.1",commentString:"https://openpgpjs.org",maxUserIDLength:1024*5,maxDecompressedMessageSize:1/0,knownNotations:[],nonDeterministicSignaturesViaNotation:!0,useEllipticFallback:!0,rejectHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd]),rejectMessageHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd,m.hash.sha1]),rejectPublicKeyAlgorithms:new Set([m.publicKey.elgamal,m.publicKey.dsa]),rejectCurves:new Set([m.curve.secp256k1])},d5=(()=>{try{return process.env.NODE_ENV==="development"}catch{}return!1})(),F={isString:function(r){return typeof r=="string"||r instanceof String},nodeRequire:S6(import.meta.url),isArray:function(r){return r instanceof Array},isUint8Array:yI,isStream:or,getNobleCurve:async(r,e)=>{if(!pe.useEllipticFallback)throw new Error("This curve is only supported in the full build of OpenPGP.js");let{nobleCurves:t}=await Promise.resolve().then(function(){return Pee});switch(r){case m.publicKey.ecdh:case m.publicKey.ecdsa:{let i=t.get(e);if(!i)throw new Error("Unsupported curve");return i}case m.publicKey.x448:return t.get("x448");case m.publicKey.ed448:return t.get("ed448");default:throw new Error("Unsupported curve")}},readNumber:function(r){let e=0;for(let t=0;t<r.length;t++)e+=256**t*r[r.length-1-t];return e},writeNumber:function(r,e){let t=new Uint8Array(e);for(let i=0;i<e;i++)t[i]=r>>8*(e-i-1)&255;return t},readDate:function(r){let e=F.readNumber(r);return new Date(e*1e3)},writeDate:function(r){let e=Math.floor(r.getTime()/1e3);return F.writeNumber(e,4)},normalizeDate:function(r=Date.now()){return r===null||r===1/0?r:new Date(Math.floor(+r/1e3)*1e3)},readMPI:function(r){let t=(r[0]<<8|r[1])+7>>>3;return F.readExactSubarray(r,2,2+t)},readExactSubarray:function(r,e,t){if(r.length<t)throw new Error("Input array too short");return r.subarray(e,t)},leftPad(r,e){if(r.length>e)throw new Error("Input array too long");let t=new Uint8Array(e),i=e-r.length;return t.set(r,i),t},uint8ArrayToMPI:function(r){let e=F.uint8ArrayBitLength(r);if(e===0)throw new Error("Zero MPI");let t=r.subarray(r.length-Math.ceil(e/8)),i=new Uint8Array([(e&65280)>>8,e&255]);return F.concatUint8Array([i,t])},uint8ArrayBitLength:function(r){let e;for(e=0;e<r.length&&r[e]===0;e++);if(e===r.length)return 0;let t=r.subarray(e);return(t.length-1)*8+F.nbits(t[0])},hexToUint8Array:function(r){let e=new Uint8Array(r.length>>1);for(let t=0;t<r.length>>1;t++)e[t]=parseInt(r.substr(t<<1,2),16);return e},uint8ArrayToHex:function(r){let e="0123456789abcdef",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),t},stringToUint8Array:function(r){return sr(r,e=>{if(!F.isString(e))throw new Error("stringToUint8Array: Data must be in the form of a string");let t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t})},uint8ArrayToString:function(r){r=new Uint8Array(r);let e=[],t=16384,i=r.length;for(let n=0;n<i;n+=t)e.push(String.fromCharCode.apply(String,r.subarray(n,n+t<i?n+t:i)));return e.join("")},encodeUTF8:function(r){let e=new TextEncoder("utf-8");function t(i,n=!1){return e.encode(i,{stream:!n})}return sr(r,t,()=>t("",!0))},decodeUTF8:function(r){let e=new TextDecoder("utf-8");function t(i,n=!1){return e.decode(i,{stream:!n})}return sr(r,t,()=>t(new Uint8Array,!0))},concat:di,concatUint8Array:_6,equalsUint8Array:function(r,e){if(!F.isUint8Array(r)||!F.isUint8Array(e))throw new Error("Data must be in the form of a Uint8Array");if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},findLastIndex:function(r,e){for(let t=r.length;t>=0;t--)if(e(r[t],t,r))return t;return-1},writeChecksum:function(r){let e=0;for(let t=0;t<r.length;t++)e=e+r[t]&65535;return F.writeNumber(e,2)},printDebug:function(r){d5&&console.log("[OpenPGP.js debug]",r)},printDebugError:function(r){d5&&console.error("[OpenPGP.js debug]",r)},nbits:function(r){let e=1,t=r>>>16;return t!==0&&(r=t,e+=16),t=r>>8,t!==0&&(r=t,e+=8),t=r>>4,t!==0&&(r=t,e+=4),t=r>>2,t!==0&&(r=t,e+=2),t=r>>1,t!==0&&(r=t,e+=1),e},double:function(r){let e=new Uint8Array(r.length),t=r.length-1;for(let i=0;i<t;i++)e[i]=r[i]<<1^r[i+1]>>7;return e[t]=r[t]<<1^(r[0]>>7)*135,e},shiftRight:function(r,e){if(e)for(let t=r.length-1;t>=0;t--)r[t]>>=e,t>0&&(r[t]|=r[t-1]<<8-e);return r},getWebCrypto:function(){let e=typeof eo<"u"&&eo.crypto&&eo.crypto.subtle||this.getNodeCrypto()?.webcrypto.subtle;if(!e)throw new Error("The WebCrypto API is not available");return e},getNodeCrypto:function(){return this.nodeRequire("crypto")},getNodeZlib:function(){return this.nodeRequire("zlib")},getNodeBuffer:function(){return(this.nodeRequire("buffer")||{}).Buffer},getHardwareConcurrency:function(){return typeof navigator<"u"?navigator.hardwareConcurrency||1:this.nodeRequire("os").cpus().length},isEmailAddress:function(r){return F.isString(r)?/^[^\p{C}\p{Z}@<>\\]+@[^\p{C}\p{Z}@<>\\]+[^\p{C}\p{Z}\p{P}]$/u.test(r):!1},canonicalizeEOL:function(r){let i=!1;return sr(r,n=>{i&&(n=F.concatUint8Array([new Uint8Array([13]),n])),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=[];for(let l=0;s=n.indexOf(10,l)+1,s;l=s)n[s-2]!==13&&o.push(s);if(!o.length)return n;let a=new Uint8Array(n.length+o.length),c=0;for(let l=0;l<o.length;l++){let d=n.subarray(o[l-1]||0,o[l]);a.set(d,c),c+=d.length,a[c-1]=13,a[c]=10,c++}return a.set(n.subarray(o[o.length-1]||0),c),a},()=>i?new Uint8Array([13]):void 0)},nativeEOL:function(r){let i=!1;return sr(r,n=>{i&&n[0]!==10?n=F.concatUint8Array([new Uint8Array([13]),n]):n=new Uint8Array(n),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=0;for(let a=0;a!==n.length;a=s){s=n.indexOf(13,a)+1,s||(s=n.length);let c=s-(n[s]===10?1:0);a&&n.copyWithin(o,a,c),o+=c-a}return n.subarray(0,o)},()=>i?new Uint8Array([13]):void 0)},removeTrailingSpaces:function(r){return r.split(` +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push(`-----END PGP SIGNATURE----- +`);break;case y.armor.message:d.push(`-----BEGIN PGP MESSAGE----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push(`-----END PGP MESSAGE----- +`);break;case y.armor.publicKey:d.push(`-----BEGIN PGP PUBLIC KEY BLOCK----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push(`-----END PGP PUBLIC KEY BLOCK----- +`);break;case y.armor.privateKey:d.push(`-----BEGIN PGP PRIVATE KEY BLOCK----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push(`-----END PGP PRIVATE KEY BLOCK----- +`);break;case y.armor.signature:d.push(`-----BEGIN PGP SIGNATURE----- +`),d.push(gl(n,a)),d.push(Sa(e)),l&&d.push("=",pl(l)),d.push(`-----END PGP SIGNATURE----- +`);break}return F.concat(d)}function Oe(r){let e="0123456789ABCDEF",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),BigInt("0x0"+t)}function dt(r,e){let t=r%e;return t<Ni?t+e:t}function kZ(r,e,t){let i=-r;return e&i|t&~i}function Or(r,e,t){if(t===Ni)throw Error("Modulo cannot be zero");if(t===Eu)return BigInt(0);if(e<Ni)throw Error("Unsopported negative exponent");let i=e,n=r;n%=t;let s=BigInt(1);for(;i>Ni;){let a=i&Eu;i>>=Eu;let o=s*n%t;s=kZ(a,o,s),n=n*n%t}return s}function dU(r){return r>=Ni?r:-r}function SZ(r,e){let t=BigInt(0),i=BigInt(1),n=BigInt(1),s=BigInt(0),a=dU(r),o=dU(e),c=r<Ni,l=e<Ni;for(;o!==Ni;){let d=a/o,u=t;t=n-d*t,n=u,u=i,i=s-d*i,s=u,u=o,o=a%o,a=u}return{x:c?-n:n,y:l?-s:s,gcd:a}}function _u(r,e){let{gcd:t,x:i}=SZ(r,e);if(t!==Eu)throw new Error("Inverse does not exist");return dt(i+e,e)}function DZ(r,e){let t=r,i=e;for(;i!==Ni;){let n=i;i=t%i,t=n}return t}function pb(r){let e=Number(r);if(e>Number.MAX_SAFE_INTEGER)throw new Error("Number can only safely store up to 53 bits");return e}function _Z(r,e){return(r>>BigInt(e)&Eu)===Ni?0:1}function Mu(r){let e=r<Ni?BigInt(-1):Ni,t=1,i=r;for(;(i>>=Eu)!==e;)t++;return t}function Oi(r){let e=r<Ni?BigInt(-1):Ni,t=BigInt(8),i=1,n=r;for(;(n>>=t)!==e;)i++;return i}function or(r,e="be",t){let i=r.toString(16);i.length%2===1&&(i="0"+i);let n=i.length/2,s=new Uint8Array(t||n),a=t?t-n:0,o=0;for(;o<n;)s[o+a]=parseInt(i.slice(2*o,2*o+2),16),o++;return e!=="be"&&s.reverse(),s}function jr(r){let e=typeof crypto<"u"?crypto:QZ?.webcrypto;if(e?.getRandomValues){let t=new Uint8Array(r);return e.getRandomValues(t)}else throw new Error("No secure random number generator available.")}function uc(r,e){if(e<r)throw new Error("Illegal parameter value: max <= min");let t=e-r,i=Oi(t),n=Oe(jr(i+8));return dt(n,t)+r}function uU(r,e,t){let i=BigInt(30),n=Qs<<BigInt(r-1),s=[1,6,5,4,3,2,1,4,3,2,1,2,1,4,3,2,1,2,1,4,3,2,1,6,5,4,3,2,1,2],a=uc(n,n<<Qs),o=pb(dt(a,i));do a+=BigInt(s[o]),o=(o+s[o])%s.length,Mu(a)>r&&(a=dt(a,n<<Qs),a+=n,o=pb(dt(a,i)));while(!UR(a,e,t));return a}function UR(r,e,t){return!(e&&DZ(r-Qs,e)!==Qs||!PZ(r)||!FZ(r)||!UZ(r,t))}function FZ(r,e=BigInt(2)){return Or(e,r-Qs,r)===Qs}function PZ(r){let e=BigInt(0);return TZ.every(t=>dt(r,t)!==e)}function UZ(r,e,t){let i=Mu(r);e||(e=Math.max(1,i/48|0));let n=r-Qs,s=0;for(;!_Z(n,s);)s++;let a=r>>BigInt(s);for(;e>0;e--){let o=uc(BigInt(2),n),c=Or(o,a,r);if(c===Qs||c===n)continue;let l;for(l=1;l<s;l++){if(c=dt(c*c,r),c===Qs)return!1;if(c===n)break}if(l===s)return!1}return!0}function Na(r){if(!(!ww||!RZ.includes(r)))return async function(e){let t=ww.createHash(r);return gr(e,i=>{t.update(i)},()=>new Uint8Array(t.digest()))}}function Oa(r,e){let t=async()=>{let{nobleHashes:i}=await Promise.resolve().then(function(){return qne}),n=i.get(r);if(!n)throw new Error("Unsupported hash");return n};return async function(i){if(Ot(i)&&(i=await cr(i)),F.isStream(i)){let s=(await t()).create();return gr(i,a=>{s.update(a)},()=>s.digest())}else return fU&&e?new Uint8Array(await fU.digest(e,i)):(await t())(i)}}function Us(r,e){switch(r){case y.hash.md5:return NZ(e);case y.hash.sha1:return OZ(e);case y.hash.ripemd:return KZ(e);case y.hash.sha256:return MZ(e);case y.hash.sha384:return LZ(e);case y.hash.sha512:return HZ(e);case y.hash.sha224:return qZ(e);case y.hash.sha3_256:return GZ(e);case y.hash.sha3_512:return zZ(e);default:throw new Error("Unsupported hash function")}}function vr(r){switch(r){case y.hash.md5:return 16;case y.hash.sha1:case y.hash.ripemd:return 20;case y.hash.sha256:return 32;case y.hash.sha384:return 48;case y.hash.sha512:return 64;case y.hash.sha224:return 28;case y.hash.sha3_256:return 32;case y.hash.sha3_512:return 64;default:throw new Error("Invalid hash algorithm.")}}function JZ(r){let e=new Uint8Array(r),t=0;for(;t<r;){let i=jr(r-t);for(let n=0;n<i.length;n++)i[n]!==0&&(e[t++]=i[n])}return e}function RR(r,e){let t=r.length;if(t>e-11)throw new Error("Message too long");let i=JZ(e-t-3),n=new Uint8Array(e);return n[1]=2,n.set(i,2),n.set(r,e-t),n}function NR(r,e){let t=2,i=1;for(let o=t;o<r.length;o++)i&=r[o]!==0,t+=i;let n=t-2,s=r.subarray(t+1),a=r[0]===0&r[1]===2&n>=8&!i;if(e)return F.selectUint8Array(a,s,e);if(a)return s;throw new Error("Decryption error")}function OR(r,e,t){let i;if(e.length!==vr(r))throw new Error("Invalid hash length");let n=new Uint8Array(Cn[r].length);for(i=0;i<Cn[r].length;i++)n[i]=Cn[r][i];let s=n.length+e.length;if(t<s+11)throw new Error("Intended encoded message length too short");let a=new Uint8Array(t-s-3).fill(255),o=new Uint8Array(t);return o[1]=1,o.set(a,2),o.set(n,t-s),o.set(e,t-e.length),o}async function jZ(r,e,t,i,n,s,a,o,c){if(vr(r)>=t.length)throw new Error("Digest size cannot exceed key modulus size");if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await eee(y.read(y.webHash,r),e,t,i,n,s,a,o)}catch(l){F.printDebugError(l)}else if(F.getNodeCrypto())return tee(r,e,t,i,n,s,a,o)}return ZZ(r,t,n,c)}async function $Z(r,e,t,i,n,s){if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await iee(y.read(y.webHash,r),e,t,i,n)}catch(a){F.printDebugError(a)}else if(F.getNodeCrypto())return nee(r,e,t,i,n)}return ree(r,t,i,n,s)}async function VZ(r,e,t){return F.getNodeCrypto()?see(r,e,t):aee(r,e,t)}async function YZ(r,e,t,i,n,s,a,o){if(F.getNodeCrypto()&&!o)try{return oee(r,e,t,i,n,s,a)}catch(c){F.printDebugError(c)}return cee(r,e,t,i,n,s,a,o)}async function WZ(r,e){if(e=BigInt(e),F.getWebCrypto()){let a={name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:or(e),hash:{name:"SHA-1"}},o=await Qu.generateKey(a,!0,["sign","verify"]),c=await Qu.exportKey("jwk",o.privateKey);return hU(c,e)}else if(F.getNodeCrypto()){let a={modulusLength:r,publicExponent:pb(e),publicKeyEncoding:{type:"pkcs1",format:"jwk"},privateKeyEncoding:{type:"pkcs1",format:"jwk"}},o=await new Promise((c,l)=>{vl.generateKeyPair("rsa",a,(d,u,f)=>{d?l(d):c(f)})});return hU(o,e)}let t,i,n;do i=uU(r-(r>>1),e,40),t=uU(r>>1,e,40),n=t*i;while(Mu(n)!==r);let s=(t-ac)*(i-ac);return i<t&&([t,i]=[i,t]),{n:or(n),e:or(e),d:or(_u(e,s)),p:or(t),q:or(i),u:or(_u(t,i))}}async function XZ(r,e,t,i,n,s){if(r=Oe(r),i=Oe(i),n=Oe(n),i*n!==r)return!1;let a=BigInt(2);if(s=Oe(s),dt(i*s,n)!==BigInt(1))return!1;e=Oe(e),t=Oe(t);let o=BigInt(Math.floor(Mu(r)/3)),c=uc(a,a<<o),l=c*t*e;return dt(l,i-ac)===c&&dt(l,n-ac)===c}function ZZ(r,e,t,i){e=Oe(e);let n=Oe(OR(r,i,Oi(e)));return t=Oe(t),or(Or(n,t,e),"be",Oi(e))}async function eee(r,e,t,i,n,s,a,o){let c=Zb(t,i,n,s,a,o),l={name:"RSASSA-PKCS1-v1_5",hash:{name:r}},d=await Qu.importKey("jwk",c,l,!1,["sign"]);return new Uint8Array(await Qu.sign("RSASSA-PKCS1-v1_5",d,e))}function tee(r,e,t,i,n,s,a,o){let c=vl.createSign(y.read(y.hash,r));c.write(e),c.end();let l=Zb(t,i,n,s,a,o);return new Uint8Array(c.sign({key:l,format:"jwk",type:"pkcs1"}))}function ree(r,e,t,i,n){if(t=Oe(t),e=Oe(e),i=Oe(i),e>=t)throw new Error("Signature size cannot exceed modulus size");let s=or(Or(e,i,t),"be",Oi(t)),a=OR(r,n,Oi(t));return F.equalsUint8Array(s,a)}async function iee(r,e,t,i,n){let s=e2(i,n),a=await Qu.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:{name:r}},!1,["verify"]);return Qu.verify("RSASSA-PKCS1-v1_5",a,t,e)}function nee(r,e,t,i,n){let a={key:e2(i,n),format:"jwk",type:"pkcs1"},o=vl.createVerify(y.read(y.hash,r));o.write(e),o.end();try{return o.verify(a,t)}catch{return!1}}function see(r,e,t){let n={key:e2(e,t),format:"jwk",type:"pkcs1",padding:vl.constants.RSA_PKCS1_PADDING};return new Uint8Array(vl.publicEncrypt(n,r))}function aee(r,e,t){if(e=Oe(e),r=Oe(RR(r,Oi(e))),t=Oe(t),r>=e)throw new Error("Message size cannot exceed modulus size");return or(Or(r,t,e),"be",Oi(e))}function oee(r,e,t,i,n,s,a){let c={key:Zb(e,t,i,n,s,a),format:"jwk",type:"pkcs1",padding:vl.constants.RSA_PKCS1_PADDING};try{return new Uint8Array(vl.privateDecrypt(c,r))}catch{throw new Error("Decryption error")}}function cee(r,e,t,i,n,s,a,o){if(r=Oe(r),e=Oe(e),t=Oe(t),i=Oe(i),n=Oe(n),s=Oe(s),a=Oe(a),r>=e)throw new Error("Data too large.");let c=dt(i,s-ac),l=dt(i,n-ac),d=uc(BigInt(2),e),u=Or(_u(d,e),t,e);r=dt(r*u,e);let f=Or(r,l,n),A=Or(r,c,s),p=dt(a*(A-f),s)*n+f;return p=dt(p*d,e),NR(or(p,"be",Oi(e)),o)}function Zb(r,e,t,i,n,s){let a=Oe(i),o=Oe(n),c=Oe(t),l=dt(c,o-ac),d=dt(c,a-ac);return d=or(d),l=or(l),{kty:"RSA",n:zr(r),e:zr(e),d:zr(t),p:zr(n),q:zr(i),dp:zr(l),dq:zr(d),qi:zr(s),ext:!0}}function e2(r,e){return{kty:"RSA",n:zr(r),e:zr(e),ext:!0}}function hU(r,e){return{n:Ui(r.n),e:or(e),d:Ui(r.d),p:Ui(r.q),q:Ui(r.p),u:Ui(r.qi)}}async function lee(r,e,t,i){e=Oe(e),t=Oe(t),i=Oe(i);let n=RR(r,Oi(e)),s=Oe(n),a=uc(tc,e-tc);return{c1:or(Or(t,a,e)),c2:or(dt(Or(i,a,e)*s,e))}}async function dee(r,e,t,i,n){r=Oe(r),e=Oe(e),t=Oe(t),i=Oe(i);let s=dt(_u(Or(r,i,t),t)*e,t);return NR(or(s,"be",Oi(t)),n)}async function uee(r,e,t,i){let n=Oe(r),s=Oe(e),a=Oe(t);if(s<=tc||s>=n)return!1;let o=BigInt(Mu(n)),c=BigInt(1023);if(o<c||Or(s,n-tc,n)!==tc)return!1;let l=s,d=BigInt(1),u=BigInt(2),f=u<<BigInt(17);for(;d<f;){if(l=dt(l*s,n),l===tc)return!1;d++}let A=Oe(i),g=uc(u<<o-tc,u<<o),p=(n-tc)*g+A;return a===Or(s,p,n)}function qR(r){let e=0,t,i=r[0];return i<192?([e]=r,t=1):i<255?(e=(r[0]-192<<8)+r[1]+192,t=2):i===255&&(e=F.readNumber(r.subarray(1,5)),t=5),{len:e,offset:t}}function nx(r){return r<192?new Uint8Array([r]):r>191&&r<8384?new Uint8Array([(r-192>>8)+192,r-192&255]):F.concatUint8Array([new Uint8Array([255]),F.writeNumber(r,4)])}function hee(r){if(r<0||r>30)throw new Error("Partial Length power must be between 1 and 30");return new Uint8Array([224+r])}function xw(r){return new Uint8Array([192|r])}function AU(r,e){return F.concatUint8Array([xw(r),nx(e)])}function dw(r){return[y.packet.literalData,y.packet.compressedData,y.packet.symmetricallyEncryptedData,y.packet.symEncryptedIntegrityProtectedData,y.packet.aeadEncryptedData].includes(r)}async function Aee(r,e,t){let i,n;try{let s=await r.peekBytes(2);if(!s||s.length<2||(s[0]&128)===0)throw new Error("Error during parsing. This message / key probably does not conform to a valid OpenPGP format.");let a=await r.readByte(),o=-1,c=-1,l;c=0,(a&64)!==0&&(c=1);let d;c?o=a&63:(o=(a&63)>>2,d=a&3);let u=dw(o),f=null;if(e&&u){if(e==="array"){let g=new Bn;i=an(g),f=g}else{let g=new TransformStream;i=an(g.writable),f=g.readable}n=t({tag:o,packet:f})}else f=[];let A;do{if(c){let g=await r.readByte();if(A=!1,g<192)l=g;else if(g>=192&&g<224)l=(g-192<<8)+await r.readByte()+192;else if(g>223&&g<255){if(l=1<<(g&31),A=!0,!u)throw new TypeError("This packet type does not support partial lengths.")}else l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte()}else switch(d){case 0:l=await r.readByte();break;case 1:l=await r.readByte()<<8|await r.readByte();break;case 2:l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte();break;default:l=1/0;break}if(l>0){let g=0;for(;;){i&&await i.ready;let{done:p,value:I}=await r.read();if(p){if(l===1/0)break;throw new Error("Unexpected end of packet")}let m=l===1/0?I:I.subarray(0,l-g);if(i?await i.write(m):f.push(m),g+=I.length,g>=l){r.unshift(I.subarray(l-g+I.length));break}}}}while(A);i?(await i.ready,await i.close()):(f=F.concatUint8Array(f),await t({tag:o,packet:f}))}catch(s){if(i)return await i.abort(s),!0;throw s}finally{i&&await n}}async function t2(r){switch(r){case y.publicKey.ed25519:try{let e=F.getWebCrypto(),t=await e.generateKey("Ed25519",!0,["sign","verify"]).catch(s=>{if(s.name==="OperationError"){let a=new Error("Unexpected key generation issue");throw a.name="NotSupportedError",a}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);return{A:new Uint8Array(Ui(n.x)),seed:Ui(i.d,!0)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Rl}),i=jr(sx(r)),{publicKey:n}=t.sign.keyPair.fromSeed(i);return{A:n,seed:i}}case y.publicKey.ed448:{let e=await F.getNobleCurve(y.publicKey.ed448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,seed:t}}default:throw new Error("Unsupported EdDSA algorithm")}}async function r2(r,e,t,i,n,s){if(vr(e)<vr(ax(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case y.publicKey.ed25519:try{let a=F.getWebCrypto(),o=MR(r,i,n),c=await a.importKey("jwk",o,"Ed25519",!1,["sign"]);return{RS:new Uint8Array(await a.sign("Ed25519",c,s))}}catch(a){if(a.name!=="NotSupportedError")throw a;let{default:o}=await Promise.resolve().then(function(){return Rl}),c=F.concatUint8Array([n,i]);return{RS:o.sign.detached(s,c)}}case y.publicKey.ed448:return{RS:(await F.getNobleCurve(y.publicKey.ed448)).sign(s,n)};default:throw new Error("Unsupported EdDSA algorithm")}}async function i2(r,e,{RS:t},i,n,s){if(vr(e)<vr(ax(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case y.publicKey.ed25519:try{let a=F.getWebCrypto(),o=s2(r,n),c=await a.importKey("jwk",o,"Ed25519",!1,["verify"]);return await a.verify("Ed25519",c,t,s)}catch(a){if(a.name!=="NotSupportedError")throw a;let{default:o}=await Promise.resolve().then(function(){return Rl});return o.sign.detached.verify(s,t,n)}case y.publicKey.ed448:return(await F.getNobleCurve(y.publicKey.ed448)).verify(t,s,n);default:throw new Error("Unsupported EdDSA algorithm")}}async function n2(r,e,t){switch(r){case y.publicKey.ed25519:try{let i=F.getWebCrypto(),n=MR(r,e,t),s=s2(r,e),a=await i.importKey("jwk",n,"Ed25519",!1,["sign"]),o=await i.importKey("jwk",s,"Ed25519",!1,["verify"]),c=jr(8),l=new Uint8Array(await i.sign("Ed25519",a,c));return await i.verify("Ed25519",o,l,c)}catch(i){if(i.name!=="NotSupportedError")return!1;let{default:n}=await Promise.resolve().then(function(){return Rl}),{publicKey:s}=n.sign.keyPair.fromSeed(t);return F.equalsUint8Array(e,s)}case y.publicKey.ed448:{let n=(await F.getNobleCurve(y.publicKey.ed448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}function sx(r){switch(r){case y.publicKey.ed25519:return 32;case y.publicKey.ed448:return 57;default:throw new Error("Unsupported EdDSA algorithm")}}function ax(r){switch(r){case y.publicKey.ed25519:return y.hash.sha256;case y.publicKey.ed448:return y.hash.sha512;default:throw new Error("Unknown EdDSA algo")}}function LR(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Nt(r,...e){if(!LR(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Cw(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function HR(r,e){Nt(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function a2(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function Pt(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function ui(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function ox(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function mee(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function AA(r){if(typeof r=="string")r=mee(r);else if(LR(r))r=qi(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function KR(r,e){return r.buffer===e.buffer&&r.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<r.byteOffset+r.byteLength}function o2(r,e){if(KR(r,e)&&r.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function yee(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];Nt(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function GR(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r[i]^e[i];return t===0}function UA(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!En(e))throw new Error("invalid output, must be aligned");return e}function mb(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),a=Number(t>>n&s),o=Number(t&s),c=0,l=4;r.setUint32(e+c,a,i),r.setUint32(e+l,o,i)}function Iee(r,e,t){let i=new Uint8Array(16),n=ox(i);return mb(n,0,BigInt(e),t),mb(n,8,BigInt(r),t),i}function En(r){return r.byteOffset%4===0}function qi(r){return Uint8Array.from(r)}function Cee(r){r.reverse();let e=r[15]&1,t=0;for(let i=0;i<r.length;i++){let n=r[i];r[i]=n>>>1|t,t=(n&1)<<7}return r[0]^=-e&225,r}function zR(r){let e=(i,n)=>r(n,i.length).update(AA(i)).digest(),t=r(new Uint8Array(16),0);return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=(i,n)=>r(i,n),e}function d2(r){return r<<1^Bee&-(r>>7)}function Iu(r,e){let t=0;for(;e>0;e>>=1)t^=r&-(e&1),r=d2(r);return t}function JR(r,e){if(r.length!==256)throw new Error("Wrong sbox length");let t=new Uint32Array(256).map((l,d)=>e(r[d])),i=t.map(q1),n=i.map(q1),s=n.map(q1),a=new Uint32Array(256*256),o=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){let u=l*256+d;a[u]=t[l]^i[d],o[u]=n[l]^s[d],c[u]=r[l]<<8|r[d]}return{sbox:r,sbox2:c,T0:t,T1:i,T2:n,T3:s,T01:a,T23:o}}function Pl(r){Nt(r);let e=r.length;if(![16,24,32].includes(e))throw new Error("aes: invalid key size, should be 16, 24 or 32, got "+e);let{sbox2:t}=u2,i=[];En(r)||i.push(r=qi(r));let n=Pt(r),s=n.length,a=c=>Ds(t,c,c,c,c),o=new Uint32Array(e+28);o.set(n);for(let c=s;c<o.length;c++){let l=o[c-1];c%s===0?l=a(vee(l))^kee[c/s-1]:s>6&&c%s===4&&(l=a(l)),o[c]=o[c-s]^l}return ui(...i),o}function f2(r){let e=Pl(r),t=e.slice(),i=e.length,{sbox2:n}=u2,{T0:s,T1:a,T2:o,T3:c}=jR;for(let l=0;l<i;l+=4)for(let d=0;d<4;d++)t[l+d]=e[i-l-4+d];ui(e);for(let l=4;l<i-4;l++){let d=t[l],u=Ds(n,d,d,d,d);t[l]=s[u&255]^a[u>>>8&255]^o[u>>>16&255]^c[u>>>24]}return t}function ic(r,e,t,i,n,s){return r[t<<8&65280|i>>>8&255]^e[n>>>8&65280|s>>>24&255]}function Ds(r,e,t,i,n){return r[e&255|t&65280]|r[i>>>16&255|n>>>16&65280]<<16}function Zn(r,e,t,i,n){let{sbox2:s,T01:a,T23:o}=u2,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ic(a,o,e,t,i,n),I=r[c++]^ic(a,o,t,i,n,e),m=r[c++]^ic(a,o,i,n,e,t),w=r[c++]^ic(a,o,n,e,t,i);e=p,t=I,i=m,n=w}let d=r[c++]^Ds(s,e,t,i,n),u=r[c++]^Ds(s,t,i,n,e),f=r[c++]^Ds(s,i,n,e,t),A=r[c++]^Ds(s,n,e,t,i);return{s0:d,s1:u,s2:f,s3:A}}function cx(r,e,t,i,n){let{sbox2:s,T01:a,T23:o}=jR,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ic(a,o,e,n,i,t),I=r[c++]^ic(a,o,t,e,n,i),m=r[c++]^ic(a,o,i,t,e,n),w=r[c++]^ic(a,o,n,i,t,e);e=p,t=I,i=m,n=w}let d=r[c++]^Ds(s,e,n,i,t),u=r[c++]^Ds(s,t,e,n,i),f=r[c++]^Ds(s,i,t,e,n),A=r[c++]^Ds(s,n,i,t,e);return{s0:d,s1:u,s2:f,s3:A}}function $R(r,e,t,i){Nt(e,Mi),Nt(t);let n=t.length;i=UA(n,i),o2(t,i);let s=e,a=Pt(s),{s0:o,s1:c,s2:l,s3:d}=Zn(r,a[0],a[1],a[2],a[3]),u=Pt(t),f=Pt(i);for(let g=0;g+4<=u.length;g+=4){f[g+0]=u[g+0]^o,f[g+1]=u[g+1]^c,f[g+2]=u[g+2]^l,f[g+3]=u[g+3]^d;let p=1;for(let I=s.length-1;I>=0;I--)p=p+(s[I]&255)|0,s[I]=p&255,p>>>=8;({s0:o,s1:c,s2:l,s3:d}=Zn(r,a[0],a[1],a[2],a[3]))}let A=Mi*Math.floor(u.length/l2);if(A<n){let g=new Uint32Array([o,c,l,d]),p=a2(g);for(let I=A,m=0;I<n;I++,m++)i[I]=t[I]^p[m];ui(g)}return i}function oA(r,e,t,i,n){Nt(t,Mi),Nt(i),n=UA(i.length,n);let s=t,a=Pt(s),o=ox(s),c=Pt(i),l=Pt(n),d=e?0:12,u=i.length,f=o.getUint32(d,e),{s0:A,s1:g,s2:p,s3:I}=Zn(r,a[0],a[1],a[2],a[3]);for(let w=0;w+4<=c.length;w+=4)l[w+0]=c[w+0]^A,l[w+1]=c[w+1]^g,l[w+2]=c[w+2]^p,l[w+3]=c[w+3]^I,f=f+1>>>0,o.setUint32(d,f,e),{s0:A,s1:g,s2:p,s3:I}=Zn(r,a[0],a[1],a[2],a[3]);let m=Mi*Math.floor(c.length/l2);if(m<u){let w=new Uint32Array([A,g,p,I]),B=a2(w);for(let C=m,x=0;C<u;C++,x++)n[C]=i[C]^B[x];ui(w)}return n}function Dee(r){if(Nt(r),r.length%Mi!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+Mi)}function _ee(r,e,t){Nt(r);let i=r.length,n=i%Mi;if(!e&&n!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");En(r)||(r=qi(r));let s=Pt(r);if(e){let o=Mi-n;o||(o=Mi),i=i+o}t=UA(i,t),o2(r,t);let a=Pt(t);return{b:s,o:a,out:t}}function Qee(r,e){if(!e)return r;let t=r.length;if(!t)throw new Error("aes/pcks5: empty ciphertext not allowed");let i=r[t-1];if(i<=0||i>16)throw new Error("aes/pcks5: wrong padding");let n=r.subarray(0,-i);for(let s=0;s<i;s++)if(r[t-s-1]!==i)throw new Error("aes/pcks5: wrong padding");return n}function Fee(r){let e=new Uint8Array(16),t=Pt(e);e.set(r);let i=Mi-r.length;for(let n=Mi-i;n<Mi;n++)e[n]=i;return t}function Pee(r,e,t,i,n){let s=n?n.length:0,a=r.create(t,i.length+s);n&&a.update(n);let o=Iee(8*i.length,8*s,e);a.update(i),a.update(o);let c=a.digest();return ui(o),c}function YR(r){return r instanceof Uint32Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint32Array"}function WR(r,e){if(Nt(e,16),!YR(r))throw new Error("_encryptBlock accepts result of expandKeyLE");let t=Pt(e),{s0:i,s1:n,s2:s,s3:a}=Zn(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=a,e}function XR(r,e){if(Nt(e,16),!YR(r))throw new Error("_decryptBlock accepts result of expandKeyLE");let t=Pt(e),{s0:i,s1:n,s2:s,s3:a}=cx(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=a,e}async function eN(r){switch(r){case y.symmetric.aes128:case y.symmetric.aes192:case y.symmetric.aes256:throw new Error("Not a legacy cipher");case y.symmetric.cast5:case y.symmetric.blowfish:case y.symmetric.twofish:case y.symmetric.tripledes:{let{legacyCiphers:e}=await Promise.resolve().then(function(){return nse}),t=y.read(y.symmetric,r),i=e.get(t);if(!i)throw new Error("Unsupported cipher algorithm");return i}default:throw new Error("Unsupported cipher algorithm")}}function Tee(r){switch(r){case y.symmetric.aes128:case y.symmetric.aes192:case y.symmetric.aes256:case y.symmetric.twofish:return 16;case y.symmetric.blowfish:case y.symmetric.cast5:case y.symmetric.tripledes:return 8;default:throw new Error("Unsupported cipher")}}function Uee(r){switch(r){case y.symmetric.aes128:case y.symmetric.blowfish:case y.symmetric.cast5:return 16;case y.symmetric.aes192:case y.symmetric.tripledes:return 24;case y.symmetric.aes256:case y.symmetric.twofish:return 32;default:throw new Error("Unsupported cipher")}}function Dt(r){return{keySize:Uee(r),blockSize:Tee(r)}}async function xb(r,e,t){let{keySize:i}=Dt(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");try{let n=await bu.importKey("raw",e,{name:"AES-KW"},!1,["wrapKey"]),s=await bu.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!0,["sign"]),a=await bu.wrapKey("raw",s,n,{name:"AES-KW"});return new Uint8Array(a)}catch(n){if(n.name!=="NotSupportedError"&&!(e.length===24&&n.name==="OperationError"))throw n;F.printDebugError("Browser did not support operation: "+n.message)}return ZR(e).encrypt(t)}async function Cb(r,e,t){let{keySize:i}=Dt(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");let n;try{n=await bu.importKey("raw",e,{name:"AES-KW"},!1,["unwrapKey"])}catch(s){if(s.name!=="NotSupportedError"&&!(e.length===24&&s.name==="OperationError"))throw s;return F.printDebugError("Browser did not support operation: "+s.message),ZR(e).decrypt(t)}try{let s=await bu.unwrapKey("raw",t,n,{name:"AES-KW"},{name:"HMAC",hash:"SHA-256"},!0,["sign"]);return new Uint8Array(await bu.exportKey("raw",s))}catch(s){throw s.name==="OperationError"?new Error("Key Data Integrity failed"):s}}async function oc(r,e,t,i,n){let s=F.getWebCrypto(),a=y.read(y.webHash,r);if(!a)throw new Error("Hash algo not supported with HKDF");let o=await s.importKey("raw",e,"HKDF",!1,["deriveBits"]),c=await s.deriveBits({name:"HKDF",hash:a,salt:t,info:i},o,n*8);return new Uint8Array(c)}async function h2(r){switch(r){case y.publicKey.x25519:try{let e=F.getWebCrypto(),t=await e.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(s=>{if(s.name==="OperationError"){let a=new Error("Unexpected key generation issue");throw a.name="NotSupportedError",a}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);if(i.x!==n.x){let s=new Error("Unexpected mismatching public point");throw s.name="NotSupportedError",s}return{A:new Uint8Array(Ui(n.x)),k:Ui(i.d)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Rl}),{secretKey:i,publicKey:n}=t.box.keyPair();return{A:n,k:i}}case y.publicKey.x448:{let e=await F.getNobleCurve(y.publicKey.x448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,k:t}}default:throw new Error("Unsupported ECDH algorithm")}}async function A2(r,e,t){switch(r){case y.publicKey.x25519:try{let{ephemeralPublicKey:i,sharedSecret:n}=await dx(r,e),s=await ux(r,i,e,t);return F.equalsUint8Array(n,s)}catch{return!1}case y.publicKey.x448:{let n=(await F.getNobleCurve(y.publicKey.x448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}async function tN(r,e,t){let{ephemeralPublicKey:i,sharedSecret:n}=await dx(r,t),s=F.concatUint8Array([i,t,n]);switch(r){case y.publicKey.x25519:{let a=y.symmetric.aes128,{keySize:o}=Dt(a),c=await oc(y.hash.sha256,s,new Uint8Array,Bw.x25519,o),l=await xb(a,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}case y.publicKey.x448:{let a=y.symmetric.aes256,{keySize:o}=Dt(y.symmetric.aes256),c=await oc(y.hash.sha512,s,new Uint8Array,Bw.x448,o),l=await xb(a,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}default:throw new Error("Unsupported ECDH algorithm")}}async function rN(r,e,t,i,n){let s=await ux(r,e,i,n),a=F.concatUint8Array([e,i,s]);switch(r){case y.publicKey.x25519:{let o=y.symmetric.aes128,{keySize:c}=Dt(o),l=await oc(y.hash.sha256,a,new Uint8Array,Bw.x25519,c);return Cb(o,l,t)}case y.publicKey.x448:{let o=y.symmetric.aes256,{keySize:c}=Dt(y.symmetric.aes256),l=await oc(y.hash.sha512,a,new Uint8Array,Bw.x448,c);return Cb(o,l,t)}default:throw new Error("Unsupported ECDH algorithm")}}function lx(r){switch(r){case y.publicKey.x25519:return 32;case y.publicKey.x448:return 56;default:throw new Error("Unsupported ECDH algorithm")}}async function dx(r,e){switch(r){case y.publicKey.x25519:try{let t=F.getWebCrypto(),i=await t.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(l=>{if(l.name==="OperationError"){let d=new Error("Unexpected key generation issue");throw d.name="NotSupportedError",d}throw l}),n=await t.exportKey("jwk",i.publicKey);if((await t.exportKey("jwk",i.privateKey)).x!==n.x){let l=new Error("Unexpected mismatching public point");throw l.name="NotSupportedError",l}let a=g2(r,e),o=await t.importKey("jwk",a,"X25519",!1,[]),c=await t.deriveBits({name:"X25519",public:o},i.privateKey,lx(r)*8);return{sharedSecret:new Uint8Array(c),ephemeralPublicKey:new Uint8Array(Ui(n.x))}}catch(t){if(t.name!=="NotSupportedError")throw t;let{default:i}=await Promise.resolve().then(function(){return Rl}),{secretKey:n,publicKey:s}=i.box.keyPair(),a=i.scalarMult(n,e);return bw(a),{ephemeralPublicKey:s,sharedSecret:a}}case y.publicKey.x448:{let t=await F.getNobleCurve(y.publicKey.x448),{secretKey:i,publicKey:n}=t.keygen(),s=t.getSharedSecret(i,e);return bw(s),{ephemeralPublicKey:n,sharedSecret:s}}default:throw new Error("Unsupported ECDH algorithm")}}async function ux(r,e,t,i){switch(r){case y.publicKey.x25519:try{let n=F.getWebCrypto(),s=Ree(r,t,i),a=g2(r,e),o=await n.importKey("jwk",s,"X25519",!1,["deriveKey","deriveBits"]),c=await n.importKey("jwk",a,"X25519",!1,[]),l=await n.deriveBits({name:"X25519",public:c},o,lx(r)*8);return new Uint8Array(l)}catch(n){if(n.name!=="NotSupportedError")throw n;let{default:s}=await Promise.resolve().then(function(){return Rl}),a=s.scalarMult(i,e);return bw(a),a}case y.publicKey.x448:{let s=(await F.getNobleCurve(y.publicKey.x448)).getSharedSecret(i,e);return bw(s),s}default:throw new Error("Unsupported ECDH algorithm")}}function bw(r){let e=0;for(let t=0;t<r.length;t++)e|=r[t];if(e===0)throw new Error("Unexpected low order point")}function g2(r,e){if(r===y.publicKey.x25519)return{kty:"OKP",crv:"X25519",x:zr(e),ext:!0};throw new Error("Unsupported ECDH algorithm")}function Ree(r,e,t){if(r===y.publicKey.x25519){let i=g2(r,e);return i.d=zr(t),i}else throw new Error("Unsupported ECDH algorithm")}async function uw(r){let e=new Li(r),{oid:t,hash:i,cipher:n}=e,s=await e.genKeyPair();return{oid:t,Q:s.publicKey,secret:F.leftPad(s.privateKey,e.payloadSize),hash:i,cipher:n}}function nN(r){return iN[r.getName()].hash}async function sN(r,e,t,i){let n={[y.curve.nistP256]:!0,[y.curve.nistP384]:!0,[y.curve.nistP521]:!0,[y.curve.secp256k1]:!0,[y.curve.curve25519Legacy]:r===y.publicKey.ecdh,[y.curve.brainpoolP256r1]:!0,[y.curve.brainpoolP384r1]:!0,[y.curve.brainpoolP512r1]:!0},s=e.getName();if(!n[s])return!1;if(s===y.curve.curve25519Legacy){let c=i.slice().reverse();return t.length<1||t[0]!==64?!1:A2(y.publicKey.x25519,t.subarray(1),c)}let o=(await F.getNobleCurve(y.publicKey.ecdsa,s)).getPublicKey(i,!1);return!!F.equalsUint8Array(o,t)}function kl(r,e){let{payloadSize:t,wireFormatLeadingByte:i,name:n}=r,s=n===y.curve.curve25519Legacy||n===y.curve.ed25519Legacy?t:t*2;if(e[0]!==i||e.length!==s+1)throw new Error("Invalid point encoding")}async function wU(r){let e=await F.getNobleCurve(y.publicKey.ecdsa,r),{secretKey:t}=e.keygen();return{publicKey:e.getPublicKey(t,!1),privateKey:t}}async function Oee(r,e){let t=await M1.generateKey({name:"ECDSA",namedCurve:Fs[r]},!0,["sign","verify"]),i=await M1.exportKey("jwk",t.privateKey),n=await M1.exportKey("jwk",t.publicKey);return{publicKey:aN(n,e),privateKey:Ui(i.d)}}function qee(r){let e=vw.createECDH(vs[r]);return e.generateKeys(),{publicKey:new Uint8Array(e.getPublicKey()),privateKey:new Uint8Array(e.getPrivateKey())}}function aN(r,e){let t=Ui(r.x),i=Ui(r.y),n=new Uint8Array(t.length+i.length+1);return n[0]=e,n.set(t,1),n.set(i,t.length+1),n}function fx(r,e,t){let i=r,n=t.slice(1,i+1),s=t.slice(i+1,i*2+1);return{kty:"EC",crv:e,x:zr(n),y:zr(s),ext:!0}}function oN(r,e,t,i){let n=fx(r,e,t);return n.d=zr(i),n}async function p2(r,e,t,i,n,s){let a=new Li(r);if(kl(a,i),t&&!F.isStream(t)){let l={publicKey:i,privateKey:n};switch(a.type){case"web":try{return await Lee(a,e,t,l)}catch(d){if(a.name!=="nistP521"&&(d.name==="DataError"||d.name==="OperationError"))throw d;F.printDebugError("Browser did not support signing: "+d.message)}break;case"node":return Kee(a,e,t,n)}}let c=(await F.getNobleCurve(y.publicKey.ecdsa,a.name)).sign(s,n,{lowS:!1});return{r:or(c.r,"be",a.payloadSize),s:or(c.s,"be",a.payloadSize)}}async function m2(r,e,t,i,n,s){let a=new Li(r);kl(a,n);let o=async()=>s[0]===0?xU(a,t,s.subarray(1),n):!1;if(i&&!F.isStream(i))switch(a.type){case"web":try{return await Hee(a,e,t,i,n)||o()}catch(l){if(a.name!=="nistP521"&&(l.name==="DataError"||l.name==="OperationError"))throw l;F.printDebugError("Browser did not support verifying: "+l.message)}break;case"node":return Gee(a,e,t,i,n)||o()}return await xU(a,t,s,n)||o()}async function Mee(r,e,t){let i=new Li(r);if(i.keyType!==y.publicKey.ecdsa)return!1;switch(i.type){case"web":case"node":{let n=jr(8),s=y.hash.sha256,a=await Us(s,n);try{let o=await p2(r,s,n,e,t,a);return await m2(r,s,o,n,e,a)}catch{return!1}}default:return sN(y.publicKey.ecdsa,r,e,t)}}async function xU(r,e,t,i){return(await F.getNobleCurve(y.publicKey.ecdsa,r.name)).verify(F.concatUint8Array([e.r,e.s]),t,i,{lowS:!1})}async function Lee(r,e,t,i){let n=r.payloadSize,s=oN(r.payloadSize,Fs[r.name],i.publicKey,i.privateKey),a=await kw.importKey("jwk",s,{name:"ECDSA",namedCurve:Fs[r.name],hash:{name:y.read(y.webHash,r.hash)}},!1,["sign"]),o=new Uint8Array(await kw.sign({name:"ECDSA",namedCurve:Fs[r.name],hash:{name:y.read(y.webHash,e)}},a,t));return{r:o.slice(0,n),s:o.slice(n,n<<1)}}async function Hee(r,e,{r:t,s:i},n,s){let a=fx(r.payloadSize,Fs[r.name],s),o=await kw.importKey("jwk",a,{name:"ECDSA",namedCurve:Fs[r.name],hash:{name:y.read(y.webHash,r.hash)}},!1,["verify"]),c=F.concatUint8Array([t,i]).buffer;return kw.verify({name:"ECDSA",namedCurve:Fs[r.name],hash:{name:y.read(y.webHash,e)}},o,c,n)}function Kee(r,e,t,i){let n=F.nodeRequire("eckey-utils"),s=F.getNodeBuffer(),{privateKey:a}=n.generateDer({curveName:vs[r.name],privateKey:s.from(i)}),o=cN.createSign(y.read(y.hash,e));o.write(t),o.end();let c=new Uint8Array(o.sign({key:a,format:"der",type:"sec1",dsaEncoding:"ieee-p1363"})),l=r.payloadSize;return{r:c.subarray(0,l),s:c.subarray(l,l<<1)}}function Gee(r,e,{r:t,s:i},n,s){let a=F.nodeRequire("eckey-utils"),o=F.getNodeBuffer(),{publicKey:c}=a.generateDer({curveName:vs[r.name],publicKey:o.from(s)}),l=cN.createVerify(y.read(y.hash,e));l.write(n),l.end();let d=F.concatUint8Array([t,i]);try{return l.verify({key:c,format:"der",type:"spki",dsaEncoding:"ieee-p1363"},d)}catch{return!1}}async function lN(r,e,t,i,n,s){let a=new Li(r);if(kl(a,i),vr(e)<vr(y.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let{RS:o}=await r2(y.publicKey.ed25519,e,t,i.subarray(1),n,s);return{r:o.subarray(0,32),s:o.subarray(32)}}async function dN(r,e,{r:t,s:i},n,s,a){let o=new Li(r);if(kl(o,s),vr(e)<vr(y.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let c=F.concatUint8Array([t,i]);return i2(y.publicKey.ed25519,e,{RS:c},n,s.subarray(1),a)}async function uN(r,e,t){return r.getName()!==y.curve.ed25519Legacy||e.length<1||e[0]!==64?!1:n2(y.publicKey.ed25519,e.subarray(1),t)}function jee(r){let e=8-r.length%8,t=new Uint8Array(r.length+e).fill(e);return t.set(r),t}function $ee(r){let e=r.length;if(e>0){let t=r[e-1];if(t>=1){let i=r.subarray(e-t),n=new Uint8Array(t).fill(t);if(F.equalsUint8Array(i,n))return r.subarray(0,e-t)}}throw new Error("Invalid padding")}async function Vee(r,e,t){return sN(y.publicKey.ecdh,r,e,t)}function fN(r,e,t,i){return F.concatUint8Array([e.write(),new Uint8Array([r]),t.write(),F.stringToUint8Array("Anonymous Sender "),i])}async function hN(r,e,t,i,n=!1,s=!1){let a;if(n){for(a=0;a<e.length&&e[a]===0;a++);e=e.subarray(a)}if(s){for(a=e.length-1;a>=0&&e[a]===0;a--);e=e.subarray(0,a+1)}return(await Us(r,F.concatUint8Array([new Uint8Array([0,0,0,1]),e,i]))).subarray(0,t)}async function Yee(r,e){switch(r.type){case"curve25519Legacy":{let{sharedSecret:t,ephemeralPublicKey:i}=await dx(y.publicKey.x25519,e.subarray(1));return{publicKey:F.concatUint8Array([new Uint8Array([r.wireFormatLeadingByte]),i]),sharedKey:t}}case"web":if(r.web&&F.getWebCrypto())try{return await Zee(r,e)}catch(t){return F.printDebugError(t),EU(r,e)}break;case"node":return tte(r,e);default:return EU(r,e)}}async function AN(r,e,t,i,n){let s=jee(t),a=new Li(r);kl(a,i);let{publicKey:o,sharedKey:c}=await Yee(a,i),l=fN(y.publicKey.ecdh,r,e,n),{keySize:d}=Dt(e.cipher),u=await hN(e.hash,c,d,l),f=await xb(e.cipher,u,s);return{publicKey:o,wrappedKey:f}}async function Wee(r,e,t,i){if(i.length!==r.payloadSize){let n=new Uint8Array(r.payloadSize);n.set(i,r.payloadSize-i.length),i=n}switch(r.type){case"curve25519Legacy":{let n=i.slice().reverse(),s=await ux(y.publicKey.x25519,e.subarray(1),t.subarray(1),n);return{secretKey:n,sharedKey:s}}case"web":if(r.web&&F.getWebCrypto())try{return await Xee(r,e,t,i)}catch(n){return F.printDebugError(n),CU(r,e,i)}break;case"node":return ete(r,e,i);default:return CU(r,e,i)}}async function gN(r,e,t,i,n,s,a){let o=new Li(r);kl(o,n),kl(o,t);let{sharedKey:c}=await Wee(o,t,n,s),l=fN(y.publicKey.ecdh,r,e,a),{keySize:d}=Dt(e.cipher),u;for(let f=0;f<3;f++)try{let A=await hN(e.hash,c,d,l,f===1,f===2);return $ee(await Cb(e.cipher,A,i))}catch(A){u=A}throw u}async function CU(r,e,t){let s=(await F.getNobleCurve(y.publicKey.ecdh,r.name)).getSharedSecret(t,e).subarray(1);return{secretKey:t,sharedKey:s}}async function EU(r,e){let t=await F.getNobleCurve(y.publicKey.ecdh,r.name),{publicKey:i,privateKey:n}=await r.genKeyPair(),a=t.getSharedSecret(n,e).subarray(1);return{publicKey:i,sharedKey:a}}async function Xee(r,e,t,i){let n=F.getWebCrypto(),s=oN(r.payloadSize,r.web,t,i),a=n.importKey("jwk",s,{name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),o=fx(r.payloadSize,r.web,e),c=n.importKey("jwk",o,{name:"ECDH",namedCurve:r.web},!0,[]);[a,c]=await Promise.all([a,c]);let l=n.deriveBits({name:"ECDH",namedCurve:r.web,public:c},a,r.sharedSize),d=n.exportKey("jwk",a);[l,d]=await Promise.all([l,d]);let u=new Uint8Array(l);return{secretKey:Ui(d.d),sharedKey:u}}async function Zee(r,e){let t=F.getWebCrypto(),i=fx(r.payloadSize,r.web,e),n=t.generateKey({name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),s=t.importKey("jwk",i,{name:"ECDH",namedCurve:r.web},!1,[]);[n,s]=await Promise.all([n,s]);let a=t.deriveBits({name:"ECDH",namedCurve:r.web,public:s},n.privateKey,r.sharedSize),o=t.exportKey("jwk",n.publicKey);[a,o]=await Promise.all([a,o]);let c=new Uint8Array(a);return{publicKey:new Uint8Array(aN(o,r.wireFormatLeadingByte)),sharedKey:c}}function ete(r,e,t){let n=F.getNodeCrypto().createECDH(r.node);n.setPrivateKey(t);let s=new Uint8Array(n.computeSecret(e));return{secretKey:new Uint8Array(n.getPrivateKey()),sharedKey:s}}function tte(r,e){let i=F.getNodeCrypto().createECDH(r.node);i.generateKeys();let n=new Uint8Array(i.computeSecret(e));return{publicKey:new Uint8Array(i.getPublicKey()),sharedKey:n}}async function nte(r,e,t,i,n,s){let a=BigInt(0);i=Oe(i),n=Oe(n),t=Oe(t),s=Oe(s);let o,c,l,d;t=dt(t,i),s=dt(s,n);let u=dt(Oe(e.subarray(0,Oi(n))),n);for(;;){if(o=uc(cA,n),c=dt(Or(t,o,i),n),c===a)continue;let f=dt(s*c,n);if(d=dt(u+f,n),l=dt(_u(o,n)*d,n),l!==a)break}return{r:or(c,"be",Oi(i)),s:or(l,"be",Oi(i))}}async function ste(r,e,t,i,n,s,a,o){if(e=Oe(e),t=Oe(t),s=Oe(s),a=Oe(a),n=Oe(n),o=Oe(o),e<=fw||e>=a||t<=fw||t>=a)return F.printDebug("invalid DSA Signature"),!1;let c=dt(Oe(i.subarray(0,Oi(a))),a),l=_u(t,a);if(l===fw)return F.printDebug("invalid DSA Signature"),!1;n=dt(n,s),o=dt(o,s);let d=dt(c*l,a),u=dt(e*l,a),f=Or(n,d,s),A=Or(o,u,s);return dt(dt(f*A,s),a)===e}async function ate(r,e,t,i,n){let s=Oe(r),a=Oe(e),o=Oe(t),c=Oe(i);if(o<=cA||o>=s||dt(s-cA,a)!==fw||Or(o,a,s)!==cA)return!1;let l=BigInt(Mu(a)),d=BigInt(150);if(l<d||!UR(a,null,32))return!1;let u=Oe(n),f=BigInt(2),A=uc(f<<l-cA,f<<l),g=a*A+u;return c===Or(o,g,s)}async function ote(r,e,t,i,n){switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:{let{n:s,e:a}=t;return{c:await VZ(i,s,a)}}case y.publicKey.elgamal:{let{p:s,g:a,y:o}=t;return lee(i,s,a,o)}case y.publicKey.ecdh:{let{oid:s,Q:a,kdfParams:o}=t,{publicKey:c,wrappedKey:l}=await AN(s,o,i,a,n);return{V:c,C:new Sw(l)}}case y.publicKey.x25519:case y.publicKey.x448:{if(e&&!F.isAES(e))throw new Error("X25519 and X448 keys can only encrypt AES session keys");let{A:s}=t,{ephemeralPublicKey:a,wrappedKey:o}=await tN(r,i,s),c=_w.fromObject({algorithm:e,wrappedKey:o});return{ephemeralPublicKey:a,C:c}}default:return[]}}async function cte(r,e,t,i,n,s){switch(r){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:{let{c:a}=i,{n:o,e:c}=e,{d:l,p:d,q:u,u:f}=t;return YZ(a,o,c,l,d,u,f,s)}case y.publicKey.elgamal:{let{c1:a,c2:o}=i,c=e.p,l=t.x;return dee(a,o,c,l,s)}case y.publicKey.ecdh:{let{oid:a,Q:o,kdfParams:c}=e,{d:l}=t,{V:d,C:u}=i;return gN(a,c,d,u.data,o,l,n)}case y.publicKey.x25519:case y.publicKey.x448:{let{A:a}=e,{k:o}=t,{ephemeralPublicKey:c,C:l}=i;if(l.algorithm!==null&&!F.isAES(l.algorithm))throw new Error("AES session key expected");return rN(r,c,l.wrappedKey,a,o)}default:throw new Error("Unknown public key encryption algorithm.")}}function lte(r,e){let t=0;switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{n:i,e:n}}}case y.publicKey.dsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));t+=s.length+2;let a=F.readMPI(e.subarray(t));return t+=a.length+2,{read:t,publicParams:{p:i,q:n,g:s,y:a}}}case y.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));return t+=s.length+2,{read:t,publicParams:{p:i,g:n,y:s}}}case y.publicKey.ecdsa:{let i=new Pa;t+=i.read(e),L1(i);let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{oid:i,Q:n}}}case y.publicKey.eddsaLegacy:{let i=new Pa;if(t+=i.read(e),L1(i),i.getName()!==y.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let n=F.readMPI(e.subarray(t));return t+=n.length+2,n=F.leftPad(n,33),{read:t,publicParams:{oid:i,Q:n}}}case y.publicKey.ecdh:{let i=new Pa;t+=i.read(e),L1(i);let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=new Dw;return t+=s.read(e.subarray(t)),{read:t,publicParams:{oid:i,Q:n,kdfParams:s}}}case y.publicKey.ed25519:case y.publicKey.ed448:case y.publicKey.x25519:case y.publicKey.x448:{let i=F.readExactSubarray(e,t,t+wu(r));return t+=i.length,{read:t,publicParams:{A:i}}}default:throw new Ct("Unknown public key encryption algorithm.")}}function BU(r,e,t){let i=0;switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:{let n=F.readMPI(e.subarray(i));i+=n.length+2;let s=F.readMPI(e.subarray(i));i+=s.length+2;let a=F.readMPI(e.subarray(i));i+=a.length+2;let o=F.readMPI(e.subarray(i));return i+=o.length+2,{read:i,privateParams:{d:n,p:s,q:a,u:o}}}case y.publicKey.dsa:case y.publicKey.elgamal:{let n=F.readMPI(e.subarray(i));return i+=n.length+2,{read:i,privateParams:{x:n}}}case y.publicKey.ecdsa:case y.publicKey.ecdh:{let n=wu(r,t.oid),s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{d:s}}}case y.publicKey.eddsaLegacy:{let n=wu(r,t.oid);if(t.oid.getName()!==y.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{seed:s}}}case y.publicKey.ed25519:case y.publicKey.ed448:{let n=wu(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{seed:s}}}case y.publicKey.x25519:case y.publicKey.x448:{let n=wu(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{k:s}}}default:throw new Ct("Unknown public key encryption algorithm.")}}function dte(r,e){let t=0;switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:return{c:F.readMPI(e.subarray(t))};case y.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return{c1:i,c2:n}}case y.publicKey.ecdh:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=new Sw;return n.read(e.subarray(t)),{V:i,C:n}}case y.publicKey.x25519:case y.publicKey.x448:{let i=wu(r),n=F.readExactSubarray(e,t,t+i);t+=n.length;let s=new _w;return s.read(e.subarray(t)),{ephemeralPublicKey:n,C:s}}default:throw new Ct("Unknown public key encryption algorithm.")}}function Fu(r,e){let t=new Set([y.publicKey.ed25519,y.publicKey.x25519,y.publicKey.ed448,y.publicKey.x448]),i=Object.keys(e).map(n=>{let s=e[n];return F.isUint8Array(s)?t.has(r)?s:F.uint8ArrayToMPI(s):s.write()});return F.concatUint8Array(i)}function ute(r,e,t){switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:return WZ(e,65537).then(({n:i,e:n,d:s,p:a,q:o,u:c})=>({privateParams:{d:s,p:a,q:o,u:c},publicParams:{n:i,e:n}}));case y.publicKey.ecdsa:return uw(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{d:s},publicParams:{oid:new Pa(i),Q:n}}));case y.publicKey.eddsaLegacy:return uw(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{seed:s},publicParams:{oid:new Pa(i),Q:n}}));case y.publicKey.ecdh:return uw(t).then(({oid:i,Q:n,secret:s,hash:a,cipher:o})=>({privateParams:{d:s},publicParams:{oid:new Pa(i),Q:n,kdfParams:new Dw({hash:a,cipher:o})}}));case y.publicKey.ed25519:case y.publicKey.ed448:return t2(r).then(({A:i,seed:n})=>({privateParams:{seed:n},publicParams:{A:i}}));case y.publicKey.x25519:case y.publicKey.x448:return h2(r).then(({A:i,k:n})=>({privateParams:{k:n},publicParams:{A:i}}));case y.publicKey.dsa:case y.publicKey.elgamal:throw new Error("Unsupported algorithm for key generation.");default:throw new Error("Unknown public key algorithm.")}}async function fte(r,e,t){if(!e||!t)throw new Error("Missing key parameters");switch(r){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:{let{n:i,e:n}=e,{d:s,p:a,q:o,u:c}=t;return XZ(i,n,s,a,o,c)}case y.publicKey.dsa:{let{p:i,q:n,g:s,y:a}=e,{x:o}=t;return ate(i,n,s,a,o)}case y.publicKey.elgamal:{let{p:i,g:n,y:s}=e,{x:a}=t;return uee(i,n,s,a)}case y.publicKey.ecdsa:case y.publicKey.ecdh:{let i=ite[y.read(y.publicKey,r)],{oid:n,Q:s}=e,{d:a}=t;return i.validateParams(n,s,a)}case y.publicKey.eddsaLegacy:{let{Q:i,oid:n}=e,{seed:s}=t;return uN(n,i,s)}case y.publicKey.ed25519:case y.publicKey.ed448:{let{A:i}=e,{seed:n}=t;return n2(r,i,n)}case y.publicKey.x25519:case y.publicKey.x448:{let{A:i}=e,{k:n}=t;return A2(r,i,n)}default:throw new Error("Unknown public key algorithm.")}}function Eb(r){let{keySize:e}=Dt(r);return jr(e)}function L1(r){try{r.getName()}catch{throw new Ct("Unknown curve OID")}}function wu(r,e){switch(r){case y.publicKey.ecdsa:case y.publicKey.ecdh:case y.publicKey.eddsaLegacy:return new Li(e).payloadSize;case y.publicKey.ed25519:case y.publicKey.ed448:return sx(r);case y.publicKey.x25519:case y.publicKey.x448:return lx(r);default:throw new Error("Unknown elliptic algo")}}function hte(r,e){switch(r){case y.publicKey.ecdsa:case y.publicKey.eddsaLegacy:return nN(e);case y.publicKey.ed25519:case y.publicKey.ed448:return ax(r);default:throw new Error("Unknown elliptic signing algo")}}function pN(r){let{blockSize:e}=Dt(r),t=jr(e),i=new Uint8Array([t[t.length-2],t[t.length-1]]);return F.concat([t,i])}async function pA(r,e,t,i,n){let s=y.read(y.symmetric,r);if(F.getNodeCrypto()&&hx[s])return pte(r,e,t,i);if(F.isAES(r))return Ate(r,e,t,i);let a=await eN(r),o=new a(e),c=o.blockSize,l=i.slice(),d=new Uint8Array,u=f=>{f&&(d=F.concatUint8Array([d,f]));let A=new Uint8Array(d.length),g,p=0;for(;f?d.length>=c:d.length;){let I=o.encrypt(l);for(g=0;g<c;g++)l[g]=d[g]^I[g],A[p++]=l[g];d=d.subarray(c)}return A.subarray(0,p)};return gr(t,u,u)}async function Ax(r,e,t,i){let n=y.read(y.symmetric,r);if(gA&&hx[n])return mte(r,e,t,i);if(F.isAES(r))return gte(r,e,t,i);let s=await eN(r),a=new s(e),o=a.blockSize,c=i,l=new Uint8Array,d=u=>{u&&(l=F.concatUint8Array([l,u]));let f=new Uint8Array(l.length),A,g=0;for(;u?l.length>=o:l.length;){let p=a.encrypt(c);for(c=l.subarray(0,o),A=0;A<o;A++)f[g++]=c[A]^p[A];l=l.subarray(o)}return f.subarray(0,g)};return gr(t,d,d)}async function Ate(r,e,t,i){if(hw&&await Qw.isSupported(r)){let n=new Qw(r,e,i);return F.isStream(t)?Ab(t,s=>n.encryptChunk(s),()=>n.finish()):n.encrypt(t)}else if(F.isStream(t)){let n=new Fw(!0,r,e,i);return Ab(t,s=>n.processChunk(s),()=>n.finish())}return VR(e,i).encrypt(t)}function gte(r,e,t,i){if(F.isStream(t)){let n=new Fw(!1,r,e,i);return Ab(t,s=>n.processChunk(s),()=>n.finish())}return VR(e,i).decrypt(t)}function XI(r,e){let t=Math.min(r.length,e.length);for(let i=0;i<t;i++)r[i]=r[i]^e[i]}function pte(r,e,t,i){let n=y.read(y.symmetric,r),s=new gA.createCipheriv(hx[n],e,i);return gr(t,a=>new Uint8Array(s.update(a)))}function mte(r,e,t,i){let n=y.read(y.symmetric,r),s=new gA.createDecipheriv(hx[n],e,i);return gr(t,a=>new Uint8Array(s.update(a)))}function vU(r,e){let t=r.length-Ta;for(let i=0;i<Ta;i++)r[i+t]^=e[i];return r}function Ite(r,e,t){if(r.length&&r.length%Ta===0)return vU(r,e);let i=new Uint8Array(r.length+(Ta-r.length%Ta));return i.set(r),i[r.length]=128,vU(i,t)}async function wte(r){let e=await xte(r),t=F.double(await e(Aw)),i=F.double(t);return async function(n){return(await e(Ite(n,t,i))).subarray(-Ta)}}async function xte(r){if(F.getNodeCrypto())return async function(e){let i=new yte.createCipheriv("aes-"+r.length*8+"-cbc",r,Aw).update(e);return new Uint8Array(i)};if(F.getWebCrypto())try{return r=await bU.importKey("raw",r,{name:"AES-CBC",length:r.length*8},!1,["encrypt"]),async function(e){let t=await bU.encrypt({name:"AES-CBC",iv:Aw,length:Ta*8},r,e);return new Uint8Array(t).subarray(0,t.byteLength-Ta)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e){return wb(r,Aw,{disablePadding:!0}).encrypt(e)}}async function bte(r){let e=await wte(r);return function(t,i){return e(F.concatUint8Array([t,i]))}}async function vte(r){if(F.getNodeCrypto())return async function(e,t){let i=new Cte.createCipheriv("aes-"+r.length*8+"-ctr",r,t),n=Ete.concat([i.update(e),i.final()]);return new Uint8Array(n)};if(F.getWebCrypto())try{let e=await kU.importKey("raw",r,{name:"AES-CTR",length:r.length*8},!1,["encrypt"]);return async function(t,i){let n=await kU.encrypt({name:"AES-CTR",counter:i,length:qa*8},e,t);return new Uint8Array(n)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e,t){return See(r,t).encrypt(e)}}async function RA(r,e){if(r!==y.symmetric.aes128&&r!==y.symmetric.aes192&&r!==y.symmetric.aes256)throw new Error("EAX mode supports only AES cipher");let[t,i]=await Promise.all([bte(e),vte(e)]);return{encrypt:async function(n,s,a){let[o,c]=await Promise.all([t(SU,s),t(Bb,a)]),l=await i(n,o),u=await t(bb,l);for(let f=0;f<mu;f++)u[f]^=c[f]^o[f];return F.concatUint8Array([l,u])},decrypt:async function(n,s,a){if(n.length<mu)throw new Error("Invalid EAX ciphertext");let o=n.subarray(0,-mu),c=n.subarray(-mu),[l,d,u]=await Promise.all([t(SU,s),t(Bb,a),t(bb,o)]),f=u;for(let g=0;g<mu;g++)f[g]^=d[g]^l[g];if(!F.equalsUint8Array(c,f))throw new Error("Authentication tag mismatch");return await i(o,l)}}}function DU(r){let e=0;for(let t=1;(r&t)===0;t<<=1)e++;return e}function Pi(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t];return r}function ZI(r,e){return Pi(r.slice(),e)}async function NA(r,e){let{keySize:t}=Dt(r);if(!F.isAES(r)||e.length!==t)throw new Error("Unexpected algorithm or key size");let i=0,n=u=>wb(e,Wh,{disablePadding:!0}).encrypt(u),s=u=>wb(e,Wh,{disablePadding:!0}).decrypt(u),a;o();function o(){let u=n(Wh),f=F.double(u);a=[],a[0]=F.double(f),a.x=u,a.$=f}function c(u,f){let A=F.nbits(Math.max(u.length,f.length)/Ci|0)-1;for(let g=i+1;g<=A;g++)a[g]=F.double(a[g-1]);i=A}function l(u){if(!u.length)return Wh;let f=u.length/Ci|0,A=new Uint8Array(Ci),g=new Uint8Array(Ci);for(let p=0;p<f;p++)Pi(A,a[DU(p+1)]),Pi(g,n(ZI(A,u))),u=u.subarray(Ci);if(u.length){Pi(A,a.x);let p=new Uint8Array(Ci);p.set(u,0),p[u.length]=128,Pi(p,A),Pi(g,n(p))}return g}function d(u,f,A,g){let p=f.length/Ci|0;c(f,g);let I=F.concatUint8Array([Wh.subarray(0,mN-A.length),kte,A]),m=I[Ci-1]&63;I[Ci-1]&=192;let w=n(I),B=F.concatUint8Array([w,ZI(w.subarray(0,8),w.subarray(1,9))]),C=F.shiftRight(B.subarray(0+(m>>3),17+(m>>3)),8-(m&7)).subarray(1),x=new Uint8Array(Ci),_=new Uint8Array(f.length+ec),R,U=0;for(R=0;R<p;R++)Pi(C,a[DU(R+1)]),_.set(Pi(u(ZI(C,f)),C),U),Pi(x,u===n?f:_.subarray(U)),f=f.subarray(Ci),U+=Ci;if(f.length){Pi(C,a.x);let D=n(C);_.set(ZI(f,D),U);let b=new Uint8Array(Ci);b.set(u===n?f:_.subarray(U,-ec),0),b[f.length]=128,Pi(x,b),U+=f.length}let T=Pi(n(Pi(Pi(x,C),a.$)),l(g));return _.set(T,U),_}return{encrypt:async function(u,f,A){return d(n,u,f,A)},decrypt:async function(u,f,A){if(u.length<ec)throw new Error("Invalid OCB ciphertext");let g=u.subarray(-ec);u=u.subarray(0,-ec);let p=d(s,u,f,A);if(F.equalsUint8Array(g,p.subarray(-ec)))return p.subarray(0,-ec);throw new Error("Authentication tag mismatch")}}}async function Pu(r,e){if(r!==y.symmetric.aes128&&r!==y.symmetric.aes192&&r!==y.symmetric.aes256)throw new Error("GCM mode supports only AES cipher");if(F.getNodeCrypto())return{encrypt:async function(t,i,n=new Uint8Array){let s=new _U.createCipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n);let a=QU.concat([s.update(t),s.final(),s.getAuthTag()]);return new Uint8Array(a)},decrypt:async function(t,i,n=new Uint8Array){let s=new _U.createDecipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n),s.setAuthTag(t.slice(t.length-yu,t.length));let a=QU.concat([s.update(t.slice(0,t.length-yu)),s.final()]);return new Uint8Array(a)}};if(F.getWebCrypto())try{let t=await K1.importKey("raw",e,{name:G1},!1,["encrypt","decrypt"]),i=navigator.userAgent.match(/Version\/13\.\d(\.\d)* Safari/)||navigator.userAgent.match(/Version\/(13|14)\.\d(\.\d)* Mobile\/\S* Safari/);return{encrypt:async function(n,s,a=new Uint8Array){if(i&&!n.length)return WI(e,s,a).encrypt(n);let o=await K1.encrypt({name:G1,iv:s,additionalData:a,tagLength:yu*8},t,n);return new Uint8Array(o)},decrypt:async function(n,s,a=new Uint8Array){if(i&&n.length===yu)return WI(e,s,a).decrypt(n);try{let o=await K1.decrypt({name:G1,iv:s,additionalData:a,tagLength:yu*8},t,n);return new Uint8Array(o)}catch(o){if(o.name==="OperationError")throw new Error("Authentication tag mismatch")}}}}catch(t){if(t.name!=="NotSupportedError"&&!(e.length===24&&t.name==="OperationError"))throw t;F.printDebugError("Browser did not support operation: "+t.message)}return{encrypt:async function(t,i,n){return WI(e,i,n).encrypt(t)},decrypt:async function(t,i,n){return WI(e,i,n).decrypt(t)}}}function Ua(r,e=!1){switch(r){case y.aead.eax:return RA;case y.aead.ocb:return NA;case y.aead.gcm:return Pu;case y.aead.experimentalGCM:if(!e)throw new Error("Unexpected non-standard `experimentalGCM` AEAD algorithm provided in `config.preferredAEADAlgorithm`: use `gcm` instead");return Pu;default:throw new Error("Unsupported AEAD mode")}}function _te(r,e){let t=0;switch(r){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:case y.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));return t+=i.length+2,{read:t,signatureParams:{s:i}}}case y.publicKey.dsa:case y.publicKey.ecdsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case y.publicKey.eddsaLegacy:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case y.publicKey.ed25519:case y.publicKey.ed448:{let i=2*sx(r),n=F.readExactSubarray(e,t,t+i);return t+=n.length,{read:t,signatureParams:{RS:n}}}default:throw new Ct("Unknown signature algorithm.")}}async function Qte(r,e,t,i,n,s){switch(r){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:case y.publicKey.rsaSign:{let{n:a,e:o}=i,c=F.leftPad(t.s,a.length);return $Z(e,n,c,a,o,s)}case y.publicKey.dsa:{let{g:a,p:o,q:c,y:l}=i,{r:d,s:u}=t;return ste(e,d,u,s,a,o,c,l)}case y.publicKey.ecdsa:{let{oid:a,Q:o}=i,c=new Li(a).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return m2(a,e,{r:l,s:d},n,o,s)}case y.publicKey.eddsaLegacy:{let{oid:a,Q:o}=i,c=new Li(a).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return dN(a,e,{r:l,s:d},n,o,s)}case y.publicKey.ed25519:case y.publicKey.ed448:{let{A:a}=i;return i2(r,e,t,n,a,s)}default:throw new Error("Unknown signature algorithm.")}}async function Fte(r,e,t,i,n,s){if(!t||!i)throw new Error("Missing key parameters");switch(r){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:case y.publicKey.rsaSign:{let{n:a,e:o}=t,{d:c,p:l,q:d,u}=i;return{s:await jZ(e,n,a,o,c,l,d,u,s)}}case y.publicKey.dsa:{let{g:a,p:o,q:c}=t,{x:l}=i;return nte(e,s,a,o,c,l)}case y.publicKey.elgamal:throw new Error("Signing with Elgamal is not defined in the OpenPGP standard.");case y.publicKey.ecdsa:{let{oid:a,Q:o}=t,{d:c}=i;return p2(a,e,n,o,c,s)}case y.publicKey.eddsaLegacy:{let{oid:a,Q:o}=t,{seed:c}=i;return lN(a,e,n,o,c,s)}case y.publicKey.ed25519:case y.publicKey.ed448:{let{A:a}=t,{seed:o}=i;return r2(r,e,n,a,o,s)}default:throw new Error("Unknown signature algorithm.")}}function Pw(r,e=me){switch(r){case y.s2k.argon2:return new vb(e);case y.s2k.iterated:case y.s2k.gnu:case y.s2k.salted:case y.s2k.simple:return new kb(r,e);default:throw new Ct("Unsupported S2K type")}}function yN(r){let{s2kType:e}=r;if(!Nte.has(e))throw new Error("The provided `config.s2kType` value is not allowed");return Pw(e,r)}function St(r,e,t){let i=[];return i.push(nx(t.length+1)),i.push(new Uint8Array([(e?128:0)|r])),i.push(t),F.concat(i)}function $1(r){switch(r){case y.hash.sha256:return 16;case y.hash.sha384:return 24;case y.hash.sha512:return 32;case y.hash.sha224:return 16;case y.hash.sha3_256:return 16;case y.hash.sha3_512:return 32;default:throw new Error("Unsupported hash function")}}function ire(r,e){if(!e[r]){let t;try{t=y.read(y.packet,r)}catch{throw new Bu(`Unknown packet type with tag: ${r}`)}throw new Error(`Packet not allowed in this context: ${t}`)}return new e[r]}function sre(r){let t=Xn(r);return new ReadableStream({async pull(i){try{let{value:n,done:s}=await t.read();if(s){i.close();return}for(let a=0;a<=n.length;a+=65536)(!a||a<n.length)&&i.enqueue(n.subarray(a,a+65536))}catch(n){i.error(n)}}},{highWaterMark:0})}function Uw(r,e){return t=>{let i;if(Ot(t)?i=new ReadableStream({async start(c){try{c.enqueue(await cr(t)),c.close()}catch(l){c.error(l)}}}):pr(t)?i=t:i=FA(t),i=sre(i),r)try{let c=r();return i.pipeThrough(c)}catch(c){if(c.name!=="TypeError")throw c}let n=Xn(i),s=new e,a=!1,o=!1;return new ReadableStream({start(c){s.ondata=(l,d)=>{c.enqueue(l),a=!0,d&&(c.close(),o=!0)}},async pull(){for(a=!1;!a&&!o;){let{done:c,value:l}=await n.read();if(c){s.push(new Uint8Array,!0);return}else l.length&&s.push(l)}}},{highWaterMark:0})}}function are(){return async function(r){let{default:e}=await Promise.resolve().then(function(){return Use});return e(FA(r))}}async function Nw(r,e,t,i){let n=r instanceof Uu&&r.version===2,s=!n&&r.constructor.tag===y.packet.aeadEncryptedData;if(!n&&!s)throw new Error("Unexpected packet type");let a=Ua(r.aeadAlgorithm,s),o=e==="decrypt"?a.tagLength:0,c=e==="encrypt"?a.tagLength:0,l=2**(r.chunkSizeByte+6)+o,d=s?8:0,u=new ArrayBuffer(13+d),f=new Uint8Array(u,0,5+d),A=new Uint8Array(u),g=new DataView(u),p=new Uint8Array(u,5,8);f.set([192|r.constructor.tag,r.version,r.cipherAlgorithm,r.aeadAlgorithm,r.chunkSizeByte],0);let I=0,m=Promise.resolve(),w=0,B=0,C,x;if(n){let{keySize:R}=Dt(r.cipherAlgorithm),{ivLength:U}=a,T=new Uint8Array(u,0,5),D=await oc(y.hash.sha256,t,r.salt,T,R+U);t=D.subarray(0,R),C=D.subarray(R),C.fill(0,C.length-8),x=new DataView(C.buffer,C.byteOffset,C.byteLength)}else C=r.iv;let _=await a(r.cipherAlgorithm,t);return dc(i,async(R,U)=>{if(F.isStream(R)!=="array"){let b=new TransformStream({},{highWaterMark:F.getHardwareConcurrency()*2**(r.chunkSizeByte+6),size:Q=>Q.length});qu(b.readable,U),U=b.writable}let T=Xn(R),D=an(U);try{for(;;){let b=await T.readBytes(l+o)||new Uint8Array,Q=b.subarray(b.length-o);b=b.subarray(0,b.length-o);let v,E,P;if(n)P=C;else{P=C.slice();for(let N=0;N<8;N++)P[C.length-8+N]^=p[N]}if(!I||b.length?(T.unshift(Q),v=_[e](b,P,f),v.catch(()=>{}),B+=b.length-o+c):(g.setInt32(5+d+4,w),v=_[e](Q,P,A),v.catch(()=>{}),B+=c,E=!0),w+=b.length-o,m=m.then(()=>v).then(async N=>{await D.ready,await D.write(N),B-=N.length}).catch(N=>D.abort(N)),(E||B>D.desiredSize)&&await m,!E)n?x.setInt32(C.length-4,++I):g.setInt32(9,++I);else{await D.close();break}}}catch(b){await D.ready.catch(()=>{}),await D.abort(b)}})}function OU(r,e,t,i){switch(e){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.elgamal:case y.publicKey.ecdh:return F.concatUint8Array([new Uint8Array(r===6?[]:[t]),i,F.writeChecksum(i.subarray(i.length%8))]);case y.publicKey.x25519:case y.publicKey.x448:return i;default:throw new Error("Unsupported public key algorithm")}}function ure(r,e,t,i){switch(e){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.elgamal:case y.publicKey.ecdh:{let n=t.subarray(0,t.length-2),s=t.subarray(t.length-2),a=F.writeChecksum(n.subarray(n.length%8)),o=a[0]===s[0]&a[1]===s[1],c=r===6?{sessionKeyAlgorithm:null,sessionKey:n}:{sessionKeyAlgorithm:n[0],sessionKey:n.subarray(1)};if(i){let l=o&c.sessionKeyAlgorithm===i.sessionKeyAlgorithm&c.sessionKey.length===i.sessionKey.length;return{sessionKey:F.selectUint8Array(l,c.sessionKey,i.sessionKey),sessionKeyAlgorithm:r===6?null:F.selectUint8(l,c.sessionKeyAlgorithm,i.sessionKeyAlgorithm)}}else{if(o&&(r===6||y.read(y.symmetric,c.sessionKeyAlgorithm)))return c;throw new Error("Decryption error")}}case y.publicKey.x25519:case y.publicKey.x448:return{sessionKeyAlgorithm:null,sessionKey:t};default:throw new Error("Unsupported public key algorithm")}}async function V1(r,e,t,i,n,s,a,o){if(e.type==="argon2"&&!n)throw new Error("Using Argon2 S2K without AEAD is not allowed");if(e.type==="simple"&&r===6)throw new Error("Using Simple S2K with version 6 keys is not allowed");let{keySize:c}=Dt(i),l=await e.produceKey(t,c,o);if(!n||r===5||a)return l;let d=F.concatUint8Array([s,new Uint8Array([r,i,n])]);return oc(y.hash.sha256,l,new Uint8Array,d,c)}async function bN(r,e){let t=new Mw(r.date,e);return t.packets=null,t.algorithm=y.write(y.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve),await t.computeFingerprintAndKeyID(),t}async function hre(r,e){let t=new wA(r.date,e);return t.packets=null,t.algorithm=y.write(y.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve,r.config),await t.computeFingerprintAndKeyID(),t}async function $n(r,e,t,i,n=new Date,s){let a,o;for(let c=r.length-1;c>=0;c--)try{(!a||r[c].created>=a.created)&&(await r[c].verify(e,t,i,n,void 0,s),a=r[c])}catch(l){o=l}if(!a)throw F.wrapError(`Could not find valid ${y.read(y.signature,t)} signature in key ${e.getKeyID().toHex()}`.replace("certGeneric ","self-").replace(/([a-z])([A-Z])/g,(c,l,d)=>l+" "+d.toLowerCase()),o);return a}function Ub(r,e,t=new Date){let i=F.normalizeDate(t);if(i!==null){let n=Hw(r,e);return!(r.created<=i&&i<n)}return!1}async function vN(r,e,t,i){let n={};n.key=e,n.bind=r;let s={signatureType:y.signature.subkeyBinding};return t.sign?(s.keyFlags=[y.keyFlags.signData],s.embeddedSignature=await Ts(n,[],r,{signatureType:y.signature.keyBinding},t.date,void 0,void 0,void 0,i)):s.keyFlags=[y.keyFlags.encryptCommunication|y.keyFlags.encryptStorage],t.keyExpirationTime>0&&(s.keyExpirationTime=t.keyExpirationTime,s.keyNeverExpires=!1),await Ts(n,[],e,s,t.date,void 0,void 0,void 0,i)}async function Are(r,e,t=new Date,i=[],n){let s=y.hash.sha256,a=n.preferredHashAlgorithm,o=await Promise.all(r.map(async(f,A)=>(await f.getPrimarySelfSignature(t,i[A],n)).preferredHashAlgorithms||[])),c=new Map;for(let f of o)for(let A of f)try{let g=y.write(y.hash,A);c.set(g,c.has(g)?c.get(g)+1:1)}catch{}let l=f=>r.length===0||c.get(f)===r.length||f===s,d=()=>{if(c.size===0)return s;let A=Array.from(c.keys()).filter(g=>l(g)).sort((g,p)=>vr(g)-vr(p))[0];return vr(A)>=vr(s)?A:s};if(new Set([y.publicKey.ecdsa,y.publicKey.eddsaLegacy,y.publicKey.ed25519,y.publicKey.ed448]).has(e.algorithm)){let f=hte(e.algorithm,e.publicParams.oid),A=l(a),g=vr(a)>=vr(f);if(A&&g)return a;{let p=d();return vr(p)>=vr(f)?p:f}}return l(a)?a:d()}async function gre(r=[],e=new Date,t=[],i=me){let n=y.compression.uncompressed,s=i.preferredCompressionAlgorithm;return(await Promise.all(r.map(async function(o,c){let d=(await o.getPrimarySelfSignature(e,t[c],i)).preferredCompressionAlgorithms;return!!d&&d.indexOf(s)>=0}))).every(Boolean)?s:n}async function pre(r=[],e=new Date,t=[],i=me){let n=await Promise.all(r.map((c,l)=>c.getPrimarySelfSignature(e,t[l],i)));if(r.length?n.every(c=>c.features&&c.features[0]&y.features.seipdv2):i.aeadProtect){let c={symmetricAlgo:y.symmetric.aes128,aeadAlgo:y.aead.ocb},l=[{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:i.preferredAEADAlgorithm},{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:y.aead.ocb},{symmetricAlgo:y.symmetric.aes128,aeadAlgo:i.preferredAEADAlgorithm}];for(let d of l)if(n.every(u=>u.preferredCipherSuites&&u.preferredCipherSuites.some(f=>f[0]===d.symmetricAlgo&&f[1]===d.aeadAlgo)))return d;return c}let a=y.symmetric.aes128,o=i.preferredSymmetricAlgorithm;return{symmetricAlgo:n.every(c=>c.preferredSymmetricAlgorithms&&c.preferredSymmetricAlgorithms.includes(o))?o:a,aeadAlgo:void 0}}async function Ts(r,e,t,i,n,s,a=[],o=!1,c){if(t.isDummy())throw new Error("Cannot sign with a gnu-dummy key.");if(!t.isDecrypted())throw new Error("Signing key is not decrypted.");let l=new $r;return Object.assign(l,i),l.publicKeyAlgorithm=t.algorithm,l.hashAlgorithm=await Are(e,t,n,s,c),l.rawNotations=[...a],await l.sign(t,r,n,o,c),l}async function El(r,e,t,i=new Date,n){r=r[t],r&&(e[t].length?await Promise.all(r.map(async function(s){!s.isExpired(i)&&(!n||await n(s))&&!e[t].some(function(a){return F.equalsUint8Array(a.writeParams(),s.writeParams())})&&e[t].push(s)})):e[t]=r)}async function Ru(r,e,t,i,n,s,a=new Date,o){s=s||r;let c=[];return await Promise.all(i.map(async function(l){try{if(!n||l.issuerKeyID.equals(n.issuerKeyID)){let d=![y.reasonForRevocation.keyRetired,y.reasonForRevocation.keySuperseded,y.reasonForRevocation.userIDInvalid].includes(l.reasonForRevocationFlag);await l.verify(s,e,t,d?null:a,!1,o),c.push(l.issuerKeyID)}}catch{}})),n?(n.revoked=c.some(l=>l.equals(n.issuerKeyID))?!0:n.revoked||!1,n.revoked):c.length>0}function Hw(r,e){let t;return e.keyNeverExpires===!1&&(t=r.created.getTime()+e.keyExpirationTime*1e3),t?new Date(t):1/0}function Rb(r,e={}){switch(r.type=r.type||e.type,r.curve=r.curve||e.curve,r.rsaBits=r.rsaBits||e.rsaBits,r.keyExpirationTime=r.keyExpirationTime!==void 0?r.keyExpirationTime:e.keyExpirationTime,r.passphrase=F.isString(r.passphrase)?r.passphrase:e.passphrase,r.date=r.date||e.date,r.sign=r.sign||!1,r.type){case"ecc":try{r.curve=y.write(y.curve,r.curve)}catch{throw new Error("Unknown curve")}(r.curve===y.curve.ed25519Legacy||r.curve===y.curve.curve25519Legacy||r.curve==="ed25519"||r.curve==="curve25519")&&(r.curve=r.sign?y.curve.ed25519Legacy:y.curve.curve25519Legacy),r.sign?r.algorithm=r.curve===y.curve.ed25519Legacy?y.publicKey.eddsaLegacy:y.publicKey.ecdsa:r.algorithm=y.publicKey.ecdh;break;case"curve25519":r.algorithm=r.sign?y.publicKey.ed25519:y.publicKey.x25519;break;case"curve448":r.algorithm=r.sign?y.publicKey.ed448:y.publicKey.x448;break;case"rsa":r.algorithm=y.publicKey.rsaEncryptSign;break;default:throw new Error(`Unsupported key type ${r.type}`)}return r}function qU(r,e,t){switch(r.algorithm){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:case y.publicKey.dsa:case y.publicKey.ecdsa:case y.publicKey.eddsaLegacy:case y.publicKey.ed25519:case y.publicKey.ed448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&y.keyFlags.signData)!==0;default:return!1}}function MU(r,e,t){switch(r.algorithm){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:case y.publicKey.elgamal:case y.publicKey.ecdh:case y.publicKey.x25519:case y.publicKey.x448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&y.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&y.keyFlags.encryptStorage)!==0;default:return!1}}function LU(r,e,t){if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");switch(r.algorithm){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaEncrypt:case y.publicKey.elgamal:case y.publicKey.ecdh:case y.publicKey.x25519:case y.publicKey.x448:return(!e.keyFlags||(e.keyFlags[0]&y.keyFlags.signData)!==0)&&t.allowInsecureDecryptionWithSigningKeys?!0:!e.keyFlags||(e.keyFlags[0]&y.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&y.keyFlags.encryptStorage)!==0;default:return!1}}function rc(r,e){let t=y.write(y.publicKey,r.algorithm),i=r.getAlgorithmInfo();if(e.rejectPublicKeyAlgorithms.has(t))throw new Error(`${i.algorithm} keys are considered too weak.`);switch(t){case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:case y.publicKey.rsaEncrypt:if(i.bits<e.minRSABits)throw new Error(`RSA keys shorter than ${e.minRSABits} bits are considered too weak.`);break;case y.publicKey.ecdsa:case y.publicKey.eddsaLegacy:case y.publicKey.ecdh:if(e.rejectCurves.has(i.curve))throw new Error(`Support for ${i.algorithm} keys using curve ${i.curve} is disabled.`);break}}function yre(r){switch(y.write(y.publicKey,r)){case y.publicKey.rsaEncrypt:case y.publicKey.rsaEncryptSign:case y.publicKey.rsaSign:case y.publicKey.dsa:return"rsa";case y.publicKey.ecdsa:case y.publicKey.eddsaLegacy:return"ecc";case y.publicKey.ed25519:return"curve25519";case y.publicKey.ed448:return"curve448";default:throw new Error("Unsupported algorithm")}}async function wre(r,e){r.sign=!0,r=Rb(r),r.subkeys=r.subkeys.map((a,o)=>Rb(r.subkeys[o],r));let t=[hre(r,e)];t=t.concat(r.subkeys.map(a=>bN(a,e)));let i=await Promise.all(t),n=await xre(i[0],i.slice(1),r,e),s=await n.getRevocationCertificate(r.date,e);return n.revocationSignatures=[],{key:n,revocationCertificate:s}}async function xre(r,e,t,i){t.passphrase&&await r.encrypt(t.passphrase,i),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l].passphrase;d&&await c.encrypt(d,i)}));let n=new Ft;n.push(r);function s(c,l){return[l,...c.filter(d=>d!==l)]}function a(){let c={};c.keyFlags=[y.keyFlags.certifyKeys|y.keyFlags.signData];let l=s([y.symmetric.aes256,y.symmetric.aes128],i.preferredSymmetricAlgorithm);if(c.preferredSymmetricAlgorithms=l,i.aeadProtect){let d=s([y.aead.gcm,y.aead.eax,y.aead.ocb],i.preferredAEADAlgorithm);c.preferredCipherSuites=d.flatMap(u=>l.map(f=>[f,u]))}return c.preferredHashAlgorithms=s([y.hash.sha512,y.hash.sha256,y.hash.sha3_512,y.hash.sha3_256],i.preferredHashAlgorithm),c.preferredCompressionAlgorithms=s([y.compression.uncompressed,y.compression.zlib,y.compression.zip],i.preferredCompressionAlgorithm),c.features=[0],c.features[0]|=y.features.modificationDetection,i.aeadProtect&&(c.features[0]|=y.features.seipdv2),t.keyExpirationTime>0&&(c.keyExpirationTime=t.keyExpirationTime,c.keyNeverExpires=!1),c}if(r.version===6){let c={key:r},l=a();l.signatureType=y.signature.key;let d=await Ts(c,[],r,l,t.date,void 0,t.signatureNotations,void 0,i);n.push(d)}await Promise.all(t.userIDs.map(async function(c,l){let d=qw.fromObject(c),u={userID:d,key:r},f=r.version!==6?a():{};f.signatureType=y.signature.certPositive,l===0&&(f.isPrimaryUserID=!0);let A=await Ts(u,[],r,f,t.date,void 0,t.signatureNotations,void 0,i);return{userIDPacket:d,signaturePacket:A}})).then(c=>{c.forEach(({userIDPacket:l,signaturePacket:d})=>{n.push(l),n.push(d)})}),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l],u=await vN(c,r,d,i);return{secretSubkeyPacket:c,subkeySignaturePacket:u}})).then(c=>{c.forEach(({secretSubkeyPacket:l,subkeySignaturePacket:d})=>{n.push(l),n.push(d)})});let o={key:r};return n.push(await Ts(o,[],r,{signatureType:y.signature.keyRevocation,reasonForRevocationFlag:y.reasonForRevocation.noReason,reasonForRevocationString:""},t.date,void 0,void 0,void 0,i)),t.passphrase&&r.clearPrivateParams(),e.map(function(c,l){t.subkeys[l].passphrase&&c.clearPrivateParams()}),new zw(n)}async function mx({armoredKey:r,binaryKey:e,config:t,...i}){if(t={...me,...t},!r&&!e)throw new Error("readPrivateKey: must pass options object containing `armoredKey` or `binaryKey`");if(r&&!F.isString(r))throw new Error("readPrivateKey: options.armoredKey must be a string");if(e&&!F.isUint8Array(e))throw new Error("readPrivateKey: options.binaryKey must be a Uint8Array");let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);let s;if(r){let{type:c,data:l}=await ix(r);if(c!==y.armor.privateKey)throw new Error("Armored text not of type private key");s=l}else s=e;let a=await Ft.fromBinary(s,Ire,t),o=a.indexOfTag(y.packet.publicKey,y.packet.secretKey);for(let c=0;c<o.length;c++){if(a[o[c]].constructor.tag===y.packet.publicKey)continue;let l=a.slice(o[c],o[c+1]);return new zw(l)}throw new Error("No secret key packet found")}async function GU(r,e,t=[],i=null,n=[],s=new Date,a=[],o=[],c=[],l=!1,d=me){let u=new Ft,f=r.text===null?y.signature.binary:y.signature.text;if(await Promise.all(e.map(async(A,g)=>{let p=a[g];if(!A.isPrivate())throw new Error("Need private key for signing");let I=await A.getSigningKey(n[g],s,p,d);return Ts(r,t.length?t:[A],I.keyPacket,{signatureType:f},s,o,c,l,d)})).then(A=>{u.push(...A)}),i){let A=i.packets.filterByTag(y.packet.signature);u.push(...A)}return u}function bre(r,e,t,i=new Date,n=!1,s=me){let a,o;for(let u of t){let f=u.getKeys(r.issuerKeyID);if(f.length>0){a=u,o=f[0];break}}let l=r instanceof bn?r.correspondingSig:r,d={keyID:r.issuerKeyID,verified:(async()=>{if(!o)throw new Error(`Could not find signing key with key ID ${r.issuerKeyID.toHex()}`);await r.verify(o.keyPacket,r.signatureType,e[0],i,n,s);let u=await l;if(o.getCreationTime()>u.created)throw new Error("Key is newer than the signature");try{await a.getSigningKey(o.getKeyID(),u.created,void 0,s)}catch(f){if(s.allowInsecureVerificationWithReformattedKeys&&f.message.match(/Signature creation time is in the future/))await a.getSigningKey(o.getKeyID(),i,void 0,s);else throw f}return!0})(),signature:(async()=>{let u=await l,f=new Ft;return u&&f.push(u),new Lw(f)})()};return d.signature.catch(()=>{}),d.verified.catch(()=>{}),d}function Y1(r,e,t,i=new Date,n=!1,s=me){return r.filter(a=>["text","binary"].includes(y.read(y.signature,a.signatureType))).map(a=>bre(a,e,t,i,n,s))}async function OA({armoredMessage:r,binaryMessage:e,config:t,...i}){t={...me,...t};let n=r||e;if(!n)throw new Error("readMessage: must pass options object containing `armoredMessage` or `binaryMessage`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("readMessage: options.armoredMessage must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("readMessage: options.binaryMessage must be a Uint8Array or stream");let s=Object.keys(i);if(s.length>0)throw new Error(`Unknown option: ${s.join(", ")}`);let a=F.isStream(n);if(r){let{type:l,data:d}=await ix(n);if(l!==y.armor.message)throw new Error("Armored text not of type message");n=d}let o=await Ft.fromBinary(n,Cre,t,new Tu),c=new CA(o);return c.fromStream=a,c}async function kN({text:r,binary:e,filename:t,date:i=new Date,format:n=r!==void 0?"utf8":"binary",...s}){let a=r!==void 0?r:e;if(a===void 0)throw new Error("createMessage: must pass options object containing `text` or `binary`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("createMessage: options.text must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("createMessage: options.binary must be a Uint8Array or stream");let o=Object.keys(s);if(o.length>0)throw new Error(`Unknown option: ${o.join(", ")}`);let c=F.isStream(a),l=new lc(i);r!==void 0?l.setText(a,y.write(y.literal,n)):l.setBytes(a,y.write(y.literal,n)),t!==void 0&&l.setFilename(t);let d=new Ft;d.push(l);let u=new CA(d);return u.fromStream=c,u}async function x2({userIDs:r=[],passphrase:e,type:t,curve:i,rsaBits:n=4096,keyExpirationTime:s=0,date:a=new Date,subkeys:o=[{}],format:c="armored",signatureNotations:l=[],config:d,...u}){d={...me,...d},qA(d),!t&&!i?(t=d.v6Keys?"curve25519":"ecc",i="curve25519Legacy"):(t=t||"ecc",i=i||"curve25519Legacy"),r=di(r),l=di(l);let f=Object.keys(u);if(f.length>0)throw new Error(`Unknown option: ${f.join(", ")}`);if(r.length===0&&!d.v6Keys)throw new Error("UserIDs are required for V4 keys");if(t==="rsa"&&n<d.minRSABits)throw new Error(`rsaBits should be at least ${d.minRSABits}, got: ${n}`);let A={userIDs:r,passphrase:e,type:t,rsaBits:n,curve:i,keyExpirationTime:s,date:a,subkeys:o,signatureNotations:l};try{let{key:g,revocationCertificate:p}=await wre(A,d);return g.getKeys().forEach(({keyPacket:I})=>rc(I,d)),{privateKey:zU(g,c,d),publicKey:zU(g.toPublic(),c,d),revocationCertificate:p}}catch(g){throw F.wrapError("Error generating keypair",g)}}async function yx({privateKey:r,passphrase:e,config:t,...i}){t={...me,...t},qA(t);let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);if(!r.isPrivate())throw new Error("Cannot decrypt a public key");let s=r.clone(!0),a=F.isArray(e)?e:[e];try{return await Promise.all(s.getKeys().map(o=>F.anyPromise(a.map(c=>o.keyPacket.decrypt(c,t))))),await s.validate(t),s}catch(o){throw s.clearPrivateParams(),F.wrapError("Error decrypting private key",o)}}async function SN({message:r,encryptionKeys:e,signingKeys:t,passwords:i,sessionKey:n,format:s="armored",signature:a=null,wildcard:o=!1,signingKeyIDs:c=[],encryptionKeyIDs:l=[],date:d=new Date,signingUserIDs:u=[],encryptionUserIDs:f=[],signatureNotations:A=[],config:g,...p}){if(g={...me,...g},qA(g),C2(r),vre(s),e=di(e),t=di(t),i=di(i),c=di(c),l=di(l),u=di(u),f=di(f),A=di(A),p.detached)throw new Error("The `detached` option has been removed from openpgp.encrypt, separately call openpgp.sign instead. Don't forget to remove the `privateKeys` option as well.");if(p.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.encrypt, pass `encryptionKeys` instead");if(p.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.encrypt, pass `signingKeys` instead");if(p.armor!==void 0)throw new Error("The `armor` option has been removed from openpgp.encrypt, pass `format` instead.");let I=Object.keys(p);if(I.length>0)throw new Error(`Unknown option: ${I.join(", ")}`);t||(t=[]);try{if((t.length||a)&&(r=await r.sign(t,e,a,c,d,u,l,A,g)),r=r.compress(await gre(e,d,f,g),g),r=await r.encrypt(e,i,n,o,l,d,f,g),s==="object")return r;let w=s==="armored"?r.armor(g):r.write();return await _N(w)}catch(m){throw F.wrapError("Error encrypting message",m)}}async function Ix({message:r,decryptionKeys:e,passwords:t,sessionKeys:i,verificationKeys:n,expectSigned:s=!1,format:a="utf8",signature:o=null,date:c=new Date,config:l,...d}){if(l={...me,...l},qA(l),C2(r),n=di(n),e=di(e),t=di(t),i=di(i),d.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decrypt, pass `decryptionKeys` instead");if(d.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.decrypt, pass `verificationKeys` instead");let u=Object.keys(d);if(u.length>0)throw new Error(`Unknown option: ${u.join(", ")}`);try{let f=await r.decrypt(e,t,i,c,l);n||(n=[]);let A={};if(A.signatures=o?await f.verifyDetached(o,n,c,l):await f.verify(n,c,l),A.data=a==="binary"?f.getLiteralData():f.getText(),A.filename=f.getFilename(),Sre(A,r,...new Set([f,f.unwrapCompressed()])),s){if(n.length===0)throw new Error("Verification keys are required to verify message signatures");if(A.signatures.length===0)throw new Error("Message is not signed");A.data=Ei([A.data,Fl(async()=>(await F.anyPromise(A.signatures.map(g=>g.verified)),a==="binary"?new Uint8Array:""))])}return A.data=await _N(A.data),A}catch(f){throw F.wrapError("Error decrypting message",f)}}async function DN({message:r,decryptionKeys:e,passwords:t,date:i=new Date,config:n,...s}){if(n={...me,...n},qA(n),C2(r),e=di(e),t=di(t),s.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decryptSessionKeys, pass `decryptionKeys` instead");let a=Object.keys(s);if(a.length>0)throw new Error(`Unknown option: ${a.join(", ")}`);try{return await r.decryptSessionKeys(e,t,void 0,i,n)}catch(o){throw F.wrapError("Error decrypting session keys",o)}}function C2(r){if(!(r instanceof CA))throw new Error("Parameter [message] needs to be of type Message")}function vre(r){if(r!=="armored"&&r!=="binary"&&r!=="object")throw new Error(`Unsupported format ${r}`)}function qA(r){let e=Object.keys(r);if(e.length!==kre){for(let t of e)if(me[t]===void 0)throw new Error(`Unknown config property: ${t}`)}}function di(r){return r&&!F.isArray(r)&&(r=[r]),r}async function _N(r){return F.isStream(r)==="array"?cr(r):r}function Sre(r,e,...t){r.data=dc(e.packets.stream,async(i,n)=>{await qu(r.data,n,{preventClose:!0});let s=an(n);try{await cr(i,a=>a),await Promise.all(t.map(a=>cr(a.packets.stream,o=>o))),await s.close()}catch(a){await s.abort(a)}})}function zU(r,e,t){switch(e){case"object":return r;case"armored":return r.armor(t);case"binary":return r.write();default:throw new Error(`Unsupported format ${e}`)}}function MA(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function EA(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Ns(r,...e){if(!MA(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function QN(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");EA(r.outputLen),EA(r.blockLen)}function Nu(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function FN(r,e){Ns(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Dre(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function vn(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function W1(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Es(r,e){return r<<32-e|r>>>e}function nc(r,e){return r<<e|r>>>32-e>>>0}function Qre(r){return r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255}function Fre(r){for(let e=0;e<r.length;e++)r[e]=Qre(r[e]);return r}function Bl(r){if(Ns(r),PN)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=Pre[r[t]];return e}function jU(r){if(r>=Ba._0&&r<=Ba._9)return r-Ba._0;if(r>=Ba.A&&r<=Ba.F)return r-(Ba.A-10);if(r>=Ba.a&&r<=Ba.f)return r-(Ba.a-10)}function Jw(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(PN)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let i=new Uint8Array(t);for(let n=0,s=0;n<t;n++,s+=2){let a=jU(r.charCodeAt(s)),o=jU(r.charCodeAt(s+1));if(a===void 0||o===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}i[n]=a*16+o}return i}function Tre(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function LA(r){return typeof r=="string"&&(r=Tre(r)),Ns(r),r}function Vn(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];Ns(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function Ma(r){let e=i=>r().update(LA(i)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Ure(r){let e=(i,n)=>r(n).update(LA(i)).digest(),t=r({});return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=i=>r(i),e}function wx(r=32){if(fu&&typeof fu.getRandomValues=="function")return fu.getRandomValues(new Uint8Array(r));if(fu&&typeof fu.randomBytes=="function")return Uint8Array.from(fu.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Dl(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}"`;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Wn(r,e,t=""){let i=MA(r),n=r?.length,s=e!==void 0;if(!i||s&&n!==e){let a=t&&`"${t}" `,o=s?` of length ${e}`:"",c=i?`length=${n}`:`type=${typeof r}`;throw new Error(a+"expected Uint8Array"+o+", got "+c)}return r}function tw(r){let e=r.toString(16);return e.length&1?"0"+e:e}function TN(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?E2:BigInt("0x"+r)}function xx(r){return TN(Bl(r))}function _l(r){return Ns(r),TN(Bl(Uint8Array.from(r).reverse()))}function B2(r,e){return Jw(r.toString(16).padStart(e*2,"0"))}function b2(r,e){return B2(r,e).reverse()}function Rt(r,e,t){let i;if(typeof e=="string")try{i=Jw(e)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(MA(e))i=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let n=i.length;if(typeof t=="number"&&n!==t)throw new Error(r+" of length "+t+" expected, got "+n);return i}function $U(r){return Uint8Array.from(r)}function Nre(r){return Uint8Array.from(r,(e,t)=>{let i=e.charCodeAt(0);if(e.length!==1||i>127)throw new Error(`string contains non-ASCII character "${r[t]}" with code ${i} at position ${t}`);return i})}function Ore(r,e,t){return X1(r)&&X1(e)&&X1(t)&&e<=r&&r<t}function bA(r,e,t,i){if(!Ore(e,t,i))throw new Error("expected valid "+r+": "+t+" <= n < "+i+", got "+e)}function UN(r){let e;for(e=0;r>E2;r>>=Ob,e+=1);return e}function qre(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let i=A=>new Uint8Array(A),n=A=>Uint8Array.of(A),s=i(r),a=i(r),o=0,c=()=>{s.fill(1),a.fill(0),o=0},l=(...A)=>t(a,s,...A),d=(A=i(0))=>{a=l(n(0),A),s=l(),A.length!==0&&(a=l(n(1),A),s=l())},u=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let A=0,g=[];for(;A<e;){s=l();let p=s.slice();g.push(p),A+=s.length}return Vn(...g)};return(A,g)=>{c(),d(A);let p;for(;!(p=g(u()));)d();return c(),p}}function Lu(r,e,t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function i(n,s,a){let o=r[n];if(a&&o===void 0)return;let c=typeof o;if(c!==s||o===null)throw new Error(`param "${n}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([n,s])=>i(n,s,!1)),Object.entries(t).forEach(([n,s])=>i(n,s,!0))}function jw(r){let e=new WeakMap;return(t,...i)=>{let n=e.get(t);if(n!==void 0)return n;let s=r(t,...i);return e.set(t,s),s}}function kr(r,e){let t=r%e;return t>=Ri?t:e+t}function Ut(r,e,t){let i=r;for(;e-- >Ri;)i*=i,i%=t;return i}function VU(r,e){if(r===Ri)throw new Error("invert: expected non-zero number");if(e<=Ri)throw new Error("invert: expected positive modulus, got "+e);let t=kr(r,e),i=e,n=Ri,s=Bi;for(;t!==Ri;){let o=i/t,c=i%t,l=n-s*o;i=t,t=c,n=s,s=l}if(i!==Bi)throw new Error("invert: does not exist");return kr(n,e)}function v2(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function LN(r,e){let t=(r.ORDER+Bi)/NN,i=r.pow(e,t);return v2(r,i,e),i}function Hre(r,e){let t=(r.ORDER-ON)/qN,i=r.mul(e,wl),n=r.pow(i,t),s=r.mul(e,n),a=r.mul(r.mul(s,wl),n),o=r.mul(s,r.sub(a,r.ONE));return v2(r,o,e),o}function Kre(r){let e=Ki(r),t=HN(r),i=t(e,e.neg(e.ONE)),n=t(e,i),s=t(e,e.neg(i)),a=(r+Mre)/MN;return(o,c)=>{let l=o.pow(c,a),d=o.mul(l,i),u=o.mul(l,n),f=o.mul(l,s),A=o.eql(o.sqr(d),c),g=o.eql(o.sqr(u),c);l=o.cmov(l,d,A),d=o.cmov(f,u,g);let p=o.eql(o.sqr(d),c),I=o.cmov(l,d,p);return v2(o,I,c),I}}function HN(r){if(r<RN)throw new Error("sqrt is not defined for small field");let e=r-Bi,t=0;for(;e%wl===Ri;)e/=wl,t++;let i=wl,n=Ki(r);for(;YU(n,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return LN;let s=n.pow(i,e),a=(e+Bi)/wl;return function(c,l){if(c.is0(l))return l;if(YU(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),A=c.pow(l,a);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,p=c.sqr(f);for(;!c.eql(p,c.ONE);)if(g++,p=c.sqr(p),g===d)throw new Error("Cannot find square root");let I=Bi<<BigInt(d-g-1),m=c.pow(u,I);d=g,u=c.sqr(m),f=c.mul(f,u),A=c.mul(A,m)}return A}}function Gre(r){return r%NN===RN?LN:r%qN===ON?Hre:r%MN===Lre?Kre(r):HN(r)}function Jre(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},t=zre.reduce((i,n)=>(i[n]="function",i),e);return Lu(r,t),r}function jre(r,e,t){if(t<Ri)throw new Error("invalid exponent, negatives unsupported");if(t===Ri)return r.ONE;if(t===Bi)return e;let i=r.ONE,n=e;for(;t>Ri;)t&Bi&&(i=r.mul(i,n)),n=r.sqr(n),t>>=Bi;return i}function KN(r,e,t=!1){let i=new Array(e.length).fill(t?r.ZERO:void 0),n=e.reduce((a,o,c)=>r.is0(o)?a:(i[c]=a,r.mul(a,o)),r.ONE),s=r.inv(n);return e.reduceRight((a,o,c)=>r.is0(o)?a:(i[c]=r.mul(a,i[c]),r.mul(a,o)),s),i}function YU(r,e){let t=(r.ORDER-Bi)/wl,i=r.pow(e,t),n=r.eql(i,r.ONE),s=r.eql(i,r.ZERO),a=r.eql(i,r.neg(r.ONE));if(!n&&!s&&!a)throw new Error("invalid Legendre symbol result");return n?1:s?0:-1}function GN(r,e){e!==void 0&&EA(e);let t=e!==void 0?e:r.toString(2).length,i=Math.ceil(t/8);return{nBitLength:t,nByteLength:i}}function Ki(r,e,t=!1,i={}){if(r<=Ri)throw new Error("invalid field: expected ORDER > 0, got "+r);let n,s,a=!1,o;if(typeof e=="object"&&e!=null){if(i.sqrt||t)throw new Error("cannot specify opts in two arguments");let f=e;f.BITS&&(n=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(t=f.isLE),typeof f.modFromBytes=="boolean"&&(a=f.modFromBytes),o=f.allowedLengths}else typeof e=="number"&&(n=e),i.sqrt&&(s=i.sqrt);let{nBitLength:c,nByteLength:l}=GN(r,n);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,u=Object.freeze({ORDER:r,isLE:t,BITS:c,BYTES:l,MASK:HA(c),ZERO:Ri,ONE:Bi,allowedLengths:o,create:f=>kr(f,r),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return Ri<=f&&f<r},is0:f=>f===Ri,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Bi)===Bi,neg:f=>kr(-f,r),eql:(f,A)=>f===A,sqr:f=>kr(f*f,r),add:(f,A)=>kr(f+A,r),sub:(f,A)=>kr(f-A,r),mul:(f,A)=>kr(f*A,r),pow:(f,A)=>jre(u,f,A),div:(f,A)=>kr(f*VU(A,r),r),sqrN:f=>f*f,addN:(f,A)=>f+A,subN:(f,A)=>f-A,mulN:(f,A)=>f*A,inv:f=>VU(f,r),sqrt:s||(f=>(d||(d=Gre(r)),d(u,f))),toBytes:f=>t?b2(f,l):B2(f,l),fromBytes:(f,A=!0)=>{if(o){if(!o.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+f.length);let p=new Uint8Array(l);p.set(f,t?0:p.length-f.length),f=p}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=t?_l(f):xx(f);if(a&&(g=kr(g,r)),!A&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>KN(u,f),cmov:(f,A,g)=>g?A:f});return Object.freeze(u)}function zN(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function JN(r){let e=zN(r);return e+Math.ceil(e/2)}function $re(r,e,t=!1){let i=r.length,n=zN(e),s=JN(e);if(i<16||i<s||i>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+i);let a=t?_l(r):xx(r),o=kr(a,e-Bi)+Bi;return t?b2(o,n):B2(o,n)}function Vre(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),a=Number(t>>n&s),o=Number(t&s),c=i?4:0,l=i?0:4;r.setUint32(e+c,a,i),r.setUint32(e+l,o,i)}function jN(r,e,t){return r&e^~r&t}function $N(r,e,t){return r&e^r&t^e&t}function Yre(r,e=!1){return e?{h:Number(r&rw),l:Number(r>>WU&rw)}:{h:Number(r>>WU&rw)|0,l:Number(r&rw)|0}}function VN(r,e=!1){let t=r.length,i=new Uint32Array(t),n=new Uint32Array(t);for(let s=0;s<t;s++){let{h:a,l:o}=Yre(r[s],e);[i[s],n[s]]=[a,o]}return[i,n]}function ba(r,e,t,i){let n=(e>>>0)+(i>>>0);return{h:r+t+(n/2**32|0)|0,l:n|0}}function Ww(r,e){let t=e.negate();return r?t:e}function Cl(r,e){let t=KN(r.Fp,e.map(i=>i.Z));return e.map((i,n)=>r.fromAffine(i.toAffine(t[n])))}function e9(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Z1(r,e){e9(r,e);let t=Math.ceil(e/r)+1,i=2**(r-1),n=2**r,s=HA(r),a=BigInt(r);return{windows:t,windowSize:i,mask:s,maxNumber:n,shiftBy:a}}function eR(r,e,t){let{windowSize:i,mask:n,maxNumber:s,shiftBy:a}=t,o=Number(r&n),c=r>>a;o>i&&(o-=s,c+=xl);let l=e*i,d=l+Math.abs(o)-1,u=o===0,f=o<0,A=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:A,offsetF:l}}function uie(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,i)=>{if(!(t instanceof e))throw new Error("invalid point at index "+i)})}function fie(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,i)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+i)})}function tb(r){return t9.get(r)||1}function tR(r){if(r!==Ou)throw new Error("invalid wNAF")}function hie(r,e,t,i){let n=e,s=r.ZERO,a=r.ZERO;for(;t>Ou||i>Ou;)t&xl&&(s=s.add(n)),i&xl&&(a=a.add(n)),n=n.double(),t>>=xl,i>>=xl;return{p1:s,p2:a}}function r9(r,e,t,i){uie(t,r),fie(i,e);let n=t.length,s=i.length;if(n!==s)throw new Error("arrays of points and scalars must have equal length");let a=r.ZERO,o=UN(BigInt(n)),c=1;o>12?c=o-3:o>4?c=o-2:o>0&&(c=2);let l=HA(c),d=new Array(Number(l)+1).fill(a),u=Math.floor((e.BITS-1)/c)*c,f=a;for(let A=u;A>=0;A-=c){d.fill(a);for(let p=0;p<s;p++){let I=i[p],m=Number(I>>BigInt(A)&l);d[m]=d[m].add(t[p])}let g=a;for(let p=d.length-1,I=a;p>0;p--)I=I.add(d[p]),g=g.add(I);if(f=f.add(g),A!==0)for(let p=0;p<c;p++)f=f.double()}return f}function rR(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Jre(e),e}else return Ki(r,{isLE:t})}function i9(r,e,t={},i){if(i===void 0&&(i=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Ou))throw new Error(`CURVE.${c} must be positive bigint`)}let n=rR(e.p,t.Fp,i),s=rR(e.n,t.Fn,i),o=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of o)if(!n.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:n,Fn:s}}function Aie(r,e,t){let[[i,n],[s,a]]=e,o=iR(a*r,t),c=iR(-n*r,t),l=r-o*i-c*s,d=-o*n-c*a,u=l<Fa,f=d<Fa;u&&(l=-l),f&&(d=-d);let A=HA(Math.ceil(UN(t)/2))+Su;if(l<Fa||l>=A||d<Fa||d>=A)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Lb(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function rb(r,e){let t={};for(let i of Object.keys(e))t[i]=r[i]===void 0?e[i]:r[i];return Dl(t.lowS,"lowS"),Dl(t.prehash,"prehash"),t.format!==void 0&&Lb(t.format),t}function xu(r,e){let{BYTES:t}=r,i;if(typeof e=="bigint")i=e;else{let n=Rt("private key",e);try{i=r.fromBytes(n)}catch{throw new Error(`invalid private key: expected ui8a of size ${t}, got ${typeof e}`)}}if(!r.isValidNot0(i))throw new Error("invalid private key: out of range [1..N-1]");return i}function pie(r,e={}){let t=i9("weierstrass",r,e),{Fp:i,Fn:n}=t,s=t.CURVE,{h:a,n:o}=s;Lu(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=e;if(c&&(!i.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=a9(i,n);function d(){if(!i.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(Q,v,E){let{x:P,y:N}=v.toAffine(),j=i.toBytes(P);if(Dl(E,"isCompressed"),E){d();let z=!i.isOdd(N);return Vn(s9(z),j)}else return Vn(Uint8Array.of(4),j,i.toBytes(N))}function f(Q){Wn(Q,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,P=Q.length,N=Q[0],j=Q.subarray(1);if(P===v&&(N===2||N===3)){let z=i.fromBytes(j);if(!i.isValid(z))throw new Error("bad point: is not on curve, wrong x");let L=p(z),G;try{G=i.sqrt(L)}catch(te){let re=te instanceof Error?": "+te.message:"";throw new Error("bad point: is not on curve, sqrt error"+re)}d();let K=i.isOdd(G);return(N&1)===1!==K&&(G=i.neg(G)),{x:z,y:G}}else if(P===E&&N===4){let z=i.BYTES,L=i.fromBytes(j.subarray(0,z)),G=i.fromBytes(j.subarray(z,z*2));if(!I(L,G))throw new Error("bad point: is not on curve");return{x:L,y:G}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${E}`)}let A=e.toBytes||u,g=e.fromBytes||f;function p(Q){let v=i.sqr(Q),E=i.mul(v,Q);return i.add(i.add(E,i.mul(Q,s.a)),s.b)}function I(Q,v){let E=i.sqr(v),P=p(Q);return i.eql(E,P)}if(!I(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let m=i.mul(i.pow(s.a,sw),gie),w=i.mul(i.sqr(s.b),BigInt(27));if(i.is0(i.add(m,w)))throw new Error("bad curve params: a or b");function B(Q,v,E=!1){if(!i.isValid(v)||E&&i.is0(v))throw new Error(`bad point coordinate ${Q}`);return v}function C(Q){if(!(Q instanceof T))throw new Error("ProjectivePoint expected")}function x(Q){if(!c||!c.basises)throw new Error("no endo");return Aie(Q,c.basises,n.ORDER)}let _=jw((Q,v)=>{let{X:E,Y:P,Z:N}=Q;if(i.eql(N,i.ONE))return{x:E,y:P};let j=Q.is0();v==null&&(v=j?i.ONE:i.inv(N));let z=i.mul(E,v),L=i.mul(P,v),G=i.mul(N,v);if(j)return{x:i.ZERO,y:i.ZERO};if(!i.eql(G,i.ONE))throw new Error("invZ was invalid");return{x:z,y:L}}),R=jw(Q=>{if(Q.is0()){if(e.allowInfinityPoint&&!i.is0(Q.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=Q.toAffine();if(!i.isValid(v)||!i.isValid(E))throw new Error("bad point: x or y not field elements");if(!I(v,E))throw new Error("bad point: equation left != right");if(!Q.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function U(Q,v,E,P,N){return E=new T(i.mul(E.X,Q),E.Y,E.Z),v=Ww(P,v),E=Ww(N,E),v.add(E)}class T{constructor(v,E,P){this.X=B("x",v),this.Y=B("y",E,!0),this.Z=B("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:P}=v||{};if(!v||!i.isValid(E)||!i.isValid(P))throw new Error("invalid affine point");if(v instanceof T)throw new Error("projective point not allowed");return i.is0(E)&&i.is0(P)?T.ZERO:new T(E,P,i.ONE)}static fromBytes(v){let E=T.fromAffine(g(Wn(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return T.fromBytes(Rt("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return b.createCache(this,v),E||this.multiply(sw),this}assertValidity(){R(this)}hasEvenY(){let{y:v}=this.toAffine();if(!i.isOdd)throw new Error("Field doesn't support isOdd");return!i.isOdd(v)}equals(v){C(v);let{X:E,Y:P,Z:N}=this,{X:j,Y:z,Z:L}=v,G=i.eql(i.mul(E,L),i.mul(j,N)),K=i.eql(i.mul(P,L),i.mul(z,N));return G&&K}negate(){return new T(this.X,i.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,P=i.mul(E,sw),{X:N,Y:j,Z:z}=this,L=i.ZERO,G=i.ZERO,K=i.ZERO,$=i.mul(N,N),te=i.mul(j,j),re=i.mul(z,z),ee=i.mul(N,j);return ee=i.add(ee,ee),K=i.mul(N,z),K=i.add(K,K),L=i.mul(v,K),G=i.mul(P,re),G=i.add(L,G),L=i.sub(te,G),G=i.add(te,G),G=i.mul(L,G),L=i.mul(ee,L),K=i.mul(P,K),re=i.mul(v,re),ee=i.sub($,re),ee=i.mul(v,ee),ee=i.add(ee,K),K=i.add($,$),$=i.add(K,$),$=i.add($,re),$=i.mul($,ee),G=i.add(G,$),re=i.mul(j,z),re=i.add(re,re),$=i.mul(re,ee),L=i.sub(L,$),K=i.mul(re,te),K=i.add(K,K),K=i.add(K,K),new T(L,G,K)}add(v){C(v);let{X:E,Y:P,Z:N}=this,{X:j,Y:z,Z:L}=v,G=i.ZERO,K=i.ZERO,$=i.ZERO,te=s.a,re=i.mul(s.b,sw),ee=i.mul(E,j),Z=i.mul(P,z),ye=i.mul(N,L),de=i.add(E,P),Ae=i.add(j,z);de=i.mul(de,Ae),Ae=i.add(ee,Z),de=i.sub(de,Ae),Ae=i.add(E,N);let De=i.add(j,L);return Ae=i.mul(Ae,De),De=i.add(ee,ye),Ae=i.sub(Ae,De),De=i.add(P,N),G=i.add(z,L),De=i.mul(De,G),G=i.add(Z,ye),De=i.sub(De,G),$=i.mul(te,Ae),G=i.mul(re,ye),$=i.add(G,$),G=i.sub(Z,$),$=i.add(Z,$),K=i.mul(G,$),Z=i.add(ee,ee),Z=i.add(Z,ee),ye=i.mul(te,ye),Ae=i.mul(re,Ae),Z=i.add(Z,ye),ye=i.sub(ee,ye),ye=i.mul(te,ye),Ae=i.add(Ae,ye),ee=i.mul(Z,Ae),K=i.add(K,ee),ee=i.mul(De,Ae),G=i.mul(de,G),G=i.sub(G,ee),ee=i.mul(de,Z),$=i.mul(De,$),$=i.add($,ee),new T(G,K,$)}subtract(v){return this.add(v.negate())}is0(){return this.equals(T.ZERO)}multiply(v){let{endo:E}=e;if(!n.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N,j=z=>b.cached(this,z,L=>Cl(T,L));if(E){let{k1neg:z,k1:L,k2neg:G,k2:K}=x(v),{p:$,f:te}=j(L),{p:re,f:ee}=j(K);N=te.add(ee),P=U(E.beta,$,re,z,G)}else{let{p:z,f:L}=j(v);P=z,N=L}return Cl(T,[P,N])[0]}multiplyUnsafe(v){let{endo:E}=e,P=this;if(!n.isValid(v))throw new Error("invalid scalar: out of range");if(v===Fa||P.is0())return T.ZERO;if(v===Su)return P;if(b.hasCache(this))return this.multiply(v);if(E){let{k1neg:N,k1:j,k2neg:z,k2:L}=x(v),{p1:G,p2:K}=hie(T,P,j,L);return U(E.beta,G,K,N,z)}else return b.unsafe(P,v)}multiplyAndAddUnsafe(v,E,P){let N=this.multiplyUnsafe(E).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return _(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return a===Su?!0:v?v(T,this):b.unsafe(this,o).is0()}clearCofactor(){let{clearCofactor:v}=e;return a===Su?this:v?v(T,this):this.multiplyUnsafe(a)}isSmallOrder(){return this.multiplyUnsafe(a).is0()}toBytes(v=!0){return Dl(v,"isCompressed"),this.assertValidity(),A(T,this,v)}toHex(v=!0){return Bl(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return Cl(T,v)}static msm(v,E){return r9(T,n,v,E)}static fromPrivateKey(v){return T.BASE.multiply(xu(n,v))}}T.BASE=new T(s.Gx,s.Gy,i.ONE),T.ZERO=new T(i.ZERO,i.ONE,i.ZERO),T.Fp=i,T.Fn=n;let D=n.BITS,b=new Xw(T,e.endo?Math.ceil(D/2):D);return T.BASE.precompute(8),T}function s9(r){return Uint8Array.of(r?2:3)}function a9(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function mie(r,e={}){let{Fn:t}=r,i=e.randomBytes||wx,n=Object.assign(a9(r.Fp,t),{seed:JN(t.ORDER)});function s(A){try{return!!xu(t,A)}catch{return!1}}function a(A,g){let{publicKey:p,publicKeyUncompressed:I}=n;try{let m=A.length;return g===!0&&m!==p||g===!1&&m!==I?!1:!!r.fromBytes(A)}catch{return!1}}function o(A=i(n.seed)){return $re(Wn(A,n.seed,"seed"),t.ORDER)}function c(A,g=!0){return r.BASE.multiply(xu(t,A)).toBytes(g)}function l(A){let g=o(A);return{secretKey:g,publicKey:c(g)}}function d(A){if(typeof A=="bigint")return!1;if(A instanceof r)return!0;let{secretKey:g,publicKey:p,publicKeyUncompressed:I}=n;if(t.allowedLengths||g===p)return;let m=Rt("key",A).length;return m===p||m===I}function u(A,g,p=!0){if(d(A)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");let I=xu(t,A);return r.fromHex(g).multiply(I).toBytes(p)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:a,randomSecretKey:o,isValidPrivateKey:s,randomPrivateKey:o,normPrivateKeyToScalar:A=>xu(t,A),precompute(A=8,g=r.BASE){return g.precompute(A,!1)}},lengths:n})}function yie(r,e,t={}){QN(e),Lu(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let i=t.randomBytes||wx,n=t.hmac||((E,...P)=>ZN(e,E,Vn(...P))),{Fp:s,Fn:a}=r,{ORDER:o,BITS:c}=a,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:A}=mie(r,t),g={prehash:!1,lowS:typeof t.lowS=="boolean"?t.lowS:!1,format:void 0,extraEntropy:!1},p="compact";function I(E){let P=o>>Su;return E>P}function m(E,P){if(!a.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function w(E,P){Lb(P);let N=A.signature,j=P==="compact"?N:P==="recovered"?N+1:void 0;return Wn(E,j,`${P} signature`)}class B{constructor(P,N,j){this.r=m("r",P),this.s=m("s",N),j!=null&&(this.recovery=j),Object.freeze(this)}static fromBytes(P,N=p){w(P,N);let j;if(N==="der"){let{r:K,s:$}=_a.toSig(Wn(P));return new B(K,$)}N==="recovered"&&(j=P[0],N="compact",P=P.subarray(1));let z=a.BYTES,L=P.subarray(0,z),G=P.subarray(z,z*2);return new B(a.fromBytes(L),a.fromBytes(G),j)}static fromHex(P,N){return this.fromBytes(Jw(P),N)}addRecoveryBit(P){return new B(this.r,this.s,P)}recoverPublicKey(P){let N=s.ORDER,{r:j,s:z,recovery:L}=this;if(L==null||![0,1,2,3].includes(L))throw new Error("recovery id invalid");if(o*n9<N&&L>1)throw new Error("recovery id is ambiguous for h>1 curve");let K=L===2||L===3?j+o:j;if(!s.isValid(K))throw new Error("recovery id 2 or 3 invalid");let $=s.toBytes(K),te=r.fromBytes(Vn(s9((L&1)===0),$)),re=a.inv(K),ee=x(Rt("msgHash",P)),Z=a.create(-ee*re),ye=a.create(z*re),de=r.BASE.multiplyUnsafe(Z).add(te.multiplyUnsafe(ye));if(de.is0())throw new Error("point at infinify");return de.assertValidity(),de}hasHighS(){return I(this.s)}toBytes(P=p){if(Lb(P),P==="der")return Jw(_a.hexFromSig(this));let N=a.toBytes(this.r),j=a.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return Vn(Uint8Array.of(this.recovery),N,j)}return Vn(N,j)}toHex(P){return Bl(this.toBytes(P))}assertValidity(){}static fromCompact(P){return B.fromBytes(Rt("sig",P),"compact")}static fromDER(P){return B.fromBytes(Rt("sig",P),"der")}normalizeS(){return this.hasHighS()?new B(this.r,a.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return Bl(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return Bl(this.toBytes("compact"))}}let C=t.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");let N=xx(P),j=P.length*8-c;return j>0?N>>BigInt(j):N},x=t.bits2int_modN||function(P){return a.create(C(P))},_=HA(c);function R(E){return bA("num < 2^"+c,E,Fa,_),a.toBytes(E)}function U(E,P){return Wn(E,void 0,"message"),P?Wn(e(E),void 0,"prehashed message"):E}function T(E,P,N){if(["recovered","canonical"].some(Z=>Z in N))throw new Error("sign() legacy options not supported");let{lowS:j,prehash:z,extraEntropy:L}=rb(N,g);E=U(E,z);let G=x(E),K=xu(a,P),$=[R(K),R(G)];if(L!=null&&L!==!1){let Z=L===!0?i(A.secretKey):L;$.push(Rt("extraEntropy",Z))}let te=Vn(...$),re=G;function ee(Z){let ye=C(Z);if(!a.isValidNot0(ye))return;let de=a.inv(ye),Ae=r.BASE.multiply(ye).toAffine(),De=a.create(Ae.x);if(De===Fa)return;let He=a.create(de*a.create(re+De*K));if(He===Fa)return;let Ue=(Ae.x===De?0:2)|Number(Ae.y&Su),se=He;return j&&I(He)&&(se=a.neg(He),Ue^=1),new B(De,se,Ue)}return{seed:te,k2sig:ee}}function D(E,P,N={}){E=Rt("message",E);let{seed:j,k2sig:z}=T(E,P,N);return qre(e.outputLen,a.BYTES,n)(j,z)}function b(E){let P,N=typeof E=="string"||MA(E),j=!N&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!N&&!j)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(j)P=new B(E.r,E.s);else if(N){try{P=B.fromBytes(Rt("sig",E),"der")}catch(z){if(!(z instanceof _a.Err))throw z}if(!P)try{P=B.fromBytes(Rt("sig",E),"compact")}catch{return!1}}return P||!1}function Q(E,P,N,j={}){let{lowS:z,prehash:L,format:G}=rb(j,g);if(N=Rt("publicKey",N),P=U(Rt("message",P),L),"strict"in j)throw new Error("options.strict was renamed to lowS");let K=G===void 0?b(E):B.fromBytes(Rt("sig",E),G);if(K===!1)return!1;try{let $=r.fromBytes(N);if(z&&K.hasHighS())return!1;let{r:te,s:re}=K,ee=x(P),Z=a.inv(re),ye=a.create(ee*Z),de=a.create(te*Z),Ae=r.BASE.multiplyUnsafe(ye).add($.multiplyUnsafe(de));return Ae.is0()?!1:a.create(Ae.x)===te}catch{return!1}}function v(E,P,N={}){let{prehash:j}=rb(N,g);return P=U(P,j),B.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:A,Point:r,sign:D,verify:Q,recoverPublicKey:v,Signature:B,hash:e})}function Iie(r){let e={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(a=>Math.ceil(a/2)))):void 0,n=Ki(e.n,{BITS:r.nBitLength,allowedLengths:i,modFromBytes:r.wrapPrivateKey}),s={Fp:t,Fn:n,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:e,curveOpts:s}}function wie(r){let{CURVE:e,curveOpts:t}=Iie(r),i={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:e,curveOpts:t,hash:r.hash,ecdsaOpts:i}}function xie(r,e){let t=e.Point;return Object.assign({},e,{ProjectivePoint:t,CURVE:Object.assign({},r,GN(t.Fn.ORDER,t.Fn.BITS))})}function Cie(r){let{CURVE:e,curveOpts:t,hash:i,ecdsaOpts:n}=wie(r),s=pie(e,t),a=yie(s,i,n);return xie(r,a)}function Tl(r,e){let t=i=>Cie({...r,hash:i});return{...t(e),create:t}}function qie(r,e=24){let t=new Uint32Array(10);for(let i=24-e;i<24;i++){for(let a=0;a<10;a++)t[a]=r[a]^r[a+10]^r[a+20]^r[a+30]^r[a+40];for(let a=0;a<10;a+=2){let o=(a+8)%10,c=(a+2)%10,l=t[c],d=t[c+1],u=nR(l,d,1)^t[o],f=sR(l,d,1)^t[o+1];for(let A=0;A<50;A+=10)r[a+A]^=u,r[a+A+1]^=f}let n=r[2],s=r[3];for(let a=0;a<24;a++){let o=u9[a],c=nR(n,s,o),l=sR(n,s,o),d=d9[a];n=r[d],s=r[d+1],r[d]=c,r[d+1]=l}for(let a=0;a<50;a+=10){for(let o=0;o<10;o++)t[o]=r[a+o];for(let o=0;o<10;o++)r[a+o]^=~t[(o+2)%10]&t[(o+4)%10]}r[0]^=Nie[i],r[1]^=Oie[i]}vn(t)}function zie(r,e,t,i){let n=r.sqr(t),s=r.sqr(i),a=r.add(r.mul(e.a,n),s),o=r.add(r.ONE,r.mul(e.d,r.mul(n,s)));return r.eql(a,o)}function g9(r,e={}){let t=i9("edwards",r,e,e.FpFnLE),{Fp:i,Fn:n}=t,s=t.CURVE,{h:a}=s;Lu(e,{},{uvRatio:"function"});let o=ib<<BigInt(n.BYTES*8)-Ur,c=I=>i.create(I),l=e.uvRatio||((I,m)=>{try{return{isValid:!0,value:i.sqrt(i.div(I,m))}}catch{return{isValid:!1,value:Yo}}});if(!zie(i,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(I,m,w=!1){let B=w?Ur:Yo;return bA("coordinate "+I,m,B,o),m}function u(I){if(!(I instanceof g))throw new Error("ExtendedPoint expected")}let f=jw((I,m)=>{let{X:w,Y:B,Z:C}=I,x=I.is0();m==null&&(m=x?Gie:i.inv(C));let _=c(w*m),R=c(B*m),U=i.mul(C,m);if(x)return{x:Yo,y:Ur};if(U!==Ur)throw new Error("invZ was invalid");return{x:_,y:R}}),A=jw(I=>{let{a:m,d:w}=s;if(I.is0())throw new Error("bad point: ZERO");let{X:B,Y:C,Z:x,T:_}=I,R=c(B*B),U=c(C*C),T=c(x*x),D=c(T*T),b=c(R*m),Q=c(T*c(b+U)),v=c(D+c(w*c(R*U)));if(Q!==v)throw new Error("bad point: equation left != right (1)");let E=c(B*C),P=c(x*_);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(m,w,B,C){this.X=d("x",m),this.Y=d("y",w),this.Z=d("z",B,!0),this.T=d("t",C),Object.freeze(this)}static CURVE(){return s}static fromAffine(m){if(m instanceof g)throw new Error("extended point not allowed");let{x:w,y:B}=m||{};return d("x",w),d("y",B),new g(w,B,Ur,c(w*B))}static fromBytes(m,w=!1){let B=i.BYTES,{a:C,d:x}=s;m=$U(Wn(m,B,"point")),Dl(w,"zip215");let _=$U(m),R=m[B-1];_[B-1]=R&-129;let U=_l(_),T=w?o:i.ORDER;bA("point.y",U,Yo,T);let D=c(U*U),b=c(D-Ur),Q=c(x*D-C),{isValid:v,value:E}=l(b,Q);if(!v)throw new Error("bad point: invalid y coordinate");let P=(E&Ur)===Ur,N=(R&128)!==0;if(!w&&E===Yo&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(E=c(-E)),g.fromAffine({x:E,y:U})}static fromHex(m,w=!1){return g.fromBytes(Rt("point",m),w)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(m=8,w=!0){return p.createCache(this,m),w||this.multiply(ib),this}assertValidity(){A(this)}equals(m){u(m);let{X:w,Y:B,Z:C}=this,{X:x,Y:_,Z:R}=m,U=c(w*R),T=c(x*C),D=c(B*R),b=c(_*C);return U===T&&D===b}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:m}=s,{X:w,Y:B,Z:C}=this,x=c(w*w),_=c(B*B),R=c(ib*c(C*C)),U=c(m*x),T=w+B,D=c(c(T*T)-x-_),b=U+_,Q=b-R,v=U-_,E=c(D*Q),P=c(b*v),N=c(D*v),j=c(Q*b);return new g(E,P,j,N)}add(m){u(m);let{a:w,d:B}=s,{X:C,Y:x,Z:_,T:R}=this,{X:U,Y:T,Z:D,T:b}=m,Q=c(C*U),v=c(x*T),E=c(R*B*b),P=c(_*D),N=c((C+x)*(U+T)-Q-v),j=P-E,z=P+E,L=c(v-w*Q),G=c(N*j),K=c(z*L),$=c(N*L),te=c(j*z);return new g(G,K,te,$)}subtract(m){return this.add(m.negate())}multiply(m){if(!n.isValidNot0(m))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:w,f:B}=p.cached(this,m,C=>Cl(g,C));return Cl(g,[w,B])[0]}multiplyUnsafe(m,w=g.ZERO){if(!n.isValid(m))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return m===Yo?g.ZERO:this.is0()||m===Ur?this:p.unsafe(this,m,B=>Cl(g,B),w)}isSmallOrder(){return this.multiplyUnsafe(a).is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(m){return f(this,m)}clearCofactor(){return a===Ur?this:this.multiplyUnsafe(a)}toBytes(){let{x:m,y:w}=this.toAffine(),B=i.toBytes(w);return B[B.length-1]|=m&Ur?128:0,B}toHex(){return Bl(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(m){return Cl(g,m)}static msm(m,w){return r9(g,n,m,w)}_setWindowSize(m){this.precompute(m)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Ur,c(s.Gx*s.Gy)),g.ZERO=new g(Yo,Ur,Ur,Yo),g.Fp=i,g.Fn=n;let p=new Xw(g,n.BITS);return g.BASE.precompute(8),g}function Jie(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Lu(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:i}=t,{BASE:n,Fp:s,Fn:a}=r,o=t.randomBytes||wx,c=t.adjustScalarBytes||(T=>T),l=t.domain||((T,D,b)=>{if(Dl(b,"phflag"),D.length||b)throw new Error("Contexts/pre-hash are not supported");return T});function d(T){return a.create(_l(T))}function u(T){let D=B.secretKey;T=Rt("private key",T,D);let b=Rt("hashed private key",e(T),2*D),Q=c(b.slice(0,D)),v=b.slice(D,2*D),E=d(Q);return{head:Q,prefix:v,scalar:E}}function f(T){let{head:D,prefix:b,scalar:Q}=u(T),v=n.multiply(Q),E=v.toBytes();return{head:D,prefix:b,scalar:Q,point:v,pointBytes:E}}function A(T){return f(T).pointBytes}function g(T=Uint8Array.of(),...D){let b=Vn(...D);return d(e(l(b,Rt("context",T),!!i)))}function p(T,D,b={}){T=Rt("message",T),i&&(T=i(T));let{prefix:Q,scalar:v,pointBytes:E}=f(D),P=g(b.context,Q,T),N=n.multiply(P).toBytes(),j=g(b.context,N,E,T),z=a.create(P+j*v);if(!a.isValid(z))throw new Error("sign failed: invalid s");let L=Vn(N,a.toBytes(z));return Wn(L,B.signature,"result")}let I={zip215:!0};function m(T,D,b,Q=I){let{context:v,zip215:E}=Q,P=B.signature;T=Rt("signature",T,P),D=Rt("message",D),b=Rt("publicKey",b,B.publicKey),E!==void 0&&Dl(E,"zip215"),i&&(D=i(D));let N=P/2,j=T.subarray(0,N),z=_l(T.subarray(N,P)),L,G,K;try{L=r.fromBytes(b,E),G=r.fromBytes(j,E),K=n.multiplyUnsafe(z)}catch{return!1}if(!E&&L.isSmallOrder())return!1;let $=g(v,G.toBytes(),L.toBytes(),D);return G.add(L.multiplyUnsafe($)).subtract(K).clearCofactor().is0()}let w=s.BYTES,B={secretKey:w,publicKey:w,signature:2*w,seed:w};function C(T=o(B.seed)){return Wn(T,B.seed,"seed")}function x(T){let D=U.randomSecretKey(T);return{secretKey:D,publicKey:A(D)}}function _(T){return MA(T)&&T.length===a.BYTES}function R(T,D){try{return!!r.fromBytes(T,D)}catch{return!1}}let U={getExtendedPublicKey:f,randomSecretKey:C,isValidSecretKey:_,isValidPublicKey:R,toMontgomery(T){let{y:D}=r.fromBytes(T),b=B.publicKey,Q=b===32;if(!Q&&b!==57)throw new Error("only defined for 25519 and 448");let v=Q?s.div(Ur+D,Ur-D):s.div(D-Ur,D+Ur);return s.toBytes(v)},toMontgomerySecret(T){let D=B.secretKey;Wn(T,D);let b=e(T.subarray(0,D));return c(b).subarray(0,D)},randomPrivateKey:C,precompute(T=8,D=r.BASE){return D.precompute(T,!1)}};return Object.freeze({keygen:x,getPublicKey:A,sign:p,verify:m,utils:U,Point:r,lengths:B})}function jie(r){let e={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=Ki(e.n,r.nBitLength,!0),n={Fp:t,Fn:i,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:e,curveOpts:n,hash:r.hash,eddsaOpts:s}}function $ie(r,e){let t=e.Point;return Object.assign({},e,{ExtendedPoint:t,CURVE:r,nBitLength:t.Fn.BITS,nByteLength:t.Fn.BYTES})}function Vie(r){let{CURVE:e,curveOpts:t,hash:i,eddsaOpts:n}=jie(r),s=g9(e,t),a=Jie(s,i,n);return $ie(r,a)}function Yie(r){return Lu(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function Wie(r){let e=Yie(r),{P:t,type:i,adjustScalarBytes:n,powPminus2:s,randomBytes:a}=e,o=i==="x25519";if(!o&&i!=="x448")throw new Error("invalid type");let c=a||wx,l=o?255:448,d=o?32:56,u=BigInt(o?9:5),f=BigInt(o?121665:39081),A=o?aw**BigInt(254):aw**BigInt(447),g=o?BigInt(8)*aw**BigInt(251)-gu:BigInt(4)*aw**BigInt(445)-gu,p=A+g+gu,I=v=>kr(v,t),m=w(u);function w(v){return b2(I(v),d)}function B(v){let E=Rt("u coordinate",v,d);return o&&(E[31]&=127),I(_l(E))}function C(v){return _l(n(Rt("scalar",v,d)))}function x(v,E){let P=U(B(E),C(v));if(P===iA)throw new Error("invalid private or public key received");return w(P)}function _(v){return x(v,m)}function R(v,E,P){let N=I(v*(E-P));return E=I(E-N),P=I(P+N),{x_2:E,x_3:P}}function U(v,E){bA("u",v,iA,t),bA("scalar",E,A,p);let P=E,N=v,j=gu,z=iA,L=v,G=gu,K=iA;for(let te=BigInt(l-1);te>=iA;te--){let re=P>>te&gu;K^=re,{x_2:j,x_3:L}=R(K,j,L),{x_2:z,x_3:G}=R(K,z,G),K=re;let ee=j+z,Z=I(ee*ee),ye=j-z,de=I(ye*ye),Ae=Z-de,De=L+G,He=L-G,Ue=I(He*ee),se=I(De*ye),ut=Ue+se,ce=Ue-se;L=I(ut*ut),G=I(N*I(ce*ce)),j=I(Z*de),z=I(Ae*(Z+I(f*Ae)))}({x_2:j,x_3:L}=R(K,j,L)),{x_2:z,x_3:G}=R(K,z,G);let $=s(z);return I(j*$)}let T={secretKey:d,publicKey:d,seed:d},D=(v=c(d))=>(Ns(v,T.seed),v);function b(v){let E=D(v);return{secretKey:E,publicKey:_(E)}}return{keygen:b,getSharedSecret:(v,E)=>x(v,E),getPublicKey:v=>_(v),scalarMult:x,scalarMultBase:_,utils:{randomSecretKey:D,randomPrivateKey:D},GuBytes:m.slice(),lengths:T}}function p9(r){let e=Ul.p,t=r*r*r%e,i=t*t*r%e,n=Ut(i,aR,e)*i%e,s=Ut(n,aR,e)*i%e,a=Ut(s,Kb,e)*t%e,o=Ut(a,tne,e)*a%e,c=Ut(o,rne,e)*o%e,l=Ut(c,oR,e)*c%e,d=Ut(l,ine,e)*l%e,u=Ut(d,oR,e)*c%e,f=Ut(u,Kb,e)*t%e,A=Ut(f,ene,e)*r%e;return Ut(A,nne,e)*f%e}function m9(r){return r[0]&=252,r[55]|=128,r[56]=0,r}function sne(r,e){let t=Ul.p,i=kr(r*r*e,t),n=kr(i*r,t),s=kr(n*i*e,t),a=p9(s),o=kr(n*a,t),c=kr(o*o,t);return{isValid:kr(c*e,t)===r,value:o}}function one(r,e,t){if(e.length>255)throw new Error("context must be smaller than 255, got: "+e.length);return Vn(Nre("SigEd448"),new Uint8Array([t?1:0,e.length]),e,r)}function fne(r){let e=S2.p,t=BigInt(3),i=BigInt(6),n=BigInt(11),s=BigInt(22),a=BigInt(23),o=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=Ut(d,t,e)*d%e,f=Ut(u,t,e)*d%e,A=Ut(f,lR,e)*l%e,g=Ut(A,n,e)*A%e,p=Ut(g,s,e)*g%e,I=Ut(p,o,e)*p%e,m=Ut(I,c,e)*I%e,w=Ut(m,o,e)*p%e,B=Ut(w,t,e)*d%e,C=Ut(B,a,e)*g%e,x=Ut(C,i,e)*l%e,_=Ut(x,lR,e);if(!Gb.eql(Gb.sqr(_),r))throw new Error("Cannot find square root");return _}function dR(r,e,t,i){return r===0?e^t^i:r===1?e&t|~e&i:r===2?(e|~t)^i:r===3?e&i|t&~i:e^(t|~i)}function AR(r,e,t,i){r[e]=t>>24&255,r[e+1]=t>>16&255,r[e+2]=t>>8&255,r[e+3]=t&255,r[e+4]=i>>24&255,r[e+5]=i>>16&255,r[e+6]=i>>8&255,r[e+7]=i&255}function Gne(r,e,t,i,n){var s,a=0;for(s=0;s<n;s++)a|=r[e+s]^t[i+s];return(1&a-1>>>8)-1}function _9(r,e,t,i){return Gne(r,e,t,i,32)}function sc(r,e){var t;for(t=0;t<16;t++)r[t]=e[t]|0}function ab(r){var e,t,i=1;for(e=0;e<16;e++)t=r[e]+i+65535,i=Math.floor(t/65536),r[e]=t-i*65536;r[0]+=i-1+37*(i-1)}function Cu(r,e,t){for(var i,n=~(t-1),s=0;s<16;s++)i=n&(r[s]^e[s]),r[s]^=i,e[s]^=i}function vA(r,e){var t,i,n,s=Ne(),a=Ne();for(t=0;t<16;t++)a[t]=e[t];for(ab(a),ab(a),ab(a),i=0;i<2;i++){for(s[0]=a[0]-65517,t=1;t<15;t++)s[t]=a[t]-65535-(s[t-1]>>16&1),s[t-1]&=65535;s[15]=a[15]-32767-(s[14]>>16&1),n=s[15]>>16&1,s[14]&=65535,Cu(a,s,1-n)}for(t=0;t<16;t++)r[2*t]=a[t]&255,r[2*t+1]=a[t]>>8}function gR(r,e){var t=new Uint8Array(32),i=new Uint8Array(32);return vA(t,r),vA(i,e),_9(t,0,i,0)}function Q9(r){var e=new Uint8Array(32);return vA(e,r),e[0]&1}function F9(r,e){var t;for(t=0;t<16;t++)r[t]=e[2*t]+(e[2*t+1]<<8);r[15]&=32767}function Ss(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]+t[i]}function _s(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]-t[i]}function gt(r,e,t){var i,n,s=0,a=0,o=0,c=0,l=0,d=0,u=0,f=0,A=0,g=0,p=0,I=0,m=0,w=0,B=0,C=0,x=0,_=0,R=0,U=0,T=0,D=0,b=0,Q=0,v=0,E=0,P=0,N=0,j=0,z=0,L=0,G=t[0],K=t[1],$=t[2],te=t[3],re=t[4],ee=t[5],Z=t[6],ye=t[7],de=t[8],Ae=t[9],De=t[10],He=t[11],Ue=t[12],se=t[13],ut=t[14],ce=t[15];i=e[0],s+=i*G,a+=i*K,o+=i*$,c+=i*te,l+=i*re,d+=i*ee,u+=i*Z,f+=i*ye,A+=i*de,g+=i*Ae,p+=i*De,I+=i*He,m+=i*Ue,w+=i*se,B+=i*ut,C+=i*ce,i=e[1],a+=i*G,o+=i*K,c+=i*$,l+=i*te,d+=i*re,u+=i*ee,f+=i*Z,A+=i*ye,g+=i*de,p+=i*Ae,I+=i*De,m+=i*He,w+=i*Ue,B+=i*se,C+=i*ut,x+=i*ce,i=e[2],o+=i*G,c+=i*K,l+=i*$,d+=i*te,u+=i*re,f+=i*ee,A+=i*Z,g+=i*ye,p+=i*de,I+=i*Ae,m+=i*De,w+=i*He,B+=i*Ue,C+=i*se,x+=i*ut,_+=i*ce,i=e[3],c+=i*G,l+=i*K,d+=i*$,u+=i*te,f+=i*re,A+=i*ee,g+=i*Z,p+=i*ye,I+=i*de,m+=i*Ae,w+=i*De,B+=i*He,C+=i*Ue,x+=i*se,_+=i*ut,R+=i*ce,i=e[4],l+=i*G,d+=i*K,u+=i*$,f+=i*te,A+=i*re,g+=i*ee,p+=i*Z,I+=i*ye,m+=i*de,w+=i*Ae,B+=i*De,C+=i*He,x+=i*Ue,_+=i*se,R+=i*ut,U+=i*ce,i=e[5],d+=i*G,u+=i*K,f+=i*$,A+=i*te,g+=i*re,p+=i*ee,I+=i*Z,m+=i*ye,w+=i*de,B+=i*Ae,C+=i*De,x+=i*He,_+=i*Ue,R+=i*se,U+=i*ut,T+=i*ce,i=e[6],u+=i*G,f+=i*K,A+=i*$,g+=i*te,p+=i*re,I+=i*ee,m+=i*Z,w+=i*ye,B+=i*de,C+=i*Ae,x+=i*De,_+=i*He,R+=i*Ue,U+=i*se,T+=i*ut,D+=i*ce,i=e[7],f+=i*G,A+=i*K,g+=i*$,p+=i*te,I+=i*re,m+=i*ee,w+=i*Z,B+=i*ye,C+=i*de,x+=i*Ae,_+=i*De,R+=i*He,U+=i*Ue,T+=i*se,D+=i*ut,b+=i*ce,i=e[8],A+=i*G,g+=i*K,p+=i*$,I+=i*te,m+=i*re,w+=i*ee,B+=i*Z,C+=i*ye,x+=i*de,_+=i*Ae,R+=i*De,U+=i*He,T+=i*Ue,D+=i*se,b+=i*ut,Q+=i*ce,i=e[9],g+=i*G,p+=i*K,I+=i*$,m+=i*te,w+=i*re,B+=i*ee,C+=i*Z,x+=i*ye,_+=i*de,R+=i*Ae,U+=i*De,T+=i*He,D+=i*Ue,b+=i*se,Q+=i*ut,v+=i*ce,i=e[10],p+=i*G,I+=i*K,m+=i*$,w+=i*te,B+=i*re,C+=i*ee,x+=i*Z,_+=i*ye,R+=i*de,U+=i*Ae,T+=i*De,D+=i*He,b+=i*Ue,Q+=i*se,v+=i*ut,E+=i*ce,i=e[11],I+=i*G,m+=i*K,w+=i*$,B+=i*te,C+=i*re,x+=i*ee,_+=i*Z,R+=i*ye,U+=i*de,T+=i*Ae,D+=i*De,b+=i*He,Q+=i*Ue,v+=i*se,E+=i*ut,P+=i*ce,i=e[12],m+=i*G,w+=i*K,B+=i*$,C+=i*te,x+=i*re,_+=i*ee,R+=i*Z,U+=i*ye,T+=i*de,D+=i*Ae,b+=i*De,Q+=i*He,v+=i*Ue,E+=i*se,P+=i*ut,N+=i*ce,i=e[13],w+=i*G,B+=i*K,C+=i*$,x+=i*te,_+=i*re,R+=i*ee,U+=i*Z,T+=i*ye,D+=i*de,b+=i*Ae,Q+=i*De,v+=i*He,E+=i*Ue,P+=i*se,N+=i*ut,j+=i*ce,i=e[14],B+=i*G,C+=i*K,x+=i*$,_+=i*te,R+=i*re,U+=i*ee,T+=i*Z,D+=i*ye,b+=i*de,Q+=i*Ae,v+=i*De,E+=i*He,P+=i*Ue,N+=i*se,j+=i*ut,z+=i*ce,i=e[15],C+=i*G,x+=i*K,_+=i*$,R+=i*te,U+=i*re,T+=i*ee,D+=i*Z,b+=i*ye,Q+=i*de,v+=i*Ae,E+=i*De,P+=i*He,N+=i*Ue,j+=i*se,z+=i*ut,L+=i*ce,s+=38*x,a+=38*_,o+=38*R,c+=38*U,l+=38*T,d+=38*D,u+=38*b,f+=38*Q,A+=38*v,g+=38*E,p+=38*P,I+=38*N,m+=38*j,w+=38*z,B+=38*L,n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=A+n+65535,n=Math.floor(i/65536),A=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,s+=n-1+37*(n-1),n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=A+n+65535,n=Math.floor(i/65536),A=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,s+=n-1+37*(n-1),r[0]=s,r[1]=a,r[2]=o,r[3]=c,r[4]=l,r[5]=d,r[6]=u,r[7]=f,r[8]=A,r[9]=g,r[10]=p,r[11]=I,r[12]=m,r[13]=w,r[14]=B,r[15]=C}function Yn(r,e){gt(r,e,e)}function P9(r,e){var t=Ne(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=253;i>=0;i--)Yn(t,t),i!==2&&i!==4&>(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function zne(r,e){var t=Ne(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=250;i>=0;i--)Yn(t,t),i!==1&>(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function T9(r,e,t){var i=new Uint8Array(32),n=new Float64Array(80),s,a,o=Ne(),c=Ne(),l=Ne(),d=Ne(),u=Ne(),f=Ne();for(a=0;a<31;a++)i[a]=e[a];for(i[31]=e[31]&127|64,i[0]&=248,F9(n,t),a=0;a<16;a++)c[a]=n[a],d[a]=o[a]=l[a]=0;for(o[0]=d[0]=1,a=254;a>=0;--a)s=i[a>>>3]>>>(a&7)&1,Cu(o,c,s),Cu(l,d,s),Ss(u,o,l),_s(o,o,l),Ss(l,c,d),_s(c,c,d),Yn(d,u),Yn(f,o),gt(o,l,o),gt(l,c,u),Ss(u,o,l),_s(o,o,l),Yn(c,o),_s(l,d,f),gt(o,l,Mne),Ss(o,o,d),gt(l,l,o),gt(o,d,f),gt(d,c,n),Yn(c,u),Cu(o,c,s),Cu(l,d,s);for(a=0;a<16;a++)n[a+16]=o[a],n[a+32]=l[a],n[a+48]=c[a],n[a+64]=d[a];var A=n.subarray(32),g=n.subarray(16);return P9(A,A),gt(g,g,A),vA(r,g),0}function U9(r,e){return T9(r,e,D9)}function Jne(r,e){return D2(e,32),U9(r,e)}function mR(r,e,t,i){for(var n=new Int32Array(16),s=new Int32Array(16),a,o,c,l,d,u,f,A,g,p,I,m,w,B,C,x,_,R,U,T,D,b,Q,v,E,P,N=r[0],j=r[1],z=r[2],L=r[3],G=r[4],K=r[5],$=r[6],te=r[7],re=e[0],ee=e[1],Z=e[2],ye=e[3],de=e[4],Ae=e[5],De=e[6],He=e[7],Ue=0;i>=128;){for(U=0;U<16;U++)T=8*U+Ue,n[U]=t[T+0]<<24|t[T+1]<<16|t[T+2]<<8|t[T+3],s[U]=t[T+4]<<24|t[T+5]<<16|t[T+6]<<8|t[T+7];for(U=0;U<80;U++)if(a=N,o=j,c=z,l=L,d=G,u=K,f=$,A=te,g=re,p=ee,I=Z,m=ye,w=de,B=Ae,C=De,x=He,D=te,b=He,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=(G>>>14|de<<18)^(G>>>18|de<<14)^(de>>>9|G<<23),b=(de>>>14|G<<18)^(de>>>18|G<<14)^(G>>>9|de<<23),Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,D=G&K^~G&$,b=de&Ae^~de&De,Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,D=pR[U*2],b=pR[U*2+1],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,D=n[U%16],b=s[U%16],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,_=E&65535|P<<16,R=Q&65535|v<<16,D=_,b=R,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=(N>>>28|re<<4)^(re>>>2|N<<30)^(re>>>7|N<<25),b=(re>>>28|N<<4)^(N>>>2|re<<30)^(N>>>7|re<<25),Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,D=N&j^N&z^j&z,b=re&ee^re&Z^ee&Z,Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,A=E&65535|P<<16,x=Q&65535|v<<16,D=l,b=m,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=_,b=R,Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,l=E&65535|P<<16,m=Q&65535|v<<16,j=a,z=o,L=c,G=l,K=d,$=u,te=f,N=A,ee=g,Z=p,ye=I,de=m,Ae=w,De=B,He=C,re=x,U%16===15)for(T=0;T<16;T++)D=n[T],b=s[T],Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=n[(T+9)%16],b=s[(T+9)%16],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,_=n[(T+1)%16],R=s[(T+1)%16],D=(_>>>1|R<<31)^(_>>>8|R<<24)^_>>>7,b=(R>>>1|_<<31)^(R>>>8|_<<24)^(R>>>7|_<<25),Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,_=n[(T+14)%16],R=s[(T+14)%16],D=(_>>>19|R<<13)^(R>>>29|_<<3)^_>>>6,b=(R>>>19|_<<13)^(_>>>29|R<<3)^(R>>>6|_<<26),Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,n[T]=E&65535|P<<16,s[T]=Q&65535|v<<16;D=N,b=re,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[0],b=e[0],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[0]=N=E&65535|P<<16,e[0]=re=Q&65535|v<<16,D=j,b=ee,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[1],b=e[1],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[1]=j=E&65535|P<<16,e[1]=ee=Q&65535|v<<16,D=z,b=Z,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[2],b=e[2],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[2]=z=E&65535|P<<16,e[2]=Z=Q&65535|v<<16,D=L,b=ye,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[3],b=e[3],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[3]=L=E&65535|P<<16,e[3]=ye=Q&65535|v<<16,D=G,b=de,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[4],b=e[4],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[4]=G=E&65535|P<<16,e[4]=de=Q&65535|v<<16,D=K,b=Ae,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[5],b=e[5],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[5]=K=E&65535|P<<16,e[5]=Ae=Q&65535|v<<16,D=$,b=De,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[6],b=e[6],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[6]=$=E&65535|P<<16,e[6]=De=Q&65535|v<<16,D=te,b=He,Q=b&65535,v=b>>>16,E=D&65535,P=D>>>16,D=r[7],b=e[7],Q+=b&65535,v+=b>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[7]=te=E&65535|P<<16,e[7]=He=Q&65535|v<<16,Ue+=128,i-=128}return i}function fA(r,e,t){var i=new Int32Array(8),n=new Int32Array(8),s=new Uint8Array(256),a,o=t;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,mR(i,n,e,t),t%=128,a=0;a<t;a++)s[a]=e[o-t+a];for(s[t]=128,t=256-128*(t<112?1:0),s[t-9]=0,AR(s,t-8,o/536870912|0,o<<3),mR(i,n,s,t),a=0;a<8;a++)AR(r,8*a,i[a],n[a]);return 0}function Vb(r,e){var t=Ne(),i=Ne(),n=Ne(),s=Ne(),a=Ne(),o=Ne(),c=Ne(),l=Ne(),d=Ne();_s(t,r[1],r[0]),_s(d,e[1],e[0]),gt(t,t,d),Ss(i,r[0],r[1]),Ss(d,e[0],e[1]),gt(i,i,d),gt(n,r[3],e[3]),gt(n,n,Hne),gt(s,r[2],e[2]),Ss(s,s,s),_s(a,i,t),_s(o,s,n),Ss(c,s,n),Ss(l,i,t),gt(r[0],a,o),gt(r[1],l,c),gt(r[2],c,o),gt(r[3],a,l)}function yR(r,e,t){var i;for(i=0;i<4;i++)Cu(r[i],e[i],t)}function _2(r,e){var t=Ne(),i=Ne(),n=Ne();P9(n,e[2]),gt(t,e[0],n),gt(i,e[1],n),vA(r,i),r[31]^=Q9(t)<<7}function R9(r,e,t){var i,n;for(sc(r[0],$b),sc(r[1],ex),sc(r[2],ex),sc(r[3],$b),n=255;n>=0;--n)i=t[n/8|0]>>(n&7)&1,yR(r,e,i),Vb(e,r),Vb(r,r),yR(r,e,i)}function Q2(r,e){var t=[Ne(),Ne(),Ne(),Ne()];sc(t[0],fR),sc(t[1],hR),sc(t[2],ex),gt(t[3],fR,hR),R9(r,t,e)}function N9(r,e,t){var i=new Uint8Array(64),n=[Ne(),Ne(),Ne(),Ne()],s;for(t||D2(e,32),fA(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,Q2(n,i),_2(r,n),s=0;s<32;s++)e[s+32]=r[s];return 0}function O9(r,e){var t,i,n,s;for(i=63;i>=32;--i){for(t=0,n=i-32,s=i-12;n<s;++n)e[n]+=t-16*e[i]*ob[n-(i-32)],t=Math.floor((e[n]+128)/256),e[n]-=t*256;e[n]+=t,e[i]=0}for(t=0,n=0;n<32;n++)e[n]+=t-(e[31]>>4)*ob[n],t=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=t*ob[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,r[i]=e[i]&255}function Yb(r){var e=new Float64Array(64),t;for(t=0;t<64;t++)e[t]=r[t];for(t=0;t<64;t++)r[t]=0;O9(r,e)}function jne(r,e,t,i){var n=new Uint8Array(64),s=new Uint8Array(64),a=new Uint8Array(64),o,c,l=new Float64Array(64),d=[Ne(),Ne(),Ne(),Ne()];fA(n,i,32),n[0]&=248,n[31]&=127,n[31]|=64;var u=t+64;for(o=0;o<t;o++)r[64+o]=e[o];for(o=0;o<32;o++)r[32+o]=n[32+o];for(fA(a,r.subarray(32),t+32),Yb(a),Q2(d,a),_2(r,d),o=32;o<64;o++)r[o]=i[o];for(fA(s,r,t+64),Yb(s),o=0;o<64;o++)l[o]=0;for(o=0;o<32;o++)l[o]=a[o];for(o=0;o<32;o++)for(c=0;c<32;c++)l[o+c]+=s[o]*n[c];return O9(r.subarray(32),l),u}function $ne(r,e){var t=Ne(),i=Ne(),n=Ne(),s=Ne(),a=Ne(),o=Ne(),c=Ne();return sc(r[2],ex),F9(r[1],e),Yn(n,r[1]),gt(s,n,Lne),_s(n,n,r[2]),Ss(s,r[2],s),Yn(a,s),Yn(o,a),gt(c,o,a),gt(t,c,n),gt(t,t,s),zne(t,t),gt(t,t,n),gt(t,t,s),gt(t,t,s),gt(r[0],t,s),Yn(i,r[0]),gt(i,i,s),gR(i,n)&>(r[0],r[0],Kne),Yn(i,r[0]),gt(i,i,s),gR(i,n)?-1:(Q9(r[0])===e[31]>>7&&_s(r[0],$b,r[0]),gt(r[3],r[0],r[1]),0)}function Vne(r,e,t,i){var n,s=new Uint8Array(32),a=new Uint8Array(64),o=[Ne(),Ne(),Ne(),Ne()],c=[Ne(),Ne(),Ne(),Ne()];if(t<64||$ne(c,i))return-1;for(n=0;n<t;n++)r[n]=e[n];for(n=0;n<32;n++)r[n+32]=i[n];if(fA(a,r,t),Yb(a),R9(o,c,a),Q2(c,e.subarray(32)),Vb(o,c),_2(s,o),t-=64,_9(e,0,s,0)){for(n=0;n<t;n++)r[n]=0;return-1}for(n=0;n<t;n++)r[n]=e[n+64];return t}function Hu(){for(var r=0;r<arguments.length;r++)if(!(arguments[r]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function Xne(r){for(var e=0;e<r.length;e++)r[e]=0}function cb(r,e,t,i,n,s){let a=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],o=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],c=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],u=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],f=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],A=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696],g=0,p,I,m,w,B,C,x,_,R,U,T=e.length,D=r.length===32?3:9;D===3?_=t?[0,32,2]:[30,-2,-2]:_=t?[0,32,2,62,30,-2,64,96,2]:[94,62,-2,32,64,2,30,-2,-2],t&&(e=Zne(e),T=e.length);let b=new Uint8Array(T),Q=0;for(;g<T;){for(C=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],x=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],m=(C>>>4^x)&252645135,x^=m,C^=m<<4,m=(C>>>16^x)&65535,x^=m,C^=m<<16,m=(x>>>2^C)&858993459,C^=m,x^=m<<2,m=(x>>>8^C)&16711935,C^=m,x^=m<<8,m=(C>>>1^x)&1431655765,x^=m,C^=m<<1,C=C<<1|C>>>31,x=x<<1|x>>>31,I=0;I<D;I+=3){for(R=_[I+1],U=_[I+2],p=_[I];p!==R;p+=U)w=x^r[p],B=(x>>>4|x<<28)^r[p+1],m=C,C=x,x=m^(o[w>>>24&63]|l[w>>>16&63]|u[w>>>8&63]|A[w&63]|a[B>>>24&63]|c[B>>>16&63]|d[B>>>8&63]|f[B&63]);m=C,C=x,x=m}C=C>>>1|C<<31,x=x>>>1|x<<31,m=(C>>>1^x)&1431655765,x^=m,C^=m<<1,m=(x>>>8^C)&16711935,C^=m,x^=m<<8,m=(x>>>2^C)&858993459,C^=m,x^=m<<2,m=(C>>>16^x)&65535,x^=m,C^=m<<16,m=(C>>>4^x)&252645135,x^=m,C^=m<<4,b[Q++]=C>>>24,b[Q++]=C>>>16&255,b[Q++]=C>>>8&255,b[Q++]=C&255,b[Q++]=x>>>24,b[Q++]=x>>>16&255,b[Q++]=x>>>8&255,b[Q++]=x&255}return t||(b=ese(b)),b}function lb(r){let e=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],t=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],n=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],s=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],a=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],o=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],c=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],l=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],d=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],u=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],f=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],A=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],g=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],p=r.length>8?3:1,I=new Array(32*p),m=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],w,B,C=0,x=0,_;for(let R=0;R<p;R++){let U=r[C++]<<24|r[C++]<<16|r[C++]<<8|r[C++],T=r[C++]<<24|r[C++]<<16|r[C++]<<8|r[C++];_=(U>>>4^T)&252645135,T^=_,U^=_<<4,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>2^T)&858993459,T^=_,U^=_<<2,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=(T>>>8^U)&16711935,U^=_,T^=_<<8,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=U<<8|T>>>20&240,U=T<<24|T<<8&16711680|T>>>8&65280|T>>>24&240,T=_;for(let D=0;D<m.length;D++)m[D]?(U=U<<2|U>>>26,T=T<<2|T>>>26):(U=U<<1|U>>>27,T=T<<1|T>>>27),U&=-15,T&=-15,w=e[U>>>28]|t[U>>>24&15]|i[U>>>20&15]|n[U>>>16&15]|s[U>>>12&15]|a[U>>>8&15]|o[U>>>4&15],B=c[T>>>28]|l[T>>>24&15]|d[T>>>20&15]|u[T>>>16&15]|f[T>>>12&15]|A[T>>>8&15]|g[T>>>4&15],_=(B>>>16^w)&65535,I[x++]=w^_,I[x++]=B^_<<16}return I}function Zne(r,e){let t=8-r.length%8,i;if(t<8)i=0;else{if(t===8)return r;throw new Error("des: invalid padding")}let n=new Uint8Array(r.length+t);for(let s=0;s<r.length;s++)n[s]=r[s];for(let s=0;s<t;s++)n[r.length+s]=i;return n}function ese(r,e){let t=null,i;if(i=0,!t){for(t=1;r[r.length-t]===i;)t++;t--}return r.subarray(0,r.length-t)}function kA(r){this.key=[];for(let e=0;e<3;e++)this.key.push(new Uint8Array(r.subarray(e*8,e*8+8)));this.encrypt=function(e){return cb(lb(this.key[2]),cb(lb(this.key[1]),cb(lb(this.key[0]),e,!0,0,null,null),!1,0,null,null),!0)}}function tse(){this.BlockSize=8,this.KeySize=16,this.setKey=function(a){if(this.masking=new Array(16),this.rotate=new Array(16),this.reset(),a.length===this.KeySize)this.keySchedule(a);else throw new Error("CAST-128: keys must be 16 bytes");return!0},this.reset=function(){for(let a=0;a<16;a++)this.masking[a]=0,this.rotate[a]=0},this.getBlockSize=function(){return this.BlockSize},this.encrypt=function(a){let o=new Array(a.length);for(let c=0;c<a.length;c+=8){let l=a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3],d=a[c+4]<<24|a[c+5]<<16|a[c+6]<<8|a[c+7],u;u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,o[c]=d>>>24&255,o[c+1]=d>>>16&255,o[c+2]=d>>>8&255,o[c+3]=d&255,o[c+4]=l>>>24&255,o[c+5]=l>>>16&255,o[c+6]=l>>>8&255,o[c+7]=l&255}return o},this.decrypt=function(a){let o=new Array(a.length);for(let c=0;c<a.length;c+=8){let l=a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3],d=a[c+4]<<24|a[c+5]<<16|a[c+6]<<8|a[c+7],u;u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,o[c]=d>>>24&255,o[c+1]=d>>>16&255,o[c+2]=d>>>8&255,o[c+3]=d&255,o[c+4]=l>>>24&255,o[c+5]=l>>16&255,o[c+6]=l>>8&255,o[c+7]=l&255}return o};let r=new Array(4);r[0]=new Array(4),r[0][0]=[4,0,13,15,12,14,8],r[0][1]=[5,2,16,18,17,19,10],r[0][2]=[6,3,23,22,21,20,9],r[0][3]=[7,1,26,25,27,24,11],r[1]=new Array(4),r[1][0]=[0,6,21,23,20,22,16],r[1][1]=[1,4,0,2,1,3,18],r[1][2]=[2,5,7,6,5,4,17],r[1][3]=[3,7,10,9,11,8,19],r[2]=new Array(4),r[2][0]=[4,0,13,15,12,14,8],r[2][1]=[5,2,16,18,17,19,10],r[2][2]=[6,3,23,22,21,20,9],r[2][3]=[7,1,26,25,27,24,11],r[3]=new Array(4),r[3][0]=[0,6,21,23,20,22,16],r[3][1]=[1,4,0,2,1,3,18],r[3][2]=[2,5,7,6,5,4,17],r[3][3]=[3,7,10,9,11,8,19];let e=new Array(4);e[0]=new Array(4),e[0][0]=[24,25,23,22,18],e[0][1]=[26,27,21,20,22],e[0][2]=[28,29,19,18,25],e[0][3]=[30,31,17,16,28],e[1]=new Array(4),e[1][0]=[3,2,12,13,8],e[1][1]=[1,0,14,15,13],e[1][2]=[7,6,8,9,3],e[1][3]=[5,4,10,11,7],e[2]=new Array(4),e[2][0]=[19,18,28,29,25],e[2][1]=[17,16,30,31,28],e[2][2]=[23,22,24,25,18],e[2][3]=[21,20,26,27,22],e[3]=new Array(4),e[3][0]=[8,9,7,6,3],e[3][1]=[10,11,5,4,7],e[3][2]=[12,13,3,2,8],e[3][3]=[14,15,1,0,13],this.keySchedule=function(a){let o=new Array(8),c=new Array(32),l;for(let A=0;A<4;A++)l=A*4,o[A]=a[l]<<24|a[l+1]<<16|a[l+2]<<8|a[l+3];let d=[6,7,4,5],u=0,f;for(let A=0;A<2;A++)for(let g=0;g<4;g++){for(l=0;l<4;l++){let p=r[g][l];f=o[p[1]],f^=s[4][o[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[5][o[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[6][o[p[4]>>>2]>>>24-8*(p[4]&3)&255],f^=s[7][o[p[5]>>>2]>>>24-8*(p[5]&3)&255],f^=s[d[l]][o[p[6]>>>2]>>>24-8*(p[6]&3)&255],o[p[0]]=f}for(l=0;l<4;l++){let p=e[g][l];f=s[4][o[p[0]>>>2]>>>24-8*(p[0]&3)&255],f^=s[5][o[p[1]>>>2]>>>24-8*(p[1]&3)&255],f^=s[6][o[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[7][o[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[4+l][o[p[4]>>>2]>>>24-8*(p[4]&3)&255],c[u]=f,u++}}for(let A=0;A<16;A++)this.masking[A]=c[A],this.rotate[A]=c[16+A]&31};function t(a,o,c){let l=o+a,d=l<<c|l>>>32-c;return(s[0][d>>>24]^s[1][d>>>16&255])-s[2][d>>>8&255]+s[3][d&255]}function i(a,o,c){let l=o^a,d=l<<c|l>>>32-c;return s[0][d>>>24]-s[1][d>>>16&255]+s[2][d>>>8&255]^s[3][d&255]}function n(a,o,c){let l=o-a,d=l<<c|l>>>32-c;return(s[0][d>>>24]+s[1][d>>>16&255]^s[2][d>>>8&255])-s[3][d&255]}let s=new Array(8);s[0]=[821772500,2678128395,1810681135,1059425402,505495343,2617265619,1610868032,3483355465,3218386727,2294005173,3791863952,2563806837,1852023008,365126098,3269944861,584384398,677919599,3229601881,4280515016,2002735330,1136869587,3744433750,2289869850,2731719981,2714362070,879511577,1639411079,575934255,717107937,2857637483,576097850,2731753936,1725645e3,2810460463,5111599,767152862,2543075244,1251459544,1383482551,3052681127,3089939183,3612463449,1878520045,1510570527,2189125840,2431448366,582008916,3163445557,1265446783,1354458274,3529918736,3202711853,3073581712,3912963487,3029263377,1275016285,4249207360,2905708351,3304509486,1442611557,3585198765,2712415662,2731849581,3248163920,2283946226,208555832,2766454743,1331405426,1447828783,3315356441,3108627284,2957404670,2981538698,3339933917,1669711173,286233437,1465092821,1782121619,3862771680,710211251,980974943,1651941557,430374111,2051154026,704238805,4128970897,3144820574,2857402727,948965521,3333752299,2227686284,718756367,2269778983,2731643755,718440111,2857816721,3616097120,1113355533,2478022182,410092745,1811985197,1944238868,2696854588,1415722873,1682284203,1060277122,1998114690,1503841958,82706478,2315155686,1068173648,845149890,2167947013,1768146376,1993038550,3566826697,3390574031,940016341,3355073782,2328040721,904371731,1205506512,4094660742,2816623006,825647681,85914773,2857843460,1249926541,1417871568,3287612,3211054559,3126306446,1975924523,1353700161,2814456437,2438597621,1800716203,722146342,2873936343,1151126914,4160483941,2877670899,458611604,2866078500,3483680063,770352098,2652916994,3367839148,3940505011,3585973912,3809620402,718646636,2504206814,2914927912,3631288169,2857486607,2860018678,575749918,2857478043,718488780,2069512688,3548183469,453416197,1106044049,3032691430,52586708,3378514636,3459808877,3211506028,1785789304,218356169,3571399134,3759170522,1194783844,1523787992,3007827094,1975193539,2555452411,1341901877,3045838698,3776907964,3217423946,2802510864,2889438986,1057244207,1636348243,3761863214,1462225785,2632663439,481089165,718503062,24497053,3332243209,3344655856,3655024856,3960371065,1195698900,2971415156,3710176158,2115785917,4027663609,3525578417,2524296189,2745972565,3564906415,1372086093,1452307862,2780501478,1476592880,3389271281,18495466,2378148571,901398090,891748256,3279637769,3157290713,2560960102,1447622437,4284372637,216884176,2086908623,1879786977,3588903153,2242455666,2938092967,3559082096,2810645491,758861177,1121993112,215018983,642190776,4169236812,1196255959,2081185372,3508738393,941322904,4124243163,2877523539,1848581667,2205260958,3180453958,2589345134,3694731276,550028657,2519456284,3789985535,2973870856,2093648313,443148163,46942275,2734146937,1117713533,1115362972,1523183689,3717140224,1551984063],s[1]=[522195092,4010518363,1776537470,960447360,4267822970,4005896314,1435016340,1929119313,2913464185,1310552629,3579470798,3724818106,2579771631,1594623892,417127293,2715217907,2696228731,1508390405,3994398868,3925858569,3695444102,4019471449,3129199795,3770928635,3520741761,990456497,4187484609,2783367035,21106139,3840405339,631373633,3783325702,532942976,396095098,3548038825,4267192484,2564721535,2011709262,2039648873,620404603,3776170075,2898526339,3612357925,4159332703,1645490516,223693667,1567101217,3362177881,1029951347,3470931136,3570957959,1550265121,119497089,972513919,907948164,3840628539,1613718692,3594177948,465323573,2659255085,654439692,2575596212,2699288441,3127702412,277098644,624404830,4100943870,2717858591,546110314,2403699828,3655377447,1321679412,4236791657,1045293279,4010672264,895050893,2319792268,494945126,1914543101,2777056443,3894764339,2219737618,311263384,4275257268,3458730721,669096869,3584475730,3835122877,3319158237,3949359204,2005142349,2713102337,2228954793,3769984788,569394103,3855636576,1425027204,108000370,2736431443,3671869269,3043122623,1750473702,2211081108,762237499,3972989403,2798899386,3061857628,2943854345,867476300,964413654,1591880597,1594774276,2179821409,552026980,3026064248,3726140315,2283577634,3110545105,2152310760,582474363,1582640421,1383256631,2043843868,3322775884,1217180674,463797851,2763038571,480777679,2718707717,2289164131,3118346187,214354409,200212307,3810608407,3025414197,2674075964,3997296425,1847405948,1342460550,510035443,4080271814,815934613,833030224,1620250387,1945732119,2703661145,3966000196,1388869545,3456054182,2687178561,2092620194,562037615,1356438536,3409922145,3261847397,1688467115,2150901366,631725691,3840332284,549916902,3455104640,394546491,837744717,2114462948,751520235,2221554606,2415360136,3999097078,2063029875,803036379,2702586305,821456707,3019566164,360699898,4018502092,3511869016,3677355358,2402471449,812317050,49299192,2570164949,3259169295,2816732080,3331213574,3101303564,2156015656,3705598920,3546263921,143268808,3200304480,1638124008,3165189453,3341807610,578956953,2193977524,3638120073,2333881532,807278310,658237817,2969561766,1641658566,11683945,3086995007,148645947,1138423386,4158756760,1981396783,2401016740,3699783584,380097457,2680394679,2803068651,3334260286,441530178,4016580796,1375954390,761952171,891809099,2183123478,157052462,3683840763,1592404427,341349109,2438483839,1417898363,644327628,2233032776,2353769706,2201510100,220455161,1815641738,182899273,2995019788,3627381533,3702638151,2890684138,1052606899,588164016,1681439879,4038439418,2405343923,4229449282,167996282,1336969661,1688053129,2739224926,1543734051,1046297529,1138201970,2121126012,115334942,1819067631,1902159161,1941945968,2206692869,1159982321],s[2]=[2381300288,637164959,3952098751,3893414151,1197506559,916448331,2350892612,2932787856,3199334847,4009478890,3905886544,1373570990,2450425862,4037870920,3778841987,2456817877,286293407,124026297,3001279700,1028597854,3115296800,4208886496,2691114635,2188540206,1430237888,1218109995,3572471700,308166588,570424558,2187009021,2455094765,307733056,1310360322,3135275007,1384269543,2388071438,863238079,2359263624,2801553128,3380786597,2831162807,1470087780,1728663345,4072488799,1090516929,532123132,2389430977,1132193179,2578464191,3051079243,1670234342,1434557849,2711078940,1241591150,3314043432,3435360113,3091448339,1812415473,2198440252,267246943,796911696,3619716990,38830015,1526438404,2806502096,374413614,2943401790,1489179520,1603809326,1920779204,168801282,260042626,2358705581,1563175598,2397674057,1356499128,2217211040,514611088,2037363785,2186468373,4022173083,2792511869,2913485016,1173701892,4200428547,3896427269,1334932762,2455136706,602925377,2835607854,1613172210,41346230,2499634548,2457437618,2188827595,41386358,4172255629,1313404830,2405527007,3801973774,2217704835,873260488,2528884354,2478092616,4012915883,2555359016,2006953883,2463913485,575479328,2218240648,2099895446,660001756,2341502190,3038761536,3888151779,3848713377,3286851934,1022894237,1620365795,3449594689,1551255054,15374395,3570825345,4249311020,4151111129,3181912732,310226346,1133119310,530038928,136043402,2476768958,3107506709,2544909567,1036173560,2367337196,1681395281,1758231547,3641649032,306774401,1575354324,3716085866,1990386196,3114533736,2455606671,1262092282,3124342505,2768229131,4210529083,1833535011,423410938,660763973,2187129978,1639812e3,3508421329,3467445492,310289298,272797111,2188552562,2456863912,310240523,677093832,1013118031,901835429,3892695601,1116285435,3036471170,1337354835,243122523,520626091,277223598,4244441197,4194248841,1766575121,594173102,316590669,742362309,3536858622,4176435350,3838792410,2501204839,1229605004,3115755532,1552908988,2312334149,979407927,3959474601,1148277331,176638793,3614686272,2083809052,40992502,1340822838,2731552767,3535757508,3560899520,1354035053,122129617,7215240,2732932949,3118912700,2718203926,2539075635,3609230695,3725561661,1928887091,2882293555,1988674909,2063640240,2491088897,1459647954,4189817080,2302804382,1113892351,2237858528,1927010603,4002880361,1856122846,1594404395,2944033133,3855189863,3474975698,1643104450,4054590833,3431086530,1730235576,2984608721,3084664418,2131803598,4178205752,267404349,1617849798,1616132681,1462223176,736725533,2327058232,551665188,2945899023,1749386277,2575514597,1611482493,674206544,2201269090,3642560800,728599968,1680547377,2620414464,1388111496,453204106,4156223445,1094905244,2754698257,2201108165,3757000246,2704524545,3922940700,3996465027],s[3]=[2645754912,532081118,2814278639,3530793624,1246723035,1689095255,2236679235,4194438865,2116582143,3859789411,157234593,2045505824,4245003587,1687664561,4083425123,605965023,672431967,1336064205,3376611392,214114848,4258466608,3232053071,489488601,605322005,3998028058,264917351,1912574028,756637694,436560991,202637054,135989450,85393697,2152923392,3896401662,2895836408,2145855233,3535335007,115294817,3147733898,1922296357,3464822751,4117858305,1037454084,2725193275,2127856640,1417604070,1148013728,1827919605,642362335,2929772533,909348033,1346338451,3547799649,297154785,1917849091,4161712827,2883604526,3968694238,1469521537,3780077382,3375584256,1763717519,136166297,4290970789,1295325189,2134727907,2798151366,1566297257,3672928234,2677174161,2672173615,965822077,2780786062,289653839,1133871874,3491843819,35685304,1068898316,418943774,672553190,642281022,2346158704,1954014401,3037126780,4079815205,2030668546,3840588673,672283427,1776201016,359975446,3750173538,555499703,2769985273,1324923,69110472,152125443,3176785106,3822147285,1340634837,798073664,1434183902,15393959,216384236,1303690150,3881221631,3711134124,3960975413,106373927,2578434224,1455997841,1801814300,1578393881,1854262133,3188178946,3258078583,2302670060,1539295533,3505142565,3078625975,2372746020,549938159,3278284284,2620926080,181285381,2865321098,3970029511,68876850,488006234,1728155692,2608167508,836007927,2435231793,919367643,3339422534,3655756360,1457871481,40520939,1380155135,797931188,234455205,2255801827,3990488299,397000196,739833055,3077865373,2871719860,4022553888,772369276,390177364,3853951029,557662966,740064294,1640166671,1699928825,3535942136,622006121,3625353122,68743880,1742502,219489963,1664179233,1577743084,1236991741,410585305,2366487942,823226535,1050371084,3426619607,3586839478,212779912,4147118561,1819446015,1911218849,530248558,3486241071,3252585495,2886188651,3410272728,2342195030,20547779,2982490058,3032363469,3631753222,312714466,1870521650,1493008054,3491686656,615382978,4103671749,2534517445,1932181,2196105170,278426614,6369430,3274544417,2913018367,697336853,2143000447,2946413531,701099306,1558357093,2805003052,3500818408,2321334417,3567135975,216290473,3591032198,23009561,1996984579,3735042806,2024298078,3739440863,569400510,2339758983,3016033873,3097871343,3639523026,3844324983,3256173865,795471839,2951117563,4101031090,4091603803,3603732598,971261452,534414648,428311343,3389027175,2844869880,694888862,1227866773,2456207019,3043454569,2614353370,3749578031,3676663836,459166190,4132644070,1794958188,51825668,2252611902,3084671440,2036672799,3436641603,1099053433,2469121526,3059204941,1323291266,2061838604,1018778475,2233344254,2553501054,334295216,3556750194,1065731521,183467730],s[4]=[2127105028,745436345,2601412319,2788391185,3093987327,500390133,1155374404,389092991,150729210,3891597772,3523549952,1935325696,716645080,946045387,2901812282,1774124410,3869435775,4039581901,3293136918,3438657920,948246080,363898952,3867875531,1286266623,1598556673,68334250,630723836,1104211938,1312863373,613332731,2377784574,1101634306,441780740,3129959883,1917973735,2510624549,3238456535,2544211978,3308894634,1299840618,4076074851,1756332096,3977027158,297047435,3790297736,2265573040,3621810518,1311375015,1667687725,47300608,3299642885,2474112369,201668394,1468347890,576830978,3594690761,3742605952,1958042578,1747032512,3558991340,1408974056,3366841779,682131401,1033214337,1545599232,4265137049,206503691,103024618,2855227313,1337551222,2428998917,2963842932,4015366655,3852247746,2796956967,3865723491,3747938335,247794022,3755824572,702416469,2434691994,397379957,851939612,2314769512,218229120,1380406772,62274761,214451378,3170103466,2276210409,3845813286,28563499,446592073,1693330814,3453727194,29968656,3093872512,220656637,2470637031,77972100,1667708854,1358280214,4064765667,2395616961,325977563,4277240721,4220025399,3605526484,3355147721,811859167,3069544926,3962126810,652502677,3075892249,4132761541,3498924215,1217549313,3250244479,3858715919,3053989961,1538642152,2279026266,2875879137,574252750,3324769229,2651358713,1758150215,141295887,2719868960,3515574750,4093007735,4194485238,1082055363,3417560400,395511885,2966884026,179534037,3646028556,3738688086,1092926436,2496269142,257381841,3772900718,1636087230,1477059743,2499234752,3811018894,2675660129,3285975680,90732309,1684827095,1150307763,1723134115,3237045386,1769919919,1240018934,815675215,750138730,2239792499,1234303040,1995484674,138143821,675421338,1145607174,1936608440,3238603024,2345230278,2105974004,323969391,779555213,3004902369,2861610098,1017501463,2098600890,2628620304,2940611490,2682542546,1171473753,3656571411,3687208071,4091869518,393037935,159126506,1662887367,1147106178,391545844,3452332695,1891500680,3016609650,1851642611,546529401,1167818917,3194020571,2848076033,3953471836,575554290,475796850,4134673196,450035699,2351251534,844027695,1080539133,86184846,1554234488,3692025454,1972511363,2018339607,1491841390,1141460869,1061690759,4244549243,2008416118,2351104703,2868147542,1598468138,722020353,1027143159,212344630,1387219594,1725294528,3745187956,2500153616,458938280,4129215917,1828119673,544571780,3503225445,2297937496,1241802790,267843827,2694610800,1397140384,1558801448,3782667683,1806446719,929573330,2234912681,400817706,616011623,4121520928,3603768725,1761550015,1968522284,4053731006,4192232858,4005120285,872482584,3140537016,3894607381,2287405443,1963876937,3663887957,1584857e3,2975024454,1833426440,4025083860],s[5]=[4143615901,749497569,1285769319,3795025788,2514159847,23610292,3974978748,844452780,3214870880,3751928557,2213566365,1676510905,448177848,3730751033,4086298418,2307502392,871450977,3222878141,4110862042,3831651966,2735270553,1310974780,2043402188,1218528103,2736035353,4274605013,2702448458,3936360550,2693061421,162023535,2827510090,687910808,23484817,3784910947,3371371616,779677500,3503626546,3473927188,4157212626,3500679282,4248902014,2466621104,3899384794,1958663117,925738300,1283408968,3669349440,1840910019,137959847,2679828185,1239142320,1315376211,1547541505,1690155329,739140458,3128809933,3933172616,3876308834,905091803,1548541325,4040461708,3095483362,144808038,451078856,676114313,2861728291,2469707347,993665471,373509091,2599041286,4025009006,4170239449,2149739950,3275793571,3749616649,2794760199,1534877388,572371878,2590613551,1753320020,3467782511,1405125690,4270405205,633333386,3026356924,3475123903,632057672,2846462855,1404951397,3882875879,3915906424,195638627,2385783745,3902872553,1233155085,3355999740,2380578713,2702246304,2144565621,3663341248,3894384975,2502479241,4248018925,3094885567,1594115437,572884632,3385116731,767645374,1331858858,1475698373,3793881790,3532746431,1321687957,619889600,1121017241,3440213920,2070816767,2833025776,1933951238,4095615791,890643334,3874130214,859025556,360630002,925594799,1764062180,3920222280,4078305929,979562269,2810700344,4087740022,1949714515,546639971,1165388173,3069891591,1495988560,922170659,1291546247,2107952832,1813327274,3406010024,3306028637,4241950635,153207855,2313154747,1608695416,1150242611,1967526857,721801357,1220138373,3691287617,3356069787,2112743302,3281662835,1111556101,1778980689,250857638,2298507990,673216130,2846488510,3207751581,3562756981,3008625920,3417367384,2198807050,529510932,3547516680,3426503187,2364944742,102533054,2294910856,1617093527,1204784762,3066581635,1019391227,1069574518,1317995090,1691889997,3661132003,510022745,3238594800,1362108837,1817929911,2184153760,805817662,1953603311,3699844737,120799444,2118332377,207536705,2282301548,4120041617,145305846,2508124933,3086745533,3261524335,1877257368,2977164480,3160454186,2503252186,4221677074,759945014,254147243,2767453419,3801518371,629083197,2471014217,907280572,3900796746,940896768,2751021123,2625262786,3161476951,3661752313,3260732218,1425318020,2977912069,1496677566,3988592072,2140652971,3126511541,3069632175,977771578,1392695845,1698528874,1411812681,1369733098,1343739227,3620887944,1142123638,67414216,3102056737,3088749194,1626167401,2546293654,3941374235,697522451,33404913,143560186,2595682037,994885535,1247667115,3859094837,2699155541,3547024625,4114935275,2968073508,3199963069,2732024527,1237921620,951448369,1898488916,1211705605,2790989240,2233243581,3598044975],s[6]=[2246066201,858518887,1714274303,3485882003,713916271,2879113490,3730835617,539548191,36158695,1298409750,419087104,1358007170,749914897,2989680476,1261868530,2995193822,2690628854,3443622377,3780124940,3796824509,2976433025,4259637129,1551479e3,512490819,1296650241,951993153,2436689437,2460458047,144139966,3136204276,310820559,3068840729,643875328,1969602020,1680088954,2185813161,3283332454,672358534,198762408,896343282,276269502,3014846926,84060815,197145886,376173866,3943890818,3813173521,3545068822,1316698879,1598252827,2633424951,1233235075,859989710,2358460855,3503838400,3409603720,1203513385,1193654839,2792018475,2060853022,207403770,1144516871,3068631394,1121114134,177607304,3785736302,326409831,1929119770,2983279095,4183308101,3474579288,3200513878,3228482096,119610148,1170376745,3378393471,3163473169,951863017,3337026068,3135789130,2907618374,1183797387,2015970143,4045674555,2182986399,2952138740,3928772205,384012900,2454997643,10178499,2879818989,2596892536,111523738,2995089006,451689641,3196290696,235406569,1441906262,3890558523,3013735005,4158569349,1644036924,376726067,1006849064,3664579700,2041234796,1021632941,1374734338,2566452058,371631263,4007144233,490221539,206551450,3140638584,1053219195,1853335209,3412429660,3562156231,735133835,1623211703,3104214392,2738312436,4096837757,3366392578,3110964274,3956598718,3196820781,2038037254,3877786376,2339753847,300912036,3766732888,2372630639,1516443558,4200396704,1574567987,4069441456,4122592016,2699739776,146372218,2748961456,2043888151,35287437,2596680554,655490400,1132482787,110692520,1031794116,2188192751,1324057718,1217253157,919197030,686247489,3261139658,1028237775,3135486431,3059715558,2460921700,986174950,2661811465,4062904701,2752986992,3709736643,367056889,1353824391,731860949,1650113154,1778481506,784341916,357075625,3608602432,1074092588,2480052770,3811426202,92751289,877911070,3600361838,1231880047,480201094,3756190983,3094495953,434011822,87971354,363687820,1717726236,1901380172,3926403882,2481662265,400339184,1490350766,2661455099,1389319756,2558787174,784598401,1983468483,30828846,3550527752,2716276238,3841122214,1765724805,1955612312,1277890269,1333098070,1564029816,2704417615,1026694237,3287671188,1260819201,3349086767,1016692350,1582273796,1073413053,1995943182,694588404,1025494639,3323872702,3551898420,4146854327,453260480,1316140391,1435673405,3038941953,3486689407,1622062951,403978347,817677117,950059133,4246079218,3278066075,1486738320,1417279718,481875527,2549965225,3933690356,760697757,1452955855,3897451437,1177426808,1702951038,4085348628,2447005172,1084371187,3516436277,3068336338,1073369276,1027665953,3284188590,1230553676,1368340146,2226246512,267243139,2274220762,4070734279,2497715176,2423353163,2504755875],s[7]=[3793104909,3151888380,2817252029,895778965,2005530807,3871412763,237245952,86829237,296341424,3851759377,3974600970,2475086196,709006108,1994621201,2972577594,937287164,3734691505,168608556,3189338153,2225080640,3139713551,3033610191,3025041904,77524477,185966941,1208824168,2344345178,1721625922,3354191921,1066374631,1927223579,1971335949,2483503697,1551748602,2881383779,2856329572,3003241482,48746954,1398218158,2050065058,313056748,4255789917,393167848,1912293076,940740642,3465845460,3091687853,2522601570,2197016661,1727764327,364383054,492521376,1291706479,3264136376,1474851438,1685747964,2575719748,1619776915,1814040067,970743798,1561002147,2925768690,2123093554,1880132620,3151188041,697884420,2550985770,2607674513,2659114323,110200136,1489731079,997519150,1378877361,3527870668,478029773,2766872923,1022481122,431258168,1112503832,897933369,2635587303,669726182,3383752315,918222264,163866573,3246985393,3776823163,114105080,1903216136,761148244,3571337562,1690750982,3166750252,1037045171,1888456500,2010454850,642736655,616092351,365016990,1185228132,4174898510,1043824992,2023083429,2241598885,3863320456,3279669087,3674716684,108438443,2132974366,830746235,606445527,4173263986,2204105912,1844756978,2532684181,4245352700,2969441100,3796921661,1335562986,4061524517,2720232303,2679424040,634407289,885462008,3294724487,3933892248,2094100220,339117932,4048830727,3202280980,1458155303,2689246273,1022871705,2464987878,3714515309,353796843,2822958815,4256850100,4052777845,551748367,618185374,3778635579,4020649912,1904685140,3069366075,2670879810,3407193292,2954511620,4058283405,2219449317,3135758300,1120655984,3447565834,1474845562,3577699062,550456716,3466908712,2043752612,881257467,869518812,2005220179,938474677,3305539448,3850417126,1315485940,3318264702,226533026,965733244,321539988,1136104718,804158748,573969341,3708209826,937399083,3290727049,2901666755,1461057207,4013193437,4066861423,3242773476,2421326174,1581322155,3028952165,786071460,3900391652,3918438532,1485433313,4023619836,3708277595,3678951060,953673138,1467089153,1930354364,1533292819,2492563023,1346121658,1685000834,1965281866,3765933717,4190206607,2052792609,3515332758,690371149,3125873887,2180283551,2903598061,3933952357,436236910,289419410,14314871,1242357089,2904507907,1616633776,2666382180,585885352,3471299210,2699507360,1432659641,277164553,3354103607,770115018,2303809295,3741942315,3177781868,2853364978,2269453327,3774259834,987383833,1290892879,225909803,1741533526,890078084,1496906255,1111072499,916028167,243534141,1252605537,2204162171,531204876,290011180,3916834213,102027703,237315147,209093447,1486785922,220223953,2758195998,4175039106,82940208,3127791296,2569425252,518464269,1353887104,3941492737,2377294467,3935040926]}function SA(r){this.cast5=new tse,this.cast5.setKey(r),this.encrypt=function(e){return this.cast5.encrypt(e)}}function Bs(r,e){return(r<<e|r>>>32-e)&wn}function va(r,e){return r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24}function Xo(r,e,t){r.splice(e,4,t&255,t>>>8&255,t>>>16&255,t>>>24&255)}function We(r,e){return r>>>e*8&255}function rse(){let r=null,e=null,t=-1,i=[],n=[[],[],[],[]];function s(g){r=g;let p,I,m,w,B,C=[],x=[],_=[],R,U=[],T,D,b,Q=[[8,1,7,13,6,15,3,2,0,11,5,9,14,12,10,4],[2,8,11,13,15,7,6,14,3,1,9,4,0,10,12,5]],v=[[14,12,11,8,1,2,3,5,15,4,10,6,7,0,9,13],[1,14,2,11,4,12,3,7,6,13,10,5,15,9,0,8]],E=[[11,10,5,14,6,13,9,0,12,8,15,3,2,4,7,1],[4,12,7,5,1,6,9,10,0,14,13,8,2,11,3,15]],P=[[13,7,15,4,1,2,6,14,9,11,3,0,8,5,12,10],[11,9,5,1,12,3,13,14,6,4,7,15,2,0,8,10]],N=[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15],j=[0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7],z=[[],[]],L=[[],[],[],[]];function G(ee){return ee^ee>>2^[0,90,180,238][ee&3]}function K(ee){return ee^ee>>1^ee>>2^[0,238,180,90][ee&3]}function $(ee,Z){let ye,de,Ae;for(ye=0;ye<8;ye++)de=Z>>>24,Z=Z<<8&wn|ee>>>24,ee=ee<<8&wn,Ae=de<<1,de&128&&(Ae^=333),Z^=de^Ae<<16,Ae^=de>>>1,de&1&&(Ae^=166),Z^=Ae<<24|Ae<<8;return Z}function te(ee,Z){let ye=Z>>4,de=Z&15,Ae=Q[ee][ye^de],De=v[ee][N[de]^j[ye]];return P[ee][N[De]^j[Ae]]<<4|E[ee][Ae^De]}function re(ee,Z){let ye=We(ee,0),de=We(ee,1),Ae=We(ee,2),De=We(ee,3);switch(R){case 4:ye=z[1][ye]^We(Z[3],0),de=z[0][de]^We(Z[3],1),Ae=z[0][Ae]^We(Z[3],2),De=z[1][De]^We(Z[3],3);case 3:ye=z[1][ye]^We(Z[2],0),de=z[1][de]^We(Z[2],1),Ae=z[0][Ae]^We(Z[2],2),De=z[0][De]^We(Z[2],3);case 2:ye=z[0][z[0][ye]^We(Z[1],0)]^We(Z[0],0),de=z[0][z[1][de]^We(Z[1],1)]^We(Z[0],1),Ae=z[1][z[0][Ae]^We(Z[1],2)]^We(Z[0],2),De=z[1][z[1][De]^We(Z[1],3)]^We(Z[0],3)}return L[0][ye]^L[1][de]^L[2][Ae]^L[3][De]}for(r=r.slice(0,32),p=r.length;p!==16&&p!==24&&p!==32;)r[p++]=0;for(p=0;p<r.length;p+=4)_[p>>2]=va(r,p);for(p=0;p<256;p++)z[0][p]=te(0,p),z[1][p]=te(1,p);for(p=0;p<256;p++)T=z[1][p],D=G(T),b=K(T),L[0][p]=T+(D<<8)+(b<<16)+(b<<24),L[2][p]=D+(b<<8)+(T<<16)+(b<<24),T=z[0][p],D=G(T),b=K(T),L[1][p]=b+(b<<8)+(D<<16)+(T<<24),L[3][p]=D+(T<<8)+(b<<16)+(D<<24);for(R=_.length/2,p=0;p<R;p++)I=_[p+p],C[p]=I,m=_[p+p+1],x[p]=m,U[R-p-1]=$(I,m);for(p=0;p<40;p+=2)I=16843009*p,m=I+16843009,I=re(I,C),m=Bs(re(m,x),8),i[p]=I+m&wn,i[p+1]=Bs(I+2*m,9);for(p=0;p<256;p++)switch(I=m=w=B=p,R){case 4:I=z[1][I]^We(U[3],0),m=z[0][m]^We(U[3],1),w=z[0][w]^We(U[3],2),B=z[1][B]^We(U[3],3);case 3:I=z[1][I]^We(U[2],0),m=z[1][m]^We(U[2],1),w=z[0][w]^We(U[2],2),B=z[0][B]^We(U[2],3);case 2:n[0][p]=L[0][z[0][z[0][I]^We(U[1],0)]^We(U[0],0)],n[1][p]=L[1][z[0][z[1][m]^We(U[1],1)]^We(U[0],1)],n[2][p]=L[2][z[1][z[0][w]^We(U[1],2)]^We(U[0],2)],n[3][p]=L[3][z[1][z[1][B]^We(U[1],3)]^We(U[0],3)]}}function a(g){return n[0][We(g,0)]^n[1][We(g,1)]^n[2][We(g,2)]^n[3][We(g,3)]}function o(g){return n[0][We(g,3)]^n[1][We(g,0)]^n[2][We(g,1)]^n[3][We(g,2)]}function c(g,p){let I=a(p[0]),m=o(p[1]);p[2]=Bs(p[2]^I+m+i[4*g+8]&wn,31),p[3]=Bs(p[3],1)^I+2*m+i[4*g+9]&wn,I=a(p[2]),m=o(p[3]),p[0]=Bs(p[0]^I+m+i[4*g+10]&wn,31),p[1]=Bs(p[1],1)^I+2*m+i[4*g+11]&wn}function l(g,p){let I=a(p[0]),m=o(p[1]);p[2]=Bs(p[2],1)^I+m+i[4*g+10]&wn,p[3]=Bs(p[3]^I+2*m+i[4*g+11]&wn,31),I=a(p[2]),m=o(p[3]),p[0]=Bs(p[0],1)^I+m+i[4*g+8]&wn,p[1]=Bs(p[1]^I+2*m+i[4*g+9]&wn,31)}function d(){i=[],n=[[],[],[],[]]}function u(g,p){e=g,t=p;let I=[va(e,t)^i[0],va(e,t+4)^i[1],va(e,t+8)^i[2],va(e,t+12)^i[3]];for(let m=0;m<8;m++)c(m,I);return Xo(e,t,I[2]^i[4]),Xo(e,t+4,I[3]^i[5]),Xo(e,t+8,I[0]^i[6]),Xo(e,t+12,I[1]^i[7]),t+=16,e}function f(g,p){e=g,t=p;let I=[va(e,t)^i[4],va(e,t+4)^i[5],va(e,t+8)^i[6],va(e,t+12)^i[7]];for(let m=7;m>=0;m--)l(m,I);Xo(e,t,I[2]^i[0]),Xo(e,t+4,I[3]^i[1]),Xo(e,t+8,I[0]^i[2]),Xo(e,t+12,I[1]^i[3]),t+=16}function A(){return e}return{name:"twofish",blocksize:128/8,open:s,close:d,encrypt:u,decrypt:f,finalize:A}}function DA(r){this.tf=rse(),this.tf.open(Array.from(r),0),this.encrypt=function(e){return this.tf.encrypt(Array.from(e),0)}}function es(){}function _A(r){this.bf=new es,this.bf.init(r),this.encrypt=function(e){return this.bf.encryptBlock(e)}}function pu(r,e,t,i){r[e]+=t[i],r[e+1]+=t[i+1]+(r[e]<t[i])}function wR(r,e){r[0]+=e,r[1]+=r[0]<e}function Zo(r,e,t,i,n,s,a,o){pu(r,t,r,i),pu(r,t,e,a);let c=r[s]^r[t],l=r[s+1]^r[t+1];r[s]=l,r[s+1]=c,pu(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=c>>>24^l<<8,r[i+1]=l>>>24^c<<8,pu(r,t,r,i),pu(r,t,e,o),c=r[s]^r[t],l=r[s+1]^r[t+1],r[s]=c>>>16^l<<16,r[s+1]=l>>>16^c<<16,pu(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=l>>>31^c<<1,r[i+1]=c>>>31^l<<1}function xR(r,e){let t=new Uint32Array(32),i=new Uint32Array(r.b.buffer,r.b.byteOffset,32);for(let s=0;s<16;s++)t[s]=r.h[s],t[s+16]=L9[s];t[24]^=r.t0[0],t[25]^=r.t0[1];let n=e?4294967295:0;t[28]^=n,t[29]^=n;for(let s=0;s<12;s++){let a=s<<4;Zo(t,i,0,8,16,24,li[a+0],li[a+1]),Zo(t,i,2,10,18,26,li[a+2],li[a+3]),Zo(t,i,4,12,20,28,li[a+4],li[a+5]),Zo(t,i,6,14,22,30,li[a+6],li[a+7]),Zo(t,i,0,10,20,30,li[a+8],li[a+9]),Zo(t,i,2,12,22,24,li[a+10],li[a+11]),Zo(t,i,4,14,16,26,li[a+12],li[a+13]),Zo(t,i,6,8,18,28,li[a+14],li[a+15])}for(let s=0;s<16;s++)r.h[s]^=t[s]^t[s+16]}function mw(r,e,t,i){if(r>Xb)throw new Error(`outlen must be at most ${Xb} (given: ${r})`);return new Wb(r,e,t,i)}function Ti(r,e,t){return r[t+0]=e,r[t+1]=e>>8,r[t+2]=e>>16,r[t+3]=e>>24,r}function yl(r,e,t){if(e>Number.MAX_SAFE_INTEGER)throw new Error("LE64: large numbers unsupported");let i=e;for(let n=t;n<t+7;n++)r[n]=i,i=(i-r[n])/256;return r}function db(r,e,t){let i=new Uint8Array(64),n=new Uint8Array(4+e.length);if(Ti(n,r,0),n.set(e,4),r<=64)return mw(r).update(n).digest(t),t;let s=Math.ceil(r/32)-2;for(let o=0;o<s;o++)mw(64).update(o===0?n:i).digest(i),t.set(i.subarray(0,32),o*32);let a=new Uint8Array(mw(r-32*s).update(i).digest());return t.set(a,s*32),t}function CR(r,e,t,i){return r.fn.XOR(e.byteOffset,t.byteOffset,i.byteOffset),e}function pse(r,e,t,i){return r.fn.G(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function mse(r,e,t,i){return r.fn.G2(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function*yse(r,e,t,i,n,s,a,o){r.refs.prngTmp.fill(0);let c=r.refs.prngTmp.subarray(0,48);yl(c,e,0),yl(c,t,8),yl(c,i,16),yl(c,n,24),yl(c,s,32),yl(c,F2,40);for(let l=1;l<=a;l++){yl(r.refs.prngTmp,l,c.length);let d=mse(r,r.refs.ZERO1024,r.refs.prngTmp,r.refs.prngR);for(let u=l===1?o*8:0;u<d.length;u+=8)yield d.subarray(u,u+8)}return[]}function Ise({type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:a,parallelism:o,memorySize:c,passes:l}){let d=(u,f,A,g)=>{if(f<A||f>g)throw new Error(`${u} size should be between ${A} and ${g} bytes`)};if(r!==F2||e!==H9)throw new Error("Unsupported type or version");return d("password",i,dse,lse),d("salt",n,cse,ose),d("tag",t,ase,sse),d("memory",c,8*o,use),s&&d("associated data",s,0,fse),a&&d("secret",a,0,hse),{type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:a,lanes:o,memorySize:c,passes:l}}function xse(r,{memory:e,instance:t}){if(!gse)throw new Error("BigEndian system not supported");let i=Ise({type:F2,version:H9,...r}),{G:n,G2:s,xor:a,getLZ:o}=t.exports,c={},l={};l.G=n,l.G2=s,l.XOR=a;let d=4*i.lanes*Math.floor(i.memorySize/(4*i.lanes)),u=d*ka+10*K9;if(e.buffer.byteLength<u){let D=Math.ceil((u-e.buffer.byteLength)/wse);e.grow(D)}let f=0;c.gZ=new Uint8Array(e.buffer,f,ka),f+=c.gZ.length,c.prngR=new Uint8Array(e.buffer,f,ka),f+=c.prngR.length,c.prngTmp=new Uint8Array(e.buffer,f,ka),f+=c.prngTmp.length,c.ZERO1024=new Uint8Array(e.buffer,f,1024),f+=c.ZERO1024.length;let A=new Uint32Array(e.buffer,f,2);f+=A.length*Uint32Array.BYTES_PER_ELEMENT;let g={fn:l,refs:c},p=new Uint8Array(e.buffer,f,ka);f+=p.length;let I=new Uint8Array(e.buffer,f,i.memorySize*ka),m=new Uint8Array(e.buffer,0,f),w=Cse(i),B=d/i.lanes,C=new Array(i.lanes).fill(null).map(()=>new Array(B)),x=(D,b)=>(C[D][b]=I.subarray(D*B*1024+b*1024,D*B*1024+b*1024+ka),C[D][b]);for(let D=0;D<i.lanes;D++){let b=new Uint8Array(w.length+8);b.set(w),Ti(b,0,w.length),Ti(b,D,w.length+4),db(ka,b,x(D,0)),Ti(b,1,w.length),db(ka,b,x(D,1))}let _=4,R=B/_;for(let D=0;D<i.passes;D++)for(let b=0;b<_;b++){let Q=D===0&&b<=1;for(let v=0;v<i.lanes;v++){let E=b===0&&D===0?2:0,P=Q?yse(g,D,v,b,d,i.passes,R,E):null;for(E;E<R;E++){let N=b*R+E,j=N>0?C[v][N-1]:C[v][B-1],z=Q?P.next().value:j;o(A.byteOffset,z.byteOffset,v,i.lanes,D,b,E,_,R);let L=A[0],G=A[1];D===0&&x(v,N),pse(g,j,C[L][G],D>0?p:C[v][N]),D>0&&CR(g,C[v][N],p,C[v][N])}}}let U=C[0][B-1];for(let D=1;D<i.lanes;D++)CR(g,U,U,C[D][B-1]);let T=db(i.tagLength,U,new Uint8Array(i.tagLength));return m.fill(0),e.grow(0),T}function Cse(r){let e=mw(Ase),t=new Uint8Array(4),i=new Uint8Array(24);Ti(i,r.lanes,0),Ti(i,r.tagLength,4),Ti(i,r.memorySize,8),Ti(i,r.passes,12),Ti(i,r.version,16),Ti(i,r.type,20);let n=[i];r.password?(n.push(Ti(new Uint8Array(4),r.password.length,0)),n.push(r.password)):n.push(t),r.salt?(n.push(Ti(new Uint8Array(4),r.salt.length,0)),n.push(r.salt)):n.push(t),r.secret?(n.push(Ti(new Uint8Array(4),r.secret.length,0)),n.push(r.secret)):n.push(t),r.ad?(n.push(Ti(new Uint8Array(4),r.ad.length,0)),n.push(r.ad)):n.push(t),e.update(Ese(n));let s=e.digest();return new Uint8Array(s)}function Ese(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!(r[n]instanceof Uint8Array))throw new Error("concatArrays: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(n=>{t.set(n,i),i+=n.length}),t}async function Bse(r,e,t){let i={env:{memory:r}};if(lw===void 0)try{let s=await e(i);return lw=!0,s}catch{lw=!1}return(lw?e:t)(i)}async function bse(r,e){let t=new WebAssembly.Memory({initial:1040,maximum:65536}),i=await Bse(t,r,e);return s=>xse(s,{instance:i.instance,memory:t})}function G9(r,e,t,i){function n(a,o,c){var l=c?WebAssembly.instantiateStreaming:WebAssembly.instantiate,d=c?WebAssembly.compileStreaming:WebAssembly.compile;return o?l(a,o):d(a)}var s=null;return s=Buffer.from(t,"base64"),n(s,i,!1)}function vse(r){return G9(0,null,"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",r)}function kse(r){return G9(0,null,"AGFzbQEAAAABPwhgBH9/f38AYAABf2AAAGADf39/AGARf39/f39/f39/f39/f39/f38AYAl/f39/f39/f38Bf2ABfwBgAX8BfwITAQNlbnYGbWVtb3J5AgGQCICABAMLCgIDBAAABQEGBwEEBQFwAQICBgkBfwFBkIjAAgsHfQoDeG9yAAEBRwADAkcyAAQFZ2V0TFoABRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALX2luaXRpYWxpemUAABBfX2Vycm5vX2xvY2F0aW9uAAkJc3RhY2tTYXZlAAYMc3RhY2tSZXN0b3JlAAcKc3RhY2tBbGxvYwAICQcBAEEBCwEACssaCgMAAQtQAQJ/A0AgACAEQQN0IgNqIAIgA2opAwAgASADaikDAIU3AwAgACADQQhyIgNqIAIgA2opAwAgASADaikDAIU3AwAgBEECaiIEQYABRw0ACwveDwICfgF/IAAgAUEDdGoiEyATKQMAIhEgACAFQQN0aiIBKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA1BA3RqIgUgESAFKQMAhUIgiSIRNwMAIAAgCUEDdGoiCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIoiSIRNwMAIBMgESATKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAFIBEgBSkDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgASARIAEpAwCFQgGJNwMAIAAgAkEDdGoiDSANKQMAIhEgACAGQQN0aiICKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA5BA3RqIgYgESAGKQMAhUIgiSIRNwMAIAAgCkEDdGoiCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIoiSIRNwMAIA0gESANKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAKIBEgCikDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAiARIAIpAwCFQgGJNwMAIAAgA0EDdGoiDiAOKQMAIhEgACAHQQN0aiIDKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA9BA3RqIgcgESAHKQMAhUIgiSIRNwMAIAAgC0EDdGoiCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAMgESADKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAHIBEgBykDAIVCMIkiETcDACALIBEgCykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQgGJNwMAIAAgBEEDdGoiDyAPKQMAIhEgACAIQQN0aiIEKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIBBBA3RqIgggESAIKQMAhUIgiSIRNwMAIAAgDEEDdGoiACARIAApAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA8gESAPKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAIIBEgCCkDAIVCMIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIBMgEykDACIRIAIpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAggESAIKQMAhUIgiSIRNwMAIAsgESALKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACACIBEgAikDAIVCKIkiETcDACATIBEgEykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgCCARIAgpAwCFQjCJIhE3AwAgCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIBiTcDACANIA0pAwAiESADKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAFIBEgBSkDAIVCIIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQiiJIhE3AwAgDSARIA0pAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAUgESAFKQMAhUIwiSIRNwMAIAAgESAAKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACADIBEgAykDAIVCAYk3AwAgDiAOKQMAIhEgBCkDACISfCARQgGGQv7///8fgyASQv////8Pg358IhE3AwAgBiARIAYpAwCFQiCJIhE3AwAgCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIA8gDykDACIRIAEpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAcgESAHKQMAhUIgiSIRNwMAIAogESAKKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACABIBEgASkDAIVCKIkiETcDACAPIBEgDykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgByARIAcpAwCFQjCJIhE3AwAgCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIBiTcDAAvdCAEPfwNAIAIgBUEDdCIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAIgBkEIciIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAVBAmoiBUGAAUcNAAsDQCADIARBA3QiAGogACACaikDADcDACADIARBAXIiAEEDdCIBaiABIAJqKQMANwMAIAMgBEECciIBQQN0IgVqIAIgBWopAwA3AwAgAyAEQQNyIgVBA3QiBmogAiAGaikDADcDACADIARBBHIiBkEDdCIHaiACIAdqKQMANwMAIAMgBEEFciIHQQN0IghqIAIgCGopAwA3AwAgAyAEQQZyIghBA3QiCWogAiAJaikDADcDACADIARBB3IiCUEDdCIKaiACIApqKQMANwMAIAMgBEEIciIKQQN0IgtqIAIgC2opAwA3AwAgAyAEQQlyIgtBA3QiDGogAiAMaikDADcDACADIARBCnIiDEEDdCINaiACIA1qKQMANwMAIAMgBEELciINQQN0Ig5qIAIgDmopAwA3AwAgAyAEQQxyIg5BA3QiD2ogAiAPaikDADcDACADIARBDXIiD0EDdCIQaiACIBBqKQMANwMAIAMgBEEOciIQQQN0IhFqIAIgEWopAwA3AwAgAyAEQQ9yIhFBA3QiEmogAiASaikDADcDACADIARB//8DcSAAQf//A3EgAUH//wNxIAVB//8DcSAGQf//A3EgB0H//wNxIAhB//8DcSAJQf//A3EgCkH//wNxIAtB//8DcSAMQf//A3EgDUH//wNxIA5B//8DcSAPQf//A3EgEEH//wNxIBFB//8DcRACIARB8ABJIQAgBEEQaiEEIAANAAtBACEBIANBAEEBQRBBEUEgQSFBMEExQcAAQcEAQdAAQdEAQeAAQeEAQfAAQfEAEAIgA0ECQQNBEkETQSJBI0EyQTNBwgBBwwBB0gBB0wBB4gBB4wBB8gBB8wAQAiADQQRBBUEUQRVBJEElQTRBNUHEAEHFAEHUAEHVAEHkAEHlAEH0AEH1ABACIANBBkEHQRZBF0EmQSdBNkE3QcYAQccAQdYAQdcAQeYAQecAQfYAQfcAEAIgA0EIQQlBGEEZQShBKUE4QTlByABByQBB2ABB2QBB6ABB6QBB+ABB+QAQAiADQQpBC0EaQRtBKkErQTpBO0HKAEHLAEHaAEHbAEHqAEHrAEH6AEH7ABACIANBDEENQRxBHUEsQS1BPEE9QcwAQc0AQdwAQd0AQewAQe0AQfwAQf0AEAIgA0EOQQ9BHkEfQS5BL0E+QT9BzgBBzwBB3gBB3wBB7gBB7wBB/gBB/wAQAgNAIAIgAUEDdCIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAiAAQQhyIgRqIgUgAyAEaikDACAFKQMAhTcDACACIABBEHIiBGoiBSADIARqKQMAIAUpAwCFNwMAIAIgAEEYciIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAUEEaiIBQYABRw0ACwsWACAAIAEgAiADEAMgACACIAIgAxADC3sCAX8BfiACIQkgATUCACEKIAQgBXIEQCABKAIEIANwIQkLIAAgCTYCACAAIAdBAWsgBSAEGyAIbCAGQQFrQQBBfyAGGyACIAlGG2oiASAFQQFqIAhsQQAgBBtqIAGtIAogCn5CIIh+QiCIp0F/c2ogByAIbHA2AgQgAAsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwUAQYAICw==",r)}function _se(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Qse(){if(ER)return ub;ER=1;function r(i){this.name="Bzip2Error",this.message=i,this.stack=new Error().stack}r.prototype=new Error;var e={Error:function(i){throw new r(i)}},t={};return t.Bzip2Error=r,t.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188],t.array=function(i){var n=0,s=0,a=[0,1,3,7,15,31,63,127,255];return function(o){for(var c=0;o>0;){var l=8-n;o>=l?(c<<=l,c|=a[l]&i[s++],n=0,o-=l):(c<<=o,c|=(i[s]&a[o]<<8-o-n)>>8-o-n,n+=o,o=0)}return c}},t.simple=function(i,n){var s=t.array(i),a=t.header(s),o=!1,c=1e5*a,l=new Int32Array(c);do o=t.decompress(s,n,l,c);while(!o)},t.header=function(i){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),i(24)!=4348520&&e.Error("No magic number found");var n=i(8)-48;return(n<1||n>9)&&e.Error("Not a BZIP archive"),n},t.decompress=function(i,n,s,a,o){for(var c=20,l=258,d=0,u=1,f=50,A=-1,g="",p=0;p<6;p++)g+=i(8).toString(16);if(g=="177245385090"){var I=i(32)|0;return I!==o&&e.Error("Error in bzip2: crc32 do not match"),i(null),null}g!="314159265359"&&e.Error("Invalid bzip data");var m=i(32)|0;i(1)&&e.Error("unsupported obsolete version");var w=i(24);w>a&&e.Error("Initial position larger than buffer size");var B=i(16),C=0;for(p=0;p<16;p++)if(B&1<<15-p){var x=i(16);for(te=0;te<16;te++)x&1<<15-te&&(this.symToByte[C++]=16*p+te)}var _=i(3);(_<2||_>6)&&e.Error("Invalid bzip data");var R=i(15);R==0&&e.Error("Invalid bzip data");for(var p=0;p<_;p++)this.mtfSymbol[p]=p;for(var p=0;p<R;p++){for(var te=0;i(1);te++)te>=_&&e.Error("Invalid bzip data");for(var U=this.mtfSymbol[te],x=te-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,this.selectors[p]=U}for(var G=C+2,T=[],D=new Uint8Array(l),b=new Uint16Array(c+1),Q,te=0;te<_;te++){B=i(5);for(var p=0;p<G;p++){for(;(B<1||B>c)&&e.Error("Invalid bzip data"),!!i(1);)i(1)?B--:B++;D[p]=B}var v,E;v=E=D[0];for(var p=1;p<G;p++)D[p]>E?E=D[p]:D[p]<v&&(v=D[p]);Q=T[te]={},Q.permute=new Int32Array(l),Q.limit=new Int32Array(c+1),Q.base=new Int32Array(c+1),Q.minLen=v,Q.maxLen=E;for(var P=Q.base,N=Q.limit,j=0,p=v;p<=E;p++)for(var B=0;B<G;B++)D[B]==p&&(Q.permute[j++]=B);for(p=v;p<=E;p++)b[p]=N[p]=0;for(p=0;p<G;p++)b[D[p]]++;for(j=B=0,p=v;p<E;p++)j+=b[p],N[p]=j-1,j<<=1,P[p+1]=j-(B+=b[p]);N[E]=j+b[E]-1,P[v]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var z,L,G,K;for(z=L=G=K=0;;){for(G--||(G=f-1,K>=R&&e.Error("Invalid bzip data"),Q=T[this.selectors[K++]],P=Q.base,N=Q.limit),p=Q.minLen,te=i(p);p>Q.maxLen&&e.Error("Invalid bzip data"),!(te<=N[p]);)p++,te=te<<1|i(1);te-=P[p],(te<0||te>=l)&&e.Error("Invalid bzip data");var $=Q.permute[te];if($==d||$==u){z||(z=1,B=0),$==d?B+=z:B+=2*z,z<<=1;continue}if(z)for(z=0,L+B>a&&e.Error("Invalid bzip data"),U=this.symToByte[this.mtfSymbol[0]],this.byteCount[U]+=B;B--;)s[L++]=U;if($>C)break;L>=a&&e.Error("Invalid bzip data"),p=$-1,U=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,U=this.symToByte[U],this.byteCount[U]++,s[L++]=U}(w<0||w>=L)&&e.Error("Invalid bzip data");for(var te=0,p=0;p<256;p++)x=te+this.byteCount[p],this.byteCount[p]=te,te=x;for(var p=0;p<L;p++)U=s[p]&255,s[this.byteCount[U]]|=p<<8,this.byteCount[U]++;var re=0,ee=0,Z=0;L&&(re=s[w],ee=re&255,re>>=8,Z=-1),L=L;for(var ye,de,Ae;L;){for(L--,de=ee,re=s[re],ee=re&255,re>>=8,Z++==3?(ye=ee,Ae=de,ee=-1):(ye=1,Ae=ee);ye--;)A=(A<<8^this.crcTable[(A>>24^Ae)&255])&4294967295,n(Ae);ee!=de&&(Z=0)}return A=(A^-1)>>>0,(A|0)!=(m|0)&&e.Error("Error in bzip2: crc32 do not match"),o=(A^(o<<1|o>>>31))&4294967295,o},ub=t,ub}function Fse(){if(BR)return fb;BR=1;var r=[0,1,3,7,15,31,63,127,255];return fb=function(t){var i=0,n=0,s=t(),a=function(o){if(o===null&&i!=0){i=0,n++;return}for(var c=0;o>0;){n>=s.length&&(n=0,s=t());var l=8-i;i===0&&o>0&&a.bytesRead++,o>=l?(c<<=l,c|=r[l]&s[n++],i=0,o-=l):(c<<=o,c|=(s[n]&r[o]<<8-o-i)>>8-o-i,i+=o,o=0)}return c};return a.bytesRead=0,a},fb}function Pse(){if(bR)return hb;bR=1;let r=Qse(),e=Fse();hb=t;function t(i){let n=[],s=0,a=0,o=!1,c=!1,l=null,d=null;function u(p){if(a){let I=1e5*a,m=new Int32Array(I),w=[],B=function(C){w.push(C)};return d=r.decompress(l,B,m,I,d),d===null?(a=0,!1):(p(new Uint8Array(w)),!0)}else return a=r.header(l),d=0,!1}let f=0;function A(p){if(!o)try{return u(function(I){p.enqueue(I),I!==null&&(f+=I.length)})}catch(I){return p.error(I),o=!0,!0}}let g;return new ReadableStream({start(){g=i.getReader()},async pull(p){try{for(;;){for(;!(c||l&&s-l.bytesRead+1>=25e3+1e5*(a||4));){let{value:I,done:m}=await g.read();m?c=!0:(n.push(I),s+=I.length,l===null&&(l=e(function(){return n.shift()})))}for(;c?l&&s>l.bytesRead:l&&s-l.bytesRead+1>=25e3+1e5*(a||4);)if(A(p))return;if(c&&!o&&(!l||s<=l.bytesRead)){d===null?p.close():p.error(new Error("input stream ended prematurely"));return}}}catch(I){p.error(I)}},async cancel(p){await g.abort(p)}},{highWaterMark:0})}return hb}var Qa,Du,kR,SR,aA,Bn,oU,Qt,Yh,y,me,cU,F,O1,yw,Iw,Nr,BZ,Ni,Eu,QZ,Qs,TZ,fU,ww,RZ,NZ,OZ,qZ,MZ,LZ,HZ,KZ,GZ,zZ,Cn,Qu,vl,ac,tc,fee,Pa,Ct,Bu,dA,hA,s2,MR,gee,pee,TA,Da,c2,ks,wee,xee,xn,Eee,Ew,yb,gU,Mi,l2,YI,Bee,Ib,bee,vee,q1,pU,u2,jR,kee,See,wb,VR,WI,mU,yU,ZR,IU,bu,Bw,Nee,M1,vw,Fs,xa,vs,iN,Li,kw,cN,zee,Jee,rte,ite,fw,cA,Sw,Dw,_w,hw,gA,ml,hx,Qw,Fw,H1,bU,yte,Ta,Aw,kU,Cte,Ete,qa,Bte,mu,SU,Bb,bb,Ci,mN,ec,Wh,kte,K1,_U,QU,Ste,Dte,yu,G1,Pte,Tte,Ute,FU,vu,ew,Xh,Rte,vb,kb,Nte,Ote,ku,qte,Mte,er,sn,y2,gx,px,Sb,IN,ku,wN,Db,xN,Lte,PU,_b,Ca,xt,Ps,cc,xt,xt,xt,xt,mA,xt,Hte,Kte,Gte,zte,z1,jn,J1,I2,uA,Jte,Rr,jte,Ea,Zh,j1,Qb,TU,eA,w2,UU,$te,Tw,Vte,CN,EN,BN,Yte,Wte,gw,pw,Xte,Zte,ere,tre,lc,Ra,tA,RU,rre,$r,bn,Ft,bs,Zt,Tu,nre,Sl,Rw,ore,cre,lre,Uu,dre,NU,Fb,yA,IA,Rs,fre,Pb,Ow,Tb,wA,qw,Mw,Lw,Nb,xA,mre,HU,KU,Kw,Gw,zw,Ire,Cre,Ere,Bre,CA,kre,fu,_re,JU,PN,Pre,Ba,BA,Rre,E2,Ob,X1,HA,Ri,Bi,wl,RN,NN,ON,Mre,qN,Lre,MN,zre,Ql,zo,Jo,oi,ci,rw,WU,XU,ZU,hu,Au,iw,nw,Wre,Xre,Zre,eie,tie,rie,iie,nie,sie,aie,oie,jo,$w,qb,YN,cie,lie,$o,Vo,Vw,Mb,k2,die,WN,XN,Yw,ZN,Ou,xl,eb,t9,Xw,iR,Hb,_a,Fa,Su,n9,sw,gie,o9,c9,l9,Eie,Bie,bie,vie,kie,Sie,Die,_ie,Qie,Fie,rA,Pie,Tie,Uie,Rie,d9,u9,f9,h9,Nie,Oie,nR,sR,Zw,A9,Mie,Lie,Hie,Kie,Yo,Ur,ib,Gie,iA,gu,aw,Ul,Xie,Zie,ene,Kb,aR,tne,rne,oR,ine,nne,ane,cR,cne,lne,dne,S2,une,lR,Gb,hne,y9,Ane,I9,gne,pne,mne,w9,x9,C9,yne,Ine,wne,E9,xne,Cne,Ene,Bne,bne,nA,Wo,zb,vne,kne,B9,Sne,b9,v9,k9,S9,Dne,_ne,Qne,Fne,ow,Jb,Pne,Tne,Une,Rne,uR,cw,nb,jb,Nne,One,qne,sb,Hi,Ne,D2,D9,$b,ex,Mne,Lne,Hne,fR,hR,Kne,pR,ob,IR,Yne,q9,M9,Il,Cx,Ex,Wne,Rl,wn,ise,nse,L9,li,Wb,Xb,sA,F2,H9,sse,ase,ose,cse,lse,dse,use,fse,hse,ka,Ase,gse,K9,wse,lw,Sse,Dse,ub,ER,fb,BR,hb,bR,z9,Tse,Use,P2=J(()=>{Qa=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};Du=Symbol("doneWritingPromise"),kR=Symbol("doneWritingResolve"),SR=Symbol("doneWritingReject"),aA=Symbol("readingIndex"),Bn=class r extends Array{constructor(){super(),Object.setPrototypeOf(this,r.prototype),this[Du]=new Promise((e,t)=>{this[kR]=e,this[SR]=t}),this[Du].catch(()=>{})}};Bn.prototype.getReader=function(){return this[aA]===void 0&&(this[aA]=0),{read:async()=>(await this[Du],this[aA]===this.length?{value:void 0,done:!0}:{value:this[this[aA]++],done:!1})}};Bn.prototype.readToEnd=async function(r){await this[Du];let e=r(this.slice(this[aA]));return this.length=0,e};Bn.prototype.clone=function(){let r=new Bn;return r[Du]=this[Du].then(()=>{r.push(...this)}),r};QA.prototype.write=async function(r){this.stream.push(r)};QA.prototype.close=async function(){this.stream[kR]()};QA.prototype.abort=async function(r){return this.stream[SR](r),r};QA.prototype.releaseLock=function(){};typeof Qa.process=="object"&&Qa.process.versions;oU=new WeakSet,Qt=Symbol("externalBuffer");Os.prototype.read=async function(){return this[Qt]&&this[Qt].length?{done:!1,value:this[Qt].shift()}:this._read()};Os.prototype.releaseLock=function(){this[Qt]&&(this.stream[Qt]=this[Qt]),this._releaseLock()};Os.prototype.cancel=function(r){return this._cancel(r)};Os.prototype.readLine=async function(){let r=[],e;for(;!e;){let{done:t,value:i}=await this.read();if(i+="",t)return r.length?Ei(r):void 0;let n=i.indexOf(` +`)+1;n&&(e=Ei(r.concat(i.substr(0,n))),r=[]),n!==i.length&&r.push(i.substr(n))}return this.unshift(...r),e};Os.prototype.readByte=async function(){let{done:r,value:e}=await this.read();if(r)return;let t=e[0];return this.unshift(Jr(e,1)),t};Os.prototype.readBytes=async function(r){let e=[],t=0;for(;;){let{done:i,value:n}=await this.read();if(i)return e.length?Ei(e):void 0;if(e.push(n),t+=n.length,t>=r){let s=Ei(e);return this.unshift(Jr(s,r)),Jr(s,0,r)}}};Os.prototype.peekBytes=async function(r){let e=await this.readBytes(r);return this.unshift(e),e};Os.prototype.unshift=function(...r){if(this[Qt]||(this[Qt]=[]),r.length===1&&tx(r[0])&&this[Qt].length&&r[0].length&&this[Qt][0].byteOffset>=r[0].length){this[Qt][0]=new Uint8Array(this[Qt][0].buffer,this[Qt][0].byteOffset-r[0].length,this[Qt][0].byteLength+r[0].length);return}this[Qt].unshift(...r.filter(e=>e&&e.length))};Os.prototype.readToEnd=async function(r=Ei){let e=[];for(;;){let{done:t,value:i}=await this.read();if(t)break;e.push(i)}return r(e)};Yh=Symbol("byValue"),y={curve:{nistP256:"nistP256",p256:"nistP256",nistP384:"nistP384",p384:"nistP384",nistP521:"nistP521",p521:"nistP521",secp256k1:"secp256k1",ed25519Legacy:"ed25519Legacy",ed25519:"ed25519Legacy",curve25519Legacy:"curve25519Legacy",curve25519:"curve25519Legacy",brainpoolP256r1:"brainpoolP256r1",brainpoolP384r1:"brainpoolP384r1",brainpoolP512r1:"brainpoolP512r1"},s2k:{simple:0,salted:1,iterated:3,argon2:4,gnu:101},publicKey:{rsaEncryptSign:1,rsaEncrypt:2,rsaSign:3,elgamal:16,dsa:17,ecdh:18,ecdsa:19,eddsaLegacy:22,aedh:23,aedsa:24,x25519:25,x448:26,ed25519:27,ed448:28},symmetric:{idea:1,tripledes:2,cast5:3,blowfish:4,aes128:7,aes192:8,aes256:9,twofish:10},compression:{uncompressed:0,zip:1,zlib:2,bzip2:3},hash:{md5:1,sha1:2,ripemd:3,sha256:8,sha384:9,sha512:10,sha224:11,sha3_256:12,sha3_512:14},webHash:{"SHA-1":2,"SHA-256":8,"SHA-384":9,"SHA-512":10},aead:{eax:1,ocb:2,gcm:3,experimentalGCM:100},packet:{publicKeyEncryptedSessionKey:1,signature:2,symEncryptedSessionKey:3,onePassSignature:4,secretKey:5,publicKey:6,secretSubkey:7,compressedData:8,symmetricallyEncryptedData:9,marker:10,literalData:11,trust:12,userID:13,publicSubkey:14,userAttribute:17,symEncryptedIntegrityProtectedData:18,modificationDetectionCode:19,aeadEncryptedData:20,padding:21},literal:{binary:98,text:116,utf8:117,mime:109},signature:{binary:0,text:1,standalone:2,certGeneric:16,certPersona:17,certCasual:18,certPositive:19,certRevocation:48,subkeyBinding:24,keyBinding:25,key:31,keyRevocation:32,subkeyRevocation:40,timestamp:64,thirdParty:80},signatureSubpacket:{signatureCreationTime:2,signatureExpirationTime:3,exportableCertification:4,trustSignature:5,regularExpression:6,revocable:7,keyExpirationTime:9,placeholderBackwardsCompatibility:10,preferredSymmetricAlgorithms:11,revocationKey:12,issuerKeyID:16,notationData:20,preferredHashAlgorithms:21,preferredCompressionAlgorithms:22,keyServerPreferences:23,preferredKeyServer:24,primaryUserID:25,policyURI:26,keyFlags:27,signersUserID:28,reasonForRevocation:29,features:30,signatureTarget:31,embeddedSignature:32,issuerFingerprint:33,preferredAEADAlgorithms:34,preferredCipherSuites:39},keyFlags:{certifyKeys:1,signData:2,encryptCommunication:4,encryptStorage:8,splitPrivateKey:16,authentication:32,sharedPrivateKey:128},armor:{multipartSection:0,multipartLast:1,signed:2,message:3,publicKey:4,privateKey:5,signature:6},reasonForRevocation:{noReason:0,keySuperseded:1,keyCompromised:2,keyRetired:3,userIDInvalid:32},features:{modificationDetection:1,aead:2,v5Keys:4,seipdv2:8},write:function(r,e){if(typeof e=="number"&&(e=this.read(r,e)),r[e]!==void 0)return r[e];throw new Error("Invalid enum value.")},read:function(r,e){if(r[Yh]||(r[Yh]=[],Object.entries(r).forEach(([t,i])=>{r[Yh][i]=t})),r[Yh][e]!==void 0)return r[Yh][e];throw new Error("Invalid enum value.")}},me={preferredHashAlgorithm:y.hash.sha512,preferredSymmetricAlgorithm:y.symmetric.aes256,preferredCompressionAlgorithm:y.compression.uncompressed,aeadProtect:!1,parseAEADEncryptedV4KeysAsLegacy:!1,preferredAEADAlgorithm:y.aead.gcm,aeadChunkSizeByte:12,v6Keys:!1,enableParsingV5Entities:!1,s2kType:y.s2k.iterated,s2kIterationCountByte:224,s2kArgon2Params:{passes:3,parallelism:4,memoryExponent:16},maxArgon2MemoryExponent:30,allowUnauthenticatedMessages:!1,allowUnauthenticatedStream:!1,minRSABits:2047,passwordCollisionCheck:!1,allowInsecureDecryptionWithSigningKeys:!1,allowInsecureVerificationWithReformattedKeys:!1,allowMissingKeyFlags:!1,constantTimePKCS1Decryption:!1,constantTimePKCS1DecryptionSupportedSymmetricAlgorithms:new Set([y.symmetric.aes128,y.symmetric.aes192,y.symmetric.aes256]),ignoreUnsupportedPackets:!0,ignoreMalformedPackets:!1,enforceGrammar:!0,additionalAllowedPackets:[],showVersion:!1,showComment:!1,versionString:"OpenPGP.js 6.3.1",commentString:"https://openpgpjs.org",maxUserIDLength:1024*5,maxDecompressedMessageSize:1/0,knownNotations:[],nonDeterministicSignaturesViaNotation:!0,useEllipticFallback:!0,rejectHashAlgorithms:new Set([y.hash.md5,y.hash.ripemd]),rejectMessageHashAlgorithms:new Set([y.hash.md5,y.hash.ripemd,y.hash.sha1]),rejectPublicKeyAlgorithms:new Set([y.publicKey.elgamal,y.publicKey.dsa]),rejectCurves:new Set([y.curve.secp256k1])},cU=(()=>{try{return process.env.NODE_ENV==="development"}catch{}return!1})(),F={isString:function(r){return typeof r=="string"||r instanceof String},nodeRequire:vR(import.meta.url),isArray:function(r){return r instanceof Array},isUint8Array:tx,isStream:pr,getNobleCurve:async(r,e)=>{if(!me.useEllipticFallback)throw new Error("This curve is only supported in the full build of OpenPGP.js");let{nobleCurves:t}=await Promise.resolve().then(function(){return bne});switch(r){case y.publicKey.ecdh:case y.publicKey.ecdsa:{let i=t.get(e);if(!i)throw new Error("Unsupported curve");return i}case y.publicKey.x448:return t.get("x448");case y.publicKey.ed448:return t.get("ed448");default:throw new Error("Unsupported curve")}},readNumber:function(r){let e=0;for(let t=0;t<r.length;t++)e+=256**t*r[r.length-1-t];return e},writeNumber:function(r,e){let t=new Uint8Array(e);for(let i=0;i<e;i++)t[i]=r>>8*(e-i-1)&255;return t},readDate:function(r){let e=F.readNumber(r);return new Date(e*1e3)},writeDate:function(r){let e=Math.floor(r.getTime()/1e3);return F.writeNumber(e,4)},normalizeDate:function(r=Date.now()){return r===null||r===1/0?r:new Date(Math.floor(+r/1e3)*1e3)},readMPI:function(r){let t=(r[0]<<8|r[1])+7>>>3;return F.readExactSubarray(r,2,2+t)},readExactSubarray:function(r,e,t){if(r.length<t)throw new Error("Input array too short");return r.subarray(e,t)},leftPad(r,e){if(r.length>e)throw new Error("Input array too long");let t=new Uint8Array(e),i=e-r.length;return t.set(r,i),t},uint8ArrayToMPI:function(r){let e=F.uint8ArrayBitLength(r);if(e===0)throw new Error("Zero MPI");let t=r.subarray(r.length-Math.ceil(e/8)),i=new Uint8Array([(e&65280)>>8,e&255]);return F.concatUint8Array([i,t])},uint8ArrayBitLength:function(r){let e;for(e=0;e<r.length&&r[e]===0;e++);if(e===r.length)return 0;let t=r.subarray(e);return(t.length-1)*8+F.nbits(t[0])},hexToUint8Array:function(r){let e=new Uint8Array(r.length>>1);for(let t=0;t<r.length>>1;t++)e[t]=parseInt(r.substr(t<<1,2),16);return e},uint8ArrayToHex:function(r){let e="0123456789abcdef",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),t},stringToUint8Array:function(r){return gr(r,e=>{if(!F.isString(e))throw new Error("stringToUint8Array: Data must be in the form of a string");let t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t})},uint8ArrayToString:function(r){r=new Uint8Array(r);let e=[],t=16384,i=r.length;for(let n=0;n<i;n+=t)e.push(String.fromCharCode.apply(String,r.subarray(n,n+t<i?n+t:i)));return e.join("")},encodeUTF8:function(r){let e=new TextEncoder("utf-8");function t(i,n=!1){return e.encode(i,{stream:!n})}return gr(r,t,()=>t("",!0))},decodeUTF8:function(r){let e=new TextDecoder("utf-8");function t(i,n=!1){return e.decode(i,{stream:!n})}return gr(r,t,()=>t(new Uint8Array,!0))},concat:Ei,concatUint8Array:DR,equalsUint8Array:function(r,e){if(!F.isUint8Array(r)||!F.isUint8Array(e))throw new Error("Data must be in the form of a Uint8Array");if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},findLastIndex:function(r,e){for(let t=r.length;t>=0;t--)if(e(r[t],t,r))return t;return-1},writeChecksum:function(r){let e=0;for(let t=0;t<r.length;t++)e=e+r[t]&65535;return F.writeNumber(e,2)},printDebug:function(r){cU&&console.log("[OpenPGP.js debug]",r)},printDebugError:function(r){cU&&console.error("[OpenPGP.js debug]",r)},nbits:function(r){let e=1,t=r>>>16;return t!==0&&(r=t,e+=16),t=r>>8,t!==0&&(r=t,e+=8),t=r>>4,t!==0&&(r=t,e+=4),t=r>>2,t!==0&&(r=t,e+=2),t=r>>1,t!==0&&(r=t,e+=1),e},double:function(r){let e=new Uint8Array(r.length),t=r.length-1;for(let i=0;i<t;i++)e[i]=r[i]<<1^r[i+1]>>7;return e[t]=r[t]<<1^(r[0]>>7)*135,e},shiftRight:function(r,e){if(e)for(let t=r.length-1;t>=0;t--)r[t]>>=e,t>0&&(r[t]|=r[t-1]<<8-e);return r},getWebCrypto:function(){let e=typeof Qa<"u"&&Qa.crypto&&Qa.crypto.subtle||this.getNodeCrypto()?.webcrypto.subtle;if(!e)throw new Error("The WebCrypto API is not available");return e},getNodeCrypto:function(){return this.nodeRequire("crypto")},getNodeZlib:function(){return this.nodeRequire("zlib")},getNodeBuffer:function(){return(this.nodeRequire("buffer")||{}).Buffer},getHardwareConcurrency:function(){return typeof navigator<"u"?navigator.hardwareConcurrency||1:this.nodeRequire("os").cpus().length},isEmailAddress:function(r){return F.isString(r)?/^[^\p{C}\p{Z}@<>\\]+@[^\p{C}\p{Z}@<>\\]+[^\p{C}\p{Z}\p{P}]$/u.test(r):!1},canonicalizeEOL:function(r){let i=!1;return gr(r,n=>{i&&(n=F.concatUint8Array([new Uint8Array([13]),n])),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,a=[];for(let l=0;s=n.indexOf(10,l)+1,s;l=s)n[s-2]!==13&&a.push(s);if(!a.length)return n;let o=new Uint8Array(n.length+a.length),c=0;for(let l=0;l<a.length;l++){let d=n.subarray(a[l-1]||0,a[l]);o.set(d,c),c+=d.length,o[c-1]=13,o[c]=10,c++}return o.set(n.subarray(a[a.length-1]||0),c),o},()=>i?new Uint8Array([13]):void 0)},nativeEOL:function(r){let i=!1;return gr(r,n=>{i&&n[0]!==10?n=F.concatUint8Array([new Uint8Array([13]),n]):n=new Uint8Array(n),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,a=0;for(let o=0;o!==n.length;o=s){s=n.indexOf(13,o)+1,s||(s=n.length);let c=s-(n[s]===10?1:0);o&&n.copyWithin(a,o,c),a+=c-o}return n.subarray(0,a)},()=>i?new Uint8Array([13]):void 0)},removeTrailingSpaces:function(r){return r.split(` `).map(e=>{let t=e.length-1;for(;t>=0&&(e[t]===" "||e[t]===" "||e[t]==="\r");t--);return e.substr(0,t+1)}).join(` -`)},wrapError:function(r,e){if(!e)return r instanceof Error?r:new Error(r);if(r instanceof Error){try{r.message+=": "+e.message,r.cause=e}catch{}return r}return new Error(r+": "+e.message,{cause:e})},constructAllowedPackets:function(r){let e={};return r.forEach(t=>{if(!t.tag)throw new Error("Invalid input: expected a packet class");e[t.tag]=t}),e},anyPromise:function(r){return new Promise((e,t)=>{let i;Promise.all(r.map(async n=>{try{e(await n)}catch(s){i=s}})).then(()=>{t(i)})})},selectUint8Array:function(r,e,t){let i=Math.max(e.length,t.length),n=new Uint8Array(i),s=0;for(let o=0;o<n.length;o++)n[o]=e[o]&256-r|t[o]&255+r,s+=r&o<e.length|1-r&o<t.length;return n.subarray(0,s)},selectUint8:function(r,e,t){return e&256-r|t&255+r},isAES:function(r){return r===m.symmetric.aes128||r===m.symmetric.aes192||r===m.symmetric.aes256}},OE=F.getNodeBuffer();OE?(Uy=r=>OE.from(r).toString("base64"),Ry=r=>{let e=OE.from(r,"base64");return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}):(Uy=r=>btoa(F.uint8ArrayToString(r)),Ry=r=>F.stringToUint8Array(atob(r)));br=[new Array(255),new Array(255),new Array(255),new Array(255)];for(let r=0;r<=255;r++){let e=r<<16;for(let t=0;t<8;t++)e=e<<1^((e&8388608)!==0?8801531:0);br[0][r]=(e&16711680)>>16|e&65280|(e&255)<<16}for(let r=0;r<=255;r++)br[1][r]=br[0][r]>>8^br[0][br[0][r]&255];for(let r=0;r<=255;r++)br[2][r]=br[1][r]>>8^br[0][br[1][r]&255];for(let r=0;r<=255;r++)br[3][r]=br[2][r]>>8^br[0][br[2][r]&255];FV=(function(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,255,!0),new Int16Array(r)[0]===255})();Ci=BigInt(0),md=BigInt(1);OV=F.getNodeCrypto();cs=BigInt(1);HV=[7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999].map(r=>BigInt(r));h5=F.getWebCrypto(),Ny=F.getNodeCrypto(),GV=Ny&&Ny.getHashes();zV=oo("md5")||ao("md5"),JV=oo("sha1")||ao("sha1","SHA-1"),jV=oo("sha224")||ao("sha224"),$V=oo("sha256")||ao("sha256","SHA-256"),VV=oo("sha384")||ao("sha384","SHA-384"),YV=oo("sha512")||ao("sha512","SHA-512"),WV=oo("ripemd160")||ao("ripemd160"),XV=oo("sha3-256")||ao("sha3_256"),ZV=oo("sha3-512")||ao("sha3_512");nn=[];nn[1]=[48,32,48,12,6,8,42,134,72,134,247,13,2,5,5,0,4,16];nn[2]=[48,33,48,9,6,5,43,14,3,2,26,5,0,4,20];nn[3]=[48,33,48,9,6,5,43,36,3,2,1,5,0,4,20];nn[8]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,1,5,0,4,32];nn[9]=[48,65,48,13,6,9,96,134,72,1,101,3,4,2,2,5,0,4,48];nn[10]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,3,5,0,4,64];nn[11]=[48,45,48,13,6,9,96,134,72,1,101,3,4,2,4,5,0,4,28];nn[12]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,8,5,0,4,32];nn[14]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,10,5,0,4,64];bd=F.getWebCrypto(),Rc=F.getNodeCrypto(),wa=BigInt(1);ga=BigInt(1);wY={"2a8648ce3d030107":m.curve.nistP256,"2b81040022":m.curve.nistP384,"2b81040023":m.curve.nistP521,"2b8104000a":m.curve.secp256k1,"2b06010401da470f01":m.curve.ed25519Legacy,"2b060104019755010501":m.curve.curve25519Legacy,"2b2403030208010107":m.curve.brainpoolP256r1,"2b240303020801010b":m.curve.brainpoolP384r1,"2b240303020801010d":m.curve.brainpoolP512r1},ro=class r{constructor(e){if(e instanceof r)this.oid=e.oid;else if(F.isArray(e)||F.isUint8Array(e)){if(e=new Uint8Array(e),e[0]===6){if(e[1]!==e.length-2)throw new Error("Length mismatch in DER encoded oid");e=e.subarray(2)}this.oid=e}else this.oid=""}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.oid=e.subarray(1,1+t),1+this.oid.length}throw new Error("Invalid oid")}write(){return F.concatUint8Array([new Uint8Array([this.oid.length]),this.oid])}toHex(){return F.uint8ArrayToHex(this.oid)}getName(){let e=wY[this.toHex()];if(!e)throw new Error("Unknown curve object identifier.");return e}};ft=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="UnsupportedError"}},yd=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="UnknownPacketError"}},Lf=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="MalformedPacketError"}},Gf=class{constructor(e,t){this.tag=e,this.rawContent=t}write(){return this.rawContent}};o1=(r,e)=>{if(r===m.publicKey.ed25519)return{kty:"OKP",crv:"Ed25519",x:Tr(e),ext:!0};throw new Error("Unsupported EdDSA algorithm")},H6=(r,e,t)=>{if(r===m.publicKey.ed25519){let i=o1(r,e);return i.d=Tr(t),i}else throw new Error("Unsupported EdDSA algorithm")},EY=Object.freeze({__proto__:null,generate:r1,getPayloadSize:CI,getPreferredHashAlgo:EI,sign:i1,validateParams:s1,verify:n1});BY=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;uA=(r,e)=>{function t(i,...n){if(kt(i),!BY)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let d=n[0];if(!d)throw new Error("nonce / iv required");r.varSizeNonce?kt(d):kt(d,r.nonceLength)}let s=r.tagLength;s&&n[1]!==void 0&&kt(n[1]);let o=e(i,...n),a=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");kt(u)}},c=!1;return{encrypt(d,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,kt(d),a(o.encrypt.length,u),o.encrypt(d,u)},decrypt(d,u){if(kt(d),s&&d.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return a(o.decrypt.length,u),o.decrypt(d,u)}}}return Object.assign(t,r),t};Xs=16,l1=new Uint8Array(16),ns=Et(l1),SY=225,DY=(r,e,t,i)=>{let n=i&1;return{s3:t<<31|i>>>1,s2:e<<31|t>>>1,s1:r<<31|e>>>1,s0:r>>>1^SY<<24&-(n&1)}},rn=r=>(r>>>0&255)<<24|(r>>>8&255)<<16|(r>>>16&255)<<8|r>>>24&255|0;_Y=r=>r>64*1024?8:r>1024?4:2,My=class{constructor(e,t){this.blockLen=Xs,this.outputLen=Xs,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,e=zf(e),kt(e,16);let i=BI(e),n=i.getUint32(0,!1),s=i.getUint32(4,!1),o=i.getUint32(8,!1),a=i.getUint32(12,!1),c=[];for(let g=0;g<128;g++)c.push({s0:rn(n),s1:rn(s),s2:rn(o),s3:rn(a)}),{s0:n,s1:s,s2:o,s3:a}=DY(n,s,o,a);let l=_Y(t||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let u=128/l,f=this.windowSize=2**l,h=[];for(let g=0;g<u;g++)for(let p=0;p<f;p++){let I=0,y=0,w=0,C=0;for(let b=0;b<l;b++){if(!(p>>>l-b-1&1))continue;let{s0:_,s1:R,s2:U,s3:T}=c[l*g+b];I^=_,y^=R,w^=U,C^=T}h.push({s0:I,s1:y,s2:w,s3:C})}this.t=h}_updateBlock(e,t,i,n){e^=this.s0,t^=this.s1,i^=this.s2,n^=this.s3;let{W:s,t:o,windowSize:a}=this,c=0,l=0,d=0,u=0,f=(1<<s)-1,h=0;for(let g of[e,t,i,n])for(let p=0;p<4;p++){let I=g>>>8*p&255;for(let y=8/s-1;y>=0;y--){let w=I>>>s*y&f,{s0:C,s1:b,s2:x,s3:_}=o[h*a+w];c^=C,l^=b,d^=x,u^=_,h+=1}}this.s0=c,this.s1=l,this.s2=d,this.s3=u}update(e){Oy(this),e=zf(e),kt(e);let t=Et(e),i=Math.floor(e.length/Xs),n=e.length%Xs;for(let s=0;s<i;s++)this._updateBlock(t[s*4+0],t[s*4+1],t[s*4+2],t[s*4+3]);return n&&(l1.set(e.subarray(i*Xs)),this._updateBlock(ns[0],ns[1],ns[2],ns[3]),Xr(ns)),this}destroy(){let{t:e}=this;for(let t of e)t.s0=0,t.s1=0,t.s2=0,t.s3=0}digestInto(e){Oy(this),G6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e}digest(){let e=new Uint8Array(Xs);return this.digestInto(e),this.destroy(),e}},IB=class extends My{constructor(e,t){e=zf(e),kt(e);let i=QY(Bi(e));super(i,t),Xr(i)}update(e){e=zf(e),Oy(this);let t=Et(e),i=e.length%Xs,n=Math.floor(e.length/Xs);for(let s=0;s<n;s++)this._updateBlock(rn(t[s*4+3]),rn(t[s*4+2]),rn(t[s*4+1]),rn(t[s*4+0]));return i&&(l1.set(e.subarray(n*Xs)),this._updateBlock(rn(ns[3]),rn(ns[2]),rn(ns[1]),rn(ns[0])),Xr(ns)),this}digestInto(e){Oy(this),G6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e.reverse()}};m5=j6((r,e)=>new My(r,e));j6((r,e)=>new IB(r,e));bi=16,d1=4,Ay=new Uint8Array(bi),FY=283;wB=(()=>{let r=new Uint8Array(256);for(let t=0,i=1;t<256;t++,i^=u1(i))r[t]=i;let e=new Uint8Array(256);e[0]=99;for(let t=0;t<255;t++){let i=r[255-t];i|=i<<8,e[r[t]]=(i^i>>4^i>>5^i>>6^i>>7^99)&255}return Xr(r),e})(),PY=wB.map((r,e)=>wB.indexOf(e)),TY=r=>r<<24|r>>>8,ME=r=>r<<8|r>>>24,y5=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;f1=$6(wB,r=>Ad(r,3)<<24|r<<16|r<<8|Ad(r,2)),V6=$6(PY,r=>Ad(r,11)<<24|Ad(r,13)<<16|Ad(r,9)<<8|Ad(r,14)),UY=(()=>{let r=new Uint8Array(16);for(let e=0,t=1;e<16;e++,t=u1(t))r[e]=t;return r})();RY=uA({blockSize:16,nonceLength:16},function(e,t){function i(n,s){if(kt(n),s!==void 0&&(kt(s),!sn(s)))throw new Error("unaligned destination");let o=Kc(e),a=Bi(t),c=[o,a];sn(n)||c.push(n=Bi(n));let l=Y6(o,a,n,s);return Xr(...c),l}return{encrypt:(n,s)=>i(n,s),decrypt:(n,s)=>i(n,s)}});xB=uA({blockSize:16,nonceLength:16},function(e,t,i={}){let n=!i.disablePadding;return{encrypt(s,o){let a=Kc(e),{b:c,o:l,out:d}=qY(s,n,o),u=t,f=[a];sn(u)||f.push(u=Bi(u));let h=Et(u),g=h[0],p=h[1],I=h[2],y=h[3],w=0;for(;w+4<=c.length;)g^=c[w+0],p^=c[w+1],I^=c[w+2],y^=c[w+3],{s0:g,s1:p,s2:I,s3:y}=Fn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y;if(n){let C=MY(s.subarray(w*4));g^=C[0],p^=C[1],I^=C[2],y^=C[3],{s0:g,s1:p,s2:I,s3:y}=Fn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y}return Xr(...f),d},decrypt(s,o){NY(s);let a=A1(e),c=t,l=[a];sn(c)||l.push(c=Bi(c));let d=Et(c);o=fA(s.length,o),sn(s)||l.push(s=Bi(s)),c1(s,o);let u=Et(s),f=Et(o),h=d[0],g=d[1],p=d[2],I=d[3];for(let y=0;y+4<=u.length;){let w=h,C=g,b=p,x=I;h=u[y+0],g=u[y+1],p=u[y+2],I=u[y+3];let{s0:_,s1:R,s2:U,s3:T}=bI(a,h,g,p,I);f[y++]=_^w,f[y++]=R^C,f[y++]=U^b,f[y++]=T^x}return Xr(...l),OY(o,n)}}}),W6=uA({blockSize:16,nonceLength:16},function(e,t){function i(n,s,o){kt(n);let a=n.length;if(o=fA(a,o),z6(n,o))throw new Error("overlapping src and dst not supported.");let c=Kc(e),l=t,d=[c];sn(l)||d.push(l=Bi(l)),sn(n)||d.push(n=Bi(n));let u=Et(n),f=Et(o),h=s?f:u,g=Et(l),p=g[0],I=g[1],y=g[2],w=g[3];for(let b=0;b+4<=u.length;){let{s0:x,s1:_,s2:R,s3:U}=Fn(c,p,I,y,w);f[b+0]=u[b+0]^x,f[b+1]=u[b+1]^_,f[b+2]=u[b+2]^R,f[b+3]=u[b+3]^U,p=h[b++],I=h[b++],y=h[b++],w=h[b++]}let C=bi*Math.floor(u.length/d1);if(C<a){({s0:p,s1:I,s2:y,s3:w}=Fn(c,p,I,y,w));let b=a1(new Uint32Array([p,I,y,w]));for(let x=C,_=0;x<a;x++,_++)o[x]=n[x]^b[_];Xr(b)}return Xr(...d),o}return{encrypt:(n,s)=>i(n,!0,s),decrypt:(n,s)=>i(n,!1,s)}});hy=uA({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,t,i){if(t.length<8)throw new Error("aes/gcm: invalid nonce length");let n=16;function s(a,c,l){let d=LY(m5,!1,a,l,i);for(let u=0;u<c.length;u++)d[u]^=c[u];return d}function o(){let a=Kc(e),c=Ay.slice(),l=Ay.slice();if(qf(a,!1,l,l,c),t.length===12)l.set(t);else{let u=Ay.slice(),f=BI(u);yB(f,8,BigInt(t.length*8),!1);let h=m5.create(c).update(t).update(u);h.digestInto(l),h.destroy()}let d=qf(a,!1,l,Ay);return{xk:a,authKey:c,counter:l,tagMask:d}}return{encrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=new Uint8Array(a.length+n),h=[c,l,d,u];sn(a)||h.push(a=Bi(a)),qf(c,!1,d,a,f.subarray(0,a.length));let g=s(l,u,f.subarray(0,f.length-n));return h.push(g),f.set(g,a.length),Xr(...h),f},decrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=[c,l,u,d];sn(a)||f.push(a=Bi(a));let h=a.subarray(0,-n),g=a.subarray(-n),p=s(l,u,h);if(f.push(p),!J6(p,g))throw new Error("aes/gcm: invalid ghash tag");let I=qf(c,!1,d,h);return Xr(...f),I}}});I5={encrypt(r,e){if(e.length>=2**32)throw new Error("plaintext should be less than 4gb");let t=Kc(r);if(e.length===16)Z6(t,e);else{let i=Et(e),n=i[0],s=i[1];for(let o=0,a=1;o<6;o++)for(let c=2;c<i.length;c+=2,a++){let{s0:l,s1:d,s2:u,s3:f}=Fn(t,n,s,i[c],i[c+1]);n=l,s=d^y5(a),i[c]=u,i[c+1]=f}i[0]=n,i[1]=s}t.fill(0)},decrypt(r,e){if(e.length-8>=2**32)throw new Error("ciphertext should be less than 4gb");let t=A1(r),i=e.length/8-1;if(i===1)eT(t,e);else{let n=Et(e),s=n[0],o=n[1];for(let a=0,c=i*6;a<6;a++)for(let l=i*2;l>=1;l-=2,c--){o^=y5(c);let{s0:d,s1:u,s2:f,s3:h}=bI(t,s,o,n[l],n[l+1]);s=d,o=u,n[l]=f,n[l+1]=h}n[0]=s,n[1]=o}t.fill(0)}},w5=new Uint8Array(8).fill(166),tT=uA({blockSize:8},r=>({encrypt(e){if(!e.length||e.length%8!==0)throw new Error("invalid plaintext length");if(e.length===8)throw new Error("8-byte keys not allowed in AESKW, use AESKWP instead");let t=vY(w5,e);return I5.encrypt(r,t),t},decrypt(e){if(e.length%8!==0||e.length<24)throw new Error("invalid ciphertext length");let t=Bi(e);if(I5.decrypt(r,t),!J6(t.subarray(0,8),w5))throw new Error("integrity check failed");return t.subarray(0,8).fill(0),t.subarray(8)}})),x5={expandKeyLE:Kc,expandKeyDecLE:A1,encrypt:Fn,decrypt:bI,encryptBlock:Z6,decryptBlock:eT,ctrCounter:Y6,ctr32:qf};Id=F.getWebCrypto();Ly={x25519:F.encodeUTF8("OpenPGP X25519"),x448:F.encodeUTF8("OpenPGP X448")};zY=Object.freeze({__proto__:null,decrypt:nT,encrypt:iT,generate:h1,generateEphemeralEncryptionMaterial:kI,getPayloadSize:vI,recomputeSharedSecret:SI,validateParams:g1}),LE=F.getWebCrypto(),Ky=F.getNodeCrypto(),ls={[m.curve.nistP256]:"P-256",[m.curve.nistP384]:"P-384",[m.curve.nistP521]:"P-521"},Gs=Ky?Ky.getCurves():[],is=Ky?{[m.curve.secp256k1]:Gs.includes("secp256k1")?"secp256k1":void 0,[m.curve.nistP256]:Gs.includes("prime256v1")?"prime256v1":void 0,[m.curve.nistP384]:Gs.includes("secp384r1")?"secp384r1":void 0,[m.curve.nistP521]:Gs.includes("secp521r1")?"secp521r1":void 0,[m.curve.ed25519Legacy]:Gs.includes("ED25519")?"ED25519":void 0,[m.curve.curve25519Legacy]:Gs.includes("X25519")?"X25519":void 0,[m.curve.brainpoolP256r1]:Gs.includes("brainpoolP256r1")?"brainpoolP256r1":void 0,[m.curve.brainpoolP384r1]:Gs.includes("brainpoolP384r1")?"brainpoolP384r1":void 0,[m.curve.brainpoolP512r1]:Gs.includes("brainpoolP512r1")?"brainpoolP512r1":void 0}:{},sT={[m.curve.nistP256]:{oid:[6,8,42,134,72,206,61,3,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.nistP256],web:ls[m.curve.nistP256],payloadSize:32,sharedSize:256,wireFormatLeadingByte:4},[m.curve.nistP384]:{oid:[6,5,43,129,4,0,34],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:is[m.curve.nistP384],web:ls[m.curve.nistP384],payloadSize:48,sharedSize:384,wireFormatLeadingByte:4},[m.curve.nistP521]:{oid:[6,5,43,129,4,0,35],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:is[m.curve.nistP521],web:ls[m.curve.nistP521],payloadSize:66,sharedSize:528,wireFormatLeadingByte:4},[m.curve.secp256k1]:{oid:[6,5,43,129,4,0,10],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.secp256k1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.ed25519Legacy]:{oid:[6,9,43,6,1,4,1,218,71,15,1],keyType:m.publicKey.eddsaLegacy,hash:m.hash.sha512,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.curve25519Legacy]:{oid:[6,10,43,6,1,4,1,151,85,1,5,1],keyType:m.publicKey.ecdh,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.brainpoolP256r1]:{oid:[6,9,43,36,3,3,2,8,1,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.brainpoolP256r1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.brainpoolP384r1]:{oid:[6,9,43,36,3,3,2,8,1,1,11],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:is[m.curve.brainpoolP384r1],payloadSize:48,wireFormatLeadingByte:4},[m.curve.brainpoolP512r1]:{oid:[6,9,43,36,3,3,2,8,1,1,13],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:is[m.curve.brainpoolP512r1],payloadSize:64,wireFormatLeadingByte:4}},vi=class{constructor(e){try{this.name=e instanceof ro?e.getName():m.write(m.curve,e)}catch{throw new ft("Unknown curve")}let t=sT[this.name];this.keyType=t.keyType,this.oid=t.oid,this.hash=t.hash,this.cipher=t.cipher,this.node=t.node,this.web=t.web,this.payloadSize=t.payloadSize,this.sharedSize=t.sharedSize,this.wireFormatLeadingByte=t.wireFormatLeadingByte,this.web&&F.getWebCrypto()?this.type="web":this.node&&F.getNodeCrypto()?this.type="node":this.name===m.curve.curve25519Legacy?this.type="curve25519Legacy":this.name===m.curve.ed25519Legacy&&(this.type="ed25519Legacy")}async genKeyPair(){switch(this.type){case"web":try{return await JY(this.name,this.wireFormatLeadingByte)}catch(e){return F.printDebugError("Browser did not support generating ec key "+e.message),C5(this.name)}case"node":return jY(this.name);case"curve25519Legacy":{let{k:e,A:t}=await h1(m.publicKey.x25519),i=e.slice().reverse();return i[0]=i[0]&127|64,i[31]&=248,{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:i}}case"ed25519Legacy":{let{seed:e,A:t}=await r1(m.publicKey.ed25519);return{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:e}}default:return C5(this.name)}}};Gy=F.getWebCrypto(),dT=F.getNodeCrypto();ZY=Object.freeze({__proto__:null,sign:m1,validateParams:$Y,verify:y1});eW=Object.freeze({__proto__:null,sign:uT,validateParams:AT,verify:fT});dW=Object.freeze({__proto__:null,decrypt:mT,encrypt:pT,validateParams:iW}),uW=Object.freeze({__proto__:null,CurveWithOID:vi,ecdh:dW,ecdhX:zY,ecdsa:ZY,eddsa:EY,eddsaLegacy:eW,generate:Sy,getPreferredHashAlgo:oT}),Dy=BigInt(0),Of=BigInt(1);zy=class{constructor(e){e&&(this.data=e)}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.data=e.subarray(1,1+t),1+this.data.length}throw new Error("Invalid symmetric key")}write(){return F.concatUint8Array([new Uint8Array([this.data.length]),this.data])}},Jy=class{constructor(e){if(e){let{hash:t,cipher:i}=e;this.hash=t,this.cipher=i}else this.hash=null,this.cipher=null}read(e){if(e.length<4||e[0]!==3||e[1]!==1)throw new ft("Cannot read KDFParams");return this.hash=e[2],this.cipher=e[3],4}write(){return new Uint8Array([3,1,this.hash,this.cipher])}},jy=class r{static fromObject({wrappedKey:e,algorithm:t}){let i=new r;return i.wrappedKey=e,i.algorithm=t,i}read(e){let t=0,i=e[t++];this.algorithm=i%2?e[t++]:null,i-=i%2,this.wrappedKey=F.readExactSubarray(e,t,t+i),t+=i}write(){return F.concatUint8Array([this.algorithm?new Uint8Array([this.wrappedKey.length+1,this.algorithm]):new Uint8Array([this.wrappedKey.length]),this.wrappedKey])}};Qy=F.getWebCrypto(),Jf=F.getNodeCrypto(),kc=Jf?Jf.getCiphers():[],QI={idea:kc.includes("idea-cfb")?"idea-cfb":void 0,tripledes:kc.includes("des-ede3-cfb")?"des-ede3-cfb":void 0,cast5:kc.includes("cast5-cfb")?"cast5-cfb":void 0,blowfish:kc.includes("bf-cfb")?"bf-cfb":void 0,aes128:kc.includes("aes-128-cfb")?"aes-128-cfb":void 0,aes192:kc.includes("aes-192-cfb")?"aes-192-cfb":void 0,aes256:kc.includes("aes-256-cfb")?"aes-256-cfb":void 0};$y=class{constructor(e,t,i){let{blockSize:n}=It(e);this.key=t,this.iv=i,this.prevBlock=i.slice(),this.nextBlock=new Uint8Array(n),this.i=0,this.blockSize=n,this.zeroBlock=new Uint8Array(this.blockSize)}static isSupported(e){let{keySize:t}=It(e);return Qy.importKey("raw",new Uint8Array(t),"aes-cbc",!1,["encrypt"]).then(()=>!0,()=>!1)}async _runCBC(e,t){let i="AES-CBC";this.keyRef=this.keyRef||await Qy.importKey("raw",this.key,i,!1,["encrypt"]);let n=await Qy.encrypt({name:i,iv:t||this.zeroBlock},this.keyRef,e);return new Uint8Array(n).subarray(0,e.length)}async encryptChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=F.concatUint8Array([this.prevBlock,o.subarray(0,o.length-this.blockSize)]),c=await this._runCBC(a);return gy(c,o),this.prevBlock=c.slice(-this.blockSize),s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,c}this.i+=i.length;let n;if(this.i===this.nextBlock.length){let s=this.nextBlock;n=await this._runCBC(this.prevBlock),gy(n,s),this.prevBlock=n.slice(),this.i=0;let o=e.subarray(i.length);this.nextBlock.set(o,this.i),this.i+=o.length}else n=new Uint8Array;return n}async finish(){let e;if(this.i===0)e=new Uint8Array;else{this.nextBlock=this.nextBlock.subarray(0,this.i);let t=this.nextBlock,i=await this._runCBC(this.prevBlock);gy(i,t),e=i.subarray(0,t.length)}return this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.keyRef=null,this.key=null}async encrypt(e){let i=(await this._runCBC(F.concatUint8Array([new Uint8Array(this.blockSize),e]),this.iv)).subarray(0,e.length);return gy(i,e),this.clearSensitiveData(),i}},Vy=class{constructor(e,t,i,n){this.forEncryption=e;let{blockSize:s}=It(t);this.key=x5.expandKeyLE(i),n.byteOffset%4!==0&&(n=n.slice()),this.prevBlock=KE(n),this.nextBlock=new Uint8Array(s),this.i=0,this.blockSize=s}_runCFB(e){let t=KE(e),i=new Uint8Array(e.length),n=KE(i);for(let s=0;s+4<=n.length;s+=4){let{s0:o,s1:a,s2:c,s3:l}=x5.encrypt(this.key,this.prevBlock[0],this.prevBlock[1],this.prevBlock[2],this.prevBlock[3]);n[s+0]=t[s+0]^o,n[s+1]=t[s+1]^a,n[s+2]=t[s+2]^c,n[s+3]=t[s+3]^l,this.prevBlock=(this.forEncryption?n:t).slice(s,s+4)}return i}async processChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=this._runCFB(o);return s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,a}this.i+=i.length;let n;if(this.i===this.nextBlock.length){n=this._runCFB(this.nextBlock),this.i=0;let s=e.subarray(i.length);this.nextBlock.set(s,this.i),this.i+=s.length}else n=new Uint8Array;return n}async finish(){let e;return this.i===0?e=new Uint8Array:e=this._runCFB(this.nextBlock).subarray(0,this.i),this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.key.fill(0)}};KE=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));k5=F.getWebCrypto(),vW=F.getNodeCrypto(),io=16;_y=new Uint8Array(io);D5=F.getWebCrypto(),QW=F.getNodeCrypto(),_W=F.getNodeBuffer(),co=16,FW=co,ud=co,Q5=new Uint8Array(co),bB=new Uint8Array(co);bB[co-1]=1;vB=new Uint8Array(co);vB[co-1]=2;AA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[8+i]^=e[i];return t};AA.blockLength=co;AA.ivLength=FW;AA.tagLength=ud;li=16,IT=15,ha=16;Sf=new Uint8Array(li),UW=new Uint8Array([1]);hA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[7+i]^=e[i];return t};hA.blockLength=li;hA.ivLength=IT;hA.tagLength=ha;GE=F.getWebCrypto(),F5=F.getNodeCrypto(),P5=F.getNodeBuffer(),RW=16,NW=12,fd=16,zE="AES-GCM";kd.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[4+i]^=e[i];return t};kd.blockLength=RW;kd.ivLength=NW;kd.tagLength=fd;LW=2,HW=19,KW=16,T5=30,wd=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="Argon2OutOfMemoryError"}},GW=2<<19,kB=class{constructor(e=pe){let{passes:t,parallelism:i,memoryExponent:n}=e.s2kArgon2Params;this.type="argon2",this.salt=null,this.t=t,this.p=i,this.encodedM=n}generateSalt(){this.salt=Rr(KW)}read(e){let t=0;return this.salt=e.subarray(t,t+16),t+=16,this.t=e[t++],this.p=e[t++],this.encodedM=e[t++],t}write(){let e=[new Uint8Array([m.write(m.s2k,this.type)]),this.salt,new Uint8Array([this.t,this.p,this.encodedM])];return F.concatUint8Array(e)}async produceKey(e,t,i){if(i.maxArgon2MemoryExponent>T5)throw new wd(`'config.maxArgon2MemoryExponent' exceeds the max allowed value of ${T5}`);if(this.encodedM>i.maxArgon2MemoryExponent)throw new wd("Argon2 required memory exceeds `config.maxArgon2MemoryExponent`");let n=1<<this.encodedM;try{my=my||(await Promise.resolve().then(function(){return Nte})).default,Df=Df||my();let s=await Df,o=F.encodeUTF8(e),a=s({version:HW,type:LW,password:o,salt:this.salt,tagLength:t,memorySize:n,parallelism:this.p,passes:this.t});return n>GW&&(Df=my(),Df.catch(()=>{})),a}catch(s){throw s.message&&(s.message.includes("Unable to grow instance memory")||s.message.includes("failed to grow memory")||s.message.includes("WebAssembly.Memory.grow")||s.message.includes("Out of memory"))?new wd("Could not allocate required memory for Argon2"):s}}},SB=class{constructor(e,t=pe){this.algorithm=m.hash.sha256,this.type=m.read(m.s2k,e),this.c=t.s2kIterationCountByte,this.salt=null}generateSalt(){switch(this.type){case"salted":case"iterated":this.salt=Rr(8)}}getCount(){return 16+(this.c&15)<<(this.c>>4)+6}read(e){let t=0;switch(this.algorithm=e[t++],this.type){case"simple":break;case"salted":this.salt=e.subarray(t,t+8),t+=8;break;case"iterated":this.salt=e.subarray(t,t+8),t+=8,this.c=e[t++];break;case"gnu":if(F.uint8ArrayToString(e.subarray(t,t+3))==="GNU")if(t+=3,1e3+e[t++]===1001)this.type="gnu-dummy";else throw new ft("Unknown s2k gnu protection mode.");else throw new ft("Unknown s2k type.");break;default:throw new ft("Unknown s2k type.")}return t}write(){if(this.type==="gnu-dummy")return new Uint8Array([101,0,...F.stringToUint8Array("GNU"),1]);let e=[new Uint8Array([m.write(m.s2k,this.type),this.algorithm])];switch(this.type){case"simple":break;case"salted":e.push(this.salt);break;case"iterated":e.push(this.salt),e.push(new Uint8Array([this.c]));break;case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}return F.concatUint8Array(e)}async produceKey(e,t,i){e=F.encodeUTF8(e);let n=[],s=0,o=0;for(;s<t;){let a;switch(this.type){case"simple":a=F.concatUint8Array([new Uint8Array(o),e]);break;case"salted":a=F.concatUint8Array([new Uint8Array(o),this.salt,e]);break;case"iterated":{let l=F.concatUint8Array([this.salt,e]),d=l.length,u=Math.max(this.getCount(),d);a=new Uint8Array(o+u),a.set(l,o);for(let f=o+d;f<u;f+=d,d*=2)a.copyWithin(f,o,f);break}case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}let c=await fs(this.algorithm,a);n.push(c),s+=c.length,o++}return F.concatUint8Array(n).subarray(0,t)}},zW=new Set([m.s2k.argon2,m.s2k.iterated]);JW=S6("/");try{xd=JW("worker_threads"),jW=xd.Worker,$W=xd.isMarkedAsUntransferable}catch{}Gt=Uint8Array,Li=Uint16Array,I1=Int32Array,FI=new Gt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),PI=new Gt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),DB=new Gt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),xT=function(r,e){for(var t=new Li(31),i=0;i<31;++i)t[i]=e+=1<<r[i-1];for(var n=new I1(t[30]),i=1;i<30;++i)for(var s=t[i];s<t[i+1];++s)n[s]=s-t[i]<<5|i;return{b:t,r:n}},xd=xT(FI,2),CT=xd.b,QB=xd.r;CT[28]=258,QB[258]=28;ET=xT(PI,0),VW=ET.b,U5=ET.r,_B=new Li(32768);for(ut=0;ut<32768;++ut)zs=(ut&43690)>>1|(ut&21845)<<1,zs=(zs&52428)>>2|(zs&13107)<<2,zs=(zs&61680)>>4|(zs&3855)<<4,_B[ut]=((zs&65280)>>8|(zs&255)<<8)>>1;ds=(function(r,e,t){for(var i=r.length,n=0,s=new Li(e);n<i;++n)r[n]&&++s[r[n]-1];var o=new Li(e);for(n=1;n<e;++n)o[n]=o[n-1]+s[n-1]<<1;var a;if(t){a=new Li(1<<e);var c=15-e;for(n=0;n<i;++n)if(r[n])for(var l=n<<4|r[n],d=e-r[n],u=o[r[n]-1]++<<d,f=u|(1<<d)-1;u<=f;++u)a[_B[u]>>c]=l}else for(a=new Li(i),n=0;n<i;++n)r[n]&&(a[n]=_B[o[r[n]-1]++]>>15-r[n]);return a}),Ca=new Gt(288);for(ut=0;ut<144;++ut)Ca[ut]=8;for(ut=144;ut<256;++ut)Ca[ut]=9;for(ut=256;ut<280;++ut)Ca[ut]=7;for(ut=280;ut<288;++ut)Ca[ut]=8;$f=new Gt(32);for(ut=0;ut<32;++ut)$f[ut]=5;YW=ds(Ca,9,0),WW=ds(Ca,9,1),XW=ds($f,5,0),ZW=ds($f,5,1),JE=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},vn=function(r,e,t){var i=e/8|0;return(r[i]|r[i+1]<<8)>>(e&7)&t},jE=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},w1=function(r){return(r+7)/8|0},Hf=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new Gt(r.subarray(e,t))},eX=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Br=function(r,e,t){var i=new Error(e||eX[r]);if(i.code=r,Error.captureStackTrace&&Error.captureStackTrace(i,Br),!t)throw i;return i},tX=function(r,e,t,i){var n=r.length,s=0;if(!n||e.f&&!e.l)return t||new Gt(0);var o=!t,a=o||e.i!=2,c=e.i;o&&(t=new Gt(n*3));var l=function(qe){var _e=t.length;if(qe>_e){var se=new Gt(Math.max(_e*2,qe));se.set(t),t=se}},d=e.f||0,u=e.p||0,f=e.b||0,h=e.l,g=e.d,p=e.m,I=e.n,y=n*8;do{if(!h){d=vn(r,u,1);var w=vn(r,u+1,3);if(u+=3,w)if(w==1)h=WW,g=ZW,p=9,I=5;else if(w==2){var _=vn(r,u,31)+257,R=vn(r,u+10,15)+4,U=_+vn(r,u+5,31)+1;u+=14;for(var T=new Gt(U),D=new Gt(19),B=0;B<R;++B)D[DB[B]]=vn(r,u+B*3,7);u+=R*3;for(var Q=JE(D),v=(1<<Q)-1,E=ds(D,Q,1),B=0;B<U;){var P=E[vn(r,u,v)];u+=P&15;var C=P>>4;if(C<16)T[B++]=C;else{var N=0,J=0;for(C==16?(J=3+vn(r,u,3),u+=2,N=T[B-1]):C==17?(J=3+vn(r,u,7),u+=3):C==18&&(J=11+vn(r,u,127),u+=7);J--;)T[B++]=N}}var z=T.subarray(0,_),L=T.subarray(_);p=JE(z),I=JE(L),h=ds(z,p,1),g=ds(L,I,1)}else Br(1);else{var C=w1(u)+4,b=r[C-4]|r[C-3]<<8,x=C+b;if(x>n){c&&Br(0);break}a&&l(f+b),t.set(r.subarray(C,x),f),e.b=f+=b,e.p=u=x*8,e.f=d;continue}if(u>y){c&&Br(0);break}}a&&l(f+131072);for(var G=(1<<p)-1,K=(1<<I)-1,$=u;;$=u){var N=h[jE(r,u)&G],te=N>>4;if(u+=N&15,u>y){c&&Br(0);break}if(N||Br(2),te<256)t[f++]=te;else if(te==256){$=u,h=null;break}else{var re=te-254;if(te>264){var B=te-257,ee=FI[B];re=vn(r,u,(1<<ee)-1)+CT[B],u+=ee}var Z=g[jE(r,u)&K],me=Z>>4;Z||Br(3),u+=Z&15;var L=VW[me];if(me>3){var ee=PI[me];L+=jE(r,u)&(1<<ee)-1,u+=ee}if(u>y){c&&Br(0);break}a&&l(f+131072);var le=f+re;if(f<L){var Ae=s-L,ve=Math.min(L,le);for(Ae+f<0&&Br(3);f<ve;++f)t[f]=i[Ae+f]}for(;f<le;++f)t[f]=t[f-L]}}e.l=h,e.p=$,e.b=f,e.f=d,h&&(d=1,e.m=p,e.d=g,e.n=I)}while(!d);return f!=t.length&&o?Hf(t,0,f):t.subarray(0,f)},Js=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8},Qf=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8,r[i+2]|=t>>16},$E=function(r,e){for(var t=[],i=0;i<r.length;++i)r[i]&&t.push({s:i,f:r[i]});var n=t.length,s=t.slice();if(!n)return{t:Wy,l:0};if(n==1){var o=new Gt(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(x,_){return x.f-_.f}),t.push({s:-1,f:25001});var a=t[0],c=t[1],l=0,d=1,u=2;for(t[0]={s:-1,f:a.f+c.f,l:a,r:c};d!=n-1;)a=t[t[l].f<t[u].f?l++:u++],c=t[l!=d&&t[l].f<t[u].f?l++:u++],t[d++]={s:-1,f:a.f+c.f,l:a,r:c};for(var f=s[0].s,i=1;i<n;++i)s[i].s>f&&(f=s[i].s);var h=new Li(f+1),g=FB(t[d-1],h,0);if(g>e){var i=0,p=0,I=g-e,y=1<<I;for(s.sort(function(_,R){return h[R.s]-h[_.s]||_.f-R.f});i<n;++i){var w=s[i].s;if(h[w]>e)p+=y-(1<<g-h[w]),h[w]=e;else break}for(p>>=I;p>0;){var C=s[i].s;h[C]<e?p-=1<<e-h[C]++-1:++i}for(;i>=0&&p;--i){var b=s[i].s;h[b]==e&&(--h[b],++p)}g=e}return{t:new Gt(h),l:g}},FB=function(r,e,t){return r.s==-1?Math.max(FB(r.l,e,t+1),FB(r.r,e,t+1)):e[r.s]=t},R5=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new Li(++e),i=0,n=r[0],s=1,o=function(c){t[i++]=c},a=1;a<=e;++a)if(r[a]==n&&a!=e)++s;else{if(!n&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(n),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(n);s=1,n=r[a]}return{c:t.subarray(0,i),n:e}},_f=function(r,e){for(var t=0,i=0;i<e.length;++i)t+=r[i]*e[i];return t},x1=function(r,e,t){var i=t.length,n=w1(e+2);r[n]=i&255,r[n+1]=i>>8,r[n+2]=r[n]^255,r[n+3]=r[n+1]^255;for(var s=0;s<i;++s)r[n+s+4]=t[s];return(n+4+i)*8},N5=function(r,e,t,i,n,s,o,a,c,l,d){Js(e,d++,t),++n[256];for(var u=$E(n,15),f=u.t,h=u.l,g=$E(s,15),p=g.t,I=g.l,y=R5(f),w=y.c,C=y.n,b=R5(p),x=b.c,_=b.n,R=new Li(19),U=0;U<w.length;++U)++R[w[U]&31];for(var U=0;U<x.length;++U)++R[x[U]&31];for(var T=$E(R,7),D=T.t,B=T.l,Q=19;Q>4&&!D[DB[Q-1]];--Q);var v=l+5<<3,E=_f(n,Ca)+_f(s,$f)+o,P=_f(n,f)+_f(s,p)+o+14+3*Q+_f(R,D)+2*R[16]+3*R[17]+7*R[18];if(c>=0&&v<=E&&v<=P)return x1(e,d,r.subarray(c,c+l));var N,J,z,L;if(Js(e,d,1+(P<E)),d+=2,P<E){N=ds(f,h,0),J=f,z=ds(p,I,0),L=p;var G=ds(D,B,0);Js(e,d,C-257),Js(e,d+5,_-1),Js(e,d+10,Q-4),d+=14;for(var U=0;U<Q;++U)Js(e,d+3*U,D[DB[U]]);d+=3*Q;for(var K=[w,x],$=0;$<2;++$)for(var te=K[$],U=0;U<te.length;++U){var re=te[U]&31;Js(e,d,G[re]),d+=D[re],re>15&&(Js(e,d,te[U]>>5&127),d+=te[U]>>12)}}else N=YW,J=Ca,z=XW,L=$f;for(var U=0;U<a;++U){var ee=i[U];if(ee>255){var re=ee>>18&31;Qf(e,d,N[re+257]),d+=J[re+257],re>7&&(Js(e,d,ee>>23&31),d+=FI[re]);var Z=ee&31;Qf(e,d,z[Z]),d+=L[Z],Z>3&&(Qf(e,d,ee>>5&8191),d+=PI[Z])}else Qf(e,d,N[ee]),d+=J[ee]}return Qf(e,d,N[256]),d+J[256]},rX=new I1([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Wy=new Gt(0),iX=function(r,e,t,i,n,s){var o=s.z||r.length,a=new Gt(i+o+5*(1+Math.ceil(o/7e3))+n),c=a.subarray(i,a.length-n),l=s.l,d=(s.r||0)&7;if(e){d&&(c[0]=s.r>>3);for(var u=rX[e-1],f=u>>13,h=u&8191,g=(1<<t)-1,p=s.p||new Li(32768),I=s.h||new Li(g+1),y=Math.ceil(t/3),w=2*y,C=function(it){return(r[it]^r[it+1]<<y^r[it+2]<<w)&g},b=new I1(25e3),x=new Li(288),_=new Li(32),R=0,U=0,T=s.i||0,D=0,B=s.w||0,Q=0;T+2<o;++T){var v=C(T),E=T&32767,P=I[v];if(p[E]=P,I[v]=E,B<=T){var N=o-T;if((R>7e3||D>24576)&&(N>423||!l)){d=N5(r,c,0,b,x,_,U,D,Q,T-Q,d),D=R=U=0,Q=T;for(var J=0;J<286;++J)x[J]=0;for(var J=0;J<30;++J)_[J]=0}var z=2,L=0,G=h,K=E-P&32767;if(N>2&&v==C(T-K))for(var $=Math.min(f,N)-1,te=Math.min(32767,T),re=Math.min(258,N);K<=te&&--G&&E!=P;){if(r[T+z]==r[T+z-K]){for(var ee=0;ee<re&&r[T+ee]==r[T+ee-K];++ee);if(ee>z){if(z=ee,L=K,ee>$)break;for(var Z=Math.min(K,ee-2),me=0,J=0;J<Z;++J){var le=T-K+J&32767,Ae=p[le],ve=le-Ae&32767;ve>me&&(me=ve,P=le)}}}E=P,P=p[E],K+=E-P&32767}if(L){b[D++]=268435456|QB[z]<<18|U5[L];var qe=QB[z]&31,_e=U5[L]&31;U+=FI[qe]+PI[_e],++x[257+qe],++_[_e],B=T+z,++R}else b[D++]=r[T],++x[r[T]]}}for(T=Math.max(T,B);T<o;++T)b[D++]=r[T],++x[r[T]];d=N5(r,c,l,b,x,_,U,D,Q,T-Q,d),l||(s.r=d&7|c[d/8|0]<<3,d-=7,s.h=I,s.p=p,s.i=T,s.w=B)}else{for(var T=s.w||0;T<o+l;T+=65535){var se=T+65535;se>=o&&(c[d/8|0]=l,se=o),d=x1(c,d+1,r.subarray(T,se))}s.i=o}return Hf(a,0,i+w1(d)+n)},BT=function(){var r=1,e=0;return{p:function(t){for(var i=r,n=e,s=t.length|0,o=0;o!=s;){for(var a=Math.min(o+2655,s);o<a;++o)n+=i+=t[o];i=(i&65535)+15*(i>>16),n=(n&65535)+15*(n>>16)}r=i,e=n},d:function(){return r%=65521,e%=65521,(r&255)<<24|(r&65280)<<8|(e&255)<<8|e>>8}}},bT=function(r,e,t,i,n){if(!n&&(n={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),o=new Gt(s.length+r.length);o.set(s),o.set(r,s.length),r=o,n.w=s.length}return iX(r,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+e.mem,t,i,n)},vT=function(r,e,t){for(;t;++e)r[e]=t,t>>>=8},nX=function(r,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(r[0]=120,r[1]=i<<6|(e.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,e.dictionary){var n=BT();n.p(e.dictionary),vT(r,2,n.d())}},sX=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&Br(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&Br(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2},Fy=(function(){function r(e,t){if(typeof e=="function"&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new Gt(98304),this.o.dictionary){var i=this.o.dictionary.subarray(-32768);this.b.set(i,32768-i.length),this.s.i=32768-i.length}}return r.prototype.p=function(e,t){this.ondata(bT(e,this.o,0,0,this.s),t)},r.prototype.push=function(e,t){this.ondata||Br(5),this.s.l&&Br(4);var i=e.length+this.s.z;if(i>this.b.length){if(i>2*this.b.length-32768){var n=new Gt(i&-32768);n.set(this.b.subarray(0,this.s.z)),this.b=n}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Wy)},r.prototype.flush=function(e){if(this.ondata||Br(5),this.s.l&&Br(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new Gt(6);t[0]=this.s.r>>3;var i=x1(t,this.s.r,Wy);this.s.r=0,this.ondata(t.subarray(0,i>>3),!1)}},r})(),Py=(function(){function r(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var i=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:i?i.length:0},this.o=new Gt(32768),this.p=new Gt(0),i&&this.o.set(i)}return r.prototype.e=function(e){if(this.ondata||Br(5),this.d&&Br(4),!this.p.length)this.p=e;else if(e.length){var t=new Gt(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},r.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,i=tX(this.p,this.s,this.o);this.ondata(Hf(i,t,this.s.b),this.d),this.o=Hf(i,this.s.b-32768),this.s.b=this.o.length,this.p=Hf(this.p,this.s.p/8|0),this.s.p&=7},r.prototype.push=function(e,t){this.e(e),this.c(t)},r})(),oX=(function(){function r(e,t){this.c=BT(),this.v=1,Fy.call(this,e,t)}return r.prototype.push=function(e,t){this.c.p(e),Fy.prototype.push.call(this,e,t)},r.prototype.p=function(e,t){var i=bT(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(nX(i,this.o),this.v=0),t&&vT(i,i.length-4,this.c.d()),this.ondata(i,t)},r.prototype.flush=function(e){Fy.prototype.flush.call(this,e)},r})(),aX=(function(){function r(e,t){Py.call(this,e,t),this.v=e&&e.dictionary?2:1}return r.prototype.push=function(e,t){if(Py.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(sX(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&Br(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Py.prototype.c.call(this,t)},r})(),cX=typeof TextDecoder<"u"&&new TextDecoder,lX=0;try{cX.decode(Wy,{stream:!0}),lX=1}catch{}Ea=class{static get tag(){return m.packet.literalData}constructor(e=new Date){this.format=m.literal.utf8,this.date=F.normalizeDate(e),this.text=null,this.data=null,this.filename=""}setText(e,t=m.literal.utf8){this.format=t,this.text=e,this.data=null}getText(e=!1){return(this.text===null||F.isStream(this.text))&&(this.text=F.decodeUTF8(F.nativeEOL(this.getBytes(e)))),this.text}setBytes(e,t){this.format=t,this.data=e,this.text=null}getBytes(e=!1){return this.data===null&&(this.data=F.canonicalizeEOL(F.encodeUTF8(this.text))),e?Mf(this.data):this.data}setFilename(e){this.filename=e}getFilename(){return this.filename}async read(e){await II(e,async t=>{let i=await t.readByte(),n=await t.readByte();this.filename=F.decodeUTF8(await t.readBytes(n)),this.date=F.readDate(await t.readBytes(4));let s=t.remainder();St(s)&&(s=await Xt(s)),this.setBytes(s,i)})}writeHeader(){let e=F.encodeUTF8(this.filename),t=new Uint8Array([e.length]),i=new Uint8Array([this.format]),n=F.writeDate(this.date);return F.concatUint8Array([i,t,e,n])}write(){let e=this.writeHeader(),t=this.getBytes();return F.concat([e,t])}},so=class r{constructor(){this.bytes=""}read(e){return this.bytes=F.uint8ArrayToString(e.subarray(0,8)),this.bytes.length}write(){return F.stringToUint8Array(this.bytes)}toHex(){return F.uint8ArrayToHex(F.stringToUint8Array(this.bytes))}equals(e,t=!1){return t&&(e.isWildcard()||this.isWildcard())||this.bytes===e.bytes}isNull(){return this.bytes===""}isWildcard(){return/^0+$/.test(this.toHex())}static mapToHex(e){return e.toHex()}static fromID(e){let t=new r;return t.read(F.hexToUint8Array(e)),t}static wildcard(){let e=new r;return e.read(new Uint8Array(8)),e}},Ff=Symbol("verified"),q5="salt@notations.openpgpjs.org",dX=new Set([m.signatureSubpacket.issuerKeyID,m.signatureSubpacket.issuerFingerprint,m.signatureSubpacket.embeddedSignature]),Nr=class r{static get tag(){return m.packet.signature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.signatureData=null,this.unhashedSubpackets=[],this.unknownSubpackets=[],this.signedHashValue=null,this.salt=null,this.created=null,this.signatureExpirationTime=null,this.signatureNeverExpires=!0,this.exportable=null,this.trustLevel=null,this.trustAmount=null,this.regularExpression=null,this.revocable=null,this.keyExpirationTime=null,this.keyNeverExpires=null,this.preferredSymmetricAlgorithms=null,this.revocationKeyClass=null,this.revocationKeyAlgorithm=null,this.revocationKeyFingerprint=null,this.issuerKeyID=new so,this.rawNotations=[],this.notations={},this.preferredHashAlgorithms=null,this.preferredCompressionAlgorithms=null,this.keyServerPreferences=null,this.preferredKeyServer=null,this.isPrimaryUserID=null,this.policyURI=null,this.keyFlags=null,this.signersUserID=null,this.reasonForRevocationFlag=null,this.reasonForRevocationString=null,this.features=null,this.signatureTargetPublicKeyAlgorithm=null,this.signatureTargetHashAlgorithm=null,this.signatureTargetHash=null,this.embeddedSignature=null,this.issuerKeyVersion=null,this.issuerFingerprint=null,this.preferredAEADAlgorithms=null,this.preferredCipherSuites=null,this.revoked=null,this[Ff]=null}read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the signature packet is unsupported.`);if(this.signatureType=e[i++],this.publicKeyAlgorithm=e[i++],this.hashAlgorithm=e[i++],i+=this.readSubPackets(e.subarray(i,e.length),!0),!this.created)throw new Error("Missing signature creation time subpacket.");if(this.signatureData=e.subarray(0,i),i+=this.readSubPackets(e.subarray(i,e.length),!1),this.signedHashValue=e.subarray(i,i+2),i+=2,this.version===6){let a=e[i++];this.salt=e.subarray(i,i+a),i+=a}let n=e.subarray(i,e.length),{read:s,signatureParams:o}=qW(this.publicKeyAlgorithm,n);if(s<n.length)throw new Error("Error reading MPIs");this.params=o}writeParams(){return this.params instanceof Promise?Hc(async()=>vd(this.publicKeyAlgorithm,await this.params)):vd(this.publicKeyAlgorithm,this.params)}write(){let e=[];return e.push(this.signatureData),e.push(this.writeUnhashedSubPackets()),e.push(this.signedHashValue),this.version===6&&(e.push(new Uint8Array([this.salt.length])),e.push(this.salt)),e.push(this.writeParams()),F.concat(e)}async sign(e,t,i=new Date,n=!1,s){this.version=e.version,this.created=F.normalizeDate(i),this.issuerKeyVersion=e.version,this.issuerFingerprint=e.getFingerprintBytes(),this.issuerKeyID=e.getKeyID();let o=[new Uint8Array([this.version,this.signatureType,this.publicKeyAlgorithm,this.hashAlgorithm])];if(this.version===6){let d=VE(this.hashAlgorithm);if(this.salt===null)this.salt=Rr(d);else if(d!==this.salt.length)throw new Error("Provided salt does not have the required length")}else if(s.nonDeterministicSignaturesViaNotation)if(this.rawNotations.filter(({name:u})=>u===q5).length===0){let u=Rr(VE(this.hashAlgorithm));this.rawNotations.push({name:q5,value:u,humanReadable:!1,critical:!1})}else throw new Error("Unexpected existing salt notation");o.push(this.writeHashedSubPackets()),this.unhashedSubpackets=[],this.signatureData=F.concat(o);let a=this.toHash(this.signatureType,t,n),c=await this.hash(this.signatureType,t,a,n);this.signedHashValue=Ur(Uc(c),0,2);let l=async()=>MW(this.publicKeyAlgorithm,this.hashAlgorithm,e.publicParams,e.privateParams,a,await Xt(c));F.isStream(c)?this.params=l():(this.params=await l(),this[Ff]=!0)}writeHashedSubPackets(){let e=m.signatureSubpacket,t=[],i;if(this.created===null)throw new Error("Missing signature creation time");t.push(yt(e.signatureCreationTime,!0,F.writeDate(this.created))),this.signatureExpirationTime!==null&&t.push(yt(e.signatureExpirationTime,!0,F.writeNumber(this.signatureExpirationTime,4))),this.exportable!==null&&t.push(yt(e.exportableCertification,!0,new Uint8Array([this.exportable?1:0]))),this.trustLevel!==null&&(i=new Uint8Array([this.trustLevel,this.trustAmount]),t.push(yt(e.trustSignature,!0,i))),this.regularExpression!==null&&t.push(yt(e.regularExpression,!0,this.regularExpression)),this.revocable!==null&&t.push(yt(e.revocable,!0,new Uint8Array([this.revocable?1:0]))),this.keyExpirationTime!==null&&t.push(yt(e.keyExpirationTime,!0,F.writeNumber(this.keyExpirationTime,4))),this.preferredSymmetricAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredSymmetricAlgorithms)),t.push(yt(e.preferredSymmetricAlgorithms,!1,i))),this.revocationKeyClass!==null&&(i=new Uint8Array([this.revocationKeyClass,this.revocationKeyAlgorithm]),i=F.concat([i,this.revocationKeyFingerprint]),t.push(yt(e.revocationKey,!1,i))),!this.issuerKeyID.isNull()&&this.issuerKeyVersion<5&&t.push(yt(e.issuerKeyID,!1,this.issuerKeyID.write())),this.rawNotations.forEach(({name:o,value:a,humanReadable:c,critical:l})=>{i=[new Uint8Array([c?128:0,0,0,0])];let d=F.encodeUTF8(o);i.push(F.writeNumber(d.length,2)),i.push(F.writeNumber(a.length,2)),i.push(d),i.push(a),i=F.concat(i),t.push(yt(e.notationData,l,i))}),this.preferredHashAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredHashAlgorithms)),t.push(yt(e.preferredHashAlgorithms,!1,i))),this.preferredCompressionAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredCompressionAlgorithms)),t.push(yt(e.preferredCompressionAlgorithms,!1,i))),this.keyServerPreferences!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyServerPreferences)),t.push(yt(e.keyServerPreferences,!1,i))),this.preferredKeyServer!==null&&t.push(yt(e.preferredKeyServer,!1,F.encodeUTF8(this.preferredKeyServer))),this.isPrimaryUserID!==null&&t.push(yt(e.primaryUserID,!1,new Uint8Array([this.isPrimaryUserID?1:0]))),this.policyURI!==null&&t.push(yt(e.policyURI,!1,F.encodeUTF8(this.policyURI))),this.keyFlags!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyFlags)),t.push(yt(e.keyFlags,!0,i))),this.signersUserID!==null&&t.push(yt(e.signersUserID,!1,F.encodeUTF8(this.signersUserID))),this.reasonForRevocationFlag!==null&&(i=F.stringToUint8Array(String.fromCharCode(this.reasonForRevocationFlag)+this.reasonForRevocationString),t.push(yt(e.reasonForRevocation,!0,i))),this.features!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.features)),t.push(yt(e.features,!1,i))),this.signatureTargetPublicKeyAlgorithm!==null&&(i=[new Uint8Array([this.signatureTargetPublicKeyAlgorithm,this.signatureTargetHashAlgorithm])],i.push(F.stringToUint8Array(this.signatureTargetHash)),i=F.concat(i),t.push(yt(e.signatureTarget,!0,i))),this.embeddedSignature!==null&&t.push(yt(e.embeddedSignature,!0,this.embeddedSignature.write())),this.issuerFingerprint!==null&&(i=[new Uint8Array([this.issuerKeyVersion]),this.issuerFingerprint],i=F.concat(i),t.push(yt(e.issuerFingerprint,this.version>=5,i))),this.preferredAEADAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredAEADAlgorithms)),t.push(yt(e.preferredAEADAlgorithms,!1,i))),this.preferredCipherSuites!==null&&(i=new Uint8Array([].concat(...this.preferredCipherSuites)),t.push(yt(e.preferredCipherSuites,!1,i)));let n=F.concat(t),s=F.writeNumber(n.length,this.version===6?4:2);return F.concat([s,n])}writeUnhashedSubPackets(){let e=this.unhashedSubpackets.map(({type:n,critical:s,body:o})=>yt(n,s,o)),t=F.concat(e),i=F.writeNumber(t.length,this.version===6?4:2);return F.concat([i,t])}readSubPacket(e,t=!0){let i=0,n=!!(e[i]&128),s=e[i]&127;if(i++,!(!t&&(this.unhashedSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)}),!dX.has(s))))switch(s){case m.signatureSubpacket.signatureCreationTime:this.created=F.readDate(e.subarray(i,e.length));break;case m.signatureSubpacket.signatureExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.signatureNeverExpires=o===0,this.signatureExpirationTime=o;break}case m.signatureSubpacket.exportableCertification:this.exportable=e[i++]===1;break;case m.signatureSubpacket.trustSignature:this.trustLevel=e[i++],this.trustAmount=e[i++];break;case m.signatureSubpacket.regularExpression:this.regularExpression=e[i];break;case m.signatureSubpacket.revocable:this.revocable=e[i++]===1;break;case m.signatureSubpacket.keyExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.keyExpirationTime=o,this.keyNeverExpires=o===0;break}case m.signatureSubpacket.preferredSymmetricAlgorithms:this.preferredSymmetricAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.revocationKey:this.revocationKeyClass=e[i++],this.revocationKeyAlgorithm=e[i++],this.revocationKeyFingerprint=e.subarray(i,i+20);break;case m.signatureSubpacket.issuerKeyID:if(this.version===4)this.issuerKeyID.read(e.subarray(i,e.length));else if(t)throw new Error("Unexpected Issuer Key ID subpacket");break;case m.signatureSubpacket.notationData:{let o=!!(e[i]&128);i+=4;let a=F.readNumber(e.subarray(i,i+2));i+=2;let c=F.readNumber(e.subarray(i,i+2));i+=2;let l=F.decodeUTF8(e.subarray(i,i+a)),d=e.subarray(i+a,i+a+c);this.rawNotations.push({name:l,humanReadable:o,value:d,critical:n}),o&&(this.notations[l]=F.decodeUTF8(d));break}case m.signatureSubpacket.preferredHashAlgorithms:this.preferredHashAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCompressionAlgorithms:this.preferredCompressionAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.keyServerPreferences:this.keyServerPreferences=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredKeyServer:this.preferredKeyServer=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.primaryUserID:this.isPrimaryUserID=e[i++]!==0;break;case m.signatureSubpacket.policyURI:this.policyURI=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.keyFlags:this.keyFlags=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signersUserID:this.signersUserID=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.reasonForRevocation:this.reasonForRevocationFlag=e[i++],this.reasonForRevocationString=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.features:this.features=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signatureTarget:{this.signatureTargetPublicKeyAlgorithm=e[i++],this.signatureTargetHashAlgorithm=e[i++];let o=gr(this.signatureTargetHashAlgorithm);this.signatureTargetHash=F.uint8ArrayToString(e.subarray(i,i+o));break}case m.signatureSubpacket.embeddedSignature:this.embeddedSignature=new r,this.embeddedSignature.read(e.subarray(i,e.length));break;case m.signatureSubpacket.issuerFingerprint:this.issuerKeyVersion=e[i++],this.issuerFingerprint=e.subarray(i,e.length),this.issuerKeyVersion>=5?this.issuerKeyID.read(this.issuerFingerprint):this.issuerKeyID.read(this.issuerFingerprint.subarray(-8));break;case m.signatureSubpacket.preferredAEADAlgorithms:this.preferredAEADAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCipherSuites:this.preferredCipherSuites=[];for(let o=i;o<e.length;o+=2)this.preferredCipherSuites.push([e[o],e[o+1]]);break;default:this.unknownSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)});break}}readSubPackets(e,t=!0,i){let n=this.version===6?4:2,s=F.readNumber(e.subarray(0,n)),o=n;for(;o<2+s;){let a=L6(e.subarray(o,e.length));o+=a.offset,this.readSubPacket(e.subarray(o,o+a.len),t,i),o+=a.len}return o}toSign(e,t){let i=m.signature;switch(e){case i.binary:return t.text!==null?F.encodeUTF8(t.getText(!0)):t.getBytes(!0);case i.text:{let n=t.getBytes(!0);return F.canonicalizeEOL(n)}case i.standalone:return new Uint8Array(0);case i.certGeneric:case i.certPersona:case i.certCasual:case i.certPositive:case i.certRevocation:{let n,s;if(t.userID)s=180,n=t.userID;else if(t.userAttribute)s=209,n=t.userAttribute;else throw new Error("Either a userID or userAttribute packet needs to be supplied for certification.");let o=n.write();return F.concat([this.toSign(i.key,t),new Uint8Array([s]),F.writeNumber(o.length,4),o])}case i.subkeyBinding:case i.subkeyRevocation:case i.keyBinding:return F.concat([this.toSign(i.key,t),this.toSign(i.key,{key:t.bind})]);case i.key:if(t.key===void 0)throw new Error("Key packet is required for this signature.");return t.key.writeForHash(this.version);case i.keyRevocation:return this.toSign(i.key,t);case i.timestamp:return new Uint8Array(0);case i.thirdParty:throw new Error("Not implemented");default:throw new Error("Unknown signature type.")}}calculateTrailer(e,t){let i=0;return sr(Uc(this.signatureData),n=>{i+=n.length},()=>{let n=[];return this.version===5&&(this.signatureType===m.signature.binary||this.signatureType===m.signature.text)&&(t?n.push(new Uint8Array(6)):n.push(e.writeHeader())),n.push(new Uint8Array([this.version,255])),this.version===5&&n.push(new Uint8Array(4)),n.push(F.writeNumber(i,4)),F.concat(n)})}toHash(e,t,i=!1){let n=this.toSign(e,t);return F.concat([this.salt||new Uint8Array,n,this.signatureData,this.calculateTrailer(t,i)])}async hash(e,t,i,n=!1){if(this.version===6&&this.salt.length!==VE(this.hashAlgorithm))throw new Error("Signature salt does not have the expected length");return i||(i=this.toHash(e,t,n)),fs(this.hashAlgorithm,i)}async verify(e,t,i,n=new Date,s=!1,o=pe){if(!this.issuerKeyID.equals(e.getKeyID()))throw new Error("Signature was not issued by the given public key");if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Public key algorithm used to sign signature does not match issuer key algorithm.");let a=t===m.signature.binary||t===m.signature.text;if(!(this[Ff]&&!a)){let d,u;if(this.hashed?u=await this.hashed:(d=this.toHash(t,i,s),u=await this.hash(t,i,d)),u=await Xt(u),this.signedHashValue[0]!==u[0]||this.signedHashValue[1]!==u[1])throw new Error("Signed digest did not match");if(this.params=await this.params,this[Ff]=await OW(this.publicKeyAlgorithm,this.hashAlgorithm,this.params,e.publicParams,d,u),!this[Ff])throw new Error("Signature verification failed")}let l=F.normalizeDate(n);if(l&&this.created>l)throw new Error("Signature creation time is in the future");if(l&&l>=this.getExpirationTime())throw new Error("Signature is expired");if(o.rejectHashAlgorithms.has(this.hashAlgorithm))throw new Error("Insecure hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(o.rejectMessageHashAlgorithms.has(this.hashAlgorithm)&&[m.signature.binary,m.signature.text].includes(this.signatureType))throw new Error("Insecure message hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(this.unknownSubpackets.forEach(({type:d,critical:u})=>{if(u)throw new Error(`Unknown critical signature subpacket type ${d}`)}),this.rawNotations.forEach(({name:d,critical:u})=>{if(u&&o.knownNotations.indexOf(d)<0)throw new Error(`Unknown critical notation: ${d}`)}),this.revocationKeyClass!==null)throw new Error("This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.")}isExpired(e=new Date){let t=F.normalizeDate(e);return t!==null?!(this.created<=t&&t<this.getExpirationTime()):!1}getExpirationTime(){return this.signatureNeverExpires?1/0:new Date(this.created.getTime()+this.signatureExpirationTime*1e3)}};an=class r{static get tag(){return m.packet.onePassSignature}static fromSignaturePacket(e,t){let i=new r;return i.version=e.version===6?6:3,i.signatureType=e.signatureType,i.hashAlgorithm=e.hashAlgorithm,i.publicKeyAlgorithm=e.publicKeyAlgorithm,i.issuerKeyID=e.issuerKeyID,i.salt=e.salt,i.issuerFingerprint=e.issuerFingerprint,i.flags=t?1:0,i}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.salt=null,this.issuerKeyID=null,this.issuerFingerprint=null,this.flags=null}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the one-pass signature packet is unsupported.`);if(this.signatureType=e[t++],this.hashAlgorithm=e[t++],this.publicKeyAlgorithm=e[t++],this.version===6){let i=e[t++];this.salt=e.subarray(t,t+i),t+=i,this.issuerFingerprint=e.subarray(t,t+32),t+=32,this.issuerKeyID=new so,this.issuerKeyID.read(this.issuerFingerprint)}else this.issuerKeyID=new so,this.issuerKeyID.read(e.subarray(t,t+8)),t+=8;return this.flags=e[t++],this}write(){let e=[new Uint8Array([this.version,this.signatureType,this.hashAlgorithm,this.publicKeyAlgorithm])];return this.version===6?e.push(new Uint8Array([this.salt.length]),this.salt,this.issuerFingerprint):e.push(this.issuerKeyID.write()),e.push(new Uint8Array([this.flags])),F.concatUint8Array(e)}calculateTrailer(...e){return Hc(async()=>Nr.prototype.calculateTrailer.apply(await this.correspondingSig,e))}async verify(){let e=await this.correspondingSig;if(!e||e.constructor.tag!==m.packet.signature)throw new Error("Corresponding signature packet missing");if(e.signatureType!==this.signatureType||e.hashAlgorithm!==this.hashAlgorithm||e.publicKeyAlgorithm!==this.publicKeyAlgorithm||!e.issuerKeyID.equals(this.issuerKeyID)||this.version===3&&e.version===6||this.version===6&&e.version!==6||this.version===6&&!F.equalsUint8Array(e.issuerFingerprint,this.issuerFingerprint)||this.version===6&&!F.equalsUint8Array(e.salt,this.salt))throw new Error("Corresponding signature packet does not match one-pass signature packet");return e.hashed=this.hashed,e.verify.apply(e,arguments)}};an.prototype.hash=Nr.prototype.hash;an.prototype.toHash=Nr.prototype.toHash;an.prototype.toSign=Nr.prototype.toSign;Ct=class r extends Array{static async fromBinary(e,t,i=pe,n=null,s=!1){let o=new r;return await o.read(e,t,i,n,s),o}async read(e,t,i=pe,n=null,s=!1){let o;i.additionalAllowedPackets.length&&(o=F.constructAllowedPackets(i.additionalAllowedPackets),t={...t,...o}),this.stream=Ba(e,async(c,l)=>{let d=_n(c),u=Hi(l);try{let f=F.isStream(c);for(;;){await u.ready;let h,g;if(await CY(d,f,async y=>{try{if(y.tag===m.packet.marker||y.tag===m.packet.trust||y.tag===m.packet.padding)return;let w=uX(y.tag,t);try{n?.recordPacket(y.tag,o)}catch(C){if(i.enforceGrammar)throw C;F.printDebugError(C)}w.packets=new r,w.fromStream=F.isStream(y.packet),g=w.fromStream;try{await w.read(y.packet,i)}catch(C){throw C instanceof ft?C:F.wrapError(new Lf(`Parsing ${w.constructor.name} failed`),C)}await u.write(w)}catch(w){let C=w instanceof yd&&y.tag<=39,b=w instanceof ft&&!(w instanceof yd)&&!i.ignoreUnsupportedPackets,x=w instanceof Lf&&!i.ignoreMalformedPackets,_=ky(y.tag),R=!(w instanceof yd||w instanceof ft||w instanceof Lf);if(C||b||x||_||R)s?h=w:await u.abort(w);else{let U=new Gf(y.tag,y.packet);await u.write(U)}F.printDebugError(w)}}),g&&(f=null),h)throw await d.readToEnd(),h;let p=await d.peekBytes(2);if(!p||!p.length){try{n?.recordEnd()}catch(y){if(i.enforceGrammar)throw y;F.printDebugError(y)}await u.ready,await u.close();return}}}catch(f){await u.abort(f)}});let a=_n(this.stream);for(;;){let{done:c,value:l}=await a.read();if(c?this.stream=null:this.push(l),c||ky(l.constructor.tag))break}a.releaseLock()}write(){let e=[];for(let t=0;t<this.length;t++){let i=this[t]instanceof Gf?this[t].tag:this[t].constructor.tag,n=this[t].write();if(F.isStream(n)&&ky(this[t].constructor.tag)){let s=[],o=0,a=512;e.push(qy(i)),e.push(sr(n,c=>{if(s.push(c),o+=c.length,o>=a){let l=Math.min(Math.log(o)/Math.LN2|0,30),d=2**l,u=F.concat([xY(l)].concat(s));return s=[u.subarray(1+d)],o=s[0].length,u.subarray(0,1+d)}},()=>F.concat([xI(o)].concat(s))))}else{if(F.isStream(n)){let s=0;e.push(sr(Uc(n),o=>{s+=o.length},()=>p5(i,s)))}else e.push(p5(i,n.length));e.push(n)}}return F.concat(e)}filterByTag(...e){let t=new r,i=n=>s=>n===s;for(let n=0;n<this.length;n++)e.some(i(this[n].constructor.tag))&&t.push(this[n]);return t}findPacket(e){return this.find(t=>t.constructor.tag===e)}indexOfTag(...e){let t=[],i=this,n=s=>o=>s===o;for(let s=0;s<this.length;s++)e.some(n(i[s].constructor.tag))&&t.push(s);return t}},rs=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="GrammarError"}};(function(r){r[r.EmptyMessage=0]="EmptyMessage",r[r.PlaintextOrEncryptedData=1]="PlaintextOrEncryptedData",r[r.EncryptedSessionKeys=2]="EncryptedSessionKeys",r[r.StandaloneAdditionalAllowedData=3]="StandaloneAdditionalAllowedData"})(Kt||(Kt={}));Sd=class{constructor(){this.state=Kt.EmptyMessage,this.leadingOnePassSignatureCounter=0}recordPacket(e,t){switch(this.state){case Kt.EmptyMessage:case Kt.StandaloneAdditionalAllowedData:switch(e){case m.packet.literalData:case m.packet.compressedData:case m.packet.aeadEncryptedData:case m.packet.symEncryptedIntegrityProtectedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(this.state===Kt.StandaloneAdditionalAllowedData&&--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");return;case m.packet.onePassSignature:if(this.state===Kt.StandaloneAdditionalAllowedData)throw new rs("OPS following StandaloneAdditionalAllowedData");this.leadingOnePassSignatureCounter++;return;case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.StandaloneAdditionalAllowedData;return}case Kt.PlaintextOrEncryptedData:switch(e){case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.PlaintextOrEncryptedData;return}case Kt.EncryptedSessionKeys:switch(e){case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;case m.packet.symEncryptedIntegrityProtectedData:case m.packet.aeadEncryptedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.EncryptedSessionKeys}}}recordEnd(){switch(this.state){case Kt.EmptyMessage:case Kt.PlaintextOrEncryptedData:case Kt.EncryptedSessionKeys:case Kt.StandaloneAdditionalAllowedData:if(this.leadingOnePassSignatureCounter>0)throw new rs("Missing trailing signature packets")}}},fX=F.constructAllowedPackets([Ea,an,Nr]),qc=class{static get tag(){return m.packet.compressedData}constructor(e=pe){this.packets=null,this.algorithm=e.preferredCompressionAlgorithm,this.compressed=null}async read(e,t=pe){await II(e,async i=>{this.algorithm=await i.readByte(),this.compressed=i.remainder(),await this.decompress(t)})}write(){return this.compressed===null&&this.compress(),F.concat([new Uint8Array([this.algorithm]),this.compressed])}async decompress(e=pe){let t=m.read(m.compression,this.algorithm),i=pX[t];if(!i)throw new Error(`${t} decompression not supported`);let n=await i(this.compressed);if(e.maxDecompressedMessageSize!==1/0){let s=0;n=sr(n,o=>{if(s+=o.length,s>e.maxDecompressedMessageSize)throw new Error("Maximum decompressed message size exceeded");return o})}(!or(this.compressed)||St(this.compressed))&&(n=await Xt(n)),this.packets=await Ct.fromBinary(n,fX,e,new Sd)}compress(){let e=m.read(m.compression,this.algorithm),t=gX[e];if(!t)throw new Error(`${e} compression not supported`);let i=this.packets.write(),n=t(i);(!or(i)||St(i))&&(n=Hc(()=>Xt(n))),this.compressed=n}};Zy=r=>({compressor:typeof CompressionStream<"u"&&(()=>new CompressionStream(r)),decompressor:typeof DecompressionStream<"u"&&(()=>new DecompressionStream(r))}),gX={zip:Xy(Zy("deflate-raw").compressor,Fy),zlib:Xy(Zy("deflate").compressor,oX)},pX={uncompressed:r=>r,zip:Xy(Zy("deflate-raw").decompressor,Py),zlib:Xy(Zy("deflate").decompressor,aX),bzip2:hX()},mX=F.constructAllowedPackets([Ea,qc,an,Nr]),Dd=class r{static get tag(){return m.packet.symEncryptedIntegrityProtectedData}static fromObject({version:e,aeadAlgorithm:t}){if(e!==1&&e!==2)throw new Error("Unsupported SEIPD version");let i=new r;return i.version=e,e===2&&(i.aeadAlgorithm=t),i}constructor(){this.version=null,this.cipherAlgorithm=null,this.aeadAlgorithm=null,this.chunkSizeByte=null,this.salt=null,this.encrypted=null,this.packets=null}async read(e){await II(e,async t=>{if(this.version=await t.readByte(),this.version!==1&&this.version!==2)throw new ft(`Version ${this.version} of the SEIP packet is unsupported.`);this.version===2&&(this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte(),this.salt=await t.readBytes(32)),this.encrypted=t.remainder()})}write(){return this.version===2?F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.salt,this.encrypted]):F.concat([new Uint8Array([this.version]),this.encrypted])}async encrypt(e,t,i=pe){let{blockSize:n,keySize:s}=It(e);if(t.length!==s)throw new Error("Unexpected session key size");let o=this.packets.write();if(St(o)&&(o=await Xt(o)),this.version===2)this.cipherAlgorithm=e,this.salt=Rr(32),this.chunkSizeByte=i.aeadChunkSizeByte,this.encrypted=await eI(this,"encrypt",t,o);else{let a=await yT(e),c=new Uint8Array([211,20]),l=F.concat([a,o,c]),d=await fs(m.hash.sha1,Mf(l)),u=F.concat([l,d]);this.encrypted=await jf(e,t,u,new Uint8Array(n))}return!0}async decrypt(e,t,i=pe){if(t.length!==It(e).keySize)throw new Error("Unexpected session key size");let n=Uc(this.encrypted);St(n)&&(n=await Xt(n));let s,o=!1;if(this.version===2){if(this.cipherAlgorithm!==e)throw new Error("Unexpected session key algorithm");s=await eI(this,"decrypt",t,n)}else{let{blockSize:a}=It(e),c=await _I(e,t,n,new Uint8Array(a)),l=Ur(Mf(c),-20),d=Ur(c,0,-20),u=Promise.all([Xt(await fs(m.hash.sha1,Mf(d))),Xt(l)]).then(([h,g])=>{if(!F.equalsUint8Array(h,g))throw new Error("Modification detected.");return new Uint8Array}),f=Ur(d,a+2);s=Ur(f,0,-2),s=di([s,Hc(()=>u)]),F.isStream(n)&&i.allowUnauthenticatedStream?o=!0:s=await Xt(s)}return this.packets=await Ct.fromBinary(s,mX,i,new Sd,o),!0}};yX=F.constructAllowedPackets([Ea,qc,an,Nr]),O5=1,PB=class{static get tag(){return m.packet.aeadEncryptedData}constructor(){this.version=O5,this.cipherAlgorithm=null,this.aeadAlgorithm=m.aead.eax,this.chunkSizeByte=null,this.iv=null,this.encrypted=null,this.packets=null}async read(e){await II(e,async t=>{let i=await t.readByte();if(i!==O5)throw new ft(`Version ${i} of the AEAD-encrypted data packet is not supported.`);this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte();let n=no(this.aeadAlgorithm,!0);this.iv=await t.readBytes(n.ivLength),this.encrypted=t.remainder()})}write(){return F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.iv,this.encrypted])}async decrypt(e,t,i=pe){this.packets=await Ct.fromBinary(await eI(this,"decrypt",t,Uc(this.encrypted)),yX,i,new Sd)}async encrypt(e,t,i=pe){this.cipherAlgorithm=e;let{ivLength:n}=no(this.aeadAlgorithm,!0);this.iv=Rr(n),this.chunkSizeByte=i.aeadChunkSizeByte;let s=this.packets.write();this.encrypted=await eI(this,"encrypt",t,s)}},Vf=class r{static get tag(){return m.packet.publicKeyEncryptedSessionKey}constructor(){this.version=null,this.publicKeyID=new so,this.publicKeyVersion=null,this.publicKeyFingerprint=null,this.publicKeyAlgorithm=null,this.sessionKey=null,this.sessionKeyAlgorithm=null,this.encrypted={}}static fromObject({version:e,encryptionKeyPacket:t,anonymousRecipient:i,sessionKey:n,sessionKeyAlgorithm:s}){let o=new r;if(e!==3&&e!==6)throw new Error("Unsupported PKESK version");return o.version=e,e===6&&(o.publicKeyVersion=i?null:t.version,o.publicKeyFingerprint=i?null:t.getFingerprintBytes()),o.publicKeyID=i?so.wildcard():t.getKeyID(),o.publicKeyAlgorithm=t.algorithm,o.sessionKey=n,o.sessionKeyAlgorithm=s,o}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the PKESK packet is unsupported.`);if(this.version===6){let i=e[t++];if(i){this.publicKeyVersion=e[t++];let n=i-1;this.publicKeyFingerprint=e.subarray(t,t+n),t+=n,this.publicKeyVersion>=5?this.publicKeyID.read(this.publicKeyFingerprint):this.publicKeyID.read(this.publicKeyFingerprint.subarray(-8))}else this.publicKeyID=so.wildcard()}else t+=this.publicKeyID.read(e.subarray(t,t+8));if(this.publicKeyAlgorithm=e[t++],this.encrypted=yW(this.publicKeyAlgorithm,e.subarray(t)),this.publicKeyAlgorithm===m.publicKey.x25519||this.publicKeyAlgorithm===m.publicKey.x448){if(this.version===3)this.sessionKeyAlgorithm=m.write(m.symmetric,this.encrypted.C.algorithm);else if(this.encrypted.C.algorithm!==null)throw new Error("Unexpected cleartext symmetric algorithm")}}write(){let e=[new Uint8Array([this.version])];return this.version===6?this.publicKeyFingerprint!==null?(e.push(new Uint8Array([this.publicKeyFingerprint.length+1,this.publicKeyVersion])),e.push(this.publicKeyFingerprint)):e.push(new Uint8Array([0])):e.push(this.publicKeyID.write()),e.push(new Uint8Array([this.publicKeyAlgorithm]),vd(this.publicKeyAlgorithm,this.encrypted)),F.concatUint8Array(e)}async encrypt(e){let t=m.write(m.publicKey,this.publicKeyAlgorithm),i=this.version===3?this.sessionKeyAlgorithm:null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=M5(this.version,t,i,this.sessionKey);this.encrypted=await gW(t,i,e.publicParams,s,n)}async decrypt(e,t){if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Decryption error");let i=t?M5(this.version,this.publicKeyAlgorithm,t.sessionKeyAlgorithm,t.sessionKey):null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=await pW(this.publicKeyAlgorithm,e.publicParams,e.privateParams,this.encrypted,n,i),{sessionKey:o,sessionKeyAlgorithm:a}=IX(this.version,this.publicKeyAlgorithm,s,t);if(this.version===3){let c=this.publicKeyAlgorithm!==m.publicKey.x25519&&this.publicKeyAlgorithm!==m.publicKey.x448;if(this.sessionKeyAlgorithm=c?a:this.sessionKeyAlgorithm,o.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}this.sessionKey=o}};Yf=class r{static get tag(){return m.packet.symEncryptedSessionKey}constructor(e=pe){this.version=e.aeadProtect?6:4,this.sessionKey=null,this.sessionKeyEncryptionAlgorithm=null,this.sessionKeyAlgorithm=null,this.aeadAlgorithm=m.write(m.aead,e.preferredAEADAlgorithm),this.encrypted=null,this.s2k=null,this.iv=null}read(e){let t=0;if(this.version=e[t++],this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the SKESK packet is unsupported.`);this.version===6&&t++;let i=e[t++];this.version>=5&&(this.aeadAlgorithm=e[t++],this.version===6&&t++);let n=e[t++];if(this.s2k=Yy(n),t+=this.s2k.read(e.subarray(t,e.length)),this.version>=5){let s=no(this.aeadAlgorithm,!0);this.iv=e.subarray(t,t+=s.ivLength)}this.version>=5||t<e.length?(this.encrypted=e.subarray(t,e.length),this.sessionKeyEncryptionAlgorithm=i):this.sessionKeyAlgorithm=i}write(){let e=this.encrypted===null?this.sessionKeyAlgorithm:this.sessionKeyEncryptionAlgorithm,t,i=this.s2k.write();if(this.version===6){let n=i.length,s=3+n+this.iv.length;t=F.concatUint8Array([new Uint8Array([this.version,s,e,this.aeadAlgorithm,n]),i,this.iv,this.encrypted])}else this.version===5?t=F.concatUint8Array([new Uint8Array([this.version,e,this.aeadAlgorithm]),i,this.iv,this.encrypted]):(t=F.concatUint8Array([new Uint8Array([this.version,e]),i]),this.encrypted!==null&&(t=F.concatUint8Array([t,this.encrypted])));return t}async decrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm,{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.version>=5){let a=no(this.aeadAlgorithm,!0),c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await xa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.sessionKey=await d.decrypt(this.encrypted,this.iv,c)}else if(this.encrypted!==null){let a=await _I(i,o,this.encrypted,new Uint8Array(n));if(this.sessionKeyAlgorithm=m.write(m.symmetric,a[0]),this.sessionKey=a.subarray(1,a.length),this.sessionKey.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}else this.sessionKey=o}async encrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm;this.sessionKeyEncryptionAlgorithm=i,this.s2k=wT(t),this.s2k.generateSalt();let{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.sessionKey===null&&(this.sessionKey=BB(this.sessionKeyAlgorithm)),this.version>=5){let a=no(this.aeadAlgorithm);this.iv=Rr(a.ivLength);let c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await xa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.encrypted=await d.encrypt(this.sessionKey,this.iv,c)}else{let a=F.concatUint8Array([new Uint8Array([this.sessionKeyAlgorithm]),this.sessionKey]);this.encrypted=await jf(i,o,a,new Uint8Array(n))}}},As=class r{static get tag(){return m.packet.publicKey}constructor(e=new Date,t=pe){this.version=t.v6Keys?6:4,this.created=F.normalizeDate(e),this.algorithm=null,this.publicParams=null,this.expirationTimeV3=0,this.fingerprint=null,this.keyID=null}static fromSecretKeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}async read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for parsing v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version===4||this.version===5||this.version===6){this.created=F.readDate(e.subarray(i,i+4)),i+=4,this.algorithm=e[i++],this.version>=5&&(i+=4);let{read:n,publicParams:s}=mW(this.algorithm,e.subarray(i));if(this.version===6&&s.oid&&(s.oid.getName()===m.curve.curve25519Legacy||s.oid.getName()===m.curve.ed25519Legacy))throw new Error("Legacy curve25519 cannot be used with v6 keys");return this.publicParams=s,i+=n,await this.computeFingerprintAndKeyID(),i}throw new ft(`Version ${this.version} of the key packet is unsupported.`)}write(){let e=[];e.push(new Uint8Array([this.version])),e.push(F.writeDate(this.created)),e.push(new Uint8Array([this.algorithm]));let t=vd(this.algorithm,this.publicParams);return this.version>=5&&e.push(F.writeNumber(t.length,4)),e.push(t),F.concatUint8Array(e)}writeForHash(e){let t=this.writePublicKey(),i=149+e,n=e>=5?4:2;return F.concatUint8Array([new Uint8Array([i]),F.writeNumber(t.length,n),t])}isDecrypted(){return null}getCreationTime(){return this.created}getKeyID(){return this.keyID}async computeFingerprintAndKeyID(){if(await this.computeFingerprint(),this.keyID=new so,this.version>=5)this.keyID.read(this.fingerprint.subarray(0,8));else if(this.version===4)this.keyID.read(this.fingerprint.subarray(12,20));else throw new Error("Unsupported key version")}async computeFingerprint(){let e=this.writeForHash(this.version);if(this.version>=5)this.fingerprint=await fs(m.hash.sha256,e);else if(this.version===4)this.fingerprint=await fs(m.hash.sha1,e);else throw new Error("Unsupported key version")}getFingerprintBytes(){return this.fingerprint}getFingerprint(){return F.uint8ArrayToHex(this.getFingerprintBytes())}hasSameFingerprintAs(e){return this.version===e.version&&F.equalsUint8Array(this.writePublicKey(),e.writePublicKey())}getAlgorithmInfo(){let e={};e.algorithm=m.read(m.publicKey,this.algorithm);let t=this.publicParams.n||this.publicParams.p;return t?e.bits=F.uint8ArrayBitLength(t):this.publicParams.oid&&(e.curve=this.publicParams.oid.getName()),e}};As.prototype.readPublicKey=As.prototype.read;As.prototype.writePublicKey=As.prototype.write;wX=F.constructAllowedPackets([Ea,qc,an,Nr]),TB=class{static get tag(){return m.packet.symmetricallyEncryptedData}constructor(){this.encrypted=null,this.packets=null}read(e){this.encrypted=e}write(){return this.encrypted}async decrypt(e,t,i=pe){if(!i.allowUnauthenticatedMessages)throw new Error("Message is not authenticated.");let{blockSize:n}=It(e),s=await Xt(Uc(this.encrypted)),o=await _I(e,t,s.subarray(n+2),s.subarray(2,n+2));this.packets=await Ct.fromBinary(o,wX,i)}async encrypt(e,t,i=pe){let n=this.packets.write(),{blockSize:s}=It(e),o=await yT(e),a=await jf(e,t,o,new Uint8Array(s)),c=await jf(e,t,n,a.subarray(2));this.encrypted=F.concat([a,c])}},tI=class r extends As{static get tag(){return m.packet.publicSubkey}constructor(e,t){super(e,t)}static fromSecretSubkeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}},UB=class r{static get tag(){return m.packet.userAttribute}constructor(){this.attributes=[]}read(e){let t=0;for(;t<e.length;){let i=L6(e.subarray(t,e.length));t+=i.offset,this.attributes.push(F.uint8ArrayToString(e.subarray(t,t+i.len))),t+=i.len}}write(){let e=[];for(let t=0;t<this.attributes.length;t++)e.push(xI(this.attributes[t].length)),e.push(F.stringToUint8Array(this.attributes[t]));return F.concatUint8Array(e)}equals(e){return!e||!(e instanceof r)?!1:this.attributes.every(function(t,i){return t===e.attributes[i]})}},Wf=class extends As{static get tag(){return m.packet.secretKey}constructor(e=new Date,t=pe){super(e,t),this.keyMaterial=null,this.isEncrypted=null,this.s2kUsage=0,this.s2k=null,this.symmetric=null,this.aead=null,this.isLegacyAEAD=null,this.privateParams=null,this.usedModernAEAD=null}async read(e,t=pe){let i=await this.readPublicKey(e,t),n=i;this.s2kUsage=e[i++],this.version===5&&i++,this.version===6&&this.s2kUsage&&i++;try{if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){this.symmetric=e[i++],this.s2kUsage===253&&(this.aead=e[i++]),this.version===6&&i++;let s=e[i++];if(this.s2k=Yy(s),i+=this.s2k.read(e.subarray(i,e.length)),this.s2k.type==="gnu-dummy")return}else this.s2kUsage&&(this.symmetric=this.s2kUsage);this.s2kUsage&&(this.isLegacyAEAD=this.s2kUsage===253&&(this.version===5||this.version===4&&t.parseAEADEncryptedV4KeysAsLegacy),this.s2kUsage!==253||this.isLegacyAEAD?(this.iv=e.subarray(i,i+It(this.symmetric).blockSize),this.usedModernAEAD=!1):(this.iv=e.subarray(i,i+no(this.aead).ivLength),this.usedModernAEAD=!0),i+=this.iv.length)}catch(s){if(!this.s2kUsage)throw s;this.unparseableKeyMaterial=e.subarray(n),this.isEncrypted=!0}if(this.version===5&&(i+=4),this.keyMaterial=e.subarray(i),this.isEncrypted=!!this.s2kUsage,!this.isEncrypted){let s;if(this.version===6)s=this.keyMaterial;else if(s=this.keyMaterial.subarray(0,-2),!F.equalsUint8Array(F.writeChecksum(s),this.keyMaterial.subarray(-2)))throw new Error("Key checksum mismatch");try{let{read:o,privateParams:a}=v5(this.algorithm,s,this.publicParams);if(o<s.length)throw new Error("Error reading MPIs");this.privateParams=a}catch(o){throw o instanceof ft?o:new Error("Error reading MPIs")}}}write(){let e=this.writePublicKey();if(this.unparseableKeyMaterial)return F.concatUint8Array([e,this.unparseableKeyMaterial]);let t=[e];t.push(new Uint8Array([this.s2kUsage]));let i=[];if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){i.push(this.symmetric),this.s2kUsage===253&&i.push(this.aead);let n=this.s2k.write();this.version===6&&i.push(n.length),i.push(...n)}return this.s2kUsage&&this.s2k.type!=="gnu-dummy"&&i.push(...this.iv),(this.version===5||this.version===6&&this.s2kUsage)&&t.push(new Uint8Array([i.length])),t.push(new Uint8Array(i)),this.isDummy()||(this.s2kUsage||(this.keyMaterial=vd(this.algorithm,this.privateParams)),this.version===5&&t.push(F.writeNumber(this.keyMaterial.length,4)),t.push(this.keyMaterial),!this.s2kUsage&&this.version!==6&&t.push(F.writeChecksum(this.keyMaterial))),F.concatUint8Array(t)}isDecrypted(){return this.isEncrypted===!1}isMissingSecretKeyMaterial(){return this.unparseableKeyMaterial!==void 0||this.isDummy()}isDummy(){return!!(this.s2k&&this.s2k.type==="gnu-dummy")}makeDummy(e=pe){this.isDummy()||(this.isDecrypted()&&this.clearPrivateParams(),delete this.unparseableKeyMaterial,this.isEncrypted=null,this.keyMaterial=null,this.s2k=Yy(m.s2k.gnu,e),this.s2k.algorithm=0,this.s2k.c=0,this.s2k.type="gnu-dummy",this.s2kUsage=254,this.symmetric=m.symmetric.aes256,this.isLegacyAEAD=null,this.usedModernAEAD=null)}async encrypt(e,t=pe){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key packet is already encrypted");if(!e)throw new Error("A non-empty passphrase is required for key encryption.");this.s2k=wT(t),this.s2k.generateSalt();let i=vd(this.algorithm,this.privateParams);this.symmetric=m.symmetric.aes256;let{blockSize:n}=It(this.symmetric);if(t.aeadProtect){this.s2kUsage=253,this.aead=t.preferredAEADAlgorithm;let s=no(this.aead);this.isLegacyAEAD=this.version===5,this.usedModernAEAD=!this.isLegacyAEAD;let o=qy(this.constructor.tag),a=await YE(this.version,this.s2k,e,this.symmetric,this.aead,o,this.isLegacyAEAD,t),c=await s(this.symmetric,a);this.iv=this.isLegacyAEAD?Rr(n):Rr(s.ivLength);let l=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([o,this.writePublicKey()]);this.keyMaterial=await c.encrypt(i,this.iv.subarray(0,s.ivLength),l)}else{this.s2kUsage=254,this.usedModernAEAD=!1;let s=await YE(this.version,this.s2k,e,this.symmetric,void 0,void 0,void 0,t);this.iv=Rr(n),this.keyMaterial=await jf(this.symmetric,s,F.concatUint8Array([i,await fs(m.hash.sha1,i)]),this.iv)}}async decrypt(e,t=pe){if(this.isDummy())return!1;if(this.unparseableKeyMaterial)throw new Error("Key packet cannot be decrypted: unsupported S2K or cipher algo");if(this.isDecrypted())throw new Error("Key packet is already decrypted.");let i,n=qy(this.constructor.tag);if(this.s2kUsage===254||this.s2kUsage===253)i=await YE(this.version,this.s2k,e,this.symmetric,this.aead,n,this.isLegacyAEAD,t);else throw this.s2kUsage===255?new Error("Encrypted private key is authenticated using an insecure two-byte hash"):new Error("Private key is encrypted using an insecure S2K function: unsalted MD5");let s;if(this.s2kUsage===253){let o=no(this.aead,!0),a=await o(this.symmetric,i);try{let c=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([n,this.writePublicKey()]);s=await a.decrypt(this.keyMaterial,this.iv.subarray(0,o.ivLength),c)}catch(c){throw c.message==="Authentication tag mismatch"?new Error("Incorrect key passphrase: "+c.message):c}}else{let o=await _I(this.symmetric,i,this.keyMaterial,this.iv);s=o.subarray(0,-20);let a=await fs(m.hash.sha1,s);if(!F.equalsUint8Array(a,o.subarray(-20)))throw new Error("Incorrect key passphrase")}try{let{privateParams:o}=v5(this.algorithm,s,this.publicParams);this.privateParams=o}catch{throw new Error("Error reading MPIs")}this.isEncrypted=!1,this.keyMaterial=null,this.s2kUsage=0,this.aead=null,this.symmetric=null,this.isLegacyAEAD=null}async validate(){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key is not decrypted");if(this.usedModernAEAD)return;let e;try{e=await wW(this.algorithm,this.publicParams,this.privateParams)}catch{e=!1}if(!e)throw new Error("Key is invalid")}async generate(e,t){if(this.version===6&&(this.algorithm===m.publicKey.ecdh&&t===m.curve.curve25519Legacy||this.algorithm===m.publicKey.eddsaLegacy))throw new Error(`Cannot generate v6 keys of type 'ecc' with curve ${t}. Generate a key of type 'curve25519' instead`);let{privateParams:i,publicParams:n}=await IW(this.algorithm,e,t);this.privateParams=i,this.publicParams=n,this.isEncrypted=!1}clearPrivateParams(){this.isMissingSecretKeyMaterial()||(Object.keys(this.privateParams).forEach(e=>{this.privateParams[e].fill(0),delete this.privateParams[e]}),this.privateParams=null,this.isEncrypted=!0)}};rI=class r{static get tag(){return m.packet.userID}constructor(){this.userID="",this.name="",this.email="",this.comment=""}static fromObject(e){if(F.isString(e)||e.name&&!F.isString(e.name)||e.email&&!F.isEmailAddress(e.email)||e.comment&&!F.isString(e.comment))throw new Error("Invalid user ID format");let t=new r;Object.assign(t,e);let i=[];return t.name&&i.push(t.name),t.comment&&i.push(`(${t.comment})`),t.email&&i.push(`<${t.email}>`),t.userID=i.join(" "),t}read(e,t=pe){let i=F.decodeUTF8(e);if(i.length>t.maxUserIDLength)throw new Error("User ID string is too long");let n=a=>/^[^\s@]+@[^\s@]+$/.test(a),s=i.indexOf("<"),o=i.lastIndexOf(">");if(s!==-1&&o!==-1&&o>s){let a=i.substring(s+1,o);if(n(a)){this.email=a;let c=i.substring(0,s).trim(),l=c.indexOf("("),d=c.lastIndexOf(")");l!==-1&&d!==-1&&d>l?(this.comment=c.substring(l+1,d).trim(),this.name=c.substring(0,l).trim()):(this.name=c,this.comment="")}}else n(i.trim())&&(this.email=i.trim(),this.name="",this.comment="");this.userID=i}write(){return F.encodeUTF8(this.userID)}equals(e){return e&&e.userID===this.userID}},iI=class extends Wf{static get tag(){return m.packet.secretSubkey}constructor(e=new Date,t=pe){super(e,t)}},nI=class{constructor(e){this.packets=e||new Ct}write(){return this.packets.write()}armor(e=pe){let t=this.packets.some(i=>i.constructor.tag===Nr.tag&&i.version!==6);return dA(m.armor.signature,this.write(),void 0,void 0,void 0,t,e)}getSigningKeyIDs(){return this.packets.map(e=>e.issuerKeyID)}};qB=class r{constructor(e,t){this.userID=e.constructor.tag===m.packet.userID?e:null,this.userAttribute=e.constructor.tag===m.packet.userAttribute?e:null,this.selfCertifications=[],this.otherCertifications=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.userID||this.userAttribute),e.push(...this.revocationSignatures),e.push(...this.selfCertifications),e.push(...this.otherCertifications),e}clone(){let e=new r(this.userID||this.userAttribute,this.mainKey);return e.selfCertifications=[...this.selfCertifications],e.otherCertifications=[...this.otherCertifications],e.revocationSignatures=[...this.revocationSignatures],e}async certify(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o=new r(s.userID||s.userAttribute,this.mainKey);return o.otherCertifications=await Promise.all(e.map(async function(a){if(!a.isPrivate())throw new Error("Need private key for signing");if(a.hasSameFingerprintAs(n))throw new Error("The user's own key can only be used for self-certifications");let c=await a.getSigningKey(void 0,t,void 0,i);return us(s,[a],c.keyPacket,{signatureType:m.signature.certGeneric,keyFlags:[m.keyFlags.certifyKeys|m.keyFlags.signData]},t,void 0,void 0,void 0,i)})),await o.update(this,t,i),o}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return Qd(s,m.signature.certRevocation,{key:s,userID:this.userID,userAttribute:this.userAttribute},this.revocationSignatures,e,t,i,n)}async verifyCertificate(e,t,i=new Date,n){let s=this,o=this.mainKey.keyPacket,a={userID:this.userID,userAttribute:this.userAttribute,key:o},{issuerKeyID:c}=e,l=t.filter(d=>d.getKeys(c).length>0);return l.length===0?null:(await Promise.all(l.map(async d=>{let u=await d.getSigningKey(c,e.created,void 0,n);if(e.revoked||await s.isRevoked(e,u.keyPacket,i,n))throw new Error("User certificate is revoked");try{await e.verify(u.keyPacket,m.signature.certGeneric,a,i,void 0,n)}catch(f){throw F.wrapError("User certificate is invalid",f)}})),!0)}async verifyAllCertifications(e,t=new Date,i){let n=this,s=this.selfCertifications.concat(this.otherCertifications);return Promise.all(s.map(async o=>({keyID:o.issuerKeyID,valid:await n.verifyCertificate(o,e,t,i).catch(()=>!1)})))}async verify(e=new Date,t){if(!this.selfCertifications.length)throw new Error("No self-certifications found");let i=this,n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o;for(let a=this.selfCertifications.length-1;a>=0;a--)try{let c=this.selfCertifications[a];if(c.revoked||await i.isRevoked(c,void 0,e,t))throw new Error("Self-certification is revoked");try{await c.verify(n,m.signature.certGeneric,s,e,void 0,t)}catch(l){throw F.wrapError("Self-certification is invalid",l)}return!0}catch(c){o=c}throw o}async update(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n};await Pc(e,this,"selfCertifications",t,async function(o){try{return await o.verify(n,m.signature.certGeneric,s,t,!1,i),!0}catch{return!1}}),await Pc(e,this,"otherCertifications",t),await Pc(e,this,"revocationSignatures",t,function(o){return Qd(n,m.signature.certRevocation,s,[o],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={userID:this.userID,userAttribute:this.userAttribute,key:e},a=new r(o.userID||o.userAttribute,this.mainKey);return a.revocationSignatures.push(await us(o,[],e,{signatureType:m.signature.certRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}},Xf=class r{constructor(e,t){this.keyPacket=e,this.bindingSignatures=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.bindingSignatures),e}clone(){let e=new r(this.keyPacket,this.mainKey);return e.bindingSignatures=[...this.bindingSignatures],e.revocationSignatures=[...this.revocationSignatures],e}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return Qd(s,m.signature.subkeyRevocation,{key:s,bind:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verify(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s=await kn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t);if(s.revoked||await this.isRevoked(s,null,e,t))throw new Error("Subkey is revoked");if(RB(this.keyPacket,s,e))throw new Error("Subkey is expired");return s}async getExpirationTime(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s;try{s=await kn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t)}catch{return null}let o=sI(this.keyPacket,s),a=s.getExpirationTime();return o<a?o:a}async update(e,t=new Date,i=pe){let n=this.mainKey.keyPacket;if(!this.hasSameFingerprintAs(e))throw new Error("Subkey update method: fingerprints of subkeys not equal");this.keyPacket.constructor.tag===m.packet.publicSubkey&&e.keyPacket.constructor.tag===m.packet.secretSubkey&&(this.keyPacket=e.keyPacket);let s=this,o={key:n,bind:s.keyPacket};await Pc(e,this,"bindingSignatures",t,async function(a){for(let c=0;c<s.bindingSignatures.length;c++)if(s.bindingSignatures[c].issuerKeyID.equals(a.issuerKeyID))return a.created>s.bindingSignatures[c].created&&(s.bindingSignatures[c]=a),!1;try{return await a.verify(n,m.signature.subkeyBinding,o,t,void 0,i),!0}catch{return!1}}),await Pc(e,this,"revocationSignatures",t,function(a){return Qd(n,m.signature.subkeyRevocation,o,[a],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={key:e,bind:this.keyPacket},a=new r(this.keyPacket,this.mainKey);return a.revocationSignatures.push(await us(o,[],e,{signatureType:m.signature.subkeyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}hasSameFingerprintAs(e){return this.keyPacket.hasSameFingerprintAs(e.keyPacket||e)}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","isDecrypted"].forEach(r=>{Xf.prototype[r]=function(){return this.keyPacket[r]()}});bX=F.constructAllowedPackets([Nr]),G5=new Set([m.packet.publicKey,m.packet.privateKey]),z5=new Set([m.packet.publicKey,m.packet.privateKey,m.packet.publicSubkey,m.packet.privateSubkey]),oI=class{packetListToStructure(e,t=new Set){let i,n,s,o;for(let a of e){if(a instanceof Gf){z5.has(a.tag)&&!o&&(G5.has(a.tag)?o=G5:o=z5);continue}let c=a.constructor.tag;if(o){if(!o.has(c))continue;o=null}if(t.has(c))throw new Error(`Unexpected packet type: ${c}`);switch(c){case m.packet.publicKey:case m.packet.secretKey:if(this.keyPacket)throw new Error("Key block contains multiple keys");if(this.keyPacket=a,n=this.getKeyID(),!n)throw new Error("Missing Key ID");break;case m.packet.userID:case m.packet.userAttribute:i=new qB(a,this),this.users.push(i);break;case m.packet.publicSubkey:case m.packet.secretSubkey:i=null,s=new Xf(a,this),this.subkeys.push(s);break;case m.packet.signature:switch(a.signatureType){case m.signature.certGeneric:case m.signature.certPersona:case m.signature.certCasual:case m.signature.certPositive:if(!i){F.printDebug("Dropping certification signatures without preceding user packet");continue}a.issuerKeyID.equals(n)?i.selfCertifications.push(a):i.otherCertifications.push(a);break;case m.signature.certRevocation:i?i.revocationSignatures.push(a):this.directSignatures.push(a);break;case m.signature.key:this.directSignatures.push(a);break;case m.signature.subkeyBinding:if(!s){F.printDebug("Dropping subkey binding signature without preceding subkey packet");continue}s.bindingSignatures.push(a);break;case m.signature.keyRevocation:this.revocationSignatures.push(a);break;case m.signature.subkeyRevocation:if(!s){F.printDebug("Dropping subkey revocation signature without preceding subkey packet");continue}s.revocationSignatures.push(a);break}break}}}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.directSignatures),this.users.map(t=>e.push(...t.toPacketList())),this.subkeys.map(t=>e.push(...t.toPacketList())),e}clone(e=!1){let t=new this.constructor(this.toPacketList());return e&&t.getKeys().forEach(i=>{if(i.keyPacket=Object.create(Object.getPrototypeOf(i.keyPacket),Object.getOwnPropertyDescriptors(i.keyPacket)),!i.keyPacket.isDecrypted())return;let n={};Object.keys(i.keyPacket.privateParams).forEach(s=>{n[s]=new Uint8Array(i.keyPacket.privateParams[s])}),i.keyPacket.privateParams=n}),t}getSubkeys(e=null){return this.subkeys.filter(i=>!e||i.getKeyID().equals(e,!0))}getKeys(e=null){let t=[];return(!e||this.getKeyID().equals(e,!0))&&t.push(this),t.concat(this.getSubkeys(e))}getKeyIDs(){return this.getKeys().map(e=>e.getKeyID())}getUserIDs(){return this.users.map(e=>e.userID?e.userID.userID:null).filter(e=>e!==null)}write(){return this.toPacketList().write()}async getSigningKey(e=null,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{pa(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await kn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(!L5(c.keyPacket,d,n))continue;if(!d.embeddedSignature)throw new Error("Missing embedded signature");return await kn([d.embeddedSignature],c.keyPacket,m.signature.keyBinding,l,t,n),pa(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&L5(s,c,n))return pa(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid signing key packet in key "+this.getKeyID().toHex(),a)}async getEncryptionKey(e,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{pa(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await kn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(H5(c.keyPacket,d,n))return pa(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&H5(s,c,n))return pa(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid encryption key packet in key "+this.getKeyID().toHex(),a)}async isRevoked(e,t,i=new Date,n=pe){return Qd(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verifyPrimaryKey(e=new Date,t={},i=pe){let n=this.keyPacket;if(await this.isRevoked(null,null,e,i))throw new Error("Primary key is revoked");let s=await this.getPrimarySelfSignature(e,t,i);if(RB(n,s,e))throw new Error("Primary key is expired");if(n.version!==6){let o=await kn(this.directSignatures,n,m.signature.key,{key:n},e,i).catch(()=>{});if(o&&RB(n,o,e))throw new Error("Primary key is expired")}}async getExpirationTime(e,t=pe){let i;try{let n=await this.getPrimarySelfSignature(null,e,t),s=sI(this.keyPacket,n),o=n.getExpirationTime(),a=this.keyPacket.version!==6&&await kn(this.directSignatures,this.keyPacket,m.signature.key,{key:this.keyPacket},null,t).catch(()=>{});if(a){let c=sI(this.keyPacket,a);i=Math.min(s,o,c)}else i=s<o?s:o}catch{i=null}return F.normalizeDate(i)}async getPrimarySelfSignature(e=new Date,t={},i=pe){let n=this.keyPacket;if(n.version===6)return kn(this.directSignatures,n,m.signature.key,{key:n},e,i);let{selfCertification:s}=await this.getPrimaryUser(e,t,i);return s}async getPrimaryUser(e=new Date,t={},i=pe){let n=this.keyPacket,s=[],o;for(let d=0;d<this.users.length;d++)try{let u=this.users[d];if(!u.userID)continue;if(t.name!==void 0&&u.userID.name!==t.name||t.email!==void 0&&u.userID.email!==t.email||t.comment!==void 0&&u.userID.comment!==t.comment)throw new Error("Could not find user that matches that user ID");let f={userID:u.userID,key:n},h=await kn(u.selfCertifications,n,m.signature.certGeneric,f,e,i);s.push({index:d,user:u,selfCertification:h})}catch(u){o=u}if(!s.length)throw o||new Error("Could not find primary user");await Promise.all(s.map(async d=>{d.selfCertification.revoked||await d.user.isRevoked(d.selfCertification,null,e,i)}));let a=s.sort(function(d,u){let f=d.selfCertification,h=u.selfCertification;return h.revoked-f.revoked||f.isPrimaryUserID-h.isPrimaryUserID||f.created-h.created}).pop(),{user:c,selfCertification:l}=a;if(l.revoked||await c.isRevoked(l,null,e,i))throw new Error("Primary user is revoked");return a}async update(e,t=new Date,i=pe){if(!this.hasSameFingerprintAs(e))throw new Error("Primary key fingerprints must be equal to update the key");if(!this.isPrivate()&&e.isPrivate()){if(!(this.subkeys.length===e.subkeys.length&&this.subkeys.every(o=>e.subkeys.some(a=>o.hasSameFingerprintAs(a)))))throw new Error("Cannot update public key with private key if subkeys mismatch");return e.update(this,i)}let n=this.clone();return await Pc(e,n,"revocationSignatures",t,s=>Qd(n.keyPacket,m.signature.keyRevocation,n,[s],null,e.keyPacket,t,i)),await Pc(e,n,"directSignatures",t),await Promise.all(e.users.map(async s=>{let o=n.users.filter(a=>s.userID&&s.userID.equals(a.userID)||s.userAttribute&&s.userAttribute.equals(a.userAttribute));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.users.push(a)}})),await Promise.all(e.subkeys.map(async s=>{let o=n.subkeys.filter(a=>a.hasSameFingerprintAs(s));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.subkeys.push(a)}})),n}async getRevocationCertificate(e=new Date,t=pe){let i={key:this.keyPacket},n=await kn(this.revocationSignatures,this.keyPacket,m.signature.keyRevocation,i,e,t),s=new Ct;s.push(n);let o=this.keyPacket.version!==6;return dA(m.armor.publicKey,s.write(),null,null,"This is a revocation certificate",o,t)}async applyRevocationCertificate(e,t=new Date,i=pe){let n=await wI(e),o=(await Ct.fromBinary(n.data,bX,i)).findPacket(m.packet.signature);if(!o||o.signatureType!==m.signature.keyRevocation)throw new Error("Could not find revocation signature packet");if(!o.issuerKeyID.equals(this.getKeyID()))throw new Error("Revocation signature does not match key");try{await o.verify(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},t,void 0,i)}catch(c){throw F.wrapError("Could not verify revocation signature",c)}let a=this.clone();return a.revocationSignatures.push(o),a}async signPrimaryUser(e,t,i,n=pe){let{index:s,user:o}=await this.getPrimaryUser(t,i,n),a=await o.certify(e,t,n),c=this.clone();return c.users[s]=a,c}async signAllUsers(e,t=new Date,i=pe){let n=this.clone();return n.users=await Promise.all(this.users.map(function(s){return s.certify(e,t,i)})),n}async verifyPrimaryUser(e,t=new Date,i,n=pe){let s=this.keyPacket,{user:o}=await this.getPrimaryUser(t,i,n);return e?await o.verifyAllCertifications(e,t,n):[{keyID:s.getKeyID(),valid:await o.verify(t,n).catch(()=>!1)}]}async verifyAllUsers(e,t=new Date,i=pe){let n=this.keyPacket,s=[];return await Promise.all(this.users.map(async o=>{let a=e?await o.verifyAllCertifications(e,t,i):[{keyID:n.getKeyID(),valid:await o.verify(t,i).catch(()=>!1)}];s.push(...a.map(c=>({userID:o.userID?o.userID.userID:null,userAttribute:o.userAttribute,keyID:c.keyID,valid:c.valid})))})),s}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","hasSameFingerprintAs"].forEach(r=>{oI.prototype[r]=Xf.prototype[r]});aI=class extends oI{constructor(e){if(super(),this.keyPacket=null,this.revocationSignatures=[],this.directSignatures=[],this.users=[],this.subkeys=[],e&&(this.packetListToStructure(e,new Set([m.packet.secretKey,m.packet.secretSubkey])),!this.keyPacket))throw new Error("Invalid key: missing public-key packet")}isPrivate(){return!1}toPublic(){return this}armor(e=pe){let t=this.keyPacket.version!==6;return dA(m.armor.publicKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}},cI=class r extends aI{constructor(e){if(super(),this.packetListToStructure(e,new Set([m.packet.publicKey,m.packet.publicSubkey])),!this.keyPacket)throw new Error("Invalid key: missing private-key packet")}isPrivate(){return!0}toPublic(){let e=new Ct,t=this.toPacketList();for(let i of t)switch(i.constructor.tag){case m.packet.secretKey:{let n=As.fromSecretKeyPacket(i);e.push(n);break}case m.packet.secretSubkey:{let n=tI.fromSecretSubkeyPacket(i);e.push(n);break}default:e.push(i)}return new aI(e)}armor(e=pe){let t=this.keyPacket.version!==6;return dA(m.armor.privateKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}async getDecryptionKeys(e,t=new Date,i={},n=pe){let s=this.keyPacket,o=[],a=null;for(let l=0;l<this.subkeys.length;l++)if(!e||this.subkeys[l].getKeyID().equals(e,!0)){if(this.subkeys[l].keyPacket.isDummy()){a=a||new Error("Gnu-dummy key packets cannot be used for decryption");continue}try{let d={key:s,bind:this.subkeys[l].keyPacket},u=await kn(this.subkeys[l].bindingSignatures,s,m.signature.subkeyBinding,d,t,n);K5(this.subkeys[l].keyPacket,u,n)&&o.push(this.subkeys[l])}catch(d){a=d}}let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e,!0))&&K5(s,c,n)&&(s.isDummy()?a=a||new Error("Gnu-dummy key packets cannot be used for decryption"):o.push(this)),o.length===0)throw a||new Error("No decryption key packets found");return o}isDecrypted(){return this.getKeys().some(({keyPacket:e})=>e.isDecrypted())}async validate(e=pe){if(!this.isPrivate())throw new Error("Cannot validate a public key");let t;if(!this.keyPacket.isDummy())t=this.keyPacket;else{let i=await this.getSigningKey(null,null,void 0,{...e,rejectPublicKeyAlgorithms:new Set,minRSABits:0});i&&!i.keyPacket.isDummy()&&(t=i.keyPacket)}if(t)return t.validate();{let i=this.getKeys();if(i.map(s=>s.keyPacket.isDummy()).every(Boolean))throw new Error("Cannot validate an all-gnu-dummy key");return Promise.all(i.map(s=>s.keyPacket.validate()))}}clearPrivateParams(){this.getKeys().forEach(({keyPacket:e})=>{e.isDecrypted()&&e.clearPrivateParams()})}async revoke({flag:e=m.reasonForRevocation.noReason,string:t=""}={},i=new Date,n=pe){if(!this.isPrivate())throw new Error("Need private key for revoking");let s={key:this.keyPacket},o=this.clone();return o.revocationSignatures.push(await us(s,[],this.keyPacket,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,e),reasonForRevocationString:t},i,void 0,void 0,void 0,n)),o}async addSubkey(e={}){let t={...pe,...e.config};if(e.passphrase)throw new Error("Subkey could not be encrypted here, please encrypt whole key");if(e.rsaBits<t.minRSABits)throw new Error(`rsaBits should be at least ${t.minRSABits}, got: ${e.rsaBits}`);let i=this.keyPacket;if(i.isDummy())throw new Error("Cannot add subkey to gnu-dummy primary key");if(!i.isDecrypted())throw new Error("Key is not decrypted");let n=i.getAlgorithmInfo();n.type=vX(n.algorithm),n.rsaBits=n.bits||4096,n.curve=n.curve||"curve25519Legacy",e=NB(e,n);let s=await kT(e,{...t,v6Keys:this.keyPacket.version===6});pa(s,t);let o=await ST(s,i,e,t),a=this.toPacketList();return a.push(s,o),new r(a)}};kX=F.constructAllowedPackets([As,tI,Wf,iI,rI,UB,Nr]);QX=F.constructAllowedPackets([Ea,qc,PB,Dd,TB,Vf,Yf,an,Nr]),_X=F.constructAllowedPackets([Yf]),FX=F.constructAllowedPackets([Nr]),Zf=class r{constructor(e){this.packets=e||new Ct}getEncryptionKeyIDs(){let e=[];return this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey).forEach(function(i){e.push(i.publicKeyID)}),e}getSigningKeyIDs(){let e=this.unwrapCompressed(),t=e.packets.filterByTag(m.packet.onePassSignature);return t.length>0?t.map(n=>n.issuerKeyID):e.packets.filterByTag(m.packet.signature).map(n=>n.issuerKeyID)}async decrypt(e,t,i,n=new Date,s=pe){let o=this.packets.filterByTag(m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData);if(o.length===0)throw new Error("No encrypted data found");let a=o[0],c=a.cipherAlgorithm,l=i||await this.decryptSessionKeys(e,t,c,n,s),d=null,u=Promise.all(l.map(async({algorithm:h,data:g})=>{if(!F.isUint8Array(g)||!a.cipherAlgorithm&&!F.isString(h))throw new Error("Invalid session key for decryption.");try{let p=a.cipherAlgorithm||m.write(m.symmetric,h);await a.decrypt(p,g,s)}catch(p){F.printDebugError(p),d=p}}));if(pB(a.encrypted),a.encrypted=null,await u,!a.packets||!a.packets.length)throw d||new Error("Decryption failed.");let f=new r(a.packets);return a.packets=new Ct,f}async decryptSessionKeys(e,t,i,n=new Date,s=pe){let o=[],a;if(t){let c=this.packets.filterByTag(m.packet.symEncryptedSessionKey);if(c.length===0)throw new Error("No symmetrically encrypted session key packet found.");await Promise.all(t.map(async function(l,d){let u;d?u=await Ct.fromBinary(c.write(),_X,s):u=c,await Promise.all(u.map(async function(f){try{await f.decrypt(l,s),o.push(f)}catch(h){F.printDebugError(h),h instanceof wd&&(a=h)}}))}))}else if(e){let c=this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey);if(c.length===0)throw new Error("No public key encrypted session key packet found.");await Promise.all(c.map(async function(l){await Promise.all(e.map(async function(d){let u;try{u=(await d.getDecryptionKeys(l.publicKeyID,null,void 0,s)).map(h=>h.keyPacket)}catch(h){a=h;return}let f=[m.symmetric.aes256,m.symmetric.aes128,m.symmetric.tripledes,m.symmetric.cast5];try{let h=await d.getPrimarySelfSignature(n,void 0,s);h.preferredSymmetricAlgorithms&&(f=f.concat(h.preferredSymmetricAlgorithms))}catch{}await Promise.all(u.map(async function(h){if(!h.isDecrypted())throw new Error("Decryption key is not decrypted.");if(s.constantTimePKCS1Decryption&&(l.publicKeyAlgorithm===m.publicKey.rsaEncrypt||l.publicKeyAlgorithm===m.publicKey.rsaEncryptSign||l.publicKeyAlgorithm===m.publicKey.rsaSign||l.publicKeyAlgorithm===m.publicKey.elgamal)){let p=l.write();await Promise.all((i?[i]:Array.from(s.constantTimePKCS1DecryptionSupportedSymmetricAlgorithms)).map(async I=>{let y=new Vf;y.read(p);let w={sessionKeyAlgorithm:I,sessionKey:BB(I)};try{await y.decrypt(h,w),o.push(y)}catch(C){F.printDebugError(C),a=C}}))}else try{await l.decrypt(h);let p=i||l.sessionKeyAlgorithm;if(p&&!f.includes(m.write(m.symmetric,p)))throw new Error("A non-preferred symmetric algorithm was used.");o.push(l)}catch(p){F.printDebugError(p),a=p}}))})),pB(l.encrypted),l.encrypted=null}))}else throw new Error("No key or password specified.");if(o.length>0){if(o.length>1){let c=new Set;o=o.filter(l=>{let d=l.sessionKeyAlgorithm+F.uint8ArrayToString(l.sessionKey);return c.has(d)?!1:(c.add(d),!0)})}return o.map(c=>({data:c.sessionKey,algorithm:c.sessionKeyAlgorithm&&m.read(m.symmetric,c.sessionKeyAlgorithm)}))}throw a||new Error("Session key decryption failed.")}getLiteralData(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getBytes()||null}getFilename(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getFilename()||null}getText(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t?t.getText():null}static async generateSessionKey(e=[],t=new Date,i=[],n=pe){let{symmetricAlgo:s,aeadAlgo:o}=await BX(e,t,i,n),a=m.read(m.symmetric,s),c=o?m.read(m.aead,o):void 0;return await Promise.all(e.map(d=>d.getEncryptionKey().catch(()=>null).then(u=>{if(u&&(u.keyPacket.algorithm===m.publicKey.x25519||u.keyPacket.algorithm===m.publicKey.x448)&&!c&&!F.isAES(s))throw new Error("Could not generate a session key compatible with the given `encryptionKeys`: X22519 and X448 keys can only be used to encrypt AES session keys; change `config.preferredSymmetricAlgorithm` accordingly.")}))),{data:BB(s),algorithm:a,aeadAlgorithm:c}}async encrypt(e,t,i,n=!1,s=[],o=new Date,a=[],c=pe){if(i){if(!F.isUint8Array(i.data)||!F.isString(i.algorithm))throw new Error("Invalid session key for encryption.")}else if(e&&e.length)i=await r.generateSessionKey(e,o,a,c);else if(t&&t.length)i=await r.generateSessionKey(void 0,void 0,void 0,c);else throw new Error("No keys, passwords, or session key provided.");let{data:l,algorithm:d,aeadAlgorithm:u}=i,f=await r.encryptSessionKey(l,d,u,e,t,n,s,o,a,c),h=Dd.fromObject({version:u?2:1,aeadAlgorithm:u?m.write(m.aead,u):null});h.packets=this.packets;let g=m.write(m.symmetric,d);return await h.encrypt(g,l,c),f.packets.push(h),h.packets=new Ct,f}static async encryptSessionKey(e,t,i,n,s,o=!1,a=[],c=new Date,l=[],d=pe){let u=new Ct,f=m.write(m.symmetric,t),h=i&&m.write(m.aead,i);if(n){let g=await Promise.all(n.map(async function(p,I){let y=await p.getEncryptionKey(a[I],c,l,d),w=Vf.fromObject({version:h?6:3,encryptionKeyPacket:y.keyPacket,anonymousRecipient:o,sessionKey:e,sessionKeyAlgorithm:f});return await w.encrypt(y.keyPacket),delete w.sessionKey,w}));u.push(...g)}if(s){let g=async function(w,C){try{return await w.decrypt(C,d),1}catch{return 0}},p=(w,C)=>w+C,I=async function(w,C,b,x){let _=new Yf(d);return _.sessionKey=w,_.sessionKeyAlgorithm=C,b&&(_.aeadAlgorithm=b),await _.encrypt(x,d),d.passwordCollisionCheck&&(await Promise.all(s.map(U=>g(_,U)))).reduce(p)!==1?I(w,C,x):(delete _.sessionKey,_)},y=await Promise.all(s.map(w=>I(e,f,h,w)));u.push(...y)}return new r(u)}async sign(e=[],t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=pe){let d=new Ct,u=this.packets.findPacket(m.packet.literalData);if(!u)throw new Error("No literal data packet to sign.");let f=await J5(u,e,t,i,n,s,o,a,c,!1,l),h=f.map((g,p)=>an.fromSignaturePacket(g,p===0)).reverse();return d.push(...h),d.push(u),d.push(...f),new r(d)}compress(e,t=pe){if(e===m.compression.uncompressed)return this;let i=new qc(t);i.algorithm=e,i.packets=this.packets;let n=new Ct;return n.push(i),new r(n)}async signDetached(e=[],t=[],i=null,n=[],s=[],o=new Date,a=[],c=[],l=pe){let d=this.packets.findPacket(m.packet.literalData);if(!d)throw new Error("No literal data packet to sign.");return new nI(await J5(d,e,t,i,n,s,o,a,c,!0,l))}async verify(e,t=new Date,i=pe){let n=this.unwrapCompressed(),s=n.packets.filterByTag(m.packet.literalData);if(s.length!==1)throw new Error("Can only verify message with one literal data packet.");let o=n.packets;St(o.stream)&&(o=o.concat(await Xt(o.stream,l=>l||[])));let a=o.filterByTag(m.packet.onePassSignature).reverse(),c=o.filterByTag(m.packet.signature);return a.length&&!c.length&&F.isStream(o.stream)&&!St(o.stream)?(await Promise.all(a.map(async l=>{l.correspondingSig=new Promise((d,u)=>{l.correspondingSigResolve=d,l.correspondingSigReject=u}),l.signatureData=Hc(async()=>(await l.correspondingSig).signatureData),l.hashed=Xt(await l.hash(l.signatureType,s[0],void 0,!1)),l.hashed.catch(()=>{})})),o.stream=Ba(o.stream,async(l,d)=>{let u=_n(l),f=Hi(d);try{for(let h=0;h<a.length;h++){let{value:g}=await u.read();a[h].correspondingSigResolve(g)}await u.readToEnd(),await f.ready,await f.close()}catch(h){a.forEach(g=>{g.correspondingSigReject(h)}),await f.abort(h)}}),WE(a,s,e,t,!1,i)):WE(c,s,e,t,!1,i)}async verifyDetached(e,t,i=new Date,n=pe){let o=this.unwrapCompressed().packets.filterByTag(m.packet.literalData);if(o.length!==1)throw new Error("Can only verify message with one literal data packet.");let a=e.packets.filterByTag(m.packet.signature);return WE(a,o,t,i,!0,n)}unwrapCompressed(){let e=this.packets.filterByTag(m.packet.compressedData);return e.length?new r(e[0].packets):this}async appendSignature(e,t=pe){await this.packets.read(F.isUint8Array(e)?e:(await wI(e)).data,FX,t)}write(){return this.packets.write()}armor(e=pe){let t=this.packets[this.packets.length-1],i=t.constructor.tag===Dd.tag?t.version!==2:this.packets.some(n=>n.constructor.tag===Nr.tag&&n.version!==6);return dA(m.armor.message,this.write(),null,null,null,i,e)}};UX=Object.keys(pe).length;od=Mi&&typeof Mi=="object"&&"webcrypto"in Mi?Mi.webcrypto:Mi&&typeof Mi=="object"&&"randomBytes"in Mi?Mi:void 0;qX=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;$5=qX?r=>r:MX,UT=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",LX=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));js={_0:48,_9:57,A:65,F:70,a:97,f:102};tA=class{};GX=lo;B1=BigInt(0),OB=BigInt(1);ZE=r=>typeof r=="bigint"&&B1<=r;IA=r=>(OB<<BigInt(r))-OB;xi=BigInt(0),ui=BigInt(1),Qc=BigInt(2),qT=BigInt(3),OT=BigInt(4),MT=BigInt(5),$X=BigInt(7),LT=BigInt(8),VX=BigInt(9),HT=BigInt(16);ZX=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];Lc=class extends tA{constructor(e,t,i,n){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=i,this.isLE=n,this.buffer=new Uint8Array(e),this.view=XE(this.buffer)}update(e){_d(this),e=yA(e),hs(e);let{view:t,buffer:i,blockLen:n}=this,s=e.length;for(let o=0;o<s;){let a=Math.min(n-this.pos,s-o);if(a===n){let c=XE(e);for(;n<=s-o;o+=n)this.process(c,o);continue}i.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===n&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_d(this),TT(e,this),this.finished=!0;let{buffer:t,view:i,blockLen:n,isLE:s}=this,{pos:o}=this;t[o++]=128,cn(this.buffer.subarray(o)),this.padOffset>n-o&&(this.process(i,0),o=0);for(let u=o;u<n;u++)t[u]=0;iZ(i,n-8,BigInt(this.length*8),s),this.process(i,0);let a=XE(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:i,length:n,finished:s,destroyed:o,pos:a}=this;return e.destroyed=o,e.finished=s,e.length=n,e.pos=a,n%t&&e.buffer.set(i),e}clone(){return this._cloneInto()}},sa=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),oa=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),$r=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),Vr=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Iy=BigInt(2**32-1),Z5=BigInt(32);e6=(r,e,t)=>r>>>t,t6=(r,e,t)=>r<<32-t|e>>>t,ad=(r,e,t)=>r>>>t|e<<32-t,cd=(r,e,t)=>r<<32-t|e>>>t,wy=(r,e,t)=>r<<64-t|e>>>t-32,xy=(r,e,t)=>r>>>t-32|e<<64-t,sZ=(r,e,t)=>r<<t|e>>>32-t,oZ=(r,e,t)=>e<<t|r>>>32-t,aZ=(r,e,t)=>e<<t-32|r>>>64-t,cZ=(r,e,t)=>r<<t-32|e>>>64-t;lZ=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),dZ=(r,e,t,i)=>e+t+i+(r/2**32|0)|0,uZ=(r,e,t,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0),fZ=(r,e,t,i,n)=>e+t+i+n+(r/2**32|0)|0,AZ=(r,e,t,i,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0)+(n>>>0),hZ=(r,e,t,i,n,s)=>e+t+i+n+s+(r/2**32|0)|0,gZ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),aa=new Uint32Array(64),uI=class extends Lc{constructor(e=32){super(64,e,8,!1),this.A=sa[0]|0,this.B=sa[1]|0,this.C=sa[2]|0,this.D=sa[3]|0,this.E=sa[4]|0,this.F=sa[5]|0,this.G=sa[6]|0,this.H=sa[7]|0}get(){let{A:e,B:t,C:i,D:n,E:s,F:o,G:a,H:c}=this;return[e,t,i,n,s,o,a,c]}set(e,t,i,n,s,o,a,c){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)aa[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=aa[u-15],h=aa[u-2],g=es(f,7)^es(f,18)^f>>>3,p=es(h,17)^es(h,19)^h>>>10;aa[u]=p+aa[u-7]+g+aa[u-16]|0}let{A:i,B:n,C:s,D:o,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=es(a,6)^es(a,11)^es(a,25),h=d+f+VT(a,c,l)+gZ[u]+aa[u]|0,p=(es(i,2)^es(i,13)^es(i,22))+YT(i,n,s)|0;d=l,l=c,c=a,a=o+h|0,o=s,s=n,n=i,i=h+p|0}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(i,n,s,o,a,c,l,d)}roundClean(){cn(aa)}destroy(){this.set(0,0,0,0,0,0,0,0),cn(this.buffer)}},MB=class extends uI{constructor(){super(28),this.A=oa[0]|0,this.B=oa[1]|0,this.C=oa[2]|0,this.D=oa[3]|0,this.E=oa[4]|0,this.F=oa[5]|0,this.G=oa[6]|0,this.H=oa[7]|0}},XT=WT(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),pZ=XT[0],mZ=XT[1],ca=new Uint32Array(80),la=new Uint32Array(80),fI=class extends Lc{constructor(e=64){super(128,e,16,!1),this.Ah=Vr[0]|0,this.Al=Vr[1]|0,this.Bh=Vr[2]|0,this.Bl=Vr[3]|0,this.Ch=Vr[4]|0,this.Cl=Vr[5]|0,this.Dh=Vr[6]|0,this.Dl=Vr[7]|0,this.Eh=Vr[8]|0,this.El=Vr[9]|0,this.Fh=Vr[10]|0,this.Fl=Vr[11]|0,this.Gh=Vr[12]|0,this.Gl=Vr[13]|0,this.Hh=Vr[14]|0,this.Hl=Vr[15]|0}get(){let{Ah:e,Al:t,Bh:i,Bl:n,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:p,Hl:I}=this;return[e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I]}set(e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I){this.Ah=e|0,this.Al=t|0,this.Bh=i|0,this.Bl=n|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=p|0,this.Hl=I|0}process(e,t){for(let C=0;C<16;C++,t+=4)ca[C]=e.getUint32(t),la[C]=e.getUint32(t+=4);for(let C=16;C<80;C++){let b=ca[C-15]|0,x=la[C-15]|0,_=ad(b,x,1)^ad(b,x,8)^e6(b,x,7),R=cd(b,x,1)^cd(b,x,8)^t6(b,x,7),U=ca[C-2]|0,T=la[C-2]|0,D=ad(U,T,19)^wy(U,T,61)^e6(U,T,6),B=cd(U,T,19)^xy(U,T,61)^t6(U,T,6),Q=uZ(R,B,la[C-7],la[C-16]),v=fZ(Q,_,D,ca[C-7],ca[C-16]);ca[C]=v|0,la[C]=Q|0}let{Ah:i,Al:n,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:p,Gl:I,Hh:y,Hl:w}=this;for(let C=0;C<80;C++){let b=ad(u,f,14)^ad(u,f,18)^wy(u,f,41),x=cd(u,f,14)^cd(u,f,18)^xy(u,f,41),_=u&h^~u&p,R=f&g^~f&I,U=AZ(w,x,R,mZ[C],la[C]),T=hZ(U,y,b,_,pZ[C],ca[C]),D=U|0,B=ad(i,n,28)^wy(i,n,34)^wy(i,n,39),Q=cd(i,n,28)^xy(i,n,34)^xy(i,n,39),v=i&s^i&a^s&a,E=n&o^n&c^o&c;y=p|0,w=I|0,p=h|0,I=g|0,h=u|0,g=f|0,{h:u,l:f}=$s(l|0,d|0,T|0,D|0),l=a|0,d=c|0,a=s|0,c=o|0,s=i|0,o=n|0;let P=lZ(D,Q,E);i=dZ(P,T,B,v),n=P|0}({h:i,l:n}=$s(this.Ah|0,this.Al|0,i|0,n|0)),{h:s,l:o}=$s(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=$s(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=$s(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=$s(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=$s(this.Fh|0,this.Fl|0,h|0,g|0),{h:p,l:I}=$s(this.Gh|0,this.Gl|0,p|0,I|0),{h:y,l:w}=$s(this.Hh|0,this.Hl|0,y|0,w|0),this.set(i,n,s,o,a,c,l,d,u,f,h,g,p,I,y,w)}roundClean(){cn(ca,la)}destroy(){cn(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},LB=class extends fI{constructor(){super(48),this.Ah=$r[0]|0,this.Al=$r[1]|0,this.Bh=$r[2]|0,this.Bl=$r[3]|0,this.Ch=$r[4]|0,this.Cl=$r[5]|0,this.Dh=$r[6]|0,this.Dl=$r[7]|0,this.Eh=$r[8]|0,this.El=$r[9]|0,this.Fh=$r[10]|0,this.Fl=$r[11]|0,this.Gh=$r[12]|0,this.Gl=$r[13]|0,this.Hh=$r[14]|0,this.Hl=$r[15]|0}},S1=lo(()=>new uI),yZ=lo(()=>new MB),ZT=lo(()=>new fI),eU=lo(()=>new LB),AI=class extends tA{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,PT(e);let i=yA(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,s=new Uint8Array(n);s.set(i.length>n?e.create().update(i).digest():i);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),cn(s)}update(e){return _d(this),this.iHash.update(e),this}digestInto(e){_d(this),hs(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:i,finished:n,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=n,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=i._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},tU=(r,e,t)=>new AI(r,e).update(t).digest();tU.create=(r,e)=>new AI(r,e);Fd=BigInt(0),_c=BigInt(1);tB=new WeakMap,iU=new WeakMap;gI=class{constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,i=this.ZERO){let n=e;for(;t>Fd;)t&_c&&(i=i.add(n)),n=n.double(),t>>=_c;return i}precomputeWindow(e,t){let{windows:i,windowSize:n}=eB(t,this.bits),s=[],o=e,a=o;for(let c=0;c<i;c++){a=o,s.push(a);for(let l=1;l<n;l++)a=a.add(o),s.push(a);o=a.double()}return s}wNAF(e,t,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let n=this.ZERO,s=this.BASE,o=eB(e,this.bits);for(let a=0;a<o.windows;a++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=r6(i,a,o);i=c,d?s=s.add(hI(f,t[h])):n=n.add(hI(u,t[l]))}return i6(i),{p:n,f:s}}wNAFUnsafe(e,t,i,n=this.ZERO){let s=eB(e,this.bits);for(let o=0;o<s.windows&&i!==Fd;o++){let{nextN:a,offset:c,isZero:l,isNeg:d}=r6(i,o,s);if(i=a,!l){let u=t[c];n=n.add(d?u.negate():u)}}return i6(i),n}getPrecomputes(e,t,i){let n=tB.get(t);return n||(n=this.precomputeWindow(t,e),e!==1&&(typeof i=="function"&&(n=i(n)),tB.set(t,n))),n}cached(e,t,i){let n=rB(e);return this.wNAF(n,this.getPrecomputes(n,e,i),t)}unsafe(e,t,i,n){let s=rB(e);return s===1?this._unsafeLadder(e,t,n):this.wNAFUnsafe(s,this.getPrecomputes(s,e,i),t,n)}createCache(e,t){rU(t,this.bits),iU.set(e,t),tB.delete(e)}hasCache(e){return rB(e)!==1}};s6=(r,e)=>(r+(r>=0?e:-e)/oU)/e;KB=class extends Error{constructor(e=""){super(e)}},Zs={Err:KB,_tlv:{encode:(r,e)=>{let{Err:t}=Zs;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let i=e.length/2,n=yy(i);if(n.length/2&128)throw new t("tlv.encode: long form length too big");let s=i>127?yy(n.length/2|128):"";return yy(r)+s+n+e},decode(r,e){let{Err:t}=Zs,i=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[i++]!==r)throw new t("tlv.decode: wrong tlv");let n=e[i++],s=!!(n&128),o=0;if(!s)o=n;else{let c=n&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(i,i+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)o=o<<8|d;if(i+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(i,i+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(i+o)}}},_int:{encode(r){let{Err:e}=Zs;if(r<to)throw new e("integer: negative integers are not allowed");let t=yy(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Zs;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return qI(r)}},toSig(r){let{Err:e,_int:t,_tlv:i}=Zs,n=vt("signature",r),{v:s,l:o}=i.decode(48,n);if(o.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=i.decode(2,s),{v:l,l:d}=i.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Zs,i=e.encode(2,t.encode(r.r)),n=e.encode(2,t.encode(r.s)),s=i+n;return e.encode(48,s)}},to=BigInt(0),Cd=BigInt(1),oU=BigInt(2),Cy=BigInt(3),EZ=BigInt(4);lU={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},dU={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},uU={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},_Z=Si(lU.p),FZ=Si(dU.p),PZ=Si(uU.p),TZ=Gc({...lU,Fp:_Z,lowS:!1},S1),UZ=Gc({...dU,Fp:FZ,lowS:!1},eU),RZ=Gc({...uU,Fp:PZ,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},ZT);NZ=TZ;qZ=UZ;OZ=RZ,MZ=BigInt(0),Pf=BigInt(1),LZ=BigInt(2),HZ=BigInt(7),KZ=BigInt(256),GZ=BigInt(113),fU=[],AU=[],hU=[];for(let r=0,e=Pf,t=1,i=0;r<24;r++){[t,i]=[i,(2*t+3*i)%5],fU.push(2*(5*i+t)),AU.push((r+1)*(r+2)/2%64);let n=MZ;for(let s=0;s<7;s++)e=(e<<Pf^(e>>HZ)*GZ)%KZ,e&LZ&&(n^=Pf<<(Pf<<BigInt(s))-Pf);hU.push(n)}gU=WT(hU,!0),zZ=gU[0],JZ=gU[1],o6=(r,e,t)=>t>32?aZ(r,e,t):sZ(r,e,t),a6=(r,e,t)=>t>32?cZ(r,e,t):oZ(r,e,t);pI=class r extends tA{constructor(e,t,i,n=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=i,this.enableXOF=n,this.rounds=s,eA(i),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=NX(this.state)}clone(){return this._cloneInto()}keccak(){$5(this.state32),jZ(this.state32,this.rounds),$5(this.state32),this.posOut=0,this.pos=0}update(e){_d(this),e=yA(e),hs(e);let{blockLen:t,state:i}=this,n=e.length;for(let s=0;s<n;){let o=Math.min(t-this.pos,n-s);for(let a=0;a<o;a++)i[this.pos++]^=e[s++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:i,blockLen:n}=this;e[i]^=t,(t&128)!==0&&i===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){_d(this,!1),hs(e),this.finish();let t=this.state,{blockLen:i}=this;for(let n=0,s=e.length;n<s;){this.posOut>=i&&this.keccak();let o=Math.min(i-this.posOut,s-n);e.set(t.subarray(this.posOut,this.posOut+o),n),this.posOut+=o,n+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return eA(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(TT(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,cn(this.state)}_cloneInto(e){let{blockLen:t,suffix:i,outputLen:n,rounds:s,enableXOF:o}=this;return e||(e=new r(t,i,n,o,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=i,e.outputLen=n,e.enableXOF=o,e.destroyed=this.destroyed,e}},pU=(r,e,t)=>lo(()=>new pI(e,r,t)),$Z=pU(6,136,256/8),VZ=pU(6,72,512/8),YZ=(r,e,t)=>KX((i={})=>new pI(e,r,i.dkLen===void 0?t:i.dkLen,!0)),WZ=YZ(31,136,256/8);da=BigInt(0),Er=BigInt(1),nB=BigInt(2),XZ=BigInt(8);Tf=BigInt(0),ld=BigInt(1),Ey=BigInt(2);zc={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3"),h:BigInt(4),a:BigInt(1),d:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756"),Gx:BigInt("0x4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e"),Gy:BigInt("0x693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14")},oee=Object.assign({},zc,{d:BigInt("0xd78b4bdc7f0daf19f24f38c29373a2ccad46157242a50f37809b1da3412a12e79ccc9c81264cfe9ad080997058fb61c4243cc32dbaa156b9"),Gx:BigInt("0x79a70b2b70400553ae7c9df416c792c61128751ac92969240c25a07d728bdc93e21f7787ed6972249de732f38496cd11698713093e9c04fc"),Gy:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000001")}),aee=lo(()=>WZ.create({dkLen:114})),cee=BigInt(1),GB=BigInt(2),c6=BigInt(3);BigInt(4);lee=BigInt(11),dee=BigInt(22),l6=BigInt(44),uee=BigInt(88),fee=BigInt(223);hee=Si(zc.p,{BITS:456,isLE:!0}),d6=Si(zc.n,{BITS:456,isLE:!0});pee={...zc,Fp:hee,Fn:d6,nBitLength:d6.BITS,hash:aee,adjustScalarBytes:IU,domain:gee,uvRatio:Aee},mee=iee(pee);mU(oee);yee=(()=>{let r=zc.p;return see({P:r,type:"x448",powPminus2:e=>{let t=yU(e),i=bt(t,GB,r);return pr(i*e,r)},adjustScalarBytes:IU})})();D1={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Iee={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},u6=BigInt(2);zB=Si(D1.p,{sqrt:wee}),xee=Gc({...D1,Fp:zB,lowS:!0,endo:Iee},S1),wU=S1,Cee=yZ,xU=Si(BigInt("0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377")),Eee=xU.create(BigInt("0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9")),Bee=BigInt("0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6"),bee=Gc({a:Eee,b:Bee,Fp:xU,n:BigInt("0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7"),Gx:BigInt("0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262"),Gy:BigInt("0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997"),h:BigInt(1),lowS:!1},wU),CU=ZT,EU=eU,BU=Si(BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53")),vee=BU.create(BigInt("0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826")),kee=BigInt("0x04a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11"),See=Gc({a:vee,b:kee,Fp:BU,n:BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565"),Gx:BigInt("0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e"),Gy:BigInt("0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315"),h:BigInt(1),lowS:!1},EU),bU=Si(BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3")),Dee=bU.create(BigInt("0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca")),Qee=BigInt("0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723"),_ee=Gc({a:Dee,b:Qee,Fp:bU,n:BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069"),Gx:BigInt("0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822"),Gy:BigInt("0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892"),h:BigInt(1),lowS:!1},CU),Fee=new Map(Object.entries({nistP256:NZ,nistP384:qZ,nistP521:OZ,brainpoolP256r1:bee,brainpoolP384r1:See,brainpoolP512r1:_ee,secp256k1:xee,x448:yee,ed448:mee})),Pee=Object.freeze({__proto__:null,nobleCurves:Fee}),Uf=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),ua=new Uint32Array(80),JB=class extends Lc{constructor(){super(64,20,8,!1),this.A=Uf[0]|0,this.B=Uf[1]|0,this.C=Uf[2]|0,this.D=Uf[3]|0,this.E=Uf[4]|0}get(){let{A:e,B:t,C:i,D:n,E:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)ua[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)ua[c]=ya(ua[c-3]^ua[c-8]^ua[c-14]^ua[c-16],1);let{A:i,B:n,C:s,D:o,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=VT(n,s,o),d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=YT(n,s,o),d=2400959708):(l=n^s^o,d=3395469782);let u=ya(i,5)+l+a+d+ua[c]|0;a=o,o=s,s=ya(n,30),n=i,i=u}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,this.set(i,n,s,o,a)}roundClean(){cn(ua)}destroy(){this.set(0,0,0,0,0),cn(this.buffer)}},Tee=lo(()=>new JB),Uee=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),vU=Uint8Array.from(new Array(16).fill(0).map((r,e)=>e)),Ree=vU.map(r=>(9*r+5)%16),kU=(()=>{let t=[[vU],[Ree]];for(let i=0;i<4;i++)for(let n of t)n.push(n[i].map(s=>Uee[s]));return t})(),SU=kU[0],DU=kU[1],QU=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(r=>Uint8Array.from(r)),Nee=SU.map((r,e)=>r.map(t=>QU[e][t])),qee=DU.map((r,e)=>r.map(t=>QU[e][t])),Oee=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),Mee=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);By=new Uint32Array(16),jB=class extends Lc{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){let{h0:e,h1:t,h2:i,h3:n,h4:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.h0=e|0,this.h1=t|0,this.h2=i|0,this.h3=n|0,this.h4=s|0}process(e,t){for(let h=0;h<16;h++,t+=4)By[h]=e.getUint32(t,!0);let i=this.h0|0,n=i,s=this.h1|0,o=s,a=this.h2|0,c=a,l=this.h3|0,d=l,u=this.h4|0,f=u;for(let h=0;h<5;h++){let g=4-h,p=Oee[h],I=Mee[h],y=SU[h],w=DU[h],C=Nee[h],b=qee[h];for(let x=0;x<16;x++){let _=ya(i+f6(h,s,a,l)+By[y[x]]+p,C[x])+u|0;i=u,u=l,l=ya(a,10)|0,a=s,s=_}for(let x=0;x<16;x++){let _=ya(n+f6(g,o,c,d)+By[w[x]]+I,b[x])+f|0;n=f,f=d,d=ya(c,10)|0,c=o,o=_}}this.set(this.h1+a+d|0,this.h2+l+f|0,this.h3+u+n|0,this.h4+i+o|0,this.h0+s+c|0)}roundClean(){cn(By)}destroy(){this.destroyed=!0,cn(this.buffer),this.set(0,0,0,0,0)}},Lee=lo(()=>new jB),Hee=Tee,Kee=Lee,Gee=Array.from({length:64},(r,e)=>Math.floor(2**32*Math.abs(Math.sin(e+1)))),A6=(r,e,t)=>r&e^~r&t,by=new Uint32Array([1732584193,4023233417,2562383102,271733878]),sB=new Uint32Array(16),$B=class extends Lc{constructor(){super(64,16,8,!0),this.A=by[0]|0,this.B=by[1]|0,this.C=by[2]|0,this.D=by[3]|0}get(){let{A:e,B:t,C:i,D:n}=this;return[e,t,i,n]}set(e,t,i,n){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0}process(e,t){for(let a=0;a<16;a++,t+=4)sB[a]=e.getUint32(t,!0);let{A:i,B:n,C:s,D:o}=this;for(let a=0;a<64;a++){let c,l,d;a<16?(c=A6(n,s,o),l=a,d=[7,12,17,22]):a<32?(c=A6(o,n,s),l=(5*a+1)%16,d=[5,9,14,20]):a<48?(c=n^s^o,l=(3*a+5)%16,d=[4,11,16,23]):(c=s^(n|~o),l=7*a%16,d=[6,10,15,21]),c=c+i+Gee[a]+sB[l],i=o,o=s,s=n,n=n+ya(c,d[a%4])}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,this.set(i,n,s,o)}roundClean(){sB.fill(0)}destroy(){this.set(0,0,0,0),this.buffer.fill(0)}},zee=GX(()=>new $B),Jee=new Map(Object.entries({md5:zee,sha1:Hee,sha224:Cee,sha256:wU,sha384:EU,sha512:CU,sha3_256:$Z,sha3_512:VZ,ripemd160:Kee})),jee=Object.freeze({__proto__:null,nobleHashes:Jee}),oB=Mi&&typeof Mi=="object"&&"webcrypto"in Mi?Mi.webcrypto:void 0,ki={},Pe=function(r){var e,t=new Float64Array(16);if(r)for(e=0;e<r.length;e++)t[e]=r[e];return t},Q1=function(){throw new Error("no PRNG")},_U=new Uint8Array(32);_U[0]=9;VB=Pe(),mI=Pe([1]),$ee=Pe([56129,1]),Vee=Pe([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),Yee=Pe([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),h6=Pe([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),g6=Pe([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),Wee=Pe([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);y6=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];cB=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);x6=32,nte=32,LU=32,HU=32,Dc=64,OI=32,MI=64,ste=32;ki.scalarMult=function(r,e){if(Rd(r,e),r.length!==nte)throw new Error("bad n size");if(e.length!==x6)throw new Error("bad p size");var t=new Uint8Array(x6);return RU(t,r,e),t};ki.box={};ki.box.keyPair=function(){var r=new Uint8Array(LU),e=new Uint8Array(HU);return ete(r,e),{publicKey:r,secretKey:e}};ki.box.keyPair.fromSecretKey=function(r){if(Rd(r),r.length!==HU)throw new Error("bad secret key size");var e=new Uint8Array(LU);return NU(e,r),{publicKey:e,secretKey:new Uint8Array(r)}};ki.sign=function(r,e){if(Rd(r,e),e.length!==MI)throw new Error("bad secret key size");var t=new Uint8Array(Dc+r.length);return tte(t,r,r.length,e),t};ki.sign.detached=function(r,e){for(var t=ki.sign(r,e),i=new Uint8Array(Dc),n=0;n<i.length;n++)i[n]=t[n];return i};ki.sign.detached.verify=function(r,e,t){if(Rd(r,e,t),e.length!==Dc)throw new Error("bad signature size");if(t.length!==OI)throw new Error("bad public key size");var i=new Uint8Array(Dc+r.length),n=new Uint8Array(Dc+r.length),s;for(s=0;s<Dc;s++)i[s]=e[s];for(s=0;s<r.length;s++)i[s+Dc]=r[s];return ite(n,i,i.length,t)>=0};ki.sign.keyPair=function(){var r=new Uint8Array(OI),e=new Uint8Array(MI);return OU(r,e),{publicKey:r,secretKey:e}};ki.sign.keyPair.fromSecretKey=function(r){if(Rd(r),r.length!==MI)throw new Error("bad secret key size");for(var e=new Uint8Array(OI),t=0;t<e.length;t++)e[t]=r[32+t];return{publicKey:e,secretKey:new Uint8Array(r)}};ki.sign.keyPair.fromSeed=function(r){if(Rd(r),r.length!==ste)throw new Error("bad seed size");for(var e=new Uint8Array(OI),t=new Uint8Array(MI),i=0;i<32;i++)t[i]=r[i];return OU(e,t,!0),{publicKey:e,secretKey:t}};ki.setPRNG=function(r){Q1=r};(function(){if(oB&&oB.getRandomValues){var r=65536;ki.setPRNG(function(e,t){var i,n=new Uint8Array(t);for(i=0;i<t;i+=r)oB.getRandomValues(n.subarray(i,i+Math.min(t-i,r)));for(i=0;i<t;i++)e[i]=n[i];ote(n)})}})();Jc=Object.freeze({__proto__:null,default:ki});nA.keySize=nA.prototype.keySize=24;nA.blockSize=nA.prototype.blockSize=8;sA.blockSize=sA.prototype.blockSize=8;sA.keySize=sA.prototype.keySize=16;tn=4294967295;oA.keySize=oA.prototype.keySize=32;oA.blockSize=oA.prototype.blockSize=16;Pn.prototype.BLOCKSIZE=8;Pn.prototype.SBOXES=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];Pn.prototype.PARRAY=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731];Pn.prototype.NN=16;Pn.prototype._clean=function(r){return r<0&&(r=(r&2147483647)+2147483648),r};Pn.prototype._F=function(r){let e,t=r&255;r>>>=8;let i=r&255;r>>>=8;let n=r&255;r>>>=8;let s=r&255;return e=this.sboxes[0][s]+this.sboxes[1][n],e^=this.sboxes[2][i],e+=this.sboxes[3][t],e};Pn.prototype._encryptBlock=function(r){let e=r[0],t=r[1],i;for(i=0;i<this.NN;++i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[this.NN+0],t^=this.parray[this.NN+1],r[0]=this._clean(t),r[1]=this._clean(e)};Pn.prototype.encryptBlock=function(r){let e,t=[0,0],i=this.BLOCKSIZE/2;for(e=0;e<this.BLOCKSIZE/2;++e)t[0]=t[0]<<8|r[e+0]&255,t[1]=t[1]<<8|r[e+i]&255;this._encryptBlock(t);let n=[];for(e=0;e<this.BLOCKSIZE/2;++e)n[e+0]=t[0]>>>24-8*e&255,n[e+i]=t[1]>>>24-8*e&255;return n};Pn.prototype._decryptBlock=function(r){let e=r[0],t=r[1],i;for(i=this.NN+1;i>1;--i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[1],t^=this.parray[0],r[0]=this._clean(t),r[1]=this._clean(e)};Pn.prototype.init=function(r){let e,t=0;for(this.parray=[],e=0;e<this.NN+2;++e){let n=0;for(let s=0;s<4;++s)n=n<<8|r[t]&255,++t>=r.length&&(t=0);this.parray[e]=this.PARRAY[e]^n}for(this.sboxes=[],e=0;e<4;++e)for(this.sboxes[e]=[],t=0;t<256;++t)this.sboxes[e][t]=this.SBOXES[e][t];let i=[0,0];for(e=0;e<this.NN+2;e+=2)this._encryptBlock(i),this.parray[e+0]=i[0],this.parray[e+1]=i[1];for(e=0;e<4;++e)for(t=0;t<256;t+=2)this._encryptBlock(i),this.sboxes[e][t+0]=i[0],this.sboxes[e][t+1]=i[1]};aA.keySize=aA.prototype.keySize=16;aA.blockSize=aA.prototype.blockSize=8;ute=new Map(Object.entries({tripledes:nA,cast5:sA,twofish:oA,blowfish:aA})),fte=Object.freeze({__proto__:null,legacyCiphers:ute});KU=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Yr=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(r=>r*2));XB=class{constructor(e,t,i,n){let s=new Uint8Array(64);this.S={b:new Uint8Array(Rf),h:new Uint32Array(ZB/4),t0:new Uint32Array(2),c:0,outlen:e},s[0]=e,t&&(s[1]=t.length),s[2]=1,s[3]=1,i&&s.set(i,32),n&&s.set(n,48);let o=new Uint32Array(s.buffer,s.byteOffset,s.length/Uint32Array.BYTES_PER_ELEMENT);for(let a=0;a<16;a++)this.S.h[a]=KU[a]^o[a];if(t){let a=new Uint8Array(Rf);a.set(t),this.update(a)}}update(e){if(!(e instanceof Uint8Array))throw new Error("Input must be Uint8Array or Buffer");let t=0;for(;t<e.length;){this.S.c===Rf&&(C6(this.S.t0,this.S.c),E6(this.S,!1),this.S.c=0);let i=Rf-this.S.c;this.S.b.set(e.subarray(t,t+i),this.S.c);let n=Math.min(i,e.length-t);this.S.c+=n,t+=n}return this}digest(e){C6(this.S.t0,this.S.c),this.S.b.fill(0,this.S.c),this.S.c=Rf,E6(this.S,!0);let t=e||new Uint8Array(this.S.outlen);for(let i=0;i<this.S.outlen;i++)t[i]=this.S.h[i>>2]>>8*(i&3);return this.S.h=null,t.buffer}};ZB=64,Rf=128,P1=2,GU=19,Ate=4294967295,hte=4,gte=4294967295,pte=8,mte=4294967295,yte=8,Ite=4294967295,wte=4294967295,xte=32,Ys=1024,Cte=64,Ete=new Uint8Array(new Uint16Array([43981]).buffer)[0]===205;zU=1024,Ste=64*zU;Rte=async()=>Pte(r=>Tte(r),r=>Ute(r)),Nte=Object.freeze({__proto__:null,default:Rte});jU=Lte(),Hte=qte(jU),Kte=kV({__proto__:null,default:Hte},[jU])});function Gte(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=VU[i>>t&63];return t>0&&(e+=VU[i<<6-t&63]),e}function WU(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function zte(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function Jte(r){return new Uint8Array(await crypto.subtle.digest("SHA-256",r))}function XU(r,e){let t=WU(e),n=`$2a$10$${Gte(t).padEnd(22,".")}`;return YU.default.hashSync(r,n).slice(n.length)}async function wA(r,e){let t=await TI({armoredKey:r});return UI({privateKey:t,passphrase:e})}async function Nd(r,e){let t=await gA({armoredMessage:r}),{data:i}=await RI({message:t,decryptionKeys:e,format:"utf8"});return i}async function LI(r,e,t){let i=await DT({text:r});return QT({message:i,encryptionKeys:e,signingKeys:t?[t]:void 0,format:"armored"})}async function U1(r){let e=await Jte(new TextEncoder().encode(r));return zte(e)}async function ZU(r,e){let t=await gA({armoredMessage:r}),i=await _T({message:t,decryptionKeys:e});if(!i.length)throw new Error("failed to decrypt session key");return i[0]}async function eR(r,e){let t=await gA({binaryMessage:r}),{data:i}=await RI({message:t,sessionKeys:e,format:"binary"});return i}async function R1(r,e){if(!r)return 0;try{let t=WU(r),i=await gA({binaryMessage:t}),{data:n}=await RI({message:i,decryptionKeys:e,format:"binary"});return jte(n)}catch{return 0}}function jte(r){let e=0;for(;e<r.length;){let t=r[e++],i=t>>3,n=t&7;if(n===0){let s=0n,o=0n;for(;e<r.length;){let a=r[e++];if(s|=BigInt(a&127)<<o,(a&128)===0)break;o+=7n}if(i===1)return Number(s)}else if(n===2){let s=0,o=0;for(;e<r.length;){let a=r[e++];if(s|=(a&127)<<o,(a&128)===0)break;o+=7}e+=s}else if(n===1)e+=8;else if(n===5)e+=4;else break}return 0}var YU,VU,N1=j(()=>{"use strict";T1();YU=Qr(UE(),1),VU="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});async function tR(r,e,t){let i=r.find(a=>a.Primary===1)||r[0];if(!i)throw new Error("user has no keys");let n=t.find(a=>a.ID===i.ID);if(!n)throw new Error("no salt for user key");let s=XU(e,n.KeySalt),o=[];for(let a of r)try{o.push(await wA(a.PrivateKey,s))}catch{}if(o.length===0)throw new Error("failed to unlock user keys (wrong password?)");return{userKR:o,saltedKeyPass:s}}async function rR(r,e,t){let i=new Map;for(let n of r){let s=[];for(let o of n.Keys)try{if(o.Token){let a=await Nd(o.Token,e);s.push(await wA(o.PrivateKey,a))}else s.push(await wA(o.PrivateKey,t))}catch{}s.length>0&&i.set(n.ID,s)}return i}async function iR(r,e){let t=e.get(r.AddressID);if(!t)throw new Error("no address keyring for share");let i=await Nd(r.Passphrase,t),n=await wA(r.Key,i);return[...t,n]}var HI,nR=j(()=>{"use strict";TE();c5();N1();HI=class{constructor(e){this.addition=e}addition;accessToken="";refreshToken="";uid="";saltedKeyPass="";setAuth(e,t,i){this.accessToken=e,this.refreshToken=t,this.uid=i}getUID(){return this.uid}getSaltedKeyPass(){return this.saltedKeyPass}setSaltedKeyPass(e){this.saltedKeyPass=e}authHeaders(){let e={Accept:WP,"X-Pm-Appversion":e5,"X-Pm-Drive-Sdk-Version":XP,"User-Agent":ZP};return this.accessToken&&(e.Authorization=`Bearer ${this.accessToken}`,e["X-Pm-Uid"]=this.uid),e}async request(e,t={}){let i=t.method||"GET",n=this.authHeaders(),s={method:i,headers:n};t.body!==void 0&&(s.body=JSON.stringify(t.body),n["Content-Type"]="application/json");let o=await fetch(e,s),a=await o.text(),c={};try{c=a?JSON.parse(a):{}}catch{c={}}if(!o.ok)throw new Error(`Proton request failed: ${o.status} ${(c.Error||a).slice(0,200)}`);return c}async requestAPI(e,t={}){let i=e.startsWith("http")?e:`${ia}${e}`;if(t.params){let n=new URLSearchParams(Object.entries(t.params).map(([s,o])=>[s,String(o)])).toString();i+=(i.includes("?")?"&":"?")+n}return this.request(i,{method:t.method,body:t.body})}async login(){let e=await this.request(GP,{method:"POST",body:{Username:this.addition.email}});if(!e.Modulus||!e.ServerEphemeral)throw new Error("invalid auth info response");let t=await a5(this.addition.email,this.addition.password,e),i=await this.request(zP,{method:"POST",body:{Username:this.addition.email,ClientEphemeral:t.ClientEphemeral,ClientProof:t.ClientProof,SRPSession:t.SRPSession}});if(i.Code===1001||i.TwoFactor?.Enabled){if(!this.addition.two_fa_code)throw new Error("2FA is enabled but no two_fa_code provided");i=await this.request(JP,{method:"POST",body:{TwoFactorCode:this.addition.two_fa_code,SRPSession:t.SRPSession}})}if(!i.AccessToken||!i.UID)throw new Error(`auth failed: code=${i.Code}`);this.setAuth(i.AccessToken,i.RefreshToken,i.UID)}async refresh(){if(!this.refreshToken)throw new Error("refresh token is empty");let e=await this.request(jP,{method:"POST",body:{RefreshToken:this.refreshToken,ResponseType:"token",GrantType:"refresh_token",RedirectURI:"https://drive.proton.me"}});if(!e.AccessToken)throw new Error("refresh token failed");this.setAuth(e.AccessToken,e.RefreshToken||this.refreshToken,e.UID||this.uid)}async requestWithRetry(e,t){try{return await this.request(e,t)}catch(i){if(String(i.message).includes("401")&&this.refreshToken)return await this.refresh(),this.request(e,t);throw i}}async getSalts(){return(await this.requestWithRetry($P,{})).KeySalts||[]}async getUser(){return(await this.requestWithRetry(VP,{})).User}async getAddresses(){return(await this.requestWithRetry(`${ia}/core/v4/addresses`,{})).Addresses||[]}async getShares(){return(await this.requestWithRetry(YP,{})).Shares||[]}}});function oR(r){return r?new Date(r*1e3).toISOString():new Date().toISOString()}function $te(r){let e={...r||{}};return e.email=(e.email||"").trim(),e.password=(e.password||"").trim(),e.two_fa_code=(e.two_fa_code||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim()||"root",e.use_reusable_login=!!e.use_reusable_login,e.chunk_size=e.chunk_size||"4",e.reusable_credential=(e.reusable_credential||"").trim(),e}function Vte(){let r=crypto.getRandomValues(new Uint8Array(16));return btoa(String.fromCharCode(...r))}var sR,KI,aR=j(()=>{"use strict";Be();He();TE();nR();N1();T1();sR=150;KI=class{addition;client;mainShare=null;mainShareKR=[];userKR=[];addrKRs=new Map;defaultAddrKR=[];defaultAddrID="";idCache=new Map;linkCache=new Map;nodeKRcache=new Map;childrenCache=new Map;constructor(e){this.addition=$te(e),this.client=new HI(this.addition)}async init(){if(!this.addition.email)throw new Error("email is required");if(!this.addition.password)throw new Error("password is required");await this.client.login();let e=await this.client.getSalts(),t=await this.client.getUser(),i=await this.client.getAddresses(),{userKR:n,saltedKeyPass:s}=await tR(t.Keys,this.addition.password,e);if(this.userKR=n,this.client.setSaltedKeyPass(s),this.addrKRs=await rR(i,this.userKR,s),this.addrKRs.size===0)throw new Error("failed to unlock address keys");this.defaultAddrID=i[0]?.ID||"",this.defaultAddrKR=this.addrKRs.get(this.defaultAddrID)||[];let o=await this.client.getShares();if(this.mainShare=o.find(a=>a.Type===t5)||o[0],!this.mainShare)throw new Error("no shares found");this.mainShareKR=await iR(this.mainShare,this.addrKRs),await this.getLinkKR(this.getRootLinkID())}getShareID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.ShareID}getVolumeID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.VolumeID}getRootLinkID(){if(!this.mainShare)throw new Error("not initialized");return this.addition.root_folder_id&&this.addition.root_folder_id!=="root"?this.addition.root_folder_id:this.mainShare.RootLinkID}async fetchLink(e){let t=this.linkCache.get(e);if(t)return t;let i=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`);if(!i.Link)throw new Error(`link not found: ${e}`);return this.linkCache.set(e,i.Link),i.Link}async getLinkKR(e){let t=this.nodeKRcache.get(e);if(t)return t;let i=await this.fetchLink(e),n=i.ParentLinkID?await this.getLinkKR(i.ParentLinkID):this.mainShareKR,s=await Nd(i.NodePassphrase,n),o=await TI({armoredKey:i.NodeKey}),a=await UI({privateKey:o,passphrase:s}),c=[...n,a];return this.nodeKRcache.set(e,c),c}async decryptName(e){if(!e.Name)return"unnamed";let t=await this.getLinkKR(e.LinkID);try{return await Nd(e.Name,t)}catch{return"unnamed"}}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async listChildren(e){let t=this.childrenCache.get(e);if(t)return t;let i=[];for(let n=0;n<1e3;n++){let o=(await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`,{params:{Children:"1",Page:String(n),PageSize:String(sR),Thumbnail:"0"}})).Links||[];if(i.push(...o),o.length<sR)break}return this.childrenCache.set(e,i),i}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootLinkID();let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.getRootLinkID(),o="/";for(let a of n){let c=await this.listChildren(s),l=null;for(let d of c)if(await this.decryptName(d)===a){l=d;break}if(!l)throw new Error(`folder not found: ${a}`);s=l.LinkID,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.listChildren(i),s=this.cleanPath(t),o=[];for(let a of n){let c=await this.decryptName(a);this.idCache.set(this.joinPath(s,c),a.LinkID);let l=a.Type===2;o.push({name:c,size:l?0:a.Size||0,is_dir:l,modified:oR(a.ModifyTime||a.CreateTime),sign:a.LinkID,type:X(c,l)})}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t);if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootLinkID(),type:1};let n=await this.resolveId(i),s=await this.fetchLink(n),o=await this.decryptName(s),a=s.Type===2,c=0;if(!a){let l=await this.getLinkKR(n);c=await R1(s.XAttr||"",l),c||(c=s.Size||0)}return{name:o,size:c,is_dir:a,modified:oR(s.ModifyTime||s.CreateTime),sign:n,type:X(o,a),raw_url:""}}async createReadStream(e,t){let i=await this.resolveId(e),n=await this.fetchLink(i);if(n.Type===2)throw new Error("cannot stream a directory");let s=await this.getLinkKR(i),o=n.FileProperties?.ContentKeyPacket;if(!o)throw new Error("file has no content key packet");let a=await ZU(o,s),c=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${i}/revisions`),l=c.Revisions?.find(I=>I.State===1)||c.Revisions?.[0];if(!l?.Blocks?.length)throw new Error("file has no blocks");let d=l.Blocks,u=await R1(n.XAttr||"",s)||l.Size||0,f=(parseInt(this.addition.chunk_size||"4")||4)*1024*1024,h=t?.start??0,g=t?.end??(u>0?u-1:Number.MAX_SAFE_INTEGER),p=this;return new ReadableStream({async pull(I){try{let y=h;for(let w of d){if(y>g)break;let C=await p.downloadBlock(w.BareURL,w.Token),b=await eR(C,[a]),x=w.Index*f,_=x+b.length-1,R=Math.max(h,x),U=Math.min(g,_);R<=U&&(I.enqueue(b.slice(R-x,U-x+1)),y=U+1)}I.close()}catch(y){I.error(y)}}})}async downloadBlock(e,t){let i=await fetch(e,{headers:{Authorization:`Bearer ${t}`}});if(!i.ok)throw new Error(`block download failed: ${i.status}`);return new Uint8Array(await i.arrayBuffer())}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n),a=await this.getLinkKR(o),c=await LI(s,a),l=await U1(s),{publicKey:d}=await C1({type:"ecc",curve:"curve25519Legacy",userIDs:[{name:s,email:this.mainShare?.Creator||""}]}),u=Vte(),f=await LI(u,a);await this.client.requestAPI("/drive/shares/"+this.getShareID()+"/folders",{method:"POST",body:{ParentLinkID:o,Name:c,Hash:l,NodeKey:d,NodePassphrase:f,NodePassphraseSignature:"",SignatureAddress:this.defaultAddrID,NameSignatureEmail:this.mainShare?.Creator||""}})}async rename(e,t,i){let n=await this.resolveId(t),s=await this.fetchLink(n),o=await this.getLinkKR(s.ParentLinkID),a=await LI(i,o),c=await U1(i),l=s.Hash||"";await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/rename`,{method:"PUT",body:{Name:a,NameSignatureEmail:this.mainShare?.Creator||"",Hash:c,OriginalHash:l}})}async remove(e,t,i){let n=await this.resolveId(t);await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/trash`,{method:"POST"})}async move(e,t,i,n,s){throw new Error("ProtonDrive move is not supported yet")}async copy(e,t,i,n,s){throw new Error("ProtonDrive copy is not supported")}async put(e,t,i){throw new Error("ProtonDrive upload is not supported yet")}}});var cR={};xn(cR,{LocalDriver:()=>q1});async function va(){if(typeof process<"u"&&process.release?.name==="node"&&!zt)try{zt=await import("fs/promises"),ar=await import("path")}catch{}}var zt,ar,q1,lR=j(()=>{"use strict";Be();zt=null,ar=null;q1=class{async list(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=[];try{i=await zt.readdir(t,{withFileTypes:!0})}catch{return[]}return await Promise.all(i.map(async s=>{let o=s.isDirectory(),a=0,c=new Date;try{let l=await zt.stat(ar.join(t,s.name));a=l.size,c=l.mtime}catch{}return{name:s.name,size:o?0:a,is_dir:o,created:c.toISOString(),modified:c.toISOString(),sign:"",type:X(s.name,o)}}))}async get(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=await zt.stat(t),n=i.isDirectory(),s=t.split(/[\\/]+/).filter(Boolean).pop()||"root";return{name:s,size:n?0:i.size,is_dir:n,created:i.ctime?.toISOString()||i.mtime.toISOString(),modified:i.mtime.toISOString(),sign:"",type:X(s,n)}}async mkdir(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(t,{recursive:!0})}async rename(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let n=ar.join(ar.dirname(t),i);await zt.rename(t,n)}async remove(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let n of i){let s=ar.join(t,n);await zt.rm(s,{recursive:!0,force:!0})}}async move(e,t,i,n,s){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.rename(a,c)}}async copy(e,t,i,n,s){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.cp(a,c,{recursive:!0})}}async put(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(ar.dirname(t),{recursive:!0}),await zt.writeFile(t,i)}}});var dR={};xn(dR,{Client:()=>tre,FTPDriver:()=>Xte,SFTPClient:()=>Zte,SFTPDriver:()=>Yte,createPool:()=>rre,default:()=>ire,normalizeSFTPAddition:()=>Wte,parseAddress:()=>ere});var Yte,Wte,Xte,Zte,ere,tre,rre,ire,uR=j(()=>{Yte=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},Wte=r=>r,Xte=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},Zte=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},ere=()=>({host:"127.0.0.1",port:22}),tre=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},rre=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},ire={}});var fR={};xn(fR,{Client:()=>lre,FTPDriver:()=>ore,SFTPClient:()=>are,SFTPDriver:()=>nre,createPool:()=>dre,default:()=>ure,normalizeSFTPAddition:()=>sre,parseAddress:()=>cre});var nre,sre,ore,are,cre,lre,dre,ure,AR=j(()=>{nre=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},sre=r=>r,ore=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},are=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},cre=()=>({host:"127.0.0.1",port:22}),lre=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},dre=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},ure={}});var qi={};xn(qi,{copyItems:()=>EA,flushPendingDriverState:()=>Jt,getDriver:()=>lt,getItem:()=>Di,getOrCreateDriver:()=>gR,listItems:()=>Zt,makeDirectory:()=>xA,moveItems:()=>Od,putItem:()=>Tn,removeItems:()=>ka,renameItem:()=>CA,scheduleStoragePersistence:()=>pR});async function fre(){if(!O1){let{LocalDriver:r}=await Promise.resolve().then(()=>(lR(),cR));O1=new r}return O1}async function Are(r){if(typeof process<"u"&&process.release?.name==="node"){let{SFTPDriver:e}=await Promise.resolve().then(()=>(uR(),dR)),t=new e(ye(r));return await t.init?.(),t}throw new Error("SFTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}async function hre(r){if(typeof process<"u"&&process.release?.name==="node"){let{FTPDriver:e}=await Promise.resolve().then(()=>(AR(),fR)),t=new e(ye(r));return await t.init?.(),t}throw new Error("FTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}function mre(r,e){if(qd.size>=pre){let t=qd.keys().next().value;t!==void 0&&qd.delete(t)}qd.set(r,e)}async function gR(r,e,t){let i=r.get(e);if(i)return i;let n=t();r.set(e,n);try{return await n}catch(s){throw r.get(e)===n&&r.delete(e),s}}function ye(r){let e=r?.addition;return e?typeof e=="string"?JSON.parse(e||"{}"):e:{}}async function hR(r,e){let t=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(t==="local"){if(typeof process<"u"&&process.release?.name==="node")return fre();throw new Error("Local storage driver requires Node.js runtime (not available in Cloudflare Workers)")}if(t==="sftp")return Are(e);if(t==="ftp")return hre(e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i;if(t==="onedriveapp"){i=new mh(ye(e));try{await i.init?.()}catch(n){throw console.error("onedrive_app init failed:",n),n}}else if(t==="onedrive"||t==="onedrivesb"||t==="onedrivebusiness"||t==="onedrivesharepoint"||t.startsWith("onedrive")&&t!=="onedriveapp"){i=new ph(ye(e),async n=>{try{let s=await ne(),o=(s.storages||[]).find(c=>c.id===e?.id);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.refresh_token=n,o.addition=JSON.stringify(a),await fe(s)}catch(s){console.warn("[Onedrive] failed to persist refresh token:",s)}});try{await i.init?.()}catch(n){throw console.error("onedrive init failed:",n),n}}else if(t==="aliyundrive"||t==="aliyundriveopen"||t==="aliyundriveshare"||t==="aliyun"||t==="aliyundriveshare2open"||t==="aliyundriveoauth2"||t.includes("aliyun"))i=new wh(ye(e)),await i.init?.();else if(t==="googlephoto"||t==="googlephotos"||t==="gphoto"||t==="google_photo")i=new dg(ye(e)),await i.init?.();else if(t==="googledrive"||t==="gdrive"||t==="google"||t.startsWith("google"))i=new Ch(ye(e)),await i.init?.();else if(t==="quark"||t==="quarkuc"||t==="uc"||t==="quarkcookie")i=new Bh(ye(e)),await i.init?.();else if(t==="115"||t==="115cloud"||t==="115open"||t==="115netdisk")i=new vh(ye(e)),await i.init?.();else if(t==="cloudreve"||t==="cloudrevev3"||t==="cloudreve_v3"){let n=ye(e);i=new Qh(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[cloudreve] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="cloudrevev4"||t==="cloudreve_v4")i=new Sh(ye(e)),await i.init?.();else if(t==="openlistshare"||t==="openlist_share")i=new Th(ye(e)),await i.init?.();else if(t==="openlist")i=new Fh(ye(e)),await i.init?.();else if(t==="teldrive")i=new Rh(ye(e)),await i.init?.();else if(t==="mediafire")i=new qh(ye(e)),await i.init?.();else if(t==="githubreleases"||t==="github_releases")i=new Mh(ye(e)),await i.init?.();else if(t==="cnbreleases"||t==="cnb_releases")i=new Hh(ye(e)),await i.init?.();else if(t==="kodbox"||t==="kodo")i=new Gh(ye(e)),await i.init?.();else if(t==="ipfs"||t==="ipfsapi"||t==="ipfs_api")i=new Jh(ye(e)),await i.init?.();else if(t==="lenovonasshare"||t==="lenovonas_share")i=new $h(ye(e)),await i.init?.();else if(t==="misskey")i=new Yh(ye(e)),await i.init?.();else if(t==="doubao"||t==="doubaonew"||t==="doubao_new"||t==="doubaoshare"||t==="doubao_share")i=new Xh(ye(e)),await i.init?.();else if(t==="quarkopen"||t==="quark_open"||t==="quarkoa")i=new eg(ye(e)),await i.init?.();else if(t==="quarktv"||t==="uctv"||t==="quark_uc_tv")i=new rg(ye(e)),await i.init?.();else if(t==="123open"||t==="123_open"||t==="123cloudopen")i=new ng(ye(e)),await i.init?.();else if(t==="teambition"||t==="tb")i=new og(ye(e)),await i.init?.();else if(t==="neteasemusic"||t==="netease"||t==="neteasecloudmusic"||t==="netease_music")i=new pg(ye(e)),await i.init?.();else if(t==="halalcloudopen"||t==="halalcloud_open"||t==="halalcloudopenapi"){let n=ye(e);i=new Ig(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[HalalCloud] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="degoo"){let n=ye(e);i=new hg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.accessToken&&(c.access_token=s.accessToken),s.refreshToken&&(c.refresh_token=s.refreshToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[degoo] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="febbox"||t==="febboxpan"){let n=ye(e);i=new fg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[febbox] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="chaoxing"||t==="chaoxinggroupdrive"||t==="chaoxinggroup"||t.startsWith("chaoxing")){let n=ye(e);i=new cg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[chaoxing] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="123pan"||t==="123"||t==="123panshare"||t.startsWith("123")){let n=ye(e);i=new xg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[123Pan] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="baiduphoto"||t==="baidu_photo"||t==="baiduphotos")i=new kg(ye(e)),await i.init?.();else if(t==="baidunetdisk"||t==="baidu"||t==="baiduyun"||t==="baidushare"||t.startsWith("baidu")){let n=ye(e);i=new Eg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(Pl(c)),await fe(o)}catch(o){console.warn("[baidu_netdisk] failed to persist token:",o)}}),await i.init?.()}else if(t==="115open"||t==="115"||t==="115pan"||t==="115cloud"||t.startsWith("115")){let n=ye(e);i=new Qg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[115open] failed to persist token:",o)}}),await i.init?.()}else if(t==="github"||t==="githubapi"||t==="github_api"){let n=ye(e);i=new Fg(n),await i.init?.()}else if(t==="thunderexpert"||t==="thunderbrowserexpert"||t==="thunderxexpert"||t.includes("thunder")&&t.includes("expert")||t.includes("xunlei")&&t.includes("expert")){let n=ye(e);i=new yp(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunderexpert] failed to persist token:",o)}}),await i.init?.()}else if(t==="thunder"||t==="xunlei"||t==="thunderbrowser"||t==="thunderx"||t.includes("thunder")||t.includes("xunlei")){let n=ye(e);i=new $u(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunder] failed to persist token:",o)}}),await i.init?.()}else if(t==="lanzou"||t==="lanzoupan"||t==="ilanzou"||t==="lanzoui"||t==="lanzous"){let n=ye(e);i=new Bp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Lanzou] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="189tv"||t==="cloud189tv"||t==="189tvcloud"||t==="189_tv"){let n=ye(e);i=new Qp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[189TV] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="189"||t==="189cloud"||t==="cloud189"||t==="ctyun"||t==="189pan"||t==="189cloudpc"||t==="189cloudapp"||t.startsWith("189")||t.includes("cloud189")){let n=ye(e);i=new Sp(n),await i.init?.()}else if(t==="webdav"||t==="webdavdriver"){let n=ye(e);i=new Fp(n),await i.init?.()}else if(t==="s3"||t==="doge"||t==="dogecloud"||t==="minio"||t==="ceph"||t==="aws"||t==="r2"||t==="b2"||t==="cos"||t==="oss"||t==="kodo"){let n=ye(e);i=new Gp(n,e.driver||"S3"),await i.init?.()}else if(t==="wopan"||t==="unicom"||t==="unicomcloud"||t==="woyun"||t==="chinaunicom"){let n=ye(e);i=new Np(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,l.refresh_token=o,c.addition=JSON.stringify($C(l)),await fe(a)}catch(a){console.warn("[WoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="weiyun"||t==="tencentweiyun"||t==="txweiyun"||t.includes("weiyun")){let n=ye(e);i=new $p(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookies=s,a.addition=JSON.stringify(iE(c)),await fe(o)}catch(o){console.warn("[WeiYun] failed to persist cookies:",o)}}),await i.init?.()}else if(t==="pikpak"||t==="pikpakshare"||t.includes("pikpak")){let n=ye(e);i=new Yp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,s.captchaToken&&(c.captcha_token=s.captchaToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[PikPak] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="seafile"||t.includes("seafile")){let n=ye(e);i=new Xp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Seafile] failed to persist token:",o)}}),await i.init?.()}else if(t==="yandex"||t==="yandexdisk"||t==="yandexdrive"||t.includes("yandex")){let n=ye(e);i=new em(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Yandex] failed to persist token:",o)}}),await i.init?.()}else if(t==="terabox"||t==="dubox"||t.includes("terabox")){let n=ye(e);i=new rm(n),await i.init?.()}else if(t==="mediatrack"||t==="fenmiao"||t.includes("mediatrack")){let n=ye(e);i=new nm(n),await i.init?.()}else if(t==="alias"||t.includes("alias")){let n=ye(e);i=new sm(n),await i.init?.()}else if(t==="dropbox"||t.includes("dropbox")){let n=ye(e);i=new am(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.accessToken,c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Dropbox] failed to persist token:",o)}}),await i.init?.()}else if(t==="wps"||t.includes("wps")||t.includes("kdocs")){let n=ye(e);i=new lm(n),await i.init?.()}else if(t==="mopan"||t==="mobilecloud"||t==="cmcc"||t==="chinamobile"||t.includes("mopan")){let n=ye(e);i=new Mp(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(u=>u.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.device_info=s;let d=o.replace(/^Bearer\s+/i,"");l.token=d,c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[MoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="139"||t==="139yun"||t==="caiyun"||t==="hecaiyun"||t.includes("139")){let n=ye(e);i=new um(n),await i.init?.()}else if(t==="mega"||t==="meganz"||t.includes("mega")){let n=ye(e);i=new Am(n),await i.init?.()}else if(t==="115share"||t==="115sharelink"||t.includes("115")&&t.includes("share")){let n=ye(e);i=new gm(n),await i.init?.()}else if(t==="123share"||t==="123panshare"||t==="123link"||t.includes("123")&&t.includes("share")){let n=ye(e);i=new mm(n),await i.init?.()}else if(t==="aliyundriveshare"||t==="aliyunshare"||t==="alishare"||t.includes("ali")&&t.includes("share")){let n=ye(e);i=new Im(n),await i.init?.()}else if(t==="onedrivesharelink"||t==="onedriveshare"||t==="sharepointshare"||t.includes("onedrive")&&t.includes("share")){let n=ye(e);i=new xm(n),await i.init?.()}else if(t==="pikpakshare"||t.includes("pikpak")&&t.includes("share")){let n=ye(e);i=new Em(n),await i.init?.()}else if(t==="smb"||t==="samba"||t==="cifs"||t.includes("smb")){let n=ye(e);i=new Bm(n),await i.init?.()}else if(t==="crypt"){let n=ye(e);i=new Sm(n),await i.init?.()}else if(t==="virtual"){let n=ye(e);i=new Dm(n)}else if(t==="alistv3"||t==="alist"||t==="alistv2"){let n=ye(e);i=new Qm(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[alist_v3] failed to persist token:",o)}}),await i.init?.()}else if(t==="urltree"||t==="urlstree"){let n=ye(e);i=new _m(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.url_structure=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[url_tree] failed to persist structure:",o)}}),await i.init?.()}else if(t==="strm"){let n=ye(e);i=new Fm(n),await i.init?.()}else if(t==="chunk"){let n=ye(e);i=new Pm(n),await i.init?.()}else if(t==="azureblob"||t==="azure"||t==="azblob"){let n=ye(e);i=new Tm(n),await i.init?.()}else if(t==="uss"||t==="upyun"){let n=ye(e);i=new Um(n),await i.init?.()}else if(t==="autoindex"||t==="nginxautoindex"){let n=ye(e);i=new uy(n),await i.init?.()}else if(t==="protondrive"||t==="proton"){let n=ye(e);i=new KI(n),await i.init?.()}else if(t==="alidoc"||t==="dingtalkdoc"){let n=ye(e);i=new Nm(n),await i.init?.()}else if(t==="emby"||t==="jellyfin"){let n=ye(e);i=new Om(n),await i.init?.()}else if(t==="bunnystorage"||t==="bunnycdn"||t==="bunny"){let n=ye(e);i=new Hm(n),await i.init?.()}else if(t==="cloudflareimgbed"||t==="cfimgbed"||t==="cloudflareimage"){let n=ye(e);i=new zm(n),await i.init?.()}else if(t==="guangyapan"||t==="guangya"){let n=ye(e);i=new Jm(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,o&&(l.refresh_token=o),c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[GuangYaPan] failed to persist tokens:",a)}}),await i.init?.()}else throw new Error("failed get driver: unsupported driver '"+r+"'");return i}async function lt(r,e){if((r||"").toLowerCase().replace(/[^a-z0-9]/g,"")==="local")return hR(r,e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i=`${e.id}_${e.modified}`,n=qd.get(i);return n||gR(gre,i,async()=>{let s=qd.get(i);if(s)return s;let o=await hR(r,e);return mre(i,o),o})}function yre(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="189"||e==="189cloud"||e==="cloud189"||e==="ctyun"||e==="189pan"}async function pR(r,e){if(r)try{r(e);return}catch{}await e}async function Ire(r,e){let t=String(r?.id||"");if(!t)return;let n=(GI.get(t)||Promise.resolve()).catch(()=>{}).then(async()=>{let s=await ne(),o=(s.storages||[]).find(c=>String(c.id)===t);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.cookies!==void 0||mR(r?.driver)?a.cookies=e:a.cookie=e,o.addition=JSON.stringify(a),String(r?.id)===t&&(r.addition=o.addition),await fe(s)});GI.set(t,n);try{await n}finally{GI.get(t)===n&&GI.delete(t)}}function mR(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="weiyun"||e==="tencentweiyun"||e==="txweiyun"||e.includes("weiyun")}async function Jt(r,e,t,i){if(!yre(r)&&!mR(r))return;let s=t.consumePendingCookie?.call(t);if(!s)return;let o=Ire(e,s).catch(a=>{console.warn(`[${r}] failed to persist cookie:`,a)});await pR(i?.waitUntil,o)}async function Zt(r,e){let t=await tt(r,e?.env),i=[],n="Virtual";if(t.storage){n=t.storage.driver;try{let c=await lt(n,t.storage);try{i=await c.list(r,t.physical)}finally{await Jt(n,t.storage,c,e)}if(t.storage.status!=="work"){t.storage.status="work";let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status="work",await fe(l,e?.env))}}catch(c){try{let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status=c.message||String(c),await fe(l,e?.env))}catch(l){console.warn("Failed to persist storage status:",l)}throw c}}else if(!t.isVirtual)throw new Error("failed get storage: storage not found");let o=((await ne(e?.env)).storages||[]).filter(c=>!c.disabled),a=t.cleanPath;return o.forEach(c=>{let l="/"+(c.mount_path||"").split("/").filter(Boolean).join("/");if(l===a||l==="/")return;let d=a==="/"?"/":a+"/";if(l.startsWith(d)){let u=l.slice(d.length).split("/").filter(Boolean)[0];u&&!i.some(f=>f.name===u)&&i.push({name:u,size:0,is_dir:!0,modified:c.modified||new Date().toISOString(),sign:"",type:1})}}),i.forEach(c=>{c.type||(c.type=X(c.name,c.is_dir))}),{content:i,provider:n,storage:t.storage}}async function Di(r,e){let t=await tt(r,e?.env);if(t.isVirtual)return{item:{name:t.cleanPath.split("/").filter(Boolean).pop()||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1},provider:"Virtual",rawUrl:""};if(t.storage&&t.relative==="/"){let o=t.cleanPath.split("/").filter(Boolean).pop()||"root",a=ye(t.storage);return{item:{name:o,size:0,is_dir:!0,modified:t.storage.modified||new Date().toISOString(),sign:String(a.root_folder_id||""),type:1,raw_url:""},provider:t.storage.driver,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}let i=t.storage?t.storage.driver:"Local",n=await lt(i,t.storage),s;try{s=await n.get(r,t.physical)}finally{await Jt(i,t.storage,n,e)}return s.type||(s.type=X(s.name,s.is_dir)),{item:s,provider:i,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}async function xA(r,e){let t=await tt(r,e?.env);if(t.isVirtual)throw new Error("failed get storage: storage not found");let i=await lt(t.storage.driver,t.storage);try{await i.mkdir(r,t.physical)}finally{await Jt(t.storage.driver,t.storage,i,e)}}async function CA(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.rename(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}async function ka(r,e,t){for(let i of e){let n=`${r}/${i}`,s=await tt(n,t?.env);if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);try{await o.remove(n,s.physical,[i])}finally{await Jt(s.storage.driver,s.storage,o,t)}}}async function Od(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.move(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function EA(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.copy(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function Tn(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.put(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}var O1,qd,gre,GI,pre,Yt=j(()=>{"use strict";Ve();Be();JS();eD();nD();dD();gD();wD();ED();vD();SD();FD();UD();ND();OD();LD();KD();zD();jD();VD();ZD();r3();s3();c3();d3();p3();I3();C3();b3();N3();$3();eQ();oQ();fQ();pQ();IQ();N_();K_();Z_();s8();l8();Q8();H8();Y8();s4();c4();d4();f4();h4();p4();m4();I4();C4();B4();v4();S4();_4();P4();U4();N4();q4();H4();K4();G4();J4();Y4();W4();eF();tF();nF();aF();AF();yF();vF();KP();aR();O1=null;qd=new Map,gre=new Map,GI=new Map,pre=100});var IR,wre,xre,Cre,Ere,yR,zI,M1,wR=j(()=>{$a();IR={name:"HMAC",hash:"SHA-256"},wre=async r=>{let e=typeof r=="string"?new TextEncoder().encode(r):r;return await crypto.subtle.importKey("raw",e,IR,!1,["sign","verify"])},xre=async(r,e,t)=>{try{let i=atob(r),n=new Uint8Array(i.length);for(let s=0,o=i.length;s<o;s++)n[s]=i.charCodeAt(s);return await crypto.subtle.verify(IR,t,n,new TextEncoder().encode(e))}catch{return!1}},Cre=/^[!#-:<>-[\]-~]+$/,Ere=/^[ !#-:<-[\]-~]*$/,yR=r=>{let e=0,t=r.length;for(;e<t;){let i=r.charCodeAt(e);if(i!==32&&i!==9)break;e++}for(;t>e;){let i=r.charCodeAt(t-1);if(i!==32&&i!==9)break;t--}return e===0&&t===r.length?r:r.slice(e,t)},zI=(r,e)=>{if(e&&r.indexOf(e)===-1)return{};let t=r.split(";"),i=Object.create(null);for(let n of t){let s=n.indexOf("=");if(s===-1)continue;let o=yR(n.substring(0,s));if(e&&e!==o||!Cre.test(o)||o in i)continue;let a=yR(n.substring(s+1));if(a.startsWith('"')&&a.endsWith('"')&&(a=a.slice(1,-1)),Ere.test(a)&&(i[o]=yl(a),e))break}return i},M1=async(r,e,t)=>{let i=Object.create(null),n=await wre(e);for(let[s,o]of Object.entries(zI(r,t))){let a=o.lastIndexOf(".");if(a<1)continue;let c=o.substring(0,a),l=o.substring(a+1);if(l.length!==44||!l.endsWith("="))continue;let d=await xre(l,c,n);i[s]=d?c:!1}return i}});var JI,L1,xR=j(()=>{wR();JI=(r,e,t)=>{let i=r.req.raw.headers.get("Cookie");if(typeof e=="string"){if(!i)return;let s=e;return t==="secure"?s="__Secure-"+e:t==="host"&&(s="__Host-"+e),zI(i,s)[s]}return i?zI(i):{}},L1=async(r,e,t,i)=>{let n=r.req.raw.headers.get("Cookie");if(typeof t=="string"){if(!n)return;let o=t;return i==="secure"?o="__Secure-"+t:i==="host"&&(o="__Host-"+t),(await M1(n,e,o))[o]}return n?await M1(n,e):{}}});var H1,K1,Bre,G1,z1=j(()=>{H1=r=>G1(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),K1=r=>Bre(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),Bre=r=>{let e="",t=new Uint8Array(r);for(let i=0,n=t.length;i<n;i++)e+=String.fromCharCode(t[i]);return btoa(e)},G1=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),i=e.length/2;for(let n=0,s=e.length-1;n<=i;n++,s--)t[n]=e.charCodeAt(n),t[s]=e.charCodeAt(s);return t}});var Sa,J1=j(()=>{Sa=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(Sa||{})});var bre,CR,vre,ER=j(()=>{bre={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},CR=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,i]of Object.entries(bre))if(vre(i))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},vre=r=>navigator.userAgent.startsWith(r)});var BR,j1,$1,jc,bR,vR,kR,jI,V1,SR,DR,QR,_R,FR,PR,Ld,Y1=j(()=>{BR=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented"}},j1=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired"}},$1=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch"}},jc=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid"}},bR=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore"}},vR=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired"}},kR=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt"}},jI=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer"}},V1=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid"}},SR=class extends Error{constructor(r){super(`required "kid" in jwt header: ${JSON.stringify(r)}`),this.name="JwtHeaderRequiresKid"}},DR=class extends Error{constructor(r){super(`symmetric algorithm "${r}" is not allowed for JWK verification`),this.name="JwtSymmetricAlgorithmNotAllowed"}},QR=class extends Error{constructor(r,e){super(`algorithm "${r}" is not in the allowed list: [${e.join(", ")}]`),this.name="JwtAlgorithmNotAllowed"}},_R=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched"}},FR=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud"}},PR=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience"}},Ld=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(Ld||{})});var $c,TR,W1=j(()=>{$c=new TextEncoder,TR=new TextDecoder});async function RR(r,e,t){let i=qR(e),n=await kre(r,i);return await crypto.subtle.sign(i,n,t)}async function NR(r,e,t,i){let n=qR(e),s=await Sre(r,n);return await crypto.subtle.verify(n,s,t,i)}function X1(r){return G1(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function kre(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OR(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[Ld.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",X1(r),e,!1,t):await crypto.subtle.importKey("raw",$c.encode(r),e,!1,t)}async function Sre(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OR(r)){if(r.type==="public"||r.type==="secret")return r;r=await UR(r)}if(typeof r=="string"&&r.includes("PRIVATE")){let i=await crypto.subtle.importKey("pkcs8",X1(r),e,!0,[Ld.Sign]);r=await UR(i)}let t=[Ld.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",X1(r),e,!1,t):await crypto.subtle.importKey("raw",$c.encode(r),e,!1,t)}async function UR(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:i,e:n,n:s}=e,{crv:o,x:a,y:c}=e;return{kty:t,alg:i,e:n,n:s,crv:o,x:a,y:c,key_ops:[Ld.Verify]}}function qR(r){switch(r){case"HS256":return{name:"HMAC",hash:{name:"SHA-256"}};case"HS384":return{name:"HMAC",hash:{name:"SHA-384"}};case"HS512":return{name:"HMAC",hash:{name:"SHA-512"}};case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"RS384":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"RS512":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"PS256":return{name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case"PS384":return{name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case"PS512":return{name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case"ES256":return{name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case"ES384":return{name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case"ES512":return{name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case"EdDSA":return{name:"Ed25519",namedCurve:"Ed25519"};default:throw new BR(r)}}function OR(r){return CR()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var MR=j(()=>{ER();z1();Y1();W1()});function LR(r){if(typeof r=="object"&&r!==null){let e=r;return"alg"in e&&Object.values(Sa).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return!1}var Z1,Dre,e2,HR,t2,Qre,KR,r2,_re,GR=j(()=>{z1();J1();MR();Y1();W1();Z1=r=>K1($c.encode(JSON.stringify(r)).buffer).replace(/=/g,""),Dre=r=>K1(r).replace(/=/g,""),e2=r=>JSON.parse(TR.decode(H1(r)));HR=async(r,e,t="HS256")=>{let i=Z1(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=Z1({alg:t,typ:"JWT",kid:e.kid})):n=Z1({alg:t,typ:"JWT"});let s=`${n}.${i}`,o=await RR(e,t,$c.encode(s)),a=Dre(o);return`${s}.${a}`},t2=async(r,e,t)=>{if(!t)throw new j1;let{alg:i,iss:n,nbf:s=!0,exp:o=!0,iat:a=!0,aud:c}=typeof t=="string"?{alg:t}:t;if(!i)throw new j1;let l=r.split(".");if(l.length!==3)throw new jc(r);let{header:d,payload:u}=r2(r);if(!LR(d))throw new V1(d);if(d.alg!==i)throw new $1(i,d.alg);let f=Math.floor(Date.now()/1e3);if(s&&u.nbf!==void 0&&(typeof u.nbf!="number"||!Number.isFinite(u.nbf)||u.nbf>f))throw new bR(r);if(o&&u.exp!==void 0&&(typeof u.exp!="number"||!Number.isFinite(u.exp)||u.exp<=f))throw new vR(r);if(a&&u.iat!==void 0&&(typeof u.iat!="number"||!Number.isFinite(u.iat)||f<u.iat))throw new kR(f,u.iat);if(n){if(!u.iss)throw new jI(n,null);if(typeof n=="string"&&u.iss!==n)throw new jI(n,u.iss);if(n instanceof RegExp&&!n.test(u.iss))throw new jI(n,u.iss)}if(c){if(!u.aud)throw new FR(u);if(!(Array.isArray(u.aud)?u.aud:[u.aud]).some(y=>c instanceof RegExp?c.test(y):typeof c=="string"?y===c:Array.isArray(c)&&c.includes(y)))throw new PR(c,u.aud)}let h=r.substring(0,r.lastIndexOf("."));if(!await NR(e,i,H1(l[2]),$c.encode(h)))throw new _R(r);return u},Qre=[Sa.HS256,Sa.HS384,Sa.HS512],KR=async(r,e,t)=>{let i=e.verification||{},n=_re(r);if(!LR(n))throw new V1(n);if(!n.kid)throw new SR(n);if(Qre.includes(n.alg))throw new DR(n.alg);if(!e.allowedAlgorithms.includes(n.alg))throw new QR(n.alg,e.allowedAlgorithms);let s=e.keys?[...e.keys]:void 0;if(e.jwks_uri){let a=await fetch(e.jwks_uri,t);if(!a.ok)throw new Error(`failed to fetch JWKS from ${e.jwks_uri}`);let c=await a.json();if(!c.keys)throw new Error('invalid JWKS response. "keys" field is missing');if(!Array.isArray(c.keys))throw new Error('invalid JWKS response. "keys" field is not an array');s??=[],s.push(...c.keys)}else if(!s)throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');let o=s.find(a=>a.kid===n.kid);if(!o)throw new jc(r);if(o.alg&&o.alg!==n.alg)throw new $1(o.alg,n.alg);return await t2(r,o,{alg:n.alg,...i})},r2=r=>{let e=r.split(".");if(e.length!==3)throw new jc(r);try{let t=e2(e[0]),i=e2(e[1]);return{header:t,payload:i}}catch{throw new jc(r)}},_re=r=>{let e=r.split(".");if(e.length!==3)throw new jc(r);try{return e2(e[0])}catch{throw new jc(r)}}});var Hd,zR=j(()=>{GR();Hd={sign:HR,verify:t2,decode:r2,verifyWithJwks:KR}});function i2(r){let e=(r.realm??r.ctx.req.url).replace(/"/g,'\\"'),t=r.errDescription.replace(/"/g,'\\"');return new Response("Unauthorized",{status:401,statusText:r.statusText,headers:{"WWW-Authenticate":`Bearer realm="${e}",error="${r.error}",error_description="${t}"`}})}var JR,jR,uo,$R,fo,VR=j(()=>{xR();ax();zR();R0();JR=r=>{let e=r.verification||{};if(!r||!r.secret)throw new Error('JWT auth middleware requires options for "secret"');if(!r.alg)throw new Error('JWT auth middleware requires options for "alg"');if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");return async function(i,n){let s=r.headerName||"Authorization",o=i.req.raw.headers.get(s),a;if(o){let d=o.split(/\s+/);if(d.length!==2||d[0].toLowerCase()!=="bearer"){let u="invalid credentials structure";throw new xu(401,{message:u,res:i2({ctx:i,error:"invalid_request",errDescription:u,realm:r.realm})})}else a=d[1]}else r.cookie&&(typeof r.cookie=="string"?a=JI(i,r.cookie):r.cookie.secret?r.cookie.prefixOptions?a=await L1(i,r.cookie.secret,r.cookie.key,r.cookie.prefixOptions):a=await L1(i,r.cookie.secret,r.cookie.key):r.cookie.prefixOptions?a=JI(i,r.cookie.key,r.cookie.prefixOptions):a=JI(i,r.cookie.key));if(!a){let d="no authorization included in request";throw new xu(401,{message:d,res:i2({ctx:i,error:"invalid_request",errDescription:d,realm:r.realm})})}let c,l;try{c=await Hd.verify(a,r.secret,{alg:r.alg,...e})}catch(d){l=d}if(!c)throw new xu(401,{message:"Unauthorized",res:i2({ctx:i,error:"invalid_token",statusText:"Unauthorized",errDescription:"token verification failure",realm:r.realm}),cause:l});i.set("jwtPayload",c),await n()}};jR=Hd.verifyWithJwks,uo=Hd.verify,$R=Hd.decode,fo=Hd.sign});var $I={};xn($I,{AlgorithmTypes:()=>Sa,decode:()=>$R,jwt:()=>JR,sign:()=>fo,verify:()=>uo,verifyWithJwks:()=>jR});var Ao=j(()=>{VR();J1()});function YR(r,e){let t=`<?xml version="1.0" encoding="utf-8" ?> +`)},wrapError:function(r,e){if(!e)return r instanceof Error?r:new Error(r);if(r instanceof Error){try{r.message+=": "+e.message,r.cause=e}catch{}return r}return new Error(r+": "+e.message,{cause:e})},constructAllowedPackets:function(r){let e={};return r.forEach(t=>{if(!t.tag)throw new Error("Invalid input: expected a packet class");e[t.tag]=t}),e},anyPromise:function(r){return new Promise((e,t)=>{let i;Promise.all(r.map(async n=>{try{e(await n)}catch(s){i=s}})).then(()=>{t(i)})})},selectUint8Array:function(r,e,t){let i=Math.max(e.length,t.length),n=new Uint8Array(i),s=0;for(let a=0;a<n.length;a++)n[a]=e[a]&256-r|t[a]&255+r,s+=r&a<e.length|1-r&a<t.length;return n.subarray(0,s)},selectUint8:function(r,e,t){return e&256-r|t&255+r},isAES:function(r){return r===y.symmetric.aes128||r===y.symmetric.aes192||r===y.symmetric.aes256}},O1=F.getNodeBuffer();O1?(yw=r=>O1.from(r).toString("base64"),Iw=r=>{let e=O1.from(r,"base64");return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}):(yw=r=>btoa(F.uint8ArrayToString(r)),Iw=r=>F.stringToUint8Array(atob(r)));Nr=[new Array(255),new Array(255),new Array(255),new Array(255)];for(let r=0;r<=255;r++){let e=r<<16;for(let t=0;t<8;t++)e=e<<1^((e&8388608)!==0?8801531:0);Nr[0][r]=(e&16711680)>>16|e&65280|(e&255)<<16}for(let r=0;r<=255;r++)Nr[1][r]=Nr[0][r]>>8^Nr[0][Nr[0][r]&255];for(let r=0;r<=255;r++)Nr[2][r]=Nr[1][r]>>8^Nr[0][Nr[1][r]&255];for(let r=0;r<=255;r++)Nr[3][r]=Nr[2][r]>>8^Nr[0][Nr[2][r]&255];BZ=(function(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,255,!0),new Int16Array(r)[0]===255})();Ni=BigInt(0),Eu=BigInt(1);QZ=F.getNodeCrypto();Qs=BigInt(1);TZ=[7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999].map(r=>BigInt(r));fU=F.getWebCrypto(),ww=F.getNodeCrypto(),RZ=ww&&ww.getHashes();NZ=Na("md5")||Oa("md5"),OZ=Na("sha1")||Oa("sha1","SHA-1"),qZ=Na("sha224")||Oa("sha224"),MZ=Na("sha256")||Oa("sha256","SHA-256"),LZ=Na("sha384")||Oa("sha384","SHA-384"),HZ=Na("sha512")||Oa("sha512","SHA-512"),KZ=Na("ripemd160")||Oa("ripemd160"),GZ=Na("sha3-256")||Oa("sha3_256"),zZ=Na("sha3-512")||Oa("sha3_512");Cn=[];Cn[1]=[48,32,48,12,6,8,42,134,72,134,247,13,2,5,5,0,4,16];Cn[2]=[48,33,48,9,6,5,43,14,3,2,26,5,0,4,20];Cn[3]=[48,33,48,9,6,5,43,36,3,2,1,5,0,4,20];Cn[8]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,1,5,0,4,32];Cn[9]=[48,65,48,13,6,9,96,134,72,1,101,3,4,2,2,5,0,4,48];Cn[10]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,3,5,0,4,64];Cn[11]=[48,45,48,13,6,9,96,134,72,1,101,3,4,2,4,5,0,4,28];Cn[12]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,8,5,0,4,32];Cn[14]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,10,5,0,4,64];Qu=F.getWebCrypto(),vl=F.getNodeCrypto(),ac=BigInt(1);tc=BigInt(1);fee={"2a8648ce3d030107":y.curve.nistP256,"2b81040022":y.curve.nistP384,"2b81040023":y.curve.nistP521,"2b8104000a":y.curve.secp256k1,"2b06010401da470f01":y.curve.ed25519Legacy,"2b060104019755010501":y.curve.curve25519Legacy,"2b2403030208010107":y.curve.brainpoolP256r1,"2b240303020801010b":y.curve.brainpoolP384r1,"2b240303020801010d":y.curve.brainpoolP512r1},Pa=class r{constructor(e){if(e instanceof r)this.oid=e.oid;else if(F.isArray(e)||F.isUint8Array(e)){if(e=new Uint8Array(e),e[0]===6){if(e[1]!==e.length-2)throw new Error("Length mismatch in DER encoded oid");e=e.subarray(2)}this.oid=e}else this.oid=""}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.oid=e.subarray(1,1+t),1+this.oid.length}throw new Error("Invalid oid")}write(){return F.concatUint8Array([new Uint8Array([this.oid.length]),this.oid])}toHex(){return F.uint8ArrayToHex(this.oid)}getName(){let e=fee[this.toHex()];if(!e)throw new Error("Unknown curve object identifier.");return e}};Ct=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="UnsupportedError"}},Bu=class extends Ct{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,Ct),this.name="UnknownPacketError"}},dA=class extends Ct{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,Ct),this.name="MalformedPacketError"}},hA=class{constructor(e,t){this.tag=e,this.rawContent=t}write(){return this.rawContent}};s2=(r,e)=>{if(r===y.publicKey.ed25519)return{kty:"OKP",crv:"Ed25519",x:zr(e),ext:!0};throw new Error("Unsupported EdDSA algorithm")},MR=(r,e,t)=>{if(r===y.publicKey.ed25519){let i=s2(r,e);return i.d=zr(t),i}else throw new Error("Unsupported EdDSA algorithm")},gee=Object.freeze({__proto__:null,generate:t2,getPayloadSize:sx,getPreferredHashAlgo:ax,sign:r2,validateParams:n2,verify:i2});pee=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;TA=(r,e)=>{function t(i,...n){if(Nt(i),!pee)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let d=n[0];if(!d)throw new Error("nonce / iv required");r.varSizeNonce?Nt(d):Nt(d,r.nonceLength)}let s=r.tagLength;s&&n[1]!==void 0&&Nt(n[1]);let a=e(i,...n),o=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");Nt(u)}},c=!1;return{encrypt(d,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,Nt(d),o(a.encrypt.length,u),a.encrypt(d,u)},decrypt(d,u){if(Nt(d),s&&d.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return o(a.decrypt.length,u),a.decrypt(d,u)}}}return Object.assign(t,r),t};Da=16,c2=new Uint8Array(16),ks=Pt(c2),wee=225,xee=(r,e,t,i)=>{let n=i&1;return{s3:t<<31|i>>>1,s2:e<<31|t>>>1,s1:r<<31|e>>>1,s0:r>>>1^wee<<24&-(n&1)}},xn=r=>(r>>>0&255)<<24|(r>>>8&255)<<16|(r>>>16&255)<<8|r>>>24&255|0;Eee=r=>r>64*1024?8:r>1024?4:2,Ew=class{constructor(e,t){this.blockLen=Da,this.outputLen=Da,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,e=AA(e),Nt(e,16);let i=ox(e),n=i.getUint32(0,!1),s=i.getUint32(4,!1),a=i.getUint32(8,!1),o=i.getUint32(12,!1),c=[];for(let g=0;g<128;g++)c.push({s0:xn(n),s1:xn(s),s2:xn(a),s3:xn(o)}),{s0:n,s1:s,s2:a,s3:o}=xee(n,s,a,o);let l=Eee(t||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let u=128/l,f=this.windowSize=2**l,A=[];for(let g=0;g<u;g++)for(let p=0;p<f;p++){let I=0,m=0,w=0,B=0;for(let C=0;C<l;C++){if(!(p>>>l-C-1&1))continue;let{s0:_,s1:R,s2:U,s3:T}=c[l*g+C];I^=_,m^=R,w^=U,B^=T}A.push({s0:I,s1:m,s2:w,s3:B})}this.t=A}_updateBlock(e,t,i,n){e^=this.s0,t^=this.s1,i^=this.s2,n^=this.s3;let{W:s,t:a,windowSize:o}=this,c=0,l=0,d=0,u=0,f=(1<<s)-1,A=0;for(let g of[e,t,i,n])for(let p=0;p<4;p++){let I=g>>>8*p&255;for(let m=8/s-1;m>=0;m--){let w=I>>>s*m&f,{s0:B,s1:C,s2:x,s3:_}=a[A*o+w];c^=B,l^=C,d^=x,u^=_,A+=1}}this.s0=c,this.s1=l,this.s2=d,this.s3=u}update(e){Cw(this),e=AA(e),Nt(e);let t=Pt(e),i=Math.floor(e.length/Da),n=e.length%Da;for(let s=0;s<i;s++)this._updateBlock(t[s*4+0],t[s*4+1],t[s*4+2],t[s*4+3]);return n&&(c2.set(e.subarray(i*Da)),this._updateBlock(ks[0],ks[1],ks[2],ks[3]),ui(ks)),this}destroy(){let{t:e}=this;for(let t of e)t.s0=0,t.s1=0,t.s2=0,t.s3=0}digestInto(e){Cw(this),HR(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,a=Pt(e);return a[0]=t,a[1]=i,a[2]=n,a[3]=s,e}digest(){let e=new Uint8Array(Da);return this.digestInto(e),this.destroy(),e}},yb=class extends Ew{constructor(e,t){e=AA(e),Nt(e);let i=Cee(qi(e));super(i,t),ui(i)}update(e){e=AA(e),Cw(this);let t=Pt(e),i=e.length%Da,n=Math.floor(e.length/Da);for(let s=0;s<n;s++)this._updateBlock(xn(t[s*4+3]),xn(t[s*4+2]),xn(t[s*4+1]),xn(t[s*4+0]));return i&&(c2.set(e.subarray(n*Da)),this._updateBlock(xn(ks[3]),xn(ks[2]),xn(ks[1]),xn(ks[0])),ui(ks)),this}digestInto(e){Cw(this),HR(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,a=Pt(e);return a[0]=t,a[1]=i,a[2]=n,a[3]=s,e.reverse()}};gU=zR((r,e)=>new Ew(r,e));zR((r,e)=>new yb(r,e));Mi=16,l2=4,YI=new Uint8Array(Mi),Bee=283;Ib=(()=>{let r=new Uint8Array(256);for(let t=0,i=1;t<256;t++,i^=d2(i))r[t]=i;let e=new Uint8Array(256);e[0]=99;for(let t=0;t<255;t++){let i=r[255-t];i|=i<<8,e[r[t]]=(i^i>>4^i>>5^i>>6^i>>7^99)&255}return ui(r),e})(),bee=Ib.map((r,e)=>Ib.indexOf(e)),vee=r=>r<<24|r>>>8,q1=r=>r<<8|r>>>24,pU=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;u2=JR(Ib,r=>Iu(r,3)<<24|r<<16|r<<8|Iu(r,2)),jR=JR(bee,r=>Iu(r,11)<<24|Iu(r,13)<<16|Iu(r,9)<<8|Iu(r,14)),kee=(()=>{let r=new Uint8Array(16);for(let e=0,t=1;e<16;e++,t=d2(t))r[e]=t;return r})();See=TA({blockSize:16,nonceLength:16},function(e,t){function i(n,s){if(Nt(n),s!==void 0&&(Nt(s),!En(s)))throw new Error("unaligned destination");let a=Pl(e),o=qi(t),c=[a,o];En(n)||c.push(n=qi(n));let l=$R(a,o,n,s);return ui(...c),l}return{encrypt:(n,s)=>i(n,s),decrypt:(n,s)=>i(n,s)}});wb=TA({blockSize:16,nonceLength:16},function(e,t,i={}){let n=!i.disablePadding;return{encrypt(s,a){let o=Pl(e),{b:c,o:l,out:d}=_ee(s,n,a),u=t,f=[o];En(u)||f.push(u=qi(u));let A=Pt(u),g=A[0],p=A[1],I=A[2],m=A[3],w=0;for(;w+4<=c.length;)g^=c[w+0],p^=c[w+1],I^=c[w+2],m^=c[w+3],{s0:g,s1:p,s2:I,s3:m}=Zn(o,g,p,I,m),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=m;if(n){let B=Fee(s.subarray(w*4));g^=B[0],p^=B[1],I^=B[2],m^=B[3],{s0:g,s1:p,s2:I,s3:m}=Zn(o,g,p,I,m),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=m}return ui(...f),d},decrypt(s,a){Dee(s);let o=f2(e),c=t,l=[o];En(c)||l.push(c=qi(c));let d=Pt(c);a=UA(s.length,a),En(s)||l.push(s=qi(s)),o2(s,a);let u=Pt(s),f=Pt(a),A=d[0],g=d[1],p=d[2],I=d[3];for(let m=0;m+4<=u.length;){let w=A,B=g,C=p,x=I;A=u[m+0],g=u[m+1],p=u[m+2],I=u[m+3];let{s0:_,s1:R,s2:U,s3:T}=cx(o,A,g,p,I);f[m++]=_^w,f[m++]=R^B,f[m++]=U^C,f[m++]=T^x}return ui(...l),Qee(a,n)}}}),VR=TA({blockSize:16,nonceLength:16},function(e,t){function i(n,s,a){Nt(n);let o=n.length;if(a=UA(o,a),KR(n,a))throw new Error("overlapping src and dst not supported.");let c=Pl(e),l=t,d=[c];En(l)||d.push(l=qi(l)),En(n)||d.push(n=qi(n));let u=Pt(n),f=Pt(a),A=s?f:u,g=Pt(l),p=g[0],I=g[1],m=g[2],w=g[3];for(let C=0;C+4<=u.length;){let{s0:x,s1:_,s2:R,s3:U}=Zn(c,p,I,m,w);f[C+0]=u[C+0]^x,f[C+1]=u[C+1]^_,f[C+2]=u[C+2]^R,f[C+3]=u[C+3]^U,p=A[C++],I=A[C++],m=A[C++],w=A[C++]}let B=Mi*Math.floor(u.length/l2);if(B<o){({s0:p,s1:I,s2:m,s3:w}=Zn(c,p,I,m,w));let C=a2(new Uint32Array([p,I,m,w]));for(let x=B,_=0;x<o;x++,_++)a[x]=n[x]^C[_];ui(C)}return ui(...d),a}return{encrypt:(n,s)=>i(n,!0,s),decrypt:(n,s)=>i(n,!1,s)}});WI=TA({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,t,i){if(t.length<8)throw new Error("aes/gcm: invalid nonce length");let n=16;function s(o,c,l){let d=Pee(gU,!1,o,l,i);for(let u=0;u<c.length;u++)d[u]^=c[u];return d}function a(){let o=Pl(e),c=YI.slice(),l=YI.slice();if(oA(o,!1,l,l,c),t.length===12)l.set(t);else{let u=YI.slice(),f=ox(u);mb(f,8,BigInt(t.length*8),!1);let A=gU.create(c).update(t).update(u);A.digestInto(l),A.destroy()}let d=oA(o,!1,l,YI);return{xk:o,authKey:c,counter:l,tagMask:d}}return{encrypt(o){let{xk:c,authKey:l,counter:d,tagMask:u}=a(),f=new Uint8Array(o.length+n),A=[c,l,d,u];En(o)||A.push(o=qi(o)),oA(c,!1,d,o,f.subarray(0,o.length));let g=s(l,u,f.subarray(0,f.length-n));return A.push(g),f.set(g,o.length),ui(...A),f},decrypt(o){let{xk:c,authKey:l,counter:d,tagMask:u}=a(),f=[c,l,u,d];En(o)||f.push(o=qi(o));let A=o.subarray(0,-n),g=o.subarray(-n),p=s(l,u,A);if(f.push(p),!GR(p,g))throw new Error("aes/gcm: invalid ghash tag");let I=oA(c,!1,d,A);return ui(...f),I}}});mU={encrypt(r,e){if(e.length>=2**32)throw new Error("plaintext should be less than 4gb");let t=Pl(r);if(e.length===16)WR(t,e);else{let i=Pt(e),n=i[0],s=i[1];for(let a=0,o=1;a<6;a++)for(let c=2;c<i.length;c+=2,o++){let{s0:l,s1:d,s2:u,s3:f}=Zn(t,n,s,i[c],i[c+1]);n=l,s=d^pU(o),i[c]=u,i[c+1]=f}i[0]=n,i[1]=s}t.fill(0)},decrypt(r,e){if(e.length-8>=2**32)throw new Error("ciphertext should be less than 4gb");let t=f2(r),i=e.length/8-1;if(i===1)XR(t,e);else{let n=Pt(e),s=n[0],a=n[1];for(let o=0,c=i*6;o<6;o++)for(let l=i*2;l>=1;l-=2,c--){a^=pU(c);let{s0:d,s1:u,s2:f,s3:A}=cx(t,s,a,n[l],n[l+1]);s=d,a=u,n[l]=f,n[l+1]=A}n[0]=s,n[1]=a}t.fill(0)}},yU=new Uint8Array(8).fill(166),ZR=TA({blockSize:8},r=>({encrypt(e){if(!e.length||e.length%8!==0)throw new Error("invalid plaintext length");if(e.length===8)throw new Error("8-byte keys not allowed in AESKW, use AESKWP instead");let t=yee(yU,e);return mU.encrypt(r,t),t},decrypt(e){if(e.length%8!==0||e.length<24)throw new Error("invalid ciphertext length");let t=qi(e);if(mU.decrypt(r,t),!GR(t.subarray(0,8),yU))throw new Error("integrity check failed");return t.subarray(0,8).fill(0),t.subarray(8)}})),IU={expandKeyLE:Pl,expandKeyDecLE:f2,encrypt:Zn,decrypt:cx,encryptBlock:WR,decryptBlock:XR,ctrCounter:$R,ctr32:oA};bu=F.getWebCrypto();Bw={x25519:F.encodeUTF8("OpenPGP X25519"),x448:F.encodeUTF8("OpenPGP X448")};Nee=Object.freeze({__proto__:null,decrypt:rN,encrypt:tN,generate:h2,generateEphemeralEncryptionMaterial:dx,getPayloadSize:lx,recomputeSharedSecret:ux,validateParams:A2}),M1=F.getWebCrypto(),vw=F.getNodeCrypto(),Fs={[y.curve.nistP256]:"P-256",[y.curve.nistP384]:"P-384",[y.curve.nistP521]:"P-521"},xa=vw?vw.getCurves():[],vs=vw?{[y.curve.secp256k1]:xa.includes("secp256k1")?"secp256k1":void 0,[y.curve.nistP256]:xa.includes("prime256v1")?"prime256v1":void 0,[y.curve.nistP384]:xa.includes("secp384r1")?"secp384r1":void 0,[y.curve.nistP521]:xa.includes("secp521r1")?"secp521r1":void 0,[y.curve.ed25519Legacy]:xa.includes("ED25519")?"ED25519":void 0,[y.curve.curve25519Legacy]:xa.includes("X25519")?"X25519":void 0,[y.curve.brainpoolP256r1]:xa.includes("brainpoolP256r1")?"brainpoolP256r1":void 0,[y.curve.brainpoolP384r1]:xa.includes("brainpoolP384r1")?"brainpoolP384r1":void 0,[y.curve.brainpoolP512r1]:xa.includes("brainpoolP512r1")?"brainpoolP512r1":void 0}:{},iN={[y.curve.nistP256]:{oid:[6,8,42,134,72,206,61,3,1,7],keyType:y.publicKey.ecdsa,hash:y.hash.sha256,cipher:y.symmetric.aes128,node:vs[y.curve.nistP256],web:Fs[y.curve.nistP256],payloadSize:32,sharedSize:256,wireFormatLeadingByte:4},[y.curve.nistP384]:{oid:[6,5,43,129,4,0,34],keyType:y.publicKey.ecdsa,hash:y.hash.sha384,cipher:y.symmetric.aes192,node:vs[y.curve.nistP384],web:Fs[y.curve.nistP384],payloadSize:48,sharedSize:384,wireFormatLeadingByte:4},[y.curve.nistP521]:{oid:[6,5,43,129,4,0,35],keyType:y.publicKey.ecdsa,hash:y.hash.sha512,cipher:y.symmetric.aes256,node:vs[y.curve.nistP521],web:Fs[y.curve.nistP521],payloadSize:66,sharedSize:528,wireFormatLeadingByte:4},[y.curve.secp256k1]:{oid:[6,5,43,129,4,0,10],keyType:y.publicKey.ecdsa,hash:y.hash.sha256,cipher:y.symmetric.aes128,node:vs[y.curve.secp256k1],payloadSize:32,wireFormatLeadingByte:4},[y.curve.ed25519Legacy]:{oid:[6,9,43,6,1,4,1,218,71,15,1],keyType:y.publicKey.eddsaLegacy,hash:y.hash.sha512,node:!1,payloadSize:32,wireFormatLeadingByte:64},[y.curve.curve25519Legacy]:{oid:[6,10,43,6,1,4,1,151,85,1,5,1],keyType:y.publicKey.ecdh,hash:y.hash.sha256,cipher:y.symmetric.aes128,node:!1,payloadSize:32,wireFormatLeadingByte:64},[y.curve.brainpoolP256r1]:{oid:[6,9,43,36,3,3,2,8,1,1,7],keyType:y.publicKey.ecdsa,hash:y.hash.sha256,cipher:y.symmetric.aes128,node:vs[y.curve.brainpoolP256r1],payloadSize:32,wireFormatLeadingByte:4},[y.curve.brainpoolP384r1]:{oid:[6,9,43,36,3,3,2,8,1,1,11],keyType:y.publicKey.ecdsa,hash:y.hash.sha384,cipher:y.symmetric.aes192,node:vs[y.curve.brainpoolP384r1],payloadSize:48,wireFormatLeadingByte:4},[y.curve.brainpoolP512r1]:{oid:[6,9,43,36,3,3,2,8,1,1,13],keyType:y.publicKey.ecdsa,hash:y.hash.sha512,cipher:y.symmetric.aes256,node:vs[y.curve.brainpoolP512r1],payloadSize:64,wireFormatLeadingByte:4}},Li=class{constructor(e){try{this.name=e instanceof Pa?e.getName():y.write(y.curve,e)}catch{throw new Ct("Unknown curve")}let t=iN[this.name];this.keyType=t.keyType,this.oid=t.oid,this.hash=t.hash,this.cipher=t.cipher,this.node=t.node,this.web=t.web,this.payloadSize=t.payloadSize,this.sharedSize=t.sharedSize,this.wireFormatLeadingByte=t.wireFormatLeadingByte,this.web&&F.getWebCrypto()?this.type="web":this.node&&F.getNodeCrypto()?this.type="node":this.name===y.curve.curve25519Legacy?this.type="curve25519Legacy":this.name===y.curve.ed25519Legacy&&(this.type="ed25519Legacy")}async genKeyPair(){switch(this.type){case"web":try{return await Oee(this.name,this.wireFormatLeadingByte)}catch(e){return F.printDebugError("Browser did not support generating ec key "+e.message),wU(this.name)}case"node":return qee(this.name);case"curve25519Legacy":{let{k:e,A:t}=await h2(y.publicKey.x25519),i=e.slice().reverse();return i[0]=i[0]&127|64,i[31]&=248,{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:i}}case"ed25519Legacy":{let{seed:e,A:t}=await t2(y.publicKey.ed25519);return{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:e}}default:return wU(this.name)}}};kw=F.getWebCrypto(),cN=F.getNodeCrypto();zee=Object.freeze({__proto__:null,sign:p2,validateParams:Mee,verify:m2});Jee=Object.freeze({__proto__:null,sign:lN,validateParams:uN,verify:dN});rte=Object.freeze({__proto__:null,decrypt:gN,encrypt:AN,validateParams:Vee}),ite=Object.freeze({__proto__:null,CurveWithOID:Li,ecdh:rte,ecdhX:Nee,ecdsa:zee,eddsa:gee,eddsaLegacy:Jee,generate:uw,getPreferredHashAlgo:nN}),fw=BigInt(0),cA=BigInt(1);Sw=class{constructor(e){e&&(this.data=e)}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.data=e.subarray(1,1+t),1+this.data.length}throw new Error("Invalid symmetric key")}write(){return F.concatUint8Array([new Uint8Array([this.data.length]),this.data])}},Dw=class{constructor(e){if(e){let{hash:t,cipher:i}=e;this.hash=t,this.cipher=i}else this.hash=null,this.cipher=null}read(e){if(e.length<4||e[0]!==3||e[1]!==1)throw new Ct("Cannot read KDFParams");return this.hash=e[2],this.cipher=e[3],4}write(){return new Uint8Array([3,1,this.hash,this.cipher])}},_w=class r{static fromObject({wrappedKey:e,algorithm:t}){let i=new r;return i.wrappedKey=e,i.algorithm=t,i}read(e){let t=0,i=e[t++];this.algorithm=i%2?e[t++]:null,i-=i%2,this.wrappedKey=F.readExactSubarray(e,t,t+i),t+=i}write(){return F.concatUint8Array([this.algorithm?new Uint8Array([this.wrappedKey.length+1,this.algorithm]):new Uint8Array([this.wrappedKey.length]),this.wrappedKey])}};hw=F.getWebCrypto(),gA=F.getNodeCrypto(),ml=gA?gA.getCiphers():[],hx={idea:ml.includes("idea-cfb")?"idea-cfb":void 0,tripledes:ml.includes("des-ede3-cfb")?"des-ede3-cfb":void 0,cast5:ml.includes("cast5-cfb")?"cast5-cfb":void 0,blowfish:ml.includes("bf-cfb")?"bf-cfb":void 0,aes128:ml.includes("aes-128-cfb")?"aes-128-cfb":void 0,aes192:ml.includes("aes-192-cfb")?"aes-192-cfb":void 0,aes256:ml.includes("aes-256-cfb")?"aes-256-cfb":void 0};Qw=class{constructor(e,t,i){let{blockSize:n}=Dt(e);this.key=t,this.iv=i,this.prevBlock=i.slice(),this.nextBlock=new Uint8Array(n),this.i=0,this.blockSize=n,this.zeroBlock=new Uint8Array(this.blockSize)}static isSupported(e){let{keySize:t}=Dt(e);return hw.importKey("raw",new Uint8Array(t),"aes-cbc",!1,["encrypt"]).then(()=>!0,()=>!1)}async _runCBC(e,t){let i="AES-CBC";this.keyRef=this.keyRef||await hw.importKey("raw",this.key,i,!1,["encrypt"]);let n=await hw.encrypt({name:i,iv:t||this.zeroBlock},this.keyRef,e);return new Uint8Array(n).subarray(0,e.length)}async encryptChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,a=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),o=F.concatUint8Array([this.prevBlock,a.subarray(0,a.length-this.blockSize)]),c=await this._runCBC(o);return XI(c,a),this.prevBlock=c.slice(-this.blockSize),s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,c}this.i+=i.length;let n;if(this.i===this.nextBlock.length){let s=this.nextBlock;n=await this._runCBC(this.prevBlock),XI(n,s),this.prevBlock=n.slice(),this.i=0;let a=e.subarray(i.length);this.nextBlock.set(a,this.i),this.i+=a.length}else n=new Uint8Array;return n}async finish(){let e;if(this.i===0)e=new Uint8Array;else{this.nextBlock=this.nextBlock.subarray(0,this.i);let t=this.nextBlock,i=await this._runCBC(this.prevBlock);XI(i,t),e=i.subarray(0,t.length)}return this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.keyRef=null,this.key=null}async encrypt(e){let i=(await this._runCBC(F.concatUint8Array([new Uint8Array(this.blockSize),e]),this.iv)).subarray(0,e.length);return XI(i,e),this.clearSensitiveData(),i}},Fw=class{constructor(e,t,i,n){this.forEncryption=e;let{blockSize:s}=Dt(t);this.key=IU.expandKeyLE(i),n.byteOffset%4!==0&&(n=n.slice()),this.prevBlock=H1(n),this.nextBlock=new Uint8Array(s),this.i=0,this.blockSize=s}_runCFB(e){let t=H1(e),i=new Uint8Array(e.length),n=H1(i);for(let s=0;s+4<=n.length;s+=4){let{s0:a,s1:o,s2:c,s3:l}=IU.encrypt(this.key,this.prevBlock[0],this.prevBlock[1],this.prevBlock[2],this.prevBlock[3]);n[s+0]=t[s+0]^a,n[s+1]=t[s+1]^o,n[s+2]=t[s+2]^c,n[s+3]=t[s+3]^l,this.prevBlock=(this.forEncryption?n:t).slice(s,s+4)}return i}async processChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,a=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),o=this._runCFB(a);return s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,o}this.i+=i.length;let n;if(this.i===this.nextBlock.length){n=this._runCFB(this.nextBlock),this.i=0;let s=e.subarray(i.length);this.nextBlock.set(s,this.i),this.i+=s.length}else n=new Uint8Array;return n}async finish(){let e;return this.i===0?e=new Uint8Array:e=this._runCFB(this.nextBlock).subarray(0,this.i),this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.key.fill(0)}};H1=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));bU=F.getWebCrypto(),yte=F.getNodeCrypto(),Ta=16;Aw=new Uint8Array(Ta);kU=F.getWebCrypto(),Cte=F.getNodeCrypto(),Ete=F.getNodeBuffer(),qa=16,Bte=qa,mu=qa,SU=new Uint8Array(qa),Bb=new Uint8Array(qa);Bb[qa-1]=1;bb=new Uint8Array(qa);bb[qa-1]=2;RA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[8+i]^=e[i];return t};RA.blockLength=qa;RA.ivLength=Bte;RA.tagLength=mu;Ci=16,mN=15,ec=16;Wh=new Uint8Array(Ci),kte=new Uint8Array([1]);NA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[7+i]^=e[i];return t};NA.blockLength=Ci;NA.ivLength=mN;NA.tagLength=ec;K1=F.getWebCrypto(),_U=F.getNodeCrypto(),QU=F.getNodeBuffer(),Ste=16,Dte=12,yu=16,G1="AES-GCM";Pu.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[4+i]^=e[i];return t};Pu.blockLength=Ste;Pu.ivLength=Dte;Pu.tagLength=yu;Pte=2,Tte=19,Ute=16,FU=30,vu=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="Argon2OutOfMemoryError"}},Rte=2<<19,vb=class{constructor(e=me){let{passes:t,parallelism:i,memoryExponent:n}=e.s2kArgon2Params;this.type="argon2",this.salt=null,this.t=t,this.p=i,this.encodedM=n}generateSalt(){this.salt=jr(Ute)}read(e){let t=0;return this.salt=e.subarray(t,t+16),t+=16,this.t=e[t++],this.p=e[t++],this.encodedM=e[t++],t}write(){let e=[new Uint8Array([y.write(y.s2k,this.type)]),this.salt,new Uint8Array([this.t,this.p,this.encodedM])];return F.concatUint8Array(e)}async produceKey(e,t,i){if(i.maxArgon2MemoryExponent>FU)throw new vu(`'config.maxArgon2MemoryExponent' exceeds the max allowed value of ${FU}`);if(this.encodedM>i.maxArgon2MemoryExponent)throw new vu("Argon2 required memory exceeds `config.maxArgon2MemoryExponent`");let n=1<<this.encodedM;try{ew=ew||(await Promise.resolve().then(function(){return Dse})).default,Xh=Xh||ew();let s=await Xh,a=F.encodeUTF8(e),o=s({version:Tte,type:Pte,password:a,salt:this.salt,tagLength:t,memorySize:n,parallelism:this.p,passes:this.t});return n>Rte&&(Xh=ew(),Xh.catch(()=>{})),o}catch(s){throw s.message&&(s.message.includes("Unable to grow instance memory")||s.message.includes("failed to grow memory")||s.message.includes("WebAssembly.Memory.grow")||s.message.includes("Out of memory"))?new vu("Could not allocate required memory for Argon2"):s}}},kb=class{constructor(e,t=me){this.algorithm=y.hash.sha256,this.type=y.read(y.s2k,e),this.c=t.s2kIterationCountByte,this.salt=null}generateSalt(){switch(this.type){case"salted":case"iterated":this.salt=jr(8)}}getCount(){return 16+(this.c&15)<<(this.c>>4)+6}read(e){let t=0;switch(this.algorithm=e[t++],this.type){case"simple":break;case"salted":this.salt=e.subarray(t,t+8),t+=8;break;case"iterated":this.salt=e.subarray(t,t+8),t+=8,this.c=e[t++];break;case"gnu":if(F.uint8ArrayToString(e.subarray(t,t+3))==="GNU")if(t+=3,1e3+e[t++]===1001)this.type="gnu-dummy";else throw new Ct("Unknown s2k gnu protection mode.");else throw new Ct("Unknown s2k type.");break;default:throw new Ct("Unknown s2k type.")}return t}write(){if(this.type==="gnu-dummy")return new Uint8Array([101,0,...F.stringToUint8Array("GNU"),1]);let e=[new Uint8Array([y.write(y.s2k,this.type),this.algorithm])];switch(this.type){case"simple":break;case"salted":e.push(this.salt);break;case"iterated":e.push(this.salt),e.push(new Uint8Array([this.c]));break;case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}return F.concatUint8Array(e)}async produceKey(e,t,i){e=F.encodeUTF8(e);let n=[],s=0,a=0;for(;s<t;){let o;switch(this.type){case"simple":o=F.concatUint8Array([new Uint8Array(a),e]);break;case"salted":o=F.concatUint8Array([new Uint8Array(a),this.salt,e]);break;case"iterated":{let l=F.concatUint8Array([this.salt,e]),d=l.length,u=Math.max(this.getCount(),d);o=new Uint8Array(a+u),o.set(l,a);for(let f=a+d;f<u;f+=d,d*=2)o.copyWithin(f,a,f);break}case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}let c=await Us(this.algorithm,o);n.push(c),s+=c.length,a++}return F.concatUint8Array(n).subarray(0,t)}},Nte=new Set([y.s2k.argon2,y.s2k.iterated]);Ote=vR("/");try{ku=Ote("worker_threads"),qte=ku.Worker,Mte=ku.isMarkedAsUntransferable}catch{}er=Uint8Array,sn=Uint16Array,y2=Int32Array,gx=new er([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),px=new er([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Sb=new er([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),IN=function(r,e){for(var t=new sn(31),i=0;i<31;++i)t[i]=e+=1<<r[i-1];for(var n=new y2(t[30]),i=1;i<30;++i)for(var s=t[i];s<t[i+1];++s)n[s]=s-t[i]<<5|i;return{b:t,r:n}},ku=IN(gx,2),wN=ku.b,Db=ku.r;wN[28]=258,Db[258]=28;xN=IN(px,0),Lte=xN.b,PU=xN.r,_b=new sn(32768);for(xt=0;xt<32768;++xt)Ca=(xt&43690)>>1|(xt&21845)<<1,Ca=(Ca&52428)>>2|(Ca&13107)<<2,Ca=(Ca&61680)>>4|(Ca&3855)<<4,_b[xt]=((Ca&65280)>>8|(Ca&255)<<8)>>1;Ps=(function(r,e,t){for(var i=r.length,n=0,s=new sn(e);n<i;++n)r[n]&&++s[r[n]-1];var a=new sn(e);for(n=1;n<e;++n)a[n]=a[n-1]+s[n-1]<<1;var o;if(t){o=new sn(1<<e);var c=15-e;for(n=0;n<i;++n)if(r[n])for(var l=n<<4|r[n],d=e-r[n],u=a[r[n]-1]++<<d,f=u|(1<<d)-1;u<=f;++u)o[_b[u]>>c]=l}else for(o=new sn(i),n=0;n<i;++n)r[n]&&(o[n]=_b[a[r[n]-1]++]>>15-r[n]);return o}),cc=new er(288);for(xt=0;xt<144;++xt)cc[xt]=8;for(xt=144;xt<256;++xt)cc[xt]=9;for(xt=256;xt<280;++xt)cc[xt]=7;for(xt=280;xt<288;++xt)cc[xt]=8;mA=new er(32);for(xt=0;xt<32;++xt)mA[xt]=5;Hte=Ps(cc,9,0),Kte=Ps(cc,9,1),Gte=Ps(mA,5,0),zte=Ps(mA,5,1),z1=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},jn=function(r,e,t){var i=e/8|0;return(r[i]|r[i+1]<<8)>>(e&7)&t},J1=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},I2=function(r){return(r+7)/8|0},uA=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new er(r.subarray(e,t))},Jte=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Rr=function(r,e,t){var i=new Error(e||Jte[r]);if(i.code=r,Error.captureStackTrace&&Error.captureStackTrace(i,Rr),!t)throw i;return i},jte=function(r,e,t,i){var n=r.length,s=0;if(!n||e.f&&!e.l)return t||new er(0);var a=!t,o=a||e.i!=2,c=e.i;a&&(t=new er(n*3));var l=function(He){var Ue=t.length;if(He>Ue){var se=new er(Math.max(Ue*2,He));se.set(t),t=se}},d=e.f||0,u=e.p||0,f=e.b||0,A=e.l,g=e.d,p=e.m,I=e.n,m=n*8;do{if(!A){d=jn(r,u,1);var w=jn(r,u+1,3);if(u+=3,w)if(w==1)A=Kte,g=zte,p=9,I=5;else if(w==2){var _=jn(r,u,31)+257,R=jn(r,u+10,15)+4,U=_+jn(r,u+5,31)+1;u+=14;for(var T=new er(U),D=new er(19),b=0;b<R;++b)D[Sb[b]]=jn(r,u+b*3,7);u+=R*3;for(var Q=z1(D),v=(1<<Q)-1,E=Ps(D,Q,1),b=0;b<U;){var P=E[jn(r,u,v)];u+=P&15;var B=P>>4;if(B<16)T[b++]=B;else{var N=0,j=0;for(B==16?(j=3+jn(r,u,3),u+=2,N=T[b-1]):B==17?(j=3+jn(r,u,7),u+=3):B==18&&(j=11+jn(r,u,127),u+=7);j--;)T[b++]=N}}var z=T.subarray(0,_),L=T.subarray(_);p=z1(z),I=z1(L),A=Ps(z,p,1),g=Ps(L,I,1)}else Rr(1);else{var B=I2(u)+4,C=r[B-4]|r[B-3]<<8,x=B+C;if(x>n){c&&Rr(0);break}o&&l(f+C),t.set(r.subarray(B,x),f),e.b=f+=C,e.p=u=x*8,e.f=d;continue}if(u>m){c&&Rr(0);break}}o&&l(f+131072);for(var G=(1<<p)-1,K=(1<<I)-1,$=u;;$=u){var N=A[J1(r,u)&G],te=N>>4;if(u+=N&15,u>m){c&&Rr(0);break}if(N||Rr(2),te<256)t[f++]=te;else if(te==256){$=u,A=null;break}else{var re=te-254;if(te>264){var b=te-257,ee=gx[b];re=jn(r,u,(1<<ee)-1)+wN[b],u+=ee}var Z=g[J1(r,u)&K],ye=Z>>4;Z||Rr(3),u+=Z&15;var L=Lte[ye];if(ye>3){var ee=px[ye];L+=J1(r,u)&(1<<ee)-1,u+=ee}if(u>m){c&&Rr(0);break}o&&l(f+131072);var de=f+re;if(f<L){var Ae=s-L,De=Math.min(L,de);for(Ae+f<0&&Rr(3);f<De;++f)t[f]=i[Ae+f]}for(;f<de;++f)t[f]=t[f-L]}}e.l=A,e.p=$,e.b=f,e.f=d,A&&(d=1,e.m=p,e.d=g,e.n=I)}while(!d);return f!=t.length&&a?uA(t,0,f):t.subarray(0,f)},Ea=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8},Zh=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8,r[i+2]|=t>>16},j1=function(r,e){for(var t=[],i=0;i<r.length;++i)r[i]&&t.push({s:i,f:r[i]});var n=t.length,s=t.slice();if(!n)return{t:Tw,l:0};if(n==1){var a=new er(t[0].s+1);return a[t[0].s]=1,{t:a,l:1}}t.sort(function(x,_){return x.f-_.f}),t.push({s:-1,f:25001});var o=t[0],c=t[1],l=0,d=1,u=2;for(t[0]={s:-1,f:o.f+c.f,l:o,r:c};d!=n-1;)o=t[t[l].f<t[u].f?l++:u++],c=t[l!=d&&t[l].f<t[u].f?l++:u++],t[d++]={s:-1,f:o.f+c.f,l:o,r:c};for(var f=s[0].s,i=1;i<n;++i)s[i].s>f&&(f=s[i].s);var A=new sn(f+1),g=Qb(t[d-1],A,0);if(g>e){var i=0,p=0,I=g-e,m=1<<I;for(s.sort(function(_,R){return A[R.s]-A[_.s]||_.f-R.f});i<n;++i){var w=s[i].s;if(A[w]>e)p+=m-(1<<g-A[w]),A[w]=e;else break}for(p>>=I;p>0;){var B=s[i].s;A[B]<e?p-=1<<e-A[B]++-1:++i}for(;i>=0&&p;--i){var C=s[i].s;A[C]==e&&(--A[C],++p)}g=e}return{t:new er(A),l:g}},Qb=function(r,e,t){return r.s==-1?Math.max(Qb(r.l,e,t+1),Qb(r.r,e,t+1)):e[r.s]=t},TU=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new sn(++e),i=0,n=r[0],s=1,a=function(c){t[i++]=c},o=1;o<=e;++o)if(r[o]==n&&o!=e)++s;else{if(!n&&s>2){for(;s>138;s-=138)a(32754);s>2&&(a(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(a(n),--s;s>6;s-=6)a(8304);s>2&&(a(s-3<<5|8208),s=0)}for(;s--;)a(n);s=1,n=r[o]}return{c:t.subarray(0,i),n:e}},eA=function(r,e){for(var t=0,i=0;i<e.length;++i)t+=r[i]*e[i];return t},w2=function(r,e,t){var i=t.length,n=I2(e+2);r[n]=i&255,r[n+1]=i>>8,r[n+2]=r[n]^255,r[n+3]=r[n+1]^255;for(var s=0;s<i;++s)r[n+s+4]=t[s];return(n+4+i)*8},UU=function(r,e,t,i,n,s,a,o,c,l,d){Ea(e,d++,t),++n[256];for(var u=j1(n,15),f=u.t,A=u.l,g=j1(s,15),p=g.t,I=g.l,m=TU(f),w=m.c,B=m.n,C=TU(p),x=C.c,_=C.n,R=new sn(19),U=0;U<w.length;++U)++R[w[U]&31];for(var U=0;U<x.length;++U)++R[x[U]&31];for(var T=j1(R,7),D=T.t,b=T.l,Q=19;Q>4&&!D[Sb[Q-1]];--Q);var v=l+5<<3,E=eA(n,cc)+eA(s,mA)+a,P=eA(n,f)+eA(s,p)+a+14+3*Q+eA(R,D)+2*R[16]+3*R[17]+7*R[18];if(c>=0&&v<=E&&v<=P)return w2(e,d,r.subarray(c,c+l));var N,j,z,L;if(Ea(e,d,1+(P<E)),d+=2,P<E){N=Ps(f,A,0),j=f,z=Ps(p,I,0),L=p;var G=Ps(D,b,0);Ea(e,d,B-257),Ea(e,d+5,_-1),Ea(e,d+10,Q-4),d+=14;for(var U=0;U<Q;++U)Ea(e,d+3*U,D[Sb[U]]);d+=3*Q;for(var K=[w,x],$=0;$<2;++$)for(var te=K[$],U=0;U<te.length;++U){var re=te[U]&31;Ea(e,d,G[re]),d+=D[re],re>15&&(Ea(e,d,te[U]>>5&127),d+=te[U]>>12)}}else N=Hte,j=cc,z=Gte,L=mA;for(var U=0;U<o;++U){var ee=i[U];if(ee>255){var re=ee>>18&31;Zh(e,d,N[re+257]),d+=j[re+257],re>7&&(Ea(e,d,ee>>23&31),d+=gx[re]);var Z=ee&31;Zh(e,d,z[Z]),d+=L[Z],Z>3&&(Zh(e,d,ee>>5&8191),d+=px[Z])}else Zh(e,d,N[ee]),d+=j[ee]}return Zh(e,d,N[256]),d+j[256]},$te=new y2([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Tw=new er(0),Vte=function(r,e,t,i,n,s){var a=s.z||r.length,o=new er(i+a+5*(1+Math.ceil(a/7e3))+n),c=o.subarray(i,o.length-n),l=s.l,d=(s.r||0)&7;if(e){d&&(c[0]=s.r>>3);for(var u=$te[e-1],f=u>>13,A=u&8191,g=(1<<t)-1,p=s.p||new sn(32768),I=s.h||new sn(g+1),m=Math.ceil(t/3),w=2*m,B=function(ut){return(r[ut]^r[ut+1]<<m^r[ut+2]<<w)&g},C=new y2(25e3),x=new sn(288),_=new sn(32),R=0,U=0,T=s.i||0,D=0,b=s.w||0,Q=0;T+2<a;++T){var v=B(T),E=T&32767,P=I[v];if(p[E]=P,I[v]=E,b<=T){var N=a-T;if((R>7e3||D>24576)&&(N>423||!l)){d=UU(r,c,0,C,x,_,U,D,Q,T-Q,d),D=R=U=0,Q=T;for(var j=0;j<286;++j)x[j]=0;for(var j=0;j<30;++j)_[j]=0}var z=2,L=0,G=A,K=E-P&32767;if(N>2&&v==B(T-K))for(var $=Math.min(f,N)-1,te=Math.min(32767,T),re=Math.min(258,N);K<=te&&--G&&E!=P;){if(r[T+z]==r[T+z-K]){for(var ee=0;ee<re&&r[T+ee]==r[T+ee-K];++ee);if(ee>z){if(z=ee,L=K,ee>$)break;for(var Z=Math.min(K,ee-2),ye=0,j=0;j<Z;++j){var de=T-K+j&32767,Ae=p[de],De=de-Ae&32767;De>ye&&(ye=De,P=de)}}}E=P,P=p[E],K+=E-P&32767}if(L){C[D++]=268435456|Db[z]<<18|PU[L];var He=Db[z]&31,Ue=PU[L]&31;U+=gx[He]+px[Ue],++x[257+He],++_[Ue],b=T+z,++R}else C[D++]=r[T],++x[r[T]]}}for(T=Math.max(T,b);T<a;++T)C[D++]=r[T],++x[r[T]];d=UU(r,c,l,C,x,_,U,D,Q,T-Q,d),l||(s.r=d&7|c[d/8|0]<<3,d-=7,s.h=I,s.p=p,s.i=T,s.w=b)}else{for(var T=s.w||0;T<a+l;T+=65535){var se=T+65535;se>=a&&(c[d/8|0]=l,se=a),d=w2(c,d+1,r.subarray(T,se))}s.i=a}return uA(o,0,i+I2(d)+n)},CN=function(){var r=1,e=0;return{p:function(t){for(var i=r,n=e,s=t.length|0,a=0;a!=s;){for(var o=Math.min(a+2655,s);a<o;++a)n+=i+=t[a];i=(i&65535)+15*(i>>16),n=(n&65535)+15*(n>>16)}r=i,e=n},d:function(){return r%=65521,e%=65521,(r&255)<<24|(r&65280)<<8|(e&255)<<8|e>>8}}},EN=function(r,e,t,i,n){if(!n&&(n={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),a=new er(s.length+r.length);a.set(s),a.set(r,s.length),r=a,n.w=s.length}return Vte(r,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+e.mem,t,i,n)},BN=function(r,e,t){for(;t;++e)r[e]=t,t>>>=8},Yte=function(r,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(r[0]=120,r[1]=i<<6|(e.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,e.dictionary){var n=CN();n.p(e.dictionary),BN(r,2,n.d())}},Wte=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&Rr(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&Rr(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2},gw=(function(){function r(e,t){if(typeof e=="function"&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new er(98304),this.o.dictionary){var i=this.o.dictionary.subarray(-32768);this.b.set(i,32768-i.length),this.s.i=32768-i.length}}return r.prototype.p=function(e,t){this.ondata(EN(e,this.o,0,0,this.s),t)},r.prototype.push=function(e,t){this.ondata||Rr(5),this.s.l&&Rr(4);var i=e.length+this.s.z;if(i>this.b.length){if(i>2*this.b.length-32768){var n=new er(i&-32768);n.set(this.b.subarray(0,this.s.z)),this.b=n}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Tw)},r.prototype.flush=function(e){if(this.ondata||Rr(5),this.s.l&&Rr(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new er(6);t[0]=this.s.r>>3;var i=w2(t,this.s.r,Tw);this.s.r=0,this.ondata(t.subarray(0,i>>3),!1)}},r})(),pw=(function(){function r(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var i=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:i?i.length:0},this.o=new er(32768),this.p=new er(0),i&&this.o.set(i)}return r.prototype.e=function(e){if(this.ondata||Rr(5),this.d&&Rr(4),!this.p.length)this.p=e;else if(e.length){var t=new er(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},r.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,i=jte(this.p,this.s,this.o);this.ondata(uA(i,t,this.s.b),this.d),this.o=uA(i,this.s.b-32768),this.s.b=this.o.length,this.p=uA(this.p,this.s.p/8|0),this.s.p&=7},r.prototype.push=function(e,t){this.e(e),this.c(t)},r})(),Xte=(function(){function r(e,t){this.c=CN(),this.v=1,gw.call(this,e,t)}return r.prototype.push=function(e,t){this.c.p(e),gw.prototype.push.call(this,e,t)},r.prototype.p=function(e,t){var i=EN(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(Yte(i,this.o),this.v=0),t&&BN(i,i.length-4,this.c.d()),this.ondata(i,t)},r.prototype.flush=function(e){gw.prototype.flush.call(this,e)},r})(),Zte=(function(){function r(e,t){pw.call(this,e,t),this.v=e&&e.dictionary?2:1}return r.prototype.push=function(e,t){if(pw.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(Wte(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&Rr(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),pw.prototype.c.call(this,t)},r})(),ere=typeof TextDecoder<"u"&&new TextDecoder,tre=0;try{ere.decode(Tw,{stream:!0}),tre=1}catch{}lc=class{static get tag(){return y.packet.literalData}constructor(e=new Date){this.format=y.literal.utf8,this.date=F.normalizeDate(e),this.text=null,this.data=null,this.filename=""}setText(e,t=y.literal.utf8){this.format=t,this.text=e,this.data=null}getText(e=!1){return(this.text===null||F.isStream(this.text))&&(this.text=F.decodeUTF8(F.nativeEOL(this.getBytes(e)))),this.text}setBytes(e,t){this.format=t,this.data=e,this.text=null}getBytes(e=!1){return this.data===null&&(this.data=F.canonicalizeEOL(F.encodeUTF8(this.text))),e?lA(this.data):this.data}setFilename(e){this.filename=e}getFilename(){return this.filename}async read(e){await rx(e,async t=>{let i=await t.readByte(),n=await t.readByte();this.filename=F.decodeUTF8(await t.readBytes(n)),this.date=F.readDate(await t.readBytes(4));let s=t.remainder();Ot(s)&&(s=await cr(s)),this.setBytes(s,i)})}writeHeader(){let e=F.encodeUTF8(this.filename),t=new Uint8Array([e.length]),i=new Uint8Array([this.format]),n=F.writeDate(this.date);return F.concatUint8Array([i,t,e,n])}write(){let e=this.writeHeader(),t=this.getBytes();return F.concat([e,t])}},Ra=class r{constructor(){this.bytes=""}read(e){return this.bytes=F.uint8ArrayToString(e.subarray(0,8)),this.bytes.length}write(){return F.stringToUint8Array(this.bytes)}toHex(){return F.uint8ArrayToHex(F.stringToUint8Array(this.bytes))}equals(e,t=!1){return t&&(e.isWildcard()||this.isWildcard())||this.bytes===e.bytes}isNull(){return this.bytes===""}isWildcard(){return/^0+$/.test(this.toHex())}static mapToHex(e){return e.toHex()}static fromID(e){let t=new r;return t.read(F.hexToUint8Array(e)),t}static wildcard(){let e=new r;return e.read(new Uint8Array(8)),e}},tA=Symbol("verified"),RU="salt@notations.openpgpjs.org",rre=new Set([y.signatureSubpacket.issuerKeyID,y.signatureSubpacket.issuerFingerprint,y.signatureSubpacket.embeddedSignature]),$r=class r{static get tag(){return y.packet.signature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.signatureData=null,this.unhashedSubpackets=[],this.unknownSubpackets=[],this.signedHashValue=null,this.salt=null,this.created=null,this.signatureExpirationTime=null,this.signatureNeverExpires=!0,this.exportable=null,this.trustLevel=null,this.trustAmount=null,this.regularExpression=null,this.revocable=null,this.keyExpirationTime=null,this.keyNeverExpires=null,this.preferredSymmetricAlgorithms=null,this.revocationKeyClass=null,this.revocationKeyAlgorithm=null,this.revocationKeyFingerprint=null,this.issuerKeyID=new Ra,this.rawNotations=[],this.notations={},this.preferredHashAlgorithms=null,this.preferredCompressionAlgorithms=null,this.keyServerPreferences=null,this.preferredKeyServer=null,this.isPrimaryUserID=null,this.policyURI=null,this.keyFlags=null,this.signersUserID=null,this.reasonForRevocationFlag=null,this.reasonForRevocationString=null,this.features=null,this.signatureTargetPublicKeyAlgorithm=null,this.signatureTargetHashAlgorithm=null,this.signatureTargetHash=null,this.embeddedSignature=null,this.issuerKeyVersion=null,this.issuerFingerprint=null,this.preferredAEADAlgorithms=null,this.preferredCipherSuites=null,this.revoked=null,this[tA]=null}read(e,t=me){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new Ct("Support for v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version!==4&&this.version!==5&&this.version!==6)throw new Ct(`Version ${this.version} of the signature packet is unsupported.`);if(this.signatureType=e[i++],this.publicKeyAlgorithm=e[i++],this.hashAlgorithm=e[i++],i+=this.readSubPackets(e.subarray(i,e.length),!0),!this.created)throw new Error("Missing signature creation time subpacket.");if(this.signatureData=e.subarray(0,i),i+=this.readSubPackets(e.subarray(i,e.length),!1),this.signedHashValue=e.subarray(i,i+2),i+=2,this.version===6){let o=e[i++];this.salt=e.subarray(i,i+o),i+=o}let n=e.subarray(i,e.length),{read:s,signatureParams:a}=_te(this.publicKeyAlgorithm,n);if(s<n.length)throw new Error("Error reading MPIs");this.params=a}writeParams(){return this.params instanceof Promise?Fl(async()=>Fu(this.publicKeyAlgorithm,await this.params)):Fu(this.publicKeyAlgorithm,this.params)}write(){let e=[];return e.push(this.signatureData),e.push(this.writeUnhashedSubPackets()),e.push(this.signedHashValue),this.version===6&&(e.push(new Uint8Array([this.salt.length])),e.push(this.salt)),e.push(this.writeParams()),F.concat(e)}async sign(e,t,i=new Date,n=!1,s){this.version=e.version,this.created=F.normalizeDate(i),this.issuerKeyVersion=e.version,this.issuerFingerprint=e.getFingerprintBytes(),this.issuerKeyID=e.getKeyID();let a=[new Uint8Array([this.version,this.signatureType,this.publicKeyAlgorithm,this.hashAlgorithm])];if(this.version===6){let d=$1(this.hashAlgorithm);if(this.salt===null)this.salt=jr(d);else if(d!==this.salt.length)throw new Error("Provided salt does not have the required length")}else if(s.nonDeterministicSignaturesViaNotation)if(this.rawNotations.filter(({name:u})=>u===RU).length===0){let u=jr($1(this.hashAlgorithm));this.rawNotations.push({name:RU,value:u,humanReadable:!1,critical:!1})}else throw new Error("Unexpected existing salt notation");a.push(this.writeHashedSubPackets()),this.unhashedSubpackets=[],this.signatureData=F.concat(a);let o=this.toHash(this.signatureType,t,n),c=await this.hash(this.signatureType,t,o,n);this.signedHashValue=Jr(bl(c),0,2);let l=async()=>Fte(this.publicKeyAlgorithm,this.hashAlgorithm,e.publicParams,e.privateParams,o,await cr(c));F.isStream(c)?this.params=l():(this.params=await l(),this[tA]=!0)}writeHashedSubPackets(){let e=y.signatureSubpacket,t=[],i;if(this.created===null)throw new Error("Missing signature creation time");t.push(St(e.signatureCreationTime,!0,F.writeDate(this.created))),this.signatureExpirationTime!==null&&t.push(St(e.signatureExpirationTime,!0,F.writeNumber(this.signatureExpirationTime,4))),this.exportable!==null&&t.push(St(e.exportableCertification,!0,new Uint8Array([this.exportable?1:0]))),this.trustLevel!==null&&(i=new Uint8Array([this.trustLevel,this.trustAmount]),t.push(St(e.trustSignature,!0,i))),this.regularExpression!==null&&t.push(St(e.regularExpression,!0,this.regularExpression)),this.revocable!==null&&t.push(St(e.revocable,!0,new Uint8Array([this.revocable?1:0]))),this.keyExpirationTime!==null&&t.push(St(e.keyExpirationTime,!0,F.writeNumber(this.keyExpirationTime,4))),this.preferredSymmetricAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredSymmetricAlgorithms)),t.push(St(e.preferredSymmetricAlgorithms,!1,i))),this.revocationKeyClass!==null&&(i=new Uint8Array([this.revocationKeyClass,this.revocationKeyAlgorithm]),i=F.concat([i,this.revocationKeyFingerprint]),t.push(St(e.revocationKey,!1,i))),!this.issuerKeyID.isNull()&&this.issuerKeyVersion<5&&t.push(St(e.issuerKeyID,!1,this.issuerKeyID.write())),this.rawNotations.forEach(({name:a,value:o,humanReadable:c,critical:l})=>{i=[new Uint8Array([c?128:0,0,0,0])];let d=F.encodeUTF8(a);i.push(F.writeNumber(d.length,2)),i.push(F.writeNumber(o.length,2)),i.push(d),i.push(o),i=F.concat(i),t.push(St(e.notationData,l,i))}),this.preferredHashAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredHashAlgorithms)),t.push(St(e.preferredHashAlgorithms,!1,i))),this.preferredCompressionAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredCompressionAlgorithms)),t.push(St(e.preferredCompressionAlgorithms,!1,i))),this.keyServerPreferences!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyServerPreferences)),t.push(St(e.keyServerPreferences,!1,i))),this.preferredKeyServer!==null&&t.push(St(e.preferredKeyServer,!1,F.encodeUTF8(this.preferredKeyServer))),this.isPrimaryUserID!==null&&t.push(St(e.primaryUserID,!1,new Uint8Array([this.isPrimaryUserID?1:0]))),this.policyURI!==null&&t.push(St(e.policyURI,!1,F.encodeUTF8(this.policyURI))),this.keyFlags!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyFlags)),t.push(St(e.keyFlags,!0,i))),this.signersUserID!==null&&t.push(St(e.signersUserID,!1,F.encodeUTF8(this.signersUserID))),this.reasonForRevocationFlag!==null&&(i=F.stringToUint8Array(String.fromCharCode(this.reasonForRevocationFlag)+this.reasonForRevocationString),t.push(St(e.reasonForRevocation,!0,i))),this.features!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.features)),t.push(St(e.features,!1,i))),this.signatureTargetPublicKeyAlgorithm!==null&&(i=[new Uint8Array([this.signatureTargetPublicKeyAlgorithm,this.signatureTargetHashAlgorithm])],i.push(F.stringToUint8Array(this.signatureTargetHash)),i=F.concat(i),t.push(St(e.signatureTarget,!0,i))),this.embeddedSignature!==null&&t.push(St(e.embeddedSignature,!0,this.embeddedSignature.write())),this.issuerFingerprint!==null&&(i=[new Uint8Array([this.issuerKeyVersion]),this.issuerFingerprint],i=F.concat(i),t.push(St(e.issuerFingerprint,this.version>=5,i))),this.preferredAEADAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredAEADAlgorithms)),t.push(St(e.preferredAEADAlgorithms,!1,i))),this.preferredCipherSuites!==null&&(i=new Uint8Array([].concat(...this.preferredCipherSuites)),t.push(St(e.preferredCipherSuites,!1,i)));let n=F.concat(t),s=F.writeNumber(n.length,this.version===6?4:2);return F.concat([s,n])}writeUnhashedSubPackets(){let e=this.unhashedSubpackets.map(({type:n,critical:s,body:a})=>St(n,s,a)),t=F.concat(e),i=F.writeNumber(t.length,this.version===6?4:2);return F.concat([i,t])}readSubPacket(e,t=!0){let i=0,n=!!(e[i]&128),s=e[i]&127;if(i++,!(!t&&(this.unhashedSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)}),!rre.has(s))))switch(s){case y.signatureSubpacket.signatureCreationTime:this.created=F.readDate(e.subarray(i,e.length));break;case y.signatureSubpacket.signatureExpirationTime:{let a=F.readNumber(e.subarray(i,e.length));this.signatureNeverExpires=a===0,this.signatureExpirationTime=a;break}case y.signatureSubpacket.exportableCertification:this.exportable=e[i++]===1;break;case y.signatureSubpacket.trustSignature:this.trustLevel=e[i++],this.trustAmount=e[i++];break;case y.signatureSubpacket.regularExpression:this.regularExpression=e[i];break;case y.signatureSubpacket.revocable:this.revocable=e[i++]===1;break;case y.signatureSubpacket.keyExpirationTime:{let a=F.readNumber(e.subarray(i,e.length));this.keyExpirationTime=a,this.keyNeverExpires=a===0;break}case y.signatureSubpacket.preferredSymmetricAlgorithms:this.preferredSymmetricAlgorithms=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.revocationKey:this.revocationKeyClass=e[i++],this.revocationKeyAlgorithm=e[i++],this.revocationKeyFingerprint=e.subarray(i,i+20);break;case y.signatureSubpacket.issuerKeyID:if(this.version===4)this.issuerKeyID.read(e.subarray(i,e.length));else if(t)throw new Error("Unexpected Issuer Key ID subpacket");break;case y.signatureSubpacket.notationData:{let a=!!(e[i]&128);i+=4;let o=F.readNumber(e.subarray(i,i+2));i+=2;let c=F.readNumber(e.subarray(i,i+2));i+=2;let l=F.decodeUTF8(e.subarray(i,i+o)),d=e.subarray(i+o,i+o+c);this.rawNotations.push({name:l,humanReadable:a,value:d,critical:n}),a&&(this.notations[l]=F.decodeUTF8(d));break}case y.signatureSubpacket.preferredHashAlgorithms:this.preferredHashAlgorithms=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.preferredCompressionAlgorithms:this.preferredCompressionAlgorithms=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.keyServerPreferences:this.keyServerPreferences=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.preferredKeyServer:this.preferredKeyServer=F.decodeUTF8(e.subarray(i,e.length));break;case y.signatureSubpacket.primaryUserID:this.isPrimaryUserID=e[i++]!==0;break;case y.signatureSubpacket.policyURI:this.policyURI=F.decodeUTF8(e.subarray(i,e.length));break;case y.signatureSubpacket.keyFlags:this.keyFlags=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.signersUserID:this.signersUserID=F.decodeUTF8(e.subarray(i,e.length));break;case y.signatureSubpacket.reasonForRevocation:this.reasonForRevocationFlag=e[i++],this.reasonForRevocationString=F.decodeUTF8(e.subarray(i,e.length));break;case y.signatureSubpacket.features:this.features=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.signatureTarget:{this.signatureTargetPublicKeyAlgorithm=e[i++],this.signatureTargetHashAlgorithm=e[i++];let a=vr(this.signatureTargetHashAlgorithm);this.signatureTargetHash=F.uint8ArrayToString(e.subarray(i,i+a));break}case y.signatureSubpacket.embeddedSignature:this.embeddedSignature=new r,this.embeddedSignature.read(e.subarray(i,e.length));break;case y.signatureSubpacket.issuerFingerprint:this.issuerKeyVersion=e[i++],this.issuerFingerprint=e.subarray(i,e.length),this.issuerKeyVersion>=5?this.issuerKeyID.read(this.issuerFingerprint):this.issuerKeyID.read(this.issuerFingerprint.subarray(-8));break;case y.signatureSubpacket.preferredAEADAlgorithms:this.preferredAEADAlgorithms=[...e.subarray(i,e.length)];break;case y.signatureSubpacket.preferredCipherSuites:this.preferredCipherSuites=[];for(let a=i;a<e.length;a+=2)this.preferredCipherSuites.push([e[a],e[a+1]]);break;default:this.unknownSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)});break}}readSubPackets(e,t=!0,i){let n=this.version===6?4:2,s=F.readNumber(e.subarray(0,n)),a=n;for(;a<2+s;){let o=qR(e.subarray(a,e.length));a+=o.offset,this.readSubPacket(e.subarray(a,a+o.len),t,i),a+=o.len}return a}toSign(e,t){let i=y.signature;switch(e){case i.binary:return t.text!==null?F.encodeUTF8(t.getText(!0)):t.getBytes(!0);case i.text:{let n=t.getBytes(!0);return F.canonicalizeEOL(n)}case i.standalone:return new Uint8Array(0);case i.certGeneric:case i.certPersona:case i.certCasual:case i.certPositive:case i.certRevocation:{let n,s;if(t.userID)s=180,n=t.userID;else if(t.userAttribute)s=209,n=t.userAttribute;else throw new Error("Either a userID or userAttribute packet needs to be supplied for certification.");let a=n.write();return F.concat([this.toSign(i.key,t),new Uint8Array([s]),F.writeNumber(a.length,4),a])}case i.subkeyBinding:case i.subkeyRevocation:case i.keyBinding:return F.concat([this.toSign(i.key,t),this.toSign(i.key,{key:t.bind})]);case i.key:if(t.key===void 0)throw new Error("Key packet is required for this signature.");return t.key.writeForHash(this.version);case i.keyRevocation:return this.toSign(i.key,t);case i.timestamp:return new Uint8Array(0);case i.thirdParty:throw new Error("Not implemented");default:throw new Error("Unknown signature type.")}}calculateTrailer(e,t){let i=0;return gr(bl(this.signatureData),n=>{i+=n.length},()=>{let n=[];return this.version===5&&(this.signatureType===y.signature.binary||this.signatureType===y.signature.text)&&(t?n.push(new Uint8Array(6)):n.push(e.writeHeader())),n.push(new Uint8Array([this.version,255])),this.version===5&&n.push(new Uint8Array(4)),n.push(F.writeNumber(i,4)),F.concat(n)})}toHash(e,t,i=!1){let n=this.toSign(e,t);return F.concat([this.salt||new Uint8Array,n,this.signatureData,this.calculateTrailer(t,i)])}async hash(e,t,i,n=!1){if(this.version===6&&this.salt.length!==$1(this.hashAlgorithm))throw new Error("Signature salt does not have the expected length");return i||(i=this.toHash(e,t,n)),Us(this.hashAlgorithm,i)}async verify(e,t,i,n=new Date,s=!1,a=me){if(!this.issuerKeyID.equals(e.getKeyID()))throw new Error("Signature was not issued by the given public key");if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Public key algorithm used to sign signature does not match issuer key algorithm.");let o=t===y.signature.binary||t===y.signature.text;if(!(this[tA]&&!o)){let d,u;if(this.hashed?u=await this.hashed:(d=this.toHash(t,i,s),u=await this.hash(t,i,d)),u=await cr(u),this.signedHashValue[0]!==u[0]||this.signedHashValue[1]!==u[1])throw new Error("Signed digest did not match");if(this.params=await this.params,this[tA]=await Qte(this.publicKeyAlgorithm,this.hashAlgorithm,this.params,e.publicParams,d,u),!this[tA])throw new Error("Signature verification failed")}let l=F.normalizeDate(n);if(l&&this.created>l)throw new Error("Signature creation time is in the future");if(l&&l>=this.getExpirationTime())throw new Error("Signature is expired");if(a.rejectHashAlgorithms.has(this.hashAlgorithm))throw new Error("Insecure hash algorithm: "+y.read(y.hash,this.hashAlgorithm).toUpperCase());if(a.rejectMessageHashAlgorithms.has(this.hashAlgorithm)&&[y.signature.binary,y.signature.text].includes(this.signatureType))throw new Error("Insecure message hash algorithm: "+y.read(y.hash,this.hashAlgorithm).toUpperCase());if(this.unknownSubpackets.forEach(({type:d,critical:u})=>{if(u)throw new Error(`Unknown critical signature subpacket type ${d}`)}),this.rawNotations.forEach(({name:d,critical:u})=>{if(u&&a.knownNotations.indexOf(d)<0)throw new Error(`Unknown critical notation: ${d}`)}),this.revocationKeyClass!==null)throw new Error("This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.")}isExpired(e=new Date){let t=F.normalizeDate(e);return t!==null?!(this.created<=t&&t<this.getExpirationTime()):!1}getExpirationTime(){return this.signatureNeverExpires?1/0:new Date(this.created.getTime()+this.signatureExpirationTime*1e3)}};bn=class r{static get tag(){return y.packet.onePassSignature}static fromSignaturePacket(e,t){let i=new r;return i.version=e.version===6?6:3,i.signatureType=e.signatureType,i.hashAlgorithm=e.hashAlgorithm,i.publicKeyAlgorithm=e.publicKeyAlgorithm,i.issuerKeyID=e.issuerKeyID,i.salt=e.salt,i.issuerFingerprint=e.issuerFingerprint,i.flags=t?1:0,i}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.salt=null,this.issuerKeyID=null,this.issuerFingerprint=null,this.flags=null}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new Ct(`Version ${this.version} of the one-pass signature packet is unsupported.`);if(this.signatureType=e[t++],this.hashAlgorithm=e[t++],this.publicKeyAlgorithm=e[t++],this.version===6){let i=e[t++];this.salt=e.subarray(t,t+i),t+=i,this.issuerFingerprint=e.subarray(t,t+32),t+=32,this.issuerKeyID=new Ra,this.issuerKeyID.read(this.issuerFingerprint)}else this.issuerKeyID=new Ra,this.issuerKeyID.read(e.subarray(t,t+8)),t+=8;return this.flags=e[t++],this}write(){let e=[new Uint8Array([this.version,this.signatureType,this.hashAlgorithm,this.publicKeyAlgorithm])];return this.version===6?e.push(new Uint8Array([this.salt.length]),this.salt,this.issuerFingerprint):e.push(this.issuerKeyID.write()),e.push(new Uint8Array([this.flags])),F.concatUint8Array(e)}calculateTrailer(...e){return Fl(async()=>$r.prototype.calculateTrailer.apply(await this.correspondingSig,e))}async verify(){let e=await this.correspondingSig;if(!e||e.constructor.tag!==y.packet.signature)throw new Error("Corresponding signature packet missing");if(e.signatureType!==this.signatureType||e.hashAlgorithm!==this.hashAlgorithm||e.publicKeyAlgorithm!==this.publicKeyAlgorithm||!e.issuerKeyID.equals(this.issuerKeyID)||this.version===3&&e.version===6||this.version===6&&e.version!==6||this.version===6&&!F.equalsUint8Array(e.issuerFingerprint,this.issuerFingerprint)||this.version===6&&!F.equalsUint8Array(e.salt,this.salt))throw new Error("Corresponding signature packet does not match one-pass signature packet");return e.hashed=this.hashed,e.verify.apply(e,arguments)}};bn.prototype.hash=$r.prototype.hash;bn.prototype.toHash=$r.prototype.toHash;bn.prototype.toSign=$r.prototype.toSign;Ft=class r extends Array{static async fromBinary(e,t,i=me,n=null,s=!1){let a=new r;return await a.read(e,t,i,n,s),a}async read(e,t,i=me,n=null,s=!1){let a;i.additionalAllowedPackets.length&&(a=F.constructAllowedPackets(i.additionalAllowedPackets),t={...t,...a}),this.stream=dc(e,async(c,l)=>{let d=Xn(c),u=an(l);try{let f=F.isStream(c);for(;;){await u.ready;let A,g;if(await Aee(d,f,async m=>{try{if(m.tag===y.packet.marker||m.tag===y.packet.trust||m.tag===y.packet.padding)return;let w=ire(m.tag,t);try{n?.recordPacket(m.tag,a)}catch(B){if(i.enforceGrammar)throw B;F.printDebugError(B)}w.packets=new r,w.fromStream=F.isStream(m.packet),g=w.fromStream;try{await w.read(m.packet,i)}catch(B){throw B instanceof Ct?B:F.wrapError(new dA(`Parsing ${w.constructor.name} failed`),B)}await u.write(w)}catch(w){let B=w instanceof Bu&&m.tag<=39,C=w instanceof Ct&&!(w instanceof Bu)&&!i.ignoreUnsupportedPackets,x=w instanceof dA&&!i.ignoreMalformedPackets,_=dw(m.tag),R=!(w instanceof Bu||w instanceof Ct||w instanceof dA);if(B||C||x||_||R)s?A=w:await u.abort(w);else{let U=new hA(m.tag,m.packet);await u.write(U)}F.printDebugError(w)}}),g&&(f=null),A)throw await d.readToEnd(),A;let p=await d.peekBytes(2);if(!p||!p.length){try{n?.recordEnd()}catch(m){if(i.enforceGrammar)throw m;F.printDebugError(m)}await u.ready,await u.close();return}}}catch(f){await u.abort(f)}});let o=Xn(this.stream);for(;;){let{done:c,value:l}=await o.read();if(c?this.stream=null:this.push(l),c||dw(l.constructor.tag))break}o.releaseLock()}write(){let e=[];for(let t=0;t<this.length;t++){let i=this[t]instanceof hA?this[t].tag:this[t].constructor.tag,n=this[t].write();if(F.isStream(n)&&dw(this[t].constructor.tag)){let s=[],a=0,o=512;e.push(xw(i)),e.push(gr(n,c=>{if(s.push(c),a+=c.length,a>=o){let l=Math.min(Math.log(a)/Math.LN2|0,30),d=2**l,u=F.concat([hee(l)].concat(s));return s=[u.subarray(1+d)],a=s[0].length,u.subarray(0,1+d)}},()=>F.concat([nx(a)].concat(s))))}else{if(F.isStream(n)){let s=0;e.push(gr(bl(n),a=>{s+=a.length},()=>AU(i,s)))}else e.push(AU(i,n.length));e.push(n)}}return F.concat(e)}filterByTag(...e){let t=new r,i=n=>s=>n===s;for(let n=0;n<this.length;n++)e.some(i(this[n].constructor.tag))&&t.push(this[n]);return t}findPacket(e){return this.find(t=>t.constructor.tag===e)}indexOfTag(...e){let t=[],i=this,n=s=>a=>s===a;for(let s=0;s<this.length;s++)e.some(n(i[s].constructor.tag))&&t.push(s);return t}},bs=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="GrammarError"}};(function(r){r[r.EmptyMessage=0]="EmptyMessage",r[r.PlaintextOrEncryptedData=1]="PlaintextOrEncryptedData",r[r.EncryptedSessionKeys=2]="EncryptedSessionKeys",r[r.StandaloneAdditionalAllowedData=3]="StandaloneAdditionalAllowedData"})(Zt||(Zt={}));Tu=class{constructor(){this.state=Zt.EmptyMessage,this.leadingOnePassSignatureCounter=0}recordPacket(e,t){switch(this.state){case Zt.EmptyMessage:case Zt.StandaloneAdditionalAllowedData:switch(e){case y.packet.literalData:case y.packet.compressedData:case y.packet.aeadEncryptedData:case y.packet.symEncryptedIntegrityProtectedData:case y.packet.symmetricallyEncryptedData:this.state=Zt.PlaintextOrEncryptedData;return;case y.packet.signature:if(this.state===Zt.StandaloneAdditionalAllowedData&&--this.leadingOnePassSignatureCounter<0)throw new bs("Trailing signature packet without OPS");return;case y.packet.onePassSignature:if(this.state===Zt.StandaloneAdditionalAllowedData)throw new bs("OPS following StandaloneAdditionalAllowedData");this.leadingOnePassSignatureCounter++;return;case y.packet.publicKeyEncryptedSessionKey:case y.packet.symEncryptedSessionKey:this.state=Zt.EncryptedSessionKeys;return;default:if(!t?.[e])throw new bs(`Unexpected packet ${e} in state ${this.state}`);this.state=Zt.StandaloneAdditionalAllowedData;return}case Zt.PlaintextOrEncryptedData:switch(e){case y.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new bs("Trailing signature packet without OPS");this.state=Zt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new bs(`Unexpected packet ${e} in state ${this.state}`);this.state=Zt.PlaintextOrEncryptedData;return}case Zt.EncryptedSessionKeys:switch(e){case y.packet.publicKeyEncryptedSessionKey:case y.packet.symEncryptedSessionKey:this.state=Zt.EncryptedSessionKeys;return;case y.packet.symEncryptedIntegrityProtectedData:case y.packet.aeadEncryptedData:case y.packet.symmetricallyEncryptedData:this.state=Zt.PlaintextOrEncryptedData;return;case y.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new bs("Trailing signature packet without OPS");this.state=Zt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new bs(`Unexpected packet ${e} in state ${this.state}`);this.state=Zt.EncryptedSessionKeys}}}recordEnd(){switch(this.state){case Zt.EmptyMessage:case Zt.PlaintextOrEncryptedData:case Zt.EncryptedSessionKeys:case Zt.StandaloneAdditionalAllowedData:if(this.leadingOnePassSignatureCounter>0)throw new bs("Missing trailing signature packets")}}},nre=F.constructAllowedPackets([lc,bn,$r]),Sl=class{static get tag(){return y.packet.compressedData}constructor(e=me){this.packets=null,this.algorithm=e.preferredCompressionAlgorithm,this.compressed=null}async read(e,t=me){await rx(e,async i=>{this.algorithm=await i.readByte(),this.compressed=i.remainder(),await this.decompress(t)})}write(){return this.compressed===null&&this.compress(),F.concat([new Uint8Array([this.algorithm]),this.compressed])}async decompress(e=me){let t=y.read(y.compression,this.algorithm),i=cre[t];if(!i)throw new Error(`${t} decompression not supported`);let n=await i(this.compressed);if(e.maxDecompressedMessageSize!==1/0){let s=0;n=gr(n,a=>{if(s+=a.length,s>e.maxDecompressedMessageSize)throw new Error("Maximum decompressed message size exceeded");return a})}(!pr(this.compressed)||Ot(this.compressed))&&(n=await cr(n)),this.packets=await Ft.fromBinary(n,nre,e,new Tu)}compress(){let e=y.read(y.compression,this.algorithm),t=ore[e];if(!t)throw new Error(`${e} compression not supported`);let i=this.packets.write(),n=t(i);(!pr(i)||Ot(i))&&(n=Fl(()=>cr(n))),this.compressed=n}};Rw=r=>({compressor:typeof CompressionStream<"u"&&(()=>new CompressionStream(r)),decompressor:typeof DecompressionStream<"u"&&(()=>new DecompressionStream(r))}),ore={zip:Uw(Rw("deflate-raw").compressor,gw),zlib:Uw(Rw("deflate").compressor,Xte)},cre={uncompressed:r=>r,zip:Uw(Rw("deflate-raw").decompressor,pw),zlib:Uw(Rw("deflate").decompressor,Zte),bzip2:are()},lre=F.constructAllowedPackets([lc,Sl,bn,$r]),Uu=class r{static get tag(){return y.packet.symEncryptedIntegrityProtectedData}static fromObject({version:e,aeadAlgorithm:t}){if(e!==1&&e!==2)throw new Error("Unsupported SEIPD version");let i=new r;return i.version=e,e===2&&(i.aeadAlgorithm=t),i}constructor(){this.version=null,this.cipherAlgorithm=null,this.aeadAlgorithm=null,this.chunkSizeByte=null,this.salt=null,this.encrypted=null,this.packets=null}async read(e){await rx(e,async t=>{if(this.version=await t.readByte(),this.version!==1&&this.version!==2)throw new Ct(`Version ${this.version} of the SEIP packet is unsupported.`);this.version===2&&(this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte(),this.salt=await t.readBytes(32)),this.encrypted=t.remainder()})}write(){return this.version===2?F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.salt,this.encrypted]):F.concat([new Uint8Array([this.version]),this.encrypted])}async encrypt(e,t,i=me){let{blockSize:n,keySize:s}=Dt(e);if(t.length!==s)throw new Error("Unexpected session key size");let a=this.packets.write();if(Ot(a)&&(a=await cr(a)),this.version===2)this.cipherAlgorithm=e,this.salt=jr(32),this.chunkSizeByte=i.aeadChunkSizeByte,this.encrypted=await Nw(this,"encrypt",t,a);else{let o=await pN(e),c=new Uint8Array([211,20]),l=F.concat([o,a,c]),d=await Us(y.hash.sha1,lA(l)),u=F.concat([l,d]);this.encrypted=await pA(e,t,u,new Uint8Array(n))}return!0}async decrypt(e,t,i=me){if(t.length!==Dt(e).keySize)throw new Error("Unexpected session key size");let n=bl(this.encrypted);Ot(n)&&(n=await cr(n));let s,a=!1;if(this.version===2){if(this.cipherAlgorithm!==e)throw new Error("Unexpected session key algorithm");s=await Nw(this,"decrypt",t,n)}else{let{blockSize:o}=Dt(e),c=await Ax(e,t,n,new Uint8Array(o)),l=Jr(lA(c),-20),d=Jr(c,0,-20),u=Promise.all([cr(await Us(y.hash.sha1,lA(d))),cr(l)]).then(([A,g])=>{if(!F.equalsUint8Array(A,g))throw new Error("Modification detected.");return new Uint8Array}),f=Jr(d,o+2);s=Jr(f,0,-2),s=Ei([s,Fl(()=>u)]),F.isStream(n)&&i.allowUnauthenticatedStream?a=!0:s=await cr(s)}return this.packets=await Ft.fromBinary(s,lre,i,new Tu,a),!0}};dre=F.constructAllowedPackets([lc,Sl,bn,$r]),NU=1,Fb=class{static get tag(){return y.packet.aeadEncryptedData}constructor(){this.version=NU,this.cipherAlgorithm=null,this.aeadAlgorithm=y.aead.eax,this.chunkSizeByte=null,this.iv=null,this.encrypted=null,this.packets=null}async read(e){await rx(e,async t=>{let i=await t.readByte();if(i!==NU)throw new Ct(`Version ${i} of the AEAD-encrypted data packet is not supported.`);this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte();let n=Ua(this.aeadAlgorithm,!0);this.iv=await t.readBytes(n.ivLength),this.encrypted=t.remainder()})}write(){return F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.iv,this.encrypted])}async decrypt(e,t,i=me){this.packets=await Ft.fromBinary(await Nw(this,"decrypt",t,bl(this.encrypted)),dre,i,new Tu)}async encrypt(e,t,i=me){this.cipherAlgorithm=e;let{ivLength:n}=Ua(this.aeadAlgorithm,!0);this.iv=jr(n),this.chunkSizeByte=i.aeadChunkSizeByte;let s=this.packets.write();this.encrypted=await Nw(this,"encrypt",t,s)}},yA=class r{static get tag(){return y.packet.publicKeyEncryptedSessionKey}constructor(){this.version=null,this.publicKeyID=new Ra,this.publicKeyVersion=null,this.publicKeyFingerprint=null,this.publicKeyAlgorithm=null,this.sessionKey=null,this.sessionKeyAlgorithm=null,this.encrypted={}}static fromObject({version:e,encryptionKeyPacket:t,anonymousRecipient:i,sessionKey:n,sessionKeyAlgorithm:s}){let a=new r;if(e!==3&&e!==6)throw new Error("Unsupported PKESK version");return a.version=e,e===6&&(a.publicKeyVersion=i?null:t.version,a.publicKeyFingerprint=i?null:t.getFingerprintBytes()),a.publicKeyID=i?Ra.wildcard():t.getKeyID(),a.publicKeyAlgorithm=t.algorithm,a.sessionKey=n,a.sessionKeyAlgorithm=s,a}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new Ct(`Version ${this.version} of the PKESK packet is unsupported.`);if(this.version===6){let i=e[t++];if(i){this.publicKeyVersion=e[t++];let n=i-1;this.publicKeyFingerprint=e.subarray(t,t+n),t+=n,this.publicKeyVersion>=5?this.publicKeyID.read(this.publicKeyFingerprint):this.publicKeyID.read(this.publicKeyFingerprint.subarray(-8))}else this.publicKeyID=Ra.wildcard()}else t+=this.publicKeyID.read(e.subarray(t,t+8));if(this.publicKeyAlgorithm=e[t++],this.encrypted=dte(this.publicKeyAlgorithm,e.subarray(t)),this.publicKeyAlgorithm===y.publicKey.x25519||this.publicKeyAlgorithm===y.publicKey.x448){if(this.version===3)this.sessionKeyAlgorithm=y.write(y.symmetric,this.encrypted.C.algorithm);else if(this.encrypted.C.algorithm!==null)throw new Error("Unexpected cleartext symmetric algorithm")}}write(){let e=[new Uint8Array([this.version])];return this.version===6?this.publicKeyFingerprint!==null?(e.push(new Uint8Array([this.publicKeyFingerprint.length+1,this.publicKeyVersion])),e.push(this.publicKeyFingerprint)):e.push(new Uint8Array([0])):e.push(this.publicKeyID.write()),e.push(new Uint8Array([this.publicKeyAlgorithm]),Fu(this.publicKeyAlgorithm,this.encrypted)),F.concatUint8Array(e)}async encrypt(e){let t=y.write(y.publicKey,this.publicKeyAlgorithm),i=this.version===3?this.sessionKeyAlgorithm:null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=OU(this.version,t,i,this.sessionKey);this.encrypted=await ote(t,i,e.publicParams,s,n)}async decrypt(e,t){if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Decryption error");let i=t?OU(this.version,this.publicKeyAlgorithm,t.sessionKeyAlgorithm,t.sessionKey):null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=await cte(this.publicKeyAlgorithm,e.publicParams,e.privateParams,this.encrypted,n,i),{sessionKey:a,sessionKeyAlgorithm:o}=ure(this.version,this.publicKeyAlgorithm,s,t);if(this.version===3){let c=this.publicKeyAlgorithm!==y.publicKey.x25519&&this.publicKeyAlgorithm!==y.publicKey.x448;if(this.sessionKeyAlgorithm=c?o:this.sessionKeyAlgorithm,a.length!==Dt(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}this.sessionKey=a}};IA=class r{static get tag(){return y.packet.symEncryptedSessionKey}constructor(e=me){this.version=e.aeadProtect?6:4,this.sessionKey=null,this.sessionKeyEncryptionAlgorithm=null,this.sessionKeyAlgorithm=null,this.aeadAlgorithm=y.write(y.aead,e.preferredAEADAlgorithm),this.encrypted=null,this.s2k=null,this.iv=null}read(e){let t=0;if(this.version=e[t++],this.version!==4&&this.version!==5&&this.version!==6)throw new Ct(`Version ${this.version} of the SKESK packet is unsupported.`);this.version===6&&t++;let i=e[t++];this.version>=5&&(this.aeadAlgorithm=e[t++],this.version===6&&t++);let n=e[t++];if(this.s2k=Pw(n),t+=this.s2k.read(e.subarray(t,e.length)),this.version>=5){let s=Ua(this.aeadAlgorithm,!0);this.iv=e.subarray(t,t+=s.ivLength)}this.version>=5||t<e.length?(this.encrypted=e.subarray(t,e.length),this.sessionKeyEncryptionAlgorithm=i):this.sessionKeyAlgorithm=i}write(){let e=this.encrypted===null?this.sessionKeyAlgorithm:this.sessionKeyEncryptionAlgorithm,t,i=this.s2k.write();if(this.version===6){let n=i.length,s=3+n+this.iv.length;t=F.concatUint8Array([new Uint8Array([this.version,s,e,this.aeadAlgorithm,n]),i,this.iv,this.encrypted])}else this.version===5?t=F.concatUint8Array([new Uint8Array([this.version,e,this.aeadAlgorithm]),i,this.iv,this.encrypted]):(t=F.concatUint8Array([new Uint8Array([this.version,e]),i]),this.encrypted!==null&&(t=F.concatUint8Array([t,this.encrypted])));return t}async decrypt(e,t=me){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm,{blockSize:n,keySize:s}=Dt(i),a=await this.s2k.produceKey(e,s,t);if(this.version>=5){let o=Ua(this.aeadAlgorithm,!0),c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await oc(y.hash.sha256,a,new Uint8Array,c,s):a,d=await o(i,l);this.sessionKey=await d.decrypt(this.encrypted,this.iv,c)}else if(this.encrypted!==null){let o=await Ax(i,a,this.encrypted,new Uint8Array(n));if(this.sessionKeyAlgorithm=y.write(y.symmetric,o[0]),this.sessionKey=o.subarray(1,o.length),this.sessionKey.length!==Dt(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}else this.sessionKey=a}async encrypt(e,t=me){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm;this.sessionKeyEncryptionAlgorithm=i,this.s2k=yN(t),this.s2k.generateSalt();let{blockSize:n,keySize:s}=Dt(i),a=await this.s2k.produceKey(e,s,t);if(this.sessionKey===null&&(this.sessionKey=Eb(this.sessionKeyAlgorithm)),this.version>=5){let o=Ua(this.aeadAlgorithm);this.iv=jr(o.ivLength);let c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await oc(y.hash.sha256,a,new Uint8Array,c,s):a,d=await o(i,l);this.encrypted=await d.encrypt(this.sessionKey,this.iv,c)}else{let o=F.concatUint8Array([new Uint8Array([this.sessionKeyAlgorithm]),this.sessionKey]);this.encrypted=await pA(i,a,o,new Uint8Array(n))}}},Rs=class r{static get tag(){return y.packet.publicKey}constructor(e=new Date,t=me){this.version=t.v6Keys?6:4,this.created=F.normalizeDate(e),this.algorithm=null,this.publicParams=null,this.expirationTimeV3=0,this.fingerprint=null,this.keyID=null}static fromSecretKeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:a,keyID:o,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=a,t.keyID=o,t.fingerprint=c,t}async read(e,t=me){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new Ct("Support for parsing v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version===4||this.version===5||this.version===6){this.created=F.readDate(e.subarray(i,i+4)),i+=4,this.algorithm=e[i++],this.version>=5&&(i+=4);let{read:n,publicParams:s}=lte(this.algorithm,e.subarray(i));if(this.version===6&&s.oid&&(s.oid.getName()===y.curve.curve25519Legacy||s.oid.getName()===y.curve.ed25519Legacy))throw new Error("Legacy curve25519 cannot be used with v6 keys");return this.publicParams=s,i+=n,await this.computeFingerprintAndKeyID(),i}throw new Ct(`Version ${this.version} of the key packet is unsupported.`)}write(){let e=[];e.push(new Uint8Array([this.version])),e.push(F.writeDate(this.created)),e.push(new Uint8Array([this.algorithm]));let t=Fu(this.algorithm,this.publicParams);return this.version>=5&&e.push(F.writeNumber(t.length,4)),e.push(t),F.concatUint8Array(e)}writeForHash(e){let t=this.writePublicKey(),i=149+e,n=e>=5?4:2;return F.concatUint8Array([new Uint8Array([i]),F.writeNumber(t.length,n),t])}isDecrypted(){return null}getCreationTime(){return this.created}getKeyID(){return this.keyID}async computeFingerprintAndKeyID(){if(await this.computeFingerprint(),this.keyID=new Ra,this.version>=5)this.keyID.read(this.fingerprint.subarray(0,8));else if(this.version===4)this.keyID.read(this.fingerprint.subarray(12,20));else throw new Error("Unsupported key version")}async computeFingerprint(){let e=this.writeForHash(this.version);if(this.version>=5)this.fingerprint=await Us(y.hash.sha256,e);else if(this.version===4)this.fingerprint=await Us(y.hash.sha1,e);else throw new Error("Unsupported key version")}getFingerprintBytes(){return this.fingerprint}getFingerprint(){return F.uint8ArrayToHex(this.getFingerprintBytes())}hasSameFingerprintAs(e){return this.version===e.version&&F.equalsUint8Array(this.writePublicKey(),e.writePublicKey())}getAlgorithmInfo(){let e={};e.algorithm=y.read(y.publicKey,this.algorithm);let t=this.publicParams.n||this.publicParams.p;return t?e.bits=F.uint8ArrayBitLength(t):this.publicParams.oid&&(e.curve=this.publicParams.oid.getName()),e}};Rs.prototype.readPublicKey=Rs.prototype.read;Rs.prototype.writePublicKey=Rs.prototype.write;fre=F.constructAllowedPackets([lc,Sl,bn,$r]),Pb=class{static get tag(){return y.packet.symmetricallyEncryptedData}constructor(){this.encrypted=null,this.packets=null}read(e){this.encrypted=e}write(){return this.encrypted}async decrypt(e,t,i=me){if(!i.allowUnauthenticatedMessages)throw new Error("Message is not authenticated.");let{blockSize:n}=Dt(e),s=await cr(bl(this.encrypted)),a=await Ax(e,t,s.subarray(n+2),s.subarray(2,n+2));this.packets=await Ft.fromBinary(a,fre,i)}async encrypt(e,t,i=me){let n=this.packets.write(),{blockSize:s}=Dt(e),a=await pN(e),o=await pA(e,t,a,new Uint8Array(s)),c=await pA(e,t,n,o.subarray(2));this.encrypted=F.concat([o,c])}},Ow=class r extends Rs{static get tag(){return y.packet.publicSubkey}constructor(e,t){super(e,t)}static fromSecretSubkeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:a,keyID:o,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=a,t.keyID=o,t.fingerprint=c,t}},Tb=class r{static get tag(){return y.packet.userAttribute}constructor(){this.attributes=[]}read(e){let t=0;for(;t<e.length;){let i=qR(e.subarray(t,e.length));t+=i.offset,this.attributes.push(F.uint8ArrayToString(e.subarray(t,t+i.len))),t+=i.len}}write(){let e=[];for(let t=0;t<this.attributes.length;t++)e.push(nx(this.attributes[t].length)),e.push(F.stringToUint8Array(this.attributes[t]));return F.concatUint8Array(e)}equals(e){return!e||!(e instanceof r)?!1:this.attributes.every(function(t,i){return t===e.attributes[i]})}},wA=class extends Rs{static get tag(){return y.packet.secretKey}constructor(e=new Date,t=me){super(e,t),this.keyMaterial=null,this.isEncrypted=null,this.s2kUsage=0,this.s2k=null,this.symmetric=null,this.aead=null,this.isLegacyAEAD=null,this.privateParams=null,this.usedModernAEAD=null}async read(e,t=me){let i=await this.readPublicKey(e,t),n=i;this.s2kUsage=e[i++],this.version===5&&i++,this.version===6&&this.s2kUsage&&i++;try{if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){this.symmetric=e[i++],this.s2kUsage===253&&(this.aead=e[i++]),this.version===6&&i++;let s=e[i++];if(this.s2k=Pw(s),i+=this.s2k.read(e.subarray(i,e.length)),this.s2k.type==="gnu-dummy")return}else this.s2kUsage&&(this.symmetric=this.s2kUsage);this.s2kUsage&&(this.isLegacyAEAD=this.s2kUsage===253&&(this.version===5||this.version===4&&t.parseAEADEncryptedV4KeysAsLegacy),this.s2kUsage!==253||this.isLegacyAEAD?(this.iv=e.subarray(i,i+Dt(this.symmetric).blockSize),this.usedModernAEAD=!1):(this.iv=e.subarray(i,i+Ua(this.aead).ivLength),this.usedModernAEAD=!0),i+=this.iv.length)}catch(s){if(!this.s2kUsage)throw s;this.unparseableKeyMaterial=e.subarray(n),this.isEncrypted=!0}if(this.version===5&&(i+=4),this.keyMaterial=e.subarray(i),this.isEncrypted=!!this.s2kUsage,!this.isEncrypted){let s;if(this.version===6)s=this.keyMaterial;else if(s=this.keyMaterial.subarray(0,-2),!F.equalsUint8Array(F.writeChecksum(s),this.keyMaterial.subarray(-2)))throw new Error("Key checksum mismatch");try{let{read:a,privateParams:o}=BU(this.algorithm,s,this.publicParams);if(a<s.length)throw new Error("Error reading MPIs");this.privateParams=o}catch(a){throw a instanceof Ct?a:new Error("Error reading MPIs")}}}write(){let e=this.writePublicKey();if(this.unparseableKeyMaterial)return F.concatUint8Array([e,this.unparseableKeyMaterial]);let t=[e];t.push(new Uint8Array([this.s2kUsage]));let i=[];if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){i.push(this.symmetric),this.s2kUsage===253&&i.push(this.aead);let n=this.s2k.write();this.version===6&&i.push(n.length),i.push(...n)}return this.s2kUsage&&this.s2k.type!=="gnu-dummy"&&i.push(...this.iv),(this.version===5||this.version===6&&this.s2kUsage)&&t.push(new Uint8Array([i.length])),t.push(new Uint8Array(i)),this.isDummy()||(this.s2kUsage||(this.keyMaterial=Fu(this.algorithm,this.privateParams)),this.version===5&&t.push(F.writeNumber(this.keyMaterial.length,4)),t.push(this.keyMaterial),!this.s2kUsage&&this.version!==6&&t.push(F.writeChecksum(this.keyMaterial))),F.concatUint8Array(t)}isDecrypted(){return this.isEncrypted===!1}isMissingSecretKeyMaterial(){return this.unparseableKeyMaterial!==void 0||this.isDummy()}isDummy(){return!!(this.s2k&&this.s2k.type==="gnu-dummy")}makeDummy(e=me){this.isDummy()||(this.isDecrypted()&&this.clearPrivateParams(),delete this.unparseableKeyMaterial,this.isEncrypted=null,this.keyMaterial=null,this.s2k=Pw(y.s2k.gnu,e),this.s2k.algorithm=0,this.s2k.c=0,this.s2k.type="gnu-dummy",this.s2kUsage=254,this.symmetric=y.symmetric.aes256,this.isLegacyAEAD=null,this.usedModernAEAD=null)}async encrypt(e,t=me){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key packet is already encrypted");if(!e)throw new Error("A non-empty passphrase is required for key encryption.");this.s2k=yN(t),this.s2k.generateSalt();let i=Fu(this.algorithm,this.privateParams);this.symmetric=y.symmetric.aes256;let{blockSize:n}=Dt(this.symmetric);if(t.aeadProtect){this.s2kUsage=253,this.aead=t.preferredAEADAlgorithm;let s=Ua(this.aead);this.isLegacyAEAD=this.version===5,this.usedModernAEAD=!this.isLegacyAEAD;let a=xw(this.constructor.tag),o=await V1(this.version,this.s2k,e,this.symmetric,this.aead,a,this.isLegacyAEAD,t),c=await s(this.symmetric,o);this.iv=this.isLegacyAEAD?jr(n):jr(s.ivLength);let l=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([a,this.writePublicKey()]);this.keyMaterial=await c.encrypt(i,this.iv.subarray(0,s.ivLength),l)}else{this.s2kUsage=254,this.usedModernAEAD=!1;let s=await V1(this.version,this.s2k,e,this.symmetric,void 0,void 0,void 0,t);this.iv=jr(n),this.keyMaterial=await pA(this.symmetric,s,F.concatUint8Array([i,await Us(y.hash.sha1,i)]),this.iv)}}async decrypt(e,t=me){if(this.isDummy())return!1;if(this.unparseableKeyMaterial)throw new Error("Key packet cannot be decrypted: unsupported S2K or cipher algo");if(this.isDecrypted())throw new Error("Key packet is already decrypted.");let i,n=xw(this.constructor.tag);if(this.s2kUsage===254||this.s2kUsage===253)i=await V1(this.version,this.s2k,e,this.symmetric,this.aead,n,this.isLegacyAEAD,t);else throw this.s2kUsage===255?new Error("Encrypted private key is authenticated using an insecure two-byte hash"):new Error("Private key is encrypted using an insecure S2K function: unsalted MD5");let s;if(this.s2kUsage===253){let a=Ua(this.aead,!0),o=await a(this.symmetric,i);try{let c=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([n,this.writePublicKey()]);s=await o.decrypt(this.keyMaterial,this.iv.subarray(0,a.ivLength),c)}catch(c){throw c.message==="Authentication tag mismatch"?new Error("Incorrect key passphrase: "+c.message):c}}else{let a=await Ax(this.symmetric,i,this.keyMaterial,this.iv);s=a.subarray(0,-20);let o=await Us(y.hash.sha1,s);if(!F.equalsUint8Array(o,a.subarray(-20)))throw new Error("Incorrect key passphrase")}try{let{privateParams:a}=BU(this.algorithm,s,this.publicParams);this.privateParams=a}catch{throw new Error("Error reading MPIs")}this.isEncrypted=!1,this.keyMaterial=null,this.s2kUsage=0,this.aead=null,this.symmetric=null,this.isLegacyAEAD=null}async validate(){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key is not decrypted");if(this.usedModernAEAD)return;let e;try{e=await fte(this.algorithm,this.publicParams,this.privateParams)}catch{e=!1}if(!e)throw new Error("Key is invalid")}async generate(e,t){if(this.version===6&&(this.algorithm===y.publicKey.ecdh&&t===y.curve.curve25519Legacy||this.algorithm===y.publicKey.eddsaLegacy))throw new Error(`Cannot generate v6 keys of type 'ecc' with curve ${t}. Generate a key of type 'curve25519' instead`);let{privateParams:i,publicParams:n}=await ute(this.algorithm,e,t);this.privateParams=i,this.publicParams=n,this.isEncrypted=!1}clearPrivateParams(){this.isMissingSecretKeyMaterial()||(Object.keys(this.privateParams).forEach(e=>{this.privateParams[e].fill(0),delete this.privateParams[e]}),this.privateParams=null,this.isEncrypted=!0)}};qw=class r{static get tag(){return y.packet.userID}constructor(){this.userID="",this.name="",this.email="",this.comment=""}static fromObject(e){if(F.isString(e)||e.name&&!F.isString(e.name)||e.email&&!F.isEmailAddress(e.email)||e.comment&&!F.isString(e.comment))throw new Error("Invalid user ID format");let t=new r;Object.assign(t,e);let i=[];return t.name&&i.push(t.name),t.comment&&i.push(`(${t.comment})`),t.email&&i.push(`<${t.email}>`),t.userID=i.join(" "),t}read(e,t=me){let i=F.decodeUTF8(e);if(i.length>t.maxUserIDLength)throw new Error("User ID string is too long");let n=o=>/^[^\s@]+@[^\s@]+$/.test(o),s=i.indexOf("<"),a=i.lastIndexOf(">");if(s!==-1&&a!==-1&&a>s){let o=i.substring(s+1,a);if(n(o)){this.email=o;let c=i.substring(0,s).trim(),l=c.indexOf("("),d=c.lastIndexOf(")");l!==-1&&d!==-1&&d>l?(this.comment=c.substring(l+1,d).trim(),this.name=c.substring(0,l).trim()):(this.name=c,this.comment="")}}else n(i.trim())&&(this.email=i.trim(),this.name="",this.comment="");this.userID=i}write(){return F.encodeUTF8(this.userID)}equals(e){return e&&e.userID===this.userID}},Mw=class extends wA{static get tag(){return y.packet.secretSubkey}constructor(e=new Date,t=me){super(e,t)}},Lw=class{constructor(e){this.packets=e||new Ft}write(){return this.packets.write()}armor(e=me){let t=this.packets.some(i=>i.constructor.tag===$r.tag&&i.version!==6);return PA(y.armor.signature,this.write(),void 0,void 0,void 0,t,e)}getSigningKeyIDs(){return this.packets.map(e=>e.issuerKeyID)}};Nb=class r{constructor(e,t){this.userID=e.constructor.tag===y.packet.userID?e:null,this.userAttribute=e.constructor.tag===y.packet.userAttribute?e:null,this.selfCertifications=[],this.otherCertifications=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ft;return e.push(this.userID||this.userAttribute),e.push(...this.revocationSignatures),e.push(...this.selfCertifications),e.push(...this.otherCertifications),e}clone(){let e=new r(this.userID||this.userAttribute,this.mainKey);return e.selfCertifications=[...this.selfCertifications],e.otherCertifications=[...this.otherCertifications],e.revocationSignatures=[...this.revocationSignatures],e}async certify(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},a=new r(s.userID||s.userAttribute,this.mainKey);return a.otherCertifications=await Promise.all(e.map(async function(o){if(!o.isPrivate())throw new Error("Need private key for signing");if(o.hasSameFingerprintAs(n))throw new Error("The user's own key can only be used for self-certifications");let c=await o.getSigningKey(void 0,t,void 0,i);return Ts(s,[o],c.keyPacket,{signatureType:y.signature.certGeneric,keyFlags:[y.keyFlags.certifyKeys|y.keyFlags.signData]},t,void 0,void 0,void 0,i)})),await a.update(this,t,i),a}async isRevoked(e,t,i=new Date,n=me){let s=this.mainKey.keyPacket;return Ru(s,y.signature.certRevocation,{key:s,userID:this.userID,userAttribute:this.userAttribute},this.revocationSignatures,e,t,i,n)}async verifyCertificate(e,t,i=new Date,n){let s=this,a=this.mainKey.keyPacket,o={userID:this.userID,userAttribute:this.userAttribute,key:a},{issuerKeyID:c}=e,l=t.filter(d=>d.getKeys(c).length>0);return l.length===0?null:(await Promise.all(l.map(async d=>{let u=await d.getSigningKey(c,e.created,void 0,n);if(e.revoked||await s.isRevoked(e,u.keyPacket,i,n))throw new Error("User certificate is revoked");try{await e.verify(u.keyPacket,y.signature.certGeneric,o,i,void 0,n)}catch(f){throw F.wrapError("User certificate is invalid",f)}})),!0)}async verifyAllCertifications(e,t=new Date,i){let n=this,s=this.selfCertifications.concat(this.otherCertifications);return Promise.all(s.map(async a=>({keyID:a.issuerKeyID,valid:await n.verifyCertificate(a,e,t,i).catch(()=>!1)})))}async verify(e=new Date,t){if(!this.selfCertifications.length)throw new Error("No self-certifications found");let i=this,n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},a;for(let o=this.selfCertifications.length-1;o>=0;o--)try{let c=this.selfCertifications[o];if(c.revoked||await i.isRevoked(c,void 0,e,t))throw new Error("Self-certification is revoked");try{await c.verify(n,y.signature.certGeneric,s,e,void 0,t)}catch(l){throw F.wrapError("Self-certification is invalid",l)}return!0}catch(c){a=c}throw a}async update(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n};await El(e,this,"selfCertifications",t,async function(a){try{return await a.verify(n,y.signature.certGeneric,s,t,!1,i),!0}catch{return!1}}),await El(e,this,"otherCertifications",t),await El(e,this,"revocationSignatures",t,function(a){return Ru(n,y.signature.certRevocation,s,[a],void 0,void 0,t,i)})}async revoke(e,{flag:t=y.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=me){let a={userID:this.userID,userAttribute:this.userAttribute,key:e},o=new r(a.userID||a.userAttribute,this.mainKey);return o.revocationSignatures.push(await Ts(a,[],e,{signatureType:y.signature.certRevocation,reasonForRevocationFlag:y.write(y.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await o.update(this),o}},xA=class r{constructor(e,t){this.keyPacket=e,this.bindingSignatures=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ft;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.bindingSignatures),e}clone(){let e=new r(this.keyPacket,this.mainKey);return e.bindingSignatures=[...this.bindingSignatures],e.revocationSignatures=[...this.revocationSignatures],e}async isRevoked(e,t,i=new Date,n=me){let s=this.mainKey.keyPacket;return Ru(s,y.signature.subkeyRevocation,{key:s,bind:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verify(e=new Date,t=me){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s=await $n(this.bindingSignatures,i,y.signature.subkeyBinding,n,e,t);if(s.revoked||await this.isRevoked(s,null,e,t))throw new Error("Subkey is revoked");if(Ub(this.keyPacket,s,e))throw new Error("Subkey is expired");return s}async getExpirationTime(e=new Date,t=me){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s;try{s=await $n(this.bindingSignatures,i,y.signature.subkeyBinding,n,e,t)}catch{return null}let a=Hw(this.keyPacket,s),o=s.getExpirationTime();return a<o?a:o}async update(e,t=new Date,i=me){let n=this.mainKey.keyPacket;if(!this.hasSameFingerprintAs(e))throw new Error("Subkey update method: fingerprints of subkeys not equal");this.keyPacket.constructor.tag===y.packet.publicSubkey&&e.keyPacket.constructor.tag===y.packet.secretSubkey&&(this.keyPacket=e.keyPacket);let s=this,a={key:n,bind:s.keyPacket};await El(e,this,"bindingSignatures",t,async function(o){for(let c=0;c<s.bindingSignatures.length;c++)if(s.bindingSignatures[c].issuerKeyID.equals(o.issuerKeyID))return o.created>s.bindingSignatures[c].created&&(s.bindingSignatures[c]=o),!1;try{return await o.verify(n,y.signature.subkeyBinding,a,t,void 0,i),!0}catch{return!1}}),await El(e,this,"revocationSignatures",t,function(o){return Ru(n,y.signature.subkeyRevocation,a,[o],void 0,void 0,t,i)})}async revoke(e,{flag:t=y.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=me){let a={key:e,bind:this.keyPacket},o=new r(this.keyPacket,this.mainKey);return o.revocationSignatures.push(await Ts(a,[],e,{signatureType:y.signature.subkeyRevocation,reasonForRevocationFlag:y.write(y.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await o.update(this),o}hasSameFingerprintAs(e){return this.keyPacket.hasSameFingerprintAs(e.keyPacket||e)}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","isDecrypted"].forEach(r=>{xA.prototype[r]=function(){return this.keyPacket[r]()}});mre=F.constructAllowedPackets([$r]),HU=new Set([y.packet.publicKey,y.packet.privateKey]),KU=new Set([y.packet.publicKey,y.packet.privateKey,y.packet.publicSubkey,y.packet.privateSubkey]),Kw=class{packetListToStructure(e,t=new Set){let i,n,s,a;for(let o of e){if(o instanceof hA){KU.has(o.tag)&&!a&&(HU.has(o.tag)?a=HU:a=KU);continue}let c=o.constructor.tag;if(a){if(!a.has(c))continue;a=null}if(t.has(c))throw new Error(`Unexpected packet type: ${c}`);switch(c){case y.packet.publicKey:case y.packet.secretKey:if(this.keyPacket)throw new Error("Key block contains multiple keys");if(this.keyPacket=o,n=this.getKeyID(),!n)throw new Error("Missing Key ID");break;case y.packet.userID:case y.packet.userAttribute:i=new Nb(o,this),this.users.push(i);break;case y.packet.publicSubkey:case y.packet.secretSubkey:i=null,s=new xA(o,this),this.subkeys.push(s);break;case y.packet.signature:switch(o.signatureType){case y.signature.certGeneric:case y.signature.certPersona:case y.signature.certCasual:case y.signature.certPositive:if(!i){F.printDebug("Dropping certification signatures without preceding user packet");continue}o.issuerKeyID.equals(n)?i.selfCertifications.push(o):i.otherCertifications.push(o);break;case y.signature.certRevocation:i?i.revocationSignatures.push(o):this.directSignatures.push(o);break;case y.signature.key:this.directSignatures.push(o);break;case y.signature.subkeyBinding:if(!s){F.printDebug("Dropping subkey binding signature without preceding subkey packet");continue}s.bindingSignatures.push(o);break;case y.signature.keyRevocation:this.revocationSignatures.push(o);break;case y.signature.subkeyRevocation:if(!s){F.printDebug("Dropping subkey revocation signature without preceding subkey packet");continue}s.revocationSignatures.push(o);break}break}}}toPacketList(){let e=new Ft;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.directSignatures),this.users.map(t=>e.push(...t.toPacketList())),this.subkeys.map(t=>e.push(...t.toPacketList())),e}clone(e=!1){let t=new this.constructor(this.toPacketList());return e&&t.getKeys().forEach(i=>{if(i.keyPacket=Object.create(Object.getPrototypeOf(i.keyPacket),Object.getOwnPropertyDescriptors(i.keyPacket)),!i.keyPacket.isDecrypted())return;let n={};Object.keys(i.keyPacket.privateParams).forEach(s=>{n[s]=new Uint8Array(i.keyPacket.privateParams[s])}),i.keyPacket.privateParams=n}),t}getSubkeys(e=null){return this.subkeys.filter(i=>!e||i.getKeyID().equals(e,!0))}getKeys(e=null){let t=[];return(!e||this.getKeyID().equals(e,!0))&&t.push(this),t.concat(this.getSubkeys(e))}getKeyIDs(){return this.getKeys().map(e=>e.getKeyID())}getUserIDs(){return this.users.map(e=>e.userID?e.userID.userID:null).filter(e=>e!==null)}write(){return this.toPacketList().write()}async getSigningKey(e=null,t=new Date,i={},n=me){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{rc(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let a=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),o;for(let c of a)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await $n(c.bindingSignatures,s,y.signature.subkeyBinding,l,t,n);if(!qU(c.keyPacket,d,n))continue;if(!d.embeddedSignature)throw new Error("Missing embedded signature");return await $n([d.embeddedSignature],c.keyPacket,y.signature.keyBinding,l,t,n),rc(c.keyPacket,n),c}catch(l){o=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&qU(s,c,n))return rc(s,n),this}catch(c){o=c}throw F.wrapError("Could not find valid signing key packet in key "+this.getKeyID().toHex(),o)}async getEncryptionKey(e,t=new Date,i={},n=me){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{rc(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let a=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),o;for(let c of a)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await $n(c.bindingSignatures,s,y.signature.subkeyBinding,l,t,n);if(MU(c.keyPacket,d,n))return rc(c.keyPacket,n),c}catch(l){o=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&MU(s,c,n))return rc(s,n),this}catch(c){o=c}throw F.wrapError("Could not find valid encryption key packet in key "+this.getKeyID().toHex(),o)}async isRevoked(e,t,i=new Date,n=me){return Ru(this.keyPacket,y.signature.keyRevocation,{key:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verifyPrimaryKey(e=new Date,t={},i=me){let n=this.keyPacket;if(await this.isRevoked(null,null,e,i))throw new Error("Primary key is revoked");let s=await this.getPrimarySelfSignature(e,t,i);if(Ub(n,s,e))throw new Error("Primary key is expired");if(n.version!==6){let a=await $n(this.directSignatures,n,y.signature.key,{key:n},e,i).catch(()=>{});if(a&&Ub(n,a,e))throw new Error("Primary key is expired")}}async getExpirationTime(e,t=me){let i;try{let n=await this.getPrimarySelfSignature(null,e,t),s=Hw(this.keyPacket,n),a=n.getExpirationTime(),o=this.keyPacket.version!==6&&await $n(this.directSignatures,this.keyPacket,y.signature.key,{key:this.keyPacket},null,t).catch(()=>{});if(o){let c=Hw(this.keyPacket,o);i=Math.min(s,a,c)}else i=s<a?s:a}catch{i=null}return F.normalizeDate(i)}async getPrimarySelfSignature(e=new Date,t={},i=me){let n=this.keyPacket;if(n.version===6)return $n(this.directSignatures,n,y.signature.key,{key:n},e,i);let{selfCertification:s}=await this.getPrimaryUser(e,t,i);return s}async getPrimaryUser(e=new Date,t={},i=me){let n=this.keyPacket,s=[],a;for(let d=0;d<this.users.length;d++)try{let u=this.users[d];if(!u.userID)continue;if(t.name!==void 0&&u.userID.name!==t.name||t.email!==void 0&&u.userID.email!==t.email||t.comment!==void 0&&u.userID.comment!==t.comment)throw new Error("Could not find user that matches that user ID");let f={userID:u.userID,key:n},A=await $n(u.selfCertifications,n,y.signature.certGeneric,f,e,i);s.push({index:d,user:u,selfCertification:A})}catch(u){a=u}if(!s.length)throw a||new Error("Could not find primary user");await Promise.all(s.map(async d=>{d.selfCertification.revoked||await d.user.isRevoked(d.selfCertification,null,e,i)}));let o=s.sort(function(d,u){let f=d.selfCertification,A=u.selfCertification;return A.revoked-f.revoked||f.isPrimaryUserID-A.isPrimaryUserID||f.created-A.created}).pop(),{user:c,selfCertification:l}=o;if(l.revoked||await c.isRevoked(l,null,e,i))throw new Error("Primary user is revoked");return o}async update(e,t=new Date,i=me){if(!this.hasSameFingerprintAs(e))throw new Error("Primary key fingerprints must be equal to update the key");if(!this.isPrivate()&&e.isPrivate()){if(!(this.subkeys.length===e.subkeys.length&&this.subkeys.every(a=>e.subkeys.some(o=>a.hasSameFingerprintAs(o)))))throw new Error("Cannot update public key with private key if subkeys mismatch");return e.update(this,i)}let n=this.clone();return await El(e,n,"revocationSignatures",t,s=>Ru(n.keyPacket,y.signature.keyRevocation,n,[s],null,e.keyPacket,t,i)),await El(e,n,"directSignatures",t),await Promise.all(e.users.map(async s=>{let a=n.users.filter(o=>s.userID&&s.userID.equals(o.userID)||s.userAttribute&&s.userAttribute.equals(o.userAttribute));if(a.length>0)await Promise.all(a.map(o=>o.update(s,t,i)));else{let o=s.clone();o.mainKey=n,n.users.push(o)}})),await Promise.all(e.subkeys.map(async s=>{let a=n.subkeys.filter(o=>o.hasSameFingerprintAs(s));if(a.length>0)await Promise.all(a.map(o=>o.update(s,t,i)));else{let o=s.clone();o.mainKey=n,n.subkeys.push(o)}})),n}async getRevocationCertificate(e=new Date,t=me){let i={key:this.keyPacket},n=await $n(this.revocationSignatures,this.keyPacket,y.signature.keyRevocation,i,e,t),s=new Ft;s.push(n);let a=this.keyPacket.version!==6;return PA(y.armor.publicKey,s.write(),null,null,"This is a revocation certificate",a,t)}async applyRevocationCertificate(e,t=new Date,i=me){let n=await ix(e),a=(await Ft.fromBinary(n.data,mre,i)).findPacket(y.packet.signature);if(!a||a.signatureType!==y.signature.keyRevocation)throw new Error("Could not find revocation signature packet");if(!a.issuerKeyID.equals(this.getKeyID()))throw new Error("Revocation signature does not match key");try{await a.verify(this.keyPacket,y.signature.keyRevocation,{key:this.keyPacket},t,void 0,i)}catch(c){throw F.wrapError("Could not verify revocation signature",c)}let o=this.clone();return o.revocationSignatures.push(a),o}async signPrimaryUser(e,t,i,n=me){let{index:s,user:a}=await this.getPrimaryUser(t,i,n),o=await a.certify(e,t,n),c=this.clone();return c.users[s]=o,c}async signAllUsers(e,t=new Date,i=me){let n=this.clone();return n.users=await Promise.all(this.users.map(function(s){return s.certify(e,t,i)})),n}async verifyPrimaryUser(e,t=new Date,i,n=me){let s=this.keyPacket,{user:a}=await this.getPrimaryUser(t,i,n);return e?await a.verifyAllCertifications(e,t,n):[{keyID:s.getKeyID(),valid:await a.verify(t,n).catch(()=>!1)}]}async verifyAllUsers(e,t=new Date,i=me){let n=this.keyPacket,s=[];return await Promise.all(this.users.map(async a=>{let o=e?await a.verifyAllCertifications(e,t,i):[{keyID:n.getKeyID(),valid:await a.verify(t,i).catch(()=>!1)}];s.push(...o.map(c=>({userID:a.userID?a.userID.userID:null,userAttribute:a.userAttribute,keyID:c.keyID,valid:c.valid})))})),s}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","hasSameFingerprintAs"].forEach(r=>{Kw.prototype[r]=xA.prototype[r]});Gw=class extends Kw{constructor(e){if(super(),this.keyPacket=null,this.revocationSignatures=[],this.directSignatures=[],this.users=[],this.subkeys=[],e&&(this.packetListToStructure(e,new Set([y.packet.secretKey,y.packet.secretSubkey])),!this.keyPacket))throw new Error("Invalid key: missing public-key packet")}isPrivate(){return!1}toPublic(){return this}armor(e=me){let t=this.keyPacket.version!==6;return PA(y.armor.publicKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}},zw=class r extends Gw{constructor(e){if(super(),this.packetListToStructure(e,new Set([y.packet.publicKey,y.packet.publicSubkey])),!this.keyPacket)throw new Error("Invalid key: missing private-key packet")}isPrivate(){return!0}toPublic(){let e=new Ft,t=this.toPacketList();for(let i of t)switch(i.constructor.tag){case y.packet.secretKey:{let n=Rs.fromSecretKeyPacket(i);e.push(n);break}case y.packet.secretSubkey:{let n=Ow.fromSecretSubkeyPacket(i);e.push(n);break}default:e.push(i)}return new Gw(e)}armor(e=me){let t=this.keyPacket.version!==6;return PA(y.armor.privateKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}async getDecryptionKeys(e,t=new Date,i={},n=me){let s=this.keyPacket,a=[],o=null;for(let l=0;l<this.subkeys.length;l++)if(!e||this.subkeys[l].getKeyID().equals(e,!0)){if(this.subkeys[l].keyPacket.isDummy()){o=o||new Error("Gnu-dummy key packets cannot be used for decryption");continue}try{let d={key:s,bind:this.subkeys[l].keyPacket},u=await $n(this.subkeys[l].bindingSignatures,s,y.signature.subkeyBinding,d,t,n);LU(this.subkeys[l].keyPacket,u,n)&&a.push(this.subkeys[l])}catch(d){o=d}}let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e,!0))&&LU(s,c,n)&&(s.isDummy()?o=o||new Error("Gnu-dummy key packets cannot be used for decryption"):a.push(this)),a.length===0)throw o||new Error("No decryption key packets found");return a}isDecrypted(){return this.getKeys().some(({keyPacket:e})=>e.isDecrypted())}async validate(e=me){if(!this.isPrivate())throw new Error("Cannot validate a public key");let t;if(!this.keyPacket.isDummy())t=this.keyPacket;else{let i=await this.getSigningKey(null,null,void 0,{...e,rejectPublicKeyAlgorithms:new Set,minRSABits:0});i&&!i.keyPacket.isDummy()&&(t=i.keyPacket)}if(t)return t.validate();{let i=this.getKeys();if(i.map(s=>s.keyPacket.isDummy()).every(Boolean))throw new Error("Cannot validate an all-gnu-dummy key");return Promise.all(i.map(s=>s.keyPacket.validate()))}}clearPrivateParams(){this.getKeys().forEach(({keyPacket:e})=>{e.isDecrypted()&&e.clearPrivateParams()})}async revoke({flag:e=y.reasonForRevocation.noReason,string:t=""}={},i=new Date,n=me){if(!this.isPrivate())throw new Error("Need private key for revoking");let s={key:this.keyPacket},a=this.clone();return a.revocationSignatures.push(await Ts(s,[],this.keyPacket,{signatureType:y.signature.keyRevocation,reasonForRevocationFlag:y.write(y.reasonForRevocation,e),reasonForRevocationString:t},i,void 0,void 0,void 0,n)),a}async addSubkey(e={}){let t={...me,...e.config};if(e.passphrase)throw new Error("Subkey could not be encrypted here, please encrypt whole key");if(e.rsaBits<t.minRSABits)throw new Error(`rsaBits should be at least ${t.minRSABits}, got: ${e.rsaBits}`);let i=this.keyPacket;if(i.isDummy())throw new Error("Cannot add subkey to gnu-dummy primary key");if(!i.isDecrypted())throw new Error("Key is not decrypted");let n=i.getAlgorithmInfo();n.type=yre(n.algorithm),n.rsaBits=n.bits||4096,n.curve=n.curve||"curve25519Legacy",e=Rb(e,n);let s=await bN(e,{...t,v6Keys:this.keyPacket.version===6});rc(s,t);let a=await vN(s,i,e,t),o=this.toPacketList();return o.push(s,a),new r(o)}};Ire=F.constructAllowedPackets([Rs,Ow,wA,Mw,qw,Tb,$r]);Cre=F.constructAllowedPackets([lc,Sl,Fb,Uu,Pb,yA,IA,bn,$r]),Ere=F.constructAllowedPackets([IA]),Bre=F.constructAllowedPackets([$r]),CA=class r{constructor(e){this.packets=e||new Ft}getEncryptionKeyIDs(){let e=[];return this.packets.filterByTag(y.packet.publicKeyEncryptedSessionKey).forEach(function(i){e.push(i.publicKeyID)}),e}getSigningKeyIDs(){let e=this.unwrapCompressed(),t=e.packets.filterByTag(y.packet.onePassSignature);return t.length>0?t.map(n=>n.issuerKeyID):e.packets.filterByTag(y.packet.signature).map(n=>n.issuerKeyID)}async decrypt(e,t,i,n=new Date,s=me){let a=this.packets.filterByTag(y.packet.symmetricallyEncryptedData,y.packet.symEncryptedIntegrityProtectedData,y.packet.aeadEncryptedData);if(a.length===0)throw new Error("No encrypted data found");let o=a[0],c=o.cipherAlgorithm,l=i||await this.decryptSessionKeys(e,t,c,n,s),d=null,u=Promise.all(l.map(async({algorithm:A,data:g})=>{if(!F.isUint8Array(g)||!o.cipherAlgorithm&&!F.isString(A))throw new Error("Invalid session key for decryption.");try{let p=o.cipherAlgorithm||y.write(y.symmetric,A);await o.decrypt(p,g,s)}catch(p){F.printDebugError(p),d=p}}));if(gb(o.encrypted),o.encrypted=null,await u,!o.packets||!o.packets.length)throw d||new Error("Decryption failed.");let f=new r(o.packets);return o.packets=new Ft,f}async decryptSessionKeys(e,t,i,n=new Date,s=me){let a=[],o;if(t){let c=this.packets.filterByTag(y.packet.symEncryptedSessionKey);if(c.length===0)throw new Error("No symmetrically encrypted session key packet found.");await Promise.all(t.map(async function(l,d){let u;d?u=await Ft.fromBinary(c.write(),Ere,s):u=c,await Promise.all(u.map(async function(f){try{await f.decrypt(l,s),a.push(f)}catch(A){F.printDebugError(A),A instanceof vu&&(o=A)}}))}))}else if(e){let c=this.packets.filterByTag(y.packet.publicKeyEncryptedSessionKey);if(c.length===0)throw new Error("No public key encrypted session key packet found.");await Promise.all(c.map(async function(l){await Promise.all(e.map(async function(d){let u;try{u=(await d.getDecryptionKeys(l.publicKeyID,null,void 0,s)).map(A=>A.keyPacket)}catch(A){o=A;return}let f=[y.symmetric.aes256,y.symmetric.aes128,y.symmetric.tripledes,y.symmetric.cast5];try{let A=await d.getPrimarySelfSignature(n,void 0,s);A.preferredSymmetricAlgorithms&&(f=f.concat(A.preferredSymmetricAlgorithms))}catch{}await Promise.all(u.map(async function(A){if(!A.isDecrypted())throw new Error("Decryption key is not decrypted.");if(s.constantTimePKCS1Decryption&&(l.publicKeyAlgorithm===y.publicKey.rsaEncrypt||l.publicKeyAlgorithm===y.publicKey.rsaEncryptSign||l.publicKeyAlgorithm===y.publicKey.rsaSign||l.publicKeyAlgorithm===y.publicKey.elgamal)){let p=l.write();await Promise.all((i?[i]:Array.from(s.constantTimePKCS1DecryptionSupportedSymmetricAlgorithms)).map(async I=>{let m=new yA;m.read(p);let w={sessionKeyAlgorithm:I,sessionKey:Eb(I)};try{await m.decrypt(A,w),a.push(m)}catch(B){F.printDebugError(B),o=B}}))}else try{await l.decrypt(A);let p=i||l.sessionKeyAlgorithm;if(p&&!f.includes(y.write(y.symmetric,p)))throw new Error("A non-preferred symmetric algorithm was used.");a.push(l)}catch(p){F.printDebugError(p),o=p}}))})),gb(l.encrypted),l.encrypted=null}))}else throw new Error("No key or password specified.");if(a.length>0){if(a.length>1){let c=new Set;a=a.filter(l=>{let d=l.sessionKeyAlgorithm+F.uint8ArrayToString(l.sessionKey);return c.has(d)?!1:(c.add(d),!0)})}return a.map(c=>({data:c.sessionKey,algorithm:c.sessionKeyAlgorithm&&y.read(y.symmetric,c.sessionKeyAlgorithm)}))}throw o||new Error("Session key decryption failed.")}getLiteralData(){let t=this.unwrapCompressed().packets.findPacket(y.packet.literalData);return t&&t.getBytes()||null}getFilename(){let t=this.unwrapCompressed().packets.findPacket(y.packet.literalData);return t&&t.getFilename()||null}getText(){let t=this.unwrapCompressed().packets.findPacket(y.packet.literalData);return t?t.getText():null}static async generateSessionKey(e=[],t=new Date,i=[],n=me){let{symmetricAlgo:s,aeadAlgo:a}=await pre(e,t,i,n),o=y.read(y.symmetric,s),c=a?y.read(y.aead,a):void 0;return await Promise.all(e.map(d=>d.getEncryptionKey().catch(()=>null).then(u=>{if(u&&(u.keyPacket.algorithm===y.publicKey.x25519||u.keyPacket.algorithm===y.publicKey.x448)&&!c&&!F.isAES(s))throw new Error("Could not generate a session key compatible with the given `encryptionKeys`: X22519 and X448 keys can only be used to encrypt AES session keys; change `config.preferredSymmetricAlgorithm` accordingly.")}))),{data:Eb(s),algorithm:o,aeadAlgorithm:c}}async encrypt(e,t,i,n=!1,s=[],a=new Date,o=[],c=me){if(i){if(!F.isUint8Array(i.data)||!F.isString(i.algorithm))throw new Error("Invalid session key for encryption.")}else if(e&&e.length)i=await r.generateSessionKey(e,a,o,c);else if(t&&t.length)i=await r.generateSessionKey(void 0,void 0,void 0,c);else throw new Error("No keys, passwords, or session key provided.");let{data:l,algorithm:d,aeadAlgorithm:u}=i,f=await r.encryptSessionKey(l,d,u,e,t,n,s,a,o,c),A=Uu.fromObject({version:u?2:1,aeadAlgorithm:u?y.write(y.aead,u):null});A.packets=this.packets;let g=y.write(y.symmetric,d);return await A.encrypt(g,l,c),f.packets.push(A),A.packets=new Ft,f}static async encryptSessionKey(e,t,i,n,s,a=!1,o=[],c=new Date,l=[],d=me){let u=new Ft,f=y.write(y.symmetric,t),A=i&&y.write(y.aead,i);if(n){let g=await Promise.all(n.map(async function(p,I){let m=await p.getEncryptionKey(o[I],c,l,d),w=yA.fromObject({version:A?6:3,encryptionKeyPacket:m.keyPacket,anonymousRecipient:a,sessionKey:e,sessionKeyAlgorithm:f});return await w.encrypt(m.keyPacket),delete w.sessionKey,w}));u.push(...g)}if(s){let g=async function(w,B){try{return await w.decrypt(B,d),1}catch{return 0}},p=(w,B)=>w+B,I=async function(w,B,C,x){let _=new IA(d);return _.sessionKey=w,_.sessionKeyAlgorithm=B,C&&(_.aeadAlgorithm=C),await _.encrypt(x,d),d.passwordCollisionCheck&&(await Promise.all(s.map(U=>g(_,U)))).reduce(p)!==1?I(w,B,x):(delete _.sessionKey,_)},m=await Promise.all(s.map(w=>I(e,f,A,w)));u.push(...m)}return new r(u)}async sign(e=[],t=[],i=null,n=[],s=new Date,a=[],o=[],c=[],l=me){let d=new Ft,u=this.packets.findPacket(y.packet.literalData);if(!u)throw new Error("No literal data packet to sign.");let f=await GU(u,e,t,i,n,s,a,o,c,!1,l),A=f.map((g,p)=>bn.fromSignaturePacket(g,p===0)).reverse();return d.push(...A),d.push(u),d.push(...f),new r(d)}compress(e,t=me){if(e===y.compression.uncompressed)return this;let i=new Sl(t);i.algorithm=e,i.packets=this.packets;let n=new Ft;return n.push(i),new r(n)}async signDetached(e=[],t=[],i=null,n=[],s=[],a=new Date,o=[],c=[],l=me){let d=this.packets.findPacket(y.packet.literalData);if(!d)throw new Error("No literal data packet to sign.");return new Lw(await GU(d,e,t,i,n,s,a,o,c,!0,l))}async verify(e,t=new Date,i=me){let n=this.unwrapCompressed(),s=n.packets.filterByTag(y.packet.literalData);if(s.length!==1)throw new Error("Can only verify message with one literal data packet.");let a=n.packets;Ot(a.stream)&&(a=a.concat(await cr(a.stream,l=>l||[])));let o=a.filterByTag(y.packet.onePassSignature).reverse(),c=a.filterByTag(y.packet.signature);return o.length&&!c.length&&F.isStream(a.stream)&&!Ot(a.stream)?(await Promise.all(o.map(async l=>{l.correspondingSig=new Promise((d,u)=>{l.correspondingSigResolve=d,l.correspondingSigReject=u}),l.signatureData=Fl(async()=>(await l.correspondingSig).signatureData),l.hashed=cr(await l.hash(l.signatureType,s[0],void 0,!1)),l.hashed.catch(()=>{})})),a.stream=dc(a.stream,async(l,d)=>{let u=Xn(l),f=an(d);try{for(let A=0;A<o.length;A++){let{value:g}=await u.read();o[A].correspondingSigResolve(g)}await u.readToEnd(),await f.ready,await f.close()}catch(A){o.forEach(g=>{g.correspondingSigReject(A)}),await f.abort(A)}}),Y1(o,s,e,t,!1,i)):Y1(c,s,e,t,!1,i)}async verifyDetached(e,t,i=new Date,n=me){let a=this.unwrapCompressed().packets.filterByTag(y.packet.literalData);if(a.length!==1)throw new Error("Can only verify message with one literal data packet.");let o=e.packets.filterByTag(y.packet.signature);return Y1(o,a,t,i,!0,n)}unwrapCompressed(){let e=this.packets.filterByTag(y.packet.compressedData);return e.length?new r(e[0].packets):this}async appendSignature(e,t=me){await this.packets.read(F.isUint8Array(e)?e:(await ix(e)).data,Bre,t)}write(){return this.packets.write()}armor(e=me){let t=this.packets[this.packets.length-1],i=t.constructor.tag===Uu.tag?t.version!==2:this.packets.some(n=>n.constructor.tag===$r.tag&&n.version!==6);return PA(y.armor.message,this.write(),null,null,null,i,e)}};kre=Object.keys(me).length;fu=nn&&typeof nn=="object"&&"webcrypto"in nn?nn.webcrypto:nn&&typeof nn=="object"&&"randomBytes"in nn?nn:void 0;_re=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;JU=_re?r=>r:Fre,PN=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Pre=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));Ba={_0:48,_9:57,A:65,F:70,a:97,f:102};BA=class{};Rre=Ma;E2=BigInt(0),Ob=BigInt(1);X1=r=>typeof r=="bigint"&&E2<=r;HA=r=>(Ob<<BigInt(r))-Ob;Ri=BigInt(0),Bi=BigInt(1),wl=BigInt(2),RN=BigInt(3),NN=BigInt(4),ON=BigInt(5),Mre=BigInt(7),qN=BigInt(8),Lre=BigInt(9),MN=BigInt(16);zre=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];Ql=class extends BA{constructor(e,t,i,n){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=i,this.isLE=n,this.buffer=new Uint8Array(e),this.view=W1(this.buffer)}update(e){Nu(this),e=LA(e),Ns(e);let{view:t,buffer:i,blockLen:n}=this,s=e.length;for(let a=0;a<s;){let o=Math.min(n-this.pos,s-a);if(o===n){let c=W1(e);for(;n<=s-a;a+=n)this.process(c,a);continue}i.set(e.subarray(a,a+o),this.pos),this.pos+=o,a+=o,this.pos===n&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Nu(this),FN(e,this),this.finished=!0;let{buffer:t,view:i,blockLen:n,isLE:s}=this,{pos:a}=this;t[a++]=128,vn(this.buffer.subarray(a)),this.padOffset>n-a&&(this.process(i,0),a=0);for(let u=a;u<n;u++)t[u]=0;Vre(i,n-8,BigInt(this.length*8),s),this.process(i,0);let o=W1(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)o.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:i,length:n,finished:s,destroyed:a,pos:o}=this;return e.destroyed=a,e.finished=s,e.length=n,e.pos=o,n%t&&e.buffer.set(i),e}clone(){return this._cloneInto()}},zo=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Jo=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),oi=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),ci=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),rw=BigInt(2**32-1),WU=BigInt(32);XU=(r,e,t)=>r>>>t,ZU=(r,e,t)=>r<<32-t|e>>>t,hu=(r,e,t)=>r>>>t|e<<32-t,Au=(r,e,t)=>r<<32-t|e>>>t,iw=(r,e,t)=>r<<64-t|e>>>t-32,nw=(r,e,t)=>r>>>t-32|e<<64-t,Wre=(r,e,t)=>r<<t|e>>>32-t,Xre=(r,e,t)=>e<<t|r>>>32-t,Zre=(r,e,t)=>e<<t-32|r>>>64-t,eie=(r,e,t)=>r<<t-32|e>>>64-t;tie=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),rie=(r,e,t,i)=>e+t+i+(r/2**32|0)|0,iie=(r,e,t,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0),nie=(r,e,t,i,n)=>e+t+i+n+(r/2**32|0)|0,sie=(r,e,t,i,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0)+(n>>>0),aie=(r,e,t,i,n,s)=>e+t+i+n+s+(r/2**32|0)|0,oie=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),jo=new Uint32Array(64),$w=class extends Ql{constructor(e=32){super(64,e,8,!1),this.A=zo[0]|0,this.B=zo[1]|0,this.C=zo[2]|0,this.D=zo[3]|0,this.E=zo[4]|0,this.F=zo[5]|0,this.G=zo[6]|0,this.H=zo[7]|0}get(){let{A:e,B:t,C:i,D:n,E:s,F:a,G:o,H:c}=this;return[e,t,i,n,s,a,o,c]}set(e,t,i,n,s,a,o,c){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0,this.F=a|0,this.G=o|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)jo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=jo[u-15],A=jo[u-2],g=Es(f,7)^Es(f,18)^f>>>3,p=Es(A,17)^Es(A,19)^A>>>10;jo[u]=p+jo[u-7]+g+jo[u-16]|0}let{A:i,B:n,C:s,D:a,E:o,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Es(o,6)^Es(o,11)^Es(o,25),A=d+f+jN(o,c,l)+oie[u]+jo[u]|0,p=(Es(i,2)^Es(i,13)^Es(i,22))+$N(i,n,s)|0;d=l,l=c,c=o,o=a+A|0,a=s,s=n,n=i,i=A+p|0}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,a=a+this.D|0,o=o+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(i,n,s,a,o,c,l,d)}roundClean(){vn(jo)}destroy(){this.set(0,0,0,0,0,0,0,0),vn(this.buffer)}},qb=class extends $w{constructor(){super(28),this.A=Jo[0]|0,this.B=Jo[1]|0,this.C=Jo[2]|0,this.D=Jo[3]|0,this.E=Jo[4]|0,this.F=Jo[5]|0,this.G=Jo[6]|0,this.H=Jo[7]|0}},YN=VN(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),cie=YN[0],lie=YN[1],$o=new Uint32Array(80),Vo=new Uint32Array(80),Vw=class extends Ql{constructor(e=64){super(128,e,16,!1),this.Ah=ci[0]|0,this.Al=ci[1]|0,this.Bh=ci[2]|0,this.Bl=ci[3]|0,this.Ch=ci[4]|0,this.Cl=ci[5]|0,this.Dh=ci[6]|0,this.Dl=ci[7]|0,this.Eh=ci[8]|0,this.El=ci[9]|0,this.Fh=ci[10]|0,this.Fl=ci[11]|0,this.Gh=ci[12]|0,this.Gl=ci[13]|0,this.Hh=ci[14]|0,this.Hl=ci[15]|0}get(){let{Ah:e,Al:t,Bh:i,Bl:n,Ch:s,Cl:a,Dh:o,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:A,Gl:g,Hh:p,Hl:I}=this;return[e,t,i,n,s,a,o,c,l,d,u,f,A,g,p,I]}set(e,t,i,n,s,a,o,c,l,d,u,f,A,g,p,I){this.Ah=e|0,this.Al=t|0,this.Bh=i|0,this.Bl=n|0,this.Ch=s|0,this.Cl=a|0,this.Dh=o|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=A|0,this.Gl=g|0,this.Hh=p|0,this.Hl=I|0}process(e,t){for(let B=0;B<16;B++,t+=4)$o[B]=e.getUint32(t),Vo[B]=e.getUint32(t+=4);for(let B=16;B<80;B++){let C=$o[B-15]|0,x=Vo[B-15]|0,_=hu(C,x,1)^hu(C,x,8)^XU(C,x,7),R=Au(C,x,1)^Au(C,x,8)^ZU(C,x,7),U=$o[B-2]|0,T=Vo[B-2]|0,D=hu(U,T,19)^iw(U,T,61)^XU(U,T,6),b=Au(U,T,19)^nw(U,T,61)^ZU(U,T,6),Q=iie(R,b,Vo[B-7],Vo[B-16]),v=nie(Q,_,D,$o[B-7],$o[B-16]);$o[B]=v|0,Vo[B]=Q|0}let{Ah:i,Al:n,Bh:s,Bl:a,Ch:o,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:A,Fl:g,Gh:p,Gl:I,Hh:m,Hl:w}=this;for(let B=0;B<80;B++){let C=hu(u,f,14)^hu(u,f,18)^iw(u,f,41),x=Au(u,f,14)^Au(u,f,18)^nw(u,f,41),_=u&A^~u&p,R=f&g^~f&I,U=sie(w,x,R,lie[B],Vo[B]),T=aie(U,m,C,_,cie[B],$o[B]),D=U|0,b=hu(i,n,28)^iw(i,n,34)^iw(i,n,39),Q=Au(i,n,28)^nw(i,n,34)^nw(i,n,39),v=i&s^i&o^s&o,E=n&a^n&c^a&c;m=p|0,w=I|0,p=A|0,I=g|0,A=u|0,g=f|0,{h:u,l:f}=ba(l|0,d|0,T|0,D|0),l=o|0,d=c|0,o=s|0,c=a|0,s=i|0,a=n|0;let P=tie(D,Q,E);i=rie(P,T,b,v),n=P|0}({h:i,l:n}=ba(this.Ah|0,this.Al|0,i|0,n|0)),{h:s,l:a}=ba(this.Bh|0,this.Bl|0,s|0,a|0),{h:o,l:c}=ba(this.Ch|0,this.Cl|0,o|0,c|0),{h:l,l:d}=ba(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=ba(this.Eh|0,this.El|0,u|0,f|0),{h:A,l:g}=ba(this.Fh|0,this.Fl|0,A|0,g|0),{h:p,l:I}=ba(this.Gh|0,this.Gl|0,p|0,I|0),{h:m,l:w}=ba(this.Hh|0,this.Hl|0,m|0,w|0),this.set(i,n,s,a,o,c,l,d,u,f,A,g,p,I,m,w)}roundClean(){vn($o,Vo)}destroy(){vn(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Mb=class extends Vw{constructor(){super(48),this.Ah=oi[0]|0,this.Al=oi[1]|0,this.Bh=oi[2]|0,this.Bl=oi[3]|0,this.Ch=oi[4]|0,this.Cl=oi[5]|0,this.Dh=oi[6]|0,this.Dl=oi[7]|0,this.Eh=oi[8]|0,this.El=oi[9]|0,this.Fh=oi[10]|0,this.Fl=oi[11]|0,this.Gh=oi[12]|0,this.Gl=oi[13]|0,this.Hh=oi[14]|0,this.Hl=oi[15]|0}},k2=Ma(()=>new $w),die=Ma(()=>new qb),WN=Ma(()=>new Vw),XN=Ma(()=>new Mb),Yw=class extends BA{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,QN(e);let i=LA(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,s=new Uint8Array(n);s.set(i.length>n?e.create().update(i).digest():i);for(let a=0;a<s.length;a++)s[a]^=54;this.iHash.update(s),this.oHash=e.create();for(let a=0;a<s.length;a++)s[a]^=106;this.oHash.update(s),vn(s)}update(e){return Nu(this),this.iHash.update(e),this}digestInto(e){Nu(this),Ns(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:i,finished:n,destroyed:s,blockLen:a,outputLen:o}=this;return e=e,e.finished=n,e.destroyed=s,e.blockLen=a,e.outputLen=o,e.oHash=t._cloneInto(e.oHash),e.iHash=i._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ZN=(r,e,t)=>new Yw(r,e).update(t).digest();ZN.create=(r,e)=>new Yw(r,e);Ou=BigInt(0),xl=BigInt(1);eb=new WeakMap,t9=new WeakMap;Xw=class{constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,i=this.ZERO){let n=e;for(;t>Ou;)t&xl&&(i=i.add(n)),n=n.double(),t>>=xl;return i}precomputeWindow(e,t){let{windows:i,windowSize:n}=Z1(t,this.bits),s=[],a=e,o=a;for(let c=0;c<i;c++){o=a,s.push(o);for(let l=1;l<n;l++)o=o.add(a),s.push(o);a=o.double()}return s}wNAF(e,t,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let n=this.ZERO,s=this.BASE,a=Z1(e,this.bits);for(let o=0;o<a.windows;o++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:A}=eR(i,o,a);i=c,d?s=s.add(Ww(f,t[A])):n=n.add(Ww(u,t[l]))}return tR(i),{p:n,f:s}}wNAFUnsafe(e,t,i,n=this.ZERO){let s=Z1(e,this.bits);for(let a=0;a<s.windows&&i!==Ou;a++){let{nextN:o,offset:c,isZero:l,isNeg:d}=eR(i,a,s);if(i=o,!l){let u=t[c];n=n.add(d?u.negate():u)}}return tR(i),n}getPrecomputes(e,t,i){let n=eb.get(t);return n||(n=this.precomputeWindow(t,e),e!==1&&(typeof i=="function"&&(n=i(n)),eb.set(t,n))),n}cached(e,t,i){let n=tb(e);return this.wNAF(n,this.getPrecomputes(n,e,i),t)}unsafe(e,t,i,n){let s=tb(e);return s===1?this._unsafeLadder(e,t,n):this.wNAFUnsafe(s,this.getPrecomputes(s,e,i),t,n)}createCache(e,t){e9(t,this.bits),t9.set(e,t),eb.delete(e)}hasCache(e){return tb(e)!==1}};iR=(r,e)=>(r+(r>=0?e:-e)/n9)/e;Hb=class extends Error{constructor(e=""){super(e)}},_a={Err:Hb,_tlv:{encode:(r,e)=>{let{Err:t}=_a;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let i=e.length/2,n=tw(i);if(n.length/2&128)throw new t("tlv.encode: long form length too big");let s=i>127?tw(n.length/2|128):"";return tw(r)+s+n+e},decode(r,e){let{Err:t}=_a,i=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[i++]!==r)throw new t("tlv.decode: wrong tlv");let n=e[i++],s=!!(n&128),a=0;if(!s)a=n;else{let c=n&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(i,i+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)a=a<<8|d;if(i+=c,a<128)throw new t("tlv.decode(long): not minimal encoding")}let o=e.subarray(i,i+a);if(o.length!==a)throw new t("tlv.decode: wrong value length");return{v:o,l:e.subarray(i+a)}}},_int:{encode(r){let{Err:e}=_a;if(r<Fa)throw new e("integer: negative integers are not allowed");let t=tw(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=_a;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return xx(r)}},toSig(r){let{Err:e,_int:t,_tlv:i}=_a,n=Rt("signature",r),{v:s,l:a}=i.decode(48,n);if(a.length)throw new e("invalid signature: left bytes after parsing");let{v:o,l:c}=i.decode(2,s),{v:l,l:d}=i.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(o),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=_a,i=e.encode(2,t.encode(r.r)),n=e.encode(2,t.encode(r.s)),s=i+n;return e.encode(48,s)}},Fa=BigInt(0),Su=BigInt(1),n9=BigInt(2),sw=BigInt(3),gie=BigInt(4);o9={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},c9={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},l9={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},Eie=Ki(o9.p),Bie=Ki(c9.p),bie=Ki(l9.p),vie=Tl({...o9,Fp:Eie,lowS:!1},k2),kie=Tl({...c9,Fp:Bie,lowS:!1},XN),Sie=Tl({...l9,Fp:bie,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},WN);Die=vie;_ie=kie;Qie=Sie,Fie=BigInt(0),rA=BigInt(1),Pie=BigInt(2),Tie=BigInt(7),Uie=BigInt(256),Rie=BigInt(113),d9=[],u9=[],f9=[];for(let r=0,e=rA,t=1,i=0;r<24;r++){[t,i]=[i,(2*t+3*i)%5],d9.push(2*(5*i+t)),u9.push((r+1)*(r+2)/2%64);let n=Fie;for(let s=0;s<7;s++)e=(e<<rA^(e>>Tie)*Rie)%Uie,e&Pie&&(n^=rA<<(rA<<BigInt(s))-rA);f9.push(n)}h9=VN(f9,!0),Nie=h9[0],Oie=h9[1],nR=(r,e,t)=>t>32?Zre(r,e,t):Wre(r,e,t),sR=(r,e,t)=>t>32?eie(r,e,t):Xre(r,e,t);Zw=class r extends BA{constructor(e,t,i,n=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=i,this.enableXOF=n,this.rounds=s,EA(i),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Dre(this.state)}clone(){return this._cloneInto()}keccak(){JU(this.state32),qie(this.state32,this.rounds),JU(this.state32),this.posOut=0,this.pos=0}update(e){Nu(this),e=LA(e),Ns(e);let{blockLen:t,state:i}=this,n=e.length;for(let s=0;s<n;){let a=Math.min(t-this.pos,n-s);for(let o=0;o<a;o++)i[this.pos++]^=e[s++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:i,blockLen:n}=this;e[i]^=t,(t&128)!==0&&i===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){Nu(this,!1),Ns(e),this.finish();let t=this.state,{blockLen:i}=this;for(let n=0,s=e.length;n<s;){this.posOut>=i&&this.keccak();let a=Math.min(i-this.posOut,s-n);e.set(t.subarray(this.posOut,this.posOut+a),n),this.posOut+=a,n+=a}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return EA(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(FN(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,vn(this.state)}_cloneInto(e){let{blockLen:t,suffix:i,outputLen:n,rounds:s,enableXOF:a}=this;return e||(e=new r(t,i,n,a,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=i,e.outputLen=n,e.enableXOF=a,e.destroyed=this.destroyed,e}},A9=(r,e,t)=>Ma(()=>new Zw(e,r,t)),Mie=A9(6,136,256/8),Lie=A9(6,72,512/8),Hie=(r,e,t)=>Ure((i={})=>new Zw(e,r,i.dkLen===void 0?t:i.dkLen,!0)),Kie=Hie(31,136,256/8);Yo=BigInt(0),Ur=BigInt(1),ib=BigInt(2),Gie=BigInt(8);iA=BigInt(0),gu=BigInt(1),aw=BigInt(2);Ul={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3"),h:BigInt(4),a:BigInt(1),d:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756"),Gx:BigInt("0x4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e"),Gy:BigInt("0x693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14")},Xie=Object.assign({},Ul,{d:BigInt("0xd78b4bdc7f0daf19f24f38c29373a2ccad46157242a50f37809b1da3412a12e79ccc9c81264cfe9ad080997058fb61c4243cc32dbaa156b9"),Gx:BigInt("0x79a70b2b70400553ae7c9df416c792c61128751ac92969240c25a07d728bdc93e21f7787ed6972249de732f38496cd11698713093e9c04fc"),Gy:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000001")}),Zie=Ma(()=>Kie.create({dkLen:114})),ene=BigInt(1),Kb=BigInt(2),aR=BigInt(3);BigInt(4);tne=BigInt(11),rne=BigInt(22),oR=BigInt(44),ine=BigInt(88),nne=BigInt(223);ane=Ki(Ul.p,{BITS:456,isLE:!0}),cR=Ki(Ul.n,{BITS:456,isLE:!0});cne={...Ul,Fp:ane,Fn:cR,nBitLength:cR.BITS,hash:Zie,adjustScalarBytes:m9,domain:one,uvRatio:sne},lne=Vie(cne);g9(Xie);dne=(()=>{let r=Ul.p;return Wie({P:r,type:"x448",powPminus2:e=>{let t=p9(e),i=Ut(t,Kb,r);return kr(i*e,r)},adjustScalarBytes:m9})})();S2={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},une={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},lR=BigInt(2);Gb=Ki(S2.p,{sqrt:fne}),hne=Tl({...S2,Fp:Gb,lowS:!0,endo:une},k2),y9=k2,Ane=die,I9=Ki(BigInt("0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377")),gne=I9.create(BigInt("0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9")),pne=BigInt("0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6"),mne=Tl({a:gne,b:pne,Fp:I9,n:BigInt("0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7"),Gx:BigInt("0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262"),Gy:BigInt("0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997"),h:BigInt(1),lowS:!1},y9),w9=WN,x9=XN,C9=Ki(BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53")),yne=C9.create(BigInt("0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826")),Ine=BigInt("0x04a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11"),wne=Tl({a:yne,b:Ine,Fp:C9,n:BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565"),Gx:BigInt("0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e"),Gy:BigInt("0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315"),h:BigInt(1),lowS:!1},x9),E9=Ki(BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3")),xne=E9.create(BigInt("0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca")),Cne=BigInt("0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723"),Ene=Tl({a:xne,b:Cne,Fp:E9,n:BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069"),Gx:BigInt("0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822"),Gy:BigInt("0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892"),h:BigInt(1),lowS:!1},w9),Bne=new Map(Object.entries({nistP256:Die,nistP384:_ie,nistP521:Qie,brainpoolP256r1:mne,brainpoolP384r1:wne,brainpoolP512r1:Ene,secp256k1:hne,x448:dne,ed448:lne})),bne=Object.freeze({__proto__:null,nobleCurves:Bne}),nA=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),Wo=new Uint32Array(80),zb=class extends Ql{constructor(){super(64,20,8,!1),this.A=nA[0]|0,this.B=nA[1]|0,this.C=nA[2]|0,this.D=nA[3]|0,this.E=nA[4]|0}get(){let{A:e,B:t,C:i,D:n,E:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Wo[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Wo[c]=nc(Wo[c-3]^Wo[c-8]^Wo[c-14]^Wo[c-16],1);let{A:i,B:n,C:s,D:a,E:o}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=jN(n,s,a),d=1518500249):c<40?(l=n^s^a,d=1859775393):c<60?(l=$N(n,s,a),d=2400959708):(l=n^s^a,d=3395469782);let u=nc(i,5)+l+o+d+Wo[c]|0;o=a,a=s,s=nc(n,30),n=i,i=u}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,a=a+this.D|0,o=o+this.E|0,this.set(i,n,s,a,o)}roundClean(){vn(Wo)}destroy(){this.set(0,0,0,0,0),vn(this.buffer)}},vne=Ma(()=>new zb),kne=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),B9=Uint8Array.from(new Array(16).fill(0).map((r,e)=>e)),Sne=B9.map(r=>(9*r+5)%16),b9=(()=>{let t=[[B9],[Sne]];for(let i=0;i<4;i++)for(let n of t)n.push(n[i].map(s=>kne[s]));return t})(),v9=b9[0],k9=b9[1],S9=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(r=>Uint8Array.from(r)),Dne=v9.map((r,e)=>r.map(t=>S9[e][t])),_ne=k9.map((r,e)=>r.map(t=>S9[e][t])),Qne=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),Fne=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);ow=new Uint32Array(16),Jb=class extends Ql{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){let{h0:e,h1:t,h2:i,h3:n,h4:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.h0=e|0,this.h1=t|0,this.h2=i|0,this.h3=n|0,this.h4=s|0}process(e,t){for(let A=0;A<16;A++,t+=4)ow[A]=e.getUint32(t,!0);let i=this.h0|0,n=i,s=this.h1|0,a=s,o=this.h2|0,c=o,l=this.h3|0,d=l,u=this.h4|0,f=u;for(let A=0;A<5;A++){let g=4-A,p=Qne[A],I=Fne[A],m=v9[A],w=k9[A],B=Dne[A],C=_ne[A];for(let x=0;x<16;x++){let _=nc(i+dR(A,s,o,l)+ow[m[x]]+p,B[x])+u|0;i=u,u=l,l=nc(o,10)|0,o=s,s=_}for(let x=0;x<16;x++){let _=nc(n+dR(g,a,c,d)+ow[w[x]]+I,C[x])+f|0;n=f,f=d,d=nc(c,10)|0,c=a,a=_}}this.set(this.h1+o+d|0,this.h2+l+f|0,this.h3+u+n|0,this.h4+i+a|0,this.h0+s+c|0)}roundClean(){vn(ow)}destroy(){this.destroyed=!0,vn(this.buffer),this.set(0,0,0,0,0)}},Pne=Ma(()=>new Jb),Tne=vne,Une=Pne,Rne=Array.from({length:64},(r,e)=>Math.floor(2**32*Math.abs(Math.sin(e+1)))),uR=(r,e,t)=>r&e^~r&t,cw=new Uint32Array([1732584193,4023233417,2562383102,271733878]),nb=new Uint32Array(16),jb=class extends Ql{constructor(){super(64,16,8,!0),this.A=cw[0]|0,this.B=cw[1]|0,this.C=cw[2]|0,this.D=cw[3]|0}get(){let{A:e,B:t,C:i,D:n}=this;return[e,t,i,n]}set(e,t,i,n){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0}process(e,t){for(let o=0;o<16;o++,t+=4)nb[o]=e.getUint32(t,!0);let{A:i,B:n,C:s,D:a}=this;for(let o=0;o<64;o++){let c,l,d;o<16?(c=uR(n,s,a),l=o,d=[7,12,17,22]):o<32?(c=uR(a,n,s),l=(5*o+1)%16,d=[5,9,14,20]):o<48?(c=n^s^a,l=(3*o+5)%16,d=[4,11,16,23]):(c=s^(n|~a),l=7*o%16,d=[6,10,15,21]),c=c+i+Rne[o]+nb[l],i=a,a=s,s=n,n=n+nc(c,d[o%4])}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,a=a+this.D|0,this.set(i,n,s,a)}roundClean(){nb.fill(0)}destroy(){this.set(0,0,0,0),this.buffer.fill(0)}},Nne=Rre(()=>new jb),One=new Map(Object.entries({md5:Nne,sha1:Tne,sha224:Ane,sha256:y9,sha384:x9,sha512:w9,sha3_256:Mie,sha3_512:Lie,ripemd160:Une})),qne=Object.freeze({__proto__:null,nobleHashes:One}),sb=nn&&typeof nn=="object"&&"webcrypto"in nn?nn.webcrypto:void 0,Hi={},Ne=function(r){var e,t=new Float64Array(16);if(r)for(e=0;e<r.length;e++)t[e]=r[e];return t},D2=function(){throw new Error("no PRNG")},D9=new Uint8Array(32);D9[0]=9;$b=Ne(),ex=Ne([1]),Mne=Ne([56129,1]),Lne=Ne([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),Hne=Ne([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),fR=Ne([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),hR=Ne([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),Kne=Ne([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);pR=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];ob=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);IR=32,Yne=32,q9=32,M9=32,Il=64,Cx=32,Ex=64,Wne=32;Hi.scalarMult=function(r,e){if(Hu(r,e),r.length!==Yne)throw new Error("bad n size");if(e.length!==IR)throw new Error("bad p size");var t=new Uint8Array(IR);return T9(t,r,e),t};Hi.box={};Hi.box.keyPair=function(){var r=new Uint8Array(q9),e=new Uint8Array(M9);return Jne(r,e),{publicKey:r,secretKey:e}};Hi.box.keyPair.fromSecretKey=function(r){if(Hu(r),r.length!==M9)throw new Error("bad secret key size");var e=new Uint8Array(q9);return U9(e,r),{publicKey:e,secretKey:new Uint8Array(r)}};Hi.sign=function(r,e){if(Hu(r,e),e.length!==Ex)throw new Error("bad secret key size");var t=new Uint8Array(Il+r.length);return jne(t,r,r.length,e),t};Hi.sign.detached=function(r,e){for(var t=Hi.sign(r,e),i=new Uint8Array(Il),n=0;n<i.length;n++)i[n]=t[n];return i};Hi.sign.detached.verify=function(r,e,t){if(Hu(r,e,t),e.length!==Il)throw new Error("bad signature size");if(t.length!==Cx)throw new Error("bad public key size");var i=new Uint8Array(Il+r.length),n=new Uint8Array(Il+r.length),s;for(s=0;s<Il;s++)i[s]=e[s];for(s=0;s<r.length;s++)i[s+Il]=r[s];return Vne(n,i,i.length,t)>=0};Hi.sign.keyPair=function(){var r=new Uint8Array(Cx),e=new Uint8Array(Ex);return N9(r,e),{publicKey:r,secretKey:e}};Hi.sign.keyPair.fromSecretKey=function(r){if(Hu(r),r.length!==Ex)throw new Error("bad secret key size");for(var e=new Uint8Array(Cx),t=0;t<e.length;t++)e[t]=r[32+t];return{publicKey:e,secretKey:new Uint8Array(r)}};Hi.sign.keyPair.fromSeed=function(r){if(Hu(r),r.length!==Wne)throw new Error("bad seed size");for(var e=new Uint8Array(Cx),t=new Uint8Array(Ex),i=0;i<32;i++)t[i]=r[i];return N9(e,t,!0),{publicKey:e,secretKey:t}};Hi.setPRNG=function(r){D2=r};(function(){if(sb&&sb.getRandomValues){var r=65536;Hi.setPRNG(function(e,t){var i,n=new Uint8Array(t);for(i=0;i<t;i+=r)sb.getRandomValues(n.subarray(i,i+Math.min(t-i,r)));for(i=0;i<t;i++)e[i]=n[i];Xne(n)})}})();Rl=Object.freeze({__proto__:null,default:Hi});kA.keySize=kA.prototype.keySize=24;kA.blockSize=kA.prototype.blockSize=8;SA.blockSize=SA.prototype.blockSize=8;SA.keySize=SA.prototype.keySize=16;wn=4294967295;DA.keySize=DA.prototype.keySize=32;DA.blockSize=DA.prototype.blockSize=16;es.prototype.BLOCKSIZE=8;es.prototype.SBOXES=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];es.prototype.PARRAY=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731];es.prototype.NN=16;es.prototype._clean=function(r){return r<0&&(r=(r&2147483647)+2147483648),r};es.prototype._F=function(r){let e,t=r&255;r>>>=8;let i=r&255;r>>>=8;let n=r&255;r>>>=8;let s=r&255;return e=this.sboxes[0][s]+this.sboxes[1][n],e^=this.sboxes[2][i],e+=this.sboxes[3][t],e};es.prototype._encryptBlock=function(r){let e=r[0],t=r[1],i;for(i=0;i<this.NN;++i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[this.NN+0],t^=this.parray[this.NN+1],r[0]=this._clean(t),r[1]=this._clean(e)};es.prototype.encryptBlock=function(r){let e,t=[0,0],i=this.BLOCKSIZE/2;for(e=0;e<this.BLOCKSIZE/2;++e)t[0]=t[0]<<8|r[e+0]&255,t[1]=t[1]<<8|r[e+i]&255;this._encryptBlock(t);let n=[];for(e=0;e<this.BLOCKSIZE/2;++e)n[e+0]=t[0]>>>24-8*e&255,n[e+i]=t[1]>>>24-8*e&255;return n};es.prototype._decryptBlock=function(r){let e=r[0],t=r[1],i;for(i=this.NN+1;i>1;--i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[1],t^=this.parray[0],r[0]=this._clean(t),r[1]=this._clean(e)};es.prototype.init=function(r){let e,t=0;for(this.parray=[],e=0;e<this.NN+2;++e){let n=0;for(let s=0;s<4;++s)n=n<<8|r[t]&255,++t>=r.length&&(t=0);this.parray[e]=this.PARRAY[e]^n}for(this.sboxes=[],e=0;e<4;++e)for(this.sboxes[e]=[],t=0;t<256;++t)this.sboxes[e][t]=this.SBOXES[e][t];let i=[0,0];for(e=0;e<this.NN+2;e+=2)this._encryptBlock(i),this.parray[e+0]=i[0],this.parray[e+1]=i[1];for(e=0;e<4;++e)for(t=0;t<256;t+=2)this._encryptBlock(i),this.sboxes[e][t+0]=i[0],this.sboxes[e][t+1]=i[1]};_A.keySize=_A.prototype.keySize=16;_A.blockSize=_A.prototype.blockSize=8;ise=new Map(Object.entries({tripledes:kA,cast5:SA,twofish:DA,blowfish:_A})),nse=Object.freeze({__proto__:null,legacyCiphers:ise});L9=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),li=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(r=>r*2));Wb=class{constructor(e,t,i,n){let s=new Uint8Array(64);this.S={b:new Uint8Array(sA),h:new Uint32Array(Xb/4),t0:new Uint32Array(2),c:0,outlen:e},s[0]=e,t&&(s[1]=t.length),s[2]=1,s[3]=1,i&&s.set(i,32),n&&s.set(n,48);let a=new Uint32Array(s.buffer,s.byteOffset,s.length/Uint32Array.BYTES_PER_ELEMENT);for(let o=0;o<16;o++)this.S.h[o]=L9[o]^a[o];if(t){let o=new Uint8Array(sA);o.set(t),this.update(o)}}update(e){if(!(e instanceof Uint8Array))throw new Error("Input must be Uint8Array or Buffer");let t=0;for(;t<e.length;){this.S.c===sA&&(wR(this.S.t0,this.S.c),xR(this.S,!1),this.S.c=0);let i=sA-this.S.c;this.S.b.set(e.subarray(t,t+i),this.S.c);let n=Math.min(i,e.length-t);this.S.c+=n,t+=n}return this}digest(e){wR(this.S.t0,this.S.c),this.S.b.fill(0,this.S.c),this.S.c=sA,xR(this.S,!0);let t=e||new Uint8Array(this.S.outlen);for(let i=0;i<this.S.outlen;i++)t[i]=this.S.h[i>>2]>>8*(i&3);return this.S.h=null,t.buffer}};Xb=64,sA=128,F2=2,H9=19,sse=4294967295,ase=4,ose=4294967295,cse=8,lse=4294967295,dse=8,use=4294967295,fse=4294967295,hse=32,ka=1024,Ase=64,gse=new Uint8Array(new Uint16Array([43981]).buffer)[0]===205;K9=1024,wse=64*K9;Sse=async()=>bse(r=>vse(r),r=>kse(r)),Dse=Object.freeze({__proto__:null,default:Sse});z9=Pse(),Tse=_se(z9),Use=IZ({__proto__:null,default:Tse},[z9])});function Rse(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=j9[i>>t&63];return t>0&&(e+=j9[i<<6-t&63]),e}function V9(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function Nse(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function Ose(r){return new Uint8Array(await crypto.subtle.digest("SHA-256",r))}function Y9(r,e){let t=V9(e),n=`$2a$10$${Rse(t).padEnd(22,".")}`;return $9.default.hashSync(r,n).slice(n.length)}async function KA(r,e){let t=await mx({armoredKey:r});return yx({privateKey:t,passphrase:e})}async function Ku(r,e){let t=await OA({armoredMessage:r}),{data:i}=await Ix({message:t,decryptionKeys:e,format:"utf8"});return i}async function Bx(r,e,t){let i=await kN({text:r});return SN({message:i,encryptionKeys:e,signingKeys:t?[t]:void 0,format:"armored"})}async function T2(r){let e=await Ose(new TextEncoder().encode(r));return Nse(e)}async function W9(r,e){let t=await OA({armoredMessage:r}),i=await DN({message:t,decryptionKeys:e});if(!i.length)throw new Error("failed to decrypt session key");return i[0]}async function X9(r,e){let t=await OA({binaryMessage:r}),{data:i}=await Ix({message:t,sessionKeys:e,format:"binary"});return i}async function U2(r,e){if(!r)return 0;try{let t=V9(r),i=await OA({binaryMessage:t}),{data:n}=await Ix({message:i,decryptionKeys:e,format:"binary"});return qse(n)}catch{return 0}}function qse(r){let e=0;for(;e<r.length;){let t=r[e++],i=t>>3,n=t&7;if(n===0){let s=0n,a=0n;for(;e<r.length;){let o=r[e++];if(s|=BigInt(o&127)<<a,(o&128)===0)break;a+=7n}if(i===1)return Number(s)}else if(n===2){let s=0,a=0;for(;e<r.length;){let o=r[e++];if(s|=(o&127)<<a,(o&128)===0)break;a+=7}e+=s}else if(n===1)e+=8;else if(n===5)e+=4;else break}return 0}var $9,j9,R2=J(()=>{"use strict";P2();$9=Qr(T1(),1),j9="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});async function Z9(r,e,t){let i=r.find(o=>o.Primary===1)||r[0];if(!i)throw new Error("user has no keys");let n=t.find(o=>o.ID===i.ID);if(!n)throw new Error("no salt for user key");let s=Y9(e,n.KeySalt),a=[];for(let o of r)try{a.push(await KA(o.PrivateKey,s))}catch{}if(a.length===0)throw new Error("failed to unlock user keys (wrong password?)");return{userKR:a,saltedKeyPass:s}}async function eO(r,e,t){let i=new Map;for(let n of r){let s=[];for(let a of n.Keys)try{if(a.Token){let o=await Ku(a.Token,e);s.push(await KA(a.PrivateKey,o))}else s.push(await KA(a.PrivateKey,t))}catch{}s.length>0&&i.set(n.ID,s)}return i}async function tO(r,e){let t=e.get(r.AddressID);if(!t)throw new Error("no address keyring for share");let i=await Ku(r.Passphrase,t),n=await KA(r.Key,i);return[...t,n]}var bx,rO=J(()=>{"use strict";P1();aU();R2();bx=class{constructor(e){this.addition=e}addition;accessToken="";refreshToken="";uid="";saltedKeyPass="";setAuth(e,t,i){this.accessToken=e,this.refreshToken=t,this.uid=i}getUID(){return this.uid}getSaltedKeyPass(){return this.saltedKeyPass}setSaltedKeyPass(e){this.saltedKeyPass=e}authHeaders(){let e={Accept:VT,"X-Pm-Appversion":XT,"X-Pm-Drive-Sdk-Version":YT,"User-Agent":WT};return this.accessToken&&(e.Authorization=`Bearer ${this.accessToken}`,e["X-Pm-Uid"]=this.uid),e}async request(e,t={}){let i=t.method||"GET",n=this.authHeaders(),s={method:i,headers:n};t.body!==void 0&&(s.body=JSON.stringify(t.body),n["Content-Type"]="application/json");let a=await fetch(e,s),o=await a.text(),c={};try{c=o?JSON.parse(o):{}}catch{c={}}if(!a.ok)throw new Error(`Proton request failed: ${a.status} ${(c.Error||o).slice(0,200)}`);return c}async requestAPI(e,t={}){let i=e.startsWith("http")?e:`${Ko}${e}`;if(t.params){let n=new URLSearchParams(Object.entries(t.params).map(([s,a])=>[s,String(a)])).toString();i+=(i.includes("?")?"&":"?")+n}return this.request(i,{method:t.method,body:t.body})}async login(){let e=await this.request(HT,{method:"POST",body:{Username:this.addition.email}});if(!e.Modulus||!e.ServerEphemeral)throw new Error("invalid auth info response");let t=await sU(this.addition.email,this.addition.password,e),i=await this.request(KT,{method:"POST",body:{Username:this.addition.email,ClientEphemeral:t.ClientEphemeral,ClientProof:t.ClientProof,SRPSession:t.SRPSession}});if(i.Code===1001||i.TwoFactor?.Enabled){if(!this.addition.two_fa_code)throw new Error("2FA is enabled but no two_fa_code provided");i=await this.request(GT,{method:"POST",body:{TwoFactorCode:this.addition.two_fa_code,SRPSession:t.SRPSession}})}if(!i.AccessToken||!i.UID)throw new Error(`auth failed: code=${i.Code}`);this.setAuth(i.AccessToken,i.RefreshToken,i.UID)}async refresh(){if(!this.refreshToken)throw new Error("refresh token is empty");let e=await this.request(zT,{method:"POST",body:{RefreshToken:this.refreshToken,ResponseType:"token",GrantType:"refresh_token",RedirectURI:"https://drive.proton.me"}});if(!e.AccessToken)throw new Error("refresh token failed");this.setAuth(e.AccessToken,e.RefreshToken||this.refreshToken,e.UID||this.uid)}async requestWithRetry(e,t){try{return await this.request(e,t)}catch(i){if(String(i.message).includes("401")&&this.refreshToken)return await this.refresh(),this.request(e,t);throw i}}async getSalts(){return(await this.requestWithRetry(JT,{})).KeySalts||[]}async getUser(){return(await this.requestWithRetry(jT,{})).User}async getAddresses(){return(await this.requestWithRetry(`${Ko}/core/v4/addresses`,{})).Addresses||[]}async getShares(){return(await this.requestWithRetry($T,{})).Shares||[]}}});function nO(r){return r?new Date(r*1e3).toISOString():new Date().toISOString()}function Mse(r){let e={...r||{}};return e.email=(e.email||"").trim(),e.password=(e.password||"").trim(),e.two_fa_code=(e.two_fa_code||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim()||"root",e.use_reusable_login=!!e.use_reusable_login,e.chunk_size=e.chunk_size||"4",e.reusable_credential=(e.reusable_credential||"").trim(),e}function Lse(){let r=crypto.getRandomValues(new Uint8Array(16));return btoa(String.fromCharCode(...r))}var iO,vx,sO=J(()=>{"use strict";ve();$e();P1();rO();R2();P2();iO=150;vx=class{addition;client;mainShare=null;mainShareKR=[];userKR=[];addrKRs=new Map;defaultAddrKR=[];defaultAddrID="";idCache=new Map;linkCache=new Map;nodeKRcache=new Map;childrenCache=new Map;constructor(e){this.addition=Mse(e),this.client=new bx(this.addition)}async init(){if(!this.addition.email)throw new Error("email is required");if(!this.addition.password)throw new Error("password is required");await this.client.login();let e=await this.client.getSalts(),t=await this.client.getUser(),i=await this.client.getAddresses(),{userKR:n,saltedKeyPass:s}=await Z9(t.Keys,this.addition.password,e);if(this.userKR=n,this.client.setSaltedKeyPass(s),this.addrKRs=await eO(i,this.userKR,s),this.addrKRs.size===0)throw new Error("failed to unlock address keys");this.defaultAddrID=i[0]?.ID||"",this.defaultAddrKR=this.addrKRs.get(this.defaultAddrID)||[];let a=await this.client.getShares();if(this.mainShare=a.find(o=>o.Type===ZT)||a[0],!this.mainShare)throw new Error("no shares found");this.mainShareKR=await tO(this.mainShare,this.addrKRs),await this.getLinkKR(this.getRootLinkID())}getShareID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.ShareID}getVolumeID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.VolumeID}getRootLinkID(){if(!this.mainShare)throw new Error("not initialized");return this.addition.root_folder_id&&this.addition.root_folder_id!=="root"?this.addition.root_folder_id:this.mainShare.RootLinkID}async fetchLink(e){let t=this.linkCache.get(e);if(t)return t;let i=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`);if(!i.Link)throw new Error(`link not found: ${e}`);return this.linkCache.set(e,i.Link),i.Link}async getLinkKR(e){let t=this.nodeKRcache.get(e);if(t)return t;let i=await this.fetchLink(e),n=i.ParentLinkID?await this.getLinkKR(i.ParentLinkID):this.mainShareKR,s=await Ku(i.NodePassphrase,n),a=await mx({armoredKey:i.NodeKey}),o=await yx({privateKey:a,passphrase:s}),c=[...n,o];return this.nodeKRcache.set(e,c),c}async decryptName(e){if(!e.Name)return"unnamed";let t=await this.getLinkKR(e.LinkID);try{return await Ku(e.Name,t)}catch{return"unnamed"}}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async listChildren(e){let t=this.childrenCache.get(e);if(t)return t;let i=[];for(let n=0;n<1e3;n++){let a=(await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`,{params:{Children:"1",Page:String(n),PageSize:String(iO),Thumbnail:"0"}})).Links||[];if(i.push(...a),a.length<iO)break}return this.childrenCache.set(e,i),i}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootLinkID();let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.getRootLinkID(),a="/";for(let o of n){let c=await this.listChildren(s),l=null;for(let d of c)if(await this.decryptName(d)===o){l=d;break}if(!l)throw new Error(`folder not found: ${o}`);s=l.LinkID,a=this.joinPath(a,o),this.idCache.set(a,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.listChildren(i),s=this.cleanPath(t),a=[];for(let o of n){let c=await this.decryptName(o);this.idCache.set(this.joinPath(s,c),o.LinkID);let l=o.Type===2;a.push({name:c,size:l?0:o.Size||0,is_dir:l,modified:nO(o.ModifyTime||o.CreateTime),sign:o.LinkID,type:X(c,l)})}return ue(a,"name","asc")}async get(e,t){let i=this.cleanPath(t);if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootLinkID(),type:1};let n=await this.resolveId(i),s=await this.fetchLink(n),a=await this.decryptName(s),o=s.Type===2,c=0;if(!o){let l=await this.getLinkKR(n);c=await U2(s.XAttr||"",l),c||(c=s.Size||0)}return{name:a,size:c,is_dir:o,modified:nO(s.ModifyTime||s.CreateTime),sign:n,type:X(a,o),raw_url:""}}async createReadStream(e,t){let i=await this.resolveId(e),n=await this.fetchLink(i);if(n.Type===2)throw new Error("cannot stream a directory");let s=await this.getLinkKR(i),a=n.FileProperties?.ContentKeyPacket;if(!a)throw new Error("file has no content key packet");let o=await W9(a,s),c=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${i}/revisions`),l=c.Revisions?.find(I=>I.State===1)||c.Revisions?.[0];if(!l?.Blocks?.length)throw new Error("file has no blocks");let d=l.Blocks,u=await U2(n.XAttr||"",s)||l.Size||0,f=(parseInt(this.addition.chunk_size||"4")||4)*1024*1024,A=t?.start??0,g=t?.end??(u>0?u-1:Number.MAX_SAFE_INTEGER),p=this;return new ReadableStream({async pull(I){try{let m=A;for(let w of d){if(m>g)break;let B=await p.downloadBlock(w.BareURL,w.Token),C=await X9(B,[o]),x=w.Index*f,_=x+C.length-1,R=Math.max(A,x),U=Math.min(g,_);R<=U&&(I.enqueue(C.slice(R-x,U-x+1)),m=U+1)}I.close()}catch(m){I.error(m)}}})}async downloadBlock(e,t){let i=await fetch(e,{headers:{Authorization:`Bearer ${t}`}});if(!i.ok)throw new Error(`block download failed: ${i.status}`);return new Uint8Array(await i.arrayBuffer())}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",a=await this.resolveId(n),o=await this.getLinkKR(a),c=await Bx(s,o),l=await T2(s),{publicKey:d}=await x2({type:"ecc",curve:"curve25519Legacy",userIDs:[{name:s,email:this.mainShare?.Creator||""}]}),u=Lse(),f=await Bx(u,o);await this.client.requestAPI("/drive/shares/"+this.getShareID()+"/folders",{method:"POST",body:{ParentLinkID:a,Name:c,Hash:l,NodeKey:d,NodePassphrase:f,NodePassphraseSignature:"",SignatureAddress:this.defaultAddrID,NameSignatureEmail:this.mainShare?.Creator||""}})}async rename(e,t,i){let n=await this.resolveId(t),s=await this.fetchLink(n),a=await this.getLinkKR(s.ParentLinkID),o=await Bx(i,a),c=await T2(i),l=s.Hash||"";await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/rename`,{method:"PUT",body:{Name:o,NameSignatureEmail:this.mainShare?.Creator||"",Hash:c,OriginalHash:l}})}async remove(e,t,i){let n=await this.resolveId(t);await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/trash`,{method:"POST"})}async move(e,t,i,n,s){throw new Error("ProtonDrive move is not supported yet")}async copy(e,t,i,n,s){throw new Error("ProtonDrive copy is not supported")}async put(e,t,i){throw new Error("ProtonDrive upload is not supported yet")}}});var aO={};An(aO,{LocalDriver:()=>N2});async function fc(){if(typeof process<"u"&&process.release?.name==="node"&&!tr)try{tr=await import("fs/promises"),mr=await import("path")}catch{}}var tr,mr,N2,oO=J(()=>{"use strict";ve();tr=null,mr=null;N2=class{async list(e,t){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");let i=[];try{i=await tr.readdir(t,{withFileTypes:!0})}catch{return[]}return await Promise.all(i.map(async s=>{let a=s.isDirectory(),o=0,c=new Date;try{let l=await tr.stat(mr.join(t,s.name));o=l.size,c=l.mtime}catch{}return{name:s.name,size:a?0:o,is_dir:a,created:c.toISOString(),modified:c.toISOString(),sign:"",type:X(s.name,a)}}))}async get(e,t){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");let i=await tr.stat(t),n=i.isDirectory(),s=t.split(/[\\/]+/).filter(Boolean).pop()||"root";return{name:s,size:n?0:i.size,is_dir:n,created:i.ctime?.toISOString()||i.mtime.toISOString(),modified:i.mtime.toISOString(),sign:"",type:X(s,n)}}async mkdir(e,t){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");await tr.mkdir(t,{recursive:!0})}async rename(e,t,i){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");let n=mr.join(mr.dirname(t),i);await tr.rename(t,n)}async remove(e,t,i){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");for(let n of i){let s=mr.join(t,n);await tr.rm(s,{recursive:!0,force:!0})}}async move(e,t,i,n,s){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");for(let a of i){let o=mr.join(n,a),c=mr.join(s,a);await tr.mkdir(mr.dirname(c),{recursive:!0}),await tr.rename(o,c)}}async copy(e,t,i,n,s){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");for(let a of i){let o=mr.join(n,a),c=mr.join(s,a);await tr.mkdir(mr.dirname(c),{recursive:!0}),await tr.cp(o,c,{recursive:!0})}}async put(e,t,i){if(await fc(),!tr||!mr)throw new Error("LocalDriver is not supported in Edge Runtime");await tr.mkdir(mr.dirname(t),{recursive:!0}),await tr.writeFile(t,i)}}});var cO={};An(cO,{Client:()=>jse,FTPDriver:()=>Gse,SFTPClient:()=>zse,SFTPDriver:()=>Hse,createPool:()=>$se,default:()=>Vse,normalizeSFTPAddition:()=>Kse,parseAddress:()=>Jse});var Hse,Kse,Gse,zse,Jse,jse,$se,Vse,lO=J(()=>{Hse=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},Kse=r=>r,Gse=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},zse=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},Jse=()=>({host:"127.0.0.1",port:22}),jse=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},$se=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},Vse={}});var dO={};An(dO,{Client:()=>tae,FTPDriver:()=>Xse,SFTPClient:()=>Zse,SFTPDriver:()=>Yse,createPool:()=>rae,default:()=>iae,normalizeSFTPAddition:()=>Wse,parseAddress:()=>eae});var Yse,Wse,Xse,Zse,eae,tae,rae,iae,uO=J(()=>{Yse=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},Wse=r=>r,Xse=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},Zse=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},eae=()=>({host:"127.0.0.1",port:22}),tae=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},rae=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},iae={}});var tn={};An(tn,{copyItems:()=>JA,flushPendingDriverState:()=>rr,getDriver:()=>It,getItem:()=>Gi,getOrCreateDriver:()=>AO,listItems:()=>lr,makeDirectory:()=>GA,moveItems:()=>zu,putItem:()=>ts,removeItems:()=>hc,renameItem:()=>zA,scheduleStoragePersistence:()=>gO});async function nae(){if(!O2){let{LocalDriver:r}=await Promise.resolve().then(()=>(oO(),aO));O2=new r}return O2}async function sae(r){if(typeof process<"u"&&process.release?.name==="node"){let{SFTPDriver:e}=await Promise.resolve().then(()=>(lO(),cO)),t=new e(Ie(r));return await t.init?.(),t}throw new Error("SFTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}async function aae(r){if(typeof process<"u"&&process.release?.name==="node"){let{FTPDriver:e}=await Promise.resolve().then(()=>(uO(),dO)),t=new e(Ie(r));return await t.init?.(),t}throw new Error("FTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}function lae(r,e){if(Gu.size>=cae){let t=Gu.keys().next().value;t!==void 0&&Gu.delete(t)}Gu.set(r,e)}async function AO(r,e,t){let i=r.get(e);if(i)return i;let n=t();r.set(e,n);try{return await n}catch(s){throw r.get(e)===n&&r.delete(e),s}}function Ie(r){let e=r?.addition;return e?typeof e=="string"?JSON.parse(e||"{}"):e:{}}async function fO(r,e){let t=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(t==="local"){if(typeof process<"u"&&process.release?.name==="node")return nae();throw new Error("Local storage driver requires Node.js runtime (not available in Cloudflare Workers)")}if(t==="sftp")return sae(e);if(t==="ftp")return aae(e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i;if(t==="onedriveapp"){i=new Op(Ie(e));try{await i.init?.()}catch(n){throw console.error("onedrive_app init failed:",n),n}}else if(t==="onedrive"||t==="onedrivesb"||t==="onedrivebusiness"||t==="onedrivesharepoint"||t.startsWith("onedrive")&&t!=="onedriveapp"){i=new Np(Ie(e),async n=>{try{let s=await ne(),a=(s.storages||[]).find(c=>c.id===e?.id);if(!a)return;let o=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};if(o.refresh_token=n,a.addition=JSON.stringify(o),e.addition=a.addition,q2.has(e))return;await he(s)}catch(s){console.warn("[Onedrive] failed to persist refresh token:",s)}});try{await i.init?.()}catch(n){throw console.error("onedrive init failed:",n),n}}else if(t==="aliyundrive"||t==="aliyundriveopen"||t==="aliyundriveshare"||t==="aliyun"||t==="aliyundriveshare2open"||t==="aliyundriveoauth2"||t.includes("aliyun"))i=new Lp(Ie(e)),await i.init?.();else if(t==="googlephoto"||t==="googlephotos"||t==="gphoto"||t==="google_photo")i=new Qm(Ie(e)),await i.init?.();else if(t==="googledrive"||t==="gdrive"||t==="google"||t.startsWith("google"))i=new Kp(Ie(e)),await i.init?.();else if(t==="quark"||t==="quarkuc"||t==="uc"||t==="quarkcookie")i=new zp(Ie(e)),await i.init?.();else if(t==="115"||t==="115cloud"||t==="115open"||t==="115netdisk")i=new jp(Ie(e)),await i.init?.();else if(t==="cloudreve"||t==="cloudrevev3"||t==="cloudreve_v3"){let n=Ie(e);i=new Wp(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.cookie=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[cloudreve] failed to persist cookie:",a)}}),await i.init?.()}else if(t==="cloudrevev4"||t==="cloudreve_v4")i=new Vp(Ie(e)),await i.init?.();else if(t==="openlistshare"||t==="openlist_share")i=new tm(Ie(e)),await i.init?.();else if(t==="openlist")i=new Zp(Ie(e)),await i.init?.();else if(t==="teldrive")i=new im(Ie(e)),await i.init?.();else if(t==="mediafire")i=new sm(Ie(e)),await i.init?.();else if(t==="githubreleases"||t==="github_releases")i=new om(Ie(e)),await i.init?.();else if(t==="cnbreleases"||t==="cnb_releases")i=new lm(Ie(e)),await i.init?.();else if(t==="kodbox"||t==="kodo")i=new um(Ie(e)),await i.init?.();else if(t==="ipfs"||t==="ipfsapi"||t==="ipfs_api")i=new hm(Ie(e)),await i.init?.();else if(t==="lenovonasshare"||t==="lenovonas_share")i=new gm(Ie(e)),await i.init?.();else if(t==="misskey")i=new mm(Ie(e)),await i.init?.();else if(t==="doubao"||t==="doubaonew"||t==="doubao_new"||t==="doubaoshare"||t==="doubao_share")i=new Im(Ie(e)),await i.init?.();else if(t==="quarkopen"||t==="quark_open"||t==="quarkoa")i=new xm(Ie(e)),await i.init?.();else if(t==="quarktv"||t==="uctv"||t==="quark_uc_tv")i=new Em(Ie(e)),await i.init?.();else if(t==="123open"||t==="123_open"||t==="123cloudopen")i=new bm(Ie(e)),await i.init?.();else if(t==="teambition"||t==="tb")i=new km(Ie(e)),await i.init?.();else if(t==="neteasemusic"||t==="netease"||t==="neteasecloudmusic"||t==="netease_music")i=new Nm(Ie(e)),await i.init?.();else if(t==="halalcloudopen"||t==="halalcloud_open"||t==="halalcloudopenapi"){let n=Ie(e);i=new Mm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.refresh_token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[HalalCloud] failed to persist refresh_token:",a)}}),await i.init?.()}else if(t==="degoo"){let n=Ie(e);i=new Um(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};s.accessToken&&(c.access_token=s.accessToken),s.refreshToken&&(c.refresh_token=s.refreshToken),o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[degoo] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="febbox"||t==="febboxpan"){let n=Ie(e);i=new Pm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.refresh_token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[febbox] failed to persist refresh_token:",a)}}),await i.init?.()}else if(t==="chaoxing"||t==="chaoxinggroupdrive"||t==="chaoxinggroup"||t.startsWith("chaoxing")){let n=Ie(e);i=new Dm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.cookie=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[chaoxing] failed to persist cookie:",a)}}),await i.init?.()}else if(t==="123pan"||t==="123"||t==="123panshare"||t.startsWith("123")){let n=Ie(e);i=new Hm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.access_token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[123Pan] failed to persist access_token:",a)}}),await i.init?.()}else if(t==="baiduphoto"||t==="baidu_photo"||t==="baiduphotos")i=new $m(Ie(e)),await i.init?.();else if(t==="baidunetdisk"||t==="baidu"||t==="baiduyun"||t==="baidushare"||t.startsWith("baidu")){let n=Ie(e);i=new Gm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,o.addition=JSON.stringify(qd(c)),await he(a)}catch(a){console.warn("[baidu_netdisk] failed to persist token:",a)}}),await i.init?.()}else if(t==="115open"||t==="115"||t==="115pan"||t==="115cloud"||t.startsWith("115")){let n=Ie(e);i=new Wm(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[115open] failed to persist token:",a)}}),await i.init?.()}else if(t==="github"||t==="githubapi"||t==="github_api"){let n=Ie(e);i=new Zm(n),await i.init?.()}else if(t==="thunderexpert"||t==="thunderbrowserexpert"||t==="thunderxexpert"||t.includes("thunder")&&t.includes("expert")||t.includes("xunlei")&&t.includes("expert")){let n=Ie(e);i=new ty(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let a=await ne(),o=(a.storages||[]).find(c=>c.id===e?.id);if(o){let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),o.addition=JSON.stringify(c),await he(a)}}catch(a){console.warn("[thunderexpert] failed to persist token:",a)}}),await i.init?.()}else if(t==="thunder"||t==="xunlei"||t==="thunderbrowser"||t==="thunderx"||t.includes("thunder")||t.includes("xunlei")){let n=Ie(e);i=new yh(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let a=await ne(),o=(a.storages||[]).find(c=>c.id===e?.id);if(o){let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),o.addition=JSON.stringify(c),await he(a)}}catch(a){console.warn("[thunder] failed to persist token:",a)}}),await i.init?.()}else if(t==="lanzou"||t==="lanzoupan"||t==="ilanzou"||t==="lanzoui"||t==="lanzous"){let n=Ie(e);i=new oy(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.cookie=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[Lanzou] failed to persist cookie:",a)}}),await i.init?.()}else if(t==="189tv"||t==="cloud189tv"||t==="189tvcloud"||t==="189_tv"){let n=Ie(e);i=new hy(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.access_token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[189TV] failed to persist access_token:",a)}}),await i.init?.()}else if(t==="189"||t==="189cloud"||t==="cloud189"||t==="ctyun"||t==="189pan"||t==="189cloudpc"||t==="189cloudapp"||t.startsWith("189")||t.includes("cloud189")){let n=Ie(e);i=new uy(n),await i.init?.()}else if(t==="webdav"||t==="webdavdriver"){let n=Ie(e);i=new gy(n),await i.init?.()}else if(t==="s3"||t==="doge"||t==="dogecloud"||t==="minio"||t==="ceph"||t==="aws"||t==="r2"||t==="b2"||t==="cos"||t==="oss"||t==="kodo"){let n=Ie(e);i=new ky(n,e.driver||"S3"),await i.init?.()}else if(t==="wopan"||t==="unicom"||t==="unicomcloud"||t==="woyun"||t==="chinaunicom"){let n=Ie(e);i=new wy(n,async(s,a)=>{try{let o=await ne(),c=(o.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,l.refresh_token=a,c.addition=JSON.stringify(jB(l)),await he(o)}catch(o){console.warn("[WoPan] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="weiyun"||t==="tencentweiyun"||t==="txweiyun"||t.includes("weiyun")){let n=Ie(e);i=new Qy(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.cookies=s,o.addition=JSON.stringify(r1(c)),await he(a)}catch(a){console.warn("[WeiYun] failed to persist cookies:",a)}}),await i.init?.()}else if(t==="pikpak"||t==="pikpakshare"||t.includes("pikpak")){let n=Ie(e);i=new Py(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.refresh_token=s.refreshToken,s.captchaToken&&(c.captcha_token=s.captchaToken),o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[PikPak] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="seafile"||t.includes("seafile")){let n=Ie(e);i=new Uy(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[Seafile] failed to persist token:",a)}}),await i.init?.()}else if(t==="yandex"||t==="yandexdisk"||t==="yandexdrive"||t.includes("yandex")){let n=Ie(e);i=new Ny(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.refresh_token=s.refreshToken,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[Yandex] failed to persist token:",a)}}),await i.init?.()}else if(t==="terabox"||t==="dubox"||t.includes("terabox")){let n=Ie(e);i=new qy(n),await i.init?.()}else if(t==="mediatrack"||t==="fenmiao"||t.includes("mediatrack")){let n=Ie(e);i=new Ly(n),await i.init?.()}else if(t==="alias"||t.includes("alias")){let n=Ie(e);i=new Hy(n),await i.init?.()}else if(t==="dropbox"||t.includes("dropbox")){let n=Ie(e);i=new Gy(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.access_token=s.accessToken,c.refresh_token=s.refreshToken,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[Dropbox] failed to persist token:",a)}}),await i.init?.()}else if(t==="wps"||t.includes("wps")||t.includes("kdocs")){let n=Ie(e);i=new Jy(n),await i.init?.()}else if(t==="mopan"||t==="mobilecloud"||t==="cmcc"||t==="chinamobile"||t.includes("mopan")){let n=Ie(e);i=new Ey(n,async(s,a)=>{try{let o=await ne(),c=(o.storages||[]).find(u=>u.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.device_info=s;let d=a.replace(/^Bearer\s+/i,"");l.token=d,c.addition=JSON.stringify(l),await he(o)}catch(o){console.warn("[MoPan] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="139"||t==="139yun"||t==="caiyun"||t==="hecaiyun"||t.includes("139")){let n=Ie(e);i=new $y(n),await i.init?.()}else if(t==="mega"||t==="meganz"||t.includes("mega")){let n=Ie(e);i=new Yy(n),await i.init?.()}else if(t==="115share"||t==="115sharelink"||t.includes("115")&&t.includes("share")){let n=Ie(e);i=new Xy(n),await i.init?.()}else if(t==="123share"||t==="123panshare"||t==="123link"||t.includes("123")&&t.includes("share")){let n=Ie(e);i=new eI(n),await i.init?.()}else if(t==="aliyundriveshare"||t==="aliyunshare"||t==="alishare"||t.includes("ali")&&t.includes("share")){let n=Ie(e);i=new rI(n),await i.init?.()}else if(t==="onedrivesharelink"||t==="onedriveshare"||t==="sharepointshare"||t.includes("onedrive")&&t.includes("share")){let n=Ie(e);i=new nI(n),await i.init?.()}else if(t==="pikpakshare"||t.includes("pikpak")&&t.includes("share")){let n=Ie(e);i=new aI(n),await i.init?.()}else if(t==="smb"||t==="samba"||t==="cifs"||t.includes("smb")){let n=Ie(e);i=new oI(n),await i.init?.()}else if(t==="crypt"){let n=Ie(e);i=new uI(n),await i.init?.()}else if(t==="virtual"){let n=Ie(e);i=new fI(n)}else if(t==="alistv3"||t==="alist"||t==="alistv2"){let n=Ie(e);i=new hI(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.token=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[alist_v3] failed to persist token:",a)}}),await i.init?.()}else if(t==="urltree"||t==="urlstree"){let n=Ie(e);i=new AI(n,async s=>{try{let a=await ne(),o=(a.storages||[]).find(l=>l.id===e?.id);if(!o)return;let c=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};c.url_structure=s,o.addition=JSON.stringify(c),await he(a)}catch(a){console.warn("[url_tree] failed to persist structure:",a)}}),await i.init?.()}else if(t==="strm"){let n=Ie(e);i=new gI(n),await i.init?.()}else if(t==="chunk"){let n=Ie(e);i=new pI(n),await i.init?.()}else if(t==="azureblob"||t==="azure"||t==="azblob"){let n=Ie(e);i=new mI(n),await i.init?.()}else if(t==="uss"||t==="upyun"){let n=Ie(e);i=new yI(n),await i.init?.()}else if(t==="autoindex"||t==="nginxautoindex"){let n=Ie(e);i=new $I(n),await i.init?.()}else if(t==="protondrive"||t==="proton"){let n=Ie(e);i=new vx(n),await i.init?.()}else if(t==="alidoc"||t==="dingtalkdoc"){let n=Ie(e);i=new wI(n),await i.init?.()}else if(t==="emby"||t==="jellyfin"){let n=Ie(e);i=new CI(n),await i.init?.()}else if(t==="bunnystorage"||t==="bunnycdn"||t==="bunny"){let n=Ie(e);i=new bI(n),await i.init?.()}else if(t==="cloudflareimgbed"||t==="cfimgbed"||t==="cloudflareimage"){let n=Ie(e);i=new SI(n),await i.init?.()}else if(t==="guangyapan"||t==="guangya"){let n=Ie(e);i=new DI(n,async(s,a)=>{try{let o=await ne(),c=(o.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,a&&(l.refresh_token=a),c.addition=JSON.stringify(l),await he(o)}catch(o){console.warn("[GuangYaPan] failed to persist tokens:",o)}}),await i.init?.()}else throw new Error("failed get driver: unsupported driver '"+r+"'");return i}async function It(r,e,t={}){let i=!!(t.deferTokenPersistence&&e&&typeof e=="object");i&&q2.add(e);try{if((r||"").toLowerCase().replace(/[^a-z0-9]/g,"")==="local")return fO(r,e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let s=`${e.id}_${e.modified}`,a=Gu.get(s);return a||AO(oae,s,async()=>{let o=Gu.get(s);if(o)return o;let c=await fO(r,e);return lae(s,c),c})}finally{i&&q2.delete(e)}}function dae(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="189"||e==="189cloud"||e==="cloud189"||e==="ctyun"||e==="189pan"}async function gO(r,e){if(r)try{r(e);return}catch{}await e}async function uae(r,e){let t=String(r?.id||"");if(!t)return;let n=(kx.get(t)||Promise.resolve()).catch(()=>{}).then(async()=>{let s=await ne(),a=(s.storages||[]).find(c=>String(c.id)===t);if(!a)return;let o=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};o.cookies!==void 0||pO(r?.driver)?o.cookies=e:o.cookie=e,a.addition=JSON.stringify(o),String(r?.id)===t&&(r.addition=a.addition),await he(s)});kx.set(t,n);try{await n}finally{kx.get(t)===n&&kx.delete(t)}}function pO(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="weiyun"||e==="tencentweiyun"||e==="txweiyun"||e.includes("weiyun")}async function rr(r,e,t,i){if(!dae(r)&&!pO(r))return;let s=t.consumePendingCookie?.call(t);if(!s)return;let a=uae(e,s).catch(o=>{console.warn(`[${r}] failed to persist cookie:`,o)});await gO(i?.waitUntil,a)}async function lr(r,e){let t=await yt(r,e?.env),i=[],n="Virtual";if(t.storage){n=t.storage.driver;try{let l=await It(n,t.storage);try{i=await l.list(r,t.physical)}finally{await rr(n,t.storage,l,e)}if(t.storage.status!=="work"){t.storage.status="work";let d=await ne(e?.env),u=(d.storages||[]).find(f=>f.id===t.storage?.id);u&&(u.status="work",await he(d,e?.env))}}catch(l){try{let d=await ne(e?.env),u=(d.storages||[]).find(f=>f.id===t.storage?.id);u&&(u.status=l.message||String(l),await he(d,e?.env))}catch(d){console.warn("Failed to persist storage status:",d)}throw l}}else if(!t.isVirtual)throw new Error("failed get storage: storage not found");let a=((await ne(e?.env)).storages||[]).filter(l=>!l.disabled),o=t.cleanPath;return[...a].sort((l,d)=>{let u=Number(l.order)||0,f=Number(d.order)||0;if(u!==f)return u-f;let A=String(l.mount_path||""),g=String(d.mount_path||"");return A<g?-1:A>g?1:0}).forEach(l=>{let d="/"+(l.mount_path||"").split("/").filter(Boolean).join("/");if(d===o||d==="/")return;let u=o==="/"?"/":o+"/";if(d.startsWith(u)){let f=d.slice(u.length).split("/").filter(Boolean)[0];f&&!i.some(A=>A.name===f)&&i.push({name:f,size:0,is_dir:!0,modified:l.modified||new Date().toISOString(),sign:"",type:1})}}),i.forEach(l=>{l.type||(l.type=X(l.name,l.is_dir))}),{content:i,provider:n,storage:t.storage}}async function hO(r,e){try{let t=await ps().catch(()=>({}));return Rp({storage:r,driver:r?.driver||"",filename:e,proxyTypes:Xc(t.proxy_types),textTypes:Xc(t.text_types)})?"/api/p":"/api/d"}catch{return"/api/p"}}async function Gi(r,e){let t=await yt(r,e?.env);if(t.isVirtual)return{item:{name:t.cleanPath.split("/").filter(Boolean).pop()||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1},provider:"Virtual",rawUrl:""};if(t.storage&&t.relative==="/"){let a=t.cleanPath.split("/").filter(Boolean).pop()||"root",o=Ie(t.storage);return{item:{name:a,size:0,is_dir:!0,modified:t.storage.modified||new Date().toISOString(),sign:String(o.root_folder_id||""),type:1,raw_url:""},provider:t.storage.driver,rawUrl:`${await hO(t.storage,r)}${da(r)}`}}let i=t.storage?t.storage.driver:"Local",n=await It(i,t.storage),s;try{s=await n.get(r,t.physical)}finally{await rr(i,t.storage,n,e)}return s.type||(s.type=X(s.name,s.is_dir)),{item:s,provider:i,rawUrl:`${await hO(t.storage,r)}${da(r)}`}}async function GA(r,e){let t=await yt(r,e?.env);if(t.isVirtual)throw new Error("failed get storage: storage not found");let i=await It(t.storage.driver,t.storage);try{await i.mkdir(r,t.physical)}finally{await rr(t.storage.driver,t.storage,i,e)}}async function zA(r,e,t){let i=await yt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await It(i.storage.driver,i.storage);try{await n.rename(r,i.physical,e)}finally{await rr(i.storage.driver,i.storage,n,t)}}async function hc(r,e,t){for(let i of e){let n=`${r}/${i}`,s=await yt(n,t?.env);if(s.isVirtual)throw new Error("failed get storage: storage not found");let a=await It(s.storage.driver,s.storage);try{await a.remove(n,s.physical,[i])}finally{await rr(s.storage.driver,s.storage,a,t)}}}async function zu(r,e,t,i){for(let n of t){let s=`${r}/${n}`,a=`${e}/${n}`,o=await yt(s,i?.env),c=await yt(a,i?.env);if(o.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await It(o.storage.driver,o.storage);try{await l.move(r,e,[n],o.physical,c.physical)}finally{await rr(o.storage.driver,o.storage,l,i)}}}async function JA(r,e,t,i){for(let n of t){let s=`${r}/${n}`,a=`${e}/${n}`,o=await yt(s,i?.env),c=await yt(a,i?.env);if(o.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await It(o.storage.driver,o.storage);try{await l.copy(r,e,[n],o.physical,c.physical)}finally{await rr(o.storage.driver,o.storage,l,i)}}}async function ts(r,e,t){let i=await yt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await It(i.storage.driver,i.storage);try{await n.put(r,i.physical,e)}finally{await rr(i.storage.driver,i.storage,n,t)}}var O2,Gu,oae,kx,q2,cae,ar=J(()=>{"use strict";nt();Pd();dh();ve();WQ();s8();l8();g8();w8();b8();S8();Q8();P8();N8();M8();H8();G8();J8();$8();Y8();X8();e4();n4();o4();d4();h4();g4();x4();B4();k4();_4();H4();Z4();sF();uF();mF();xF();BF();UF();LF();WF();iP();oP();SP();MP();$P();i5();a5();c5();d5();f5();A5();g5();m5();w5();C5();B5();v5();D5();Q5();P5();U5();R5();M5();L5();H5();G5();$5();V5();X5();Z5();r6();s6();u6();p6();B6();LT();sO();O2=null;Gu=new Map,oae=new Map,kx=new Map,q2=new WeakSet,cae=100});var yO,fae,hae,Aae,gae,mO,Sx,M2,IO=J(()=>{Oc();yO={name:"HMAC",hash:"SHA-256"},fae=async r=>{let e=typeof r=="string"?new TextEncoder().encode(r):r;return await crypto.subtle.importKey("raw",e,yO,!1,["sign","verify"])},hae=async(r,e,t)=>{try{let i=atob(r),n=new Uint8Array(i.length);for(let s=0,a=i.length;s<a;s++)n[s]=i.charCodeAt(s);return await crypto.subtle.verify(yO,t,n,new TextEncoder().encode(e))}catch{return!1}},Aae=/^[!#-:<>-[\]-~]+$/,gae=/^[ !#-:<-[\]-~]*$/,mO=r=>{let e=0,t=r.length;for(;e<t;){let i=r.charCodeAt(e);if(i!==32&&i!==9)break;e++}for(;t>e;){let i=r.charCodeAt(t-1);if(i!==32&&i!==9)break;t--}return e===0&&t===r.length?r:r.slice(e,t)},Sx=(r,e)=>{if(e&&r.indexOf(e)===-1)return{};let t=r.split(";"),i=Object.create(null);for(let n of t){let s=n.indexOf("=");if(s===-1)continue;let a=mO(n.substring(0,s));if(e&&e!==a||!Aae.test(a)||a in i)continue;let o=mO(n.substring(s+1));if(o.startsWith('"')&&o.endsWith('"')&&(o=o.slice(1,-1)),gae.test(o)&&(i[a]=xd(o),e))break}return i},M2=async(r,e,t)=>{let i=Object.create(null),n=await fae(e);for(let[s,a]of Object.entries(Sx(r,t))){let o=a.lastIndexOf(".");if(o<1)continue;let c=a.substring(0,o),l=a.substring(o+1);if(l.length!==44||!l.endsWith("="))continue;let d=await hae(l,c,n);i[s]=d?c:!1}return i}});var Dx,L2,wO=J(()=>{IO();Dx=(r,e,t)=>{let i=r.req.raw.headers.get("Cookie");if(typeof e=="string"){if(!i)return;let s=e;return t==="secure"?s="__Secure-"+e:t==="host"&&(s="__Host-"+e),Sx(i,s)[s]}return i?Sx(i):{}},L2=async(r,e,t,i)=>{let n=r.req.raw.headers.get("Cookie");if(typeof t=="string"){if(!n)return;let a=t;return i==="secure"?a="__Secure-"+t:i==="host"&&(a="__Host-"+t),(await M2(n,e,a))[a]}return n?await M2(n,e):{}}});var H2,K2,pae,G2,z2=J(()=>{H2=r=>G2(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),K2=r=>pae(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),pae=r=>{let e="",t=new Uint8Array(r);for(let i=0,n=t.length;i<n;i++)e+=String.fromCharCode(t[i]);return btoa(e)},G2=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),i=e.length/2;for(let n=0,s=e.length-1;n<=i;n++,s--)t[n]=e.charCodeAt(n),t[s]=e.charCodeAt(s);return t}});var Ac,J2=J(()=>{Ac=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(Ac||{})});var mae,xO,yae,CO=J(()=>{mae={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},xO=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,i]of Object.entries(mae))if(yae(i))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},yae=r=>navigator.userAgent.startsWith(r)});var EO,j2,$2,Nl,BO,bO,vO,_x,V2,kO,SO,DO,_O,QO,FO,ju,Y2=J(()=>{EO=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented"}},j2=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired"}},$2=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch"}},Nl=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid"}},BO=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore"}},bO=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired"}},vO=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt"}},_x=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer"}},V2=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid"}},kO=class extends Error{constructor(r){super(`required "kid" in jwt header: ${JSON.stringify(r)}`),this.name="JwtHeaderRequiresKid"}},SO=class extends Error{constructor(r){super(`symmetric algorithm "${r}" is not allowed for JWK verification`),this.name="JwtSymmetricAlgorithmNotAllowed"}},DO=class extends Error{constructor(r,e){super(`algorithm "${r}" is not in the allowed list: [${e.join(", ")}]`),this.name="JwtAlgorithmNotAllowed"}},_O=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched"}},QO=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud"}},FO=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience"}},ju=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(ju||{})});var Ol,PO,W2=J(()=>{Ol=new TextEncoder,PO=new TextDecoder});async function UO(r,e,t){let i=NO(e),n=await Iae(r,i);return await crypto.subtle.sign(i,n,t)}async function RO(r,e,t,i){let n=NO(e),s=await wae(r,n);return await crypto.subtle.verify(n,s,t,i)}function X2(r){return G2(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function Iae(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OO(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[ju.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",X2(r),e,!1,t):await crypto.subtle.importKey("raw",Ol.encode(r),e,!1,t)}async function wae(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OO(r)){if(r.type==="public"||r.type==="secret")return r;r=await TO(r)}if(typeof r=="string"&&r.includes("PRIVATE")){let i=await crypto.subtle.importKey("pkcs8",X2(r),e,!0,[ju.Sign]);r=await TO(i)}let t=[ju.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",X2(r),e,!1,t):await crypto.subtle.importKey("raw",Ol.encode(r),e,!1,t)}async function TO(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:i,e:n,n:s}=e,{crv:a,x:o,y:c}=e;return{kty:t,alg:i,e:n,n:s,crv:a,x:o,y:c,key_ops:[ju.Verify]}}function NO(r){switch(r){case"HS256":return{name:"HMAC",hash:{name:"SHA-256"}};case"HS384":return{name:"HMAC",hash:{name:"SHA-384"}};case"HS512":return{name:"HMAC",hash:{name:"SHA-512"}};case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"RS384":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"RS512":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"PS256":return{name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case"PS384":return{name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case"PS512":return{name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case"ES256":return{name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case"ES384":return{name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case"ES512":return{name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case"EdDSA":return{name:"Ed25519",namedCurve:"Ed25519"};default:throw new EO(r)}}function OO(r){return xO()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var qO=J(()=>{CO();z2();Y2();W2()});function MO(r){if(typeof r=="object"&&r!==null){let e=r;return"alg"in e&&Object.values(Ac).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return!1}var Z2,xae,ev,LO,tv,Cae,HO,rv,Eae,KO=J(()=>{z2();J2();qO();Y2();W2();Z2=r=>K2(Ol.encode(JSON.stringify(r)).buffer).replace(/=/g,""),xae=r=>K2(r).replace(/=/g,""),ev=r=>JSON.parse(PO.decode(H2(r)));LO=async(r,e,t="HS256")=>{let i=Z2(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=Z2({alg:t,typ:"JWT",kid:e.kid})):n=Z2({alg:t,typ:"JWT"});let s=`${n}.${i}`,a=await UO(e,t,Ol.encode(s)),o=xae(a);return`${s}.${o}`},tv=async(r,e,t)=>{if(!t)throw new j2;let{alg:i,iss:n,nbf:s=!0,exp:a=!0,iat:o=!0,aud:c}=typeof t=="string"?{alg:t}:t;if(!i)throw new j2;let l=r.split(".");if(l.length!==3)throw new Nl(r);let{header:d,payload:u}=rv(r);if(!MO(d))throw new V2(d);if(d.alg!==i)throw new $2(i,d.alg);let f=Math.floor(Date.now()/1e3);if(s&&u.nbf!==void 0&&(typeof u.nbf!="number"||!Number.isFinite(u.nbf)||u.nbf>f))throw new BO(r);if(a&&u.exp!==void 0&&(typeof u.exp!="number"||!Number.isFinite(u.exp)||u.exp<=f))throw new bO(r);if(o&&u.iat!==void 0&&(typeof u.iat!="number"||!Number.isFinite(u.iat)||f<u.iat))throw new vO(f,u.iat);if(n){if(!u.iss)throw new _x(n,null);if(typeof n=="string"&&u.iss!==n)throw new _x(n,u.iss);if(n instanceof RegExp&&!n.test(u.iss))throw new _x(n,u.iss)}if(c){if(!u.aud)throw new QO(u);if(!(Array.isArray(u.aud)?u.aud:[u.aud]).some(m=>c instanceof RegExp?c.test(m):typeof c=="string"?m===c:Array.isArray(c)&&c.includes(m)))throw new FO(c,u.aud)}let A=r.substring(0,r.lastIndexOf("."));if(!await RO(e,i,H2(l[2]),Ol.encode(A)))throw new _O(r);return u},Cae=[Ac.HS256,Ac.HS384,Ac.HS512],HO=async(r,e,t)=>{let i=e.verification||{},n=Eae(r);if(!MO(n))throw new V2(n);if(!n.kid)throw new kO(n);if(Cae.includes(n.alg))throw new SO(n.alg);if(!e.allowedAlgorithms.includes(n.alg))throw new DO(n.alg,e.allowedAlgorithms);let s=e.keys?[...e.keys]:void 0;if(e.jwks_uri){let o=await fetch(e.jwks_uri,t);if(!o.ok)throw new Error(`failed to fetch JWKS from ${e.jwks_uri}`);let c=await o.json();if(!c.keys)throw new Error('invalid JWKS response. "keys" field is missing');if(!Array.isArray(c.keys))throw new Error('invalid JWKS response. "keys" field is not an array');s??=[],s.push(...c.keys)}else if(!s)throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');let a=s.find(o=>o.kid===n.kid);if(!a)throw new Nl(r);if(a.alg&&a.alg!==n.alg)throw new $2(a.alg,n.alg);return await tv(r,a,{alg:n.alg,...i})},rv=r=>{let e=r.split(".");if(e.length!==3)throw new Nl(r);try{let t=ev(e[0]),i=ev(e[1]);return{header:t,payload:i}}catch{throw new Nl(r)}},Eae=r=>{let e=r.split(".");if(e.length!==3)throw new Nl(r);try{return ev(e[0])}catch{throw new Nl(r)}}});var $u,GO=J(()=>{KO();$u={sign:LO,verify:tv,decode:rv,verifyWithJwks:HO}});function iv(r){let e=(r.realm??r.ctx.req.url).replace(/"/g,'\\"'),t=r.errDescription.replace(/"/g,'\\"');return new Response("Unauthorized",{status:401,statusText:r.statusText,headers:{"WWW-Authenticate":`Bearer realm="${e}",error="${r.error}",error_description="${t}"`}})}var zO,JO,La,jO,Ha,$O=J(()=>{wO();WC();GO();fg();zO=r=>{let e=r.verification||{};if(!r||!r.secret)throw new Error('JWT auth middleware requires options for "secret"');if(!r.alg)throw new Error('JWT auth middleware requires options for "alg"');if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");return async function(i,n){let s=r.headerName||"Authorization",a=i.req.raw.headers.get(s),o;if(a){let d=a.split(/\s+/);if(d.length!==2||d[0].toLowerCase()!=="bearer"){let u="invalid credentials structure";throw new Of(401,{message:u,res:iv({ctx:i,error:"invalid_request",errDescription:u,realm:r.realm})})}else o=d[1]}else r.cookie&&(typeof r.cookie=="string"?o=Dx(i,r.cookie):r.cookie.secret?r.cookie.prefixOptions?o=await L2(i,r.cookie.secret,r.cookie.key,r.cookie.prefixOptions):o=await L2(i,r.cookie.secret,r.cookie.key):r.cookie.prefixOptions?o=Dx(i,r.cookie.key,r.cookie.prefixOptions):o=Dx(i,r.cookie.key));if(!o){let d="no authorization included in request";throw new Of(401,{message:d,res:iv({ctx:i,error:"invalid_request",errDescription:d,realm:r.realm})})}let c,l;try{c=await $u.verify(o,r.secret,{alg:r.alg,...e})}catch(d){l=d}if(!c)throw new Of(401,{message:"Unauthorized",res:iv({ctx:i,error:"invalid_token",statusText:"Unauthorized",errDescription:"token verification failure",realm:r.realm}),cause:l});i.set("jwtPayload",c),await n()}};JO=$u.verifyWithJwks,La=$u.verify,jO=$u.decode,Ha=$u.sign});var Qx={};An(Qx,{AlgorithmTypes:()=>Ac,decode:()=>jO,jwt:()=>zO,sign:()=>Ha,verify:()=>La,verifyWithJwks:()=>JO});var Ka=J(()=>{$O();J2()});function VO(r,e){let t=`<?xml version="1.0" encoding="utf-8" ?> `;t+=`<d:multistatus xmlns:d="DAV:"> `,t+=` <d:response> `,t+=` <d:href>${r}</d:href> @@ -250,55 +252,55 @@ ${y}${w}`,b=await Bu(C,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${b}`,_={"Cont `,t+=` <d:status>HTTP/1.1 200 OK</d:status> `,t+=` </d:propstat> `,t+=` </d:response> -`}return t+="</d:multistatus>",t}var WR=j(()=>{"use strict"});function Ne(r,e="Internal server error"){if(!r)return e;let t=typeof r=="string"?r:r?.message||String(r);if(!t)return e;let i=String(t);return i.length>200||/[A-Za-z]:[\\/][^\\/\s]|[\\/][A-Za-z0-9_.-]+[\\/][A-Za-z0-9_.-]/.test(i)&&/\.(ts|js|mjs|cjs|json|toml|yml|yaml)/i.test(i)||/at .*\(|at [A-Za-z0-9_.-]+:[0-9]+:[0-9]+/.test(i)?e:i}var Vc,Gxe,Da=j(()=>{"use strict";Vc=class extends Error{constructor(t,i,n){super(i);this.code=t;this.message=i;this.originalError=n;this.name="OpenListError"}code;message;originalError},Gxe={PathNotFound:new Vc(1004,"Path not found"),NotReady:new Vc(1003,"Storage not ready"),InvalidConfig:new Vc(1001,"Invalid configuration"),Unauthorized:new Vc(401,"Unauthorized access"),Forbidden:new Vc(403,"Permission denied")}});var XR=j(()=>{"use strict"});var ZR=j(()=>{"use strict"});async function Kd(r){if(await n2(r))return!0;let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let{verify:i}=await Promise.resolve().then(()=>(Ao(),$I)),{getJwtSecret:n}=await Promise.resolve().then(()=>(Qi(),VI)),s=await n(r),o=await i(t,s,"HS256");if(o&&o.role===2){let c=((await ne(r.env)).users||[]).find(l=>l.id===o.id||l.username===o.username);return!!(c&&!c.disabled)}}catch{}return!1}async function n2(r){let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e,n=(await ne(r.env)).settings.find(c=>c.key==="token");if(!n||!n.value)return!1;let s=new TextEncoder().encode(t),o=new TextEncoder().encode(String(n.value));if(s.length!==o.length)return!1;let a=0;for(let c=0;c<s.length;c++)a|=s[c]^o[c];return a===0}var bA=j(()=>{"use strict";Ve();WR();Da();XR();lc();si();ZR()});var vA={};xn(vA,{cleanupExpiredLogs:()=>qre,getAuditStats:()=>Ore,loadAuditLogsFromKV:()=>Tre,logAudit:()=>Fre,queryAuditLogs:()=>Pre});async function Fre(r,e){let t={id:Rre(),timestamp:new Date().toISOString(),...r};ln.push(t),ln.length>1e3&&(ln=ln.slice(-1e3)),e&&Ure(t,e).catch(i=>{console.warn("[Audit] Failed to persist log to KV:",i)}),Nre(e)&&console.log(`[AUDIT] ${t.username} ${t.method} ${t.resource} - ${t.status} (${t.status_code})`)}function Pre(r){let e=[...ln];r?.username&&(e=e.filter(i=>i.username===r.username)),r?.action&&(e=e.filter(i=>i.action.includes(r.action))),r?.method&&(e=e.filter(i=>i.method.toUpperCase()===r.method.toUpperCase())),r?.status&&(e=e.filter(i=>i.status===r.status)),r?.startDate&&(e=e.filter(i=>i.timestamp>=r.startDate)),r?.endDate&&(e=e.filter(i=>i.timestamp<=r.endDate));let t=r?.limit||100;return e.slice(-t).reverse()}async function Tre(r){try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Gr)),t=await e(r);if(t.mode==="none"||!t.binding)return[];let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(ho);else try{s=await i.get(ho,"text")}catch{s=await i.get(ho)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return[];let o=JSON.parse(String(s));return Array.isArray(o)?o:[]}catch(e){return console.warn("[Audit] Failed to load logs from KV:",e),[]}}async function Ure(r,e){try{let{getKvBinding:t}=await Promise.resolve().then(()=>(Ve(),Gr)),i=await t(e);if(i.mode==="none"||!i.binding)return;let{binding:n,mode:s}=i,o=[];try{let c=null;s==="blob"?c=await n.get(ho):c=await n.get(ho,"text"),c&&typeof c.text=="function"&&(c=await c.text()),c&&(o=JSON.parse(String(c)))}catch{}Array.isArray(o)||(o=[]),o.push(r),o.length>1e4&&(o=o.slice(-1e4));let a=JSON.stringify(o);s==="blob"?typeof n.set=="function"?await n.set(ho,a):typeof n.put=="function"&&await n.put(ho,a):typeof n.put=="function"?await n.put(ho,a):typeof n.set=="function"&&await n.set(ho,a)}catch(t){console.warn("[Audit] Persist to KV failed:",t)}}function Rre(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=Date.now().toString(36),e=Math.random().toString(36).substring(2,9);return`${r}-${e}`}function Nre(r){let e=r||(typeof process<"u"?process.env:{});return e?.ENVIRONMENT==="development"||e?.NODE_ENV==="development"}function qre(r=30){let e=new Date;e.setDate(e.getDate()-r);let t=e.toISOString();ln=ln.filter(i=>i.timestamp>=t)}function Ore(){let r=ln.length,e=ln.filter(o=>o.status==="success").length,t=ln.filter(o=>o.status==="failure").length,i=new Set(ln.map(o=>o.username)).size,n=new Map;ln.forEach(o=>{let a=n.get(o.action)||0;n.set(o.action,a+1)});let s=Array.from(n.entries()).map(([o,a])=>({action:o,count:a})).sort((o,a)=>a.count-o.count).slice(0,10);return{total:r,success:e,failure:t,uniqueUsers:i,recentActions:s}}var ln,ho,kA=j(()=>{"use strict";ln=[],ho="openlist_audit_logs"});var VI={};xn(VI,{adminAuthMiddleware:()=>_i,auditMiddleware:()=>zre,csrfProtection:()=>Gre,generateCSRFToken:()=>l2,getJwtSecret:()=>kr,getUserFromContext:()=>Me,isTokenRevoked:()=>YI,matchCronSecret:()=>c2,resetJwtSecretCache:()=>Mre,revokeToken:()=>a2});function Mre(){go=null}function rN(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function Lre(r){try{let{readPersistedSecret:e}=await Promise.resolve().then(()=>(Ve(),Gr));return await e(r,tN)}catch(e){return console.warn("[JWT] Failed to read secret from KV:",e),null}}async function Hre(r,e){try{let{writePersistedSecret:t}=await Promise.resolve().then(()=>(Ve(),Gr));return await t(r,tN,e)}catch(t){return console.warn("[JWT] Failed to persist secret to KV:",t),!1}}async function kr(r){let e=r?.env||(typeof process<"u"?process.env:{})||{},t=e.JWT_SECRET;if(t&&t.length>=16)return t;if(go&&go.length>=32)return go;let i=await Lre(e);if(i&&i.length>=32)return go=i,i;let n=e.NODE_ENV==="production"||e.ENVIRONMENT==="production"||e.CF_PAGES==="1"||e.WORKERS_ENV==="production";if(!go){go=rN();let s=await Hre(e,go);n?console.error("[JWT] \u26A0\uFE0F \u{1F534} \u751F\u4EA7\u73AF\u5883\u5B89\u5168\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF01"+(s?` +`}return t+="</d:multistatus>",t}var YO=J(()=>{"use strict"});function Le(r,e="Internal server error"){if(!r)return e;let t=typeof r=="string"?r:r?.message||String(r);if(!t)return e;let i=String(t);return i.length>200||/[A-Za-z]:[\\/][^\\/\s]|[\\/][A-Za-z0-9_.-]+[\\/][A-Za-z0-9_.-]/.test(i)&&/\.(ts|js|mjs|cjs|json|toml|yml|yaml)/i.test(i)||/at .*\(|at [A-Za-z0-9_.-]+:[0-9]+:[0-9]+/.test(i)?e:i}var ql,l2e,gc=J(()=>{"use strict";ql=class extends Error{constructor(t,i,n){super(i);this.code=t;this.message=i;this.originalError=n;this.name="OpenListError"}code;message;originalError},l2e={PathNotFound:new ql(1004,"Path not found"),NotReady:new ql(1003,"Storage not ready"),InvalidConfig:new ql(1001,"Invalid configuration"),Unauthorized:new ql(401,"Unauthorized access"),Forbidden:new ql(403,"Permission denied")}});var WO=J(()=>{"use strict"});var XO=J(()=>{"use strict"});async function Vu(r){if(await nv(r))return!0;let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let{verify:i}=await Promise.resolve().then(()=>(Ka(),Qx)),{getJwtSecret:n}=await Promise.resolve().then(()=>(zi(),Fx)),s=await n(r),a=await i(t,s,"HS256");if(a&&a.role===2){let c=((await ne(r.env)).users||[]).find(l=>l.id===a.id||l.username===a.username);return!!(c&&!c.disabled)}}catch{}return!1}async function nv(r){let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e,n=(await ne(r.env)).settings.find(c=>c.key==="token");if(!n||!n.value)return!1;let s=new TextEncoder().encode(t),a=new TextEncoder().encode(String(n.value));if(s.length!==a.length)return!1;let o=0;for(let c=0;c<s.length;c++)o|=s[c]^a[c];return o===0}var $A=J(()=>{"use strict";nt();YO();Pd();gc();WO();el();ti();XO()});var VA={};An(VA,{cleanupExpiredLogs:()=>_ae,getAuditStats:()=>Qae,loadAuditLogsFromKV:()=>vae,logAudit:()=>Bae,queryAuditLogs:()=>bae});async function Bae(r,e){let t={id:Sae(),timestamp:new Date().toISOString(),...r};kn.push(t),kn.length>1e3&&(kn=kn.slice(-1e3)),e&&kae(t,e).catch(i=>{console.warn("[Audit] Failed to persist log to KV:",i)}),Dae(e)&&console.log(`[AUDIT] ${t.username} ${t.method} ${t.resource} - ${t.status} (${t.status_code})`)}function bae(r){let e=[...kn];r?.username&&(e=e.filter(i=>i.username===r.username)),r?.action&&(e=e.filter(i=>i.action.includes(r.action))),r?.method&&(e=e.filter(i=>i.method.toUpperCase()===r.method.toUpperCase())),r?.status&&(e=e.filter(i=>i.status===r.status)),r?.startDate&&(e=e.filter(i=>i.timestamp>=r.startDate)),r?.endDate&&(e=e.filter(i=>i.timestamp<=r.endDate));let t=r?.limit||100;return e.slice(-t).reverse()}async function vae(r){try{let{getKvBinding:e}=await Promise.resolve().then(()=>(nt(),ii)),t=await e(r);if(t.mode==="none"||!t.binding)return[];let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(Ga);else try{s=await i.get(Ga,"text")}catch{s=await i.get(Ga)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return[];let a=JSON.parse(String(s));return Array.isArray(a)?a:[]}catch(e){return console.warn("[Audit] Failed to load logs from KV:",e),[]}}async function kae(r,e){try{let{getKvBinding:t}=await Promise.resolve().then(()=>(nt(),ii)),i=await t(e);if(i.mode==="none"||!i.binding)return;let{binding:n,mode:s}=i,a=[];try{let c=null;s==="blob"?c=await n.get(Ga):c=await n.get(Ga,"text"),c&&typeof c.text=="function"&&(c=await c.text()),c&&(a=JSON.parse(String(c)))}catch{}Array.isArray(a)||(a=[]),a.push(r),a.length>1e4&&(a=a.slice(-1e4));let o=JSON.stringify(a);s==="blob"?typeof n.set=="function"?await n.set(Ga,o):typeof n.put=="function"&&await n.put(Ga,o):typeof n.put=="function"?await n.put(Ga,o):typeof n.set=="function"&&await n.set(Ga,o)}catch(t){console.warn("[Audit] Persist to KV failed:",t)}}function Sae(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=Date.now().toString(36),e=Math.random().toString(36).substring(2,9);return`${r}-${e}`}function Dae(r){let e=r||(typeof process<"u"?process.env:{});return e?.ENVIRONMENT==="development"||e?.NODE_ENV==="development"}function _ae(r=30){let e=new Date;e.setDate(e.getDate()-r);let t=e.toISOString();kn=kn.filter(i=>i.timestamp>=t)}function Qae(){let r=kn.length,e=kn.filter(a=>a.status==="success").length,t=kn.filter(a=>a.status==="failure").length,i=new Set(kn.map(a=>a.username)).size,n=new Map;kn.forEach(a=>{let o=n.get(a.action)||0;n.set(a.action,o+1)});let s=Array.from(n.entries()).map(([a,o])=>({action:a,count:o})).sort((a,o)=>o.count-a.count).slice(0,10);return{total:r,success:e,failure:t,uniqueUsers:i,recentActions:s}}var kn,Ga,YA=J(()=>{"use strict";kn=[],Ga="openlist_audit_logs"});var Fx={};An(Fx,{adminAuthMiddleware:()=>Ji,auditMiddleware:()=>Nae,csrfProtection:()=>Rae,generateCSRFToken:()=>hv,getJwtSecret:()=>qr,getUserFromContext:()=>Je,isTokenRevoked:()=>Px,matchCronSecret:()=>fv,resetJwtSecretCache:()=>Fae,revokeToken:()=>uv});function sv(r,e){r&&typeof r=="object"&&lv.set(r,e),cv=e}function av(r){return r&&typeof r=="object"?lv.get(r)??null:cv}function Fae(){cv=null,lv=new WeakMap}function t7(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function Pae(r){try{let{readPersistedSecret:e}=await Promise.resolve().then(()=>(nt(),ii));return await e(r,e7)}catch(e){return console.warn("[JWT] Failed to read secret from KV:",e),null}}async function Tae(r,e){try{let{writePersistedSecret:t}=await Promise.resolve().then(()=>(nt(),ii));return await t(r,e7,e)}catch(t){return console.warn("[JWT] Failed to persist secret to KV:",t),!1}}async function qr(r){let e=r?.env||(typeof process<"u"?process.env:{})||{},t=o=>typeof o=="string"&&o.trim().length>0?o:null,i=t(e.JWT_SECRET);if(i)return i;let n=av(e);if(t(n))return n;try{let o=t(await oa(e,ko));if(o)return sv(e,o),o}catch{}let s=t(await Pae(e));if(s)return sv(e,s),s;let a=e.NODE_ENV==="production"||e.ENVIRONMENT==="production"||e.CF_PAGES==="1"||e.WORKERS_ENV==="production";if(!av(e)){let o=t7();sv(e,o);let c=await Tae(e,o);a?console.error("[JWT] \u26A0\uFE0F \u{1F534} \u751F\u4EA7\u73AF\u5883\u5B89\u5168\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF01"+(c?` \u2705 \u5DF2\u81EA\u52A8\u751F\u6210\u5BC6\u94A5\u5E76\u6301\u4E45\u5316\u5230 KV\u3002\u6B64\u5BC6\u94A5\u5C06\u6301\u7EED\u4F7F\u7528\uFF0C\u4F46\u5F3A\u70C8\u5EFA\u8BAE\u624B\u52A8\u914D\u7F6E JWT_SECRET \u73AF\u5883\u53D8\u91CF\u4EE5\u63D0\u9AD8\u5B89\u5168\u6027\u3002`:` \u274C \u65E0\u6CD5\u6301\u4E45\u5316\u5BC6\u94A5\u5230 KV\uFF01\u5BC6\u94A5\u4EC5\u5B58\u4E8E\u5185\u5B58\uFF0C\u91CD\u542F\u540E\u6240\u6709 token \u5C06\u5931\u6548\u3002\u8BF7\u7ACB\u5373\u914D\u7F6E JWT_SECRET \u73AF\u5883\u53D8\u91CF\uFF01`)+` -\u{1F512} \u5B89\u5168\u5EFA\u8BAE\uFF1A\u751F\u6210\u5BC6\u94A5\u547D\u4EE4: openssl rand -hex 32`):console.warn("[JWT] \u26A0\uFE0F \u5F00\u53D1\u73AF\u5883\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF0C\u4F7F\u7528\u4E34\u65F6\u968F\u673A\u5BC6\u94A5\u3002"+(s?"\u5BC6\u94A5\u5DF2\u6301\u4E45\u5316\u5230 KV\uFF0C\u91CD\u542F\u540E\u4FDD\u6301\u6709\u6548\u3002":"\u5BC6\u94A5\u4EC5\u5B58\u4E8E\u5185\u5B58\uFF0C\u91CD\u542F\u540E\u6240\u6709 token \u5C06\u5931\u6548\u3002")+` -\u751F\u4EA7\u73AF\u5883\u90E8\u7F72\u524D\uFF0C\u8BF7\u52A1\u5FC5\u914D\u7F6E >=32 \u5B57\u7B26\u7684 JWT_SECRET \u73AF\u5883\u53D8\u91CF\u3002`)}return go}async function Kre(r){if(!eN){eN=!0;try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Gr)),t=await e(r);if(t.mode==="none"||!t.binding)return;let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(ps);else try{s=await i.get(ps,"text")}catch{s=await i.get(ps)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return;let o=JSON.parse(String(s)),a=Math.floor(Date.now()/1e3);for(let c of o)c&&c.jti&&c.exp>a&&o2.add(c.jti)}catch{}}}async function a2(r,e,t){if(r){o2.add(r);try{let{getKvBinding:i}=await Promise.resolve().then(()=>(Ve(),Gr)),n=await i(t);if(n.mode==="none"||!n.binding)return;let{binding:s,mode:o}=n,a=[];if(o==="blob"){let d=await s.get(ps);d&&(a=typeof d=="string"?JSON.parse(d):d)}else try{let d=await s.get(ps,"text");d&&(a=JSON.parse(String(d)))}catch{let d=await s.get(ps);d&&(a=typeof d=="string"?JSON.parse(d):d)}let c=Math.floor(Date.now()/1e3);a=a.filter(d=>d&&d.exp>c),a.push({jti:r,exp:e});let l=JSON.stringify(a);o==="blob"?typeof s.set=="function"?await s.set(ps,l):typeof s.put=="function"&&await s.put(ps,l):typeof s.put=="function"?await s.put(ps,l):typeof s.set=="function"&&await s.set(ps,l)}catch(i){console.warn("[JWT] Failed to persist revoked token to KV:",i)}}}async function YI(r,e){return r?(await Kre(e),o2.has(r)):!1}async function _i(r,e){if(!await Kd(r))return r.json({code:401,message:"Unauthorized admin privilege required",data:null},401);await e()}function s2(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function c2(r){let t=(r?.env||{}).JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");if(!t||typeof t!="string")return!1;let i=r.req.header("x-cron-secret");if(i&&s2(i,t))return!0;let n=r.req.query("cron_secret");if(n&&s2(n,t))return!0;try{let o=(await r.req.json())?.cron_secret;if(typeof o=="string"&&o.length>0&&s2(o,t))return!0}catch{}return!1}async function l2(r){let{sign:e}=await Promise.resolve().then(()=>(Ao(),$I)),t=await kr(r);return await e({type:"csrf",jti:crypto.randomUUID?crypto.randomUUID():rN().slice(0,16),exp:Math.floor(Date.now()/1e3)+3600},t)}async function Gre(r,e){let t=r.req.method.toUpperCase();if(["GET","HEAD","OPTIONS"].includes(t))return e();let i=r.req.header("x-csrf-token")||r.req.header("X-CSRF-Token");if(!i)return r.json({code:403,message:"CSRF token missing. Please include X-CSRF-Token header.",data:null},403);try{let{verify:n}=await Promise.resolve().then(()=>(Ao(),$I)),s=await kr(r);if((await n(i,s,"HS256")).type!=="csrf")throw new Error("Invalid token type");await e()}catch{return r.json({code:403,message:"Invalid or expired CSRF token",data:null},403)}}async function zre(r,e){let t=Date.now(),i=r.req.method.toUpperCase(),n=r.req.path,s=["POST","PUT","DELETE","PATCH"].includes(i);if(await e(),s)try{let{logAudit:o}=await Promise.resolve().then(()=>(kA(),vA)),a=await Me(r).catch(()=>null),c=Date.now()-t,l=r.res.status||200,d=l>=200&&l<400?"success":"failure",u=r.req.header("cf-connecting-ip")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown";await o({user_id:a?.id,username:a?.username||"anonymous",ip:u,action:`${i} ${n}`,resource:n,method:i,status:d,status_code:l,details:JSON.stringify({duration_ms:c}),user_agent:r.req.header("user-agent"),duration_ms:c},r.env)}catch(o){console.warn("[Audit] Failed to log:",o)}}async function Me(r){if(await n2(r))return{role:2,permission:0,disabled:!1,username:"api-token",base_path:"/"};let e=r.req.header("Authorization");if(!e){let i=r.req.query("token")||r.req.query("access_token");i&&(e=`Bearer ${i}`)}if(!e){try{let n=((await ne(r.env)).users||[]).find(s=>s.username==="guest");if(n&&!n.disabled)return{id:n.id,role:n.role??1,permission:n.permission??0,disabled:!!n.disabled,username:n.username,base_path:n.base_path||"/",sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp_secret:n.otp_secret}}catch{}return null}let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256");if(await YI(n?.jti,r.env))return null;let o=((await ne(r.env)).users||[]).find(a=>a.id===n.id||a.username===n.username);return!o||o.disabled?null:{id:o.id,role:o.role,permission:o.permission??0,disabled:!!o.disabled,username:o.username,base_path:o.base_path||"/",sso_id:o.sso_id||"",allow_ldap:!!o.allow_ldap,otp_secret:o.otp_secret}}catch{return null}}var go,tN,ps,o2,eN,Qi=j(()=>{"use strict";Ao();bA();Ve();go=null,tN="openlist_jwt_secret";ps="openlist_revoked_tokens",o2=new Set,eN=!1});var RN=oe(cw=>{"use strict";Object.defineProperty(cw,"__esModule",{value:!0});function Kie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var UN=Kie(wt("crypto")),Gie=(r,e,t)=>UN.createHmac(r,Buffer.from(e,"hex")).update(Buffer.from(t,"hex")).digest().toString("hex"),zie=(r,e)=>UN.randomBytes(r).toString(e);cw.createDigest=Gie;cw.createRandomBytes=zie});var qN=oe(q2=>{"use strict";var Jie="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",NN=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];function jie(r){var e=Math.floor(r.length/5);return r.length%5===0?e:e+1}q2.encode=function(r){Buffer.isBuffer(r)||(r=new Buffer(r));for(var e=0,t=0,i=0,n=0,s=new Buffer(jie(r)*8);e<r.length;){var o=r[e];i>3?(n=o&255>>i,i=(i+5)%8,n=n<<i|(e+1<r.length?r[e+1]:0)>>8-i,e++):(n=o>>8-(i+5)&31,i=(i+5)%8,i===0&&e++),s[t]=Jie.charCodeAt(n),t++}for(e=t;e<s.length;e++)s[e]=61;return s};q2.decode=function(r){var e=0,t=0,i,n=0;Buffer.isBuffer(r)||(r=new Buffer(r));for(var s=new Buffer(Math.ceil(r.length*5/8)),o=0;o<r.length&&r[o]!==61;o++){var a=r[o]-48;if(a<NN.length)t=NN[a],e<=3?(e=(e+5)%8,e===0?(i|=t,s[n]=i,n++,i=0):i|=255&t<<8-e):(e=(e+5)%8,i|=255&t>>>e,s[n]=i,n++,i=255&t<<8-e);else throw new Error("Invalid input - it is not base32 encoded string")}return s.slice(0,n)}});var MN=oe(O2=>{var ON=qN();O2.encode=ON.encode;O2.decode=ON.decode});var HN=oe(lw=>{"use strict";Object.defineProperty(lw,"__esModule",{value:!0});function $ie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var LN=$ie(MN()),Vie=(r,e)=>LN.decode(r).toString(e),Yie=(r,e)=>LN.encode(Buffer.from(r,e).toString("ascii")).toString().replace(/=/g,"");lw.keyDecoder=Vie;lw.keyEncoder=Yie});var d9=oe(De=>{"use strict";Object.defineProperty(De,"__esModule",{value:!0});function gw(r){return Object.keys(r).map(e=>r[e])}(function(r){r.SHA1="sha1",r.SHA256="sha256",r.SHA512="sha512"})(De.HashAlgorithms||(De.HashAlgorithms={}));var uw=gw(De.HashAlgorithms);(function(r){r.ASCII="ascii",r.BASE64="base64",r.HEX="hex",r.LATIN1="latin1",r.UTF8="utf8"})(De.KeyEncodings||(De.KeyEncodings={}));var M2=gw(De.KeyEncodings);(function(r){r.HOTP="hotp",r.TOTP="totp"})(De.Strategy||(De.Strategy={}));var L2=gw(De.Strategy),pw=()=>{throw new Error("Please provide an options.createDigest implementation.")};function G2(r){return/^(\d+)$/.test(r)}function z2(r,e,t){return r.length>=e?r:`${Array(e+1).join(t)}${r}`.slice(-1*e)}function J2(r){let e=`otpauth://${r.type}/{labelPrefix}:{accountName}?secret={secret}{query}`,t=[];if(L2.indexOf(r.type)<0)throw new Error(`Expecting options.type to be one of ${L2.join(", ")}. Received ${r.type}.`);if(r.type==="hotp"){if(r.counter==null||typeof r.counter!="number")throw new Error('Expecting options.counter to be a number when options.type is "hotp".');t.push(`&counter=${r.counter}`)}return r.type==="totp"&&r.step&&t.push(`&period=${r.step}`),r.digits&&t.push(`&digits=${r.digits}`),r.algorithm&&t.push(`&algorithm=${r.algorithm.toUpperCase()}`),r.issuer&&t.push(`&issuer=${encodeURIComponent(r.issuer)}`),e.replace("{labelPrefix}",encodeURIComponent(r.issuer||r.accountName)).replace("{accountName}",encodeURIComponent(r.accountName)).replace("{secret}",r.secret).replace("{query}",t.join(""))}var fw=class r{constructor(e={}){this._defaultOptions=Object.freeze({...e}),this._options=Object.freeze({})}create(e={}){return new r(e)}clone(e={}){let t=this.create({...this._defaultOptions,...e});return t.options=this._options,t}get options(){return Object.freeze({...this._defaultOptions,...this._options})}set options(e){this._options=Object.freeze({...this._options,...e})}allOptions(){return this.options}resetOptions(){this._options=Object.freeze({})}};function j2(r){if(typeof r.createDigest!="function")throw new Error("Expecting options.createDigest to be a function.");if(typeof r.createHmacKey!="function")throw new Error("Expecting options.createHmacKey to be a function.");if(typeof r.digits!="number")throw new Error("Expecting options.digits to be a number.");if(!r.algorithm||uw.indexOf(r.algorithm)<0)throw new Error(`Expecting options.algorithm to be one of ${uw.join(", ")}. Received ${r.algorithm}.`);if(!r.encoding||M2.indexOf(r.encoding)<0)throw new Error(`Expecting options.encoding to be one of ${M2.join(", ")}. Received ${r.encoding}.`)}var GN=(r,e,t)=>Buffer.from(e,t).toString("hex");function zN(){return{algorithm:De.HashAlgorithms.SHA1,createHmacKey:GN,createDigest:pw,digits:6,encoding:De.KeyEncodings.ASCII}}function JN(r){let e={...zN(),...r};return j2(e),Object.freeze(e)}function jN(r){let e=r.toString(16);return z2(e,16,"0")}function $N(r,e){let t=Buffer.from(r,"hex"),i=t[t.length-1]&15,s=((t[i]&127)<<24|(t[i+1]&255)<<16|(t[i+2]&255)<<8|t[i+3]&255)%Math.pow(10,e);return z2(String(s),e,"0")}function Wie(r,e,t){let i=jN(e),n=t.createHmacKey(t.algorithm,r,t.encoding);return t.createDigest(t.algorithm,n,i)}function mw(r,e,t){let i=t.digest||Wie(r,e,t);return $N(i,t.digits)}function VN(r,e,t,i){if(!G2(r))return!1;let n=mw(e,t,i);return r===n}function YN(r,e,t,i,n){return J2({algorithm:n.algorithm,digits:n.digits,type:De.Strategy.HOTP,accountName:r,counter:i,issuer:e,secret:t})}var Aw=class r extends fw{create(e={}){return new r(e)}allOptions(){return JN(this.options)}generate(e,t){return mw(e,t,this.allOptions())}check(e,t,i){return VN(e,t,i,this.allOptions())}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret,e.counter)}keyuri(e,t,i,n){return YN(e,t,i,n,this.allOptions())}};function WN(r){if(typeof r=="number")return[Math.abs(r),Math.abs(r)];if(Array.isArray(r)){let[e,t]=r;if(typeof e=="number"&&typeof t=="number")return[Math.abs(e),Math.abs(t)]}throw new Error("Expecting options.window to be an number or [number, number].")}function $2(r){if(j2(r),WN(r.window),typeof r.epoch!="number")throw new Error("Expecting options.epoch to be a number.");if(typeof r.step!="number")throw new Error("Expecting options.step to be a number.")}var dw=(r,e,t)=>{let i=r.length,n=Buffer.from(r,e).toString("hex");if(i<t){let s=new Array(t-i+1).join(n);return Buffer.from(s,"hex").slice(0,t).toString("hex")}return n},V2=(r,e,t)=>{switch(r){case De.HashAlgorithms.SHA1:return dw(e,t,20);case De.HashAlgorithms.SHA256:return dw(e,t,32);case De.HashAlgorithms.SHA512:return dw(e,t,64);default:throw new Error(`Expecting algorithm to be one of ${uw.join(", ")}. Received ${r}.`)}};function XN(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:pw,createHmacKey:V2,digits:6,encoding:De.KeyEncodings.ASCII,epoch:Date.now(),step:30,window:0}}function ZN(r){let e={...XN(),...r};return $2(e),Object.freeze(e)}function e9(r,e){return Math.floor(r/e/1e3)}function yw(r,e){let t=e9(e.epoch,e.step);return mw(r,t,e)}function KN(r,e,t,i){let n=[];if(i===0)return n;for(let s=1;s<=i;s++){let o=e*s*t;n.push(r+o)}return n}function t9(r,e,t){let i=WN(t),n=e*1e3;return{current:r,past:KN(r,-1,n,i[0]),future:KN(r,1,n,i[1])}}function Y2(r,e,t){if(!G2(r))return!1;let i=yw(e,t);return r===i}function H2(r,e,t,i){let n=null;return r.some((s,o)=>Y2(e,t,{...i,epoch:s})?(n=o+1,!0):!1),n}function W2(r,e,t){if(Y2(r,e,t))return 0;let i=t9(t.epoch,t.step,t.window),n=H2(i.past,r,e,t);return n!==null?n*-1:H2(i.future,r,e,t)}function X2(r,e){return Math.floor(r/1e3)%e}function r9(r,e){return e-X2(r,e)}function i9(r,e,t,i){return J2({algorithm:i.algorithm,digits:i.digits,step:i.step,type:De.Strategy.TOTP,accountName:r,issuer:e,secret:t})}var hw=class r extends Aw{create(e={}){return new r(e)}allOptions(){return ZN(this.options)}generate(e){return yw(e,this.allOptions())}checkDelta(e,t){return W2(e,t,this.allOptions())}check(e,t){return typeof this.checkDelta(e,t)=="number"}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret)}timeRemaining(){let e=this.allOptions();return r9(e.epoch,e.step)}timeUsed(){let e=this.allOptions();return X2(e.epoch,e.step)}keyuri(e,t,i){return i9(e,t,i,this.allOptions())}};function n9(r){if($2(r),typeof r.keyDecoder!="function")throw new Error("Expecting options.keyDecoder to be a function.");if(r.keyEncoder&&typeof r.keyEncoder!="function")throw new Error("Expecting options.keyEncoder to be a function.")}function s9(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:pw,createHmacKey:V2,digits:6,encoding:De.KeyEncodings.HEX,epoch:Date.now(),step:30,window:0}}function o9(r){let e={...s9(),...r};return n9(e),Object.freeze(e)}function Z2(r,e){return e.keyEncoder(r,e.encoding)}function Iw(r,e){return e.keyDecoder(r,e.encoding)}function a9(r,e){let t=e.createRandomBytes(r,e.encoding);return Z2(t,e)}function c9(r,e){return yw(Iw(r,e),e)}function l9(r,e,t){return W2(r,Iw(e,t),t)}var K2=class r extends hw{create(e={}){return new r(e)}allOptions(){return o9(this.options)}generate(e){return c9(e,this.allOptions())}checkDelta(e,t){return l9(e,t,this.allOptions())}encode(e){return Z2(e,this.allOptions())}decode(e){return Iw(e,this.allOptions())}generateSecret(e=10){return a9(e,this.allOptions())}};De.Authenticator=K2;De.HASH_ALGORITHMS=uw;De.HOTP=Aw;De.KEY_ENCODINGS=M2;De.OTP=fw;De.STRATEGY=L2;De.TOTP=hw;De.authenticatorCheckWithWindow=l9;De.authenticatorDecoder=Iw;De.authenticatorDefaultOptions=s9;De.authenticatorEncoder=Z2;De.authenticatorGenerateSecret=a9;De.authenticatorOptionValidator=n9;De.authenticatorOptions=o9;De.authenticatorToken=c9;De.createDigestPlaceholder=pw;De.hotpCheck=VN;De.hotpCounter=jN;De.hotpCreateHmacKey=GN;De.hotpDefaultOptions=zN;De.hotpDigestToToken=$N;De.hotpKeyuri=YN;De.hotpOptions=JN;De.hotpOptionsValidator=j2;De.hotpToken=mw;De.isTokenValid=G2;De.keyuri=J2;De.objectValues=gw;De.padStart=z2;De.totpCheck=Y2;De.totpCheckByEpoch=H2;De.totpCheckWithWindow=W2;De.totpCounter=e9;De.totpCreateHmacKey=V2;De.totpDefaultOptions=XN;De.totpEpochAvailable=t9;De.totpKeyuri=i9;De.totpOptions=ZN;De.totpOptionsValidator=$2;De.totpPadSecret=dw;De.totpTimeRemaining=r9;De.totpTimeUsed=X2;De.totpToken=yw});var f9=oe(qA=>{"use strict";Object.defineProperty(qA,"__esModule",{value:!0});var ww=RN(),u9=HN(),eb=d9(),Xie=new eb.HOTP({createDigest:ww.createDigest}),Zie=new eb.TOTP({createDigest:ww.createDigest}),ene=new eb.Authenticator({createDigest:ww.createDigest,createRandomBytes:ww.createRandomBytes,keyDecoder:u9.keyDecoder,keyEncoder:u9.keyEncoder});qA.authenticator=ene;qA.hotp=Xie;qA.totp=Zie});var h9=oe(tb=>{"use strict";Object.defineProperty(tb,"__esModule",{value:!0});var A9=f9();Object.keys(A9).forEach(function(r){r!=="default"&&Object.defineProperty(tb,r,{enumerable:!0,get:function(){return A9[r]}})})});var rb=oe((mEe,g9)=>{g9.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ua=oe(Zc=>{var ib,tne=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Zc.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Zc.getSymbolTotalCodewords=function(e){return tne[e]};Zc.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};Zc.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ib=e};Zc.isKanjiModeEnabled=function(){return typeof ib<"u"};Zc.toSJIS=function(e){return ib(e)}});var xw=oe(hn=>{hn.L={bit:1};hn.M={bit:0};hn.Q={bit:3};hn.H={bit:2};function rne(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return hn.L;case"m":case"medium":return hn.M;case"q":case"quartile":return hn.Q;case"h":case"high":return hn.H;default:throw new Error("Unknown EC Level: "+r)}}hn.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};hn.from=function(e,t){if(hn.isValid(e))return e;try{return rne(e)}catch{return t}}});var y9=oe((wEe,m9)=>{function p9(){this.buffer=[],this.length=0}p9.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};m9.exports=p9});var w9=oe((xEe,I9)=>{function OA(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}OA.prototype.set=function(r,e,t,i){let n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};OA.prototype.get=function(r,e){return this.data[r*this.size+e]};OA.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};OA.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};I9.exports=OA});var x9=oe(Cw=>{var ine=Ua().getSymbolSize;Cw.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,i=ine(e),n=i===145?26:Math.ceil((i-13)/(2*t-2))*2,s=[i-7];for(let o=1;o<t-1;o++)s[o]=s[o-1]-n;return s.push(6),s.reverse()};Cw.getPositions=function(e){let t=[],i=Cw.getRowColCoords(e),n=i.length;for(let s=0;s<n;s++)for(let o=0;o<n;o++)s===0&&o===0||s===0&&o===n-1||s===n-1&&o===0||t.push([i[s],i[o]]);return t}});var B9=oe(E9=>{var nne=Ua().getSymbolSize,C9=7;E9.getPositions=function(e){let t=nne(e);return[[0,0],[t-C9,0],[0,t-C9]]}});var b9=oe(Bt=>{Bt.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var el={N1:3,N2:3,N3:40,N4:10};Bt.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};Bt.from=function(e){return Bt.isValid(e)?parseInt(e,10):void 0};Bt.getPenaltyN1=function(e){let t=e.size,i=0,n=0,s=0,o=null,a=null;for(let c=0;c<t;c++){n=s=0,o=a=null;for(let l=0;l<t;l++){let d=e.get(c,l);d===o?n++:(n>=5&&(i+=el.N1+(n-5)),o=d,n=1),d=e.get(l,c),d===a?s++:(s>=5&&(i+=el.N1+(s-5)),a=d,s=1)}n>=5&&(i+=el.N1+(n-5)),s>=5&&(i+=el.N1+(s-5))}return i};Bt.getPenaltyN2=function(e){let t=e.size,i=0;for(let n=0;n<t-1;n++)for(let s=0;s<t-1;s++){let o=e.get(n,s)+e.get(n,s+1)+e.get(n+1,s)+e.get(n+1,s+1);(o===4||o===0)&&i++}return i*el.N2};Bt.getPenaltyN3=function(e){let t=e.size,i=0,n=0,s=0;for(let o=0;o<t;o++){n=s=0;for(let a=0;a<t;a++)n=n<<1&2047|e.get(o,a),a>=10&&(n===1488||n===93)&&i++,s=s<<1&2047|e.get(a,o),a>=10&&(s===1488||s===93)&&i++}return i*el.N3};Bt.getPenaltyN4=function(e){let t=0,i=e.data.length;for(let s=0;s<i;s++)t+=e.data[s];return Math.abs(Math.ceil(t*100/i/5)-10)*el.N4};function sne(r,e,t){switch(r){case Bt.Patterns.PATTERN000:return(e+t)%2===0;case Bt.Patterns.PATTERN001:return e%2===0;case Bt.Patterns.PATTERN010:return t%3===0;case Bt.Patterns.PATTERN011:return(e+t)%3===0;case Bt.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case Bt.Patterns.PATTERN101:return e*t%2+e*t%3===0;case Bt.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case Bt.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}Bt.applyMask=function(e,t){let i=t.size;for(let n=0;n<i;n++)for(let s=0;s<i;s++)t.isReserved(s,n)||t.xor(s,n,sne(e,s,n))};Bt.getBestMask=function(e,t){let i=Object.keys(Bt.Patterns).length,n=0,s=1/0;for(let o=0;o<i;o++){t(o),Bt.applyMask(o,e);let a=Bt.getPenaltyN1(e)+Bt.getPenaltyN2(e)+Bt.getPenaltyN3(e)+Bt.getPenaltyN4(e);Bt.applyMask(o,e),a<s&&(s=a,n=o)}return n}});var sb=oe(nb=>{var Ra=xw(),Ew=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Bw=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];nb.getBlocksCount=function(e,t){switch(t){case Ra.L:return Ew[(e-1)*4+0];case Ra.M:return Ew[(e-1)*4+1];case Ra.Q:return Ew[(e-1)*4+2];case Ra.H:return Ew[(e-1)*4+3];default:return}};nb.getTotalCodewordsCount=function(e,t){switch(t){case Ra.L:return Bw[(e-1)*4+0];case Ra.M:return Bw[(e-1)*4+1];case Ra.Q:return Bw[(e-1)*4+2];case Ra.H:return Bw[(e-1)*4+3];default:return}}});var v9=oe(vw=>{var MA=new Uint8Array(512),bw=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)MA[t]=e,bw[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)MA[t]=MA[t-255]})();vw.log=function(e){if(e<1)throw new Error("log("+e+")");return bw[e]};vw.exp=function(e){return MA[e]};vw.mul=function(e,t){return e===0||t===0?0:MA[bw[e]+bw[t]]}});var k9=oe(LA=>{var ob=v9();LA.mul=function(e,t){let i=new Uint8Array(e.length+t.length-1);for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)i[n+s]^=ob.mul(e[n],t[s]);return i};LA.mod=function(e,t){let i=new Uint8Array(e);for(;i.length-t.length>=0;){let n=i[0];for(let o=0;o<t.length;o++)i[o]^=ob.mul(t[o],n);let s=0;for(;s<i.length&&i[s]===0;)s++;i=i.slice(s)}return i};LA.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let i=0;i<e;i++)t=LA.mul(t,new Uint8Array([1,ob.exp(i)]));return t}});var Q9=oe((SEe,D9)=>{var S9=k9();function ab(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}ab.prototype.initialize=function(e){this.degree=e,this.genPoly=S9.generateECPolynomial(this.degree)};ab.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let i=S9.mod(t,this.genPoly),n=this.degree-i.length;if(n>0){let s=new Uint8Array(this.degree);return s.set(i,n),s}return i};D9.exports=ab});var cb=oe(_9=>{_9.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var lb=oe(yo=>{var F9="[0-9]+",one="[A-Z $%*+\\-./:]+",HA="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";HA=HA.replace(/u/g,"\\u");var ane="(?:(?![A-Z0-9 $%*+\\-./:]|"+HA+`)(?:.|[\r -]))+`;yo.KANJI=new RegExp(HA,"g");yo.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");yo.BYTE=new RegExp(ane,"g");yo.NUMERIC=new RegExp(F9,"g");yo.ALPHANUMERIC=new RegExp(one,"g");var cne=new RegExp("^"+HA+"$"),lne=new RegExp("^"+F9+"$"),dne=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");yo.testKanji=function(e){return cne.test(e)};yo.testNumeric=function(e){return lne.test(e)};yo.testAlphanumeric=function(e){return dne.test(e)}});var Na=oe(lr=>{var une=cb(),db=lb();lr.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};lr.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};lr.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};lr.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};lr.MIXED={bit:-1};lr.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!une.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};lr.getBestModeForData=function(e){return db.testNumeric(e)?lr.NUMERIC:db.testAlphanumeric(e)?lr.ALPHANUMERIC:db.testKanji(e)?lr.KANJI:lr.BYTE};lr.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};lr.isValid=function(e){return e&&e.bit&&e.ccBits};function fne(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return lr.NUMERIC;case"alphanumeric":return lr.ALPHANUMERIC;case"kanji":return lr.KANJI;case"byte":return lr.BYTE;default:throw new Error("Unknown mode: "+r)}}lr.from=function(e,t){if(lr.isValid(e))return e;try{return fne(e)}catch{return t}}});var N9=oe(tl=>{var kw=Ua(),Ane=sb(),P9=xw(),qa=Na(),ub=cb(),U9=7973,T9=kw.getBCHDigit(U9);function hne(r,e,t){for(let i=1;i<=40;i++)if(e<=tl.getCapacity(i,t,r))return i}function R9(r,e){return qa.getCharCountIndicator(r,e)+4}function gne(r,e){let t=0;return r.forEach(function(i){let n=R9(i.mode,e);t+=n+i.getBitsLength()}),t}function pne(r,e){for(let t=1;t<=40;t++)if(gne(r,t)<=tl.getCapacity(t,e,qa.MIXED))return t}tl.from=function(e,t){return ub.isValid(e)?parseInt(e,10):t};tl.getCapacity=function(e,t,i){if(!ub.isValid(e))throw new Error("Invalid QR Code version");typeof i>"u"&&(i=qa.BYTE);let n=kw.getSymbolTotalCodewords(e),s=Ane.getTotalCodewordsCount(e,t),o=(n-s)*8;if(i===qa.MIXED)return o;let a=o-R9(i,e);switch(i){case qa.NUMERIC:return Math.floor(a/10*3);case qa.ALPHANUMERIC:return Math.floor(a/11*2);case qa.KANJI:return Math.floor(a/13);case qa.BYTE:default:return Math.floor(a/8)}};tl.getBestVersionForData=function(e,t){let i,n=P9.from(t,P9.M);if(Array.isArray(e)){if(e.length>1)return pne(e,n);if(e.length===0)return 1;i=e[0]}else i=e;return hne(i.mode,i.getLength(),n)};tl.getEncodedBits=function(e){if(!ub.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;kw.getBCHDigit(t)-T9>=0;)t^=U9<<kw.getBCHDigit(t)-T9;return e<<12|t}});var L9=oe(M9=>{var fb=Ua(),O9=1335,mne=21522,q9=fb.getBCHDigit(O9);M9.getEncodedBits=function(e,t){let i=e.bit<<3|t,n=i<<10;for(;fb.getBCHDigit(n)-q9>=0;)n^=O9<<fb.getBCHDigit(n)-q9;return(i<<10|n)^mne}});var K9=oe((TEe,H9)=>{var yne=Na();function Xd(r){this.mode=yne.NUMERIC,this.data=r.toString()}Xd.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Xd.prototype.getLength=function(){return this.data.length};Xd.prototype.getBitsLength=function(){return Xd.getBitsLength(this.data.length)};Xd.prototype.write=function(e){let t,i,n;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),n=parseInt(i,10),e.put(n,10);let s=this.data.length-t;s>0&&(i=this.data.substr(t),n=parseInt(i,10),e.put(n,s*3+1))};H9.exports=Xd});var z9=oe((UEe,G9)=>{var Ine=Na(),Ab=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Zd(r){this.mode=Ine.ALPHANUMERIC,this.data=r}Zd.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Zd.prototype.getLength=function(){return this.data.length};Zd.prototype.getBitsLength=function(){return Zd.getBitsLength(this.data.length)};Zd.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let i=Ab.indexOf(this.data[t])*45;i+=Ab.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(Ab.indexOf(this.data[t]),6)};G9.exports=Zd});var j9=oe((REe,J9)=>{var wne=Na();function eu(r){this.mode=wne.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}eu.getBitsLength=function(e){return e*8};eu.prototype.getLength=function(){return this.data.length};eu.prototype.getBitsLength=function(){return eu.getBitsLength(this.data.length)};eu.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};J9.exports=eu});var V9=oe((NEe,$9)=>{var xne=Na(),Cne=Ua();function tu(r){this.mode=xne.KANJI,this.data=r}tu.getBitsLength=function(e){return e*13};tu.prototype.getLength=function(){return this.data.length};tu.prototype.getBitsLength=function(){return tu.getBitsLength(this.data.length)};tu.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=Cne.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+` -Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};$9.exports=tu});var Y9=oe((qEe,hb)=>{"use strict";var KA={single_source_shortest_paths:function(r,e,t){var i={},n={};n[e]=0;var s=KA.PriorityQueue.make();s.push(e,0);for(var o,a,c,l,d,u,f,h,g;!s.empty();){o=s.pop(),a=o.value,l=o.cost,d=r[a]||{};for(c in d)d.hasOwnProperty(c)&&(u=d[c],f=l+u,h=n[c],g=typeof n[c]>"u",(g||h>f)&&(n[c]=f,s.push(c,f),i[c]=a))}if(typeof t<"u"&&typeof n[t]>"u"){var p=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],i=e,n;i;)t.push(i),n=r[i],i=r[i];return t.reverse(),t},find_path:function(r,e,t){var i=KA.single_source_shortest_paths(r,e,t);return KA.extract_shortest_path_from_predecessor_list(i,t)},PriorityQueue:{make:function(r){var e=KA.PriorityQueue,t={},i;r=r||{};for(i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof hb<"u"&&(hb.exports=KA)});var n7=oe(ru=>{var At=Na(),Z9=K9(),e7=z9(),t7=j9(),r7=V9(),GA=lb(),Sw=Ua(),Ene=Y9();function W9(r){return unescape(encodeURIComponent(r)).length}function zA(r,e,t){let i=[],n;for(;(n=r.exec(t))!==null;)i.push({data:n[0],index:n.index,mode:e,length:n[0].length});return i}function i7(r){let e=zA(GA.NUMERIC,At.NUMERIC,r),t=zA(GA.ALPHANUMERIC,At.ALPHANUMERIC,r),i,n;return Sw.isKanjiModeEnabled()?(i=zA(GA.BYTE,At.BYTE,r),n=zA(GA.KANJI,At.KANJI,r)):(i=zA(GA.BYTE_KANJI,At.BYTE,r),n=[]),e.concat(t,i,n).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function gb(r,e){switch(e){case At.NUMERIC:return Z9.getBitsLength(r);case At.ALPHANUMERIC:return e7.getBitsLength(r);case At.KANJI:return r7.getBitsLength(r);case At.BYTE:return t7.getBitsLength(r)}}function Bne(r){return r.reduce(function(e,t){let i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function bne(r){let e=[];for(let t=0;t<r.length;t++){let i=r[t];switch(i.mode){case At.NUMERIC:e.push([i,{data:i.data,mode:At.ALPHANUMERIC,length:i.length},{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.ALPHANUMERIC:e.push([i,{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.KANJI:e.push([i,{data:i.data,mode:At.BYTE,length:W9(i.data)}]);break;case At.BYTE:e.push([{data:i.data,mode:At.BYTE,length:W9(i.data)}])}}return e}function vne(r,e){let t={},i={start:{}},n=["start"];for(let s=0;s<r.length;s++){let o=r[s],a=[];for(let c=0;c<o.length;c++){let l=o[c],d=""+s+c;a.push(d),t[d]={node:l,lastCount:0},i[d]={};for(let u=0;u<n.length;u++){let f=n[u];t[f]&&t[f].node.mode===l.mode?(i[f][d]=gb(t[f].lastCount+l.length,l.mode)-gb(t[f].lastCount,l.mode),t[f].lastCount+=l.length):(t[f]&&(t[f].lastCount=l.length),i[f][d]=gb(l.length,l.mode)+4+At.getCharCountIndicator(l.mode,e))}}n=a}for(let s=0;s<n.length;s++)i[n[s]].end=0;return{map:i,table:t}}function X9(r,e){let t,i=At.getBestModeForData(r);if(t=At.from(e,i),t!==At.BYTE&&t.bit<i.bit)throw new Error('"'+r+'" cannot be encoded with mode '+At.toString(t)+`. - Suggested mode is: `+At.toString(i));switch(t===At.KANJI&&!Sw.isKanjiModeEnabled()&&(t=At.BYTE),t){case At.NUMERIC:return new Z9(r);case At.ALPHANUMERIC:return new e7(r);case At.KANJI:return new r7(r);case At.BYTE:return new t7(r)}}ru.fromArray=function(e){return e.reduce(function(t,i){return typeof i=="string"?t.push(X9(i,null)):i.data&&t.push(X9(i.data,i.mode)),t},[])};ru.fromString=function(e,t){let i=i7(e,Sw.isKanjiModeEnabled()),n=bne(i),s=vne(n,t),o=Ene.find_path(s.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(s.table[o[c]].node);return ru.fromArray(Bne(a))};ru.rawSplit=function(e){return ru.fromArray(i7(e,Sw.isKanjiModeEnabled()))}});var xb=oe(s7=>{var Qw=Ua(),pb=xw(),kne=y9(),Sne=w9(),Dne=x9(),Qne=B9(),Ib=b9(),wb=sb(),_ne=Q9(),Dw=N9(),Fne=L9(),Pne=Na(),mb=n7();function Tne(r,e){let t=r.size,i=Qne.getPositions(e);for(let n=0;n<i.length;n++){let s=i[n][0],o=i[n][1];for(let a=-1;a<=7;a++)if(!(s+a<=-1||t<=s+a))for(let c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(s+a,o+c,!0,!0):r.set(s+a,o+c,!1,!0))}}function Une(r){let e=r.size;for(let t=8;t<e-8;t++){let i=t%2===0;r.set(t,6,i,!0),r.set(6,t,i,!0)}}function Rne(r,e){let t=Dne.getPositions(e);for(let i=0;i<t.length;i++){let n=t[i][0],s=t[i][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(n+o,s+a,!0,!0):r.set(n+o,s+a,!1,!0)}}function Nne(r,e){let t=r.size,i=Dw.getEncodedBits(e),n,s,o;for(let a=0;a<18;a++)n=Math.floor(a/3),s=a%3+t-8-3,o=(i>>a&1)===1,r.set(n,s,o,!0),r.set(s,n,o,!0)}function yb(r,e,t){let i=r.size,n=Fne.getEncodedBits(e,t),s,o;for(s=0;s<15;s++)o=(n>>s&1)===1,s<6?r.set(s,8,o,!0):s<8?r.set(s+1,8,o,!0):r.set(i-15+s,8,o,!0),s<8?r.set(8,i-s-1,o,!0):s<9?r.set(8,15-s-1+1,o,!0):r.set(8,15-s-1,o,!0);r.set(i-8,8,1,!0)}function qne(r,e){let t=r.size,i=-1,n=t-1,s=7,o=0;for(let a=t-1;a>0;a-=2)for(a===6&&a--;;){for(let c=0;c<2;c++)if(!r.isReserved(n,a-c)){let l=!1;o<e.length&&(l=(e[o]>>>s&1)===1),r.set(n,a-c,l),s--,s===-1&&(o++,s=7)}if(n+=i,n<0||t<=n){n-=i,i=-i;break}}}function One(r,e,t){let i=new kne;t.forEach(function(c){i.put(c.mode.bit,4),i.put(c.getLength(),Pne.getCharCountIndicator(c.mode,r)),c.write(i)});let n=Qw.getSymbolTotalCodewords(r),s=wb.getTotalCodewordsCount(r,e),o=(n-s)*8;for(i.getLengthInBits()+4<=o&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);let a=(o-i.getLengthInBits())/8;for(let c=0;c<a;c++)i.put(c%2?17:236,8);return Mne(i,r,e)}function Mne(r,e,t){let i=Qw.getSymbolTotalCodewords(e),n=wb.getTotalCodewordsCount(e,t),s=i-n,o=wb.getBlocksCount(e,t),a=i%o,c=o-a,l=Math.floor(i/o),d=Math.floor(s/o),u=d+1,f=l-d,h=new _ne(f),g=0,p=new Array(o),I=new Array(o),y=0,w=new Uint8Array(r.buffer);for(let R=0;R<o;R++){let U=R<c?d:u;p[R]=w.slice(g,g+U),I[R]=h.encode(p[R]),g+=U,y=Math.max(y,U)}let C=new Uint8Array(i),b=0,x,_;for(x=0;x<y;x++)for(_=0;_<o;_++)x<p[_].length&&(C[b++]=p[_][x]);for(x=0;x<f;x++)for(_=0;_<o;_++)C[b++]=I[_][x];return C}function Lne(r,e,t,i){let n;if(Array.isArray(r))n=mb.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let d=mb.rawSplit(r);l=Dw.getBestVersionForData(d,t)}n=mb.fromString(r,l||40)}else throw new Error("Invalid data");let s=Dw.getBestVersionForData(n,t);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(` +\u{1F512} \u5B89\u5168\u5EFA\u8BAE\uFF1A\u751F\u6210\u5BC6\u94A5\u547D\u4EE4: openssl rand -hex 32`):console.warn("[JWT] \u26A0\uFE0F \u5F00\u53D1\u73AF\u5883\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF0C\u4F7F\u7528\u4E34\u65F6\u968F\u673A\u5BC6\u94A5\u3002"+(c?"\u5BC6\u94A5\u5DF2\u6301\u4E45\u5316\u5230 KV\uFF0C\u91CD\u542F\u540E\u4FDD\u6301\u6709\u6548\u3002":"\u5BC6\u94A5\u4EC5\u5B58\u4E8E\u5185\u5B58\uFF0C\u91CD\u542F\u540E\u6240\u6709 token \u5C06\u5931\u6548\u3002")+` +\u751F\u4EA7\u73AF\u5883\u90E8\u7F72\u524D\uFF0C\u5EFA\u8BAE\u914D\u7F6E 32+ \u5B57\u7B26\u7684 JWT_SECRET \u73AF\u5883\u53D8\u91CF\uFF08\u63A8\u8350\u800C\u975E\u5F3A\u5236\uFF09\u3002`)}return av(e)}async function Uae(r){if(!ZO){ZO=!0;try{let{getKvBinding:e}=await Promise.resolve().then(()=>(nt(),ii)),t=await e(r);if(t.mode==="none"||!t.binding)return;let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(qs);else try{s=await i.get(qs,"text")}catch{s=await i.get(qs)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return;let a=JSON.parse(String(s)),o=Math.floor(Date.now()/1e3);for(let c of a)c&&c.jti&&c.exp>o&&dv.add(c.jti)}catch{}}}async function uv(r,e,t){if(r){dv.add(r);try{let{getKvBinding:i}=await Promise.resolve().then(()=>(nt(),ii)),n=await i(t);if(n.mode==="none"||!n.binding)return;let{binding:s,mode:a}=n,o=[];if(a==="blob"){let d=await s.get(qs);d&&(o=typeof d=="string"?JSON.parse(d):d)}else try{let d=await s.get(qs,"text");d&&(o=JSON.parse(String(d)))}catch{let d=await s.get(qs);d&&(o=typeof d=="string"?JSON.parse(d):d)}let c=Math.floor(Date.now()/1e3);o=o.filter(d=>d&&d.exp>c),o.push({jti:r,exp:e});let l=JSON.stringify(o);a==="blob"?typeof s.set=="function"?await s.set(qs,l):typeof s.put=="function"&&await s.put(qs,l):typeof s.put=="function"?await s.put(qs,l):typeof s.set=="function"&&await s.set(qs,l)}catch(i){console.warn("[JWT] Failed to persist revoked token to KV:",i)}}}async function Px(r,e){return r?(await Uae(e),dv.has(r)):!1}async function Ji(r,e){if(!await Vu(r))return r.json({code:401,message:"Unauthorized admin privilege required",data:null},401);await e()}function ov(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function fv(r){let t=(r?.env||{}).JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");if(!t||typeof t!="string")return!1;let i=r.req.header("x-cron-secret");if(i&&ov(i,t))return!0;let n=r.req.query("cron_secret");if(n&&ov(n,t))return!0;try{let a=(await r.req.json())?.cron_secret;if(typeof a=="string"&&a.length>0&&ov(a,t))return!0}catch{}return!1}async function hv(r){let{sign:e}=await Promise.resolve().then(()=>(Ka(),Qx)),t=await qr(r);return await e({type:"csrf",jti:crypto.randomUUID?crypto.randomUUID():t7().slice(0,16),exp:Math.floor(Date.now()/1e3)+3600},t)}async function Rae(r,e){let t=r.req.method.toUpperCase();if(["GET","HEAD","OPTIONS"].includes(t))return e();let i=r.req.header("x-csrf-token")||r.req.header("X-CSRF-Token");if(!i)return r.json({code:403,message:"CSRF token missing. Please include X-CSRF-Token header.",data:null},403);try{let{verify:n}=await Promise.resolve().then(()=>(Ka(),Qx)),s=await qr(r);if((await n(i,s,"HS256")).type!=="csrf")throw new Error("Invalid token type");await e()}catch{return r.json({code:403,message:"Invalid or expired CSRF token",data:null},403)}}async function Nae(r,e){let t=Date.now(),i=r.req.method.toUpperCase(),n=r.req.path,s=["POST","PUT","DELETE","PATCH"].includes(i);if(await e(),s)try{let{logAudit:a}=await Promise.resolve().then(()=>(YA(),VA)),o=await Je(r).catch(()=>null),c=Date.now()-t,l=r.res.status||200,d=l>=200&&l<400?"success":"failure",u=r.req.header("cf-connecting-ip")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown";await a({user_id:o?.id,username:o?.username||"anonymous",ip:u,action:`${i} ${n}`,resource:n,method:i,status:d,status_code:l,details:JSON.stringify({duration_ms:c}),user_agent:r.req.header("user-agent"),duration_ms:c},r.env)}catch(a){console.warn("[Audit] Failed to log:",a)}}async function Je(r){if(await nv(r))return{role:2,permission:0,disabled:!1,username:"api-token",base_path:"/"};let e=r.req.header("Authorization");if(!e){let i=r.req.query("token")||r.req.query("access_token");i&&(e=`Bearer ${i}`)}if(!e){try{let n=((await ne(r.env)).users||[]).find(s=>s.username==="guest");if(n&&!n.disabled)return{id:n.id,role:n.role??1,permission:n.permission??0,disabled:!!n.disabled,username:n.username,base_path:n.base_path||"/",sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp_secret:n.otp_secret}}catch{}return null}let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await qr(r),n=await La(t,i,"HS256");if(await Px(n?.jti,r.env))return null;let a=((await ne(r.env)).users||[]).find(o=>o.id===n.id||o.username===n.username);return!a||a.disabled?null:{id:a.id,role:a.role,permission:a.permission??0,disabled:!!a.disabled,username:a.username,base_path:a.base_path||"/",sso_id:a.sso_id||"",allow_ldap:!!a.allow_ldap,otp_secret:a.otp_secret}}catch{return null}}var cv,lv,e7,qs,dv,ZO,zi=J(()=>{"use strict";Ka();$A();nt();cv=null,lv=new WeakMap,e7="openlist_jwt_secret";qs="openlist_revoked_tokens",dv=new Set,ZO=!1});var S7=ae(Jx=>{"use strict";Object.defineProperty(Jx,"__esModule",{value:!0});function _oe(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var k7=_oe(_t("crypto")),Qoe=(r,e,t)=>k7.createHmac(r,Buffer.from(e,"hex")).update(Buffer.from(t,"hex")).digest().toString("hex"),Foe=(r,e)=>k7.randomBytes(r).toString(e);Jx.createDigest=Qoe;Jx.createRandomBytes=Foe});var _7=ae(Lv=>{"use strict";var Poe="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",D7=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];function Toe(r){var e=Math.floor(r.length/5);return r.length%5===0?e:e+1}Lv.encode=function(r){Buffer.isBuffer(r)||(r=new Buffer(r));for(var e=0,t=0,i=0,n=0,s=new Buffer(Toe(r)*8);e<r.length;){var a=r[e];i>3?(n=a&255>>i,i=(i+5)%8,n=n<<i|(e+1<r.length?r[e+1]:0)>>8-i,e++):(n=a>>8-(i+5)&31,i=(i+5)%8,i===0&&e++),s[t]=Poe.charCodeAt(n),t++}for(e=t;e<s.length;e++)s[e]=61;return s};Lv.decode=function(r){var e=0,t=0,i,n=0;Buffer.isBuffer(r)||(r=new Buffer(r));for(var s=new Buffer(Math.ceil(r.length*5/8)),a=0;a<r.length&&r[a]!==61;a++){var o=r[a]-48;if(o<D7.length)t=D7[o],e<=3?(e=(e+5)%8,e===0?(i|=t,s[n]=i,n++,i=0):i|=255&t<<8-e):(e=(e+5)%8,i|=255&t>>>e,s[n]=i,n++,i=255&t<<8-e);else throw new Error("Invalid input - it is not base32 encoded string")}return s.slice(0,n)}});var F7=ae(Hv=>{var Q7=_7();Hv.encode=Q7.encode;Hv.decode=Q7.decode});var T7=ae(jx=>{"use strict";Object.defineProperty(jx,"__esModule",{value:!0});function Uoe(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var P7=Uoe(F7()),Roe=(r,e)=>P7.decode(r).toString(e),Noe=(r,e)=>P7.encode(Buffer.from(r,e).toString("ascii")).toString().replace(/=/g,"");jx.keyDecoder=Roe;jx.keyEncoder=Noe});var rq=ae(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});function Zx(r){return Object.keys(r).map(e=>r[e])}(function(r){r.SHA1="sha1",r.SHA256="sha256",r.SHA512="sha512"})(Fe.HashAlgorithms||(Fe.HashAlgorithms={}));var Vx=Zx(Fe.HashAlgorithms);(function(r){r.ASCII="ascii",r.BASE64="base64",r.HEX="hex",r.LATIN1="latin1",r.UTF8="utf8"})(Fe.KeyEncodings||(Fe.KeyEncodings={}));var Kv=Zx(Fe.KeyEncodings);(function(r){r.HOTP="hotp",r.TOTP="totp"})(Fe.Strategy||(Fe.Strategy={}));var Gv=Zx(Fe.Strategy),eC=()=>{throw new Error("Please provide an options.createDigest implementation.")};function jv(r){return/^(\d+)$/.test(r)}function $v(r,e,t){return r.length>=e?r:`${Array(e+1).join(t)}${r}`.slice(-1*e)}function Vv(r){let e=`otpauth://${r.type}/{labelPrefix}:{accountName}?secret={secret}{query}`,t=[];if(Gv.indexOf(r.type)<0)throw new Error(`Expecting options.type to be one of ${Gv.join(", ")}. Received ${r.type}.`);if(r.type==="hotp"){if(r.counter==null||typeof r.counter!="number")throw new Error('Expecting options.counter to be a number when options.type is "hotp".');t.push(`&counter=${r.counter}`)}return r.type==="totp"&&r.step&&t.push(`&period=${r.step}`),r.digits&&t.push(`&digits=${r.digits}`),r.algorithm&&t.push(`&algorithm=${r.algorithm.toUpperCase()}`),r.issuer&&t.push(`&issuer=${encodeURIComponent(r.issuer)}`),e.replace("{labelPrefix}",encodeURIComponent(r.issuer||r.accountName)).replace("{accountName}",encodeURIComponent(r.accountName)).replace("{secret}",r.secret).replace("{query}",t.join(""))}var Yx=class r{constructor(e={}){this._defaultOptions=Object.freeze({...e}),this._options=Object.freeze({})}create(e={}){return new r(e)}clone(e={}){let t=this.create({...this._defaultOptions,...e});return t.options=this._options,t}get options(){return Object.freeze({...this._defaultOptions,...this._options})}set options(e){this._options=Object.freeze({...this._options,...e})}allOptions(){return this.options}resetOptions(){this._options=Object.freeze({})}};function Yv(r){if(typeof r.createDigest!="function")throw new Error("Expecting options.createDigest to be a function.");if(typeof r.createHmacKey!="function")throw new Error("Expecting options.createHmacKey to be a function.");if(typeof r.digits!="number")throw new Error("Expecting options.digits to be a number.");if(!r.algorithm||Vx.indexOf(r.algorithm)<0)throw new Error(`Expecting options.algorithm to be one of ${Vx.join(", ")}. Received ${r.algorithm}.`);if(!r.encoding||Kv.indexOf(r.encoding)<0)throw new Error(`Expecting options.encoding to be one of ${Kv.join(", ")}. Received ${r.encoding}.`)}var R7=(r,e,t)=>Buffer.from(e,t).toString("hex");function N7(){return{algorithm:Fe.HashAlgorithms.SHA1,createHmacKey:R7,createDigest:eC,digits:6,encoding:Fe.KeyEncodings.ASCII}}function O7(r){let e={...N7(),...r};return Yv(e),Object.freeze(e)}function q7(r){let e=r.toString(16);return $v(e,16,"0")}function M7(r,e){let t=Buffer.from(r,"hex"),i=t[t.length-1]&15,s=((t[i]&127)<<24|(t[i+1]&255)<<16|(t[i+2]&255)<<8|t[i+3]&255)%Math.pow(10,e);return $v(String(s),e,"0")}function Ooe(r,e,t){let i=q7(e),n=t.createHmacKey(t.algorithm,r,t.encoding);return t.createDigest(t.algorithm,n,i)}function tC(r,e,t){let i=t.digest||Ooe(r,e,t);return M7(i,t.digits)}function L7(r,e,t,i){if(!jv(r))return!1;let n=tC(e,t,i);return r===n}function H7(r,e,t,i,n){return Vv({algorithm:n.algorithm,digits:n.digits,type:Fe.Strategy.HOTP,accountName:r,counter:i,issuer:e,secret:t})}var Wx=class r extends Yx{create(e={}){return new r(e)}allOptions(){return O7(this.options)}generate(e,t){return tC(e,t,this.allOptions())}check(e,t,i){return L7(e,t,i,this.allOptions())}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret,e.counter)}keyuri(e,t,i,n){return H7(e,t,i,n,this.allOptions())}};function K7(r){if(typeof r=="number")return[Math.abs(r),Math.abs(r)];if(Array.isArray(r)){let[e,t]=r;if(typeof e=="number"&&typeof t=="number")return[Math.abs(e),Math.abs(t)]}throw new Error("Expecting options.window to be an number or [number, number].")}function Wv(r){if(Yv(r),K7(r.window),typeof r.epoch!="number")throw new Error("Expecting options.epoch to be a number.");if(typeof r.step!="number")throw new Error("Expecting options.step to be a number.")}var $x=(r,e,t)=>{let i=r.length,n=Buffer.from(r,e).toString("hex");if(i<t){let s=new Array(t-i+1).join(n);return Buffer.from(s,"hex").slice(0,t).toString("hex")}return n},Xv=(r,e,t)=>{switch(r){case Fe.HashAlgorithms.SHA1:return $x(e,t,20);case Fe.HashAlgorithms.SHA256:return $x(e,t,32);case Fe.HashAlgorithms.SHA512:return $x(e,t,64);default:throw new Error(`Expecting algorithm to be one of ${Vx.join(", ")}. Received ${r}.`)}};function G7(){return{algorithm:Fe.HashAlgorithms.SHA1,createDigest:eC,createHmacKey:Xv,digits:6,encoding:Fe.KeyEncodings.ASCII,epoch:Date.now(),step:30,window:0}}function z7(r){let e={...G7(),...r};return Wv(e),Object.freeze(e)}function J7(r,e){return Math.floor(r/e/1e3)}function rC(r,e){let t=J7(e.epoch,e.step);return tC(r,t,e)}function U7(r,e,t,i){let n=[];if(i===0)return n;for(let s=1;s<=i;s++){let a=e*s*t;n.push(r+a)}return n}function j7(r,e,t){let i=K7(t),n=e*1e3;return{current:r,past:U7(r,-1,n,i[0]),future:U7(r,1,n,i[1])}}function Zv(r,e,t){if(!jv(r))return!1;let i=rC(e,t);return r===i}function zv(r,e,t,i){let n=null;return r.some((s,a)=>Zv(e,t,{...i,epoch:s})?(n=a+1,!0):!1),n}function ek(r,e,t){if(Zv(r,e,t))return 0;let i=j7(t.epoch,t.step,t.window),n=zv(i.past,r,e,t);return n!==null?n*-1:zv(i.future,r,e,t)}function tk(r,e){return Math.floor(r/1e3)%e}function $7(r,e){return e-tk(r,e)}function V7(r,e,t,i){return Vv({algorithm:i.algorithm,digits:i.digits,step:i.step,type:Fe.Strategy.TOTP,accountName:r,issuer:e,secret:t})}var Xx=class r extends Wx{create(e={}){return new r(e)}allOptions(){return z7(this.options)}generate(e){return rC(e,this.allOptions())}checkDelta(e,t){return ek(e,t,this.allOptions())}check(e,t){return typeof this.checkDelta(e,t)=="number"}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret)}timeRemaining(){let e=this.allOptions();return $7(e.epoch,e.step)}timeUsed(){let e=this.allOptions();return tk(e.epoch,e.step)}keyuri(e,t,i){return V7(e,t,i,this.allOptions())}};function Y7(r){if(Wv(r),typeof r.keyDecoder!="function")throw new Error("Expecting options.keyDecoder to be a function.");if(r.keyEncoder&&typeof r.keyEncoder!="function")throw new Error("Expecting options.keyEncoder to be a function.")}function W7(){return{algorithm:Fe.HashAlgorithms.SHA1,createDigest:eC,createHmacKey:Xv,digits:6,encoding:Fe.KeyEncodings.HEX,epoch:Date.now(),step:30,window:0}}function X7(r){let e={...W7(),...r};return Y7(e),Object.freeze(e)}function rk(r,e){return e.keyEncoder(r,e.encoding)}function iC(r,e){return e.keyDecoder(r,e.encoding)}function Z7(r,e){let t=e.createRandomBytes(r,e.encoding);return rk(t,e)}function eq(r,e){return rC(iC(r,e),e)}function tq(r,e,t){return ek(r,iC(e,t),t)}var Jv=class r extends Xx{create(e={}){return new r(e)}allOptions(){return X7(this.options)}generate(e){return eq(e,this.allOptions())}checkDelta(e,t){return tq(e,t,this.allOptions())}encode(e){return rk(e,this.allOptions())}decode(e){return iC(e,this.allOptions())}generateSecret(e=10){return Z7(e,this.allOptions())}};Fe.Authenticator=Jv;Fe.HASH_ALGORITHMS=Vx;Fe.HOTP=Wx;Fe.KEY_ENCODINGS=Kv;Fe.OTP=Yx;Fe.STRATEGY=Gv;Fe.TOTP=Xx;Fe.authenticatorCheckWithWindow=tq;Fe.authenticatorDecoder=iC;Fe.authenticatorDefaultOptions=W7;Fe.authenticatorEncoder=rk;Fe.authenticatorGenerateSecret=Z7;Fe.authenticatorOptionValidator=Y7;Fe.authenticatorOptions=X7;Fe.authenticatorToken=eq;Fe.createDigestPlaceholder=eC;Fe.hotpCheck=L7;Fe.hotpCounter=q7;Fe.hotpCreateHmacKey=R7;Fe.hotpDefaultOptions=N7;Fe.hotpDigestToToken=M7;Fe.hotpKeyuri=H7;Fe.hotpOptions=O7;Fe.hotpOptionsValidator=Yv;Fe.hotpToken=tC;Fe.isTokenValid=jv;Fe.keyuri=Vv;Fe.objectValues=Zx;Fe.padStart=$v;Fe.totpCheck=Zv;Fe.totpCheckByEpoch=zv;Fe.totpCheckWithWindow=ek;Fe.totpCounter=J7;Fe.totpCreateHmacKey=Xv;Fe.totpDefaultOptions=G7;Fe.totpEpochAvailable=j7;Fe.totpKeyuri=V7;Fe.totpOptions=z7;Fe.totpOptionsValidator=Wv;Fe.totpPadSecret=$x;Fe.totpTimeRemaining=$7;Fe.totpTimeUsed=tk;Fe.totpToken=rC});var nq=ae(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});var nC=S7(),iq=T7(),ik=rq(),qoe=new ik.HOTP({createDigest:nC.createDigest}),Moe=new ik.TOTP({createDigest:nC.createDigest}),Loe=new ik.Authenticator({createDigest:nC.createDigest,createRandomBytes:nC.createRandomBytes,keyDecoder:iq.keyDecoder,keyEncoder:iq.keyEncoder});s0.authenticator=Loe;s0.hotp=qoe;s0.totp=Moe});var aq=ae(nk=>{"use strict";Object.defineProperty(nk,"__esModule",{value:!0});var sq=nq();Object.keys(sq).forEach(function(r){r!=="default"&&Object.defineProperty(nk,r,{enumerable:!0,get:function(){return sq[r]}})})});var sk=ae((Nve,oq)=>{oq.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var xc=ae(Hl=>{var ak,Hoe=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Hl.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Hl.getSymbolTotalCodewords=function(e){return Hoe[e]};Hl.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};Hl.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ak=e};Hl.isKanjiModeEnabled=function(){return typeof ak<"u"};Hl.toSJIS=function(e){return ak(e)}});var sC=ae(Qn=>{Qn.L={bit:1};Qn.M={bit:0};Qn.Q={bit:3};Qn.H={bit:2};function Koe(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return Qn.L;case"m":case"medium":return Qn.M;case"q":case"quartile":return Qn.Q;case"h":case"high":return Qn.H;default:throw new Error("Unknown EC Level: "+r)}}Qn.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};Qn.from=function(e,t){if(Qn.isValid(e))return e;try{return Koe(e)}catch{return t}}});var dq=ae((Mve,lq)=>{function cq(){this.buffer=[],this.length=0}cq.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};lq.exports=cq});var fq=ae((Lve,uq)=>{function a0(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}a0.prototype.set=function(r,e,t,i){let n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};a0.prototype.get=function(r,e){return this.data[r*this.size+e]};a0.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};a0.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};uq.exports=a0});var hq=ae(aC=>{var Goe=xc().getSymbolSize;aC.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,i=Goe(e),n=i===145?26:Math.ceil((i-13)/(2*t-2))*2,s=[i-7];for(let a=1;a<t-1;a++)s[a]=s[a-1]-n;return s.push(6),s.reverse()};aC.getPositions=function(e){let t=[],i=aC.getRowColCoords(e),n=i.length;for(let s=0;s<n;s++)for(let a=0;a<n;a++)s===0&&a===0||s===0&&a===n-1||s===n-1&&a===0||t.push([i[s],i[a]]);return t}});var pq=ae(gq=>{var zoe=xc().getSymbolSize,Aq=7;gq.getPositions=function(e){let t=zoe(e);return[[0,0],[t-Aq,0],[0,t-Aq]]}});var mq=ae(Tt=>{Tt.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var Kl={N1:3,N2:3,N3:40,N4:10};Tt.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};Tt.from=function(e){return Tt.isValid(e)?parseInt(e,10):void 0};Tt.getPenaltyN1=function(e){let t=e.size,i=0,n=0,s=0,a=null,o=null;for(let c=0;c<t;c++){n=s=0,a=o=null;for(let l=0;l<t;l++){let d=e.get(c,l);d===a?n++:(n>=5&&(i+=Kl.N1+(n-5)),a=d,n=1),d=e.get(l,c),d===o?s++:(s>=5&&(i+=Kl.N1+(s-5)),o=d,s=1)}n>=5&&(i+=Kl.N1+(n-5)),s>=5&&(i+=Kl.N1+(s-5))}return i};Tt.getPenaltyN2=function(e){let t=e.size,i=0;for(let n=0;n<t-1;n++)for(let s=0;s<t-1;s++){let a=e.get(n,s)+e.get(n,s+1)+e.get(n+1,s)+e.get(n+1,s+1);(a===4||a===0)&&i++}return i*Kl.N2};Tt.getPenaltyN3=function(e){let t=e.size,i=0,n=0,s=0;for(let a=0;a<t;a++){n=s=0;for(let o=0;o<t;o++)n=n<<1&2047|e.get(a,o),o>=10&&(n===1488||n===93)&&i++,s=s<<1&2047|e.get(o,a),o>=10&&(s===1488||s===93)&&i++}return i*Kl.N3};Tt.getPenaltyN4=function(e){let t=0,i=e.data.length;for(let s=0;s<i;s++)t+=e.data[s];return Math.abs(Math.ceil(t*100/i/5)-10)*Kl.N4};function Joe(r,e,t){switch(r){case Tt.Patterns.PATTERN000:return(e+t)%2===0;case Tt.Patterns.PATTERN001:return e%2===0;case Tt.Patterns.PATTERN010:return t%3===0;case Tt.Patterns.PATTERN011:return(e+t)%3===0;case Tt.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case Tt.Patterns.PATTERN101:return e*t%2+e*t%3===0;case Tt.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case Tt.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}Tt.applyMask=function(e,t){let i=t.size;for(let n=0;n<i;n++)for(let s=0;s<i;s++)t.isReserved(s,n)||t.xor(s,n,Joe(e,s,n))};Tt.getBestMask=function(e,t){let i=Object.keys(Tt.Patterns).length,n=0,s=1/0;for(let a=0;a<i;a++){t(a),Tt.applyMask(a,e);let o=Tt.getPenaltyN1(e)+Tt.getPenaltyN2(e)+Tt.getPenaltyN3(e)+Tt.getPenaltyN4(e);Tt.applyMask(a,e),o<s&&(s=o,n=a)}return n}});var ck=ae(ok=>{var Cc=sC(),oC=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],cC=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ok.getBlocksCount=function(e,t){switch(t){case Cc.L:return oC[(e-1)*4+0];case Cc.M:return oC[(e-1)*4+1];case Cc.Q:return oC[(e-1)*4+2];case Cc.H:return oC[(e-1)*4+3];default:return}};ok.getTotalCodewordsCount=function(e,t){switch(t){case Cc.L:return cC[(e-1)*4+0];case Cc.M:return cC[(e-1)*4+1];case Cc.Q:return cC[(e-1)*4+2];case Cc.H:return cC[(e-1)*4+3];default:return}}});var yq=ae(dC=>{var o0=new Uint8Array(512),lC=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)o0[t]=e,lC[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)o0[t]=o0[t-255]})();dC.log=function(e){if(e<1)throw new Error("log("+e+")");return lC[e]};dC.exp=function(e){return o0[e]};dC.mul=function(e,t){return e===0||t===0?0:o0[lC[e]+lC[t]]}});var Iq=ae(c0=>{var lk=yq();c0.mul=function(e,t){let i=new Uint8Array(e.length+t.length-1);for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)i[n+s]^=lk.mul(e[n],t[s]);return i};c0.mod=function(e,t){let i=new Uint8Array(e);for(;i.length-t.length>=0;){let n=i[0];for(let a=0;a<t.length;a++)i[a]^=lk.mul(t[a],n);let s=0;for(;s<i.length&&i[s]===0;)s++;i=i.slice(s)}return i};c0.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let i=0;i<e;i++)t=c0.mul(t,new Uint8Array([1,lk.exp(i)]));return t}});var Cq=ae(($ve,xq)=>{var wq=Iq();function dk(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}dk.prototype.initialize=function(e){this.degree=e,this.genPoly=wq.generateECPolynomial(this.degree)};dk.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let i=wq.mod(t,this.genPoly),n=this.degree-i.length;if(n>0){let s=new Uint8Array(this.degree);return s.set(i,n),s}return i};xq.exports=dk});var uk=ae(Eq=>{Eq.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var fk=ae(ja=>{var Bq="[0-9]+",joe="[A-Z $%*+\\-./:]+",l0="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";l0=l0.replace(/u/g,"\\u");var $oe="(?:(?![A-Z0-9 $%*+\\-./:]|"+l0+`)(?:.|[\r +]))+`;ja.KANJI=new RegExp(l0,"g");ja.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");ja.BYTE=new RegExp($oe,"g");ja.NUMERIC=new RegExp(Bq,"g");ja.ALPHANUMERIC=new RegExp(joe,"g");var Voe=new RegExp("^"+l0+"$"),Yoe=new RegExp("^"+Bq+"$"),Woe=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");ja.testKanji=function(e){return Voe.test(e)};ja.testNumeric=function(e){return Yoe.test(e)};ja.testAlphanumeric=function(e){return Woe.test(e)}});var Ec=ae(Ir=>{var Xoe=uk(),hk=fk();Ir.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};Ir.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};Ir.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};Ir.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};Ir.MIXED={bit:-1};Ir.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Xoe.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};Ir.getBestModeForData=function(e){return hk.testNumeric(e)?Ir.NUMERIC:hk.testAlphanumeric(e)?Ir.ALPHANUMERIC:hk.testKanji(e)?Ir.KANJI:Ir.BYTE};Ir.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};Ir.isValid=function(e){return e&&e.bit&&e.ccBits};function Zoe(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return Ir.NUMERIC;case"alphanumeric":return Ir.ALPHANUMERIC;case"kanji":return Ir.KANJI;case"byte":return Ir.BYTE;default:throw new Error("Unknown mode: "+r)}}Ir.from=function(e,t){if(Ir.isValid(e))return e;try{return Zoe(e)}catch{return t}}});var Dq=ae(Gl=>{var uC=xc(),ece=ck(),bq=sC(),Bc=Ec(),Ak=uk(),kq=7973,vq=uC.getBCHDigit(kq);function tce(r,e,t){for(let i=1;i<=40;i++)if(e<=Gl.getCapacity(i,t,r))return i}function Sq(r,e){return Bc.getCharCountIndicator(r,e)+4}function rce(r,e){let t=0;return r.forEach(function(i){let n=Sq(i.mode,e);t+=n+i.getBitsLength()}),t}function ice(r,e){for(let t=1;t<=40;t++)if(rce(r,t)<=Gl.getCapacity(t,e,Bc.MIXED))return t}Gl.from=function(e,t){return Ak.isValid(e)?parseInt(e,10):t};Gl.getCapacity=function(e,t,i){if(!Ak.isValid(e))throw new Error("Invalid QR Code version");typeof i>"u"&&(i=Bc.BYTE);let n=uC.getSymbolTotalCodewords(e),s=ece.getTotalCodewordsCount(e,t),a=(n-s)*8;if(i===Bc.MIXED)return a;let o=a-Sq(i,e);switch(i){case Bc.NUMERIC:return Math.floor(o/10*3);case Bc.ALPHANUMERIC:return Math.floor(o/11*2);case Bc.KANJI:return Math.floor(o/13);case Bc.BYTE:default:return Math.floor(o/8)}};Gl.getBestVersionForData=function(e,t){let i,n=bq.from(t,bq.M);if(Array.isArray(e)){if(e.length>1)return ice(e,n);if(e.length===0)return 1;i=e[0]}else i=e;return tce(i.mode,i.getLength(),n)};Gl.getEncodedBits=function(e){if(!Ak.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;uC.getBCHDigit(t)-vq>=0;)t^=kq<<uC.getBCHDigit(t)-vq;return e<<12|t}});var Pq=ae(Fq=>{var gk=xc(),Qq=1335,nce=21522,_q=gk.getBCHDigit(Qq);Fq.getEncodedBits=function(e,t){let i=e.bit<<3|t,n=i<<10;for(;gk.getBCHDigit(n)-_q>=0;)n^=Qq<<gk.getBCHDigit(n)-_q;return(i<<10|n)^nce}});var Uq=ae((eke,Tq)=>{var sce=Ec();function af(r){this.mode=sce.NUMERIC,this.data=r.toString()}af.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};af.prototype.getLength=function(){return this.data.length};af.prototype.getBitsLength=function(){return af.getBitsLength(this.data.length)};af.prototype.write=function(e){let t,i,n;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),n=parseInt(i,10),e.put(n,10);let s=this.data.length-t;s>0&&(i=this.data.substr(t),n=parseInt(i,10),e.put(n,s*3+1))};Tq.exports=af});var Nq=ae((tke,Rq)=>{var ace=Ec(),pk=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function of(r){this.mode=ace.ALPHANUMERIC,this.data=r}of.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};of.prototype.getLength=function(){return this.data.length};of.prototype.getBitsLength=function(){return of.getBitsLength(this.data.length)};of.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let i=pk.indexOf(this.data[t])*45;i+=pk.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(pk.indexOf(this.data[t]),6)};Rq.exports=of});var qq=ae((rke,Oq)=>{var oce=Ec();function cf(r){this.mode=oce.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}cf.getBitsLength=function(e){return e*8};cf.prototype.getLength=function(){return this.data.length};cf.prototype.getBitsLength=function(){return cf.getBitsLength(this.data.length)};cf.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};Oq.exports=cf});var Lq=ae((ike,Mq)=>{var cce=Ec(),lce=xc();function lf(r){this.mode=cce.KANJI,this.data=r}lf.getBitsLength=function(e){return e*13};lf.prototype.getLength=function(){return this.data.length};lf.prototype.getBitsLength=function(){return lf.getBitsLength(this.data.length)};lf.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=lce.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+` +Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};Mq.exports=lf});var Hq=ae((nke,mk)=>{"use strict";var d0={single_source_shortest_paths:function(r,e,t){var i={},n={};n[e]=0;var s=d0.PriorityQueue.make();s.push(e,0);for(var a,o,c,l,d,u,f,A,g;!s.empty();){a=s.pop(),o=a.value,l=a.cost,d=r[o]||{};for(c in d)d.hasOwnProperty(c)&&(u=d[c],f=l+u,A=n[c],g=typeof n[c]>"u",(g||A>f)&&(n[c]=f,s.push(c,f),i[c]=o))}if(typeof t<"u"&&typeof n[t]>"u"){var p=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],i=e,n;i;)t.push(i),n=r[i],i=r[i];return t.reverse(),t},find_path:function(r,e,t){var i=d0.single_source_shortest_paths(r,e,t);return d0.extract_shortest_path_from_predecessor_list(i,t)},PriorityQueue:{make:function(r){var e=d0.PriorityQueue,t={},i;r=r||{};for(i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof mk<"u"&&(mk.exports=d0)});var Yq=ae(df=>{var Et=Ec(),zq=Uq(),Jq=Nq(),jq=qq(),$q=Lq(),u0=fk(),fC=xc(),dce=Hq();function Kq(r){return unescape(encodeURIComponent(r)).length}function f0(r,e,t){let i=[],n;for(;(n=r.exec(t))!==null;)i.push({data:n[0],index:n.index,mode:e,length:n[0].length});return i}function Vq(r){let e=f0(u0.NUMERIC,Et.NUMERIC,r),t=f0(u0.ALPHANUMERIC,Et.ALPHANUMERIC,r),i,n;return fC.isKanjiModeEnabled()?(i=f0(u0.BYTE,Et.BYTE,r),n=f0(u0.KANJI,Et.KANJI,r)):(i=f0(u0.BYTE_KANJI,Et.BYTE,r),n=[]),e.concat(t,i,n).sort(function(a,o){return a.index-o.index}).map(function(a){return{data:a.data,mode:a.mode,length:a.length}})}function yk(r,e){switch(e){case Et.NUMERIC:return zq.getBitsLength(r);case Et.ALPHANUMERIC:return Jq.getBitsLength(r);case Et.KANJI:return $q.getBitsLength(r);case Et.BYTE:return jq.getBitsLength(r)}}function uce(r){return r.reduce(function(e,t){let i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function fce(r){let e=[];for(let t=0;t<r.length;t++){let i=r[t];switch(i.mode){case Et.NUMERIC:e.push([i,{data:i.data,mode:Et.ALPHANUMERIC,length:i.length},{data:i.data,mode:Et.BYTE,length:i.length}]);break;case Et.ALPHANUMERIC:e.push([i,{data:i.data,mode:Et.BYTE,length:i.length}]);break;case Et.KANJI:e.push([i,{data:i.data,mode:Et.BYTE,length:Kq(i.data)}]);break;case Et.BYTE:e.push([{data:i.data,mode:Et.BYTE,length:Kq(i.data)}])}}return e}function hce(r,e){let t={},i={start:{}},n=["start"];for(let s=0;s<r.length;s++){let a=r[s],o=[];for(let c=0;c<a.length;c++){let l=a[c],d=""+s+c;o.push(d),t[d]={node:l,lastCount:0},i[d]={};for(let u=0;u<n.length;u++){let f=n[u];t[f]&&t[f].node.mode===l.mode?(i[f][d]=yk(t[f].lastCount+l.length,l.mode)-yk(t[f].lastCount,l.mode),t[f].lastCount+=l.length):(t[f]&&(t[f].lastCount=l.length),i[f][d]=yk(l.length,l.mode)+4+Et.getCharCountIndicator(l.mode,e))}}n=o}for(let s=0;s<n.length;s++)i[n[s]].end=0;return{map:i,table:t}}function Gq(r,e){let t,i=Et.getBestModeForData(r);if(t=Et.from(e,i),t!==Et.BYTE&&t.bit<i.bit)throw new Error('"'+r+'" cannot be encoded with mode '+Et.toString(t)+`. + Suggested mode is: `+Et.toString(i));switch(t===Et.KANJI&&!fC.isKanjiModeEnabled()&&(t=Et.BYTE),t){case Et.NUMERIC:return new zq(r);case Et.ALPHANUMERIC:return new Jq(r);case Et.KANJI:return new $q(r);case Et.BYTE:return new jq(r)}}df.fromArray=function(e){return e.reduce(function(t,i){return typeof i=="string"?t.push(Gq(i,null)):i.data&&t.push(Gq(i.data,i.mode)),t},[])};df.fromString=function(e,t){let i=Vq(e,fC.isKanjiModeEnabled()),n=fce(i),s=hce(n,t),a=dce.find_path(s.map,"start","end"),o=[];for(let c=1;c<a.length-1;c++)o.push(s.table[a[c]].node);return df.fromArray(uce(o))};df.rawSplit=function(e){return df.fromArray(Vq(e,fC.isKanjiModeEnabled()))}});var Bk=ae(Wq=>{var AC=xc(),Ik=sC(),Ace=dq(),gce=fq(),pce=hq(),mce=pq(),Ck=mq(),Ek=ck(),yce=Cq(),hC=Dq(),Ice=Pq(),wce=Ec(),wk=Yq();function xce(r,e){let t=r.size,i=mce.getPositions(e);for(let n=0;n<i.length;n++){let s=i[n][0],a=i[n][1];for(let o=-1;o<=7;o++)if(!(s+o<=-1||t<=s+o))for(let c=-1;c<=7;c++)a+c<=-1||t<=a+c||(o>=0&&o<=6&&(c===0||c===6)||c>=0&&c<=6&&(o===0||o===6)||o>=2&&o<=4&&c>=2&&c<=4?r.set(s+o,a+c,!0,!0):r.set(s+o,a+c,!1,!0))}}function Cce(r){let e=r.size;for(let t=8;t<e-8;t++){let i=t%2===0;r.set(t,6,i,!0),r.set(6,t,i,!0)}}function Ece(r,e){let t=pce.getPositions(e);for(let i=0;i<t.length;i++){let n=t[i][0],s=t[i][1];for(let a=-2;a<=2;a++)for(let o=-2;o<=2;o++)a===-2||a===2||o===-2||o===2||a===0&&o===0?r.set(n+a,s+o,!0,!0):r.set(n+a,s+o,!1,!0)}}function Bce(r,e){let t=r.size,i=hC.getEncodedBits(e),n,s,a;for(let o=0;o<18;o++)n=Math.floor(o/3),s=o%3+t-8-3,a=(i>>o&1)===1,r.set(n,s,a,!0),r.set(s,n,a,!0)}function xk(r,e,t){let i=r.size,n=Ice.getEncodedBits(e,t),s,a;for(s=0;s<15;s++)a=(n>>s&1)===1,s<6?r.set(s,8,a,!0):s<8?r.set(s+1,8,a,!0):r.set(i-15+s,8,a,!0),s<8?r.set(8,i-s-1,a,!0):s<9?r.set(8,15-s-1+1,a,!0):r.set(8,15-s-1,a,!0);r.set(i-8,8,1,!0)}function bce(r,e){let t=r.size,i=-1,n=t-1,s=7,a=0;for(let o=t-1;o>0;o-=2)for(o===6&&o--;;){for(let c=0;c<2;c++)if(!r.isReserved(n,o-c)){let l=!1;a<e.length&&(l=(e[a]>>>s&1)===1),r.set(n,o-c,l),s--,s===-1&&(a++,s=7)}if(n+=i,n<0||t<=n){n-=i,i=-i;break}}}function vce(r,e,t){let i=new Ace;t.forEach(function(c){i.put(c.mode.bit,4),i.put(c.getLength(),wce.getCharCountIndicator(c.mode,r)),c.write(i)});let n=AC.getSymbolTotalCodewords(r),s=Ek.getTotalCodewordsCount(r,e),a=(n-s)*8;for(i.getLengthInBits()+4<=a&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);let o=(a-i.getLengthInBits())/8;for(let c=0;c<o;c++)i.put(c%2?17:236,8);return kce(i,r,e)}function kce(r,e,t){let i=AC.getSymbolTotalCodewords(e),n=Ek.getTotalCodewordsCount(e,t),s=i-n,a=Ek.getBlocksCount(e,t),o=i%a,c=a-o,l=Math.floor(i/a),d=Math.floor(s/a),u=d+1,f=l-d,A=new yce(f),g=0,p=new Array(a),I=new Array(a),m=0,w=new Uint8Array(r.buffer);for(let R=0;R<a;R++){let U=R<c?d:u;p[R]=w.slice(g,g+U),I[R]=A.encode(p[R]),g+=U,m=Math.max(m,U)}let B=new Uint8Array(i),C=0,x,_;for(x=0;x<m;x++)for(_=0;_<a;_++)x<p[_].length&&(B[C++]=p[_][x]);for(x=0;x<f;x++)for(_=0;_<a;_++)B[C++]=I[_][x];return B}function Sce(r,e,t,i){let n;if(Array.isArray(r))n=wk.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let d=wk.rawSplit(r);l=hC.getBestVersionForData(d,t)}n=wk.fromString(r,l||40)}else throw new Error("Invalid data");let s=hC.getBestVersionForData(n,t);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(` The chosen QR Code version cannot contain this amount of data. Minimum version required to store current data is: `+s+`. -`);let o=One(e,t,n),a=Qw.getSymbolSize(e),c=new Sne(a);return Tne(c,e),Une(c),Rne(c,e),yb(c,t,0),e>=7&&Nne(c,e),qne(c,o),isNaN(i)&&(i=Ib.getBestMask(c,yb.bind(null,c,t))),Ib.applyMask(i,c),yb(c,t,i),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:i,segments:n}}s7.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let i=pb.M,n,s;return typeof t<"u"&&(i=pb.from(t.errorCorrectionLevel,pb.M),n=Dw.from(t.version),s=Ib.from(t.maskPattern),t.toSJISFunc&&Qw.setToSJISFunction(t.toSJISFunc)),Lne(e,n,i,s)}});var Cb=oe((LEe,a7)=>{"use strict";var Hne=wt("util"),o7=wt("stream"),Rn=a7.exports=function(){o7.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Hne.inherits(Rn,o7);Rn.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};Rn.prototype.write=function(r,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let t;return Buffer.isBuffer(r)?t=r:t=Buffer.from(r,e||this._encoding),this._buffers.push(t),this._buffered+=t.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};Rn.prototype.end=function(r,e){r&&this.write(r,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};Rn.prototype.destroySoon=Rn.prototype.end;Rn.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};Rn.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};Rn.prototype._processReadAllowingLess=function(r){this._reads.shift();let e=this._buffers[0];e.length>r.length?(this._buffered-=r.length,this._buffers[0]=e.slice(r.length),r.func.call(this,e.slice(0,r.length))):(this._buffered-=e.length,this._buffers.shift(),r.func.call(this,e))};Rn.prototype._processRead=function(r){this._reads.shift();let e=0,t=0,i=Buffer.alloc(r.length);for(;e<r.length;){let n=this._buffers[t++],s=Math.min(n.length,r.length-e);n.copy(i,e,0,s),e+=s,s!==n.length&&(this._buffers[--t]=n.slice(s))}t>0&&this._buffers.splice(0,t),this._buffered-=r.length,r.func.call(this,i)};Rn.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let r=this._reads[0];if(r.allowLess)this._processReadAllowingLess(r);else if(this._buffered>=r.length)this._processRead(r);else break}this._buffers&&!this.writable&&this._end()}catch(r){this.emit("error",r)}}});var Bb=oe(Eb=>{"use strict";var Oa=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];Eb.getImagePasses=function(r,e){let t=[],i=r%8,n=e%8,s=(r-i)/8,o=(e-n)/8;for(let a=0;a<Oa.length;a++){let c=Oa[a],l=s*c.x.length,d=o*c.y.length;for(let u=0;u<c.x.length&&c.x[u]<i;u++)l++;for(let u=0;u<c.y.length&&c.y[u]<n;u++)d++;l>0&&d>0&&t.push({width:l,height:d,index:a})}return t};Eb.getInterlaceIterator=function(r){return function(e,t,i){let n=e%Oa[i].x.length,s=(e-n)/Oa[i].x.length*8+Oa[i].x[n],o=t%Oa[i].y.length,a=(t-o)/Oa[i].y.length*8+Oa[i].y[o];return s*4+a*r*4}}});var bb=oe((KEe,c7)=>{"use strict";c7.exports=function(e,t,i){let n=e+t-i,s=Math.abs(n-e),o=Math.abs(n-t),a=Math.abs(n-i);return s<=o&&s<=a?e:o<=a?t:i}});var vb=oe((GEe,d7)=>{"use strict";var Kne=Bb(),Gne=bb();function l7(r,e,t){let i=r*e;return t!==8&&(i=Math.ceil(i/(8/t))),i}var iu=d7.exports=function(r,e){let t=r.width,i=r.height,n=r.interlace,s=r.bpp,o=r.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],n){let a=Kne.getImagePasses(t,i);for(let c=0;c<a.length;c++)this._images.push({byteWidth:l7(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:l7(t,s,o),height:i,lineIndex:0});o===8?this._xComparison=s:o===16?this._xComparison=s*2:this._xComparison=1};iu.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};iu.prototype._unFilterType1=function(r,e,t){let i=this._xComparison,n=i-1;for(let s=0;s<t;s++){let o=r[1+s],a=s>n?e[s-i]:0;e[s]=o+a}};iu.prototype._unFilterType2=function(r,e,t){let i=this._lastLine;for(let n=0;n<t;n++){let s=r[1+n],o=i?i[n]:0;e[n]=s+o}};iu.prototype._unFilterType3=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=Math.floor((l+c)/2);e[o]=a+d}};iu.prototype._unFilterType4=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=o>n&&s?s[o-i]:0,u=Gne(l,c,d);e[o]=a+u}};iu.prototype._reverseFilterLine=function(r){let e=r[0],t,i=this._images[this._imageIndex],n=i.byteWidth;if(e===0)t=r.slice(1,n+1);else switch(t=Buffer.alloc(n),e){case 1:this._unFilterType1(r,t,n);break;case 2:this._unFilterType2(r,t,n);break;case 3:this._unFilterType3(r,t,n);break;case 4:this._unFilterType4(r,t,n);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(t),i.lineIndex++,i.lineIndex>=i.height?(this._lastLine=null,this._imageIndex++,i=this._images[this._imageIndex]):this._lastLine=t,i?this.read(i.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var A7=oe((zEe,f7)=>{"use strict";var zne=wt("util"),u7=Cb(),Jne=vb(),jne=f7.exports=function(r){u7.call(this);let e=[],t=this;this._filter=new Jne(r,{read:this.read.bind(this),write:function(i){e.push(i)},complete:function(){t.emit("complete",Buffer.concat(e))}}),this._filter.start()};zne.inherits(jne,u7)});var nu=oe((JEe,h7)=>{"use strict";h7.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Db=oe((jEe,g7)=>{"use strict";var kb=[];(function(){for(let r=0;r<256;r++){let e=r;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;kb[r]=e}})();var Sb=g7.exports=function(){this._crc=-1};Sb.prototype.write=function(r){for(let e=0;e<r.length;e++)this._crc=kb[(this._crc^r[e])&255]^this._crc>>>8;return!0};Sb.prototype.crc32=function(){return this._crc^-1};Sb.crc32=function(r){let e=-1;for(let t=0;t<r.length;t++)e=kb[(e^r[t])&255]^e>>>8;return e^-1}});var Qb=oe(($Ee,p7)=>{"use strict";var yr=nu(),$ne=Db(),Sr=p7.exports=function(r,e){this._options=r,r.checkCRC=r.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[yr.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[yr.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[yr.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[yr.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[yr.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[yr.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Sr.prototype.start=function(){this.read(yr.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Sr.prototype._parseSignature=function(r){let e=yr.PNG_SIGNATURE;for(let t=0;t<e.length;t++)if(r[t]!==e[t]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._parseChunkBegin=function(r){let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i="";for(let s=4;s<8;s++)i+=String.fromCharCode(r[s]);let n=!!(r[4]&32);if(!this._hasIHDR&&t!==yr.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new $ne,this._crc.write(Buffer.from(i)),this._chunks[t])return this._chunks[t](e);if(!n){this.error(new Error("Unsupported critical chunk type "+i));return}this.read(e+4,this._skipChunk.bind(this))};Sr.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Sr.prototype._parseChunkEnd=function(r){let e=r.readInt32BE(0),t=this._crc.crc32();if(this._options.checkCRC&&t!==e){this.error(new Error("Crc error - "+e+" - "+t));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._handleIHDR=function(r){this.read(r,this._parseIHDR.bind(this))};Sr.prototype._parseIHDR=function(r){this._crc.write(r);let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i=r[8],n=r[9],s=r[10],o=r[11],a=r[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(new Error("Unsupported bit depth "+i));return}if(!(n in yr.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(o!==0){this.error(new Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=n;let c=yr.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:t,depth:i,interlace:!!a,palette:!!(n&yr.COLORTYPE_PALETTE),color:!!(n&yr.COLORTYPE_COLOR),alpha:!!(n&yr.COLORTYPE_ALPHA),bpp:c,colorType:n}),this._handleChunkEnd()};Sr.prototype._handlePLTE=function(r){this.read(r,this._parsePLTE.bind(this))};Sr.prototype._parsePLTE=function(r){this._crc.write(r);let e=Math.floor(r.length/3);for(let t=0;t<e;t++)this._palette.push([r[t*3],r[t*3+1],r[t*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Sr.prototype._handleTRNS=function(r){this.simpleTransparency(),this.read(r,this._parseTRNS.bind(this))};Sr.prototype._parseTRNS=function(r){if(this._crc.write(r),this._colorType===yr.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(r.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<r.length;e++)this._palette[e][3]=r[e];this.palette(this._palette)}this._colorType===yr.COLORTYPE_GRAYSCALE&&this.transColor([r.readUInt16BE(0)]),this._colorType===yr.COLORTYPE_COLOR&&this.transColor([r.readUInt16BE(0),r.readUInt16BE(2),r.readUInt16BE(4)]),this._handleChunkEnd()};Sr.prototype._handleGAMA=function(r){this.read(r,this._parseGAMA.bind(this))};Sr.prototype._parseGAMA=function(r){this._crc.write(r),this.gamma(r.readUInt32BE(0)/yr.GAMMA_DIVISION),this._handleChunkEnd()};Sr.prototype._handleIDAT=function(r){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-r,this._parseIDAT.bind(this,r))};Sr.prototype._parseIDAT=function(r,e){if(this._crc.write(e),this._colorType===yr.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let t=r-e.length;t>0?this._handleIDAT(t):this._handleChunkEnd()};Sr.prototype._handleIEND=function(r){this.read(r,this._parseIEND.bind(this))};Sr.prototype._parseIEND=function(r){this._crc.write(r),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var _b=oe(y7=>{"use strict";var m7=Bb(),Vne=[function(){},function(r,e,t,i){if(i===e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=255},function(r,e,t,i){if(i+1>=e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=e[i+1]},function(r,e,t,i){if(i+2>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=255},function(r,e,t,i){if(i+3>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=e[i+3]}],Yne=[function(){},function(r,e,t,i){let n=e[0];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=i},function(r,e,t){let i=e[0];r[t]=i,r[t+1]=i,r[t+2]=i,r[t+3]=e[1]},function(r,e,t,i){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=i},function(r,e,t){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=e[3]}];function Wne(r,e){let t=[],i=0;function n(){if(i===r.length)throw new Error("Ran out of data");let s=r[i];i++;let o,a,c,l,d,u,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=r[i],i++,t.push((s<<8)+f);break;case 4:f=s&15,h=s>>4,t.push(h,f);break;case 2:d=s&3,u=s>>2&3,f=s>>4&3,h=s>>6&3,t.push(h,f,u,d);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,l=s>>3&1,d=s>>4&1,u=s>>5&1,f=s>>6&1,h=s>>7&1,t.push(h,f,u,d,l,c,a,o);break}}return{get:function(s){for(;t.length<s;)n();let o=t.slice(0,s);return t=t.slice(s),o},resetAfterLine:function(){t.length=0},end:function(){if(i!==r.length)throw new Error("extra data found")}}}function Xne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++)for(let d=0;d<o;d++){let u=t(d,l,c);Vne[i](e,n,u,s),s+=i}return s}function Zne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++){for(let d=0;d<o;d++){let u=n.get(i),f=t(d,l,c);Yne[i](e,u,f,s)}n.resetAfterLine()}}y7.dataToBitMap=function(r,e){let t=e.width,i=e.height,n=e.depth,s=e.bpp,o=e.interlace,a;n!==8&&(a=Wne(r,n));let c;n<=8?c=Buffer.alloc(t*i*4):c=new Uint16Array(t*i*4);let l=Math.pow(2,n)-1,d=0,u,f;if(o)u=m7.getImagePasses(t,i),f=m7.getInterlaceIterator(t,i);else{let h=0;f=function(){let g=h;return h+=4,g},u=[{width:t,height:i}]}for(let h=0;h<u.length;h++)n===8?d=Xne(u[h],c,f,s,r,d):Zne(u[h],c,f,s,a,l);if(n===8){if(d!==r.length)throw new Error("extra data found")}else a.end();return c}});var Fb=oe((YEe,I7)=>{"use strict";function ese(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=n[r[s]];if(!c)throw new Error("index "+r[s]+" not in palette");for(let l=0;l<4;l++)e[s+l]=c[l];s+=4}}function tse(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=!1;if(n.length===1?n[0]===r[s]&&(c=!0):n[0]===r[s]&&n[1]===r[s+1]&&n[2]===r[s+2]&&(c=!0),c)for(let l=0;l<4;l++)e[s+l]=0;s+=4}}function rse(r,e,t,i,n){let s=255,o=Math.pow(2,n)-1,a=0;for(let c=0;c<i;c++)for(let l=0;l<t;l++){for(let d=0;d<4;d++)e[a+d]=Math.floor(r[a+d]*s/o+.5);a+=4}}I7.exports=function(r,e){let t=e.depth,i=e.width,n=e.height,s=e.colorType,o=e.transColor,a=e.palette,c=r;return s===3?ese(r,c,i,n,a):(o&&tse(r,c,i,n,o),t!==8&&(t===16&&(c=Buffer.alloc(i*n*4)),rse(r,c,i,n,t))),c}});var C7=oe((WEe,x7)=>{"use strict";var ise=wt("util"),Pb=wt("zlib"),w7=Cb(),nse=A7(),sse=Qb(),ose=_b(),ase=Fb(),Is=x7.exports=function(r){w7.call(this),this._parser=new sse(r,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=r,this.writable=!0,this._parser.start()};ise.inherits(Is,w7);Is.prototype._handleError=function(r){this.emit("error",r),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Is.prototype._inflateData=function(r){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Pb.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,i=Math.max(t,Pb.Z_MIN_CHUNK);this._inflate=Pb.createInflate({chunkSize:i});let n=t,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){n&&s(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){n&&(a.length>n&&(a=a.slice(0,n)),n-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(r)};Is.prototype._handleMetaData=function(r){this._metaData=r,this._bitmapInfo=Object.create(r),this._filter=new nse(this._bitmapInfo)};Is.prototype._handleTransColor=function(r){this._bitmapInfo.transColor=r};Is.prototype._handlePalette=function(r){this._bitmapInfo.palette=r};Is.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Is.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Is.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Is.prototype._complete=function(r){if(this.errord)return;let e;try{let t=ose.dataToBitMap(r,this._bitmapInfo);e=ase(t,this._bitmapInfo),t=null}catch(t){this._handleError(t);return}this.emit("parsed",e)}});var B7=oe((XEe,E7)=>{"use strict";var gn=nu();E7.exports=function(r,e,t,i){let n=[gn.COLORTYPE_COLOR_ALPHA,gn.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&g)return r}let s=i.bitDepth!==16?r:new Uint16Array(r.buffer),o=255,a=gn.COLORTYPE_TO_BPP_MAP[i.inputColorType];a===4&&!i.inputHasAlpha&&(a=3);let c=gn.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(o=65535,c*=2);let l=Buffer.alloc(e*t*c),d=0,u=0,f=i.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let g,p,I,y=o;switch(i.inputColorType){case gn.COLORTYPE_COLOR_ALPHA:y=s[d+3],g=s[d],p=s[d+1],I=s[d+2];break;case gn.COLORTYPE_COLOR:g=s[d],p=s[d+1],I=s[d+2];break;case gn.COLORTYPE_ALPHA:y=s[d+1],g=s[d],p=g,I=g;break;case gn.COLORTYPE_GRAYSCALE:g=s[d],p=g,I=g;break;default:throw new Error("input color type:"+i.inputColorType+" is not supported at present")}return i.inputHasAlpha&&(n||(y/=o,g=Math.min(Math.max(Math.round((1-y)*f.red+y*g),0),o),p=Math.min(Math.max(Math.round((1-y)*f.green+y*p),0),o),I=Math.min(Math.max(Math.round((1-y)*f.blue+y*I),0),o))),{red:g,green:p,blue:I,alpha:y}}for(let g=0;g<t;g++)for(let p=0;p<e;p++){let I=h(s,d);switch(i.colorType){case gn.COLORTYPE_COLOR_ALPHA:case gn.COLORTYPE_COLOR:i.bitDepth===8?(l[u]=I.red,l[u+1]=I.green,l[u+2]=I.blue,n&&(l[u+3]=I.alpha)):(l.writeUInt16BE(I.red,u),l.writeUInt16BE(I.green,u+2),l.writeUInt16BE(I.blue,u+4),n&&l.writeUInt16BE(I.alpha,u+6));break;case gn.COLORTYPE_ALPHA:case gn.COLORTYPE_GRAYSCALE:{let y=(I.red+I.green+I.blue)/3;i.bitDepth===8?(l[u]=y,n&&(l[u+1]=I.alpha)):(l.writeUInt16BE(y,u),n&&l.writeUInt16BE(I.alpha,u+2));break}default:throw new Error("unrecognised color Type "+i.colorType)}d+=a,u+=c}return l}});var k7=oe((ZEe,v7)=>{"use strict";var b7=bb();function cse(r,e,t,i,n){for(let s=0;s<t;s++)i[n+s]=r[e+s]}function lse(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++)i+=Math.abs(r[s]);return i}function dse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=r[e+o]-a;i[n+o]=c}}function use(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=r[e+s]-o;n+=Math.abs(a)}return n}function fse(r,e,t,i,n){for(let s=0;s<t;s++){let o=e>0?r[e+s-t]:0,a=r[e+s]-o;i[n+s]=a}}function Ase(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++){let o=e>0?r[s-t]:0,a=r[s]-o;i+=Math.abs(a)}return i}function hse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=r[e+o]-(a+c>>1);i[n+o]=l}}function gse(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=r[e+s]-(o+a>>1);n+=Math.abs(c)}return n}function pse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=e>0&&o>=s?r[e+o-(t+s)]:0,d=r[e+o]-b7(a,c,l);i[n+o]=d}}function mse(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=e>0&&s>=i?r[e+s-(t+i)]:0,l=r[e+s]-b7(o,a,c);n+=Math.abs(l)}return n}var yse={0:cse,1:dse,2:fse,3:hse,4:pse},Ise={0:lse,1:use,2:Ase,3:gse,4:mse};v7.exports=function(r,e,t,i,n){let s;if(!("filterType"in i)||i.filterType===-1)s=[0,1,2,3,4];else if(typeof i.filterType=="number")s=[i.filterType];else throw new Error("unrecognised filter types");i.bitDepth===16&&(n*=2);let o=e*n,a=0,c=0,l=Buffer.alloc((o+1)*t),d=s[0];for(let u=0;u<t;u++){if(s.length>1){let f=1/0;for(let h=0;h<s.length;h++){let g=Ise[s[h]](r,c,o,n);g<f&&(d=s[h],f=g)}}l[a]=d,a++,yse[d](r,c,o,l,a,n),a+=o,c+=o}return l}});var Tb=oe((eBe,S7)=>{"use strict";var Zr=nu(),wse=Db(),xse=B7(),Cse=k7(),Ese=wt("zlib"),Ma=S7.exports=function(r){if(this._options=r,r.deflateChunkSize=r.deflateChunkSize||32*1024,r.deflateLevel=r.deflateLevel!=null?r.deflateLevel:9,r.deflateStrategy=r.deflateStrategy!=null?r.deflateStrategy:3,r.inputHasAlpha=r.inputHasAlpha!=null?r.inputHasAlpha:!0,r.deflateFactory=r.deflateFactory||Ese.createDeflate,r.bitDepth=r.bitDepth||8,r.colorType=typeof r.colorType=="number"?r.colorType:Zr.COLORTYPE_COLOR_ALPHA,r.inputColorType=typeof r.inputColorType=="number"?r.inputColorType:Zr.COLORTYPE_COLOR_ALPHA,[Zr.COLORTYPE_GRAYSCALE,Zr.COLORTYPE_COLOR,Zr.COLORTYPE_COLOR_ALPHA,Zr.COLORTYPE_ALPHA].indexOf(r.colorType)===-1)throw new Error("option color type:"+r.colorType+" is not supported at present");if([Zr.COLORTYPE_GRAYSCALE,Zr.COLORTYPE_COLOR,Zr.COLORTYPE_COLOR_ALPHA,Zr.COLORTYPE_ALPHA].indexOf(r.inputColorType)===-1)throw new Error("option input color type:"+r.inputColorType+" is not supported at present");if(r.bitDepth!==8&&r.bitDepth!==16)throw new Error("option bit depth:"+r.bitDepth+" is not supported at present")};Ma.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ma.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ma.prototype.filterData=function(r,e,t){let i=xse(r,e,t,this._options),n=Zr.COLORTYPE_TO_BPP_MAP[this._options.colorType];return Cse(i,e,t,this._options,n)};Ma.prototype._packChunk=function(r,e){let t=e?e.length:0,i=Buffer.alloc(t+12);return i.writeUInt32BE(t,0),i.writeUInt32BE(r,4),e&&e.copy(i,8),i.writeInt32BE(wse.crc32(i.slice(4,i.length-4)),i.length-4),i};Ma.prototype.packGAMA=function(r){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(r*Zr.GAMMA_DIVISION),0),this._packChunk(Zr.TYPE_gAMA,e)};Ma.prototype.packIHDR=function(r,e){let t=Buffer.alloc(13);return t.writeUInt32BE(r,0),t.writeUInt32BE(e,4),t[8]=this._options.bitDepth,t[9]=this._options.colorType,t[10]=0,t[11]=0,t[12]=0,this._packChunk(Zr.TYPE_IHDR,t)};Ma.prototype.packIDAT=function(r){return this._packChunk(Zr.TYPE_IDAT,r)};Ma.prototype.packIEND=function(){return this._packChunk(Zr.TYPE_IEND,null)}});var F7=oe((tBe,_7)=>{"use strict";var Bse=wt("util"),D7=wt("stream"),bse=nu(),vse=Tb(),Q7=_7.exports=function(r){D7.call(this);let e=r||{};this._packer=new vse(e),this._deflate=this._packer.createDeflate(),this.readable=!0};Bse.inherits(Q7,D7);Q7.prototype.pack=function(r,e,t,i){this.emit("data",Buffer.from(bse.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,t)),i&&this.emit("data",this._packer.packGAMA(i));let n=this._packer.filterData(r,e,t);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(n)}});var q7=oe((JA,N7)=>{"use strict";var P7=wt("assert").ok,su=wt("zlib"),kse=wt("util"),T7=wt("buffer").kMaxLength;function rl(r){if(!(this instanceof rl))return new rl(r);r&&r.chunkSize<su.Z_MIN_CHUNK&&(r.chunkSize=su.Z_MIN_CHUNK),su.Inflate.call(this,r),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,r&&r.maxLength!=null&&(this._maxLength=r.maxLength)}function Sse(r){return new rl(r)}function U7(r,e){e&&process.nextTick(e),r._handle&&(r._handle.close(),r._handle=null)}rl.prototype._processChunk=function(r,e,t){if(typeof t=="function")return su.Inflate._processChunk.call(this,r,e,t);let i=this,n=r&&r.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],l=0,d;this.on("error",function(g){d=g});function u(g,p){if(i._hadError)return;let I=s-p;if(P7(I>=0,"have should not go down"),I>0){let y=i._buffer.slice(i._offset,i._offset+I);if(i._offset+=I,y.length>o&&(y=y.slice(0,o)),c.push(y),l+=y.length,o-=y.length,o===0)return!1}return(p===0||i._offset>=i._chunkSize)&&(s=i._chunkSize,i._offset=0,i._buffer=Buffer.allocUnsafe(i._chunkSize)),p===0?(a+=n-g,n=g,!0):!1}P7(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,r,a,n,this._buffer,this._offset,s),f=f||this._writeState;while(!this._hadError&&u(f[0],f[1]));if(this._hadError)throw d;if(l>=T7)throw U7(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+T7.toString(16)+" bytes");let h=Buffer.concat(c,l);return U7(this),h};kse.inherits(rl,su.Inflate);function Dse(r,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let t=r._finishFlushFlag;return t==null&&(t=su.Z_FINISH),r._processChunk(e,t)}function R7(r,e){return Dse(new rl(e),r)}N7.exports=JA=R7;JA.Inflate=rl;JA.createInflate=Sse;JA.inflateSync=R7});var Ub=oe((rBe,M7)=>{"use strict";var O7=M7.exports=function(r){this._buffer=r,this._reads=[]};O7.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e})};O7.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let r=this._reads[0];if(this._buffer.length&&(this._buffer.length>=r.length||r.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(r.length),r.func.call(this,e.slice(0,r.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var H7=oe(L7=>{"use strict";var Qse=Ub(),_se=vb();L7.process=function(r,e){let t=[],i=new Qse(r);return new _se(e,{read:i.read.bind(i),write:function(s){t.push(s)},complete:function(){}}).start(),i.process(),Buffer.concat(t)}});var J7=oe((nBe,z7)=>{"use strict";var K7=!0,G7=wt("zlib"),Fse=q7();G7.deflateSync||(K7=!1);var Pse=Ub(),Tse=H7(),Use=Qb(),Rse=_b(),Nse=Fb();z7.exports=function(r,e){if(!K7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t;function i(b){t=b}let n;function s(b){n=b}function o(b){n.transColor=b}function a(b){n.palette=b}function c(){n.alpha=!0}let l;function d(b){l=b}let u=[];function f(b){u.push(b)}let h=new Pse(r);if(new Use(e,{read:h.read.bind(h),error:i,metadata:s,gamma:d,palette:a,transColor:o,inflateData:f,simpleTransparency:c}).start(),h.process(),t)throw t;let p=Buffer.concat(u);u.length=0;let I;if(n.interlace)I=G7.inflateSync(p);else{let x=((n.width*n.bpp*n.depth+7>>3)+1)*n.height;I=Fse(p,{chunkSize:x,maxLength:x})}if(p=null,!I||!I.length)throw new Error("bad png - invalid inflate data response");let y=Tse.process(I,n);p=null;let w=Rse.dataToBitMap(y,n);y=null;let C=Nse(w,n);return n.data=C,n.gamma=l||0,n}});var Y7=oe((sBe,V7)=>{"use strict";var j7=!0,$7=wt("zlib");$7.deflateSync||(j7=!1);var qse=nu(),Ose=Tb();V7.exports=function(r,e){if(!j7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t=e||{},i=new Ose(t),n=[];n.push(Buffer.from(qse.PNG_SIGNATURE)),n.push(i.packIHDR(r.width,r.height)),r.gamma&&n.push(i.packGAMA(r.gamma));let s=i.filterData(r.data,r.width,r.height),o=$7.deflateSync(s,i.getDeflateOptions());if(s=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return n.push(i.packIDAT(o)),n.push(i.packIEND()),Buffer.concat(n)}});var W7=oe(Rb=>{"use strict";var Mse=J7(),Lse=Y7();Rb.read=function(r,e){return Mse(r,e||{})};Rb.write=function(r,e){return Lse(r,e)}});var eq=oe(Z7=>{"use strict";var Hse=wt("util"),X7=wt("stream"),Kse=C7(),Gse=F7(),zse=W7(),fi=Z7.PNG=function(r){X7.call(this),r=r||{},this.width=r.width|0,this.height=r.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,r.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Kse(r),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new Gse(r),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Hse.inherits(fi,X7);fi.sync=zse;fi.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};fi.prototype.parse=function(r,e){if(e){let t,i;t=function(n){this.removeListener("error",i),this.data=n,e(null,this)}.bind(this),i=function(n){this.removeListener("parsed",t),e(n,null)}.bind(this),this.once("parsed",t),this.once("error",i)}return this.end(r),this};fi.prototype.write=function(r){return this._parser.write(r),!0};fi.prototype.end=function(r){this._parser.end(r)};fi.prototype._metadata=function(r){this.width=r.width,this.height=r.height,this.emit("metadata",r)};fi.prototype._gamma=function(r){this.gamma=r};fi.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};fi.bitblt=function(r,e,t,i,n,s,o,a){if(t|=0,i|=0,n|=0,s|=0,o|=0,a|=0,t>r.width||i>r.height||t+n>r.width||i+s>r.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+n>e.width||a+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)r.data.copy(e.data,(a+c)*e.width+o<<2,(i+c)*r.width+t<<2,(i+c)*r.width+t+n<<2)};fi.prototype.bitblt=function(r,e,t,i,n,s,o){return fi.bitblt(this,r,e,t,i,n,s,o),this};fi.adjustGamma=function(r){if(r.gamma){for(let e=0;e<r.height;e++)for(let t=0;t<r.width;t++){let i=r.width*e+t<<2;for(let n=0;n<3;n++){let s=r.data[i+n]/255;s=Math.pow(s,1/2.2/r.gamma),r.data[i+n]=Math.round(s*255)}}r.gamma=0}};fi.prototype.adjustGamma=function(){fi.adjustGamma(this)}});var jA=oe(il=>{function tq(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(i){return[i,i]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}il.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:tq(e.color.dark||"#000000ff"),light:tq(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};il.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};il.getImageWidth=function(e,t){let i=il.getScale(e,t);return Math.floor((e+t.margin*2)*i)};il.qrToImageData=function(e,t,i){let n=t.modules.size,s=t.modules.data,o=il.getScale(n,i),a=Math.floor((n+i.margin*2)*o),c=i.margin*o,l=[i.color.light,i.color.dark];for(let d=0;d<a;d++)for(let u=0;u<a;u++){let f=(d*a+u)*4,h=i.color.light;if(d>=c&&u>=c&&d<a-c&&u<a-c){let g=Math.floor((d-c)/o),p=Math.floor((u-c)/o);h=l[s[g*n+p]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var rq=oe(ws=>{var Jse=wt("fs"),jse=eq().PNG,Nb=jA();ws.render=function(e,t){let i=Nb.getOptions(t),n=i.rendererOpts,s=Nb.getImageWidth(e.modules.size,i);n.width=s,n.height=s;let o=new jse(n);return Nb.qrToImageData(o.data,e,i),o};ws.renderToDataURL=function(e,t,i){typeof i>"u"&&(i=t,t=void 0),ws.renderToBuffer(e,t,function(n,s){n&&i(n);let o="data:image/png;base64,";o+=s.toString("base64"),i(null,o)})};ws.renderToBuffer=function(e,t,i){typeof i>"u"&&(i=t,t=void 0);let n=ws.render(e,t),s=[];n.on("error",i),n.on("data",function(o){s.push(o)}),n.on("end",function(){i(null,Buffer.concat(s))}),n.pack()};ws.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=!1,o=(...c)=>{s||(s=!0,n.apply(null,c))},a=Jse.createWriteStream(e);a.on("error",o),a.on("close",o),ws.renderToFileStream(a,t,i)};ws.renderToFileStream=function(e,t,i){ws.render(t,i).pack().pipe(e)}});var iq=oe(_w=>{var $se=jA(),Vse={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Yse={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Wse(r,e,t){return r&&e?t.BB:r&&!e?t.BW:!r&&e?t.WB:t.WW}_w.render=function(r,e,t){let i=$se.getOptions(e),n=Vse;(i.color.dark.hex==="#ffffff"||i.color.light.hex==="#000000")&&(n=Yse);let s=r.modules.size,o=r.modules.data,a="",c=Array(s+i.margin*2+1).join(n.WW);c=Array(i.margin/2+1).join(c+` -`);let l=Array(i.margin+1).join(n.WW);a+=c;for(let d=0;d<s;d+=2){a+=l;for(let u=0;u<s;u++){let f=o[d*s+u],h=o[(d+1)*s+u];a+=Wse(f,h,n)}a+=l+` -`}return a+=c.slice(0,-1),typeof t=="function"&&t(null,a),a};_w.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),o=_w.render(t,i);s.writeFile(e,o,n)}});var sq=oe(nq=>{nq.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s="\x1B[40m \x1B[0m",o="\x1B[47m \x1B[0m",a="",c=Array(i+3).join(o),l=Array(2).join(o);a+=c+` -`;for(let d=0;d<i;++d){a+=o;for(let u=0;u<i;u++)a+=n[d*i+u]?s:o;a+=l+` -`}return a+=c+` -`,typeof t=="function"&&t(null,a),a}});var lq=oe(cq=>{var Xse="\x1B[47m",Zse="\x1B[40m",qb="\x1B[37m",Ob="\x1B[30m",nl="\x1B[0m",eoe=Xse+Ob,toe=Zse+qb,roe=function(r,e,t){return{"00":nl+" "+r,"01":nl+e+"\u2584"+r,"02":nl+t+"\u2584"+r,10:nl+e+"\u2580"+r,11:" ",12:"\u2584",20:nl+t+"\u2580"+r,21:"\u2580",22:"\u2588"}},oq=function(r,e,t,i){let n=e+1;if(t>=n||i>=n||i<-1||t<-1)return"0";if(t>=e||i>=e||i<0||t<0)return"1";let s=i*e+t;return r[s]?"2":"1"},aq=function(r,e,t,i){return oq(r,e,t,i)+oq(r,e,t,i+1)};cq.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s=!!(e&&e.inverse),o=e&&e.inverse?toe:eoe,l=roe(o,s?Ob:qb,s?qb:Ob),d=nl+` -`+o,u=o;for(let f=-1;f<i+1;f+=2){for(let h=-1;h<i;h++)u+=l[aq(n,i,h,f)];u+=l[aq(n,i,i,f)]+d}return u+=nl,typeof t=="function"&&t(null,u),u}});var uq=oe(dq=>{var ioe=sq(),noe=lq();dq.render=function(r,e,t){return e&&e.small?noe.render(r,e,t):ioe.render(r,e,t)}});var Lb=oe(Aq=>{var soe=jA();function fq(r,e){let t=r.a/255,i=e+'="'+r.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function Mb(r,e,t){let i=r+e;return typeof t<"u"&&(i+=" "+t),i}function ooe(r,e,t){let i="",n=0,s=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),l=Math.floor(a/e);!c&&!s&&(s=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(i+=s?Mb("M",c+t,.5+l+t):Mb("m",n,0),n=0,s=!1),c+1<e&&r[a+1]||(i+=Mb("h",o),o=0)):n++}return i}Aq.render=function(e,t,i){let n=soe.getOptions(t),s=e.modules.size,o=e.modules.data,a=s+n.margin*2,c=n.color.light.a?"<path "+fq(n.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+fq(n.color.dark,"stroke")+' d="'+ooe(o,s,n.margin)+'"/>',d='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(n.width?'width="'+n.width+'" height="'+n.width+'" ':"")+d+' shape-rendering="crispEdges">'+c+l+`</svg> -`;return typeof i=="function"&&i(null,f),f}});var hq=oe(Fw=>{var aoe=Lb();Fw.render=aoe.render;Fw.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),a='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Fw.render(t,i);s.writeFile(e,a,n)}});var gq=oe(Pw=>{var Hb=jA();function coe(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function loe(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Pw.render=function(e,t,i){let n=i,s=t;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),t||(s=loe()),n=Hb.getOptions(n);let o=Hb.getImageWidth(e.modules.size,n),a=s.getContext("2d"),c=a.createImageData(o,o);return Hb.qrToImageData(c.data,e,n),coe(a,s,o),a.putImageData(c,0,0),s};Pw.renderToDataURL=function(e,t,i){let n=i;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),n||(n={});let s=Pw.render(e,t,n),o=n.type||"image/png",a=n.rendererOpts||{};return s.toDataURL(o,a.quality)}});var mq=oe($A=>{var doe=rb(),Kb=xb(),pq=gq(),uoe=Lb();function Gb(r,e,t,i,n){let s=[].slice.call(arguments,1),o=s.length,a=typeof s[o-1]=="function";if(!a&&!doe())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(n=t,t=e,e=i=void 0):o===3&&(e.getContext&&typeof n>"u"?(n=i,i=void 0):(n=i,i=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=i=void 0):o===2&&!e.getContext&&(i=t,t=e,e=void 0),new Promise(function(c,l){try{let d=Kb.create(t,i);c(r(d,e,i))}catch(d){l(d)}})}try{let c=Kb.create(t,i);n(null,r(c,e,i))}catch(c){n(c)}}$A.create=Kb.create;$A.toCanvas=Gb.bind(null,pq.render);$A.toDataURL=Gb.bind(null,pq.renderToDataURL);$A.toString=Gb.bind(null,function(r,e,t){return uoe.render(r,t)})});var xq=oe(La=>{var yq=rb(),zb=xb(),foe=rq(),Iq=iq(),Aoe=uq(),wq=hq();function VA(r,e,t){if(typeof r>"u")throw new Error("String required as first argument");if(typeof t>"u"&&(t=e,e={}),typeof t!="function")if(yq())e=t||{},t=null;else throw new Error("Callback required as last argument");return{opts:e,cb:t}}function hoe(r){return r.slice((r.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Tw(r){switch(r){case"svg":return wq;case"txt":case"utf8":return Iq;default:return foe}}function goe(r){switch(r){case"svg":return wq;case"terminal":return Aoe;default:return Iq}}function YA(r,e,t){if(!t.cb)return new Promise(function(i,n){try{let s=zb.create(e,t.opts);return r(s,t.opts,function(o,a){return o?n(o):i(a)})}catch(s){n(s)}});try{let i=zb.create(e,t.opts);return r(i,t.opts,t.cb)}catch(i){t.cb(i)}}La.create=zb.create;La.toCanvas=mq().toCanvas;La.toString=function(e,t,i){let n=VA(e,t,i),s=n.opts?n.opts.type:void 0,o=goe(s);return YA(o.render,e,n)};La.toDataURL=function(e,t,i){let n=VA(e,t,i),s=Tw(n.opts.type);return YA(s.renderToDataURL,e,n)};La.toBuffer=function(e,t,i){let n=VA(e,t,i),s=Tw(n.opts.type);return YA(s.renderToBuffer,e,n)};La.toFile=function(e,t,i,n){if(typeof e!="string"||!(typeof t=="string"||typeof t=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!yq())throw new Error("Too few arguments provided");let s=VA(t,i,n),o=s.opts.type||hoe(e),c=Tw(o).renderToFile.bind(null,e);return YA(c,t,s)};La.toFileStream=function(e,t,i){if(arguments.length<2)throw new Error("Too few arguments provided");let n=VA(t,i,e.emit.bind(e,"error")),o=Tw("png").renderToFileStream.bind(null,e);YA(o,t,n)}});var Eq=oe((IBe,Cq)=>{Cq.exports=xq()});function poe(r,e){try{return WA.authenticator.options={window:1},WA.authenticator.verify({token:r,secret:e})}catch(t){return console.error("[TOTP] Verification error:",t),!1}}function bq(){return WA.authenticator.generateSecret()}async function Jb(r,e){return poe(e,r)}function vq(r,e,t="OpenList"){return WA.authenticator.keyuri(e,t,r)}async function kq(r){return Bq.default.toDataURL(r)}var WA,Bq,Sq=j(()=>{"use strict";WA=Qr(h9(),1),Bq=Qr(Eq(),1)});function moe(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function Dq(r){let e=String(r||"").replace(/[\s\r\n]/g,"").replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4,i=t?e+"=".repeat(4-t):e;try{let n=atob(i),s=new Uint8Array(n.length);for(let o=0;o<n.length;o++)s[o]=n.charCodeAt(o);return s}catch{return null}}function jb(r){let e=String(r||"").trim().split(/\s+/);if(e.length<2)return null;let t=e[0];if(!yoe.includes(t))return null;let i=Dq(e[1]);return!i||i.length<16?null:{type:t,blobBase64:e[1].replace(/[\s\r\n]/g,""),comment:e.slice(2).join(" ")||""}}async function Qq(r){let e=jb(r);if(!e)return null;let t=Dq(e.blobBase64);if(!t)return null;let i=await crypto.subtle.digest("SHA-256",t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),n=new Uint8Array(i);return"SHA256:"+moe(n).replace(/=+$/,"")}function _q(){let r=globalThis;return typeof r.crypto?.randomUUID=="function"?r.crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}var yoe,Fq=j(()=>{"use strict";yoe=["ssh-rsa","ssh-dss","ssh-ed25519","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","sk-ssh-ed25519@openssh.com","sk-ecdsa-sha2-nistp256@openssh.com","sk-ssh-ed25519@openssh.com.webauthn","sk-ecdsa-sha2-nistp256@openssh.com.webauthn"]});async function ou(r,e){let i=((await ne(e)).users||[]).find(n=>n.id===r);return i?i.ssh_keys||[]:[]}async function Pq(r,e,t,i){let n=jb(e);if(!n)throw new Error("Invalid OpenSSH public key format");let s=await Qq(e);if(!s)throw new Error("Failed to compute SSH key fingerprint");let o=await ne(i),a=(o.users||[]).find(l=>l.id===r);if(!a)throw new Error("User not found");if(Array.isArray(a.ssh_keys)||(a.ssh_keys=[]),a.ssh_keys.some(l=>l.fingerprint===s))throw new Error("SSH key with this fingerprint already exists");let c={id:_q(),name:(t||n.comment||n.type).slice(0,64),public_key:e.trim(),fingerprint:s,created_at:new Date().toISOString()};return a.ssh_keys.push(c),await fe(o,i),c}async function Uw(r,e,t){let i=await ne(t),n=(i.users||[]).find(o=>o.id===r);if(!n||!Array.isArray(n.ssh_keys))return!1;let s=n.ssh_keys.length;return n.ssh_keys=n.ssh_keys.filter(o=>o.id!==e),n.ssh_keys.length!==s?(await fe(i,t),!0):!1}var $b=j(()=>{"use strict";Ve();Fq()});async function Tq(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Rw(r){return Tq(`${r}-${Ioe}`)}async function Nw(r,e){return Tq(`${r}-${e}`)}async function woe(r,e){return Nw(await Rw(r),e)}function Vb(r=16){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);crypto.getRandomValues(t);let i="";for(let n=0;n<r;n++)i+=e[t[n]%e.length];return i}function qw(r){return/^[0-9a-f]{64}$/i.test(String(r||""))}async function Fi(r,e){r.salt=Vb(),r.password=await woe(e,r.salt),r.pwd_update_at=new Date().toISOString()}var Ioe,XA=j(()=>{"use strict";Ioe="https://github.com/alist-org/alist"});var Uq=j(()=>{Cx()});function xoe(r=32){let e=new Uint8Array(r);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Yb(r,e={}){let t={...Rq,...e},i=xoe();return qq(r,t.cookieName,i,{maxAge:t.maxAge,...t.cookieOptions}),i}function Nq(r,e={}){let t={...Rq,...e};qq(r,t.cookieName,"",{maxAge:0,...t.cookieOptions})}function qq(r,e,t,i={}){let n=[`${e}=${encodeURIComponent(t)}`];i.maxAge!==void 0&&n.push(`Max-Age=${i.maxAge}`),i.httpOnly&&n.push("HttpOnly"),i.secure&&n.push("Secure"),i.sameSite&&n.push(`SameSite=${i.sameSite}`),i.path&&n.push(`Path=${i.path}`),r.header("Set-Cookie",n.join("; "))}var Rq,Oq=j(()=>{"use strict";Uq();Rq={cookieName:"csrf_token",headerName:"x-csrf-token",maxAge:3600,cookieOptions:{httpOnly:!0,secure:!0,sameSite:"strict",path:"/"}}});function Coe(){return`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}function Eoe(r){let e=r.get?.("user"),t=r.req.header("cf-connecting-ip")||r.req.header("x-forwarded-for")||r.req.header("x-real-ip")||"unknown",i=r.req.header("user-agent")||"unknown";return{user_id:e?.id,username:e?.username,ip_address:t,user_agent:i}}function au(){if(!Wb){let r=new Zb(1e4);Wb=new Xb(r)}return Wb}var Xb,Zb,Wb,Mq=j(()=>{"use strict";Xb=class{storage;constructor(e){this.storage=e}async log(e,t,i,n,s,o={}){let a=Eoe(e),c={id:Coe(),timestamp:new Date().toISOString(),level:t,category:i,action:n,message:s,success:o.success??!0,...a,resource_type:o.resource_type,resource_id:o.resource_id,resource_name:o.resource_name,details:o.details,error_message:o.error_message};try{await this.storage.write(c)}catch(l){console.error("[AuditLog] Failed to write log:",l)}}async logLoginSuccess(e,t){await this.log(e,"info","auth","login",`User ${t} logged in successfully`,{success:!0})}async logLoginFailure(e,t,i){await this.log(e,"warn","auth","login_failed",`Failed login attempt for user ${t}`,{success:!1,error_message:i})}async logLogout(e){await this.log(e,"info","auth","logout","User logged out",{success:!0})}async logFileUpload(e,t,i){await this.log(e,"info","file","upload",`Uploaded file: ${t}`,{success:!0,resource_type:"file",resource_name:t,details:{file_size:i}})}async logFileDelete(e,t,i){await this.log(e,i?"critical":"error","file","delete",`Deleted file: ${t}`,{success:i,resource_type:"file",resource_name:t})}async logPermissionChange(e,t,i,n){await this.log(e,"critical","permission","update_permission",`Changed permission for user ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{old_role:i,new_role:n}})}async logUserCreate(e,t,i){await this.log(e,"info","user","create",`Created user: ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{role:i}})}async logUserDelete(e,t){await this.log(e,"critical","user","delete",`Deleted user: ${t}`,{success:!0,resource_type:"user",resource_name:t})}async query(e){return this.storage.query(e)}async count(e){return this.storage.count(e)}},Zb=class{logs=[];maxSize;constructor(e=1e4){this.maxSize=e}async write(e){this.logs.push(e),this.logs.length>this.maxSize&&this.logs.shift()}async query(e){let t=this.logs;e.start_time&&(t=t.filter(s=>s.timestamp>=e.start_time)),e.end_time&&(t=t.filter(s=>s.timestamp<=e.end_time)),e.level&&(t=t.filter(s=>s.level===e.level)),e.category&&(t=t.filter(s=>s.category===e.category)),e.user_id&&(t=t.filter(s=>s.user_id===e.user_id)),e.username&&(t=t.filter(s=>s.username===e.username)),e.action&&(t=t.filter(s=>s.action===e.action)),e.resource_type&&(t=t.filter(s=>s.resource_type===e.resource_type)),e.resource_id&&(t=t.filter(s=>s.resource_id===e.resource_id)),e.success!==void 0&&(t=t.filter(s=>s.success===e.success)),t=t.sort((s,o)=>new Date(o.timestamp).getTime()-new Date(s.timestamp).getTime());let i=e.offset||0,n=e.limit||100;return t.slice(i,i+n)}async count(e){return(await this.query({...e,limit:Number.MAX_SAFE_INTEGER})).length}clear(){this.logs=[]}},Wb=null});var $q={};xn($q,{authRouter:()=>pn,authUserFromReq:()=>Nn,generateRandomPassword:()=>du,getOrInitUsers:()=>ZA,hashPasswordSHA256:()=>Doe,logoutHandler:()=>uu,meHandler:()=>Mw,meRouter:()=>cu,meUpdateHandler:()=>Ow,verifyUserPassword:()=>lu,verifyUserStaticHash:()=>rv});function koe(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function ev(r,e){return`${koe(r)}|${String(e||"").toLowerCase()}`}function tv(r){return`__global__|${String(r||"").toLowerCase()}`}function Soe(r){let e=voe,t=Math.pow(2,Math.floor(r/5));return Math.min(e*t,Hq)}async function Lq(r,e,t){let i=Date.now(),n=xs.get(r)||{count:0,lockedUntil:0,attempts:0};try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=null;try{c=await o.binding.get(a,"text")}catch{c=await o.binding.get(a)}if(c&&typeof c.text=="function"&&(c=await c.text()),c)try{n=JSON.parse(String(c))}catch{}}}catch{}if(!(n.lockedUntil>i)){if(n.count+=1,n.attempts+=1,n.count>=e){let s=Soe(n.attempts);n.lockedUntil=i+s,n.count=0,console.warn(`[Auth] Login attempts exceeded for ${r}. Locked for ${Math.round(s/6e4)} minutes (attempt #${n.attempts}).`)}xs.set(r,n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=JSON.stringify(n),l=Math.ceil((Hq+36e5)/1e3);typeof o.binding.put=="function"&&await o.binding.put(a,c,{expirationTtl:l})}}catch(s){console.warn("[Auth] Failed to persist login failure to KV:",s)}}}async function Kq(r,e,t){if(xs.size>1e4){let c=Date.now();for(let[l,d]of xs)d.lockedUntil<c&&d.count===0&&xs.delete(l)}let i=Date.now(),n=ev(r,e),s=tv(e),o=xs.get(n),a=xs.get(s);try{let{getKvBinding:c}=await Promise.resolve().then(()=>(Ve(),Gr)),l=await c(t);if(l.mode!=="none"&&l.binding)for(let d of[n,s]){let u=`login_fail:${d}`,f=null;try{f=await l.binding.get(u,"text")}catch{f=await l.binding.get(u)}if(f&&typeof f.text=="function"&&(f=await f.text()),f)try{let h=JSON.parse(String(f));d===n&&(o=h),d===s&&(a=h),xs.set(d,h)}catch{}}}catch{}return!!(o&&o.lockedUntil>i||a&&a.lockedUntil>i)}async function Gq(r,e,t){await Lq(ev(r,e),Boe,t),await Lq(tv(e),boe,t)}async function zq(r,e,t){let i=ev(r,e),n=tv(e);xs.delete(i),xs.delete(n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding)for(let a of[i,n]){let c=`login_fail:${a}`;typeof o.binding.delete=="function"&&await o.binding.delete(c)}}catch(s){console.warn("[Auth] Failed to clear login failures from KV:",s)}}async function Doe(r){return Rw(r)}async function rv(r,e){let t=String(r?.password||"").trim().toLowerCase(),i=String(e||"").trim().toLowerCase();if(!t||!qw(i)||!qw(t))return!1;if(r?.salt){let n=(await Nw(i,String(r.salt))).toLowerCase();return t===n}return t===i}async function lu(r,e){return String(r?.password||"").trim()?rv(r,await Rw(e)):!1}function du(){let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function Jq(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function ZA(r){let e=await ne(r);if(!e.users||e.users.length===0){let t=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"",i={id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};if(t){let s={id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await Fi(s,t),e.users=[s,i]}else e.users=[i];await fe(e,r)||console.warn("[Auth] getOrInitUsers: skipped persisting an uninitialized placeholder DB (expected until POST /api/public/init/setup completes).")}else{let t=e.users.find(s=>s.role===2),i=t?String(t.password||"").trim():"",n=/^[0-9a-f]{64}$/i.test(i);if(t&&!n){let s=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"";s?(await Fi(t,s),await fe(e,r)):console.warn(i?"[SECURITY] Admin password uses a legacy hash format this build cannot verify; it has been left untouched. Log in with your existing password and re-set it, or set ADMIN_PASS to force a reset. It will NOT be reset to a default value.":"[SECURITY] Admin password is empty and no ADMIN_PASS is set \u2014 the system is NOT initialized. Open the site in a browser to run the setup wizard, or set ADMIN_PASS to initialize automatically.")}}return{db:e,users:e.users}}async function Nn(r){let e=r.req.header("Authorization");if(!e)return null;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256");if(await YI(n?.jti,r.env))return null;let s=await ne(r.env);s.users||(s.users=[]);let o=s.users.find(a=>a.id===n.id||a.username===n.username);return o?{db:s,user:o}:null}catch{return null}}async function jq(r,e){if(!r.otp_secret)return{ok:!0,code:200,httpStatus:200,message:"ok"};let t=String(e.otp_code||e.code||"").trim();return t?await Jb(r.otp_secret,t)?{ok:!0,code:200,httpStatus:200,message:"ok"}:{ok:!1,code:401,httpStatus:401,message:"Invalid OTP code"}:{ok:!1,code:402,httpStatus:200,message:"OTP code required"}}var pn,cu,Boe,boe,voe,Hq,xs,Ow,Mw,uu,sl=j(()=>{"use strict";wr();Ao();Ve();Qi();Sq();$b();XA();Oq();Mq();pn=new Xe,cu=new Xe,Boe=5,boe=20,voe=900*1e3,Hq=1440*60*1e3,xs=new Map;pn.post("/login",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=e.password||"";if(await Kq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await ZA(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&await lu(o,i)){let l=String(o.password||"").trim();(/^\$2[aby]\$/.test(l)||!o.salt&&qw(l))&&(console.log(`[Auth] Upgrading password hash for user: ${t}`),await Fi(o,i),await fe(s,r.env));let u=await jq(o,e);if(!u.ok)return r.json({code:u.code,message:u.message,data:null},u.httpStatus);await zq(r,t,r.env);let f={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:Jq()},h=await kr(r),g=await fo(f,h),p=Yb(r);return await au().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:g,csrf_token:p}})}return await au().logLoginFailure(r,t,"Invalid credentials"),await Gq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});pn.post("/login/hash",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=String(e.password||"").trim().toLowerCase();if(await Kq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await ZA(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&i.length===64&&await rv(o,i)){o.salt||(console.log(`[Auth] Upgrading password hash for user: ${t}`),o.salt=Vb(),o.password=await Nw(i,o.salt),o.pwd_update_at=new Date().toISOString(),await fe(s,r.env));let l=await jq(o,e);if(!l.ok)return r.json({code:l.code,message:l.message,data:null},l.httpStatus);await zq(r,t,r.env);let d={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:Jq()},u=await kr(r),f=await fo(d,u),h=Yb(r);return await au().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:f,csrf_token:h}})}return await au().logLoginFailure(r,t,"Invalid credentials"),await Gq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});Ow=async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({}));if(n.username&&n.username.trim()!==""){let s=n.username.trim();if(t.users.some(a=>a.id!==i.id&&a.username===s))return r.json({code:400,message:"Username already exists",data:null},400);i.username=s}return n.password&&n.password.trim()!==""&&await Fi(i,n.password.trim()),await fe(t,r.env),r.json({code:200,message:"success",data:null})},Mw=async r=>{let e=await Me(r);return!e||e.disabled?r.json({code:401,message:"Unauthorized",data:null},401):r.json({code:200,message:"success",data:{id:e.id,username:e.username,role:e.role,permission:e.permission??0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,otp:!!e.otp_secret}})};pn.get("/me",Mw);pn.post("/me/update",Ow);uu=async r=>{let e=r.req.header("Authorization");if(e){let i=e.startsWith("Bearer ")?e.substring(7):e;try{let n=await kr(r),s=await uo(i,n,"HS256");s?.jti&&await a2(s.jti,s.exp,r.env)}catch{}}return Nq(r),await au().logLogout(r),r.json({code:200,message:"success",data:null})};pn.get("/logout",uu);pn.post("/logout",uu);pn.get("/csrf",async r=>{try{let e=await l2(r);return r.json({code:200,message:"success",data:{csrf_token:e}})}catch{return r.json({code:500,message:"Failed to generate CSRF token",data:null},500)}});pn.post("/2fa/generate",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{user:t}=e;if(t.otp_secret)return r.json({code:400,message:"2FA already enabled",data:null},400);let i=bq(),n=vq(i,t.username);return r.json({code:200,message:"success",data:{qr:kq(n),secret:i}})});pn.post("/2fa/verify",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({})),s=String(n.code||"").trim(),o=String(n.secret||"").trim();return o?/^[A-Z2-7]+$/i.test(o)?await Jb(o,s)?(i.otp_secret=o.toUpperCase(),await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:400,message:"Invalid code",data:null},400):r.json({code:400,message:"Invalid secret format",data:null},400):r.json({code:400,message:"Missing secret parameter",data:null},400)});cu.get("/sshkey/list",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await ou(e.user.id,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});cu.post("/sshkey/add",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({}));try{let i=await Pq(e.user.id,t.key||t.public_key||"",t.name||t.title||"",r.env);return r.json({code:200,message:"success",data:i})}catch(i){return r.json({code:400,message:i.message||"Failed to add SSH key",data:null},400)}});cu.post("/sshkey/delete",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=r.req.query("id");if(!t)return r.json({code:400,message:"Missing id parameter",data:null},400);if(!await Uw(e.user.id,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await ou(e.user.id,r.env);return r.json({code:200,message:"success",data:n})})});wr();var fk=r=>{let e={origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH","QUERY"],allowHeaders:[],exposeHeaders:[],...r},t=(n=>typeof n=="string"?n==="*"?()=>n:s=>n===s?s:null:typeof n=="function"?n:s=>n.includes(s)?s:null)(e.origin),i=(n=>typeof n=="function"?n:Array.isArray(n)?()=>n:()=>[])(e.allowMethods);return async function(s,o){function a(l,d){s.res.headers.set(l,d)}let c=await t(s.req.header("origin")||"",s);if(c&&a("Access-Control-Allow-Origin",c),e.credentials&&a("Access-Control-Allow-Credentials","true"),e.exposeHeaders?.length&&a("Access-Control-Expose-Headers",e.exposeHeaders.join(",")),s.req.method==="OPTIONS"){e.origin!=="*"&&a("Vary","Origin"),e.maxAge!=null&&a("Access-Control-Max-Age",e.maxAge.toString());let l=await i(s.req.header("origin")||"",s);l.length&&a("Access-Control-Allow-Methods",l.join(","));let d=e.allowHeaders;if(!d?.length){let u=s.req.header("Access-Control-Request-Headers");u&&(d=u.split(",").map(f=>f.trim()))}return d?.length&&(a("Access-Control-Allow-Headers",d.join(",")),s.res.headers.append("Vary","Access-Control-Request-Headers")),s.res.headers.delete("Content-Length"),s.res.headers.delete("Content-Type"),new Response(null,{headers:s.res.headers,status:204,statusText:"No Content"})}await o(),e.origin!=="*"&&s.header("Vary","Origin",{append:!0})}};Ve();ic();wr();Yt();Ve();var BA=r=>{let e=[];for(let t of String(r||"").replace(/\\/g,"/").split("/"))if(!(t===""||t===".")){if(t===".."){e.pop();continue}e.push(t)}return"/"+e.join("/")};async function Md(r,e,t){let n=BA(r).split("/").filter(Boolean);if(n.length<1)return{ok:!1,error:"Invalid share path"};let s,o;if(n[0]==="@s"){if(n.length<2)return{ok:!1,error:"Invalid share path"};s=n[1],o=n.slice(2)}else s=n[0],o=n.slice(1);let a=await ne(t),c=(a.shares||[]).find(g=>g.id===s);if(!c)return{ok:!1,error:"share not found"};if(c.disabled)return{ok:!1,error:"share has been disabled"};if(c.expires&&new Date(c.expires)<new Date)return{ok:!1,error:"share has expired"};if(c.max_accessed>0&&c.accessed!==void 0&&c.accessed>=c.max_accessed)return{ok:!1,error:"share access count exceeded"};if(c.pwd&&c.pwd!==e)return{ok:!1,error:"wrong password"};if(!c.files||c.files.length===0)return{ok:!1,error:"share is empty"};if(c.accessed=(c.accessed||0)+1,fe(a,t).catch(()=>{}),c.files.length>1&&o.length===0)return{ok:!0,share:c,virtualList:!0};let l=(c.files||[]).map(g=>BA(g)),d=g=>l.some(p=>g===p||g.startsWith(p==="/"?"/":p+"/"));if(c.files.length===1)return o.length>0?{ok:!1,error:"path not found in share"}:{ok:!0,share:c,realPath:BA(c.files[0])};let u=o[0],f=c.files.find(g=>{let p=String(g).split("/").filter(Boolean);return p[p.length-1]===u});if(!f)return{ok:!1,error:"path not found in share"};let h=BA([BA(f),...o.slice(1)].join("/"));return d(h)?{ok:!0,share:c,realPath:h}:{ok:!1,error:"path not found in share"}}Ve();Qi();var Qa={SEE_HIDES:0,ACCESS_WITHOUT_PASSWORD:1,OFFLINE_DOWNLOAD:2,WRITE_CONTENT:3,RENAME:4,MOVE:5,COPY:6,DELETE:7,WEBDAV_READ:8,WEBDAV_MANAGE:9,FTP_READ:10,FTP_MANAGE:11,READ_ARCHIVES:12,DECOMPRESS:13,SHARE:14,CUSTOMIZE_SHARE_ID:15};function Jre(r){return!r||r.role===1}function ms(r){return!!r&&r.role===2}function _a(r,e){return!r||r.disabled?!1:ms(r)?!0:Jre(r)?!1:(r.permission>>e&1)===1}function pt(r){return _a(r,Qa.WRITE_CONTENT)}function We(r,e="/"){let t=e||"/";if(t.startsWith("/@s"))return t;let i=(r?.base_path||"/").trim();if(!i||i==="/")return t.startsWith("/")?t:`/${t}`;i.startsWith("/")||(i=`/${i}`),i.endsWith("/")&&i.length>1&&(i=i.replace(/\/+$/,""));let n=t.startsWith("/")?t:`/${t}`;return n==="/"?i:`${i}${n}`}Ve();async function d2(r,e){let i=(await ne(e)).metas||[];if(i.length===0)return null;let n=SA(r),s=i.find(a=>SA(a.path)===n);if(s)return s;let o=n;for(;o!=="/";){let a=o.substring(0,o.lastIndexOf("/"))||"/",c=i.find(l=>SA(l.path)===a);if(c)return c;o=a}return null}function Yc(r,e,t){let i=SA(r),n=SA(e);if(i.toLowerCase()===n.toLowerCase())return!0;if(!t)return!1;let s=n;for(;s!=="/";)if(s=s.substring(0,s.lastIndexOf("/"))||"/",i.toLowerCase()===s.toLowerCase())return!0;return!1}function SA(r){let e=(r||"/").replace(/\\/g,"/").replace(/\/+/g,"/").trim();return e===""||e==="/"?"/":"/"+e.split("/").filter(Boolean).join("/")}function u2(r,e,t,i=""){return r&&ms(r)||!e?!0:!(e.password&&e.password.trim()!==""&&Yc(e.path,t,e.p_sub)&&i!==e.password||e.read_users&&e.read_users.length>0&&Yc(e.path,t,e.read_users_sub)&&(!r||!e.read_users.includes(r.id||0)))}function f2(r,e,t){return r===null||r&&ms(r)?!0:e&&e.write_users&&e.write_users.length>0&&Yc(e.path,t,e.write_users_sub)?e.write_users.includes(r.id||0):!0}function A2(r,e){return r?r.write&&Yc(r.path,e,r.w_sub):!1}function h2(r,e){return!r||!r.readme?"":Yc(r.path,e,r.r_sub)?r.readme:""}function g2(r,e){return!r||!r.header?"":Yc(r.path,e,r.header_sub)?r.header:""}function iN(r,e,t){if(!r||!r.hide||r.hide.trim()===""||!Yc(r.path,e,r.h_sub))return!1;let i=r.hide.split(` -`).map(n=>n.trim()).filter(Boolean);for(let n of i)try{if(new RegExp(n).test(t))return!0}catch{}return!1}function p2(r){if(!r||r.trim()==="")return null;let e=r.split(` -`).map(t=>t.trim()).filter(Boolean);for(let t of e)try{new RegExp(t)}catch{return t}return null}Ve();Qi();si();function sN(r){if(!r)return{};if(typeof r=="object")return r;if(typeof r=="string")try{let e=JSON.parse(r||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}return{}}function m2(r){return typeof r=="string"?r.toLowerCase()==="true":r===!0}function Wc(r){if(typeof r=="number"&&Number.isFinite(r))return Math.trunc(r);if(typeof r=="string"&&r.trim()!==""){let e=parseInt(r,10);if(Number.isFinite(e))return e}return null}function oN(r){let e=r?.proxy_range??r?.proxyRange;return e==null||e===""?!0:m2(e)}function aN(r){return r?m2(r.enable_sign??r.enableSign):!1}function cN(r){return r?m2(r.disable_index??r.disableIndex):!1}function jre(r){let e=Wc(r?.cache_expiration??r?.cacheExpiration);return e===null||e<0?30:e}function $re(r){let e=r?.custom_cache_policies??r?.customCachePolicies;if(!e)return[];if(typeof e=="string"){let i=e.trim();if(!i)return[];try{e=JSON.parse(i)}catch{let n=[];for(let s of i.split(",")){let o=s.lastIndexOf(":");if(o<=0)continue;let a=s.slice(0,o).trim(),c=Wc(s.slice(o+1).trim());a&&c!==null&&n.push({path:a,cacheExpiration:c})}return n}}let t=[];if(Array.isArray(e)){for(let i of e)if(i){if(typeof i=="string"){let n=i.lastIndexOf(":");if(n<=0)continue;let s=i.slice(0,n).trim(),o=Wc(i.slice(n+1).trim());s&&o!==null&&t.push({path:s,cacheExpiration:o});continue}if(typeof i=="object"){let n=i.path??i.Path,s=Wc(i.cache_expiration??i.cacheExpiration)??Wc(i.max_age??i.maxAge);if(typeof n=="string"&&n&&s!==null){let o=Wc(i.max_age??i.maxAge);t.push({path:n,cacheExpiration:s,...o!==null?{maxAge:o}:{}})}}}return t}if(typeof e=="object")for(let[i,n]of Object.entries(e)){let s=Wc(n);i&&s!==null&&t.push({path:i,cacheExpiration:s})}return t}var Vre=1024,Yre=4096;function nN(r,e){if(!r)return!1;if(r===e)return!0;if(r.length>Vre||e.length>Yre)return!1;let t=r.split("/"),i=e.split("/"),n=t.length,s=i.length,o=new Array(s+1).fill(!1);o[s]=!0;for(let a=n-1;a>=0;a--){let c=t[a],l=new Array(s+1).fill(!1);if(/^\*{2,}$/.test(c)){l[s]=o[s];for(let u=s-1;u>=0;u--)l[u]=o[u]||l[u+1]}else for(let u=s-1;u>=0;u--)l[u]=Wre(c,i[u])&&o[u+1];o=l}return o[0]}function Wre(r,e){let t=0,i=0,n=-1,s=-1,o=r.length,a=e.length;for(;i<a;){let c=t<o?r[t]:void 0;if(c==="*"){n=t,s=i,t++;continue}if(c==="?"||c===e[i]){t++,i++;continue}if(n!==-1){s++,i=s,t=n+1;continue}return!1}for(;t<o&&r[t]==="*";)t++;return t===o}function lN(r,e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=jre(r),n=$re(r);if(n.length===0)return i;let s=null;for(let o of n){let a=o.path.trim();a&&(!a.startsWith("/")&&!a.startsWith("*")&&(a="/"+a),(nN(a,t)||nN(a,t.slice(1)))&&(s=o))}return s?s.cacheExpiration:i}var dN=24*3600;function Xre(r,e){if(typeof r!="string"||typeof e!="string"||r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function zd(r){try{let e=await ne(r?.env),t={};for(let s of e.settings||[])t[s.key]=s.value;let i=t.sign_all==="true",n=parseInt(t.link_expiration,10)||0;return!i&&n<=0?{enabled:!1,expiresIn:0}:{enabled:!0,expiresIn:n>0?n:dN}}catch{return{enabled:!1,expiresIn:0}}}function Gd(r){return"/"+String(r||"").split("/").filter(Boolean).join("/")}function Zre(r,e,t){let i=Gd(r).toLowerCase(),n=Gd(e).toLowerCase();if(i===n)return!0;if(!t)return!1;for(;n!=="/";)if(n=Gd(n.split("/").slice(0,-1).join("/")),i===n)return!0;return!1}async function eie(r,e){try{let i=(await ne(r?.env)).metas||[];if(!i.length)return null;let n=Gd(e);for(;;){let s=i.find(o=>Gd(o.path).toLowerCase()===n.toLowerCase());if(s)return s;if(n==="/")return null;n=Gd(n.split("/").slice(0,-1).join("/"))}}catch{return null}}async function tie(r,e){try{let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Gr)),i=await t(e);return i?.storage?aN(i.storage):!1}catch{return!1}}async function WI(r,e){if(await tie(r,e))return!0;let t=await eie(r,e);return!t||!t.password?!1:Zre(t.path,e,!!t.p_sub)}async function uN(r,e){return(await zd(r)).enabled?!0:await WI(r,e)}async function DA(r){try{let e=await ne(r?.env);for(let t of e.settings||[])if(t.key==="link_expiration"){let i=parseInt(t.value,10)||0;if(i>0)return i;break}}catch{}return dN}async function QA(r,e,t){let i=await kr(r),n=Math.floor(Date.now()/1e3)+t,s=await Bx(`${e}:${n}`,i);return`${n}.${s}`}async function fN(r,e,t){let i=t.lastIndexOf(".");if(i<=0)return!1;let n=parseInt(t.slice(0,i),10),s=t.slice(i+1);if(!Number.isFinite(n)||n<=Math.floor(Date.now()/1e3))return!1;let o=await kr(r),a=await Bx(`${e}:${n}`,o);return Xre(a,s)}Da();Yt();async function Jd(r={},e){let t=(r.parent||"/").replace(/\/+/g,"/")||"/",i=String(r.keywords||"").trim().toLowerCase(),n=r.scope??0,s=Math.max(1,r.page||1),o=Math.max(1,Math.min(100,r.per_page||30)),a=Math.min(20,Math.max(0,r.max_depth??10)),c=Math.min(2e3,Math.max(1,r.max_results??500)),l=[];async function d(g,p){if(p>a||l.length>=c)return;let I=[];try{I=(await Zt(g)).content||[]}catch{return}for(let y of I){if(l.length>=c)break;let w=!i||y.name.toLowerCase().includes(i),C=!!y.is_dir,b=C&&!y.sign,x=!0;if(n===1&&!C&&(x=!1),n===2&&C&&(x=!1),!b&&w&&x&&l.push({...y,parent:g.endsWith("/")&&g!=="/"?g.slice(0,-1):g}),C){let _=g==="/"?`/${y.name}`:`${g}/${y.name}`;await d(_,p+1)}}}await d(t,0);let u=l.length,f=(s-1)*o;return{content:l.slice(f,f+o),total:u}}function XI(r){let e=new DataView(r),t=r.byteLength,i=-1,n=Math.max(0,t-22-65557);for(let l=t-22;l>=n;l--)if(e.getUint32(l,!0)===101010256){i=l;break}if(i===-1)throw new Error("Invalid ZIP: End of Central Directory not found");let s=e.getUint16(i+10,!0),o=e.getUint32(i+16,!0),a=[],c=o;for(let l=0;l<s&&e.getUint32(c,!0)===33639248;l++){let d=e.getUint16(c+10,!0),u=e.getUint32(c+20,!0),f=e.getUint32(c+24,!0),h=e.getUint16(c+28,!0),g=e.getUint16(c+30,!0),p=e.getUint16(c+32,!0),I=e.getUint32(c+42,!0),y=e.getUint16(c+12,!0),w=e.getUint16(c+14,!0),C=rie(w,y),b=new Uint8Array(r,c+46,h),x=new TextDecoder("utf-8").decode(b);if(c+=46+h+g+p,x.endsWith("/")||e.getUint32(I,!0)!==67324752)continue;let _=e.getUint16(I+26,!0),R=e.getUint16(I+28,!0),U=I+30+_+R;a.push({name:x.replace(/\\/g,"/"),isDir:!1,size:f,compressedSize:u,compressionMethod:d,dataOffset:U,modified:C})}return{entries:a}}async function AN(r,e){let t=new Uint8Array(r,e.dataOffset,e.compressedSize);if(e.compressionMethod===0)return new Uint8Array(t);if(e.compressionMethod===8){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not supported in this runtime");let i=new DecompressionStream("deflate-raw"),n=i.writable.getWriter();n.write(t),n.close();let s=await new Response(i.readable).arrayBuffer();return new Uint8Array(s)}throw new Error(`Unsupported ZIP compression method: ${e.compressionMethod}`)}function rie(r,e){let t=1980+(r>>9&127),i=r>>5&15,n=r&31,s=e>>11&31,o=e>>5&63,a=(e&31)*2,c=l=>String(l).padStart(2,"0");return`${t}-${c(i)}-${c(n)}T${c(s)}:${c(o)}:${c(a)}Z`}lc();wr();Qi();lc();Da();Ve();Yt();var FA=Qr(vm(),1);var ZI="openlist-sharing-seed";var iie={md5:32,sha1:40,sha256:64};function mr(r){return typeof r=="string"?r:""}var nie=64,sie=4096;function hN(r){let e=mr(r).trim();if(e.length>sie)throw new Error("Seed file path exceeds the maximum length");let t=e.split("/");if(t.length>nie)throw new Error("Seed file path exceeds the maximum depth");if(e.includes("\0")||e.includes("\\")||e.startsWith("/")||t.length===0||t.some(i=>!i||i==="."||i===".."))throw new Error("Seed file path must be a safe relative path");return t.join("/")}function _A(r,e){let t=mr(r).toLowerCase();if(t&&!new RegExp(`^[0-9a-f]{${iie[e]}}$`).test(t))throw new Error(`Invalid ${e} hash`);return t}function oie(r){return Array.isArray(r)?r.map(e=>{if(!e||typeof e!="object")throw new Error("Invalid seed source");let t=mr(e.type),i=mr(e.url);if(!t||!i)throw new Error("Seed source type and URL are required");try{if(!new URL(i).protocol)throw new Error("missing scheme")}catch{throw new Error("Seed source URL must be absolute")}return{type:t,url:i,expires_at:mr(e.expires_at),share_id:mr(e.share_id)}}):[]}function Ki(r){if(!r||typeof r!="object")throw new Error("Invalid seed payload");let e=r;if(e.format!==void 0&&e.format!==ZI)throw new Error("Unsupported seed format");if(e.version!==void 0&&Number(e.version)!==1)throw new Error("Unsupported seed version");let t=Number(e.piece_size||10485760);if(!Number.isSafeInteger(t)||t<16*1024||t>64*1024*1024)throw new Error("Invalid piece_size");if(!Array.isArray(e.files)||e.files.length===0||e.files.length>1e5)throw new Error("Seed file count must be between 1 and 100000");let i=e.files.map(o=>{if(!o||typeof o!="object")throw new Error("Invalid seed file");let a=Number(o.size);if(!Number.isSafeInteger(a)||a<0)throw new Error("Invalid seed file size");let c=o.hashes||{},l=c.pieces||{},d=a>0?Math.ceil(a/t):0,u=f=>{if(!Array.isArray(l[f]))return[];let h=l[f].map(g=>_A(g,f));if(h.length!==0&&h.length!==d)throw new Error(`${f} piece count is ${h.length}, expected ${d}`);return h};return{path:hN(o.path),size:a,modified:mr(o.modified),comment:mr(o.comment),hashes:{md5:_A(c.md5,"md5"),sha1:_A(c.sha1,"sha1"),sha256:_A(c.sha256,"sha256"),pieces:{md5:u("md5"),sha1:u("sha1"),sha256:u("sha256")}},sources:oie(o.sources),cas_slice_md5:_A(o.cas_slice_md5,"md5"),cas_create_time:mr(o.cas_create_time),cas_cloud:mr(o.cas_cloud).trim(),missing_channels:Array.isArray(o.missing_channels)?o.missing_channels.map(mr).filter(Boolean):[]}}),n=new Set;for(let o of i){if(n.has(o.path))throw new Error(`Duplicate seed file path: ${o.path}`);n.add(o.path)}let s=mr(e.name)||i[0].path.split("/")[0];if(!s.trim()||s==="."||s===".."||/[\\/\0]/.test(s))throw new Error("Invalid seed name");return{format:ZI,version:1,name:s,comment:mr(e.comment),created_at:mr(e.created_at)||new Date().toISOString(),created_by:mr(e.created_by)||"OpenList",piece_size:t,trackers:Array.isArray(e.trackers)?e.trackers.map(mr).filter(Boolean):[],channels:Array.isArray(e.channels)?e.channels.map(o=>{if(!o||typeof o!="object"||!mr(o.driver).trim())throw new Error("Seed channel driver is required");let a=mr(o.mount_path);if(/[?#\0]/.test(a))throw new Error("Seed channel mount_path contains invalid characters");return{driver:mr(o.driver).trim(),mount_path:a}}):[],files:i}}function ew(r,e){let t=r&&typeof r=="object"?r:{},i=o=>({whole:!!t[o]?.whole,pieces:!!t[o]?.pieces}),n={md5:i("md5"),sha1:i("sha1"),sha256:i("sha256")};!n.md5.whole&&!n.md5.pieces&&!n.sha1.whole&&!n.sha1.pieces&&!n.sha256.whole&&!n.sha256.pieces&&(n={md5:{whole:!0,pieces:!0},sha1:{whole:!0,pieces:!0},sha256:{whole:!0,pieces:!0}});for(let o of e)o==="torrent"&&(n.sha1={whole:!0,pieces:!0}),o==="cas"&&(n.md5={whole:!0,pieces:!0});return n}function y2(r,e){let t={md5:e.md5.whole?r.hashes.md5:"",sha1:e.sha1.whole?r.hashes.sha1:"",sha256:e.sha256.whole?r.hashes.sha256:"",pieces:{md5:e.md5.pieces?r.hashes.pieces.md5:[],sha1:e.sha1.pieces?r.hashes.pieces.sha1:[],sha256:e.sha256.pieces?r.hashes.pieces.sha256:[]}};return{...r,hashes:t}}function gN(r){return hN(r)}var Un=new TextEncoder,Pa=new TextDecoder("utf-8",{fatal:!0}),cie=32,lie=1e5;function tw(r){let e=r.reduce((n,s)=>n+s.byteLength,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.byteLength;return t}function jd(r){if(r instanceof Uint8Array)return tw([Un.encode(`${r.byteLength}:`),r]);if(typeof r=="string")return jd(Un.encode(r));if(typeof r=="number"){if(!Number.isSafeInteger(r))throw new Error("Bencode integer is out of range");return Un.encode(`i${r}e`)}if(Array.isArray(r))return tw([Un.encode("l"),...r.map(jd),Un.encode("e")]);let e=Object.entries(r).sort(([t],[i])=>{let n=Un.encode(t),s=Un.encode(i),o=Math.min(n.length,s.length);for(let a=0;a<o;a++)if(n[a]!==s[a])return n[a]-s[a];return n.length-s.length});return tw([Un.encode("d"),...e.flatMap(([t,i])=>[jd(t),jd(i)]),Un.encode("e")])}function die(r){let e=0,t=0,i=s=>{if(++t>lie)throw new Error("Bencode item limit exceeded");if(s>cie)throw new Error("Bencode nesting limit exceeded");let o=r[e];if(o===105){let a=r.indexOf(101,++e);if(a<0)throw new Error("Unterminated bencode integer");let c=Pa.decode(r.subarray(e,a));if(!/^(0|-?[1-9]\d*)$/.test(c))throw new Error("Invalid bencode integer");let l=Number(c);if(!Number.isSafeInteger(l))throw new Error("Bencode integer is out of range");return e=a+1,l}if(o===108){e++;let a=[];for(;e<r.length&&r[e]!==101;)a.push(i(s+1));if(r[e++]!==101)throw new Error("Unterminated bencode list");return a}if(o===100){e++;let a={};for(;e<r.length&&r[e]!==101;){let c=i(s+1);if(!(c instanceof Uint8Array))throw new Error("Bencode dictionary key is not a string");let l=Pa.decode(c);a[l]=i(s+1)}if(r[e++]!==101)throw new Error("Unterminated bencode dictionary");return a}if(o>=48&&o<=57){let a=r.indexOf(58,e);if(a<0)throw new Error("Invalid bencode byte string");let c=Pa.decode(r.subarray(e,a));if(!/^(0|[1-9]\d*)$/.test(c))throw new Error("Invalid bencode byte string length");let l=Number(c),d=a+1,u=d+l;if(!Number.isSafeInteger(l)||u>r.length)throw new Error("Truncated bencode byte string");return e=u,r.slice(d,u)}throw new Error("Invalid bencode value")},n=i(0);if(e!==r.length)throw new Error("Trailing bencode data");return n}function $d(r,e){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array)throw new Error(`${e} must be a dictionary`);return r}function uie(r){return r instanceof Uint8Array?r:new Uint8Array}function dn(r){return r instanceof Uint8Array?Pa.decode(r):typeof r=="string"?r:""}function Fa(r){return typeof r=="number"?r:0}function fie(r){return Array.isArray(r)?r.map(e=>dn(e)).filter(Boolean):[]}function I2(r){return r==null?"":typeof r=="string"||typeof r=="number"||r instanceof Uint8Array?r:typeof r=="boolean"?r?1:0:Array.isArray(r)?r.map(I2):typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,I2(t)])):String(r)}function w2(r){return r instanceof Uint8Array?Pa.decode(r):Array.isArray(r)?r.map(w2):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,w2(t)])):r}function Aie(r){if(!r||r.length%2!==0||!/^[0-9a-f]+$/i.test(r))return new Uint8Array;let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}function hie(r){return Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}function gie(r){if(r.files.length>1){for(let e of r.files.slice(0,-1))if(e.size%r.piece_size!==0)throw new Error("Cannot convert this multi-file seed to a standard torrent: a file boundary splits a piece")}return r.files.flatMap(e=>e.hashes.pieces.sha1)}async function pie(r,e){if(!r.hashes.md5)return;let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"",i=r.hashes.pieces.md5.map(n=>n.toUpperCase());if(!t&&i.length>0&&e===10485760&&(t=i.length>1?(await(0,FA.md5)(i.join(` -`))).toUpperCase():i[0]),!!t)return{cloud:r.cas_cloud||"189",file_md5:r.hashes.md5.toUpperCase(),slice_md5:t,slice_md5s:i,slice_size:e}}function mie(r){return Un.encode(JSON.stringify(Ki(r),null,2))}function x2(r){let e=JSON.parse(Pa.decode(r));if(e?.format!==ZI||Number(e?.version)!==1||!e?.created_at||!e?.created_by)throw new Error("Invalid or incomplete OpenList sharing seed");return Ki(e)}async function pN(r,e){if(!r.hashes.md5)throw new Error(`CAS requires a whole-file MD5 for ${r.path}`);let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"";if(!t&&r.hashes.pieces.md5.length>0&&e===10485760){let n=r.hashes.pieces.md5.map(s=>s.toUpperCase());t=n.length>1?(await(0,FA.md5)(n.join(` -`))).toUpperCase():n[0]}if(!t){if(r.size>10485760)throw new Error(`CAS requires a legacy slice MD5 or complete 10 MiB MD5 pieces for ${r.path}`);t=r.hashes.md5.toUpperCase()}let i={name:r.path.split("/").pop()||r.path,size:r.size,md5:r.hashes.md5,sliceMd5:t,create_time:r.cas_create_time||String(Math.floor(Date.now()/1e3)),cloud:r.cas_cloud||"189"};return r.hashes.pieces.md5.length>0&&(i.slice_md5s=r.hashes.pieces.md5.map(n=>n.toUpperCase()),i.slice_size=e||10485760),i}async function yie(r){let e=Ki(r);if(e.files.length===0)throw new Error("CAS requires at least one file");let t;if(e.files.length===1){let i=await pN(e.files[0],e.piece_size);t={name:i.name,size:i.size,md5:i.md5,sliceMd5:i.sliceMd5,create_time:i.create_time,slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:i.cloud}}else{let i=[],n=0;for(let s of e.files){let o=await pN(s,e.piece_size);i.push(o),n+=o.size}t={name:e.name,size:n,md5:"",sliceMd5:"",create_time:"",files:i}}return Un.encode(Buffer.from(JSON.stringify(t)).toString("base64"))}function mN(r){let e=Pa.decode(r).trim(),t=e;try{t=Buffer.from(e,"base64").toString("utf8"),JSON.parse(t)}catch{t=e}let i=JSON.parse(t),n=l=>{if(!l.name||!Number.isSafeInteger(l.size)||Number(l.size)<0||!l.md5)throw new Error("Invalid CAS file entry");let d=String(l.md5).toLowerCase(),u=String(l.sliceMd5||l.md5).toLowerCase();if(!/^[0-9a-f]{32}$/i.test(d)||!/^[0-9a-f]{32}$/i.test(u))throw new Error("Invalid CAS hash");let f=Array.isArray(l.slice_md5s)?l.slice_md5s.map(h=>String(h).toLowerCase()):[];return{path:l.name,size:Number(l.size),modified:"",comment:"",hashes:{md5:d,sha1:"",sha256:"",pieces:{md5:f,sha1:[],sha256:[]}},sources:[],cas_slice_md5:u,cas_create_time:l.create_time||"",cas_cloud:String(l.cloud||""),missing_channels:[]}};if(Array.isArray(i.files)&&i.files.length>0){let l=i.files.map(n);return{format:"cas",cas:{name:String(i.name),size:l.reduce((u,f)=>u+f.size,0),md5:"",sliceMd5:"",create_time:"",cloud:String(i.cloud||""),files:i.files},seed:Ki({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:new Date().toISOString(),created_by:"OpenList",piece_size:10485760,files:l})}}if(!i.name||!Number.isSafeInteger(i.size)||Number(i.size)<0||!i.md5)throw new Error("Invalid CAS payload");let s=String(i.md5).toLowerCase(),o=String(i.sliceMd5||i.md5);if(!/^[0-9a-f]{32}$/i.test(s)||!/^[0-9a-f]{32}$/i.test(o))throw new Error("Invalid CAS hash");let a=Number(i.create_time);return{format:"cas",cas:{name:String(i.name),size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:String(i.cloud||"")},seed:Ki({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:Number.isFinite(a)&&a>0?new Date(a*1e3).toISOString():new Date().toISOString(),created_by:"OpenList",piece_size:i.slice_size||10485760,files:[n({name:i.name,size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size})]})}}async function C2(r,e){let t=Ki(r),i=e||gie(t);if(i.some(o=>o.length!==40))throw new Error("Torrent conversion requires SHA-1 piece hashes");let n={name:t.name,"piece length":t.piece_size,pieces:tw(i.map(Aie))};t.files.length===1?(n.length=t.files[0].size,t.files[0].hashes.md5&&(n.md5sum=t.files[0].hashes.md5)):n.files=t.files.map(o=>{let a={length:o.size,path:o.path.split("/")};return o.hashes.md5&&(a.md5sum=o.hashes.md5),a});let s={info:n,comment:t.comment,"created by":t.created_by,"creation date":Math.floor(new Date(t.created_at).getTime()/1e3)||Math.floor(Date.now()/1e3),"x-openlist":I2(t)};if(t.trackers.length&&(s.announce=t.trackers[0],s["announce-list"]=t.trackers.map(o=>[o])),t.files.length===1){let o=await pie(t.files[0],t.piece_size);o&&(s["x-cas"]=o)}return jd(s)}function Iie(r,e,t,i,n){let s=Array.isArray(r.files)?r.files:null,o=s?s.map(c=>{let l=$d(c,"torrent file");return{path:(Array.isArray(l.path)?l.path.map(dn):[]).join("/"),size:Fa(l.length),md5:dn(l.md5sum)}}):[{path:e,size:Fa(r.length),md5:dn(r.md5sum)}],a=0;return o.map((c,l)=>{let d=c.size>0?Math.ceil(c.size/i):0,f=(l===o.length-1||c.size%i===0)&&a+d<=t.length?t.slice(a,a+d):[];a+=d;let h=o.length===1&&n?dn(n.slice_md5):"",g=o.length===1&&n?dn(n.create_time):"",p=o.length===1&&n?dn(n.cloud):"";return{path:c.path,size:c.size,modified:"",comment:"",hashes:{md5:c.md5.toLowerCase(),sha1:"",sha256:"",pieces:{md5:[],sha1:f,sha256:[]}},sources:[],cas_slice_md5:h.toLowerCase(),cas_create_time:g,cas_cloud:p,missing_channels:[]}})}async function yN(r){let e=$d(die(r),"torrent root"),t=$d(e.info,"torrent info"),i=await(0,FA.sha1)(jd(t)),n=dn(t.name),s=Fa(t["piece length"]),o=uie(t.pieces);if(!n||s<=0||o.length%20!==0)throw new Error("Invalid torrent info dictionary");let a=Array.isArray(t.files)?t.files.reduce((g,p)=>g+Fa($d(p,"torrent file").length),0):Fa(t.length),c=a>0?Math.ceil(a/s):0;if(o.length/20!==c)throw new Error("Torrent piece count mismatch");if(e["x-openlist"]){let g=Ki(w2(e["x-openlist"]));return wie(g,t,n,s),{format:"torrent",seed:g,info_hash:i}}let l=[];for(let g=0;g<o.length;g+=20)l.push(hie(o.subarray(g,g+20)));let d=[dn(e.announce),...Array.isArray(e["announce-list"])?e["announce-list"].flatMap(g=>fie(g)):[]].filter((g,p,I)=>g&&I.indexOf(g)===p),u=Fa(e["creation date"]),f=e["x-cas"]?$d(e["x-cas"],"x-cas"):void 0;return{format:"torrent",seed:Ki({name:n,comment:dn(e.comment),created_at:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),created_by:dn(e["created by"])||"OpenList",piece_size:s,trackers:d,channels:[],files:Iie(t,n,l,s,f)}),info_hash:i}}function wie(r,e,t,i){if(r.name!==t||r.piece_size!==i)throw new Error("x-openlist metadata conflicts with torrent info");let n=Array.isArray(e.files)?e.files:null;if(!n){if(r.files.length!==1||r.files[0].size!==Fa(e.length))throw new Error("x-openlist file list conflicts with torrent info");return}if(r.files.length!==n.length)throw new Error("x-openlist file count conflicts with torrent info");n.forEach((s,o)=>{let a=$d(s,"torrent file"),c=(Array.isArray(a.path)?a.path.map(dn):[]).join("/");if(r.files[o].path!==c||r.files[o].size!==Fa(a.length))throw new Error(`x-openlist file ${o} conflicts with torrent info`)})}async function wN(r,e){if(e==="oss")return{format:"oss",seed:x2(r)};if(e==="torrent")return yN(r);if(e==="cas")return mN(r);let t=Pa.decode(r.subarray(0,Math.min(r.length,32))).trimStart()[0];return t==="{"?{format:"oss",seed:x2(r)}:t==="d"?yN(r):mN(r)}async function PA(r,e){return e==="oss"?mie(r):e==="torrent"?C2(r):yie(r)}var Ta=Qr(vm(),1);async function xN(){let[r,e,t]=await Promise.all([(0,Ta.createMD5)(),(0,Ta.createSHA1)(),(0,Ta.createSHA256)()]);return{md5:r.init(),sha1:e.init(),sha256:t.init()}}function CN(r,e){r.md5.update(e),r.sha1.update(e),r.sha256.update(e)}function E2(r){return{md5:r.md5.digest("hex").toLowerCase(),sha1:r.sha1.digest("hex").toLowerCase(),sha256:r.sha256.digest("hex").toLowerCase()}}function xie(r){r.md5.init(),r.sha1.init(),r.sha256.init()}var TA=class r{constructor(e,t){this.pieceSize=t;this.hasher=e.init()}pieceSize;hasher;written=0;hashes=[];static async create(e){return new r(await(0,Ta.createSHA1)(),e)}update(e){let t=0;for(;t<e.length;){let i=Math.min(this.pieceSize-this.written,e.length-t);this.hasher.update(e.subarray(t,t+i)),this.written+=i,t+=i,this.written===this.pieceSize&&this.finishPiece()}}digest(){return this.written>0&&this.finishPiece(),[...this.hashes]}finishPiece(){this.hashes.push(this.hasher.digest("hex").toLowerCase()),this.hasher.init(),this.written=0}};async function B2(r,e,t,i,n){if(!Number.isSafeInteger(t)||t<0||t>i)throw new Error(`File exceeds the hashing limit of ${i} bytes`);let s=await xN(),o=await xN(),a={md5:[],sha1:[],sha256:[]},c=r.getReader(),l=0,d=0;try{for(;;){let{done:u,value:f}=await c.read();if(u)break;if(!f?.length)continue;if(l+f.length>i||l+f.length>t)throw new Error("Downloaded file size exceeds the declared or configured limit");l+=f.length,n?.update(f),CN(s,f);let h=0;for(;h<f.length;){let g=Math.min(e-d,f.length-h);if(CN(o,f.subarray(h,h+g)),d+=g,h+=g,d===e){let p=E2(o);a.md5.push(p.md5),a.sha1.push(p.sha1),a.sha256.push(p.sha256),xie(o),d=0}}}}finally{c.releaseLock()}if(l!==t)throw new Error(`Downloaded file size mismatch: expected ${t}, received ${l}`);if(d>0){let u=E2(o);a.md5.push(u.md5),a.sha1.push(u.sha1),a.sha256.push(u.sha256)}return{size:l,hashes:{...E2(s),pieces:a}}}var ys=new Xe,rw=10*1024*1024,k2=512*1024*1024,EN=1e3,Cie=8*1024*1024,BN=4*1024*1024;function An(r,e,t){let i=r.env?.[e]??(typeof process<"u"?process.env?.[e]:void 0),n=Number(i);return Number.isSafeInteger(n)&&n>0?n:t}function UA(r){try{return typeof r.executionCtx?.waitUntil!="function"?void 0:{waitUntil:e=>r.executionCtx.waitUntil(e)}}catch{return}}function qr(r,e,t){return r.json({code:e,message:t,data:null},e)}async function Yd(r){let e=An(r,"SEED_MAX_METADATA_SIZE",rw);if(Number(r.req.header("Content-Length")||0)>e)throw new Error(`Seed request exceeds the ${e} byte limit`);let i=await r.req.text();if(new TextEncoder().encode(i).byteLength>e)throw new Error(`Seed request exceeds the ${e} byte limit`);return i.trim()?JSON.parse(i):{}}function po(r,e="/"){let t=String(r||e).replace(/\\/g,"/").trim();if(t.includes("\0"))throw new Error("Path contains an illegal null byte");let i=t.split("/").filter(Boolean);if(i.some(n=>n==="."||n===".."))throw new Error("Path traversal is not allowed");return"/"+i.join("/")}function S2(r,e){return po(`${r.replace(/\/+$/,"")}/${e}`)}function bN(r,e){if(!pt(r))throw new Error("Permission denied");let t=po(e);if(t==="/@s"||t.startsWith("/@s/"))throw new Error("Writing through a share path is not allowed");let i=We(r,t),n=po(r?.base_path||"/");if(n!=="/"&&i!==n&&!i.startsWith(`${n}/`))throw new Error("Target path is outside the user base path");return i}function Eie(r,e){if(r instanceof Uint8Array)return r;if(Array.isArray(r)&&r.every(t=>Number.isInteger(t)&&t>=0&&t<=255))return Uint8Array.from(r);if(typeof r!="string")throw new Error("Seed content is required");return e==="text"||r.trimStart().startsWith("{")||r.trimStart().startsWith("d")?new TextEncoder().encode(r):new Uint8Array(Buffer.from(r,"base64"))}function iw(r){let e=String(r||"").toLowerCase().replace(/^\./,"");return e==="oss"||e==="torrent"||e==="cas"?e:void 0}function vN(r,e){return`${r.name.replace(/[\\/:*?"<>|\0]/g,"_")||"seed"}.${e==="torrent"?"torrent":e}`}function b2(r){let e=r.split("/").pop()||r,t=e.lastIndexOf(".");return t>0?e.slice(0,t):e}function Bie(r){if(r.length===0)return"OpenList Seed";if(r.length===1)return b2(r[0].virtualPath);let e=b2(r[0].virtualPath);if(r.every(o=>b2(o.virtualPath)===e)&&e)return e;let n=r[0].virtualPath.split("/").slice(0,-1);for(let o of r.slice(1)){let a=o.virtualPath.split("/").slice(0,-1),c=0;for(;c<n.length&&c<a.length&&n[c]===a[c];)c++;n=n.slice(0,c)}return n[n.length-1]||"OpenList Seed"}function D2(r,e,t,i={}){let n=Buffer.from(t).toString("base64");return{format:e,file_name:vN(r,e),seed_data:n,size:t.byteLength,seed:r,...i}}function kN(r){let e=r.env?.ALLOW_SEED??(typeof process<"u"?process.env?.ALLOW_SEED:"");return String(e||"").split(/[\s,;]+/).map(t=>t.toLowerCase()).filter(Boolean)}function SN(r,e){let t=r.toLowerCase();return e.some(i=>i.startsWith("*.")?t.endsWith(i.slice(1))&&t!==i.slice(2):t===i)}function v2(r,e){if(!e.url)throw new Error("Seed source URL is required");let t=new URL(r.req.url),i=new URL(e.url,t.origin);if(zr(i.toString(),"Seed source"),i.username||i.password)throw new Error("Seed source URL credentials are not allowed");let n=e.type.toLowerCase(),s=i.origin===t.origin&&(/^\/(api\/)?p\//.test(i.pathname)||i.pathname.startsWith("/d/")||i.pathname.startsWith("/@s/")),o=["share","openlist-share"].includes(n)&&i.pathname.startsWith("/@s/"),a=["direct","openlist-direct"].includes(n)&&s;if(!o&&!a&&!SN(i.hostname,kN(r)))throw new Error("Seed source host is not an approved OpenList endpoint or configured domain");if(e.expires_at){let c=Date.parse(e.expires_at);if(!Number.isFinite(c)||c<=Date.now())throw new Error("Seed source has expired")}return i}async function nw(r,e,t={},i=!1){let n=e;for(let s=0;s<=3;s++){if(zr(n.toString(),"Seed fetch"),i){let c=new URL(r.req.url);if(!(n.origin===c.origin&&(/^\/(api\/)?p\//.test(n.pathname)||n.pathname.startsWith("/@s/")))&&!SN(n.hostname,kN(r)))throw new Error("Seed fetch redirect left the approved source allowlist")}let o=await fetch(n,{...t,redirect:"manual"});if(o.status<300||o.status>=400)return o;let a=o.headers.get("Location");if(!a)throw new Error("Seed fetch redirect is missing a Location header");n=new URL(a,n)}throw new Error("Seed fetch exceeded the redirect limit")}async function bie(r,e,t){let i=We(e,po(t)),{item:n}=await Di(i,UA(r)),s=An(r,"SEED_MAX_METADATA_SIZE",rw);if(n.is_dir||n.size<0||n.size>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let o=n.raw_url||`${new URL(r.req.url).origin}/api/p${i}`,a=n.raw_url_headers||{};!n.raw_url&&r.req.header("Authorization")&&(a.Authorization=r.req.header("Authorization"));let c=await nw(r,new URL(o,r.req.url),{headers:a});if(!c.ok)throw new Error(`Seed file download failed with HTTP ${c.status}`);if(Number(c.headers.get("Content-Length")||n.size)>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let d=c.body?.getReader();if(!d)throw new Error("Seed file response has no body");let u=[],f=0;for(;;){let{done:p,value:I}=await d.read();if(p)break;if(I?.length){if(f+=I.length,f>s)throw new Error(`Seed file exceeds the ${s} byte limit`);u.push(I)}}let h=new Uint8Array(f),g=0;for(let p of u)h.set(p,g),g+=p.length;return h}async function RA(r,e,t){if(t.seed&&typeof t.seed=="object")return{format:"oss",seed:Ki(t.seed)};let i=An(r,"SEED_MAX_METADATA_SIZE",rw),n=t.seed_data||t.content||t.data||t.torrent_data,s=t.seed_path||t.path&&!n?await bie(r,e,String(t.seed_path||t.path)):Eie(t.seed_data??t.content??t.data??t.torrent_data,t.encoding);if(s.byteLength>i)throw new Error(`Seed content exceeds the ${i} byte limit`);return wN(s,iw(t.format||t.from_format||t.file_name?.split(".").pop()))}async function Q2(r,e,t){let i=Array.isArray(t)?t:[t];if(!i.length||i.some(a=>typeof a!="string"||!a.trim()))throw new Error("paths must contain at least one path");let n=An(r,"SEED_MAX_FILES",EN),s=[],o=async(a,c)=>{if(s.length>=n)throw new Error(`Seed file count exceeds the ${n} file limit`);let l=We(e,a),{item:d}=await Di(l,UA(r));if(!d.is_dir){let f=d.raw_url||`${new URL(r.req.url).origin}/api/p${l}`,h={...d.raw_url_headers||{}};!d.raw_url&&r.req.header("Authorization")&&(h.Authorization=r.req.header("Authorization")),s.push({virtualPath:l,relativePath:gN(c),size:d.size,modified:d.modified||"",rawUrl:f,headers:h,hashes:d.hashes??(d.hash?{md5:d.hash}:{})});return}let{content:u}=await Zt(l,UA(r));for(let f of u){let h=S2(a,f.name),g=`${c.replace(/\/$/,"")}/${f.name}`;await o(h,g)}};for(let a of i){let c=po(a),l=c.split("/").filter(Boolean).pop()||"root";await o(c,l)}if(!s.length)throw new Error("No files were found for seed generation");return s}function Vd(r,e){if(e==="cas"){let t=[];for(let i of r.files){i.hashes.md5||t.push(`${i.path}: missing whole-file MD5`);let n=!!i.cas_slice_md5,s=r.piece_size===10485760&&i.hashes.pieces.md5.length>0;i.size>10485760&&!n&&!s&&t.push(`${i.path}: missing legacy slice MD5 or complete 10 MiB MD5 pieces`)}return t}if(e==="torrent"){let t=[];return r.files.forEach((i,n)=>{i.hashes.pieces.sha1.length||t.push(`${i.path}: missing SHA-1 piece hashes`),r.files.length>1&&n<r.files.length-1&&i.size%r.piece_size!==0&&t.push(`${i.path}: piece boundary crosses the next file`)}),t}return[]}function vie(r){return{oss:Vd(r,"oss"),torrent:Vd(r,"torrent"),cas:Vd(r,"cas")}}function kie(r){return Object.fromEntries(["oss","torrent","cas"].map(e=>{let t=Vd(r,e);return[e,{feasible:t.length===0,missing:t}]}))}async function _2(r,e,t,i){if(!t)return;let n=bN(e,t);await Tn(n,Buffer.from(i),UA(r))}async function Sie(){try{let e=(await jn()).seed_default_matrix;if(e){let t=JSON.parse(String(e));if(t&&typeof t=="object")return t}}catch{}}async function Die(r){try{let e=await jn(),t=String(e.seed_site_url||"").trim();if(t)return t.replace(/\/+$/,"")}catch{}return new URL(r.req.url).origin}async function Qie(r,e,t){let i=e&&typeof e=="object"?e:null,n=!!i?.md5||!!i?.sha1||!!i?.sha256;if(!n)try{let o=(await jn()).seed_default_matrix;if(o){let a=JSON.parse(String(o));if(a?.md5||a?.sha1||a?.sha256)return ew(a,t)}}catch{}return ew(n?e:void 0,t)}async function _ie(r,e,t,i){let n=i.includes("cas")?10485760:Number(t.piece_size||10485760);if(!Number.isSafeInteger(n)||n<16*1024||n>64*1024*1024)throw new Error("Invalid piece_size");let s=await Qie(r,t.hash_matrix,i),o=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},a=await Q2(r,e,t.paths??t.path),c=An(r,"SEED_MAX_HASH_BYTES",k2),l=a.reduce((h,g)=>h+g.size,0);if(!Number.isSafeInteger(l)||l>c)throw new Error(`Seed input exceeds the ${c} byte hashing limit`);let d=await TA.create(n),u=await Die(r),f=[];for(let h of a){let g=await nw(r,new URL(h.rawUrl,r.req.url),{headers:h.headers});if(!g.ok)throw new Error(`Source download failed with HTTP ${g.status}: ${h.virtualPath}`);if(!g.body)throw new Error(`Source download has no body: ${h.virtualPath}`);let p=await B2(g.body,n,h.size,c,d),I=String(o[h.relativePath]??o[h.virtualPath]??"");f.push(y2({path:h.relativePath,size:p.size,modified:h.modified,comment:I,hashes:p.hashes,cas_slice_md5:"",cas_create_time:"",cas_cloud:"",missing_channels:[],sources:t.include_direct_source===!0||t.include_sources===!0?[{type:"openlist-direct",url:`${u}/d${h.virtualPath}`,expires_at:"",share_id:""}]:[]},s))}return{torrentPieces:d.digest(),seed:Ki({name:String(t.name||Bie(a)),comment:String(t.comment||"Generated by OpenList"),created_at:new Date().toISOString(),created_by:String(t.created_by||"OpenList"),piece_size:n,trackers:Array.isArray(t.trackers)?t.trackers:[],channels:Array.isArray(t.channels)?t.channels:[],files:f})}}function F2(r,e){for(let t of e.sources)try{return{source:t,url:v2(r,t)}}catch{continue}}async function Fie(r,e,t,i,n,s=!1){let o=bN(e,i),a=o.split("/").filter(Boolean),c=a.pop();if(!c)throw new Error("Target file name is required");let l="/"+a.join("/"),d=await tt(o),u=await tt(l);if(d.isVirtual||u.isVirtual||!d.storage)throw new Error("Target storage was not found");let f=await lt(d.storage.driver,d.storage),h=f,g={size:t.size,md5:t.hashes.md5,sha1:t.hashes.sha1,sha256:t.hashes.sha256,hashes:t.hashes};try{if(typeof h.rapidUpload=="function"){let w=await h.rapidUpload(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"rapidUpload"}}if(typeof h.putRapid=="function"){let w=await h.putRapid(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"putRapid"}}let p;if(typeof h.createUploadSession=="function"&&(p=await h.createUploadSession(l,u.physical,c,t.size,t.hashes.md5),p?.reuse))return{status:"reused",method:"multipart-rapid"};if(s)throw new Error("capability unavailable: target driver did not reuse the available hashes");if(!n)throw new Error("capability unavailable: no rapid-upload match and no approved source URL");let I=await nw(r,n.url,{},!0);if(!I.ok||!I.body)throw new Error(`Source download failed with HTTP ${I.status}`);if(p?.session&&typeof h.uploadPart=="function"&&typeof h.completeUploadSession=="function"){let w=Math.min(An(r,"SEED_TRANSFER_CHUNK_SIZE",Cie),16777216),C=I.body.getReader(),b=new Uint8Array(0),x=1,_=0,R=[];for(;;){let{done:U,value:T}=await C.read();if(T?.length){if(_+=T.length,_>t.size)throw new Error("Source exceeds the declared file size");let D=new Uint8Array(b.length+T.length);for(D.set(b),D.set(T,b.length),b=D;b.length>=w;){let B=b.slice(0,w);b=b.slice(w);let Q=await h.uploadPart(p.session,x++,Buffer.from(B));Q?.partMd5&&R.push(Q.partMd5)}}if(U)break}if(_!==t.size)throw new Error("Source size does not match seed metadata");if(b.length||t.size===0){let U=await h.uploadPart(p.session,x,Buffer.from(b));U?.partMd5&&R.push(U.partMd5)}return await h.completeUploadSession(p.session,R),{status:"saved",method:"multipart-stream"}}if(typeof h.putStream=="function")return await h.putStream(o,d.physical,I.body,t.size,g),{status:"saved",method:"putStream"};let y=An(r,"SEED_BUFFERED_TRANSFER_MAX",BN);if(t.size<=y){let w=new Uint8Array(await I.arrayBuffer());if(w.byteLength!==t.size)throw new Error("Source size does not match seed metadata");return await f.put(o,d.physical,Buffer.from(w)),{status:"saved",method:"bounded-buffer"}}throw new Error("capability unavailable: target driver has no streaming or multipart upload API")}finally{await Jt(d.storage.driver,d.storage,f,UA(r))}}ys.get("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");let t,i=r.req.query("path");if(i)try{let n=We(e,po(i)),s=await tt(n);if(!s.isVirtual&&s.storage){let a=await lt(s.storage.driver,s.storage);t={driver:s.storage.driver,rapid_upload:typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",stream_upload:typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function"}}}catch(n){t={error:Ne(n)}}return r.json({code:200,message:"success",data:{formats:["oss","torrent","cas"],version:1,hash_algorithms:["md5","sha1","sha256"],incremental_hashing:!0,torrent_v1:!0,extensions:["x-openlist","x-cas"],offline_download:"conditional",queue_adapter:!1,limits:{metadata_bytes:An(r,"SEED_MAX_METADATA_SIZE",rw),hash_bytes:An(r,"SEED_MAX_HASH_BYTES",k2),files:An(r,"SEED_MAX_FILES",EN)},target:t}})});ys.post("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(Array.isArray(t.paths)&&t.paths.length>0){let g=await Q2(r,e,t.paths),p=await jn(),I=String(p.seed_default_trackers||"").split(` -`).map(x=>x.trim()).filter(Boolean),y=["md5","sha1","sha256"],w=g.map(x=>{let _=y.filter(U=>!!x.hashes[U]),R=_.length<y.length;return{path:x.virtualPath,name:x.relativePath,size:x.size,available_hashes:_,requires_download:R,requires_fetch:R,estimated_traffic:R?x.size:0,streamable:!0,share_available:!0,direct_source_available:!0}}),C=new Set;for(let x of g)for(let _ of y)x.hashes[_]&&C.add(_);let b=y.filter(x=>C.has(x));return r.json({code:200,message:"success",data:{formats:{oss:!0,torrent:!0,cas:!0},files:w,existing_hashes:b,estimated_traffic:w.reduce((x,_)=>x+_.estimated_traffic,0),default_matrix:await Sie(),trackers:I}})}let i=await RA(r,e,t),n=We(e,po(t.path)),s=await tt(n);if(s.isVirtual||!s.storage)throw new Error("Target storage was not found");let a=await lt(s.storage.driver,s.storage),c=typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",l=Array.isArray(a.rapidHashAlgos)?a.rapidHashAlgos.map(g=>String(g).toLowerCase()).filter(g=>["md5","sha1","sha256"].includes(g)):["md5","sha1"],d=typeof a.rapidHashNeedsPieces=="boolean"?a.rapidHashNeedsPieces:!1,u=typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function",f=An(r,"SEED_BUFFERED_TRANSFER_MAX",BN),h=i.seed.files.map(g=>{let p=l.some(C=>!!g.hashes[C])||!1,I=d?p&&(g.hashes.pieces.md5.length>0||g.hashes.pieces.sha1.length>0):p,y=!!F2(r,g),w="download_required";return c&&I?w="rapid_upload":y&&u?w="stream_upload":y&&g.size<=f&&(w="bounded_upload"),{path:g.path,method:w,requires_download:w==="download_required"}});return r.json({code:200,message:"success",data:{driver:s.storage.driver,policy:String(t.policy||"inherit"),driver_supports:{cas_rapid:c,rapid_hash_algos:l,rapid_uses_pieces:d},files:h}})}catch(t){return qr(r,400,Ne(t))}});ys.post("/generate",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if((t.save_path||t.output_path)&&!pt(e))return qr(r,403,"Permission denied");let n=(Array.isArray(t.formats)?t.formats:[t.format||"oss"]).map(iw);if(n.some(d=>!d))throw new Error("A valid output format is required");let s=n,{seed:o,torrentPieces:a}=await _ie(r,e,t,s),c=t.output_path||(Array.isArray(t.formats)?t.save_path:void 0),l=[];for(let d of s){let u=Vd(o,d);if(u.length){l.push({format:d,convertible:!1,diagnostics:u});continue}let f=d==="torrent"?await C2(o,a):await PA(o,d),h=c?S2(po(c),vN(o,d)):t.save_path;await _2(r,e,h,f),l.push(D2(o,d,f,{convertible:!0,...h?{path:h}:{}}))}return r.json({code:200,message:"success",data:Array.isArray(t.formats)?{seed:o,outputs:l,artifacts:l}:l[0]})}catch(t){let i=Ne(t);return qr(r,i.includes("limit")||i.includes("exceeds")?413:400,i)}});ys.post("/parse",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r),i=await RA(r,e,t),n=i.seed.files.reduce((a,c)=>a+c.size,0),s=i.seed.files.some(a=>!!F2(r,a)),o=i.seed.files.some(a=>!!a.hashes.md5||!!a.hashes.sha1||!!a.hashes.sha256);return r.json({code:200,message:"success",data:{format:i.format,seed:i.seed,files:i.seed.files,total_size:n,diagnostics:vie(i.seed),conversions:kie(i.seed),capabilities:{rapid_upload:o,offline_download:s,transfer:s,convert:!0,edit:!0,recalculate:!0},direct_preview:!1,...i.info_hash?{info_hash:i.info_hash}:{}}})}catch(t){return qr(r,400,Ne(t))}});ys.post("/convert",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(t.save_path&&!pt(e))return qr(r,403,"Permission denied");let i=iw(t.to_format||t.target_format||t.output_format);if(!i)throw new Error("A valid target format is required");let n=await RA(r,e,t),s=Vd(n.seed,i);if(s.length)return r.json({code:200,message:"success",data:{convertible:!1,diagnostics:s}});let o=await PA(n.seed,i);return await _2(r,e,t.save_path,o),r.json({code:200,message:"success",data:D2(n.seed,i,o,{convertible:!0})})}catch(t){return qr(r,400,Ne(t))}});function Pie(r,e,t,i){if(!e)return;let n=!1;for(let s of i.values())if(s){n=!0;break}n&&!r.channels.some(s=>s.driver===e)&&r.channels.push({driver:e,mount_path:t});for(let s of r.files){if(!i.has(s.path))continue;i.get(s.path)?s.missing_channels=s.missing_channels.filter(a=>a!==e):s.missing_channels.includes(e)||s.missing_channels.push(e)}}async function DN(r,e){let t=await Me(r);if(!pt(t))return qr(r,403,"Permission denied");if(!e&&!_a(t,Qa.OFFLINE_DOWNLOAD))return qr(r,403,"Offline download permission is required");try{let i=await Yd(r),n=await RA(r,t,i),s=po(i.target_path||i.destination||i.path||"/"),o=new Set(Array.isArray(i.files)?i.files.map(p=>String(p)):[]),a=new Set(Array.isArray(i.selected_files)?i.selected_files.map(p=>Number(p)):[]);if([...a].some(p=>!Number.isSafeInteger(p)||p<0||p>=n.seed.files.length))throw new Error("selected_files contains an invalid index");let c="",l="";try{let p=await tt(We(t,s));!p.isVirtual&&p.storage&&(c=p.storage.driver||"",l=p.storage.mount_path||"")}catch{}let d=n.seed.files.filter((p,I)=>o.size?o.has(p.path):a.size?a.has(I):!0),u=[],f=new Map,h=0;for(let p of d){let I=S2(s,p.path),y=F2(r,p);try{if(!e&&!y)throw new Error("capability unavailable: offline download requires an approved source URL");let w=await Fie(r,t,p,I,y,e);h++,f.set(p.path,!0),u.push({path:p.path,target:I,...w})}catch(w){f.set(p.path,!1),u.push({path:p.path,target:I,status:"unavailable",error:Ne(w)})}}if(h===0)return r.json({code:501,message:e?"capability unavailable: target driver cannot reuse hashes and no transferable source is available":"capability unavailable: no approved source and streaming upload combination is available",data:{results:u}},501);let g={total:u.length,saved:h,results:u};if(i.update_channel===!0&&c){Pie(n.seed,c,l,f);let p=await PA(n.seed,n.format);g.seed_data=Buffer.from(p).toString("base64"),g.seed=n.seed}return r.json({code:200,message:"success",data:g})}catch(i){return qr(r,400,Ne(i))}}ys.post("/rapid_upload",r=>DN(r,!0));ys.post("/offline_download",r=>DN(r,!1));ys.post("/update",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(t.save_path&&!pt(e))return qr(r,403,"Permission denied");let i=await RA(r,e,t),n=t.patch&&typeof t.patch=="object"?t.patch:t,s=t.options&&typeof t.options=="object"?t.options:{},o=n.comment??s.comment,a=!!(n.recalculate??s.recalculate),c=Ki({...i.seed,name:n.name??i.seed.name,comment:o??i.seed.comment,trackers:n.trackers??i.seed.trackers,channels:n.channels??i.seed.channels,files:n.files??i.seed.files}),l=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},d=t.file_sources&&typeof t.file_sources=="object"?t.file_sources:{};for(let h of c.files)if(l[h.path]!==void 0&&(h.comment=String(l[h.path])),Array.isArray(d[h.path])){for(let g of d[h.path])v2(r,g);h.sources=d[h.path]}if(a){let h=Number(t.piece_size||i.seed.piece_size||10485760);if(!Number.isSafeInteger(h)||h<16*1024||h>64*1024*1024)throw new Error("Invalid piece_size");c.piece_size=h;let g=ew(t.hash_matrix,[i.format]),p=Array.isArray(t.recalc_files)?t.recalc_files:[];if(!p.length)throw new Error("recalculate requires at least one recalc_files entry");let I=new Map;for(let C of p)typeof C?.source_path=="string"&&C.source_path.trim()&&I.set(String(C.path),C.source_path);let y=await TA.create(h),w=An(r,"SEED_MAX_HASH_BYTES",k2);for(let C of c.files){let b=I.get(C.path);if(!b)continue;let x=await Q2(r,e,[b]);if(x.length!==1)throw new Error(`Recalculate path must resolve to exactly one file: ${b}`);let _=x[0],R=await nw(r,new URL(_.rawUrl,r.req.url),{headers:_.headers});if(!R.ok||!R.body)throw new Error(`Recalculate download failed with HTTP ${R.status}`);let U=await B2(R.body,h,_.size,w,y);C.hashes=y2({...C,hashes:U.hashes},g).hashes,C.size=U.size,C.cas_slice_md5="",C.cas_create_time=""}}for(let h of c.files)for(let g of h.sources)v2(r,g);let u=iw(t.output_format||t.to_format)||i.format,f=await PA(c,u);return await _2(r,e,t.save_path,f),r.json({code:200,message:"success",data:D2(c,u,f)})}catch(t){return qr(r,400,Ne(t))}});var sw=new Map,Tie=1*1024*1024,Uie=64*1024*1024,Rie=10*1024*1024;function QN(r){return!Number.isFinite(r)||r<=0?Rie:Math.min(Uie,Math.max(Tie,Math.floor(r)))}function Nie(r){let e=Array.from(r).sort((s,o)=>s-o);if(e.length===0)return[];let t=[],i=e[0],n=e[0];for(let s=1;s<e.length;s++)e[s]===n+1?n=e[s]:(t.push([i,n]),i=n=e[s]);return t.push([i,n]),t}function Xc(r){let e=Nie(r.received),t=r.received.size*r.chunk_size,i=0;for(let s=0;s<r.total_chunks&&r.received.has(s);s++)i=s+1;let n=r.total_chunks>0?Math.floor(r.received.size/r.total_chunks*100):0;return{upload_id:r.upload_id,state:r.state,attempt:r.attempt,path:r.path,size:r.size,chunk_size:r.chunk_size,total_chunks:r.total_chunks,received:e,received_bytes:t,frontier:i,storage_progress:n,error:r.error}}function ow(r){return sw.get(r)}function _N(r,e){for(let t of sw.values())if(t.path===r&&t.size===e&&(t.state==="receiving"||t.state==="failed_retriable"))return t}function NA(r){sw.set(r.upload_id,r)}function FN(r){sw.delete(r)}function PN(){return`mp_${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}`}async function qie(r){try{let e=await tt(r);return e?.storage?cN(e.storage):!1}catch{return!1}}var dt=new Xe;dt.route("/seed",ys);var _t=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}},cr=r=>r.json({code:403,message:"Permission denied",data:null},403),Oie=25*1024*1024,Mie=16*1024*1024;function Lie(r,e){let t=r.env||{},i=e?"MAX_UPPART":"MAX_UPLOAD",n=t[i]||(typeof process<"u"?process.env?.[i]:"");if(n){let s=parseInt(String(n),10);if(Number.isFinite(s)&&s>0)return s}return e?Mie:Oie}function aw(r,e=!1){let t=parseInt(r.req.header("Content-Length")||"0",10);if(!t)return null;let i=Lie(r,e);return t>i?i:null}var P2=(r,e)=>{let t=e==="wrong password",i=e||"share error";return r.json({code:t?403:400,message:i,data:null},t?403:400)};dt.post("/dirs",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r),i=e.path||"/";if(!i.startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let s=_t(r),o=i;(!e.force_root||!ms(t))&&(o=We(t,o));try{if(o.startsWith("/@s")){let l=await Md(o,e.password||"",r.env);if(!l.ok)return P2(r,l.error);if(l.virtualList){let f=[];for(let h of l.share.files||[])try{let{item:g}=await Di(h,s);if(g.is_dir){let p=String(h).split("/").filter(Boolean);f.push({name:p[p.length-1]||h,modified:g.modified||new Date().toISOString()})}}catch{}return r.json({code:200,message:"success",data:f})}let{content:d}=await Zt(l.realPath,s),u=d.filter(f=>f.is_dir).map(f=>({name:f.name,modified:f.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:u})}let{content:a}=await Zt(o,s),c=a.filter(l=>l.is_dir).map(l=>({name:l.name,modified:l.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:c})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/list",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/"),o=parseInt(e.page,10)||1,a=parseInt(e.per_page,10)||0,c=l=>{let d=l.length;if(a<=0)return{content:l,total:d};let f=(Math.max(1,o)-1)*a,h=f+a;return{content:l.slice(f,h),total:d}};try{if(s.startsWith("/@s")){let B=await Md(s,e.password||"",r.env);if(!B.ok)return P2(r,B.error);if(B.virtualList){let J=[];for(let G of B.share.files||[]){let K=String(G).split("/").filter(Boolean),$=K[K.length-1]||G;try{let{item:te}=await Di(G,n);J.push({name:$,size:te.size||0,is_dir:!!te.is_dir,modified:te.modified||new Date().toISOString(),sign:"",thumb:te.thumb||"",type:te.type??0})}catch{try{await Zt(G,n),J.push({name:$,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1})}catch{J.push({name:$,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",thumb:"",type:0})}}}let{content:z,total:L}=c(J);return r.json({code:200,message:"success",data:{content:z,total:L,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:"Share"}})}let{content:Q,provider:v}=await Zt(B.realPath,n),E=Q.map(J=>({name:J.name,size:J.size,is_dir:J.is_dir,created:J.created||J.modified||new Date().toISOString(),modified:J.modified||new Date().toISOString(),sign:J.sign||"",thumb:J.thumb||"",type:J.type??0})),{content:P,total:N}=c(E);return r.json({code:200,message:"success",data:{content:P,total:N,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:v}})}let l=await d2(s,r.env);if(!u2(t,l,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);if(await qie(s))return r.json({code:403,message:"Index is disabled for this storage",data:null},403);let{content:d,provider:u,storage:f}=await Zt(s,n),h=pt(t)&&f2(t,l,s),g=A2(l,s),p=await zd(r),I=await WI(r,s),y=p.enabled||I,w=y?p.expiresIn||await DA(r):0,C=await Promise.all(d.filter(B=>!iN(l,s,B.name)).map(async B=>{let Q=`${s}/${B.name}`.replace(/\/{2,}/g,"/"),v=!B.is_dir&&y?await QA(r,Q,w):"",E=B.hashinfo||B.hash_info_str||"",P=B.hash_info||{};return{name:B.name,size:B.size,is_dir:B.is_dir,created:B.created||B.modified||new Date().toISOString(),modified:B.modified||new Date().toISOString(),sign:v,thumb:B.thumb||"",type:B.type??0,hashinfo:E,hash_info:P}})),b=0;if(f&&(b=parseInt(f.page_size,10)||0,!b&&f.addition))try{let B=typeof f.addition=="string"?JSON.parse(f.addition):f.addition;b=parseInt(B?.page_size,10)||0}catch{}let x=a>0?a:b>0?b:0,_=B=>{let Q=B.length;if(x<=0)return{content:B,total:Q};let E=(Math.max(1,o)-1)*x,P=E+x;return{content:B.slice(E,P),total:Q}},R=(()=>{if(!f)return[];let B=[],Q=f;if(/^(s3|minio|cos|oss|r2|b2|cloudflare_r2)/i.test(Q.driver||"")&&B.push("s3_presigned"),Array.isArray(Q.direct_upload_tools))for(let v of Q.direct_upload_tools)B.includes(v)||B.push(v);return B})(),{content:U,total:T}=_(C),D=f?lN(f,s):void 0;return r.json({code:200,message:"success",data:{content:U,total:T,readme:h2(l,s),header:g2(l,s),write:h,write_content_bypass:g,provider:u,direct_upload_tools:R,page_size:x>0?x:void 0,cache_expiration:D}})}catch(l){return r.json({code:500,message:Ne(l),data:null})}});dt.post("/get",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/");try{if(s.startsWith("/@s")){let I=await Md(s,e.password||"",r.env);if(!I.ok)return P2(r,I.error);if(I.virtualList){let x=s.split("/").filter(Boolean)[1]||"share";return r.json({code:200,message:"success",data:{name:x,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1,raw_url:"",readme:I.share.readme||"",header:I.share.header||"",provider:"Share",related:[],write:!1,write_content_bypass:!1}})}let y=s.split("/").filter(Boolean)[1]||"",{item:w,provider:C}=await Di(I.realPath,n),b=s.replace(/^\/@s\/[^/]+/,"");return r.json({code:200,message:"success",data:{name:w.name,size:w.size,is_dir:w.is_dir,created:w.created||w.modified||new Date().toISOString(),modified:w.modified,sign:w.sign||"",thumb:w.thumb||"",type:w.type??0,raw_url:`/api/sd/${y}${b}`,readme:I.share.readme||"",header:I.share.header||"",provider:C,related:[],write:!1,write_content_bypass:!1}})}let o=await d2(s,r.env);if(!u2(t,o,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);let{item:a,provider:c,rawUrl:l}=await Di(s,n),d=await zd(r),u=d.enabled||await WI(r,s),f=!a.is_dir&&u?await QA(r,s,d.expiresIn||await DA(r)):"",h=pt(t)&&f2(t,o,s),g=A2(o,s),p=[];if(!a.is_dir)try{let I=s.includes("/")&&s.slice(0,s.lastIndexOf("/"))||"/",y=a.name.includes(".")?a.name.slice(0,a.name.lastIndexOf(".")):a.name,{content:w}=await Zt(I,n);p=w.filter(C=>C.name===a.name||C.is_dir?!1:(C.name.includes(".")?C.name.slice(0,C.name.lastIndexOf(".")):C.name)===y).map(C=>({name:C.name,size:C.size,is_dir:!1,modified:C.modified||new Date().toISOString(),sign:"",thumb:C.thumb||"",type:C.type??0}))}catch{p=[]}return r.json({code:200,message:"success",data:{name:a.name,size:a.size,is_dir:a.is_dir,created:a.created||a.modified||new Date().toISOString(),modified:a.modified,sign:f,thumb:a.thumb||"",type:a.type??0,raw_url:l,readme:h2(o,s),header:g2(o,s),provider:c,related:p,write:h,write_content_bypass:g}})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});function Wd(r){if(typeof r!="string"||!r.trim())throw new Error("Invalid or empty file name");let e=r.trim();if(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))throw new Error(`Illegal file name '${e}'`);return e}function mo(r){if(typeof r!="string")throw new Error("Path must be a string");if(r.includes("\0"))throw new Error("Path contains illegal null byte");return r}dt.post("/mkdir",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let i=(await r.req.json().catch(()=>({}))).path||"/";try{mo(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let n=We(e,i),s=_t(r);try{return await xA(n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,name:i}=await r.req.json().catch(()=>({})),n="";try{mo(t||"/"),n=Wd(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await CA(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/remove",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{dir:t,names:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let n=[];try{mo(t||"/"),n=i.map(o=>Wd(o))}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await ka(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{mo(t||"/"),mo(i||"/"),s=n.map(a=>Wd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await Od(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/copy",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{mo(t||"/"),mo(i||"/"),s=n.map(a=>Wd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await EA(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.put("/put",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{mo(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=aw(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let o=await r.req.arrayBuffer();return await Tn(i,Buffer.from(o),n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.put("/form",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{mo(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=aw(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let a=(await r.req.formData()).get("file");if(!a||typeof a=="string")return r.json({code:400,message:"missing file in form data",data:null});let c=Buffer.from(await a.arrayBuffer());return await Tn(i,c,n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/upload/create",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,size:n,md5:s}=await r.req.json().catch(()=>({})),o=We(e,t||"/"),a=_t(r);if(!i)return r.json({code:400,message:"path and file_name are required",data:null});try{let c=await tt(o);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let d;try{d=await l.createUploadSession(o,c.physical,i,Number(n)||0,s||"")}finally{await Jt(c.storage.driver,c.storage,l,a)}return r.json({code:200,message:"success",data:d})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.put("/upload/part",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Session")||"",i=parseInt(r.req.header("X-Part-Number")||"0",10),n=decodeURIComponent(r.req.header("Upload-Path")||""),s=We(e,n),o=_t(r);if(!t||!(i>=1)||!s)return r.json({code:400,message:"missing X-Upload-Session / X-Part-Number / Upload-Path",data:null});let a=aw(r,!0);if(a!==null)return r.json({code:413,message:`Part too large (max ${a} bytes)`,data:null},413);try{let c=await tt(s);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.uploadPart!="function")throw new Error("storage does not support chunked upload");let d=Buffer.from(await r.req.arrayBuffer()),u;try{u=await l.uploadPart(t,i,d)}finally{await Jt(c.storage.driver,c.storage,l,o)}return r.json({code:200,message:"success",data:u??null})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.post("/upload/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,session:i,partMd5s:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=_t(r);if(!i)return r.json({code:400,message:"path and session are required",data:null});try{let a=await tt(s);if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await c.completeUploadSession(i,n)}finally{await Jt(a.storage.driver,a.storage,c,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/add_offline_download",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let{path:t,urls:i}=await r.req.json().catch(()=>({})),n=We(e,t||"/");return!i||i.length===0?r.json({code:400,message:"No URLs provided"}):r.json({code:501,message:"capability unavailable: this runtime has no durable offline-download adapter; use /fs/seed/offline_download with an approved source and a streaming-capable target driver",data:{path:n,accepted:0}},501)});dt.post("/search",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.parent||"/");try{let n=await Jd({parent:i,keywords:t.keywords||"",scope:t.scope!==void 0?parseInt(t.scope,10):0,page:t.page?parseInt(t.page,10):1,per_page:t.per_page?parseInt(t.per_page,10):30},r.env);return r.json({code:200,message:"success",data:n})}catch(n){return r.json({code:500,message:Ne(n),data:null},500)}});dt.post("/other",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.path||"/"),n=t.method;if(!n)return r.json({code:400,message:"Missing required parameter 'method'",data:null},400);if(!pt(e))return cr(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.other=="function"){let a=await o.other(n,s.relative,t);return r.json({code:200,message:"success",data:a})}return r.json({code:500,message:`Driver '${s.storage.driver}' does not support other method '${n}'`,data:null},500)}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/batch_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,rename_objects:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"rename_objects is required",data:null},400);let n=We(e,t||"/"),s=_t(r);try{for(let o of i){let a=o?.src_name,c=o?.new_name;if(!a||!c)continue;Wd(c);let l=`${n}/${a}`.replace(/\/{2,}/g,"/");await CA(l,c,s)}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/regex_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,src_name_regex:i,new_name_regex:n}=await r.req.json().catch(()=>({}));if(!i)return r.json({code:400,message:"src_name_regex is required",data:null},400);let s=We(e,t||"/"),o=_t(r);try{let a=new RegExp(i),{content:c}=await Zt(s,o);for(let l of c)if(!l.is_dir&&a.test(l.name)){let d=l.name.replace(a,n||"");Wd(d);let u=`${s}/${l.name}`.replace(/\/{2,}/g,"/");await CA(u,d,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/recursive_move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,conflict_policy:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=We(e,i||"/"),a=n||"overwrite",c=_t(r);try{let l=new Set;if(a!=="overwrite"){let f=await Zt(o,c);l=new Set(f.content.map(h=>h.name))}let d=[s],u=0;for(;d.length>0;){let f=d.shift(),{content:h}=await Zt(f,c);for(let g of h)if(g.is_dir)d.push(`${f}/${g.name}`.replace(/\/{2,}/g,"/"));else{if(l.has(g.name)){if(a==="cancel")return r.json({code:403,message:`file [${g.name}] exists`,data:null},403);if(a==="skip")continue}a!=="overwrite"&&l.add(g.name),await Od(f,o,[g.name],c),u++}}return r.json({code:200,message:`Successfully moved ${u} files`,data:null})}catch(l){return r.json({code:500,message:Ne(l),data:null},500)}});dt.post("/remove_empty_directory",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=async o=>{let{content:a}=await Zt(o,n);for(let l of a)l.is_dir&&await s(`${o}/${l.name}`.replace(/\/{2,}/g,"/"));if(o===i)return;if((await Zt(o,n)).content.length===0){let l=o.split("/").slice(0,-1).join("/")||"/",d=o.split("/").pop();await ka(l,[d],n)}};return await s(i),r.json({code:200,message:"success",data:null})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/link",async r=>{let e=await Me(r);if(!ms(e))return cr(r);let{path:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)return r.json({code:500,message:"storage not found",data:null},500);let o=await lt(s.storage.driver,s.storage);try{let a=await o.get(i,s.physical??"/");if(a&&a.raw_url)return r.json({code:200,message:"success",data:{url:a.raw_url}})}finally{await Jt(s.storage.driver,s.storage,o,n)}return r.json({code:200,message:"success",data:{url:`/api/p${i.startsWith("/")?"":"/"}${i}`}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/get_direct_upload_info",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,file_size:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/");try{let o=await tt(s);if(o.isVirtual||!o.storage)return r.json({code:200,message:"success",data:null});let c=await lt(o.storage.driver,o.storage);if(typeof c.getDirectUploadInfo=="function"){let l=await c.getDirectUploadInfo(o.relative,i,n);return r.json({code:200,message:"success",data:l})}if(typeof c.other=="function")for(let l of["direct_upload","get_direct_upload_info"])try{let d=await c.other(l,o.relative,{file_name:i,file_size:n});if(d)return r.json({code:200,message:"success",data:d})}catch{}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});function T2(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}dt.post("/multipart/init",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||""),i=parseInt(r.req.header("X-File-Size")||"0",10),n=parseInt(r.req.header("X-Chunk-Size")||"0",10),s=r.req.header("X-File-Md5")||"";if(!t.trim()||i<=0)return r.json({code:400,message:"Missing File-Path / X-File-Size header",data:null},400);let{dir:o,name:a}=T2(t),c=We(e,o),l=_t(r);try{let d=await tt(c);if(d.isVirtual)throw new Error("failed get storage: storage not found");let u=await lt(d.storage.driver,d.storage);if(typeof u.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let f=QN(n),h=Math.max(1,Math.ceil(i/f)),g,p=!1,I=_N(t,i);if(I)g=I,p=!0;else{let y=await u.createUploadSession(c,d.physical,a,i,s);g={upload_id:PN(),state:"receiving",attempt:0,path:t,size:i,chunk_size:f,total_chunks:h,received:new Set,driver_session:y?.session||"",partMd5s:new Array(h).fill(void 0),storage_driver:d.storage.driver,created_at:Date.now()},y?.reuse&&(g.state="completed",g.received=new Set(Array.from({length:h},(w,C)=>C))),NA(g)}return await Jt(d.storage.driver,d.storage,u,l),r.json({code:200,message:"success",data:{...Xc(g),resumed:p}})}catch(d){return r.json({code:500,message:Ne(d),data:null},500)}});dt.put("/multipart/chunk",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=parseInt(r.req.header("X-Chunk-Index")||"-1",10),n=t?ow(t):void 0;if(!n)return r.json({code:404,message:"upload session not found",data:null},404);if(i<0||i>=n.total_chunks)return r.json({code:400,message:"invalid X-Chunk-Index",data:null},400);if(n.received.has(i))return r.json({code:200,message:"success",data:Xc(n)});let s=aw(r,!0);if(s!==null)return r.json({code:413,message:`Part too large (max ${s} bytes)`,data:null},413);let o=_t(r);try{let a=await tt(We(e,T2(n.path).dir));if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.uploadPart!="function")throw new Error("storage does not support chunked upload");let l=Buffer.from(await r.req.arrayBuffer()),d;try{d=await c.uploadPart(n.driver_session,i+1,l)}finally{await Jt(a.storage.driver,a.storage,c,o)}return n.received.add(i),d?.partMd5&&(n.partMd5s[i]=d.partMd5),NA(n),r.json({code:200,message:"success",data:Xc(n)})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/multipart/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=t?ow(t):void 0;if(!i)return r.json({code:404,message:"upload session not found",data:null},404);if(i.state==="completed")return r.json({code:200,message:"success",data:Xc(i)});let n=_t(r);try{let s=await tt(We(e,T2(i.path).dir));if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await o.completeUploadSession(i.driver_session,i.partMd5s.filter(a=>a!==void 0))}finally{await Jt(s.storage.driver,s.storage,o,n)}return i.state="completed",NA(i),FN(i.upload_id),r.json({code:200,message:"success",data:Xc(i)})}catch(s){return i.state="failed_permanent",i.error=Ne(s),NA(i),r.json({code:500,message:Ne(s),data:null},500)}});dt.get("/multipart/status",async r=>{let e=r.req.query("upload_id")||"",t=e?ow(e):void 0;return t?r.json({code:200,message:"success",data:Xc(t)}):r.json({code:404,message:"upload session not found",data:null},404)});function U2(r){let e=r.toLowerCase();return e.endsWith(".zip")?"zip":e.endsWith(".tar.gz")||e.endsWith(".tgz")?"tar.gz":e.endsWith(".tar.bz2")||e.endsWith(".tbz2")?"tar.bz2":e.endsWith(".tar.xz")||e.endsWith(".txz")?"tar.xz":e.endsWith(".tar")?"tar":e.endsWith(".7z")?"7z":e.endsWith(".rar")?"rar":null}function R2(r){return r==="zip"}async function N2(r,e,t){let i=We(e,t),n=await tt(i);if(n.isVirtual)throw new Error("failed get storage: storage not found");let s=await lt(n.storage.driver,n.storage),o;try{o=await s.get(t,n.physical)}finally{await Jt(n.storage.driver,n.storage,s,_t(r))}if(!o||!o.raw_url)throw new Error("archive driver did not return download link");let a=yh(n.storage?.addition,r.env);zr(o.raw_url,"Archive download",a);let c=await fetch(o.raw_url,{headers:o.raw_url_headers||{}});if(!c.ok)throw new Error(`archive download failed: HTTP ${c.status}`);return await c.arrayBuffer()}function Hie(r){let e=[],t=new Map;for(let i of r.entries){let n=i.name.split("/").filter(Boolean);if(n.length===0)continue;let s=e,o="";for(let a=0;a<n.length;a++){let c=n[a],l=a===n.length-1;if(o=o?`${o}/${c}`:`/${c}`,l)s.push({name:c,size:i.size,is_dir:!1,modified:i.modified||new Date().toISOString(),type:TN(c,!1),children:[]});else{let d=t.get(o);d||(d={name:c,size:0,is_dir:!0,modified:i.modified||new Date().toISOString(),type:1,children:[]},t.set(o,d),s.push(d)),s=d.children}}}return e}function TN(r,e){let t=r.split(".").pop()?.toLowerCase()||"";if(e)return 1;let i=["mp4","mkv","webm","avi","mov","flv","m3u8"],n=["mp3","flac","wav","aac","ogg","m4a"],s=["jpg","jpeg","png","gif","webp","svg","bmp","ico"],o=["txt","md","json","js","ts","css","html","xml","yml","log"];return i.includes(t)?2:n.includes(t)?3:s.includes(t)?4:o.includes(t)?5:6}dt.post("/archive/meta",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim();if(!i)return r.json({code:400,message:"path is required",data:null},400);let n=U2(i);if(!n)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!R2(n))return r.json({code:501,message:`archive format '${n}' is recognized but not supported in this runtime (Worker supports ZIP only); use the Go backend for ${n} archives`,data:null},501);try{let s=await N2(r,e,i),o=XI(s),a=Hie(o);return r.json({code:200,message:"success",data:{comment:"",encrypted:!1,content:a,raw_url:"",sign:""}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/archive/list",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim(),n=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!i)return r.json({code:400,message:"path is required",data:null},400);let s=U2(i);if(!s)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!R2(s))return r.json({code:501,message:`archive format '${s}' is recognized but not supported in this runtime; use the Go backend for ${s} archives`,data:null},501);try{let o=await N2(r,e,i),a=XI(o),c=n?n.replace(/^\/+|\/+$/g,"")+"/":"",l=a.entries.filter(f=>c?f.name.startsWith(c)&&f.name!==c.slice(0,-1):!f.name.includes("/")).map(f=>{let h=c?f.name.slice(c.length):f.name;return{name:h.split("/")[0],size:f.size,is_dir:!1,modified:f.modified||new Date().toISOString(),type:TN(h.split("/")[0],!1)}}),d=new Set,u=l.filter(f=>d.has(f.name)?!1:(d.add(f.name),!0));return r.json({code:200,message:"success",data:{content:u,total:u.length}})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/archive/decompress",async r=>{let e=await Me(r);if(!pt(e))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=String(t.src_dir||"").trim(),n=String(t.dst_dir||"").trim(),s=Array.isArray(t.name)?t.name:t.name?[String(t.name)]:[],o=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!s.length||!n)return r.json({code:400,message:"src_dir/dst_dir/name are required",data:null},400);try{let a=0;for(let c of s){let l=i?`${i}/${c}`:`/${c}`,d=U2(c);if(!d||!R2(d))return r.json({code:400,message:`unsupported archive format: ${c} (only ZIP is supported)`,data:null},400);let u=await N2(r,e,l),f=XI(u),h=o?o.replace(/^\/+|\/+$/g,"")+"/":"";for(let g of f.entries){if(h&&!g.name.startsWith(h))continue;let p=h?g.name.slice(h.length):g.name;if(!p||p.endsWith("/"))continue;let I=`${n.replace(/\/+$/,"")}/${p}`,y=await AN(u,g);await Tn(I,Buffer.from(y),_t(r)),a++}}return r.json({code:200,message:"success",data:{task:null,count:a}})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});sl();wr();Ve();Yt();bA();Da();var Vq=new Set(["weiyun","sftp","ftp","smb","crypt","virtual","strm","meganz","protondrive","chunk","googledrive","googlephoto","quarkopen","quarkuc","chaoxing","local"]),Qoe=new Set(["webdav","baidunetdisk","123pan","123open","123panshare"]),Yq=new Set(["139yun","alias","alistv3","openlist"]),_oe=["down_proxy_url","download_proxy_url","proxy_url"];function ol(r){return String(r??"").toLowerCase().replace(/[^a-z0-9]/g,"")}function al(r){let e=Array.isArray(r)?r.join(","):r;return String(e??"").split(",").map(t=>t.trim().toLowerCase().replace(/^\./,"")).filter(Boolean)}function Wq(r){let e=String(r??"").split("/").pop()?.trim();if(!e)return"";let t=e.lastIndexOf(".");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase()}function Xq(r){return Vq.has(ol(r))}function Foe(r){let e=sN(r?.addition),t=String(e.storage_zone_name??"").trim(),i=String(e.cdn_base_url??"").trim();return t!==""&&i===""}function Lw(r,e){let t=ol(e??r?.driver);return Vq.has(t)?!0:t==="bunnystorage"?Foe(r):!1}function nv(r){return Qoe.has(ol(r))}function Zq(r){if(!r)return"";let e=r.webdav_policy??r.webdavPolicy??r.policy??r.webdavPolicyType;return typeof e=="string"?e.trim():""}function eO(r){if(!r)return"";for(let t of["down_proxy_url","downProxyUrl"]){let i=r[t];if(typeof i=="string"&&i.trim())return i.trim()}let e=r.addition;if(typeof e=="string")try{e=JSON.parse(e||"{}")}catch{return""}if(!e||typeof e!="object")return"";for(let t of _oe){let i=e[t];if(typeof i=="string"&&i.trim())return i.trim()}return""}function tO(r){if(!r)return!1;let e=r.disable_proxy_sign??r.disableProxySign;return typeof e=="string"?e.toLowerCase()==="true":!!e}function rO(r,e){let t=r?.web_proxy??r?.webProxy;return t===!0||t==="true"?!0:t===!1||t==="false"?!1:nv(e)}function iO(r,e,t,i={}){let n=ol(e);if(Lw(r,n))return{mode:"native_proxy",needsProxy:!0,source:"force"};if(rO(r,n))return{mode:"native_proxy",needsProxy:!0,source:"web_proxy"};if(t)return{mode:"native_proxy",needsProxy:!0,source:"proxy_path"};if(iv(Wq(i.filename),i.proxyTypes))return{mode:"native_proxy",needsProxy:!0,source:"proxy_types"};let s=Zq(r);return s?{mode:s,needsProxy:s!=="302_redirect",source:"storage_policy"}:{mode:"302_redirect",needsProxy:!1,source:"driver_default"}}function iv(r,e){return r?al(e).includes(r):!1}function Hw(r){let e=ol(r.driver);if(Lw(r.storage,e)||rO(r.storage,e)||Zq(r.storage)==="use_proxy_url")return!0;let t=Wq(r.filename);return t?iv(t,r.proxyTypes)||iv(t,r.textTypes):!1}wr();Ve();sl();XA();Ao();Qi();$b();var qn=new Xe;qn.get("/list",async r=>{let t=((await ne(r.env)).users||[]).map(i=>({id:i.id,username:i.username,role:i.role,permission:i.permission??0,base_path:i.base_path||"/",disabled:!!i.disabled,sso_id:i.sso_id||"",allow_ldap:!!i.allow_ldap,pwd_update_at:i.pwd_update_at||"",otp:!!i.otp_secret}));return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qn.get("/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10),n=((await ne(r.env)).users||[]).find(s=>s.id===t);return n?r.json({code:200,message:"success",data:{id:n.id,username:n.username,password:"",role:n.role,permission:n.permission??0,base_path:n.base_path||"/",disabled:!!n.disabled,sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp:!!n.otp_secret}}):r.json({code:404,message:"User not found",data:null},404)});qn.post("/create",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.username)return r.json({code:400,message:"Username is required",data:null},400);let t=await ne(r.env);if(t.users||(t.users=[]),t.users.some(l=>l.username===e.username))return r.json({code:400,message:"Username already exists",data:null},400);let s=t.users.reduce((l,d)=>Math.max(l,d.id||0),0)+1,o=e.password||"",a=null;o||(a=du(),o=a);let c={id:s,username:e.username,role:e.role!==void 0?parseInt(e.role,10):0,permission:e.permission!==void 0?parseInt(e.permission,10):0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,pwd_update_at:new Date().toISOString()};return await Fi(c,o),t.users.push(c),await fe(t,r.env),r.json({code:200,message:a?"success (a random password was generated \u2014 pass one explicitly to choose your own)":"success",data:a?{password:a}:null})});qn.post("/update",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.id)return r.json({code:400,message:"User ID is required",data:null},400);let t=parseInt(e.id,10),i=await ne(r.env);i.users||(i.users=[]);let n=i.users.findIndex(o=>o.id===t);if(n===-1)return r.json({code:404,message:"User not found",data:null},404);let s=i.users[n];if(e.username&&e.username!==s.username){if(i.users.some(a=>a.id!==t&&a.username===e.username))return r.json({code:400,message:"Username already in use",data:null},400);s.username=e.username}return e.password&&e.password.trim()!==""&&await Fi(s,e.password.trim()),e.role!==void 0&&(s.role=parseInt(e.role,10)),e.permission!==void 0&&(s.permission=parseInt(e.permission,10)),e.base_path!==void 0&&(s.base_path=e.base_path),e.disabled!==void 0&&(s.disabled=!!e.disabled),e.sso_id!==void 0&&(s.sso_id=e.sso_id),e.allow_ldap!==void 0&&(s.allow_ldap=!!e.allow_ldap),i.users[n]=s,await fe(i,r.env),r.json({code:200,message:"success",data:null})});var nO=async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10);if(t===1)return r.json({code:400,message:"Cannot delete primary admin user",data:null},400);let i=await ne(r.env);return i.users||(i.users=[]),i.users=i.users.filter(n=>n.id!==t),await fe(i,r.env),r.json({code:200,message:"success",data:null})};qn.post("/delete",nO);qn.post("/cancel",nO);qn.get("/sshkey/list",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=await ou(e,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qn.post("/sshkey/delete",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=r.req.query("id");if(!e||!t)return r.json({code:400,message:"Missing uid or id parameter",data:null},400);if(!await Uw(e,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await ou(e,r.env);return r.json({code:200,message:"success",data:n})});qn.post("/cancel_2fa",async r=>{let e=parseInt(r.req.query("id")||"0",10);if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=await ne(r.env),i=(t.users||[]).find(n=>n.id===e);return i?(delete i.otp_secret,await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:404,message:"User not found",data:null},404)});var sO=async r=>{let e=r.req.header("Authorization");if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256"),s=await r.req.json().catch(()=>({})),o=s.old_password||"",a=s.new_password||"";if(!a)return r.json({code:400,message:"New password is required",data:null},400);let c=await ne(r.env);c.users||(c.users=[]);let l=c.users.findIndex(u=>u.id===n.id||u.username===n.username);if(l===-1)return r.json({code:404,message:"User not found",data:null},404);let d=c.users[l];return!d.password||!await lu(d,o)?r.json({code:400,message:"Incorrect old password",data:null},400):(await Fi(d,a),c.users[l]=d,await fe(c,r.env),r.json({code:200,message:"success",data:null}))}catch(i){return r.json({code:401,message:`Unauthorized: ${i.message||"Invalid token"}`,data:null},401)}};var Ue=new Xe;Ue.use("*",async(r,e)=>{if(!await Kd(r))return r.json({code:401,message:"Unauthorized",data:null});await e()});function Poe(r=32){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t=new Uint8Array(r);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(t);else for(let n=0;n<r;n++)t[n]=(Math.random()*256|0)^Date.now()&255;let i="";for(let n=0;n<r;n++)i+=e.charAt(t[n]%e.length);return i}Ue.get("/storage/list",async r=>{let t=(await ne(r.env)).storages||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.post("/storage/load_all",async r=>{let e=await ne(r.env),t=[],i=0,n=0;for(let s of e.storages||[])if(!s.disabled)try{await lt(s.driver,s),i++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){n++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return r.json({code:200,message:"success",data:{loaded:i,failed:n,results:t}})});Ue.get("/storage/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=(await ne(r.env)).storages.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"storage not found",data:null})});var aO=r=>{let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(!e)return"";let i=Object.keys(fu).find(n=>n.toLowerCase()===e||n.toLowerCase().replace(/[^a-z0-9]/g,"")===e);return i||(e.startsWith("115")?"115Open":e.startsWith("123")?"123Pan":e.includes("aliyun")?"AliyundriveOpen":e.startsWith("baidu")?"BaiduNetdisk":e.startsWith("189")||e.includes("cloud189")||e.includes("ctyun")?"Cloud189":e==="onedriveapp"?"OnedriveAPP":e.startsWith("onedrive")?"Onedrive":e.startsWith("google")||e.includes("gdrive")?"GoogleDrive":(e.includes("thunder")||e.includes("xunlei"))&&e.includes("expert")?"ThunderExpert":e.includes("thunder")||e.includes("xunlei")?"Thunder":e==="webdav"||e==="webdavdriver"?"WebDav":e==="wopan"||e.includes("unicom")||e.includes("woyun")?"WoPan":e==="quark"||e==="quarkuc"||e==="uc"?"Quark":["s3","doge","dogecloud","minio","ceph","aws","r2","b2","cos","oss","kodo"].includes(e)?"S3":e.startsWith("github")?"Github":e==="local"?"Local":e.includes("pikpak")?"PikPak":e.includes("seafile")?"Seafile":e.includes("yandex")?"YandexDisk":e.includes("terabox")||e.includes("dubox")?"Terabox":e.includes("mediatrack")||e.includes("fenmiao")?"MediaTrack":e.includes("alias")?"Alias":r||"")},cO=(r,e)=>{let t="";if(typeof e=="object"&&e!==null)try{t=JSON.stringify(e)}catch{t="{}"}else t=String(e||"{}");let i=(r||"").toLowerCase();if(i.includes("thunder")||i.includes("xunlei"))try{let n=JSON.parse(t||"{}");if(!n.device_id||typeof n.device_id!="string"||n.device_id.trim().length!==32){let s=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Math.random().toString(16).substring(2).padEnd(16,"0")+Math.random().toString(16).substring(2).padEnd(16,"0");return n.device_id=s.slice(0,32),JSON.stringify(n)}}catch{}return t};Ue.post("/storage/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.driver||typeof e.driver!="string"||e.driver.trim()===""||e.driver==="undefined"||e.driver==="null")return r.json({code:400,message:"Storage driver is required",data:null},400);let i=e.mount_path;if(!i||String(i).trim()===""){let c=fu[e.driver]?.default_mount_path;c&&(i=c)}let n="/"+String(i||"").split("/").filter(Boolean).join("/");if(t.storages.some(c=>!c.disabled&&"/"+(c.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=aO(e.driver),o=cO(s,e.addition||"{}"),a={...e,driver:s,addition:o,mount_path:n,id:t.storages.length?Math.max(...t.storages.map(c=>c.id))+1:1,status:"work",modified:new Date().toISOString()};t.storages.push(a);try{await fe(t,r.env)}catch(c){return t.storages.pop(),r.json({code:500,message:`Failed to save storage config: ${c.message||String(c)}`,data:null})}if(!a.disabled){try{await lt(a.driver,a),a.status="work"}catch(c){a.status=c.message||String(c),String(c.message||c).includes("unsupported driver")&&(a.disabled=!0);try{await fe(t,r.env)}catch(l){console.error("[admin/storage/create] Failed to update storage status:",l)}return r.json({code:500,message:c.message||String(c),data:a})}try{await fe(t,r.env)}catch(c){console.error("[admin/storage/create] Failed to update storage status after connection:",c)}}return r.json({code:200,message:"success",data:a})});Ue.post("/storage/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env),i=e.mount_path;if(!i||String(i).trim()===""){let o=fu[e.driver]?.default_mount_path;o&&(i=o)}let n=String(i||"").trim()!==""?"/"+String(i||"").split("/").filter(Boolean).join("/"):void 0;if(n&&t.storages.some(o=>o.id!==e.id&&!o.disabled&&"/"+(o.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=t.storages.findIndex(o=>o.id===e.id);if(s!==-1){let o=e.driver||t.storages[s].driver,a=aO(o),c=cO(a,e.addition!==void 0?e.addition:t.storages[s].addition||"{}"),l={...t.storages[s],...e,driver:a,addition:c,mount_path:n||t.storages[s].mount_path,modified:new Date().toISOString()};if(!l.disabled)try{await(await lt(l.driver,l)).init?.(),l.status="work"}catch(d){return l.status=d.message||String(d),String(d.message||d).includes("unsupported driver")&&(l.disabled=!0),t.storages[s]=l,await fe(t,r.env),r.json({code:500,message:d.message||String(d),data:{id:l.id}})}t.storages[s]=l,await fe(t,r.env)}return r.json({code:200,message:"success",data:null})});Ue.post("/storage/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.storages=t.storages.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/storage/enable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!1,i.modified=new Date().toISOString(),await fe(t,r.env),(async()=>{try{await(await lt(i.driver,i)).init?.();let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status="work",o.modified=new Date().toISOString(),await fe(s,r.env))}catch(n){let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status=n.message||String(n),await fe(s,r.env))}})()),r.json({code:200,message:"success",data:null})});Ue.post("/storage/disable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});Ue.get("/driver/names",r=>r.json({code:200,message:"success",data:["AliyundriveOpen","GoogleDrive","Onedrive","OnedriveAPP","Quark","123Pan","BaiduNetdisk","115Open","GitHub API","Thunder","ThunderExpert","189Cloud","WoPan","Lanzou","WebDav","S3","Doge","PikPak","Seafile","YandexDisk","Terabox","MediaTrack","Alias","Dropbox","WPS","139Yun","Mega_nz","115Share","123PanShare","AliyundriveShare","OnedriveSharelink","PikPakShare","SMB","Crypt","Virtual","AListV3","UrlTree","Strm","AzureBlob","USS","Alidoc","Emby","BunnyStorage","CloudflareImgbed","GuangYaPan","AutoIndex","ProtonDrive"]}));var Ft=[{name:"mount_path",type:"string",default:"",required:!0},{name:"order",type:"number",default:"0",required:!1},{name:"remark",type:"string",default:"",required:!1},{name:"cache_expiration",type:"number",default:"30",required:!1,help:"\u76EE\u5F55\u5185\u5BB9\u7F13\u5B58\u65F6\u957F\uFF08\u5206\u949F\uFF09"}],Pt={name:"custom_cache_policies",type:"text",default:"",required:!1,help:'\u6309\u8DEF\u5F84\u8986\u76D6\u7F13\u5B58\u65F6\u957F\uFF0CJSON \u683C\u5F0F\uFF0C\u5982 [{"path":"/photos/*","cache_expiration":1440}]'},Tt={name:"enable_sign",type:"bool",default:"false",required:!0,help:"Enable signature validation for this storage"},Ut={name:"disable_index",type:"bool",default:"false",required:!1,help:"Disable directory listing for this storage"};function Toe(){return{name:"proxy_range",type:"bool",default:"true",required:!1,help:"Need to enable proxy"}}var oO={name:"web_proxy",type:"bool",default:"false",required:!1},sv={name:"webdav_policy",type:"select",options:"302_redirect,use_proxy_url,native_proxy",default:"302_redirect",required:!1};function Rt(r=""){let e=ol(r),t=Yq.has(e)?[Toe()]:[];if(Xq(e))return[...t,{...sv,options:"use_proxy_url,native_proxy",default:"native_proxy"}];let i=nv(e);return[...t,i?{...oO,default:"true"}:{...oO},i?{...sv,default:"native_proxy"}:{...sv}]}var er={name:"seed_policy",type:"select",options:"inherit,on,off",default:"inherit",required:!0,help:"Override automatic transfer-seed generation for this storage"},cl={name:"down_proxy_url",type:"string",default:"",required:!1,help:"\u81EA\u5B9A\u4E49\u4E0B\u8F7D\u4EE3\u7406\u5730\u5740\uFF08\u652F\u6301 $path \u5360\u4F4D\u7B26\uFF1B\u7559\u7A7A\u5219\u7528\u672C\u670D\u52A1\u4EE3\u7406\uFF09"},Nt={name:"disable_proxy_sign",type:"bool",default:"false",required:!1,help:"Disable sign for Download proxy URL"},mt=[...Ft,Pt,Tt,Ut,...Rt(),cl,Nt,er],fu={AliyundriveOpen:{name:"AliyundriveOpen",default_mount_path:"/aliyundrive",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"drive_type",type:"select",options:"resource,backup,default",default:"resource",required:!0},{name:"drive_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!0},{name:"order_by",type:"select",options:"updated_at,name,size,created_at",default:"updated_at",required:!1},{name:"order_direction",type:"select",options:"DESC,ASC",default:"DESC",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/alicloud/renewapi",required:!1,help:"true"},{name:"alipan_type",type:"select",options:"alipanQR,alipanTV",default:"alipanQR",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"remove_way",type:"select",options:"trash,delete",default:"trash",required:!1}],config:{name:"AliyundriveOpen",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Onedrive:{name:"Onedrive",default_mount_path:"/onedrive",common:[...Ft,Pt,Tt,Ut,...Rt("Onedrive"),cl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"is_sharepoint",type:"bool",default:"false",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/onedrive/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"redirect_uri",type:"string",default:"https://api.oplist.org/onedrive/callback",required:!0},{name:"refresh_token",type:"string",default:"",required:!0},{name:"site_id",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Onedrive",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},OnedriveAPP:{name:"OnedriveAPP",default_mount_path:"/onedrive_app",common:[...Ft,Pt,Tt,Ut,...Rt("OnedriveAPP"),cl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"client_id",type:"string",default:"",required:!0},{name:"client_secret",type:"string",default:"",required:!0},{name:"tenant_id",type:"string",default:"",required:!0},{name:"email",type:"string",default:"",required:!0},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveAPP",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GoogleDrive:{name:"GoogleDrive",default_mount_path:"/google-drive",common:[...Ft,Pt,Tt,Ut,...Rt("GoogleDrive"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"folder,name,modifiedTime desc",default:"folder,name,modifiedTime desc",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"api_url_address",type:"string",default:"https://api.alist.nn.ci/googledrive/token",required:!1,help:"true"},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1}],config:{name:"GoogleDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Quark:{name:"Quark",default_mount_path:"/quark",common:mt,additional:[{name:"variant",type:"select",options:"Quark,UC",default:"Quark",required:!0},{name:"cookie",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"0",required:!0},{name:"order_by",type:"select",options:"none,file_type,file_name,updated_at",default:"none",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"use_transcoding_address",type:"bool",default:"false",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1}],config:{name:"Quark",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"123Pan":{name:"123Pan",default_mount_path:"/123",common:[...Ft,Pt,Tt,Ut,...Rt("123Pan"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"access_token",type:"string",default:"",required:!1,help:"\u767B\u5F55\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09\u3002\u4EC5\u9700\u586B\u5199\u4E0A\u65B9 123 \u7F51\u76D8\u624B\u673A\u53F7\u548C\u5BC6\u7801\uFF0C\u767B\u5F55\u540E\u81EA\u52A8\u83B7\u53D6\u5E76\u4FDD\u5B58\uFF0C\u8DF3\u8FC7\u91CD\u590D\u767B\u5F55\u53EF\u907F\u514D\u5883\u5916 IP \u89E6\u53D1\u98CE\u63A7\u3002"},{name:"cookie",type:"text",default:"",required:!1,help:"\u6D4F\u89C8\u5668 Cookie\uFF08\u53EF\u9009\uFF09\u3002\u5728 123 \u7F51\u76D8\u7F51\u9875\u767B\u5F55\u540E\uFF0C\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Cookie \u6574\u4E32\u7C98\u8D34\u4E8E\u6B64\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u4ECE Authorization: Bearer <token> \u4E2D\u590D\u5236 token/Bearer \u503C\u3002\u89E3\u6790\u51FA\u7684 JWT \u4F1A\u4F5C\u4E3A Bearer \u4EE4\u724C\u4F7F\u7528\uFF0C\u6548\u679C\u7B49\u540C\u8BBF\u95EE\u4EE4\u724C\uFF0C\u9002\u5408\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u88AB\u98CE\u63A7\u62E6\u622A\u7684\u73AF\u5883\u3002"},{name:"root_id",type:"string",default:"0",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1,help:"the threads of upload"},{name:"platform",type:"string",default:"web",required:!1,help:"the platform header value, sent with API requests"},{name:"order_by",type:"select",options:"file_id,file_name,size,created_at,updated_at",default:"file_id",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"desc",required:!1}],config:{name:"123Pan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},BaiduNetdisk:{name:"BaiduNetdisk",default_mount_path:"/baidu",common:[...Ft,Pt,Tt,Ut,...Rt("BaiduNetdisk"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u3002\u82E5\u4EE4\u724C\u5931\u6548\uFF0C\u6302\u8F7D\u65F6\u4F1A\u81EA\u52A8\u6839\u636E refresh_token \u901A\u8FC7\u5728\u7EBF API \u6362\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"use_online_api",type:"bool",default:"true",required:!1,help:"\u4F7F\u7528\u5728\u7EBF API \u5237\u65B0 token\uFF08\u65E0\u9700 ClientID/ClientSecret\uFF09"},{name:"api_url_address",type:"string",default:"https://api.oplist.org/baiduyun/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"download_api",type:"select",options:"official,crack,crack_video",default:"official",required:!1},{name:"custom_crack_ua",type:"string",default:"netdisk",required:!0},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1},{name:"upload_thread",type:"string",default:"3",required:!1,help:"1<=thread<=32"},{name:"upload_timeout",type:"number",default:"60",required:!1,help:"per-slice upload timeout in seconds"},{name:"custom_upload_part_size",type:"number",default:"0",required:!1,help:"0 for auto"},{name:"use_dynamic_upload_api",type:"bool",default:"true",required:!1,help:"dynamically get upload api domain, when enabled, the 'Upload API' setting will be used as a fallback if failed to get"},{name:"upload_api",type:"string",default:"https://d.pcs.baidu.com",required:!1},{name:"low_bandwith_upload_mode",type:"bool",default:"false",required:!1}],config:{name:"BaiduNetdisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Open":{name:"115Open",default_mount_path:"/115",common:[...Ft,Pt,Tt,Ut,...Rt("115Open"),Nt,er],additional:[{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1B\u5931\u6548\u65F6\u81EA\u52A8\u7528 refresh_token \u5237\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"refresh_token",type:"string",default:"",required:!0,help:"\u5237\u65B0\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1Baccess_token \u5931\u6548\u65F6\u81EA\u52A8\u5237\u65B0\u3002"},{name:"root_id",type:"string",default:"0",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID\uFF0C\u9ED8\u8BA4 0\uFF08\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"file_name,file_size,user_utime,file_type",default:"file_name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"page_size",type:"number",default:"200",required:!1,help:"list api per page size (1~1150)"},{name:"limit_rate",type:"float",default:"1",required:!1,help:"limit all api request rate ([limit]r/1s)\uFF0C0 \u8868\u793A\u4E0D\u9650\u901F"}],config:{name:"115Open",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"GitHub API":{name:"GitHub API",default_mount_path:"/github",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"token",type:"string",default:"",required:!0},{name:"owner",type:"string",default:"",required:!0},{name:"repo",type:"string",default:"",required:!0},{name:"ref",type:"string",default:"",required:!1,help:"A branch, a tag or a commit SHA, default branch by default."},{name:"gh_proxy",type:"string",default:"",required:!1,help:"GitHub proxy, e.g. https://ghproxy.net/raw.githubusercontent.com"},{name:"committer_name",type:"string",default:"",required:!1},{name:"committer_email",type:"string",default:"",required:!1},{name:"author_name",type:"string",default:"",required:!1},{name:"author_email",type:"string",default:"",required:!1},{name:"mkdir_commit_message",type:"text",default:"{{.UserName}} mkdir {{.ObjPath}}",required:!1},{name:"delete_commit_message",type:"text",default:"{{.UserName}} remove {{.ObjPath}}",required:!1},{name:"put_commit_message",type:"text",default:"{{.UserName}} upload {{.ObjPath}}",required:!1},{name:"rename_commit_message",type:"text",default:"{{.UserName}} rename {{.ObjPath}} to {{.TargetName}}",required:!1},{name:"copy_commit_message",type:"text",default:"{{.UserName}} copy {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"move_commit_message",type:"text",default:"{{.UserName}} move {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"GitHub API",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Thunder:{name:"Thunder",default_mount_path:"/thunder",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1,help:"32 hex characters"},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Thunder",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},ThunderExpert:{name:"ThunderExpert",default_mount_path:"/thunderexpert",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"login_type",type:"select",options:"user,refresh_token",default:"user",required:!0},{name:"sign_type",type:"select",options:"algorithms,captcha_sign",default:"algorithms",required:!0},{name:"username",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"password",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"refresh_token",type:"string",default:"",required:!1,help:"login type is refresh_token, this is required"},{name:"algorithms",type:"string",default:"9uJNVj/wLmdwKrJaVj/omlQ,Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf,Eb+L7Ce+Ej48u,jKY0,ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd,wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK,gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O,5IiCoM9B1/788ntB,P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf,+oK0AN",required:!1},{name:"captcha_sign",type:"string",default:"",required:!1},{name:"timestamp",type:"string",default:"",required:!1},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1},{name:"client_id",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_id\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_secret",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_secret\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_version",type:"string",default:"8.31.0.9726",required:!0},{name:"package_name",type:"string",default:"com.xunlei.downloadprovider",required:!0},{name:"user_agent",type:"string",default:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",required:!0},{name:"download_user_agent",type:"string",default:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",required:!0},{name:"use_video_url",type:"bool",default:"false",required:!1},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"ThunderExpert",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},"189Cloud":{name:"189Cloud",default_mount_path:"/189",common:[...Ft,Pt,Tt,Ut,...Rt("189Cloud"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0,help:"the phone number used to log in"},{name:"password",type:"string",default:"",required:!0,help:"password for login"},{name:"cookie",type:"text",default:"",required:!1,help:"Fill in the cookie if need captcha (\u82E5\u9047\u6ED1\u5757\u9A8C\u8BC1\u7801\u6216\u8BBE\u5907\u9501\uFF0C\u53EF\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165)"},{name:"root_folder_id",type:"string",default:"-11",required:!1,help:"\u6839\u6587\u4EF6\u5939ID\uFF0C\u9ED8\u8BA4\u4E3A -11\uFF08\u4E2A\u4EBA\u4E91\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"lastOpTime,filename,fileSize",default:"lastOpTime",required:!1},{name:"order_direction",type:"select",options:"desc,asc",default:"desc",required:!1}],config:{name:"189Cloud",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-11"}},Lanzou:{name:"Lanzou",default_mount_path:"/lanzou",common:mt,additional:[{name:"type",type:"select",options:"cookie,account,url",default:"cookie",required:!0},{name:"account",type:"string",default:"",required:!1,help:"\u8D26\u53F7\uFF08\u624B\u673A\u53F7/UID\uFF09\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"password",type:"string",default:"",required:!1,help:"\u5BC6\u7801\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"cookie",type:"text",default:"",required:!1,help:"\u767B\u5F55 Cookie\uFF08\u542B ylogin, phpdisk_info \u7B49\uFF09\uFF0Ccookie \u6A21\u5F0F\u9700\u586B\u5199\uFF1B\u6709\u6548\u671F\u7EA6 15 \u5929"},{name:"root_folder_id",type:"string",default:"-1",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID / \u5206\u4EAB ID\uFF08\u4E2A\u4EBA\u76D8\u9ED8\u8BA4 -1\uFF0C\u5206\u4EAB\u94FE\u63A5\u586B\u5206\u4EAB ID \u5982 b00xxxx\uFF09"},{name:"share_password",type:"string",default:"",required:!1,help:"\u63D0\u53D6\u7801 / \u8BBF\u95EE\u5BC6\u7801\uFF08\u65E0\u5BC6\u7801\u7559\u7A7A\uFF09"},{name:"baseUrl",type:"string",default:"https://pc.woozooo.com",required:!1,help:"\u57FA\u672C API \u57DF\u540D"},{name:"shareUrl",type:"string",default:"https://pan.lanzoui.com",required:!1,help:"\u5206\u4EAB\u9875\u9762\u89E3\u6790\u57DF\u540D"},{name:"user_agent",type:"string",default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/42",required:!0,help:"\u53D1\u9001\u7ED9\u84DD\u594F\u4E91 API \u4E0E\u76F4\u94FE\u89E3\u6790\u65F6\u643A\u5E26\u7684\u5BA2\u6237\u7AEF User-Agent"},{name:"repair_file_info",type:"bool",default:"false",required:!1,help:"\u901A\u8FC7 HEAD \u8BF7\u6C42\u4FEE\u6B63\u6587\u4EF6\u7CBE\u786E\u5927\u5C0F\u4E0E\u4FEE\u6539\u65F6\u95F4\uFF08WebDAV \u63A8\u8350\u5F00\u542F\uFF09"},{name:"order_by",type:"select",options:"name,size,time",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Lanzou",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-1"}},WebDav:{name:"WebDav",default_mount_path:"/webdav",common:[...Ft,Pt,Tt,Ut,...Rt("WebDav"),cl,Nt,er],additional:[{name:"vendor",type:"select",options:"other,sharepoint",default:"other",required:!0},{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"tls_insecure_skip_verify",type:"bool",default:"false",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WebDav",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WoPan:{name:"WoPan",default_mount_path:"/wopan",common:mt,additional:[{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"family_id",type:"string",default:"",required:!1,help:"true"},{name:"sort_rule",type:"select",options:"name_asc,name_desc,time_asc,time_desc,size_asc,size_desc",default:"name_asc",required:!1},{name:"access_token",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WoPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0",no_overwrite_upload:!0}},S3:{name:"S3",default_mount_path:"/s3",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"S3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Doge:{name:"Doge",default_mount_path:"/doge",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Doge",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},WeiYun:{name:"WeiYun",default_mount_path:"/weiyun",common:[...Ft,Pt,Tt,Ut,...Rt("WeiYun"),Nt,er],additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"cookies",type:"text",default:"",required:!0},{name:"order_by",type:"select",options:"name,size,updated_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"upload_thread",type:"string",default:"4",required:!1,help:"4<=thread<=32"}],config:{name:"WeiYun",local_sort:!1,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"",check_status:!0}},SFTP:{name:"SFTP",default_mount_path:"/sftp",common:[...Ft,Pt,Tt,Ut,...Rt("SFTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"SSH host:port (e.g. 127.0.0.1:22)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"private_key",type:"text",default:"",required:!1},{name:"passphrase",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"ignore_symlink_error",type:"bool",default:"false",required:!1,help:"Ignore symlink error"}],config:{name:"SFTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},FTP:{name:"FTP",default_mount_path:"/ftp",common:[...Ft,Pt,Tt,Ut,...Rt("FTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"FTP host:port (e.g. 127.0.0.1:21)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"encoding",type:"string",default:"utf-8",required:!0,help:"Character encoding, e.g. utf-8, gbk, gb2312"},{name:"cwd_list",type:"bool",default:"false",required:!1,help:"Enter directory before listing"},{name:"root_folder_path",type:"string",default:"/",required:!1}],config:{name:"FTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},PikPak:{name:"PikPak",default_mount_path:"/pikpak",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"platform",type:"select",options:"web,android,pc",default:"web",required:!0},{name:"refresh_token",type:"text",default:"",required:!1},{name:"captcha_token",type:"text",default:"",required:!1},{name:"device_id",type:"string",default:"",required:!1},{name:"disable_media_link",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPak",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Seafile:{name:"Seafile",default_mount_path:"/seafile",common:mt,additional:[{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1},{name:"repo_id",type:"string",default:"",required:!1},{name:"repo_pwd",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Seafile",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},YandexDisk:{name:"YandexDisk",default_mount_path:"/yandex",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/yandexui/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,path,created,modified,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"YandexDisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Terabox:{name:"Terabox",default_mount_path:"/terabox",common:[...Ft,Pt,Tt,Ut,...Rt("Terabox"),Nt,er],additional:[{name:"cookie",type:"text",default:"",required:!0},{name:"download_api",type:"select",options:"official,crack",default:"official",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Terabox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},MediaTrack:{name:"MediaTrack",default_mount_path:"/mediatrack",common:mt,additional:[{name:"access_token",type:"text",default:"",required:!0},{name:"project_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"updated_at,title,size",default:"title",required:!1},{name:"order_desc",type:"bool",default:"false",required:!1}],config:{name:"MediaTrack",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Alias:{name:"Alias",default_mount_path:"/alias",common:[...Ft,Pt,Tt,Ut,...Rt("Alias"),cl,Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"Newline-separated list of paths, e.g. /local or sub:/target"},{name:"read_conflict_policy",type:"select",options:"first,random,all",default:"first",required:!1},{name:"write_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict",default:"disabled",required:!1},{name:"put_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict,random,quota,quota_strict",default:"disabled",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Alias",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Dropbox:{name:"Dropbox",default_mount_path:"/dropbox",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"false",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/dropboxs/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_namespace_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Dropbox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WPS:{name:"WPS",default_mount_path:"/wps",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"cookie",type:"text",default:"",required:!0},{name:"mode",type:"select",options:"Personal,Business",default:"Personal",required:!1},{name:"custom_ua",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WPS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"139Yun":{name:"139Yun",default_mount_path:"/139",common:[...Ft,Pt,Tt,Ut,...Rt("139Yun"),cl,Nt,er],additional:[{name:"authorization",type:"text",default:"",required:!0},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"type",type:"select",options:"personal_new,family,group,personal,share",default:"personal_new",required:!1},{name:"link_id",type:"text",default:"",required:!1},{name:"cloud_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"139Yun",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Mega_nz:{name:"Mega_nz",default_mount_path:"/mega",common:[...Ft,Pt,Tt,Ut,...Rt("Mega_nz"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"two_fa_code",type:"string",default:"",required:!1},{name:"two_fa_secret",type:"string",default:"",required:!1},{name:"move_to_trash",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Mega_nz",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Share":{name:"115Share",default_mount_path:"/115_share",common:mt,additional:[{name:"share_code",type:"text",default:"",required:!0},{name:"receive_code",type:"text",default:"",required:!0},{name:"cookie",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"page_size",type:"number",default:"1000",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"115Share",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},"123PanShare":{name:"123PanShare",default_mount_path:"/123_share",common:[...Ft,Pt,Tt,Ut,...Rt("123PanShare"),Nt,er],additional:[{name:"sharekey",type:"string",default:"",required:!0},{name:"sharepassword",type:"string",default:"",required:!1},{name:"accesstoken",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"123PanShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},AliyundriveShare:{name:"AliyundriveShare",default_mount_path:"/aliyun_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"name,size,updated_at,created_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"ASC,DESC",default:"ASC",required:!1}],config:{name:"AliyundriveShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}},OnedriveSharelink:{name:"OnedriveSharelink",default_mount_path:"/onedrive_share",common:mt,additional:[{name:"url",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveSharelink",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"/"}},PikPakShare:{name:"PikPakShare",default_mount_path:"/pikpak_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"platform",type:"select",options:"android,web,pc",default:"web",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPakShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},SMB:{name:"SMB",default_mount_path:"/smb",common:[...Ft,Pt,Tt,Ut,...Rt("SMB"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0},{name:"share_name",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"port",type:"number",default:"445",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"SMB",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Crypt:{name:"Crypt",default_mount_path:"/crypt",common:[...Ft,Pt,Tt,Ut,...Rt("Crypt"),Nt,er],additional:[{name:"remote_path",type:"string",default:"",required:!0,help:"\u52A0\u5BC6\u6570\u636E\u5B9E\u9645\u5B58\u50A8\u7684\u4F4D\u7F6E\uFF08\u53E6\u4E00\u4E2A\u5DF2\u6302\u8F7D\u5B58\u50A8\u7684\u8DEF\u5F84\uFF0C\u5982 /aliyundrive/enc\uFF09"},{name:"password",type:"string",default:"",required:!0,help:"\u4E3B\u5BC6\u7801\uFF08\u7528\u4E8E\u6D3E\u751F\u52A0\u5BC6\u5BC6\u94A5\uFF09"},{name:"salt",type:"string",default:"",required:!1,help:"\u76D0\uFF08\u7B2C\u4E8C\u5BC6\u7801\uFF09\u3002\u53EF\u9009\u4F46\u63A8\u8350\uFF0C\u63D0\u9AD8\u5BC6\u94A5\u5F3A\u5EA6"},{name:"filename_encryption",type:"select",options:"off,standard,obfuscate",default:"off",required:!0,help:"\u6587\u4EF6\u540D\u52A0\u5BC6\u65B9\u5F0F\u3002\u5F53\u524D\u4EC5\u652F\u6301 off\uFF08\u6587\u4EF6\u540D\u4E0D\u52A0\u5BC6\uFF0C\u4EC5\u5185\u5BB9\u52A0\u5BC6\uFF09"},{name:"directory_name_encryption",type:"select",options:"false,true",default:"false",required:!0},{name:"encrypted_suffix",type:"string",default:".bin",required:!0,help:"\u52A0\u5BC6\u6587\u4EF6\u7684\u540E\u7F00\uFF08\u9AD8\u7EA7\u9009\u9879\uFF09"},{name:"filename_encoding",type:"select",options:"base64,base32,base32768",default:"base64",required:!0},{name:"thumbnail",type:"bool",default:"false",required:!1},{name:"show_hidden",type:"bool",default:"true",required:!1}],config:{name:"Crypt",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",no_link_url:!0,check_status:!0}},Virtual:{name:"Virtual",default_mount_path:"/virtual",common:[...Ft,Pt,Tt,Ut,...Rt("Virtual"),Nt,er],additional:[{name:"num_file",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u6587\u4EF6\u6570\u91CF"},{name:"num_folder",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u76EE\u5F55\u6570\u91CF"},{name:"max_file_size",type:"number",default:"1073741824",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5927\u5B57\u8282\u6570"},{name:"min_file_size",type:"number",default:"1048576",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5C0F\u5B57\u8282\u6570"}],config:{name:"Virtual",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!0,default_root:"/",no_link_url:!0}},AListV3:{name:"AListV3",default_mount_path:"/alist",common:[...Ft,Pt,Tt,Ut,...Rt("AListV3"),cl,Nt,er],additional:[{name:"url",type:"string",default:"",required:!0,help:"\u53E6\u4E00\u4E2A OpenList / AList \u5B9E\u4F8B\u7684\u5730\u5740\uFF0C\u5982 https://example.com"},{name:"meta_password",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09"},{name:"pass_ip_to_upsteam",type:"bool",default:"true",required:!1},{name:"pass_ua_to_upsteam",type:"bool",default:"true",required:!1},{name:"forward_archive_requests",type:"bool",default:"true",required:!1}],config:{name:"AListV3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},UrlTree:{name:"UrlTree",default_mount_path:"/url_tree",common:mt,additional:[{name:"url_structure",type:"text",default:"",required:!0,help:"URL \u6811\u7ED3\u6784\u6587\u672C\uFF0C\u6BCF\u884C\u7F29\u8FDB 2 \u7A7A\u683C\u8868\u793A\u4E00\u7EA7\u3002\u76EE\u5F55\u884C\u4EE5 : \u7ED3\u5C3E\uFF0C\u6587\u4EF6\u884C\u683C\u5F0F [FileName:][FileSize:][Modified:]Url"},{name:"head_size",type:"bool",default:"false",required:!1,help:"\u7528 HEAD \u8BF7\u6C42\u83B7\u53D6\u6587\u4EF6\u5927\u5C0F\uFF08\u53EF\u80FD\u5931\u8D25\uFF09"},{name:"writable",type:"bool",default:"false",required:!1,help:"\u5141\u8BB8\u589E\u5220\u6539\u6587\u4EF6\u6811\uFF08\u4F1A\u6301\u4E45\u5316\u56DE url_structure\uFF09"}],config:{name:"UrlTree",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Strm:{name:"Strm",default_mount_path:"/strm",common:[...Ft,Pt,Tt,Ut,...Rt("Strm"),Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"\u8DEF\u5F84\u6620\u5C04\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF1A\u865A\u62DF\u540D:\u5E95\u5C42\u8DEF\u5F84\uFF08\u5982 movies:/aliyundrive/movies\uFF09\uFF0C\u6216\u76F4\u63A5\u5E95\u5C42\u8DEF\u5F84"},{name:"siteUrl",type:"text",default:"",required:!1,help:"strm \u6587\u4EF6\u5185\u5BB9\u7684 URL \u524D\u7F00\uFF08\u7559\u7A7A\u5219\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF09"},{name:"PathPrefix",type:"text",default:"/d",required:!1,help:"\u4E0B\u8F7D\u8DEF\u5F84\u524D\u7F00"},{name:"downloadFileTypes",type:"text",default:"ass,srt,vtt,sub,strm",required:!1,help:"\u9700\u539F\u6837\u4E0B\u8F7D\u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u901A\u5E38\u4E3A\u5B57\u5E55\uFF09"},{name:"filterFileTypes",type:"text",default:"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac",required:!1,help:"\u652F\u6301\u751F\u6210 strm \u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u89C6\u9891/\u97F3\u9891\uFF09"},{name:"encodePath",type:"bool",default:"true",required:!1},{name:"withoutUrl",type:"bool",default:"false",required:!1},{name:"withSign",type:"bool",default:"false",required:!1}],config:{name:"Strm",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!0,need_ms:!1,default_root:"/",no_link_url:!0}},AzureBlob:{name:"AzureBlob",default_mount_path:"/azure",common:mt,additional:[{name:"endpoint",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u7AEF\u70B9\uFF0C\u5982 https://accountname.blob.core.windows.net/"},{name:"access_key",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u8BBF\u95EE\u5BC6\u94A5\uFF08Base64\uFF09"},{name:"container_name",type:"string",default:"",required:!0,help:"\u5BB9\u5668\u540D\u79F0"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"SAS URL \u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"AzureBlob",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},USS:{name:"USS",default_mount_path:"/uss",common:mt,additional:[{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0,help:"\u4E0B\u8F7D\u57DF\u540D\uFF08\u53EF\u542B\u534F\u8BAE\u5934\uFF09"},{name:"operator_name",type:"string",default:"",required:!0},{name:"operator_password",type:"string",default:"",required:!0},{name:"anti_theft_chain_token",type:"string",default:"",required:!1,help:"\u9632\u76D7\u94FE Token\uFF08\u7559\u7A7A\u5219\u7528\u64CD\u4F5C\u5458\u5BC6\u7801\uFF09"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"USS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Alidoc:{name:"Alidoc",default_mount_path:"/alidoc",common:mt,additional:[{name:"cookie",type:"text",default:"",required:!0,help:"\u9489\u9489\u6587\u6863\u7F51\u9875 Cookie"},{name:"root_folder_id",type:"string",default:"",required:!0,help:"\u6839\u76EE\u5F55 dentryUuid"}],config:{name:"Alidoc",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},Emby:{name:"Emby",default_mount_path:"/emby",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"Emby \u670D\u52A1\u5668\u5730\u5740\uFF0C\u5982 http://localhost:8096"},{name:"api_key",type:"string",default:"",required:!1},{name:"user_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"link_method",type:"select",options:"stream,download",default:"stream",required:!1},{name:"root_folder_id",type:"string",default:"1",required:!1,help:"\u6839\u76EE\u5F55 ID\uFF0C\u9ED8\u8BA4 1"}],config:{name:"Emby",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"1"}},BunnyStorage:{name:"BunnyStorage",default_mount_path:"/bunny",common:mt,additional:[{name:"storage_zone_name",type:"string",default:"",required:!0},{name:"access_key",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"storage.bunnycdn.com",required:!1},{name:"cdn_base_url",type:"string",default:"",required:!1},{name:"cdn_token_key",type:"string",default:"",required:!1},{name:"cdn_token_method",type:"select",options:"sha256,hmac_sha256",default:"sha256",required:!1},{name:"cdn_token_include_ip",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"},{name:"placeholder",type:"string",default:".openlist",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"BunnyStorage",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},CloudflareImgbed:{name:"CloudflareImgbed",default_mount_path:"/cfimgbed",common:mt,additional:[{name:"address",type:"string",default:"",required:!0,help:"\u56FE\u5E8A\u670D\u52A1\u5730\u5740"},{name:"token",type:"string",default:"",required:!0},{name:"small_channel_name",type:"string",default:"",required:!1},{name:"large_channel_name",type:"string",default:"",required:!1},{name:"large_channel_type",type:"string",default:"",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"CloudflareImgbed",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GuangYaPan:{name:"GuangYaPan",default_mount_path:"/guangyapan",common:mt,additional:[{name:"client_id",type:"string",default:"",required:!0},{name:"device_id",type:"string",default:"",required:!1},{name:"device_sign",type:"string",default:"",required:!1},{name:"access_token",type:"text",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!1},{name:"phone_number",type:"string",default:"",required:!1,help:"\u624B\u673A\u53F7\uFF08\u767B\u5F55\u7528\uFF0C+86 \u683C\u5F0F\uFF09"},{name:"verify_code",type:"string",default:"",required:!1},{name:"page_size",type:"number",default:"100",required:!1},{name:"order_by",type:"number",default:"3",required:!1},{name:"sort_type",type:"number",default:"1",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"GuangYaPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},AutoIndex:{name:"AutoIndex",default_mount_path:"/autoindex",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"AutoIndex \u76EE\u5F55\u9875 URL"},{name:"item_xpath",type:"string",default:"//pre/a",required:!0},{name:"name_xpath",type:"string",default:"@href",required:!0},{name:"modified_xpath",type:"string",default:"string(following-sibling::text()[2])",required:!1},{name:"size_xpath",type:"string",default:"string(following-sibling::text()[1])",required:!1},{name:"ignore_file_names",type:"text",default:`. +`);let a=vce(e,t,n),o=AC.getSymbolSize(e),c=new gce(o);return xce(c,e),Cce(c),Ece(c,e),xk(c,t,0),e>=7&&Bce(c,e),bce(c,a),isNaN(i)&&(i=Ck.getBestMask(c,xk.bind(null,c,t))),Ck.applyMask(i,c),xk(c,t,i),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:i,segments:n}}Wq.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let i=Ik.M,n,s;return typeof t<"u"&&(i=Ik.from(t.errorCorrectionLevel,Ik.M),n=hC.from(t.version),s=Ck.from(t.maskPattern),t.toSJISFunc&&AC.setToSJISFunction(t.toSJISFunc)),Sce(e,n,i,s)}});var bk=ae((oke,Zq)=>{"use strict";var Dce=_t("util"),Xq=_t("stream"),is=Zq.exports=function(){Xq.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Dce.inherits(is,Xq);is.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};is.prototype.write=function(r,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let t;return Buffer.isBuffer(r)?t=r:t=Buffer.from(r,e||this._encoding),this._buffers.push(t),this._buffered+=t.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};is.prototype.end=function(r,e){r&&this.write(r,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};is.prototype.destroySoon=is.prototype.end;is.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};is.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};is.prototype._processReadAllowingLess=function(r){this._reads.shift();let e=this._buffers[0];e.length>r.length?(this._buffered-=r.length,this._buffers[0]=e.slice(r.length),r.func.call(this,e.slice(0,r.length))):(this._buffered-=e.length,this._buffers.shift(),r.func.call(this,e))};is.prototype._processRead=function(r){this._reads.shift();let e=0,t=0,i=Buffer.alloc(r.length);for(;e<r.length;){let n=this._buffers[t++],s=Math.min(n.length,r.length-e);n.copy(i,e,0,s),e+=s,s!==n.length&&(this._buffers[--t]=n.slice(s))}t>0&&this._buffers.splice(0,t),this._buffered-=r.length,r.func.call(this,i)};is.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let r=this._reads[0];if(r.allowLess)this._processReadAllowingLess(r);else if(this._buffered>=r.length)this._processRead(r);else break}this._buffers&&!this.writable&&this._end()}catch(r){this.emit("error",r)}}});var kk=ae(vk=>{"use strict";var bc=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];vk.getImagePasses=function(r,e){let t=[],i=r%8,n=e%8,s=(r-i)/8,a=(e-n)/8;for(let o=0;o<bc.length;o++){let c=bc[o],l=s*c.x.length,d=a*c.y.length;for(let u=0;u<c.x.length&&c.x[u]<i;u++)l++;for(let u=0;u<c.y.length&&c.y[u]<n;u++)d++;l>0&&d>0&&t.push({width:l,height:d,index:o})}return t};vk.getInterlaceIterator=function(r){return function(e,t,i){let n=e%bc[i].x.length,s=(e-n)/bc[i].x.length*8+bc[i].x[n],a=t%bc[i].y.length,o=(t-a)/bc[i].y.length*8+bc[i].y[a];return s*4+o*r*4}}});var Sk=ae((lke,eM)=>{"use strict";eM.exports=function(e,t,i){let n=e+t-i,s=Math.abs(n-e),a=Math.abs(n-t),o=Math.abs(n-i);return s<=a&&s<=o?e:a<=o?t:i}});var Dk=ae((dke,rM)=>{"use strict";var _ce=kk(),Qce=Sk();function tM(r,e,t){let i=r*e;return t!==8&&(i=Math.ceil(i/(8/t))),i}var uf=rM.exports=function(r,e){let t=r.width,i=r.height,n=r.interlace,s=r.bpp,a=r.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],n){let o=_ce.getImagePasses(t,i);for(let c=0;c<o.length;c++)this._images.push({byteWidth:tM(o[c].width,s,a),height:o[c].height,lineIndex:0})}else this._images.push({byteWidth:tM(t,s,a),height:i,lineIndex:0});a===8?this._xComparison=s:a===16?this._xComparison=s*2:this._xComparison=1};uf.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};uf.prototype._unFilterType1=function(r,e,t){let i=this._xComparison,n=i-1;for(let s=0;s<t;s++){let a=r[1+s],o=s>n?e[s-i]:0;e[s]=a+o}};uf.prototype._unFilterType2=function(r,e,t){let i=this._lastLine;for(let n=0;n<t;n++){let s=r[1+n],a=i?i[n]:0;e[n]=s+a}};uf.prototype._unFilterType3=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let a=0;a<t;a++){let o=r[1+a],c=s?s[a]:0,l=a>n?e[a-i]:0,d=Math.floor((l+c)/2);e[a]=o+d}};uf.prototype._unFilterType4=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let a=0;a<t;a++){let o=r[1+a],c=s?s[a]:0,l=a>n?e[a-i]:0,d=a>n&&s?s[a-i]:0,u=Qce(l,c,d);e[a]=o+u}};uf.prototype._reverseFilterLine=function(r){let e=r[0],t,i=this._images[this._imageIndex],n=i.byteWidth;if(e===0)t=r.slice(1,n+1);else switch(t=Buffer.alloc(n),e){case 1:this._unFilterType1(r,t,n);break;case 2:this._unFilterType2(r,t,n);break;case 3:this._unFilterType3(r,t,n);break;case 4:this._unFilterType4(r,t,n);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(t),i.lineIndex++,i.lineIndex>=i.height?(this._lastLine=null,this._imageIndex++,i=this._images[this._imageIndex]):this._lastLine=t,i?this.read(i.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var sM=ae((uke,nM)=>{"use strict";var Fce=_t("util"),iM=bk(),Pce=Dk(),Tce=nM.exports=function(r){iM.call(this);let e=[],t=this;this._filter=new Pce(r,{read:this.read.bind(this),write:function(i){e.push(i)},complete:function(){t.emit("complete",Buffer.concat(e))}}),this._filter.start()};Fce.inherits(Tce,iM)});var ff=ae((fke,aM)=>{"use strict";aM.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Fk=ae((hke,oM)=>{"use strict";var _k=[];(function(){for(let r=0;r<256;r++){let e=r;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;_k[r]=e}})();var Qk=oM.exports=function(){this._crc=-1};Qk.prototype.write=function(r){for(let e=0;e<r.length;e++)this._crc=_k[(this._crc^r[e])&255]^this._crc>>>8;return!0};Qk.prototype.crc32=function(){return this._crc^-1};Qk.crc32=function(r){let e=-1;for(let t=0;t<r.length;t++)e=_k[(e^r[t])&255]^e>>>8;return e^-1}});var Pk=ae((Ake,cM)=>{"use strict";var Dr=ff(),Uce=Fk(),Mr=cM.exports=function(r,e){this._options=r,r.checkCRC=r.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Dr.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Dr.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Dr.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Dr.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Dr.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Dr.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Mr.prototype.start=function(){this.read(Dr.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Mr.prototype._parseSignature=function(r){let e=Dr.PNG_SIGNATURE;for(let t=0;t<e.length;t++)if(r[t]!==e[t]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Mr.prototype._parseChunkBegin=function(r){let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i="";for(let s=4;s<8;s++)i+=String.fromCharCode(r[s]);let n=!!(r[4]&32);if(!this._hasIHDR&&t!==Dr.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Uce,this._crc.write(Buffer.from(i)),this._chunks[t])return this._chunks[t](e);if(!n){this.error(new Error("Unsupported critical chunk type "+i));return}this.read(e+4,this._skipChunk.bind(this))};Mr.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Mr.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Mr.prototype._parseChunkEnd=function(r){let e=r.readInt32BE(0),t=this._crc.crc32();if(this._options.checkCRC&&t!==e){this.error(new Error("Crc error - "+e+" - "+t));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};Mr.prototype._handleIHDR=function(r){this.read(r,this._parseIHDR.bind(this))};Mr.prototype._parseIHDR=function(r){this._crc.write(r);let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i=r[8],n=r[9],s=r[10],a=r[11],o=r[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(new Error("Unsupported bit depth "+i));return}if(!(n in Dr.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(a!==0){this.error(new Error("Unsupported filter method"));return}if(o!==0&&o!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=n;let c=Dr.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:t,depth:i,interlace:!!o,palette:!!(n&Dr.COLORTYPE_PALETTE),color:!!(n&Dr.COLORTYPE_COLOR),alpha:!!(n&Dr.COLORTYPE_ALPHA),bpp:c,colorType:n}),this._handleChunkEnd()};Mr.prototype._handlePLTE=function(r){this.read(r,this._parsePLTE.bind(this))};Mr.prototype._parsePLTE=function(r){this._crc.write(r);let e=Math.floor(r.length/3);for(let t=0;t<e;t++)this._palette.push([r[t*3],r[t*3+1],r[t*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Mr.prototype._handleTRNS=function(r){this.simpleTransparency(),this.read(r,this._parseTRNS.bind(this))};Mr.prototype._parseTRNS=function(r){if(this._crc.write(r),this._colorType===Dr.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(r.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<r.length;e++)this._palette[e][3]=r[e];this.palette(this._palette)}this._colorType===Dr.COLORTYPE_GRAYSCALE&&this.transColor([r.readUInt16BE(0)]),this._colorType===Dr.COLORTYPE_COLOR&&this.transColor([r.readUInt16BE(0),r.readUInt16BE(2),r.readUInt16BE(4)]),this._handleChunkEnd()};Mr.prototype._handleGAMA=function(r){this.read(r,this._parseGAMA.bind(this))};Mr.prototype._parseGAMA=function(r){this._crc.write(r),this.gamma(r.readUInt32BE(0)/Dr.GAMMA_DIVISION),this._handleChunkEnd()};Mr.prototype._handleIDAT=function(r){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-r,this._parseIDAT.bind(this,r))};Mr.prototype._parseIDAT=function(r,e){if(this._crc.write(e),this._colorType===Dr.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let t=r-e.length;t>0?this._handleIDAT(t):this._handleChunkEnd()};Mr.prototype._handleIEND=function(r){this.read(r,this._parseIEND.bind(this))};Mr.prototype._parseIEND=function(r){this._crc.write(r),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var Tk=ae(dM=>{"use strict";var lM=kk(),Rce=[function(){},function(r,e,t,i){if(i===e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=255},function(r,e,t,i){if(i+1>=e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=e[i+1]},function(r,e,t,i){if(i+2>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=255},function(r,e,t,i){if(i+3>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=e[i+3]}],Nce=[function(){},function(r,e,t,i){let n=e[0];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=i},function(r,e,t){let i=e[0];r[t]=i,r[t+1]=i,r[t+2]=i,r[t+3]=e[1]},function(r,e,t,i){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=i},function(r,e,t){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=e[3]}];function Oce(r,e){let t=[],i=0;function n(){if(i===r.length)throw new Error("Ran out of data");let s=r[i];i++;let a,o,c,l,d,u,f,A;switch(e){default:throw new Error("unrecognised depth");case 16:f=r[i],i++,t.push((s<<8)+f);break;case 4:f=s&15,A=s>>4,t.push(A,f);break;case 2:d=s&3,u=s>>2&3,f=s>>4&3,A=s>>6&3,t.push(A,f,u,d);break;case 1:a=s&1,o=s>>1&1,c=s>>2&1,l=s>>3&1,d=s>>4&1,u=s>>5&1,f=s>>6&1,A=s>>7&1,t.push(A,f,u,d,l,c,o,a);break}}return{get:function(s){for(;t.length<s;)n();let a=t.slice(0,s);return t=t.slice(s),a},resetAfterLine:function(){t.length=0},end:function(){if(i!==r.length)throw new Error("extra data found")}}}function qce(r,e,t,i,n,s){let a=r.width,o=r.height,c=r.index;for(let l=0;l<o;l++)for(let d=0;d<a;d++){let u=t(d,l,c);Rce[i](e,n,u,s),s+=i}return s}function Mce(r,e,t,i,n,s){let a=r.width,o=r.height,c=r.index;for(let l=0;l<o;l++){for(let d=0;d<a;d++){let u=n.get(i),f=t(d,l,c);Nce[i](e,u,f,s)}n.resetAfterLine()}}dM.dataToBitMap=function(r,e){let t=e.width,i=e.height,n=e.depth,s=e.bpp,a=e.interlace,o;n!==8&&(o=Oce(r,n));let c;n<=8?c=Buffer.alloc(t*i*4):c=new Uint16Array(t*i*4);let l=Math.pow(2,n)-1,d=0,u,f;if(a)u=lM.getImagePasses(t,i),f=lM.getInterlaceIterator(t,i);else{let A=0;f=function(){let g=A;return A+=4,g},u=[{width:t,height:i}]}for(let A=0;A<u.length;A++)n===8?d=qce(u[A],c,f,s,r,d):Mce(u[A],c,f,s,o,l);if(n===8){if(d!==r.length)throw new Error("extra data found")}else o.end();return c}});var Uk=ae((pke,uM)=>{"use strict";function Lce(r,e,t,i,n){let s=0;for(let a=0;a<i;a++)for(let o=0;o<t;o++){let c=n[r[s]];if(!c)throw new Error("index "+r[s]+" not in palette");for(let l=0;l<4;l++)e[s+l]=c[l];s+=4}}function Hce(r,e,t,i,n){let s=0;for(let a=0;a<i;a++)for(let o=0;o<t;o++){let c=!1;if(n.length===1?n[0]===r[s]&&(c=!0):n[0]===r[s]&&n[1]===r[s+1]&&n[2]===r[s+2]&&(c=!0),c)for(let l=0;l<4;l++)e[s+l]=0;s+=4}}function Kce(r,e,t,i,n){let s=255,a=Math.pow(2,n)-1,o=0;for(let c=0;c<i;c++)for(let l=0;l<t;l++){for(let d=0;d<4;d++)e[o+d]=Math.floor(r[o+d]*s/a+.5);o+=4}}uM.exports=function(r,e){let t=e.depth,i=e.width,n=e.height,s=e.colorType,a=e.transColor,o=e.palette,c=r;return s===3?Lce(r,c,i,n,o):(a&&Hce(r,c,i,n,a),t!==8&&(t===16&&(c=Buffer.alloc(i*n*4)),Kce(r,c,i,n,t))),c}});var AM=ae((mke,hM)=>{"use strict";var Gce=_t("util"),Rk=_t("zlib"),fM=bk(),zce=sM(),Jce=Pk(),jce=Tk(),$ce=Uk(),Hs=hM.exports=function(r){fM.call(this),this._parser=new Jce(r,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=r,this.writable=!0,this._parser.start()};Gce.inherits(Hs,fM);Hs.prototype._handleError=function(r){this.emit("error",r),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Hs.prototype._inflateData=function(r){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Rk.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,i=Math.max(t,Rk.Z_MIN_CHUNK);this._inflate=Rk.createInflate({chunkSize:i});let n=t,s=this.emit.bind(this,"error");this._inflate.on("error",function(o){n&&s(o)}),this._filter.on("complete",this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on("data",function(o){n&&(o.length>n&&(o=o.slice(0,n)),n-=o.length,a(o))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(r)};Hs.prototype._handleMetaData=function(r){this._metaData=r,this._bitmapInfo=Object.create(r),this._filter=new zce(this._bitmapInfo)};Hs.prototype._handleTransColor=function(r){this._bitmapInfo.transColor=r};Hs.prototype._handlePalette=function(r){this._bitmapInfo.palette=r};Hs.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Hs.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Hs.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Hs.prototype._complete=function(r){if(this.errord)return;let e;try{let t=jce.dataToBitMap(r,this._bitmapInfo);e=$ce(t,this._bitmapInfo),t=null}catch(t){this._handleError(t);return}this.emit("parsed",e)}});var pM=ae((yke,gM)=>{"use strict";var Fn=ff();gM.exports=function(r,e,t,i){let n=[Fn.COLORTYPE_COLOR_ALPHA,Fn.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&g)return r}let s=i.bitDepth!==16?r:new Uint16Array(r.buffer),a=255,o=Fn.COLORTYPE_TO_BPP_MAP[i.inputColorType];o===4&&!i.inputHasAlpha&&(o=3);let c=Fn.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(a=65535,c*=2);let l=Buffer.alloc(e*t*c),d=0,u=0,f=i.bgColor||{};f.red===void 0&&(f.red=a),f.green===void 0&&(f.green=a),f.blue===void 0&&(f.blue=a);function A(){let g,p,I,m=a;switch(i.inputColorType){case Fn.COLORTYPE_COLOR_ALPHA:m=s[d+3],g=s[d],p=s[d+1],I=s[d+2];break;case Fn.COLORTYPE_COLOR:g=s[d],p=s[d+1],I=s[d+2];break;case Fn.COLORTYPE_ALPHA:m=s[d+1],g=s[d],p=g,I=g;break;case Fn.COLORTYPE_GRAYSCALE:g=s[d],p=g,I=g;break;default:throw new Error("input color type:"+i.inputColorType+" is not supported at present")}return i.inputHasAlpha&&(n||(m/=a,g=Math.min(Math.max(Math.round((1-m)*f.red+m*g),0),a),p=Math.min(Math.max(Math.round((1-m)*f.green+m*p),0),a),I=Math.min(Math.max(Math.round((1-m)*f.blue+m*I),0),a))),{red:g,green:p,blue:I,alpha:m}}for(let g=0;g<t;g++)for(let p=0;p<e;p++){let I=A(s,d);switch(i.colorType){case Fn.COLORTYPE_COLOR_ALPHA:case Fn.COLORTYPE_COLOR:i.bitDepth===8?(l[u]=I.red,l[u+1]=I.green,l[u+2]=I.blue,n&&(l[u+3]=I.alpha)):(l.writeUInt16BE(I.red,u),l.writeUInt16BE(I.green,u+2),l.writeUInt16BE(I.blue,u+4),n&&l.writeUInt16BE(I.alpha,u+6));break;case Fn.COLORTYPE_ALPHA:case Fn.COLORTYPE_GRAYSCALE:{let m=(I.red+I.green+I.blue)/3;i.bitDepth===8?(l[u]=m,n&&(l[u+1]=I.alpha)):(l.writeUInt16BE(m,u),n&&l.writeUInt16BE(I.alpha,u+2));break}default:throw new Error("unrecognised color Type "+i.colorType)}d+=o,u+=c}return l}});var IM=ae((Ike,yM)=>{"use strict";var mM=Sk();function Vce(r,e,t,i,n){for(let s=0;s<t;s++)i[n+s]=r[e+s]}function Yce(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++)i+=Math.abs(r[s]);return i}function Wce(r,e,t,i,n,s){for(let a=0;a<t;a++){let o=a>=s?r[e+a-s]:0,c=r[e+a]-o;i[n+a]=c}}function Xce(r,e,t,i){let n=0;for(let s=0;s<t;s++){let a=s>=i?r[e+s-i]:0,o=r[e+s]-a;n+=Math.abs(o)}return n}function Zce(r,e,t,i,n){for(let s=0;s<t;s++){let a=e>0?r[e+s-t]:0,o=r[e+s]-a;i[n+s]=o}}function ele(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++){let a=e>0?r[s-t]:0,o=r[s]-a;i+=Math.abs(o)}return i}function tle(r,e,t,i,n,s){for(let a=0;a<t;a++){let o=a>=s?r[e+a-s]:0,c=e>0?r[e+a-t]:0,l=r[e+a]-(o+c>>1);i[n+a]=l}}function rle(r,e,t,i){let n=0;for(let s=0;s<t;s++){let a=s>=i?r[e+s-i]:0,o=e>0?r[e+s-t]:0,c=r[e+s]-(a+o>>1);n+=Math.abs(c)}return n}function ile(r,e,t,i,n,s){for(let a=0;a<t;a++){let o=a>=s?r[e+a-s]:0,c=e>0?r[e+a-t]:0,l=e>0&&a>=s?r[e+a-(t+s)]:0,d=r[e+a]-mM(o,c,l);i[n+a]=d}}function nle(r,e,t,i){let n=0;for(let s=0;s<t;s++){let a=s>=i?r[e+s-i]:0,o=e>0?r[e+s-t]:0,c=e>0&&s>=i?r[e+s-(t+i)]:0,l=r[e+s]-mM(a,o,c);n+=Math.abs(l)}return n}var sle={0:Vce,1:Wce,2:Zce,3:tle,4:ile},ale={0:Yce,1:Xce,2:ele,3:rle,4:nle};yM.exports=function(r,e,t,i,n){let s;if(!("filterType"in i)||i.filterType===-1)s=[0,1,2,3,4];else if(typeof i.filterType=="number")s=[i.filterType];else throw new Error("unrecognised filter types");i.bitDepth===16&&(n*=2);let a=e*n,o=0,c=0,l=Buffer.alloc((a+1)*t),d=s[0];for(let u=0;u<t;u++){if(s.length>1){let f=1/0;for(let A=0;A<s.length;A++){let g=ale[s[A]](r,c,a,n);g<f&&(d=s[A],f=g)}}l[o]=d,o++,sle[d](r,c,a,l,o,n),o+=a,c+=a}return l}});var Nk=ae((wke,wM)=>{"use strict";var fi=ff(),ole=Fk(),cle=pM(),lle=IM(),dle=_t("zlib"),vc=wM.exports=function(r){if(this._options=r,r.deflateChunkSize=r.deflateChunkSize||32*1024,r.deflateLevel=r.deflateLevel!=null?r.deflateLevel:9,r.deflateStrategy=r.deflateStrategy!=null?r.deflateStrategy:3,r.inputHasAlpha=r.inputHasAlpha!=null?r.inputHasAlpha:!0,r.deflateFactory=r.deflateFactory||dle.createDeflate,r.bitDepth=r.bitDepth||8,r.colorType=typeof r.colorType=="number"?r.colorType:fi.COLORTYPE_COLOR_ALPHA,r.inputColorType=typeof r.inputColorType=="number"?r.inputColorType:fi.COLORTYPE_COLOR_ALPHA,[fi.COLORTYPE_GRAYSCALE,fi.COLORTYPE_COLOR,fi.COLORTYPE_COLOR_ALPHA,fi.COLORTYPE_ALPHA].indexOf(r.colorType)===-1)throw new Error("option color type:"+r.colorType+" is not supported at present");if([fi.COLORTYPE_GRAYSCALE,fi.COLORTYPE_COLOR,fi.COLORTYPE_COLOR_ALPHA,fi.COLORTYPE_ALPHA].indexOf(r.inputColorType)===-1)throw new Error("option input color type:"+r.inputColorType+" is not supported at present");if(r.bitDepth!==8&&r.bitDepth!==16)throw new Error("option bit depth:"+r.bitDepth+" is not supported at present")};vc.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};vc.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};vc.prototype.filterData=function(r,e,t){let i=cle(r,e,t,this._options),n=fi.COLORTYPE_TO_BPP_MAP[this._options.colorType];return lle(i,e,t,this._options,n)};vc.prototype._packChunk=function(r,e){let t=e?e.length:0,i=Buffer.alloc(t+12);return i.writeUInt32BE(t,0),i.writeUInt32BE(r,4),e&&e.copy(i,8),i.writeInt32BE(ole.crc32(i.slice(4,i.length-4)),i.length-4),i};vc.prototype.packGAMA=function(r){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(r*fi.GAMMA_DIVISION),0),this._packChunk(fi.TYPE_gAMA,e)};vc.prototype.packIHDR=function(r,e){let t=Buffer.alloc(13);return t.writeUInt32BE(r,0),t.writeUInt32BE(e,4),t[8]=this._options.bitDepth,t[9]=this._options.colorType,t[10]=0,t[11]=0,t[12]=0,this._packChunk(fi.TYPE_IHDR,t)};vc.prototype.packIDAT=function(r){return this._packChunk(fi.TYPE_IDAT,r)};vc.prototype.packIEND=function(){return this._packChunk(fi.TYPE_IEND,null)}});var BM=ae((xke,EM)=>{"use strict";var ule=_t("util"),xM=_t("stream"),fle=ff(),hle=Nk(),CM=EM.exports=function(r){xM.call(this);let e=r||{};this._packer=new hle(e),this._deflate=this._packer.createDeflate(),this.readable=!0};ule.inherits(CM,xM);CM.prototype.pack=function(r,e,t,i){this.emit("data",Buffer.from(fle.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,t)),i&&this.emit("data",this._packer.packGAMA(i));let n=this._packer.filterData(r,e,t);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(n)}});var _M=ae((h0,DM)=>{"use strict";var bM=_t("assert").ok,hf=_t("zlib"),Ale=_t("util"),vM=_t("buffer").kMaxLength;function zl(r){if(!(this instanceof zl))return new zl(r);r&&r.chunkSize<hf.Z_MIN_CHUNK&&(r.chunkSize=hf.Z_MIN_CHUNK),hf.Inflate.call(this,r),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,r&&r.maxLength!=null&&(this._maxLength=r.maxLength)}function gle(r){return new zl(r)}function kM(r,e){e&&process.nextTick(e),r._handle&&(r._handle.close(),r._handle=null)}zl.prototype._processChunk=function(r,e,t){if(typeof t=="function")return hf.Inflate._processChunk.call(this,r,e,t);let i=this,n=r&&r.length,s=this._chunkSize-this._offset,a=this._maxLength,o=0,c=[],l=0,d;this.on("error",function(g){d=g});function u(g,p){if(i._hadError)return;let I=s-p;if(bM(I>=0,"have should not go down"),I>0){let m=i._buffer.slice(i._offset,i._offset+I);if(i._offset+=I,m.length>a&&(m=m.slice(0,a)),c.push(m),l+=m.length,a-=m.length,a===0)return!1}return(p===0||i._offset>=i._chunkSize)&&(s=i._chunkSize,i._offset=0,i._buffer=Buffer.allocUnsafe(i._chunkSize)),p===0?(o+=n-g,n=g,!0):!1}bM(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,r,o,n,this._buffer,this._offset,s),f=f||this._writeState;while(!this._hadError&&u(f[0],f[1]));if(this._hadError)throw d;if(l>=vM)throw kM(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+vM.toString(16)+" bytes");let A=Buffer.concat(c,l);return kM(this),A};Ale.inherits(zl,hf.Inflate);function ple(r,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let t=r._finishFlushFlag;return t==null&&(t=hf.Z_FINISH),r._processChunk(e,t)}function SM(r,e){return ple(new zl(e),r)}DM.exports=h0=SM;h0.Inflate=zl;h0.createInflate=gle;h0.inflateSync=SM});var Ok=ae((Cke,FM)=>{"use strict";var QM=FM.exports=function(r){this._buffer=r,this._reads=[]};QM.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e})};QM.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let r=this._reads[0];if(this._buffer.length&&(this._buffer.length>=r.length||r.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(r.length),r.func.call(this,e.slice(0,r.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var TM=ae(PM=>{"use strict";var mle=Ok(),yle=Dk();PM.process=function(r,e){let t=[],i=new mle(r);return new yle(e,{read:i.read.bind(i),write:function(s){t.push(s)},complete:function(){}}).start(),i.process(),Buffer.concat(t)}});var OM=ae((Bke,NM)=>{"use strict";var UM=!0,RM=_t("zlib"),Ile=_M();RM.deflateSync||(UM=!1);var wle=Ok(),xle=TM(),Cle=Pk(),Ele=Tk(),Ble=Uk();NM.exports=function(r,e){if(!UM)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t;function i(C){t=C}let n;function s(C){n=C}function a(C){n.transColor=C}function o(C){n.palette=C}function c(){n.alpha=!0}let l;function d(C){l=C}let u=[];function f(C){u.push(C)}let A=new wle(r);if(new Cle(e,{read:A.read.bind(A),error:i,metadata:s,gamma:d,palette:o,transColor:a,inflateData:f,simpleTransparency:c}).start(),A.process(),t)throw t;let p=Buffer.concat(u);u.length=0;let I;if(n.interlace)I=RM.inflateSync(p);else{let x=((n.width*n.bpp*n.depth+7>>3)+1)*n.height;I=Ile(p,{chunkSize:x,maxLength:x})}if(p=null,!I||!I.length)throw new Error("bad png - invalid inflate data response");let m=xle.process(I,n);p=null;let w=Ele.dataToBitMap(m,n);m=null;let B=Ble(w,n);return n.data=B,n.gamma=l||0,n}});var HM=ae((bke,LM)=>{"use strict";var qM=!0,MM=_t("zlib");MM.deflateSync||(qM=!1);var ble=ff(),vle=Nk();LM.exports=function(r,e){if(!qM)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t=e||{},i=new vle(t),n=[];n.push(Buffer.from(ble.PNG_SIGNATURE)),n.push(i.packIHDR(r.width,r.height)),r.gamma&&n.push(i.packGAMA(r.gamma));let s=i.filterData(r.data,r.width,r.height),a=MM.deflateSync(s,i.getDeflateOptions());if(s=null,!a||!a.length)throw new Error("bad png - invalid compressed data response");return n.push(i.packIDAT(a)),n.push(i.packIEND()),Buffer.concat(n)}});var KM=ae(qk=>{"use strict";var kle=OM(),Sle=HM();qk.read=function(r,e){return kle(r,e||{})};qk.write=function(r,e){return Sle(r,e)}});var JM=ae(zM=>{"use strict";var Dle=_t("util"),GM=_t("stream"),_le=AM(),Qle=BM(),Fle=KM(),bi=zM.PNG=function(r){GM.call(this),r=r||{},this.width=r.width|0,this.height=r.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,r.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new _le(r),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new Qle(r),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Dle.inherits(bi,GM);bi.sync=Fle;bi.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};bi.prototype.parse=function(r,e){if(e){let t,i;t=function(n){this.removeListener("error",i),this.data=n,e(null,this)}.bind(this),i=function(n){this.removeListener("parsed",t),e(n,null)}.bind(this),this.once("parsed",t),this.once("error",i)}return this.end(r),this};bi.prototype.write=function(r){return this._parser.write(r),!0};bi.prototype.end=function(r){this._parser.end(r)};bi.prototype._metadata=function(r){this.width=r.width,this.height=r.height,this.emit("metadata",r)};bi.prototype._gamma=function(r){this.gamma=r};bi.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};bi.bitblt=function(r,e,t,i,n,s,a,o){if(t|=0,i|=0,n|=0,s|=0,a|=0,o|=0,t>r.width||i>r.height||t+n>r.width||i+s>r.height)throw new Error("bitblt reading outside image");if(a>e.width||o>e.height||a+n>e.width||o+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)r.data.copy(e.data,(o+c)*e.width+a<<2,(i+c)*r.width+t<<2,(i+c)*r.width+t+n<<2)};bi.prototype.bitblt=function(r,e,t,i,n,s,a){return bi.bitblt(this,r,e,t,i,n,s,a),this};bi.adjustGamma=function(r){if(r.gamma){for(let e=0;e<r.height;e++)for(let t=0;t<r.width;t++){let i=r.width*e+t<<2;for(let n=0;n<3;n++){let s=r.data[i+n]/255;s=Math.pow(s,1/2.2/r.gamma),r.data[i+n]=Math.round(s*255)}}r.gamma=0}};bi.prototype.adjustGamma=function(){bi.adjustGamma(this)}});var A0=ae(Jl=>{function jM(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(i){return[i,i]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}Jl.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:jM(e.color.dark||"#000000ff"),light:jM(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};Jl.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};Jl.getImageWidth=function(e,t){let i=Jl.getScale(e,t);return Math.floor((e+t.margin*2)*i)};Jl.qrToImageData=function(e,t,i){let n=t.modules.size,s=t.modules.data,a=Jl.getScale(n,i),o=Math.floor((n+i.margin*2)*a),c=i.margin*a,l=[i.color.light,i.color.dark];for(let d=0;d<o;d++)for(let u=0;u<o;u++){let f=(d*o+u)*4,A=i.color.light;if(d>=c&&u>=c&&d<o-c&&u<o-c){let g=Math.floor((d-c)/a),p=Math.floor((u-c)/a);A=l[s[g*n+p]?1:0]}e[f++]=A.r,e[f++]=A.g,e[f++]=A.b,e[f]=A.a}}});var $M=ae(Ks=>{var Ple=_t("fs"),Tle=JM().PNG,Mk=A0();Ks.render=function(e,t){let i=Mk.getOptions(t),n=i.rendererOpts,s=Mk.getImageWidth(e.modules.size,i);n.width=s,n.height=s;let a=new Tle(n);return Mk.qrToImageData(a.data,e,i),a};Ks.renderToDataURL=function(e,t,i){typeof i>"u"&&(i=t,t=void 0),Ks.renderToBuffer(e,t,function(n,s){n&&i(n);let a="data:image/png;base64,";a+=s.toString("base64"),i(null,a)})};Ks.renderToBuffer=function(e,t,i){typeof i>"u"&&(i=t,t=void 0);let n=Ks.render(e,t),s=[];n.on("error",i),n.on("data",function(a){s.push(a)}),n.on("end",function(){i(null,Buffer.concat(s))}),n.pack()};Ks.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=!1,a=(...c)=>{s||(s=!0,n.apply(null,c))},o=Ple.createWriteStream(e);o.on("error",a),o.on("close",a),Ks.renderToFileStream(o,t,i)};Ks.renderToFileStream=function(e,t,i){Ks.render(t,i).pack().pipe(e)}});var VM=ae(gC=>{var Ule=A0(),Rle={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Nle={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Ole(r,e,t){return r&&e?t.BB:r&&!e?t.BW:!r&&e?t.WB:t.WW}gC.render=function(r,e,t){let i=Ule.getOptions(e),n=Rle;(i.color.dark.hex==="#ffffff"||i.color.light.hex==="#000000")&&(n=Nle);let s=r.modules.size,a=r.modules.data,o="",c=Array(s+i.margin*2+1).join(n.WW);c=Array(i.margin/2+1).join(c+` +`);let l=Array(i.margin+1).join(n.WW);o+=c;for(let d=0;d<s;d+=2){o+=l;for(let u=0;u<s;u++){let f=a[d*s+u],A=a[(d+1)*s+u];o+=Ole(f,A,n)}o+=l+` +`}return o+=c.slice(0,-1),typeof t=="function"&&t(null,o),o};gC.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=_t("fs"),a=gC.render(t,i);s.writeFile(e,a,n)}});var WM=ae(YM=>{YM.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s="\x1B[40m \x1B[0m",a="\x1B[47m \x1B[0m",o="",c=Array(i+3).join(a),l=Array(2).join(a);o+=c+` +`;for(let d=0;d<i;++d){o+=a;for(let u=0;u<i;u++)o+=n[d*i+u]?s:a;o+=l+` +`}return o+=c+` +`,typeof t=="function"&&t(null,o),o}});var tL=ae(eL=>{var qle="\x1B[47m",Mle="\x1B[40m",Lk="\x1B[37m",Hk="\x1B[30m",jl="\x1B[0m",Lle=qle+Hk,Hle=Mle+Lk,Kle=function(r,e,t){return{"00":jl+" "+r,"01":jl+e+"\u2584"+r,"02":jl+t+"\u2584"+r,10:jl+e+"\u2580"+r,11:" ",12:"\u2584",20:jl+t+"\u2580"+r,21:"\u2580",22:"\u2588"}},XM=function(r,e,t,i){let n=e+1;if(t>=n||i>=n||i<-1||t<-1)return"0";if(t>=e||i>=e||i<0||t<0)return"1";let s=i*e+t;return r[s]?"2":"1"},ZM=function(r,e,t,i){return XM(r,e,t,i)+XM(r,e,t,i+1)};eL.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s=!!(e&&e.inverse),a=e&&e.inverse?Hle:Lle,l=Kle(a,s?Hk:Lk,s?Lk:Hk),d=jl+` +`+a,u=a;for(let f=-1;f<i+1;f+=2){for(let A=-1;A<i;A++)u+=l[ZM(n,i,A,f)];u+=l[ZM(n,i,i,f)]+d}return u+=jl,typeof t=="function"&&t(null,u),u}});var iL=ae(rL=>{var Gle=WM(),zle=tL();rL.render=function(r,e,t){return e&&e.small?zle.render(r,e,t):Gle.render(r,e,t)}});var Gk=ae(sL=>{var Jle=A0();function nL(r,e){let t=r.a/255,i=e+'="'+r.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function Kk(r,e,t){let i=r+e;return typeof t<"u"&&(i+=" "+t),i}function jle(r,e,t){let i="",n=0,s=!1,a=0;for(let o=0;o<r.length;o++){let c=Math.floor(o%e),l=Math.floor(o/e);!c&&!s&&(s=!0),r[o]?(a++,o>0&&c>0&&r[o-1]||(i+=s?Kk("M",c+t,.5+l+t):Kk("m",n,0),n=0,s=!1),c+1<e&&r[o+1]||(i+=Kk("h",a),a=0)):n++}return i}sL.render=function(e,t,i){let n=Jle.getOptions(t),s=e.modules.size,a=e.modules.data,o=s+n.margin*2,c=n.color.light.a?"<path "+nL(n.color.light,"fill")+' d="M0 0h'+o+"v"+o+'H0z"/>':"",l="<path "+nL(n.color.dark,"stroke")+' d="'+jle(a,s,n.margin)+'"/>',d='viewBox="0 0 '+o+" "+o+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(n.width?'width="'+n.width+'" height="'+n.width+'" ':"")+d+' shape-rendering="crispEdges">'+c+l+`</svg> +`;return typeof i=="function"&&i(null,f),f}});var aL=ae(pC=>{var $le=Gk();pC.render=$le.render;pC.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=_t("fs"),o='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+pC.render(t,i);s.writeFile(e,o,n)}});var oL=ae(mC=>{var zk=A0();function Vle(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function Yle(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}mC.render=function(e,t,i){let n=i,s=t;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),t||(s=Yle()),n=zk.getOptions(n);let a=zk.getImageWidth(e.modules.size,n),o=s.getContext("2d"),c=o.createImageData(a,a);return zk.qrToImageData(c.data,e,n),Vle(o,s,a),o.putImageData(c,0,0),s};mC.renderToDataURL=function(e,t,i){let n=i;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),n||(n={});let s=mC.render(e,t,n),a=n.type||"image/png",o=n.rendererOpts||{};return s.toDataURL(a,o.quality)}});var lL=ae(g0=>{var Wle=sk(),Jk=Bk(),cL=oL(),Xle=Gk();function jk(r,e,t,i,n){let s=[].slice.call(arguments,1),a=s.length,o=typeof s[a-1]=="function";if(!o&&!Wle())throw new Error("Callback required as last argument");if(o){if(a<2)throw new Error("Too few arguments provided");a===2?(n=t,t=e,e=i=void 0):a===3&&(e.getContext&&typeof n>"u"?(n=i,i=void 0):(n=i,i=t,t=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(t=e,e=i=void 0):a===2&&!e.getContext&&(i=t,t=e,e=void 0),new Promise(function(c,l){try{let d=Jk.create(t,i);c(r(d,e,i))}catch(d){l(d)}})}try{let c=Jk.create(t,i);n(null,r(c,e,i))}catch(c){n(c)}}g0.create=Jk.create;g0.toCanvas=jk.bind(null,cL.render);g0.toDataURL=jk.bind(null,cL.renderToDataURL);g0.toString=jk.bind(null,function(r,e,t){return Xle.render(r,t)})});var hL=ae(kc=>{var dL=sk(),$k=Bk(),Zle=$M(),uL=VM(),ede=iL(),fL=aL();function p0(r,e,t){if(typeof r>"u")throw new Error("String required as first argument");if(typeof t>"u"&&(t=e,e={}),typeof t!="function")if(dL())e=t||{},t=null;else throw new Error("Callback required as last argument");return{opts:e,cb:t}}function tde(r){return r.slice((r.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function yC(r){switch(r){case"svg":return fL;case"txt":case"utf8":return uL;default:return Zle}}function rde(r){switch(r){case"svg":return fL;case"terminal":return ede;default:return uL}}function m0(r,e,t){if(!t.cb)return new Promise(function(i,n){try{let s=$k.create(e,t.opts);return r(s,t.opts,function(a,o){return a?n(a):i(o)})}catch(s){n(s)}});try{let i=$k.create(e,t.opts);return r(i,t.opts,t.cb)}catch(i){t.cb(i)}}kc.create=$k.create;kc.toCanvas=lL().toCanvas;kc.toString=function(e,t,i){let n=p0(e,t,i),s=n.opts?n.opts.type:void 0,a=rde(s);return m0(a.render,e,n)};kc.toDataURL=function(e,t,i){let n=p0(e,t,i),s=yC(n.opts.type);return m0(s.renderToDataURL,e,n)};kc.toBuffer=function(e,t,i){let n=p0(e,t,i),s=yC(n.opts.type);return m0(s.renderToBuffer,e,n)};kc.toFile=function(e,t,i,n){if(typeof e!="string"||!(typeof t=="string"||typeof t=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!dL())throw new Error("Too few arguments provided");let s=p0(t,i,n),a=s.opts.type||tde(e),c=yC(a).renderToFile.bind(null,e);return m0(c,t,s)};kc.toFileStream=function(e,t,i){if(arguments.length<2)throw new Error("Too few arguments provided");let n=p0(t,i,e.emit.bind(e,"error")),a=yC("png").renderToFileStream.bind(null,e);m0(a,t,n)}});var gL=ae((qke,AL)=>{AL.exports=hL()});function ide(r,e){try{return y0.authenticator.options={window:1},y0.authenticator.verify({token:r,secret:e})}catch(t){return console.error("[TOTP] Verification error:",t),!1}}function mL(){return y0.authenticator.generateSecret()}async function Vk(r,e){return ide(e,r)}function yL(r,e,t="OpenList"){return y0.authenticator.keyuri(e,t,r)}async function IL(r){return pL.default.toDataURL(r)}var y0,pL,wL=J(()=>{"use strict";y0=Qr(aq(),1),pL=Qr(gL(),1)});function nde(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function xL(r){let e=String(r||"").replace(/[\s\r\n]/g,"").replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4,i=t?e+"=".repeat(4-t):e;try{let n=atob(i),s=new Uint8Array(n.length);for(let a=0;a<n.length;a++)s[a]=n.charCodeAt(a);return s}catch{return null}}function Yk(r){let e=String(r||"").trim().split(/\s+/);if(e.length<2)return null;let t=e[0];if(!sde.includes(t))return null;let i=xL(e[1]);return!i||i.length<16?null:{type:t,blobBase64:e[1].replace(/[\s\r\n]/g,""),comment:e.slice(2).join(" ")||""}}async function CL(r){let e=Yk(r);if(!e)return null;let t=xL(e.blobBase64);if(!t)return null;let i=await crypto.subtle.digest("SHA-256",t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),n=new Uint8Array(i);return"SHA256:"+nde(n).replace(/=+$/,"")}function EL(){let r=globalThis;return typeof r.crypto?.randomUUID=="function"?r.crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}var sde,BL=J(()=>{"use strict";sde=["ssh-rsa","ssh-dss","ssh-ed25519","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","sk-ssh-ed25519@openssh.com","sk-ecdsa-sha2-nistp256@openssh.com","sk-ssh-ed25519@openssh.com.webauthn","sk-ecdsa-sha2-nistp256@openssh.com.webauthn"]});async function Af(r,e){let i=((await ne(e)).users||[]).find(n=>n.id===r);return i?i.ssh_keys||[]:[]}async function bL(r,e,t,i){let n=Yk(e);if(!n)throw new Error("Invalid OpenSSH public key format");let s=await CL(e);if(!s)throw new Error("Failed to compute SSH key fingerprint");let a=await ne(i),o=(a.users||[]).find(l=>l.id===r);if(!o)throw new Error("User not found");if(Array.isArray(o.ssh_keys)||(o.ssh_keys=[]),o.ssh_keys.some(l=>l.fingerprint===s))throw new Error("SSH key with this fingerprint already exists");let c={id:EL(),name:(t||n.comment||n.type).slice(0,64),public_key:e.trim(),fingerprint:s,created_at:new Date().toISOString()};return o.ssh_keys.push(c),await he(a,i),c}async function IC(r,e,t){let i=await ne(t),n=(i.users||[]).find(a=>a.id===r);if(!n||!Array.isArray(n.ssh_keys))return!1;let s=n.ssh_keys.length;return n.ssh_keys=n.ssh_keys.filter(a=>a.id!==e),n.ssh_keys.length!==s?(await he(i,t),!0):!1}var Wk=J(()=>{"use strict";nt();BL()});async function vL(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}async function wC(r){return vL(`${r}-${ade}`)}async function xC(r,e){return vL(`${r}-${e}`)}async function ode(r,e){return xC(await wC(r),e)}function Xk(r=16){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);crypto.getRandomValues(t);let i="";for(let n=0;n<r;n++)i+=e[t[n]%e.length];return i}function CC(r){return/^[0-9a-f]{64}$/i.test(String(r||""))}async function ji(r,e){r.salt=Xk(),r.password=await ode(e,r.salt),r.pwd_update_at=new Date().toISOString()}var ade,I0=J(()=>{"use strict";ade="https://github.com/alist-org/alist"});var kL=J(()=>{fE()});function cde(r=32){let e=new Uint8Array(r);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Zk(r,e={}){let t={...SL,...e},i=cde();return _L(r,t.cookieName,i,{maxAge:t.maxAge,...t.cookieOptions}),i}function DL(r,e={}){let t={...SL,...e};_L(r,t.cookieName,"",{maxAge:0,...t.cookieOptions})}function _L(r,e,t,i={}){let n=[`${e}=${encodeURIComponent(t)}`];i.maxAge!==void 0&&n.push(`Max-Age=${i.maxAge}`),i.httpOnly&&n.push("HttpOnly"),i.secure&&n.push("Secure"),i.sameSite&&n.push(`SameSite=${i.sameSite}`),i.path&&n.push(`Path=${i.path}`),r.header("Set-Cookie",n.join("; "))}var SL,QL=J(()=>{"use strict";kL();SL={cookieName:"csrf_token",headerName:"x-csrf-token",maxAge:3600,cookieOptions:{httpOnly:!0,secure:!0,sameSite:"strict",path:"/"}}});function lde(){return`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}function dde(r){let e=r.get?.("user"),t=r.req.header("cf-connecting-ip")||r.req.header("x-forwarded-for")||r.req.header("x-real-ip")||"unknown",i=r.req.header("user-agent")||"unknown";return{user_id:e?.id,username:e?.username,ip_address:t,user_agent:i}}function gf(){if(!eS){let r=new rS(1e4);eS=new tS(r)}return eS}var tS,rS,eS,FL=J(()=>{"use strict";tS=class{storage;constructor(e){this.storage=e}async log(e,t,i,n,s,a={}){let o=dde(e),c={id:lde(),timestamp:new Date().toISOString(),level:t,category:i,action:n,message:s,success:a.success??!0,...o,resource_type:a.resource_type,resource_id:a.resource_id,resource_name:a.resource_name,details:a.details,error_message:a.error_message};try{await this.storage.write(c)}catch(l){console.error("[AuditLog] Failed to write log:",l)}}async logLoginSuccess(e,t){await this.log(e,"info","auth","login",`User ${t} logged in successfully`,{success:!0})}async logLoginFailure(e,t,i){await this.log(e,"warn","auth","login_failed",`Failed login attempt for user ${t}`,{success:!1,error_message:i})}async logLogout(e){await this.log(e,"info","auth","logout","User logged out",{success:!0})}async logFileUpload(e,t,i){await this.log(e,"info","file","upload",`Uploaded file: ${t}`,{success:!0,resource_type:"file",resource_name:t,details:{file_size:i}})}async logFileDelete(e,t,i){await this.log(e,i?"critical":"error","file","delete",`Deleted file: ${t}`,{success:i,resource_type:"file",resource_name:t})}async logPermissionChange(e,t,i,n){await this.log(e,"critical","permission","update_permission",`Changed permission for user ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{old_role:i,new_role:n}})}async logUserCreate(e,t,i){await this.log(e,"info","user","create",`Created user: ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{role:i}})}async logUserDelete(e,t){await this.log(e,"critical","user","delete",`Deleted user: ${t}`,{success:!0,resource_type:"user",resource_name:t})}async query(e){return this.storage.query(e)}async count(e){return this.storage.count(e)}},rS=class{logs=[];maxSize;constructor(e=1e4){this.maxSize=e}async write(e){this.logs.push(e),this.logs.length>this.maxSize&&this.logs.shift()}async query(e){let t=this.logs;e.start_time&&(t=t.filter(s=>s.timestamp>=e.start_time)),e.end_time&&(t=t.filter(s=>s.timestamp<=e.end_time)),e.level&&(t=t.filter(s=>s.level===e.level)),e.category&&(t=t.filter(s=>s.category===e.category)),e.user_id&&(t=t.filter(s=>s.user_id===e.user_id)),e.username&&(t=t.filter(s=>s.username===e.username)),e.action&&(t=t.filter(s=>s.action===e.action)),e.resource_type&&(t=t.filter(s=>s.resource_type===e.resource_type)),e.resource_id&&(t=t.filter(s=>s.resource_id===e.resource_id)),e.success!==void 0&&(t=t.filter(s=>s.success===e.success)),t=t.sort((s,a)=>new Date(a.timestamp).getTime()-new Date(s.timestamp).getTime());let i=e.offset||0,n=e.limit||100;return t.slice(i,i+n)}async count(e){return(await this.query({...e,limit:Number.MAX_SAFE_INTEGER})).length}clear(){this.logs=[]}},eS=null});var ML={};An(ML,{authRouter:()=>Pn,authUserFromReq:()=>ns,generateRandomPassword:()=>yf,getOrInitUsers:()=>w0,hashPasswordSHA256:()=>pde,logoutHandler:()=>If,meHandler:()=>BC,meRouter:()=>pf,meUpdateHandler:()=>EC,verifyUserPassword:()=>mf,verifyUserStaticHash:()=>sS});function Ade(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function iS(r,e){return`${Ade(r)}|${String(e||"").toLowerCase()}`}function nS(r){return`__global__|${String(r||"").toLowerCase()}`}function gde(r){let e=hde,t=Math.pow(2,Math.floor(r/5));return Math.min(e*t,TL)}async function PL(r,e,t){let i=Date.now(),n=Gs.get(r)||{count:0,lockedUntil:0,attempts:0};try{let{getKvBinding:s}=await Promise.resolve().then(()=>(nt(),ii)),a=await s(t);if(a.mode!=="none"&&a.binding){let o=`login_fail:${r}`,c=null;try{c=await a.binding.get(o,"text")}catch{c=await a.binding.get(o)}if(c&&typeof c.text=="function"&&(c=await c.text()),c)try{n=JSON.parse(String(c))}catch{}}}catch{}if(!(n.lockedUntil>i)){if(n.count+=1,n.attempts+=1,n.count>=e){let s=gde(n.attempts);n.lockedUntil=i+s,n.count=0,console.warn(`[Auth] Login attempts exceeded for ${r}. Locked for ${Math.round(s/6e4)} minutes (attempt #${n.attempts}).`)}Gs.set(r,n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(nt(),ii)),a=await s(t);if(a.mode!=="none"&&a.binding){let o=`login_fail:${r}`,c=JSON.stringify(n),l=Math.ceil((TL+36e5)/1e3);typeof a.binding.put=="function"&&await a.binding.put(o,c,{expirationTtl:l})}}catch(s){console.warn("[Auth] Failed to persist login failure to KV:",s)}}}async function UL(r,e,t){if(Gs.size>1e4){let c=Date.now();for(let[l,d]of Gs)d.lockedUntil<c&&d.count===0&&Gs.delete(l)}let i=Date.now(),n=iS(r,e),s=nS(e),a=Gs.get(n),o=Gs.get(s);try{let{getKvBinding:c}=await Promise.resolve().then(()=>(nt(),ii)),l=await c(t);if(l.mode!=="none"&&l.binding)for(let d of[n,s]){let u=`login_fail:${d}`,f=null;try{f=await l.binding.get(u,"text")}catch{f=await l.binding.get(u)}if(f&&typeof f.text=="function"&&(f=await f.text()),f)try{let A=JSON.parse(String(f));d===n&&(a=A),d===s&&(o=A),Gs.set(d,A)}catch{}}}catch{}return!!(a&&a.lockedUntil>i||o&&o.lockedUntil>i)}async function RL(r,e,t){await PL(iS(r,e),ude,t),await PL(nS(e),fde,t)}async function NL(r,e,t){let i=iS(r,e),n=nS(e);Gs.delete(i),Gs.delete(n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(nt(),ii)),a=await s(t);if(a.mode!=="none"&&a.binding)for(let o of[i,n]){let c=`login_fail:${o}`;typeof a.binding.delete=="function"&&await a.binding.delete(c)}}catch(s){console.warn("[Auth] Failed to clear login failures from KV:",s)}}async function pde(r){return wC(r)}async function sS(r,e){let t=String(r?.password||"").trim().toLowerCase(),i=String(e||"").trim().toLowerCase();if(!t||!CC(i)||!CC(t))return!1;if(r?.salt){let n=(await xC(i,String(r.salt))).toLowerCase();return t===n}return t===i}async function mf(r,e){return String(r?.password||"").trim()?sS(r,await wC(e)):!1}function yf(){let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function OL(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function w0(r){let e=await ne(r);if(!e.users||e.users.length===0){let t=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"",i={id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};if(t){let s={id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await ji(s,t),e.users=[s,i]}else e.users=[i];await he(e,r)||console.warn("[Auth] getOrInitUsers: skipped persisting an uninitialized placeholder DB (expected until POST /api/public/init/setup completes).")}else{let t=e.users.find(s=>s.role===2),i=t?String(t.password||"").trim():"",n=/^[0-9a-f]{64}$/i.test(i);if(t&&!n){let s=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"";s?(await ji(t,s),await he(e,r)):console.warn(i?"[SECURITY] Admin password uses a legacy hash format this build cannot verify; it has been left untouched. Log in with your existing password and re-set it, or set ADMIN_PASS to force a reset. It will NOT be reset to a default value.":"[SECURITY] Admin password is empty and no ADMIN_PASS is set \u2014 the system is NOT initialized. Open the site in a browser to run the setup wizard, or set ADMIN_PASS to initialize automatically.")}}return{db:e,users:e.users}}async function ns(r){let e=r.req.header("Authorization");if(!e)return null;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await qr(r),n=await La(t,i,"HS256");if(await Px(n?.jti,r.env))return null;let s=await ne(r.env);s.users||(s.users=[]);let a=s.users.find(o=>o.id===n.id||o.username===n.username);return a?{db:s,user:a}:null}catch{return null}}async function qL(r,e){if(!r.otp_secret)return{ok:!0,code:200,httpStatus:200,message:"ok"};let t=String(e.otp_code||e.code||"").trim();return t?await Vk(r.otp_secret,t)?{ok:!0,code:200,httpStatus:200,message:"ok"}:{ok:!1,code:401,httpStatus:401,message:"Invalid OTP code"}:{ok:!1,code:402,httpStatus:200,message:"OTP code required"}}var Pn,pf,ude,fde,hde,TL,Gs,EC,BC,If,$l=J(()=>{"use strict";Fr();Ka();nt();zi();wL();Wk();I0();QL();FL();Pn=new at,pf=new at,ude=5,fde=20,hde=900*1e3,TL=1440*60*1e3,Gs=new Map;Pn.post("/login",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=e.password||"";if(await UL(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await w0(r.env),a=n.find(c=>c.username===t&&!c.disabled);if(a&&await mf(a,i)){let l=String(a.password||"").trim();(/^\$2[aby]\$/.test(l)||!a.salt&&CC(l))&&(console.log(`[Auth] Upgrading password hash for user: ${t}`),await ji(a,i),await he(s,r.env));let u=await qL(a,e);if(!u.ok)return r.json({code:u.code,message:u.message,data:null},u.httpStatus);await NL(r,t,r.env);let f={id:a.id,username:a.username,role:a.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:OL()},A=await qr(r),g=await Ha(f,A),p=Zk(r);return await gf().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:g,csrf_token:p}})}return await gf().logLoginFailure(r,t,"Invalid credentials"),await RL(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});Pn.post("/login/hash",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=String(e.password||"").trim().toLowerCase();if(await UL(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await w0(r.env),a=n.find(c=>c.username===t&&!c.disabled);if(a&&i.length===64&&await sS(a,i)){a.salt||(console.log(`[Auth] Upgrading password hash for user: ${t}`),a.salt=Xk(),a.password=await xC(i,a.salt),a.pwd_update_at=new Date().toISOString(),await he(s,r.env));let l=await qL(a,e);if(!l.ok)return r.json({code:l.code,message:l.message,data:null},l.httpStatus);await NL(r,t,r.env);let d={id:a.id,username:a.username,role:a.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:OL()},u=await qr(r),f=await Ha(d,u),A=Zk(r);return await gf().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:f,csrf_token:A}})}return await gf().logLoginFailure(r,t,"Invalid credentials"),await RL(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});EC=async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({}));if(n.username&&n.username.trim()!==""){let s=n.username.trim();if(t.users.some(o=>o.id!==i.id&&o.username===s))return r.json({code:400,message:"Username already exists",data:null},400);i.username=s}return n.password&&n.password.trim()!==""&&await ji(i,n.password.trim()),await he(t,r.env),r.json({code:200,message:"success",data:null})},BC=async r=>{let e=await Je(r);return!e||e.disabled?r.json({code:401,message:"Unauthorized",data:null},401):r.json({code:200,message:"success",data:{id:e.id,username:e.username,role:e.role,permission:e.permission??0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,otp:!!e.otp_secret}})};Pn.get("/me",BC);Pn.post("/me/update",EC);If=async r=>{let e=r.req.header("Authorization");if(e){let i=e.startsWith("Bearer ")?e.substring(7):e;try{let n=await qr(r),s=await La(i,n,"HS256");s?.jti&&await uv(s.jti,s.exp,r.env)}catch{}}return DL(r),await gf().logLogout(r),r.json({code:200,message:"success",data:null})};Pn.get("/logout",If);Pn.post("/logout",If);Pn.get("/csrf",async r=>{try{let e=await hv(r);return r.json({code:200,message:"success",data:{csrf_token:e}})}catch{return r.json({code:500,message:"Failed to generate CSRF token",data:null},500)}});Pn.post("/2fa/generate",async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{user:t}=e;if(t.otp_secret)return r.json({code:400,message:"2FA already enabled",data:null},400);let i=mL(),n=yL(i,t.username);return r.json({code:200,message:"success",data:{qr:IL(n),secret:i}})});Pn.post("/2fa/verify",async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({})),s=String(n.code||"").trim(),a=String(n.secret||"").trim();return a?/^[A-Z2-7]+$/i.test(a)?await Vk(a,s)?(i.otp_secret=a.toUpperCase(),await he(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:400,message:"Invalid code",data:null},400):r.json({code:400,message:"Invalid secret format",data:null},400):r.json({code:400,message:"Missing secret parameter",data:null},400)});pf.get("/sshkey/list",async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await Af(e.user.id,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});pf.post("/sshkey/add",async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({}));try{let i=await bL(e.user.id,t.key||t.public_key||"",t.name||t.title||"",r.env);return r.json({code:200,message:"success",data:i})}catch(i){return r.json({code:400,message:i.message||"Failed to add SSH key",data:null},400)}});pf.post("/sshkey/delete",async r=>{let e=await ns(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=r.req.query("id");if(!t)return r.json({code:400,message:"Missing id parameter",data:null},400);if(!await IC(e.user.id,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await Af(e.user.id,r.env);return r.json({code:200,message:"success",data:n})})});Fr();var ID=r=>{let e={origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH","QUERY"],allowHeaders:[],exposeHeaders:[],...r},t=(n=>typeof n=="string"?n==="*"?()=>n:s=>n===s?s:null:typeof n=="function"?n:s=>n.includes(s)?s:null)(e.origin),i=(n=>typeof n=="function"?n:Array.isArray(n)?()=>n:()=>[])(e.allowMethods);return async function(s,a){function o(l,d){s.res.headers.set(l,d)}let c=await t(s.req.header("origin")||"",s);if(c&&o("Access-Control-Allow-Origin",c),e.credentials&&o("Access-Control-Allow-Credentials","true"),e.exposeHeaders?.length&&o("Access-Control-Expose-Headers",e.exposeHeaders.join(",")),s.req.method==="OPTIONS"){e.origin!=="*"&&o("Vary","Origin"),e.maxAge!=null&&o("Access-Control-Max-Age",e.maxAge.toString());let l=await i(s.req.header("origin")||"",s);l.length&&o("Access-Control-Allow-Methods",l.join(","));let d=e.allowHeaders;if(!d?.length){let u=s.req.header("Access-Control-Request-Headers");u&&(d=u.split(",").map(f=>f.trim()))}return d?.length&&(o("Access-Control-Allow-Headers",d.join(",")),s.res.headers.append("Vary","Access-Control-Request-Headers")),s.res.headers.delete("Content-Length"),s.res.headers.delete("Content-Type"),new Response(null,{headers:s.res.headers,status:204,statusText:"No Content"})}await a(),e.origin!=="*"&&s.header("Vary","Origin",{append:!0})}};nt();Bo();Fr();ar();nt();var jA=r=>{let e=[];for(let t of String(r||"").replace(/\\/g,"/").split("/"))if(!(t===""||t===".")){if(t===".."){e.pop();continue}e.push(t)}return"/"+e.join("/")};async function Ju(r,e,t){let n=jA(r).split("/").filter(Boolean);if(n.length<1)return{ok:!1,error:"Invalid share path"};let s,a;if(n[0]==="@s"){if(n.length<2)return{ok:!1,error:"Invalid share path"};s=n[1],a=n.slice(2)}else s=n[0],a=n.slice(1);let o=await ne(t),c=(o.shares||[]).find(g=>g.id===s);if(!c)return{ok:!1,error:"share not found"};if(c.disabled)return{ok:!1,error:"share has been disabled"};if(c.expires&&new Date(c.expires)<new Date)return{ok:!1,error:"share has expired"};if(c.max_accessed>0&&c.accessed!==void 0&&c.accessed>=c.max_accessed)return{ok:!1,error:"share access count exceeded"};if(c.pwd&&c.pwd!==e)return{ok:!1,error:"wrong password"};if(!c.files||c.files.length===0)return{ok:!1,error:"share is empty"};if(c.accessed=(c.accessed||0)+1,he(o,t).catch(()=>{}),c.files.length>1&&a.length===0)return{ok:!0,share:c,virtualList:!0};let l=(c.files||[]).map(g=>jA(g)),d=g=>l.some(p=>g===p||g.startsWith(p==="/"?"/":p+"/"));if(c.files.length===1)return a.length>0?{ok:!1,error:"path not found in share"}:{ok:!0,share:c,realPath:jA(c.files[0])};let u=a[0],f=c.files.find(g=>{let p=String(g).split("/").filter(Boolean);return p[p.length-1]===u});if(!f)return{ok:!1,error:"path not found in share"};let A=jA([jA(f),...a.slice(1)].join("/"));return d(A)?{ok:!0,share:c,realPath:A}:{ok:!1,error:"path not found in share"}}nt();zi();var pc={SEE_HIDES:0,ACCESS_WITHOUT_PASSWORD:1,OFFLINE_DOWNLOAD:2,WRITE_CONTENT:3,RENAME:4,MOVE:5,COPY:6,DELETE:7,WEBDAV_READ:8,WEBDAV_MANAGE:9,FTP_READ:10,FTP_MANAGE:11,READ_ARCHIVES:12,DECOMPRESS:13,SHARE:14,CUSTOMIZE_SHARE_ID:15};function Oae(r){return!r||r.role===1}function Ms(r){return!!r&&r.role===2}function mc(r,e){return!r||r.disabled?!1:Ms(r)?!0:Oae(r)?!1:(r.permission>>e&1)===1}function vt(r){return mc(r,pc.WRITE_CONTENT)}function st(r,e="/"){let t=e||"/";if(t.startsWith("/@s"))return t;let i=(r?.base_path||"/").trim();if(!i||i==="/")return t.startsWith("/")?t:`/${t}`;i.startsWith("/")||(i=`/${i}`),i.endsWith("/")&&i.length>1&&(i=i.replace(/\/+$/,""));let n=t.startsWith("/")?t:`/${t}`;return n==="/"?i:`${i}${n}`}nt();async function Av(r,e){let i=(await ne(e)).metas||[];if(i.length===0)return null;let n=WA(r),s=i.find(o=>WA(o.path)===n);if(s)return s;let a=n;for(;a!=="/";){let o=a.substring(0,a.lastIndexOf("/"))||"/",c=i.find(l=>WA(l.path)===o);if(c)return c;a=o}return null}function Ml(r,e,t){let i=WA(r),n=WA(e);if(i.toLowerCase()===n.toLowerCase())return!0;if(!t)return!1;let s=n;for(;s!=="/";)if(s=s.substring(0,s.lastIndexOf("/"))||"/",i.toLowerCase()===s.toLowerCase())return!0;return!1}function WA(r){let e=(r||"/").replace(/\\/g,"/").replace(/\/+/g,"/").trim();return e===""||e==="/"?"/":"/"+e.split("/").filter(Boolean).join("/")}function gv(r,e,t,i=""){return r&&Ms(r)||!e?!0:!(e.password&&e.password.trim()!==""&&Ml(e.path,t,e.p_sub)&&i!==e.password||e.read_users&&e.read_users.length>0&&Ml(e.path,t,e.read_users_sub)&&(!r||!e.read_users.includes(r.id||0)))}function pv(r,e,t){return r===null||r&&Ms(r)?!0:e&&e.write_users&&e.write_users.length>0&&Ml(e.path,t,e.write_users_sub)?e.write_users.includes(r.id||0):!0}function mv(r,e){return r?r.write&&Ml(r.path,e,r.w_sub):!1}function yv(r,e){return!r||!r.readme?"":Ml(r.path,e,r.r_sub)?r.readme:""}function Iv(r,e){return!r||!r.header?"":Ml(r.path,e,r.header_sub)?r.header:""}function r7(r,e,t){if(!r||!r.hide||r.hide.trim()===""||!Ml(r.path,e,r.h_sub))return!1;let i=r.hide.split(` +`).map(n=>n.trim()).filter(Boolean);for(let n of i)try{if(new RegExp(n).test(t))return!0}catch{}return!1}function wv(r){if(!r||r.trim()==="")return null;let e=r.split(` +`).map(t=>t.trim()).filter(Boolean);for(let t of e)try{new RegExp(t)}catch{return t}return null}nt();zi();ti();lh();function qae(r,e){if(typeof r!="string"||typeof e!="string"||r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function Tx(r){try{let e=await ne(r?.env),t={};for(let s of e.settings||[])t[s.key]=s.value;let i=t.sign_all==="true",n=parseInt(t.link_expiration,10)||0;return!i&&n<=0?{enabled:!1,expiresIn:0}:{enabled:!0,expiresIn:n>0?n*3600:0}}catch{return{enabled:!1,expiresIn:0}}}function Yu(r){return"/"+String(r||"").split("/").filter(Boolean).join("/")}function Mae(r,e,t){let i=Yu(r).toLowerCase(),n=Yu(e).toLowerCase();if(i===n)return!0;if(!t)return!1;for(;n!=="/";)if(n=Yu(n.split("/").slice(0,-1).join("/")),i===n)return!0;return!1}async function Lae(r,e){try{let i=(await ne(r?.env)).metas||[];if(!i.length)return null;let n=Yu(e);for(;;){let s=i.find(a=>Yu(a.path).toLowerCase()===n.toLowerCase());if(s)return s;if(n==="/")return null;n=Yu(n.split("/").slice(0,-1).join("/"))}}catch{return null}}async function Hae(r,e){try{let{resolvePath:t}=await Promise.resolve().then(()=>(nt(),ii)),i=await t(e);return i?.storage?TQ(i.storage):!1}catch{return!1}}async function Ux(r,e){if(await Hae(r,e))return!0;let t=await Lae(r,e);return!t||!t.password?!1:Mae(t.path,e,!!t.p_sub)}async function i7(r,e){return(await Tx(r)).enabled?!0:await Ux(r,e)}async function Wu(r){try{let e=await ne(r?.env);for(let t of e.settings||[])if(t.key==="link_expiration"){let i=parseInt(t.value,10)||0;if(i>0)return i*3600;break}}catch{}return 0}async function Xu(r,e,t){let i=await qr(r),n=t===0?0:Math.floor(Date.now()/1e3)+t,s=await mE(`${e}:${n}`,i);return`${n}.${s}`}async function n7(r,e,t){let i=t.lastIndexOf(".");if(i<=0)return!1;let n=parseInt(t.slice(0,i),10),s=t.slice(i+1);if(!Number.isFinite(n)||n!==0&&n<=Math.floor(Date.now()/1e3))return!1;let a=await qr(r),o=await mE(`${e}:${n}`,a);return qae(o,s)}gc();Pd();ar();async function Zu(r={},e){let t=(r.parent||"/").replace(/\/+/g,"/")||"/",i=String(r.keywords||"").trim().toLowerCase(),n=r.scope??0,s=Math.max(1,r.page||1),a=Math.max(1,Math.min(100,r.per_page||30)),o=Math.min(20,Math.max(0,r.max_depth??10)),c=Math.min(2e3,Math.max(1,r.max_results??500)),l=[];async function d(g,p){if(p>o||l.length>=c)return;let I=[];try{I=(await lr(g)).content||[]}catch{return}for(let m of I){if(l.length>=c)break;let w=!i||m.name.toLowerCase().includes(i),B=!!m.is_dir,C=B&&!m.sign,x=!0;if(n===1&&!B&&(x=!1),n===2&&B&&(x=!1),!C&&w&&x&&l.push({...m,parent:g.endsWith("/")&&g!=="/"?g.slice(0,-1):g}),B){let _=g==="/"?`/${m.name}`:`${g}/${m.name}`;await d(_,p+1)}}}await d(t,0);let u=l.length,f=(s-1)*a;return{content:l.slice(f,f+a),total:u}}lh();function Rx(r){let e=new DataView(r),t=r.byteLength,i=-1,n=Math.max(0,t-22-65557);for(let l=t-22;l>=n;l--)if(e.getUint32(l,!0)===101010256){i=l;break}if(i===-1)throw new Error("Invalid ZIP: End of Central Directory not found");let s=e.getUint16(i+10,!0),a=e.getUint32(i+16,!0),o=[],c=a;for(let l=0;l<s&&e.getUint32(c,!0)===33639248;l++){let d=e.getUint16(c+10,!0),u=e.getUint32(c+20,!0),f=e.getUint32(c+24,!0),A=e.getUint16(c+28,!0),g=e.getUint16(c+30,!0),p=e.getUint16(c+32,!0),I=e.getUint32(c+42,!0),m=e.getUint16(c+12,!0),w=e.getUint16(c+14,!0),B=Kae(w,m),C=new Uint8Array(r,c+46,A),x=new TextDecoder("utf-8").decode(C);if(c+=46+A+g+p,x.endsWith("/")||e.getUint32(I,!0)!==67324752)continue;let _=e.getUint16(I+26,!0),R=e.getUint16(I+28,!0),U=I+30+_+R;o.push({name:x.replace(/\\/g,"/"),isDir:!1,size:f,compressedSize:u,compressionMethod:d,dataOffset:U,modified:B})}return{entries:o}}async function s7(r,e){let t=new Uint8Array(r,e.dataOffset,e.compressedSize);if(e.compressionMethod===0)return new Uint8Array(t);if(e.compressionMethod===8){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not supported in this runtime");let i=new DecompressionStream("deflate-raw"),n=i.writable.getWriter();n.write(t),n.close();let s=await new Response(i.readable).arrayBuffer();return new Uint8Array(s)}throw new Error(`Unsupported ZIP compression method: ${e.compressionMethod}`)}function Kae(r,e){let t=1980+(r>>9&127),i=r>>5&15,n=r&31,s=e>>11&31,a=e>>5&63,o=(e&31)*2,c=l=>String(l).padStart(2,"0");return`${t}-${c(i)}-${c(n)}T${c(s)}:${c(a)}:${c(o)}Z`}el();Fr();zi();el();gc();nt();ar();var ZA=Qr(lI(),1);var Nx="openlist-sharing-seed";var Gae={md5:32,sha1:40,sha256:64};function Sr(r){return typeof r=="string"?r:""}var zae=64,Jae=4096;function a7(r){let e=Sr(r).trim();if(e.length>Jae)throw new Error("Seed file path exceeds the maximum length");let t=e.split("/");if(t.length>zae)throw new Error("Seed file path exceeds the maximum depth");if(e.includes("\0")||e.includes("\\")||e.startsWith("/")||t.length===0||t.some(i=>!i||i==="."||i===".."))throw new Error("Seed file path must be a safe relative path");return t.join("/")}function XA(r,e){let t=Sr(r).toLowerCase();if(t&&!new RegExp(`^[0-9a-f]{${Gae[e]}}$`).test(t))throw new Error(`Invalid ${e} hash`);return t}function jae(r){return Array.isArray(r)?r.map(e=>{if(!e||typeof e!="object")throw new Error("Invalid seed source");let t=Sr(e.type),i=Sr(e.url);if(!t||!i)throw new Error("Seed source type and URL are required");try{if(!new URL(i).protocol)throw new Error("missing scheme")}catch{throw new Error("Seed source URL must be absolute")}return{type:t,url:i,expires_at:Sr(e.expires_at),share_id:Sr(e.share_id)}}):[]}function on(r){if(!r||typeof r!="object")throw new Error("Invalid seed payload");let e=r;if(e.format!==void 0&&e.format!==Nx)throw new Error("Unsupported seed format");if(e.version!==void 0&&Number(e.version)!==1)throw new Error("Unsupported seed version");let t=Number(e.piece_size||10485760);if(!Number.isSafeInteger(t)||t<16*1024||t>64*1024*1024)throw new Error("Invalid piece_size");if(!Array.isArray(e.files)||e.files.length===0||e.files.length>1e5)throw new Error("Seed file count must be between 1 and 100000");let i=e.files.map(a=>{if(!a||typeof a!="object")throw new Error("Invalid seed file");let o=Number(a.size);if(!Number.isSafeInteger(o)||o<0)throw new Error("Invalid seed file size");let c=a.hashes||{},l=c.pieces||{},d=o>0?Math.ceil(o/t):0,u=f=>{if(!Array.isArray(l[f]))return[];let A=l[f].map(g=>XA(g,f));if(A.length!==0&&A.length!==d)throw new Error(`${f} piece count is ${A.length}, expected ${d}`);return A};return{path:a7(a.path),size:o,modified:Sr(a.modified),comment:Sr(a.comment),hashes:{md5:XA(c.md5,"md5"),sha1:XA(c.sha1,"sha1"),sha256:XA(c.sha256,"sha256"),pieces:{md5:u("md5"),sha1:u("sha1"),sha256:u("sha256")}},sources:jae(a.sources),cas_slice_md5:XA(a.cas_slice_md5,"md5"),cas_create_time:Sr(a.cas_create_time),cas_cloud:Sr(a.cas_cloud).trim(),missing_channels:Array.isArray(a.missing_channels)?a.missing_channels.map(Sr).filter(Boolean):[]}}),n=new Set;for(let a of i){if(n.has(a.path))throw new Error(`Duplicate seed file path: ${a.path}`);n.add(a.path)}let s=Sr(e.name)||i[0].path.split("/")[0];if(!s.trim()||s==="."||s===".."||/[\\/\0]/.test(s))throw new Error("Invalid seed name");return{format:Nx,version:1,name:s,comment:Sr(e.comment),created_at:Sr(e.created_at)||new Date().toISOString(),created_by:Sr(e.created_by)||"OpenList",piece_size:t,trackers:Array.isArray(e.trackers)?e.trackers.map(Sr).filter(Boolean):[],channels:Array.isArray(e.channels)?e.channels.map(a=>{if(!a||typeof a!="object"||!Sr(a.driver).trim())throw new Error("Seed channel driver is required");let o=Sr(a.mount_path);if(/[?#\0]/.test(o))throw new Error("Seed channel mount_path contains invalid characters");return{driver:Sr(a.driver).trim(),mount_path:o}}):[],files:i}}function Ox(r,e){let t=r&&typeof r=="object"?r:{},i=a=>({whole:!!t[a]?.whole,pieces:!!t[a]?.pieces}),n={md5:i("md5"),sha1:i("sha1"),sha256:i("sha256")};!n.md5.whole&&!n.md5.pieces&&!n.sha1.whole&&!n.sha1.pieces&&!n.sha256.whole&&!n.sha256.pieces&&(n={md5:{whole:!0,pieces:!0},sha1:{whole:!0,pieces:!0},sha256:{whole:!0,pieces:!0}});for(let a of e)a==="torrent"&&(n.sha1={whole:!0,pieces:!0}),a==="cas"&&(n.md5={whole:!0,pieces:!0});return n}function xv(r,e){let t={md5:e.md5.whole?r.hashes.md5:"",sha1:e.sha1.whole?r.hashes.sha1:"",sha256:e.sha256.whole?r.hashes.sha256:"",pieces:{md5:e.md5.pieces?r.hashes.pieces.md5:[],sha1:e.sha1.pieces?r.hashes.pieces.sha1:[],sha256:e.sha256.pieces?r.hashes.pieces.sha256:[]}};return{...r,hashes:t}}function o7(r){return a7(r)}var rs=new TextEncoder,Ic=new TextDecoder("utf-8",{fatal:!0}),Vae=32,Yae=1e5;function qx(r){let e=r.reduce((n,s)=>n+s.byteLength,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.byteLength;return t}function ef(r){if(r instanceof Uint8Array)return qx([rs.encode(`${r.byteLength}:`),r]);if(typeof r=="string")return ef(rs.encode(r));if(typeof r=="number"){if(!Number.isSafeInteger(r))throw new Error("Bencode integer is out of range");return rs.encode(`i${r}e`)}if(Array.isArray(r))return qx([rs.encode("l"),...r.map(ef),rs.encode("e")]);let e=Object.entries(r).sort(([t],[i])=>{let n=rs.encode(t),s=rs.encode(i),a=Math.min(n.length,s.length);for(let o=0;o<a;o++)if(n[o]!==s[o])return n[o]-s[o];return n.length-s.length});return qx([rs.encode("d"),...e.flatMap(([t,i])=>[ef(t),ef(i)]),rs.encode("e")])}function Wae(r){let e=0,t=0,i=s=>{if(++t>Yae)throw new Error("Bencode item limit exceeded");if(s>Vae)throw new Error("Bencode nesting limit exceeded");let a=r[e];if(a===105){let o=r.indexOf(101,++e);if(o<0)throw new Error("Unterminated bencode integer");let c=Ic.decode(r.subarray(e,o));if(!/^(0|-?[1-9]\d*)$/.test(c))throw new Error("Invalid bencode integer");let l=Number(c);if(!Number.isSafeInteger(l))throw new Error("Bencode integer is out of range");return e=o+1,l}if(a===108){e++;let o=[];for(;e<r.length&&r[e]!==101;)o.push(i(s+1));if(r[e++]!==101)throw new Error("Unterminated bencode list");return o}if(a===100){e++;let o={};for(;e<r.length&&r[e]!==101;){let c=i(s+1);if(!(c instanceof Uint8Array))throw new Error("Bencode dictionary key is not a string");let l=Ic.decode(c);o[l]=i(s+1)}if(r[e++]!==101)throw new Error("Unterminated bencode dictionary");return o}if(a>=48&&a<=57){let o=r.indexOf(58,e);if(o<0)throw new Error("Invalid bencode byte string");let c=Ic.decode(r.subarray(e,o));if(!/^(0|[1-9]\d*)$/.test(c))throw new Error("Invalid bencode byte string length");let l=Number(c),d=o+1,u=d+l;if(!Number.isSafeInteger(l)||u>r.length)throw new Error("Truncated bencode byte string");return e=u,r.slice(d,u)}throw new Error("Invalid bencode value")},n=i(0);if(e!==r.length)throw new Error("Trailing bencode data");return n}function tf(r,e){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array)throw new Error(`${e} must be a dictionary`);return r}function Xae(r){return r instanceof Uint8Array?r:new Uint8Array}function Sn(r){return r instanceof Uint8Array?Ic.decode(r):typeof r=="string"?r:""}function yc(r){return typeof r=="number"?r:0}function Zae(r){return Array.isArray(r)?r.map(e=>Sn(e)).filter(Boolean):[]}function Cv(r){return r==null?"":typeof r=="string"||typeof r=="number"||r instanceof Uint8Array?r:typeof r=="boolean"?r?1:0:Array.isArray(r)?r.map(Cv):typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Cv(t)])):String(r)}function Ev(r){return r instanceof Uint8Array?Ic.decode(r):Array.isArray(r)?r.map(Ev):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ev(t)])):r}function eoe(r){if(!r||r.length%2!==0||!/^[0-9a-f]+$/i.test(r))return new Uint8Array;let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}function toe(r){return Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}function roe(r){if(r.files.length>1){for(let e of r.files.slice(0,-1))if(e.size%r.piece_size!==0)throw new Error("Cannot convert this multi-file seed to a standard torrent: a file boundary splits a piece")}return r.files.flatMap(e=>e.hashes.pieces.sha1)}async function ioe(r,e){if(!r.hashes.md5)return;let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"",i=r.hashes.pieces.md5.map(n=>n.toUpperCase());if(!t&&i.length>0&&e===10485760&&(t=i.length>1?(await(0,ZA.md5)(i.join(` +`))).toUpperCase():i[0]),!!t)return{cloud:r.cas_cloud||"189",file_md5:r.hashes.md5.toUpperCase(),slice_md5:t,slice_md5s:i,slice_size:e}}function noe(r){return rs.encode(JSON.stringify(on(r),null,2))}function Bv(r){let e=JSON.parse(Ic.decode(r));if(e?.format!==Nx||Number(e?.version)!==1||!e?.created_at||!e?.created_by)throw new Error("Invalid or incomplete OpenList sharing seed");return on(e)}async function c7(r,e){if(!r.hashes.md5)throw new Error(`CAS requires a whole-file MD5 for ${r.path}`);let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"";if(!t&&r.hashes.pieces.md5.length>0&&e===10485760){let n=r.hashes.pieces.md5.map(s=>s.toUpperCase());t=n.length>1?(await(0,ZA.md5)(n.join(` +`))).toUpperCase():n[0]}if(!t){if(r.size>10485760)throw new Error(`CAS requires a legacy slice MD5 or complete 10 MiB MD5 pieces for ${r.path}`);t=r.hashes.md5.toUpperCase()}let i={name:r.path.split("/").pop()||r.path,size:r.size,md5:r.hashes.md5,sliceMd5:t,create_time:r.cas_create_time||String(Math.floor(Date.now()/1e3)),cloud:r.cas_cloud||"189"};return r.hashes.pieces.md5.length>0&&(i.slice_md5s=r.hashes.pieces.md5.map(n=>n.toUpperCase()),i.slice_size=e||10485760),i}async function soe(r){let e=on(r);if(e.files.length===0)throw new Error("CAS requires at least one file");let t;if(e.files.length===1){let i=await c7(e.files[0],e.piece_size);t={name:i.name,size:i.size,md5:i.md5,sliceMd5:i.sliceMd5,create_time:i.create_time,slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:i.cloud}}else{let i=[],n=0;for(let s of e.files){let a=await c7(s,e.piece_size);i.push(a),n+=a.size}t={name:e.name,size:n,md5:"",sliceMd5:"",create_time:"",files:i}}return rs.encode(Buffer.from(JSON.stringify(t)).toString("base64"))}function l7(r){let e=Ic.decode(r).trim(),t=e;try{t=Buffer.from(e,"base64").toString("utf8"),JSON.parse(t)}catch{t=e}let i=JSON.parse(t),n=l=>{if(!l.name||!Number.isSafeInteger(l.size)||Number(l.size)<0||!l.md5)throw new Error("Invalid CAS file entry");let d=String(l.md5).toLowerCase(),u=String(l.sliceMd5||l.md5).toLowerCase();if(!/^[0-9a-f]{32}$/i.test(d)||!/^[0-9a-f]{32}$/i.test(u))throw new Error("Invalid CAS hash");let f=Array.isArray(l.slice_md5s)?l.slice_md5s.map(A=>String(A).toLowerCase()):[];return{path:l.name,size:Number(l.size),modified:"",comment:"",hashes:{md5:d,sha1:"",sha256:"",pieces:{md5:f,sha1:[],sha256:[]}},sources:[],cas_slice_md5:u,cas_create_time:l.create_time||"",cas_cloud:String(l.cloud||""),missing_channels:[]}};if(Array.isArray(i.files)&&i.files.length>0){let l=i.files.map(n);return{format:"cas",cas:{name:String(i.name),size:l.reduce((u,f)=>u+f.size,0),md5:"",sliceMd5:"",create_time:"",cloud:String(i.cloud||""),files:i.files},seed:on({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:new Date().toISOString(),created_by:"OpenList",piece_size:10485760,files:l})}}if(!i.name||!Number.isSafeInteger(i.size)||Number(i.size)<0||!i.md5)throw new Error("Invalid CAS payload");let s=String(i.md5).toLowerCase(),a=String(i.sliceMd5||i.md5);if(!/^[0-9a-f]{32}$/i.test(s)||!/^[0-9a-f]{32}$/i.test(a))throw new Error("Invalid CAS hash");let o=Number(i.create_time);return{format:"cas",cas:{name:String(i.name),size:Number(i.size),md5:s,sliceMd5:a,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:String(i.cloud||"")},seed:on({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:Number.isFinite(o)&&o>0?new Date(o*1e3).toISOString():new Date().toISOString(),created_by:"OpenList",piece_size:i.slice_size||10485760,files:[n({name:i.name,size:Number(i.size),md5:s,sliceMd5:a,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size})]})}}async function bv(r,e){let t=on(r),i=e||roe(t);if(i.some(a=>a.length!==40))throw new Error("Torrent conversion requires SHA-1 piece hashes");let n={name:t.name,"piece length":t.piece_size,pieces:qx(i.map(eoe))};t.files.length===1?(n.length=t.files[0].size,t.files[0].hashes.md5&&(n.md5sum=t.files[0].hashes.md5)):n.files=t.files.map(a=>{let o={length:a.size,path:a.path.split("/")};return a.hashes.md5&&(o.md5sum=a.hashes.md5),o});let s={info:n,comment:t.comment,"created by":t.created_by,"creation date":Math.floor(new Date(t.created_at).getTime()/1e3)||Math.floor(Date.now()/1e3),"x-openlist":Cv(t)};if(t.trackers.length&&(s.announce=t.trackers[0],s["announce-list"]=t.trackers.map(a=>[a])),t.files.length===1){let a=await ioe(t.files[0],t.piece_size);a&&(s["x-cas"]=a)}return ef(s)}function aoe(r,e,t,i,n){let s=Array.isArray(r.files)?r.files:null,a=s?s.map(c=>{let l=tf(c,"torrent file");return{path:(Array.isArray(l.path)?l.path.map(Sn):[]).join("/"),size:yc(l.length),md5:Sn(l.md5sum)}}):[{path:e,size:yc(r.length),md5:Sn(r.md5sum)}],o=0;return a.map((c,l)=>{let d=c.size>0?Math.ceil(c.size/i):0,f=(l===a.length-1||c.size%i===0)&&o+d<=t.length?t.slice(o,o+d):[];o+=d;let A=a.length===1&&n?Sn(n.slice_md5):"",g=a.length===1&&n?Sn(n.create_time):"",p=a.length===1&&n?Sn(n.cloud):"";return{path:c.path,size:c.size,modified:"",comment:"",hashes:{md5:c.md5.toLowerCase(),sha1:"",sha256:"",pieces:{md5:[],sha1:f,sha256:[]}},sources:[],cas_slice_md5:A.toLowerCase(),cas_create_time:g,cas_cloud:p,missing_channels:[]}})}async function d7(r){let e=tf(Wae(r),"torrent root"),t=tf(e.info,"torrent info"),i=await(0,ZA.sha1)(ef(t)),n=Sn(t.name),s=yc(t["piece length"]),a=Xae(t.pieces);if(!n||s<=0||a.length%20!==0)throw new Error("Invalid torrent info dictionary");let o=Array.isArray(t.files)?t.files.reduce((g,p)=>g+yc(tf(p,"torrent file").length),0):yc(t.length),c=o>0?Math.ceil(o/s):0;if(a.length/20!==c)throw new Error("Torrent piece count mismatch");if(e["x-openlist"]){let g=on(Ev(e["x-openlist"]));return ooe(g,t,n,s),{format:"torrent",seed:g,info_hash:i}}let l=[];for(let g=0;g<a.length;g+=20)l.push(toe(a.subarray(g,g+20)));let d=[Sn(e.announce),...Array.isArray(e["announce-list"])?e["announce-list"].flatMap(g=>Zae(g)):[]].filter((g,p,I)=>g&&I.indexOf(g)===p),u=yc(e["creation date"]),f=e["x-cas"]?tf(e["x-cas"],"x-cas"):void 0;return{format:"torrent",seed:on({name:n,comment:Sn(e.comment),created_at:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),created_by:Sn(e["created by"])||"OpenList",piece_size:s,trackers:d,channels:[],files:aoe(t,n,l,s,f)}),info_hash:i}}function ooe(r,e,t,i){if(r.name!==t||r.piece_size!==i)throw new Error("x-openlist metadata conflicts with torrent info");let n=Array.isArray(e.files)?e.files:null;if(!n){if(r.files.length!==1||r.files[0].size!==yc(e.length))throw new Error("x-openlist file list conflicts with torrent info");return}if(r.files.length!==n.length)throw new Error("x-openlist file count conflicts with torrent info");n.forEach((s,a)=>{let o=tf(s,"torrent file"),c=(Array.isArray(o.path)?o.path.map(Sn):[]).join("/");if(r.files[a].path!==c||r.files[a].size!==yc(o.length))throw new Error(`x-openlist file ${a} conflicts with torrent info`)})}async function f7(r,e){if(e==="oss")return{format:"oss",seed:Bv(r)};if(e==="torrent")return d7(r);if(e==="cas")return l7(r);let t=Ic.decode(r.subarray(0,Math.min(r.length,32))).trimStart()[0];return t==="{"?{format:"oss",seed:Bv(r)}:t==="d"?d7(r):l7(r)}async function e0(r,e){return e==="oss"?noe(r):e==="torrent"?bv(r):soe(r)}var wc=Qr(lI(),1);async function h7(){let[r,e,t]=await Promise.all([(0,wc.createMD5)(),(0,wc.createSHA1)(),(0,wc.createSHA256)()]);return{md5:r.init(),sha1:e.init(),sha256:t.init()}}function A7(r,e){r.md5.update(e),r.sha1.update(e),r.sha256.update(e)}function vv(r){return{md5:r.md5.digest("hex").toLowerCase(),sha1:r.sha1.digest("hex").toLowerCase(),sha256:r.sha256.digest("hex").toLowerCase()}}function coe(r){r.md5.init(),r.sha1.init(),r.sha256.init()}var t0=class r{constructor(e,t){this.pieceSize=t;this.hasher=e.init()}pieceSize;hasher;written=0;hashes=[];static async create(e){return new r(await(0,wc.createSHA1)(),e)}update(e){let t=0;for(;t<e.length;){let i=Math.min(this.pieceSize-this.written,e.length-t);this.hasher.update(e.subarray(t,t+i)),this.written+=i,t+=i,this.written===this.pieceSize&&this.finishPiece()}}digest(){return this.written>0&&this.finishPiece(),[...this.hashes]}finishPiece(){this.hashes.push(this.hasher.digest("hex").toLowerCase()),this.hasher.init(),this.written=0}};async function kv(r,e,t,i,n){if(!Number.isSafeInteger(t)||t<0||t>i)throw new Error(`File exceeds the hashing limit of ${i} bytes`);let s=await h7(),a=await h7(),o={md5:[],sha1:[],sha256:[]},c=r.getReader(),l=0,d=0;try{for(;;){let{done:u,value:f}=await c.read();if(u)break;if(!f?.length)continue;if(l+f.length>i||l+f.length>t)throw new Error("Downloaded file size exceeds the declared or configured limit");l+=f.length,n?.update(f),A7(s,f);let A=0;for(;A<f.length;){let g=Math.min(e-d,f.length-A);if(A7(a,f.subarray(A,A+g)),d+=g,A+=g,d===e){let p=vv(a);o.md5.push(p.md5),o.sha1.push(p.sha1),o.sha256.push(p.sha256),coe(a),d=0}}}}finally{c.releaseLock()}if(l!==t)throw new Error(`Downloaded file size mismatch: expected ${t}, received ${l}`);if(d>0){let u=vv(a);o.md5.push(u.md5),o.sha1.push(u.sha1),o.sha256.push(u.sha256)}return{size:l,hashes:{...vv(s),pieces:o}}}var Ls=new at,Mx=10*1024*1024,_v=512*1024*1024,g7=1e3,loe=8*1024*1024,p7=4*1024*1024;function _n(r,e,t){let i=r.env?.[e]??(typeof process<"u"?process.env?.[e]:void 0),n=Number(i);return Number.isSafeInteger(n)&&n>0?n:t}function r0(r){try{return typeof r.executionCtx?.waitUntil!="function"?void 0:{waitUntil:e=>r.executionCtx.waitUntil(e)}}catch{return}}function Vr(r,e,t){return r.json({code:e,message:t,data:null},e)}async function nf(r){let e=_n(r,"SEED_MAX_METADATA_SIZE",Mx);if(Number(r.req.header("Content-Length")||0)>e)throw new Error(`Seed request exceeds the ${e} byte limit`);let i=await r.req.text();if(new TextEncoder().encode(i).byteLength>e)throw new Error(`Seed request exceeds the ${e} byte limit`);return i.trim()?JSON.parse(i):{}}function za(r,e="/"){let t=String(r||e).replace(/\\/g,"/").trim();if(t.includes("\0"))throw new Error("Path contains an illegal null byte");let i=t.split("/").filter(Boolean);if(i.some(n=>n==="."||n===".."))throw new Error("Path traversal is not allowed");return"/"+i.join("/")}function Qv(r,e){return za(`${r.replace(/\/+$/,"")}/${e}`)}function m7(r,e){if(!vt(r))throw new Error("Permission denied");let t=za(e);if(t==="/@s"||t.startsWith("/@s/"))throw new Error("Writing through a share path is not allowed");let i=st(r,t),n=za(r?.base_path||"/");if(n!=="/"&&i!==n&&!i.startsWith(`${n}/`))throw new Error("Target path is outside the user base path");return i}function doe(r,e){if(r instanceof Uint8Array)return r;if(Array.isArray(r)&&r.every(t=>Number.isInteger(t)&&t>=0&&t<=255))return Uint8Array.from(r);if(typeof r!="string")throw new Error("Seed content is required");return e==="text"||r.trimStart().startsWith("{")||r.trimStart().startsWith("d")?new TextEncoder().encode(r):new Uint8Array(Buffer.from(r,"base64"))}function Lx(r){let e=String(r||"").toLowerCase().replace(/^\./,"");return e==="oss"||e==="torrent"||e==="cas"?e:void 0}function y7(r,e){return`${r.name.replace(/[\\/:*?"<>|\0]/g,"_")||"seed"}.${e==="torrent"?"torrent":e}`}function Sv(r){let e=r.split("/").pop()||r,t=e.lastIndexOf(".");return t>0?e.slice(0,t):e}function uoe(r){if(r.length===0)return"OpenList Seed";if(r.length===1)return Sv(r[0].virtualPath);let e=Sv(r[0].virtualPath);if(r.every(a=>Sv(a.virtualPath)===e)&&e)return e;let n=r[0].virtualPath.split("/").slice(0,-1);for(let a of r.slice(1)){let o=a.virtualPath.split("/").slice(0,-1),c=0;for(;c<n.length&&c<o.length&&n[c]===o[c];)c++;n=n.slice(0,c)}return n[n.length-1]||"OpenList Seed"}function Fv(r,e,t,i={}){let n=Buffer.from(t).toString("base64");return{format:e,file_name:y7(r,e),seed_data:n,size:t.byteLength,seed:r,...i}}function I7(r){let e=r.env?.ALLOW_SEED??(typeof process<"u"?process.env?.ALLOW_SEED:"");return String(e||"").split(/[\s,;]+/).map(t=>t.toLowerCase()).filter(Boolean)}function w7(r,e){let t=r.toLowerCase();return e.some(i=>i.startsWith("*.")?t.endsWith(i.slice(1))&&t!==i.slice(2):t===i)}function Dv(r,e){if(!e.url)throw new Error("Seed source URL is required");let t=new URL(r.req.url),i=new URL(e.url,t.origin);if(ni(i.toString(),"Seed source"),i.username||i.password)throw new Error("Seed source URL credentials are not allowed");let n=e.type.toLowerCase(),s=i.origin===t.origin&&(/^\/(api\/)?p\//.test(i.pathname)||i.pathname.startsWith("/d/")||i.pathname.startsWith("/@s/")),a=["share","openlist-share"].includes(n)&&i.pathname.startsWith("/@s/"),o=["direct","openlist-direct"].includes(n)&&s;if(!a&&!o&&!w7(i.hostname,I7(r)))throw new Error("Seed source host is not an approved OpenList endpoint or configured domain");if(e.expires_at){let c=Date.parse(e.expires_at);if(!Number.isFinite(c)||c<=Date.now())throw new Error("Seed source has expired")}return i}async function Hx(r,e,t={},i=!1){let n=e;for(let s=0;s<=3;s++){if(ni(n.toString(),"Seed fetch"),i){let c=new URL(r.req.url);if(!(n.origin===c.origin&&(/^\/(api\/)?p\//.test(n.pathname)||n.pathname.startsWith("/@s/")))&&!w7(n.hostname,I7(r)))throw new Error("Seed fetch redirect left the approved source allowlist")}let a=await fetch(n,{...t,redirect:"manual"});if(a.status<300||a.status>=400)return a;let o=a.headers.get("Location");if(!o)throw new Error("Seed fetch redirect is missing a Location header");n=new URL(o,n)}throw new Error("Seed fetch exceeded the redirect limit")}async function foe(r,e,t){let i=st(e,za(t)),{item:n,rawUrl:s}=await Gi(i,r0(r)),a=_n(r,"SEED_MAX_METADATA_SIZE",Mx);if(n.is_dir||n.size<0||n.size>a)throw new Error(`Seed file exceeds the ${a} byte limit`);let o=n.raw_url||new URL(s,r.req.url).toString(),c=n.raw_url_headers||{};!n.raw_url&&r.req.header("Authorization")&&(c.Authorization=r.req.header("Authorization"));let l=await Hx(r,new URL(o,r.req.url),{headers:c});if(!l.ok)throw new Error(`Seed file download failed with HTTP ${l.status}`);if(Number(l.headers.get("Content-Length")||n.size)>a)throw new Error(`Seed file exceeds the ${a} byte limit`);let u=l.body?.getReader();if(!u)throw new Error("Seed file response has no body");let f=[],A=0;for(;;){let{done:I,value:m}=await u.read();if(I)break;if(m?.length){if(A+=m.length,A>a)throw new Error(`Seed file exceeds the ${a} byte limit`);f.push(m)}}let g=new Uint8Array(A),p=0;for(let I of f)g.set(I,p),p+=I.length;return g}async function i0(r,e,t){if(t.seed&&typeof t.seed=="object")return{format:"oss",seed:on(t.seed)};let i=_n(r,"SEED_MAX_METADATA_SIZE",Mx),n=t.seed_data||t.content||t.data||t.torrent_data,s=t.seed_path||t.path&&!n?await foe(r,e,String(t.seed_path||t.path)):doe(t.seed_data??t.content??t.data??t.torrent_data,t.encoding);if(s.byteLength>i)throw new Error(`Seed content exceeds the ${i} byte limit`);return f7(s,Lx(t.format||t.from_format||t.file_name?.split(".").pop()))}async function Pv(r,e,t){let i=Array.isArray(t)?t:[t];if(!i.length||i.some(o=>typeof o!="string"||!o.trim()))throw new Error("paths must contain at least one path");let n=_n(r,"SEED_MAX_FILES",g7),s=[],a=async(o,c)=>{if(s.length>=n)throw new Error(`Seed file count exceeds the ${n} file limit`);let l=st(e,o),{item:d,rawUrl:u}=await Gi(l,r0(r));if(!d.is_dir){let A=d.raw_url||new URL(u,r.req.url).toString(),g={...d.raw_url_headers||{}};!d.raw_url&&r.req.header("Authorization")&&(g.Authorization=r.req.header("Authorization")),s.push({virtualPath:l,relativePath:o7(c),size:d.size,modified:d.modified||"",rawUrl:A,headers:g,hashes:d.hashes??(d.hash?{md5:d.hash}:{})});return}let{content:f}=await lr(l,r0(r));for(let A of f){let g=Qv(o,A.name),p=`${c.replace(/\/$/,"")}/${A.name}`;await a(g,p)}};for(let o of i){let c=za(o),l=c.split("/").filter(Boolean).pop()||"root";await a(c,l)}if(!s.length)throw new Error("No files were found for seed generation");return s}function rf(r,e){if(e==="cas"){let t=[];for(let i of r.files){i.hashes.md5||t.push(`${i.path}: missing whole-file MD5`);let n=!!i.cas_slice_md5,s=r.piece_size===10485760&&i.hashes.pieces.md5.length>0;i.size>10485760&&!n&&!s&&t.push(`${i.path}: missing legacy slice MD5 or complete 10 MiB MD5 pieces`)}return t}if(e==="torrent"){let t=[];return r.files.forEach((i,n)=>{i.hashes.pieces.sha1.length||t.push(`${i.path}: missing SHA-1 piece hashes`),r.files.length>1&&n<r.files.length-1&&i.size%r.piece_size!==0&&t.push(`${i.path}: piece boundary crosses the next file`)}),t}return[]}function hoe(r){return{oss:rf(r,"oss"),torrent:rf(r,"torrent"),cas:rf(r,"cas")}}function Aoe(r){return Object.fromEntries(["oss","torrent","cas"].map(e=>{let t=rf(r,e);return[e,{feasible:t.length===0,missing:t}]}))}async function Tv(r,e,t,i){if(!t)return;let n=m7(e,t);await ts(n,Buffer.from(i),r0(r))}async function goe(){try{let e=(await ps()).seed_default_matrix;if(e){let t=JSON.parse(String(e));if(t&&typeof t=="object")return t}}catch{}}async function poe(r){try{let e=await ps(),t=String(e.seed_site_url||"").trim();if(t)return t.replace(/\/+$/,"")}catch{}return new URL(r.req.url).origin}async function moe(r,e,t){let i=e&&typeof e=="object"?e:null,n=!!i?.md5||!!i?.sha1||!!i?.sha256;if(!n)try{let a=(await ps()).seed_default_matrix;if(a){let o=JSON.parse(String(a));if(o?.md5||o?.sha1||o?.sha256)return Ox(o,t)}}catch{}return Ox(n?e:void 0,t)}async function yoe(r,e,t,i){let n=i.includes("cas")?10485760:Number(t.piece_size||10485760);if(!Number.isSafeInteger(n)||n<16*1024||n>64*1024*1024)throw new Error("Invalid piece_size");let s=await moe(r,t.hash_matrix,i),a=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},o=await Pv(r,e,t.paths??t.path),c=_n(r,"SEED_MAX_HASH_BYTES",_v),l=o.reduce((A,g)=>A+g.size,0);if(!Number.isSafeInteger(l)||l>c)throw new Error(`Seed input exceeds the ${c} byte hashing limit`);let d=await t0.create(n),u=await poe(r),f=[];for(let A of o){let g=await Hx(r,new URL(A.rawUrl,r.req.url),{headers:A.headers});if(!g.ok)throw new Error(`Source download failed with HTTP ${g.status}: ${A.virtualPath}`);if(!g.body)throw new Error(`Source download has no body: ${A.virtualPath}`);let p=await kv(g.body,n,A.size,c,d),I=String(a[A.relativePath]??a[A.virtualPath]??"");f.push(xv({path:A.relativePath,size:p.size,modified:A.modified,comment:I,hashes:p.hashes,cas_slice_md5:"",cas_create_time:"",cas_cloud:"",missing_channels:[],sources:t.include_direct_source===!0||t.include_sources===!0?[{type:"openlist-direct",url:`${u}/d${A.virtualPath}`,expires_at:"",share_id:""}]:[]},s))}return{torrentPieces:d.digest(),seed:on({name:String(t.name||uoe(o)),comment:String(t.comment||"Generated by OpenList"),created_at:new Date().toISOString(),created_by:String(t.created_by||"OpenList"),piece_size:n,trackers:Array.isArray(t.trackers)?t.trackers:[],channels:Array.isArray(t.channels)?t.channels:[],files:f})}}function Uv(r,e){for(let t of e.sources)try{return{source:t,url:Dv(r,t)}}catch{continue}}async function Ioe(r,e,t,i,n,s=!1){let a=m7(e,i),o=a.split("/").filter(Boolean),c=o.pop();if(!c)throw new Error("Target file name is required");let l="/"+o.join("/"),d=await yt(a),u=await yt(l);if(d.isVirtual||u.isVirtual||!d.storage)throw new Error("Target storage was not found");let f=await It(d.storage.driver,d.storage),A=f,g={size:t.size,md5:t.hashes.md5,sha1:t.hashes.sha1,sha256:t.hashes.sha256,hashes:t.hashes};try{if(typeof A.rapidUpload=="function"){let w=await A.rapidUpload(a,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"rapidUpload"}}if(typeof A.putRapid=="function"){let w=await A.putRapid(a,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"putRapid"}}let p;if(typeof A.createUploadSession=="function"&&(p=await A.createUploadSession(l,u.physical,c,t.size,t.hashes.md5),p?.reuse))return{status:"reused",method:"multipart-rapid"};if(s)throw new Error("capability unavailable: target driver did not reuse the available hashes");if(!n)throw new Error("capability unavailable: no rapid-upload match and no approved source URL");let I=await Hx(r,n.url,{},!0);if(!I.ok||!I.body)throw new Error(`Source download failed with HTTP ${I.status}`);if(p?.session&&typeof A.uploadPart=="function"&&typeof A.completeUploadSession=="function"){let w=Math.min(_n(r,"SEED_TRANSFER_CHUNK_SIZE",loe),16777216),B=I.body.getReader(),C=new Uint8Array(0),x=1,_=0,R=[];for(;;){let{done:U,value:T}=await B.read();if(T?.length){if(_+=T.length,_>t.size)throw new Error("Source exceeds the declared file size");let D=new Uint8Array(C.length+T.length);for(D.set(C),D.set(T,C.length),C=D;C.length>=w;){let b=C.slice(0,w);C=C.slice(w);let Q=await A.uploadPart(p.session,x++,Buffer.from(b));Q?.partMd5&&R.push(Q.partMd5)}}if(U)break}if(_!==t.size)throw new Error("Source size does not match seed metadata");if(C.length||t.size===0){let U=await A.uploadPart(p.session,x,Buffer.from(C));U?.partMd5&&R.push(U.partMd5)}return await A.completeUploadSession(p.session,R),{status:"saved",method:"multipart-stream"}}if(typeof A.putStream=="function")return await A.putStream(a,d.physical,I.body,t.size,g),{status:"saved",method:"putStream"};let m=_n(r,"SEED_BUFFERED_TRANSFER_MAX",p7);if(t.size<=m){let w=new Uint8Array(await I.arrayBuffer());if(w.byteLength!==t.size)throw new Error("Source size does not match seed metadata");return await f.put(a,d.physical,Buffer.from(w)),{status:"saved",method:"bounded-buffer"}}throw new Error("capability unavailable: target driver has no streaming or multipart upload API")}finally{await rr(d.storage.driver,d.storage,f,r0(r))}}Ls.get("/capabilities",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");let t,i=r.req.query("path");if(i)try{let n=st(e,za(i)),s=await yt(n);if(!s.isVirtual&&s.storage){let o=await It(s.storage.driver,s.storage);t={driver:s.storage.driver,rapid_upload:typeof o.rapidUpload=="function"||typeof o.putRapid=="function"||typeof o.createUploadSession=="function",stream_upload:typeof o.putStream=="function"||typeof o.createUploadSession=="function"&&typeof o.uploadPart=="function"&&typeof o.completeUploadSession=="function"}}}catch(n){t={error:Le(n)}}return r.json({code:200,message:"success",data:{formats:["oss","torrent","cas"],version:1,hash_algorithms:["md5","sha1","sha256"],incremental_hashing:!0,torrent_v1:!0,extensions:["x-openlist","x-cas"],offline_download:"conditional",queue_adapter:!1,limits:{metadata_bytes:_n(r,"SEED_MAX_METADATA_SIZE",Mx),hash_bytes:_n(r,"SEED_MAX_HASH_BYTES",_v),files:_n(r,"SEED_MAX_FILES",g7)},target:t}})});Ls.post("/capabilities",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");try{let t=await nf(r);if(Array.isArray(t.paths)&&t.paths.length>0){let g=await Pv(r,e,t.paths),p=await ps(),I=String(p.seed_default_trackers||"").split(` +`).map(x=>x.trim()).filter(Boolean),m=["md5","sha1","sha256"],w=g.map(x=>{let _=m.filter(U=>!!x.hashes[U]),R=_.length<m.length;return{path:x.virtualPath,name:x.relativePath,size:x.size,available_hashes:_,requires_download:R,requires_fetch:R,estimated_traffic:R?x.size:0,streamable:!0,share_available:!0,direct_source_available:!0}}),B=new Set;for(let x of g)for(let _ of m)x.hashes[_]&&B.add(_);let C=m.filter(x=>B.has(x));return r.json({code:200,message:"success",data:{formats:{oss:!0,torrent:!0,cas:!0},files:w,existing_hashes:C,estimated_traffic:w.reduce((x,_)=>x+_.estimated_traffic,0),default_matrix:await goe(),trackers:I}})}let i=await i0(r,e,t),n=st(e,za(t.path)),s=await yt(n);if(s.isVirtual||!s.storage)throw new Error("Target storage was not found");let o=await It(s.storage.driver,s.storage),c=typeof o.rapidUpload=="function"||typeof o.putRapid=="function"||typeof o.createUploadSession=="function",l=Array.isArray(o.rapidHashAlgos)?o.rapidHashAlgos.map(g=>String(g).toLowerCase()).filter(g=>["md5","sha1","sha256"].includes(g)):["md5","sha1"],d=typeof o.rapidHashNeedsPieces=="boolean"?o.rapidHashNeedsPieces:!1,u=typeof o.putStream=="function"||typeof o.createUploadSession=="function"&&typeof o.uploadPart=="function"&&typeof o.completeUploadSession=="function",f=_n(r,"SEED_BUFFERED_TRANSFER_MAX",p7),A=i.seed.files.map(g=>{let p=l.some(B=>!!g.hashes[B])||!1,I=d?p&&(g.hashes.pieces.md5.length>0||g.hashes.pieces.sha1.length>0):p,m=!!Uv(r,g),w="download_required";return c&&I?w="rapid_upload":m&&u?w="stream_upload":m&&g.size<=f&&(w="bounded_upload"),{path:g.path,method:w,requires_download:w==="download_required"}});return r.json({code:200,message:"success",data:{driver:s.storage.driver,policy:String(t.policy||"inherit"),driver_supports:{cas_rapid:c,rapid_hash_algos:l,rapid_uses_pieces:d},files:A}})}catch(t){return Vr(r,400,Le(t))}});Ls.post("/generate",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");try{let t=await nf(r);if((t.save_path||t.output_path)&&!vt(e))return Vr(r,403,"Permission denied");let n=(Array.isArray(t.formats)?t.formats:[t.format||"oss"]).map(Lx);if(n.some(d=>!d))throw new Error("A valid output format is required");let s=n,{seed:a,torrentPieces:o}=await yoe(r,e,t,s),c=t.output_path||(Array.isArray(t.formats)?t.save_path:void 0),l=[];for(let d of s){let u=rf(a,d);if(u.length){l.push({format:d,convertible:!1,diagnostics:u});continue}let f=d==="torrent"?await bv(a,o):await e0(a,d),A=c?Qv(za(c),y7(a,d)):t.save_path;await Tv(r,e,A,f),l.push(Fv(a,d,f,{convertible:!0,...A?{path:A}:{}}))}return r.json({code:200,message:"success",data:Array.isArray(t.formats)?{seed:a,outputs:l,artifacts:l}:l[0]})}catch(t){let i=Le(t);return Vr(r,i.includes("limit")||i.includes("exceeds")?413:400,i)}});Ls.post("/parse",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");try{let t=await nf(r),i=await i0(r,e,t),n=i.seed.files.reduce((o,c)=>o+c.size,0),s=i.seed.files.some(o=>!!Uv(r,o)),a=i.seed.files.some(o=>!!o.hashes.md5||!!o.hashes.sha1||!!o.hashes.sha256);return r.json({code:200,message:"success",data:{format:i.format,seed:i.seed,files:i.seed.files,total_size:n,diagnostics:hoe(i.seed),conversions:Aoe(i.seed),capabilities:{rapid_upload:a,offline_download:s,transfer:s,convert:!0,edit:!0,recalculate:!0},direct_preview:!1,...i.info_hash?{info_hash:i.info_hash}:{}}})}catch(t){return Vr(r,400,Le(t))}});Ls.post("/convert",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");try{let t=await nf(r);if(t.save_path&&!vt(e))return Vr(r,403,"Permission denied");let i=Lx(t.to_format||t.target_format||t.output_format);if(!i)throw new Error("A valid target format is required");let n=await i0(r,e,t),s=rf(n.seed,i);if(s.length)return r.json({code:200,message:"success",data:{convertible:!1,diagnostics:s}});let a=await e0(n.seed,i);return await Tv(r,e,t.save_path,a),r.json({code:200,message:"success",data:Fv(n.seed,i,a,{convertible:!0})})}catch(t){return Vr(r,400,Le(t))}});function woe(r,e,t,i){if(!e)return;let n=!1;for(let s of i.values())if(s){n=!0;break}n&&!r.channels.some(s=>s.driver===e)&&r.channels.push({driver:e,mount_path:t});for(let s of r.files){if(!i.has(s.path))continue;i.get(s.path)?s.missing_channels=s.missing_channels.filter(o=>o!==e):s.missing_channels.includes(e)||s.missing_channels.push(e)}}async function x7(r,e){let t=await Je(r);if(!vt(t))return Vr(r,403,"Permission denied");if(!e&&!mc(t,pc.OFFLINE_DOWNLOAD))return Vr(r,403,"Offline download permission is required");try{let i=await nf(r),n=await i0(r,t,i),s=za(i.target_path||i.destination||i.path||"/"),a=new Set(Array.isArray(i.files)?i.files.map(p=>String(p)):[]),o=new Set(Array.isArray(i.selected_files)?i.selected_files.map(p=>Number(p)):[]);if([...o].some(p=>!Number.isSafeInteger(p)||p<0||p>=n.seed.files.length))throw new Error("selected_files contains an invalid index");let c="",l="";try{let p=await yt(st(t,s));!p.isVirtual&&p.storage&&(c=p.storage.driver||"",l=p.storage.mount_path||"")}catch{}let d=n.seed.files.filter((p,I)=>a.size?a.has(p.path):o.size?o.has(I):!0),u=[],f=new Map,A=0;for(let p of d){let I=Qv(s,p.path),m=Uv(r,p);try{if(!e&&!m)throw new Error("capability unavailable: offline download requires an approved source URL");let w=await Ioe(r,t,p,I,m,e);A++,f.set(p.path,!0),u.push({path:p.path,target:I,...w})}catch(w){f.set(p.path,!1),u.push({path:p.path,target:I,status:"unavailable",error:Le(w)})}}if(A===0)return r.json({code:501,message:e?"capability unavailable: target driver cannot reuse hashes and no transferable source is available":"capability unavailable: no approved source and streaming upload combination is available",data:{results:u}},501);let g={total:u.length,saved:A,results:u};if(i.update_channel===!0&&c){woe(n.seed,c,l,f);let p=await e0(n.seed,n.format);g.seed_data=Buffer.from(p).toString("base64"),g.seed=n.seed}return r.json({code:200,message:"success",data:g})}catch(i){return Vr(r,400,Le(i))}}Ls.post("/rapid_upload",r=>x7(r,!0));Ls.post("/offline_download",r=>x7(r,!1));Ls.post("/update",async r=>{let e=await Je(r);if(!e||e.disabled)return Vr(r,401,"Unauthorized");try{let t=await nf(r);if(t.save_path&&!vt(e))return Vr(r,403,"Permission denied");let i=await i0(r,e,t),n=t.patch&&typeof t.patch=="object"?t.patch:t,s=t.options&&typeof t.options=="object"?t.options:{},a=n.comment??s.comment,o=!!(n.recalculate??s.recalculate),c=on({...i.seed,name:n.name??i.seed.name,comment:a??i.seed.comment,trackers:n.trackers??i.seed.trackers,channels:n.channels??i.seed.channels,files:n.files??i.seed.files}),l=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},d=t.file_sources&&typeof t.file_sources=="object"?t.file_sources:{};for(let A of c.files)if(l[A.path]!==void 0&&(A.comment=String(l[A.path])),Array.isArray(d[A.path])){for(let g of d[A.path])Dv(r,g);A.sources=d[A.path]}if(o){let A=Number(t.piece_size||i.seed.piece_size||10485760);if(!Number.isSafeInteger(A)||A<16*1024||A>64*1024*1024)throw new Error("Invalid piece_size");c.piece_size=A;let g=Ox(t.hash_matrix,[i.format]),p=Array.isArray(t.recalc_files)?t.recalc_files:[];if(!p.length)throw new Error("recalculate requires at least one recalc_files entry");let I=new Map;for(let B of p)typeof B?.source_path=="string"&&B.source_path.trim()&&I.set(String(B.path),B.source_path);let m=await t0.create(A),w=_n(r,"SEED_MAX_HASH_BYTES",_v);for(let B of c.files){let C=I.get(B.path);if(!C)continue;let x=await Pv(r,e,[C]);if(x.length!==1)throw new Error(`Recalculate path must resolve to exactly one file: ${C}`);let _=x[0],R=await Hx(r,new URL(_.rawUrl,r.req.url),{headers:_.headers});if(!R.ok||!R.body)throw new Error(`Recalculate download failed with HTTP ${R.status}`);let U=await kv(R.body,A,_.size,w,m);B.hashes=xv({...B,hashes:U.hashes},g).hashes,B.size=U.size,B.cas_slice_md5="",B.cas_create_time=""}}for(let A of c.files)for(let g of A.sources)Dv(r,g);let u=Lx(t.output_format||t.to_format)||i.format,f=await e0(c,u);return await Tv(r,e,t.save_path,f),r.json({code:200,message:"success",data:Fv(c,u,f)})}catch(t){return Vr(r,400,Le(t))}});var Kx=new Map,xoe=1*1024*1024,Coe=64*1024*1024,Eoe=10*1024*1024;function C7(r){return!Number.isFinite(r)||r<=0?Eoe:Math.min(Coe,Math.max(xoe,Math.floor(r)))}function Boe(r){let e=Array.from(r).sort((s,a)=>s-a);if(e.length===0)return[];let t=[],i=e[0],n=e[0];for(let s=1;s<e.length;s++)e[s]===n+1?n=e[s]:(t.push([i,n]),i=n=e[s]);return t.push([i,n]),t}function Ll(r){let e=Boe(r.received),t=r.received.size*r.chunk_size,i=0;for(let s=0;s<r.total_chunks&&r.received.has(s);s++)i=s+1;let n=r.total_chunks>0?Math.floor(r.received.size/r.total_chunks*100):0;return{upload_id:r.upload_id,state:r.state,attempt:r.attempt,path:r.path,size:r.size,chunk_size:r.chunk_size,total_chunks:r.total_chunks,received:e,received_bytes:t,frontier:i,storage_progress:n,error:r.error}}function Gx(r){return Kx.get(r)}function E7(r,e){for(let t of Kx.values())if(t.path===r&&t.size===e&&(t.state==="receiving"||t.state==="failed_retriable"))return t}function n0(r){Kx.set(r.upload_id,r)}function B7(r){Kx.delete(r)}function b7(){return`mp_${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}`}async function boe(r){try{let e=await yt(r);return e?.storage?UQ(e.storage):!1}catch{return!1}}var wt=new at;wt.route("/seed",Ls);var Lt=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}},yr=r=>r.json({code:403,message:"Permission denied",data:null},403),voe=25*1024*1024,koe=16*1024*1024;function Soe(r,e){let t=r.env||{},i=e?"MAX_UPPART":"MAX_UPLOAD",n=t[i]||(typeof process<"u"?process.env?.[i]:"");if(n){let s=parseInt(String(n),10);if(Number.isFinite(s)&&s>0)return s}return e?koe:voe}function zx(r,e=!1){let t=parseInt(r.req.header("Content-Length")||"0",10);if(!t)return null;let i=Soe(r,e);return t>i?i:null}var Rv=(r,e)=>{let t=e==="wrong password",i=e||"share error";return r.json({code:t?403:400,message:i,data:null},t?403:400)};wt.post("/dirs",async r=>{let e=await r.req.json().catch(()=>({})),t=await Je(r),i=e.path||"/";if(!i.startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let s=Lt(r),a=i;(!e.force_root||!Ms(t))&&(a=st(t,a));try{if(a.startsWith("/@s")){let l=await Ju(a,e.password||"",r.env);if(!l.ok)return Rv(r,l.error);if(l.virtualList){let f=[];for(let A of l.share.files||[])try{let{item:g}=await Gi(A,s);if(g.is_dir){let p=String(A).split("/").filter(Boolean);f.push({name:p[p.length-1]||A,modified:g.modified||new Date().toISOString()})}}catch{}return r.json({code:200,message:"success",data:f})}let{content:d}=await lr(l.realPath,s),u=d.filter(f=>f.is_dir).map(f=>({name:f.name,modified:f.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:u})}let{content:o}=await lr(a,s),c=o.filter(l=>l.is_dir).map(l=>({name:l.name,modified:l.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:c})}catch(o){return r.json({code:500,message:Le(o),data:null})}});wt.post("/list",async r=>{let e=await r.req.json().catch(()=>({})),t=await Je(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=Lt(r),s=st(t,e.path||"/"),a=parseInt(e.page,10)||1,o=parseInt(e.per_page,10)||0,c=l=>{let d=l.length;if(o<=0)return{content:l,total:d};let f=(Math.max(1,a)-1)*o,A=f+o;return{content:l.slice(f,A),total:d}};try{if(s.startsWith("/@s")){let b=await Ju(s,e.password||"",r.env);if(!b.ok)return Rv(r,b.error);if(b.virtualList){let j=[];for(let G of b.share.files||[]){let K=String(G).split("/").filter(Boolean),$=K[K.length-1]||G;try{let{item:te}=await Gi(G,n);j.push({name:$,size:te.size||0,is_dir:!!te.is_dir,modified:te.modified||new Date().toISOString(),sign:"",thumb:te.thumb||"",type:te.type??0})}catch{try{await lr(G,n),j.push({name:$,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1})}catch{j.push({name:$,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",thumb:"",type:0})}}}let{content:z,total:L}=c(j);return r.json({code:200,message:"success",data:{content:z,total:L,readme:b.share.readme||"",header:b.share.header||"",write:!1,write_content_bypass:!1,provider:"Share"}})}let{content:Q,provider:v}=await lr(b.realPath,n),E=Q.map(j=>({name:j.name,size:j.size,is_dir:j.is_dir,created:j.created||j.modified||new Date().toISOString(),modified:j.modified||new Date().toISOString(),sign:j.sign||"",thumb:j.thumb||"",type:j.type??0})),{content:P,total:N}=c(E);return r.json({code:200,message:"success",data:{content:P,total:N,readme:b.share.readme||"",header:b.share.header||"",write:!1,write_content_bypass:!1,provider:v}})}let l=await Av(s,r.env);if(!gv(t,l,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);if(await boe(s))return r.json({code:403,message:"Index is disabled for this storage",data:null},403);let{content:d,provider:u,storage:f}=await lr(s,n),A=vt(t)&&pv(t,l,s),g=mv(l,s),p=await Tx(r),I=await Ux(r,s),m=p.enabled||I,w=m?p.expiresIn||await Wu(r):0,B=await Promise.all(d.filter(b=>!r7(l,s,b.name)).map(async b=>{let Q=`${s}/${b.name}`.replace(/\/{2,}/g,"/"),v=!b.is_dir&&m?await Xu(r,Q,w):"",E=b.hashinfo||b.hash_info_str||"",P=b.hash_info||{};return{name:b.name,size:b.size,is_dir:b.is_dir,created:b.created||b.modified||new Date().toISOString(),modified:b.modified||new Date().toISOString(),sign:v,thumb:b.thumb||"",type:b.type??0,hashinfo:E,hash_info:P}})),C=0;if(f&&(C=parseInt(f.page_size,10)||0,!C&&f.addition))try{let b=typeof f.addition=="string"?JSON.parse(f.addition):f.addition;C=parseInt(b?.page_size,10)||0}catch{}let x=o>0?o:C>0?C:0,_=b=>{let Q=b.length;if(x<=0)return{content:b,total:Q};let E=(Math.max(1,a)-1)*x,P=E+x;return{content:b.slice(E,P),total:Q}},R=(()=>{if(!f)return[];let b=[],Q=f;if(/^(s3|minio|cos|oss|r2|b2|cloudflare_r2)/i.test(Q.driver||"")&&b.push("s3_presigned"),Array.isArray(Q.direct_upload_tools))for(let v of Q.direct_upload_tools)b.includes(v)||b.push(v);return b})(),{content:U,total:T}=_(B),D=f?RQ(f,s):void 0;return r.json({code:200,message:"success",data:{content:U,total:T,readme:yv(l,s),header:Iv(l,s),write:A,write_content_bypass:g,provider:u,direct_upload_tools:R,page_size:x>0?x:void 0,cache_expiration:D}})}catch(l){return r.json({code:500,message:Le(l),data:null})}});wt.post("/get",async r=>{let e=await r.req.json().catch(()=>({})),t=await Je(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=Lt(r),s=st(t,e.path||"/");try{if(s.startsWith("/@s")){let m=await Ju(s,e.password||"",r.env);if(!m.ok)return Rv(r,m.error);if(m.virtualList){let _=s.split("/").filter(Boolean)[1]||"share";return r.json({code:200,message:"success",data:{name:_,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1,raw_url:"",readme:m.share.readme||"",header:m.share.header||"",provider:"Share",related:[],write:!1,write_content_bypass:!1}})}let w=s.split("/").filter(Boolean)[1]||"",{item:B,provider:C}=await Gi(m.realPath,n),x=s.replace(/^\/@s\/[^/]+/,"");return r.json({code:200,message:"success",data:{name:B.name,size:B.size,is_dir:B.is_dir,created:B.created||B.modified||new Date().toISOString(),modified:B.modified,sign:B.sign||"",thumb:B.thumb||"",type:B.type??0,raw_url:`/api/sd/${w}${x}`,readme:m.share.readme||"",header:m.share.header||"",provider:C,related:[],write:!1,write_content_bypass:!1}})}let a=await Av(s,r.env);if(!gv(t,a,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);let{item:o,provider:c,rawUrl:l}=await Gi(s,n),d=await Tx(r),u=d.enabled||await Ux(r,s),f=!o.is_dir&&u?await Xu(r,s,d.expiresIn||await Wu(r)):"",A=f&&l&&!/[?&]sign=/.test(l)?`${l}${l.includes("?")?"&":"?"}sign=${f}`:l,g=vt(t)&&pv(t,a,s),p=mv(a,s),I=[];if(!o.is_dir)try{let m=s.includes("/")&&s.slice(0,s.lastIndexOf("/"))||"/",w=o.name.includes(".")?o.name.slice(0,o.name.lastIndexOf(".")):o.name,{content:B}=await lr(m,n);I=B.filter(C=>C.name===o.name||C.is_dir?!1:(C.name.includes(".")?C.name.slice(0,C.name.lastIndexOf(".")):C.name)===w).map(C=>({name:C.name,size:C.size,is_dir:!1,modified:C.modified||new Date().toISOString(),sign:"",thumb:C.thumb||"",type:C.type??0}))}catch{I=[]}return r.json({code:200,message:"success",data:{name:o.name,size:o.size,is_dir:o.is_dir,created:o.created||o.modified||new Date().toISOString(),modified:o.modified,sign:f,thumb:o.thumb||"",type:o.type??0,raw_url:A,readme:yv(a,s),header:Iv(a,s),provider:c,related:I,write:g,write_content_bypass:p}})}catch(a){return r.json({code:500,message:Le(a),data:null})}});function sf(r){if(typeof r!="string"||!r.trim())throw new Error("Invalid or empty file name");let e=r.trim();if(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))throw new Error(`Illegal file name '${e}'`);return e}function Ja(r){if(typeof r!="string")throw new Error("Path must be a string");if(r.includes("\0"))throw new Error("Path contains illegal null byte");return r}wt.post("/mkdir",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let i=(await r.req.json().catch(()=>({}))).path||"/";try{Ja(i)}catch(a){return r.json({code:400,message:a.message,data:null},400)}let n=st(e,i),s=Lt(r);try{return await GA(n,s),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null})}});wt.post("/rename",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{path:t,name:i}=await r.req.json().catch(()=>({})),n="";try{Ja(t||"/"),n=sf(i)}catch(a){return r.json({code:400,message:a.message,data:null},400)}let s=Lt(r);try{let a=st(e,t||"/");return await zA(a,n,s),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null})}});wt.post("/remove",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{dir:t,names:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let n=[];try{Ja(t||"/"),n=i.map(a=>sf(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let s=Lt(r);try{let a=st(e,t||"/");return await hc(a,n,s),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null})}});wt.post("/move",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{Ja(t||"/"),Ja(i||"/"),s=n.map(o=>sf(o))}catch(o){return r.json({code:400,message:o.message,data:null},400)}let a=Lt(r);try{let o=st(e,t||"/"),c=st(e,i||"/");return await zu(o,c,s,a),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Le(o),data:null})}});wt.post("/copy",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{Ja(t||"/"),Ja(i||"/"),s=n.map(o=>sf(o))}catch(o){return r.json({code:400,message:o.message,data:null},400)}let a=Lt(r);try{let o=st(e,t||"/"),c=st(e,i||"/");return await JA(o,c,s,a),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Le(o),data:null})}});wt.put("/put",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{Ja(t)}catch(a){return r.json({code:400,message:a.message,data:null},400)}let i=st(e,t),n=Lt(r),s=zx(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let a=await r.req.arrayBuffer();return await ts(i,Buffer.from(a),n),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null})}});wt.put("/form",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{Ja(t)}catch(a){return r.json({code:400,message:a.message,data:null},400)}let i=st(e,t),n=Lt(r),s=zx(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let o=(await r.req.formData()).get("file");if(!o||typeof o=="string")return r.json({code:400,message:"missing file in form data",data:null});let c=Buffer.from(await o.arrayBuffer());return await ts(i,c,n),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null})}});wt.post("/upload/create",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{path:t,file_name:i,size:n,md5:s}=await r.req.json().catch(()=>({})),a=st(e,t||"/"),o=Lt(r);if(!i)return r.json({code:400,message:"path and file_name are required",data:null});try{let c=await yt(a);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await It(c.storage.driver,c.storage);if(typeof l.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let d;try{d=await l.createUploadSession(a,c.physical,i,Number(n)||0,s||"")}finally{await rr(c.storage.driver,c.storage,l,o)}return r.json({code:200,message:"success",data:d})}catch(c){return r.json({code:500,message:Le(c),data:null})}});wt.put("/upload/part",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=r.req.header("X-Upload-Session")||"",i=parseInt(r.req.header("X-Part-Number")||"0",10),n=decodeURIComponent(r.req.header("Upload-Path")||""),s=st(e,n),a=Lt(r);if(!t||!(i>=1)||!s)return r.json({code:400,message:"missing X-Upload-Session / X-Part-Number / Upload-Path",data:null});let o=zx(r,!0);if(o!==null)return r.json({code:413,message:`Part too large (max ${o} bytes)`,data:null},413);try{let c=await yt(s);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await It(c.storage.driver,c.storage);if(typeof l.uploadPart!="function")throw new Error("storage does not support chunked upload");let d=Buffer.from(await r.req.arrayBuffer()),u;try{u=await l.uploadPart(t,i,d)}finally{await rr(c.storage.driver,c.storage,l,a)}return r.json({code:200,message:"success",data:u??null})}catch(c){return r.json({code:500,message:Le(c),data:null})}});wt.post("/upload/complete",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{path:t,session:i,partMd5s:n}=await r.req.json().catch(()=>({})),s=st(e,t||"/"),a=Lt(r);if(!i)return r.json({code:400,message:"path and session are required",data:null});try{let o=await yt(s);if(o.isVirtual)throw new Error("failed get storage: storage not found");let c=await It(o.storage.driver,o.storage);if(typeof c.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await c.completeUploadSession(i,n)}finally{await rr(o.storage.driver,o.storage,c,a)}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Le(o),data:null})}});wt.post("/add_offline_download",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let{path:t,urls:i}=await r.req.json().catch(()=>({})),n=st(e,t||"/");return!i||i.length===0?r.json({code:400,message:"No URLs provided"}):r.json({code:501,message:"capability unavailable: this runtime has no durable offline-download adapter; use /fs/seed/offline_download with an approved source and a streaming-capable target driver",data:{path:n,accepted:0}},501)});wt.post("/search",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=st(e,t.parent||"/");try{let n=await Zu({parent:i,keywords:t.keywords||"",scope:t.scope!==void 0?parseInt(t.scope,10):0,page:t.page?parseInt(t.page,10):1,per_page:t.per_page?parseInt(t.per_page,10):30},r.env);return r.json({code:200,message:"success",data:n})}catch(n){return r.json({code:500,message:Le(n),data:null},500)}});wt.post("/other",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=st(e,t.path||"/"),n=t.method;if(!n)return r.json({code:400,message:"Missing required parameter 'method'",data:null},400);if(!vt(e))return yr(r);try{let s=await yt(i);if(s.isVirtual||!s.storage)throw new Error("failed get storage: storage not found");let a=await It(s.storage.driver,s.storage);if(typeof a.other=="function"){let o=await a.other(n,s.relative,t);return r.json({code:200,message:"success",data:o})}return r.json({code:500,message:`Driver '${s.storage.driver}' does not support other method '${n}'`,data:null},500)}catch(s){return r.json({code:500,message:Le(s),data:null},500)}});wt.post("/batch_rename",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t,rename_objects:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"rename_objects is required",data:null},400);let n=st(e,t||"/"),s=Lt(r);try{for(let a of i){let o=a?.src_name,c=a?.new_name;if(!o||!c)continue;sf(c);let l=`${n}/${o}`.replace(/\/{2,}/g,"/");await zA(l,c,s)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null},500)}});wt.post("/regex_rename",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t,src_name_regex:i,new_name_regex:n}=await r.req.json().catch(()=>({}));if(!i)return r.json({code:400,message:"src_name_regex is required",data:null},400);let s=st(e,t||"/"),a=Lt(r);try{let o=new RegExp(i),{content:c}=await lr(s,a);for(let l of c)if(!l.is_dir&&o.test(l.name)){let d=l.name.replace(o,n||"");sf(d);let u=`${s}/${l.name}`.replace(/\/{2,}/g,"/");await zA(u,d,a)}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Le(o),data:null},500)}});wt.post("/recursive_move",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t,dst_dir:i,conflict_policy:n}=await r.req.json().catch(()=>({})),s=st(e,t||"/"),a=st(e,i||"/"),o=n||"overwrite",c=Lt(r);try{let l=new Set;if(o!=="overwrite"){let f=await lr(a,c);l=new Set(f.content.map(A=>A.name))}let d=[s],u=0;for(;d.length>0;){let f=d.shift(),{content:A}=await lr(f,c);for(let g of A)if(g.is_dir)d.push(`${f}/${g.name}`.replace(/\/{2,}/g,"/"));else{if(l.has(g.name)){if(o==="cancel")return r.json({code:403,message:`file [${g.name}] exists`,data:null},403);if(o==="skip")continue}o!=="overwrite"&&l.add(g.name),await zu(f,a,[g.name],c),u++}}return r.json({code:200,message:`Successfully moved ${u} files`,data:null})}catch(l){return r.json({code:500,message:Le(l),data:null},500)}});wt.post("/remove_empty_directory",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{src_dir:t}=await r.req.json().catch(()=>({})),i=st(e,t||"/"),n=Lt(r);try{let s=async a=>{let{content:o}=await lr(a,n);for(let l of o)l.is_dir&&await s(`${a}/${l.name}`.replace(/\/{2,}/g,"/"));if(a===i)return;if((await lr(a,n)).content.length===0){let l=a.split("/").slice(0,-1).join("/")||"/",d=a.split("/").pop();await hc(l,[d],n)}};return await s(i),r.json({code:200,message:"success",data:null})}catch(s){return r.json({code:500,message:Le(s),data:null},500)}});wt.post("/link",async r=>{let e=await Je(r);if(!Ms(e))return yr(r);let{path:t}=await r.req.json().catch(()=>({})),i=st(e,t||"/"),n=Lt(r);try{let s=await yt(i);if(s.isVirtual||!s.storage)return r.json({code:500,message:"storage not found",data:null},500);let a=await It(s.storage.driver,s.storage);try{let c=await a.get(i,s.physical??"/");if(c&&c.raw_url)return r.json({code:200,message:"success",data:{url:c.raw_url}})}finally{await rr(s.storage.driver,s.storage,a,n)}let o=await Xu(r,i,await Wu(r));return r.json({code:200,message:"success",data:{url:`/api/p${da(i)}?sign=${encodeURIComponent(o)}`}})}catch(s){return r.json({code:500,message:Le(s),data:null},500)}});wt.post("/get_direct_upload_info",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let{path:t,file_name:i,file_size:n}=await r.req.json().catch(()=>({})),s=st(e,t||"/");try{let a=await yt(s);if(a.isVirtual||!a.storage)return r.json({code:200,message:"success",data:null});let c=await It(a.storage.driver,a.storage);if(typeof c.getDirectUploadInfo=="function"){let l=await c.getDirectUploadInfo(a.relative,i,n);return r.json({code:200,message:"success",data:l})}if(typeof c.other=="function")for(let l of["direct_upload","get_direct_upload_info"])try{let d=await c.other(l,a.relative,{file_name:i,file_size:n});if(d)return r.json({code:200,message:"success",data:d})}catch{}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Le(a),data:null},500)}});function Nv(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}wt.post("/multipart/init",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=decodeURIComponent(r.req.header("File-Path")||""),i=parseInt(r.req.header("X-File-Size")||"0",10),n=parseInt(r.req.header("X-Chunk-Size")||"0",10),s=r.req.header("X-File-Md5")||"";if(!t.trim()||i<=0)return r.json({code:400,message:"Missing File-Path / X-File-Size header",data:null},400);let{dir:a,name:o}=Nv(t),c=st(e,a),l=Lt(r);try{let d=await yt(c);if(d.isVirtual)throw new Error("failed get storage: storage not found");let u=await It(d.storage.driver,d.storage);if(typeof u.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let f=C7(n),A=Math.max(1,Math.ceil(i/f)),g,p=!1,I=E7(t,i);if(I)g=I,p=!0;else{let m=await u.createUploadSession(c,d.physical,o,i,s);g={upload_id:b7(),state:"receiving",attempt:0,path:t,size:i,chunk_size:f,total_chunks:A,received:new Set,driver_session:m?.session||"",partMd5s:new Array(A).fill(void 0),storage_driver:d.storage.driver,created_at:Date.now()},m?.reuse&&(g.state="completed",g.received=new Set(Array.from({length:A},(w,B)=>B))),n0(g)}return await rr(d.storage.driver,d.storage,u,l),r.json({code:200,message:"success",data:{...Ll(g),resumed:p}})}catch(d){return r.json({code:500,message:Le(d),data:null},500)}});wt.put("/multipart/chunk",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=r.req.header("X-Upload-Id")||"",i=parseInt(r.req.header("X-Chunk-Index")||"-1",10),n=t?Gx(t):void 0;if(!n)return r.json({code:404,message:"upload session not found",data:null},404);if(i<0||i>=n.total_chunks)return r.json({code:400,message:"invalid X-Chunk-Index",data:null},400);if(n.received.has(i))return r.json({code:200,message:"success",data:Ll(n)});let s=zx(r,!0);if(s!==null)return r.json({code:413,message:`Part too large (max ${s} bytes)`,data:null},413);let a=Lt(r);try{let o=await yt(st(e,Nv(n.path).dir));if(o.isVirtual)throw new Error("failed get storage: storage not found");let c=await It(o.storage.driver,o.storage);if(typeof c.uploadPart!="function")throw new Error("storage does not support chunked upload");let l=Buffer.from(await r.req.arrayBuffer()),d;try{d=await c.uploadPart(n.driver_session,i+1,l)}finally{await rr(o.storage.driver,o.storage,c,a)}return n.received.add(i),d?.partMd5&&(n.partMd5s[i]=d.partMd5),n0(n),r.json({code:200,message:"success",data:Ll(n)})}catch(o){return r.json({code:500,message:Le(o),data:null},500)}});wt.post("/multipart/complete",async r=>{let e=await Je(r);if(!vt(e))return yr(r);let t=r.req.header("X-Upload-Id")||"",i=t?Gx(t):void 0;if(!i)return r.json({code:404,message:"upload session not found",data:null},404);if(i.state==="completed")return r.json({code:200,message:"success",data:Ll(i)});let n=Lt(r);try{let s=await yt(st(e,Nv(i.path).dir));if(s.isVirtual)throw new Error("failed get storage: storage not found");let a=await It(s.storage.driver,s.storage);if(typeof a.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await a.completeUploadSession(i.driver_session,i.partMd5s.filter(o=>o!==void 0))}finally{await rr(s.storage.driver,s.storage,a,n)}return i.state="completed",n0(i),B7(i.upload_id),r.json({code:200,message:"success",data:Ll(i)})}catch(s){return i.state="failed_permanent",i.error=Le(s),n0(i),r.json({code:500,message:Le(s),data:null},500)}});wt.get("/multipart/status",async r=>{let e=r.req.query("upload_id")||"",t=e?Gx(e):void 0;return t?r.json({code:200,message:"success",data:Ll(t)}):r.json({code:404,message:"upload session not found",data:null},404)});function Ov(r){let e=r.toLowerCase();return e.endsWith(".zip")?"zip":e.endsWith(".tar.gz")||e.endsWith(".tgz")?"tar.gz":e.endsWith(".tar.bz2")||e.endsWith(".tbz2")?"tar.bz2":e.endsWith(".tar.xz")||e.endsWith(".txz")?"tar.xz":e.endsWith(".tar")?"tar":e.endsWith(".7z")?"7z":e.endsWith(".rar")?"rar":null}function qv(r){return r==="zip"}async function Mv(r,e,t){let i=st(e,t),n=await yt(i);if(n.isVirtual)throw new Error("failed get storage: storage not found");let s=await It(n.storage.driver,n.storage),a;try{a=await s.get(t,n.physical)}finally{await rr(n.storage.driver,n.storage,s,Lt(r))}if(!a||!a.raw_url)throw new Error("archive driver did not return download link");let o=qp(n.storage?.addition,r.env);ni(a.raw_url,"Archive download",o);let c=await fetch(a.raw_url,{headers:a.raw_url_headers||{}});if(!c.ok)throw new Error(`archive download failed: HTTP ${c.status}`);return await c.arrayBuffer()}function Doe(r){let e=[],t=new Map;for(let i of r.entries){let n=i.name.split("/").filter(Boolean);if(n.length===0)continue;let s=e,a="";for(let o=0;o<n.length;o++){let c=n[o],l=o===n.length-1;if(a=a?`${a}/${c}`:`/${c}`,l)s.push({name:c,size:i.size,is_dir:!1,modified:i.modified||new Date().toISOString(),type:v7(c,!1),children:[]});else{let d=t.get(a);d||(d={name:c,size:0,is_dir:!0,modified:i.modified||new Date().toISOString(),type:1,children:[]},t.set(a,d),s.push(d)),s=d.children}}}return e}function v7(r,e){let t=r.split(".").pop()?.toLowerCase()||"";if(e)return 1;let i=["mp4","mkv","webm","avi","mov","flv","m3u8"],n=["mp3","flac","wav","aac","ogg","m4a"],s=["jpg","jpeg","png","gif","webp","svg","bmp","ico"],a=["txt","md","json","js","ts","css","html","xml","yml","log"];return i.includes(t)?2:n.includes(t)?3:s.includes(t)?4:a.includes(t)?5:6}wt.post("/archive/meta",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim();if(!i)return r.json({code:400,message:"path is required",data:null},400);let n=Ov(i);if(!n)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!qv(n))return r.json({code:501,message:`archive format '${n}' is recognized but not supported in this runtime (Worker supports ZIP only); use the Go backend for ${n} archives`,data:null},501);try{let s=await Mv(r,e,i),a=Rx(s),o=Doe(a);return r.json({code:200,message:"success",data:{comment:"",encrypted:!1,content:o,raw_url:"",sign:""}})}catch(s){return r.json({code:500,message:Le(s),data:null},500)}});wt.post("/archive/list",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim(),n=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!i)return r.json({code:400,message:"path is required",data:null},400);let s=Ov(i);if(!s)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!qv(s))return r.json({code:501,message:`archive format '${s}' is recognized but not supported in this runtime; use the Go backend for ${s} archives`,data:null},501);try{let a=await Mv(r,e,i),o=Rx(a),c=n?n.replace(/^\/+|\/+$/g,"")+"/":"",l=o.entries.filter(f=>c?f.name.startsWith(c)&&f.name!==c.slice(0,-1):!f.name.includes("/")).map(f=>{let A=c?f.name.slice(c.length):f.name;return{name:A.split("/")[0],size:f.size,is_dir:!1,modified:f.modified||new Date().toISOString(),type:v7(A.split("/")[0],!1)}}),d=new Set,u=l.filter(f=>d.has(f.name)?!1:(d.add(f.name),!0));return r.json({code:200,message:"success",data:{content:u,total:u.length}})}catch(a){return r.json({code:500,message:Le(a),data:null},500)}});wt.post("/archive/decompress",async r=>{let e=await Je(r);if(!vt(e))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=String(t.src_dir||"").trim(),n=String(t.dst_dir||"").trim(),s=Array.isArray(t.name)?t.name:t.name?[String(t.name)]:[],a=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!s.length||!n)return r.json({code:400,message:"src_dir/dst_dir/name are required",data:null},400);try{let o=0;for(let c of s){let l=i?`${i}/${c}`:`/${c}`,d=Ov(c);if(!d||!qv(d))return r.json({code:400,message:`unsupported archive format: ${c} (only ZIP is supported)`,data:null},400);let u=await Mv(r,e,l),f=Rx(u),A=a?a.replace(/^\/+|\/+$/g,"")+"/":"";for(let g of f.entries){if(A&&!g.name.startsWith(A))continue;let p=A?g.name.slice(A.length):g.name;if(!p||p.endsWith("/"))continue;let I=`${n.replace(/\/+$/,"")}/${p}`,m=await s7(u,g);await ts(I,Buffer.from(m),Lt(r)),o++}}return r.json({code:200,message:"success",data:{task:null,count:o}})}catch(o){return r.json({code:500,message:Le(o),data:null},500)}});$l();Fr();nt();ar();Bo();var vi={};An(vi,{BRAND:()=>Hde,DIRTY:()=>Vl,EMPTY_PATH:()=>wde,INVALID:()=>Ke,NEVER:()=>vue,OK:()=>hi,ParseStatus:()=>Yr,Schema:()=>rt,ZodAny:()=>_c,ZodArray:()=>Wa,ZodBigInt:()=>Wl,ZodBoolean:()=>Xl,ZodBranded:()=>C0,ZodCatch:()=>ld,ZodDate:()=>Zl,ZodDefault:()=>cd,ZodDiscriminatedUnion:()=>kC,ZodEffects:()=>Rn,ZodEnum:()=>ad,ZodError:()=>$i,ZodFirstPartyTypeKind:()=>Ge,ZodFunction:()=>DC,ZodIntersection:()=>id,ZodIssueCode:()=>le,ZodLazy:()=>nd,ZodLiteral:()=>sd,ZodMap:()=>bf,ZodNaN:()=>kf,ZodNativeEnum:()=>od,ZodNever:()=>ss,ZodNull:()=>td,ZodNullable:()=>js,ZodNumber:()=>Yl,ZodObject:()=>Vi,ZodOptional:()=>Tn,ZodParsedType:()=>ke,ZodPipeline:()=>E0,ZodPromise:()=>Qc,ZodReadonly:()=>dd,ZodRecord:()=>SC,ZodSchema:()=>rt,ZodSet:()=>vf,ZodString:()=>Dc,ZodSymbol:()=>Ef,ZodTransformer:()=>Rn,ZodTuple:()=>Js,ZodType:()=>rt,ZodUndefined:()=>ed,ZodUnion:()=>rd,ZodUnknown:()=>Ya,ZodVoid:()=>Bf,addIssueToContext:()=>Ee,any:()=>Wde,array:()=>tue,bigint:()=>Jde,boolean:()=>WL,coerce:()=>bue,custom:()=>$L,date:()=>jde,datetimeRegex:()=>JL,defaultErrorMap:()=>$a,discriminatedUnion:()=>sue,effect:()=>mue,enum:()=>Aue,function:()=>uue,getErrorMap:()=>wf,getParsedType:()=>zs,instanceof:()=>Gde,intersection:()=>aue,isAborted:()=>bC,isAsync:()=>xf,isDirty:()=>vC,isValid:()=>Sc,late:()=>Kde,lazy:()=>fue,literal:()=>hue,makeIssue:()=>x0,map:()=>lue,nan:()=>zde,nativeEnum:()=>gue,never:()=>Zde,null:()=>Yde,nullable:()=>Iue,number:()=>YL,object:()=>rue,objectUtil:()=>aS,oboolean:()=>Bue,onumber:()=>Eue,optional:()=>yue,ostring:()=>Cue,pipeline:()=>xue,preprocess:()=>wue,promise:()=>pue,quotelessJson:()=>mde,record:()=>cue,set:()=>due,setErrorMap:()=>Ide,strictObject:()=>iue,string:()=>VL,symbol:()=>$de,transformer:()=>mue,tuple:()=>oue,undefined:()=>Vde,union:()=>nue,unknown:()=>Xde,util:()=>ot,void:()=>eue});var ot;(function(r){r.assertEqual=n=>{};function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{let s={};for(let a of n)s[a]=a;return s},r.getValidEnumValues=n=>{let s=r.objectKeys(n).filter(o=>typeof n[n[o]]!="number"),a={};for(let o of s)a[o]=n[o];return r.objectValues(a)},r.objectValues=n=>r.objectKeys(n).map(function(s){return n[s]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let s=[];for(let a in n)Object.prototype.hasOwnProperty.call(n,a)&&s.push(a);return s},r.find=(n,s)=>{for(let a of n)if(s(a))return a},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function i(n,s=" | "){return n.map(a=>typeof a=="string"?`'${a}'`:a).join(s)}r.joinValues=i,r.jsonStringifyReplacer=(n,s)=>typeof s=="bigint"?s.toString():s})(ot||(ot={}));var aS;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(aS||(aS={}));var ke=ot.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),zs=r=>{switch(typeof r){case"undefined":return ke.undefined;case"string":return ke.string;case"number":return Number.isNaN(r)?ke.nan:ke.number;case"boolean":return ke.boolean;case"function":return ke.function;case"bigint":return ke.bigint;case"symbol":return ke.symbol;case"object":return Array.isArray(r)?ke.array:r===null?ke.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?ke.promise:typeof Map<"u"&&r instanceof Map?ke.map:typeof Set<"u"&&r instanceof Set?ke.set:typeof Date<"u"&&r instanceof Date?ke.date:ke.object;default:return ke.unknown}};var le=ot.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),mde=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),$i=class r extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=i=>{this.issues=[...this.issues,i]},this.addIssues=(i=[])=>{this.issues=[...this.issues,...i]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(s){return s.message},i={_errors:[]},n=s=>{for(let a of s.issues)if(a.code==="invalid_union")a.unionErrors.map(n);else if(a.code==="invalid_return_type")n(a.returnTypeError);else if(a.code==="invalid_arguments")n(a.argumentsError);else if(a.path.length===0)i._errors.push(t(a));else{let o=i,c=0;for(;c<a.path.length;){let l=a.path[c];c===a.path.length-1?(o[l]=o[l]||{_errors:[]},o[l]._errors.push(t(a))):o[l]=o[l]||{_errors:[]},o=o[l],c++}}};return n(this),i}static assert(e){if(!(e instanceof r))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ot.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){let t={},i=[];for(let n of this.issues)if(n.path.length>0){let s=n.path[0];t[s]=t[s]||[],t[s].push(e(n))}else i.push(e(n));return{formErrors:i,fieldErrors:t}}get formErrors(){return this.flatten()}};$i.create=r=>new $i(r);var yde=(r,e)=>{let t;switch(r.code){case le.invalid_type:r.received===ke.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case le.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,ot.jsonStringifyReplacer)}`;break;case le.unrecognized_keys:t=`Unrecognized key(s) in object: ${ot.joinValues(r.keys,", ")}`;break;case le.invalid_union:t="Invalid input";break;case le.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ot.joinValues(r.options)}`;break;case le.invalid_enum_value:t=`Invalid enum value. Expected ${ot.joinValues(r.options)}, received '${r.received}'`;break;case le.invalid_arguments:t="Invalid function arguments";break;case le.invalid_return_type:t="Invalid function return type";break;case le.invalid_date:t="Invalid date";break;case le.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:ot.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case le.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="bigint"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case le.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case le.custom:t="Invalid input";break;case le.invalid_intersection_types:t="Intersection results could not be merged";break;case le.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case le.not_finite:t="Number must be finite";break;default:t=e.defaultError,ot.assertNever(r)}return{message:t}},$a=yde;var LL=$a;function Ide(r){LL=r}function wf(){return LL}var x0=r=>{let{data:e,path:t,errorMaps:i,issueData:n}=r,s=[...t,...n.path||[]],a={...n,path:s};if(n.message!==void 0)return{...n,path:s,message:n.message};let o="",c=i.filter(l=>!!l).slice().reverse();for(let l of c)o=l(a,{data:e,defaultError:o}).message;return{...n,path:s,message:o}},wde=[];function Ee(r,e){let t=wf(),i=x0({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===$a?void 0:$a].filter(n=>!!n)});r.common.issues.push(i)}var Yr=class r{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let i=[];for(let n of t){if(n.status==="aborted")return Ke;n.status==="dirty"&&e.dirty(),i.push(n.value)}return{status:e.value,value:i}}static async mergeObjectAsync(e,t){let i=[];for(let n of t){let s=await n.key,a=await n.value;i.push({key:s,value:a})}return r.mergeObjectSync(e,i)}static mergeObjectSync(e,t){let i={};for(let n of t){let{key:s,value:a}=n;if(s.status==="aborted"||a.status==="aborted")return Ke;s.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof a.value<"u"||n.alwaysSet)&&(i[s.value]=a.value)}return{status:e.value,value:i}}},Ke=Object.freeze({status:"aborted"}),Vl=r=>({status:"dirty",value:r}),hi=r=>({status:"valid",value:r}),bC=r=>r.status==="aborted",vC=r=>r.status==="dirty",Sc=r=>r.status==="valid",xf=r=>typeof Promise<"u"&&r instanceof Promise;var Te;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message})(Te||(Te={}));var Un=class{constructor(e,t,i,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=i,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},HL=(r,e)=>{if(Sc(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new $i(r.common.issues);return this._error=t,this._error}}};function et(r){if(!r)return{};let{errorMap:e,invalid_type_error:t,required_error:i,description:n}=r;if(e&&(t||i))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(a,o)=>{let{message:c}=r;return a.code==="invalid_enum_value"?{message:c??o.defaultError}:typeof o.data>"u"?{message:c??i??o.defaultError}:a.code!=="invalid_type"?{message:o.defaultError}:{message:c??t??o.defaultError}},description:n}}var rt=class{get description(){return this._def.description}_getType(e){return zs(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:zs(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Yr,ctx:{common:e.parent.common,data:e.data,parsedType:zs(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(xf(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let i=this.safeParse(e,t);if(i.success)return i.data;throw i.error}safeParse(e,t){let i={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zs(e)},n=this._parseSync({data:e,path:i.path,parent:i});return HL(i,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zs(e)};if(!this["~standard"].async)try{let i=this._parseSync({data:e,path:[],parent:t});return Sc(i)?{value:i.value}:{issues:t.common.issues}}catch(i){i?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(i=>Sc(i)?{value:i.value}:{issues:t.common.issues})}async parseAsync(e,t){let i=await this.safeParseAsync(e,t);if(i.success)return i.data;throw i.error}async safeParseAsync(e,t){let i={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zs(e)},n=this._parse({data:e,path:i.path,parent:i}),s=await(xf(n)?n:Promise.resolve(n));return HL(i,s)}refine(e,t){let i=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,s)=>{let a=e(n),o=()=>s.addIssue({code:le.custom,...i(n)});return typeof Promise<"u"&&a instanceof Promise?a.then(c=>c?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((i,n)=>e(i)?!0:(n.addIssue(typeof t=="function"?t(i,n):t),!1))}_refinement(e){return new Rn({schema:this,typeName:Ge.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return Tn.create(this,this._def)}nullable(){return js.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Wa.create(this)}promise(){return Qc.create(this,this._def)}or(e){return rd.create([this,e],this._def)}and(e){return id.create(this,e,this._def)}transform(e){return new Rn({...et(this._def),schema:this,typeName:Ge.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new cd({...et(this._def),innerType:this,defaultValue:t,typeName:Ge.ZodDefault})}brand(){return new C0({typeName:Ge.ZodBranded,type:this,...et(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new ld({...et(this._def),innerType:this,catchValue:t,typeName:Ge.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return E0.create(this,e)}readonly(){return dd.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},xde=/^c[^\s-]{8,}$/i,Cde=/^[0-9a-z]+$/,Ede=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Bde=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,bde=/^[a-z0-9_-]{21}$/i,vde=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,kde=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Sde=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Dde="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",oS,_de=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Qde=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Fde=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Pde=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tde=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Ude=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,GL="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Rde=new RegExp(`^${GL}$`);function zL(r){let e="[0-5]\\d";r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`);let t=r.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function Nde(r){return new RegExp(`^${zL(r)}$`)}function JL(r){let e=`${GL}T${zL(r)}`,t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function Ode(r,e){return!!((e==="v4"||!e)&&_de.test(r)||(e==="v6"||!e)&&Fde.test(r))}function qde(r,e){if(!vde.test(r))return!1;try{let[t]=r.split(".");if(!t)return!1;let i=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),n=JSON.parse(atob(i));return!(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return!1}}function Mde(r,e){return!!((e==="v4"||!e)&&Qde.test(r)||(e==="v6"||!e)&&Pde.test(r))}var Dc=class r extends rt{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ke.string){let s=this._getOrReturnCtx(e);return Ee(s,{code:le.invalid_type,expected:ke.string,received:s.parsedType}),Ke}let i=new Yr,n;for(let s of this._def.checks)if(s.kind==="min")e.data.length<s.value&&(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if(s.kind==="max")e.data.length>s.value&&(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if(s.kind==="length"){let a=e.data.length>s.value,o=e.data.length<s.value;(a||o)&&(n=this._getOrReturnCtx(e,n),a?Ee(n,{code:le.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):o&&Ee(n,{code:le.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),i.dirty())}else if(s.kind==="email")Sde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"email",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="emoji")oS||(oS=new RegExp(Dde,"u")),oS.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"emoji",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="uuid")Bde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"uuid",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="nanoid")bde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"nanoid",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="cuid")xde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"cuid",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="cuid2")Cde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"cuid2",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="ulid")Ede.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"ulid",code:le.invalid_string,message:s.message}),i.dirty());else if(s.kind==="url")try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),Ee(n,{validation:"url",code:le.invalid_string,message:s.message}),i.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"regex",code:le.invalid_string,message:s.message}),i.dirty())):s.kind==="trim"?e.data=e.data.trim():s.kind==="includes"?e.data.includes(s.value,s.position)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),i.dirty()):s.kind==="toLowerCase"?e.data=e.data.toLowerCase():s.kind==="toUpperCase"?e.data=e.data.toUpperCase():s.kind==="startsWith"?e.data.startsWith(s.value)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:{startsWith:s.value},message:s.message}),i.dirty()):s.kind==="endsWith"?e.data.endsWith(s.value)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:{endsWith:s.value},message:s.message}),i.dirty()):s.kind==="datetime"?JL(s).test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:"datetime",message:s.message}),i.dirty()):s.kind==="date"?Rde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:"date",message:s.message}),i.dirty()):s.kind==="time"?Nde(s).test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.invalid_string,validation:"time",message:s.message}),i.dirty()):s.kind==="duration"?kde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"duration",code:le.invalid_string,message:s.message}),i.dirty()):s.kind==="ip"?Ode(e.data,s.version)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"ip",code:le.invalid_string,message:s.message}),i.dirty()):s.kind==="jwt"?qde(e.data,s.alg)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"jwt",code:le.invalid_string,message:s.message}),i.dirty()):s.kind==="cidr"?Mde(e.data,s.version)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"cidr",code:le.invalid_string,message:s.message}),i.dirty()):s.kind==="base64"?Tde.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"base64",code:le.invalid_string,message:s.message}),i.dirty()):s.kind==="base64url"?Ude.test(e.data)||(n=this._getOrReturnCtx(e,n),Ee(n,{validation:"base64url",code:le.invalid_string,message:s.message}),i.dirty()):ot.assertNever(s);return{status:i.value,value:e.data}}_regex(e,t,i){return this.refinement(n=>e.test(n),{validation:t,code:le.invalid_string,...Te.errToObj(i)})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Te.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Te.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Te.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Te.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Te.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Te.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Te.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Te.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Te.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Te.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Te.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Te.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Te.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...Te.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Te.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Te.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...Te.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...Te.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...Te.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...Te.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...Te.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...Te.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...Te.errToObj(t)})}nonempty(e){return this.min(1,Te.errToObj(e))}trim(){return new r({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};Dc.create=r=>new Dc({checks:[],typeName:Ge.ZodString,coerce:r?.coerce??!1,...et(r)});function Lde(r,e){let t=(r.toString().split(".")[1]||"").length,i=(e.toString().split(".")[1]||"").length,n=t>i?t:i,s=Number.parseInt(r.toFixed(n).replace(".","")),a=Number.parseInt(e.toFixed(n).replace(".",""));return s%a/10**n}var Yl=class r extends rt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ke.number){let s=this._getOrReturnCtx(e);return Ee(s,{code:le.invalid_type,expected:ke.number,received:s.parsedType}),Ke}let i,n=new Yr;for(let s of this._def.checks)s.kind==="int"?ot.isInteger(e.data)||(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.invalid_type,expected:"integer",received:"float",message:s.message}),n.dirty()):s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),n.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),n.dirty()):s.kind==="multipleOf"?Lde(e.data,s.value)!==0&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.not_finite,message:s.message}),n.dirty()):ot.assertNever(s);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,Te.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Te.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Te.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Te.toString(t))}setLimit(e,t,i,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:i,message:Te.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Te.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Te.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Te.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Te.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Te.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Te.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:Te.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Te.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Te.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&ot.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let i of this._def.checks){if(i.kind==="finite"||i.kind==="int"||i.kind==="multipleOf")return!0;i.kind==="min"?(t===null||i.value>t)&&(t=i.value):i.kind==="max"&&(e===null||i.value<e)&&(e=i.value)}return Number.isFinite(t)&&Number.isFinite(e)}};Yl.create=r=>new Yl({checks:[],typeName:Ge.ZodNumber,coerce:r?.coerce||!1,...et(r)});var Wl=class r extends rt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ke.bigint)return this._getInvalidInput(e);let i,n=new Yr;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),n.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),n.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(i=this._getOrReturnCtx(e,i),Ee(i,{code:le.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):ot.assertNever(s);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return Ee(t,{code:le.invalid_type,expected:ke.bigint,received:t.parsedType}),Ke}gte(e,t){return this.setLimit("min",e,!0,Te.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Te.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Te.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Te.toString(t))}setLimit(e,t,i,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:i,message:Te.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Te.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Te.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Te.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Te.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Te.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};Wl.create=r=>new Wl({checks:[],typeName:Ge.ZodBigInt,coerce:r?.coerce??!1,...et(r)});var Xl=class extends rt{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==ke.boolean){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.boolean,received:i.parsedType}),Ke}return hi(e.data)}};Xl.create=r=>new Xl({typeName:Ge.ZodBoolean,coerce:r?.coerce||!1,...et(r)});var Zl=class r extends rt{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ke.date){let s=this._getOrReturnCtx(e);return Ee(s,{code:le.invalid_type,expected:ke.date,received:s.parsedType}),Ke}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return Ee(s,{code:le.invalid_date}),Ke}let i=new Yr,n;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()<s.value&&(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),i.dirty()):s.kind==="max"?e.data.getTime()>s.value&&(n=this._getOrReturnCtx(e,n),Ee(n,{code:le.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),i.dirty()):ot.assertNever(s);return{status:i.value,value:new Date(e.data.getTime())}}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:Te.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:Te.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};Zl.create=r=>new Zl({checks:[],coerce:r?.coerce||!1,typeName:Ge.ZodDate,...et(r)});var Ef=class extends rt{_parse(e){if(this._getType(e)!==ke.symbol){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.symbol,received:i.parsedType}),Ke}return hi(e.data)}};Ef.create=r=>new Ef({typeName:Ge.ZodSymbol,...et(r)});var ed=class extends rt{_parse(e){if(this._getType(e)!==ke.undefined){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.undefined,received:i.parsedType}),Ke}return hi(e.data)}};ed.create=r=>new ed({typeName:Ge.ZodUndefined,...et(r)});var td=class extends rt{_parse(e){if(this._getType(e)!==ke.null){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.null,received:i.parsedType}),Ke}return hi(e.data)}};td.create=r=>new td({typeName:Ge.ZodNull,...et(r)});var _c=class extends rt{constructor(){super(...arguments),this._any=!0}_parse(e){return hi(e.data)}};_c.create=r=>new _c({typeName:Ge.ZodAny,...et(r)});var Ya=class extends rt{constructor(){super(...arguments),this._unknown=!0}_parse(e){return hi(e.data)}};Ya.create=r=>new Ya({typeName:Ge.ZodUnknown,...et(r)});var ss=class extends rt{_parse(e){let t=this._getOrReturnCtx(e);return Ee(t,{code:le.invalid_type,expected:ke.never,received:t.parsedType}),Ke}};ss.create=r=>new ss({typeName:Ge.ZodNever,...et(r)});var Bf=class extends rt{_parse(e){if(this._getType(e)!==ke.undefined){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.void,received:i.parsedType}),Ke}return hi(e.data)}};Bf.create=r=>new Bf({typeName:Ge.ZodVoid,...et(r)});var Wa=class r extends rt{_parse(e){let{ctx:t,status:i}=this._processInputParams(e),n=this._def;if(t.parsedType!==ke.array)return Ee(t,{code:le.invalid_type,expected:ke.array,received:t.parsedType}),Ke;if(n.exactLength!==null){let a=t.data.length>n.exactLength.value,o=t.data.length<n.exactLength.value;(a||o)&&(Ee(t,{code:a?le.too_big:le.too_small,minimum:o?n.exactLength.value:void 0,maximum:a?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),i.dirty())}if(n.minLength!==null&&t.data.length<n.minLength.value&&(Ee(t,{code:le.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),i.dirty()),n.maxLength!==null&&t.data.length>n.maxLength.value&&(Ee(t,{code:le.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),i.dirty()),t.common.async)return Promise.all([...t.data].map((a,o)=>n.type._parseAsync(new Un(t,a,t.path,o)))).then(a=>Yr.mergeArray(i,a));let s=[...t.data].map((a,o)=>n.type._parseSync(new Un(t,a,t.path,o)));return Yr.mergeArray(i,s)}get element(){return this._def.type}min(e,t){return new r({...this._def,minLength:{value:e,message:Te.toString(t)}})}max(e,t){return new r({...this._def,maxLength:{value:e,message:Te.toString(t)}})}length(e,t){return new r({...this._def,exactLength:{value:e,message:Te.toString(t)}})}nonempty(e){return this.min(1,e)}};Wa.create=(r,e)=>new Wa({type:r,minLength:null,maxLength:null,exactLength:null,typeName:Ge.ZodArray,...et(e)});function Cf(r){if(r instanceof Vi){let e={};for(let t in r.shape){let i=r.shape[t];e[t]=Tn.create(Cf(i))}return new Vi({...r._def,shape:()=>e})}else return r instanceof Wa?new Wa({...r._def,type:Cf(r.element)}):r instanceof Tn?Tn.create(Cf(r.unwrap())):r instanceof js?js.create(Cf(r.unwrap())):r instanceof Js?Js.create(r.items.map(e=>Cf(e))):r}var Vi=class r extends rt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=ot.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==ke.object){let l=this._getOrReturnCtx(e);return Ee(l,{code:le.invalid_type,expected:ke.object,received:l.parsedType}),Ke}let{status:i,ctx:n}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof ss&&this._def.unknownKeys==="strip"))for(let l in n.data)a.includes(l)||o.push(l);let c=[];for(let l of a){let d=s[l],u=n.data[l];c.push({key:{status:"valid",value:l},value:d._parse(new Un(n,u,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof ss){let l=this._def.unknownKeys;if(l==="passthrough")for(let d of o)c.push({key:{status:"valid",value:d},value:{status:"valid",value:n.data[d]}});else if(l==="strict")o.length>0&&(Ee(n,{code:le.unrecognized_keys,keys:o}),i.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let d of o){let u=n.data[d];c.push({key:{status:"valid",value:d},value:l._parse(new Un(n,u,n.path,d)),alwaysSet:d in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let l=[];for(let d of c){let u=await d.key,f=await d.value;l.push({key:u,value:f,alwaysSet:d.alwaysSet})}return l}).then(l=>Yr.mergeObjectSync(i,l)):Yr.mergeObjectSync(i,c)}get shape(){return this._def.shape()}strict(e){return Te.errToObj,new r({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,i)=>{let n=this._def.errorMap?.(t,i).message??i.defaultError;return t.code==="unrecognized_keys"?{message:Te.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new r({...this._def,unknownKeys:"strip"})}passthrough(){return new r({...this._def,unknownKeys:"passthrough"})}extend(e){return new r({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new r({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ge.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new r({...this._def,catchall:e})}pick(e){let t={};for(let i of ot.objectKeys(e))e[i]&&this.shape[i]&&(t[i]=this.shape[i]);return new r({...this._def,shape:()=>t})}omit(e){let t={};for(let i of ot.objectKeys(this.shape))e[i]||(t[i]=this.shape[i]);return new r({...this._def,shape:()=>t})}deepPartial(){return Cf(this)}partial(e){let t={};for(let i of ot.objectKeys(this.shape)){let n=this.shape[i];e&&!e[i]?t[i]=n:t[i]=n.optional()}return new r({...this._def,shape:()=>t})}required(e){let t={};for(let i of ot.objectKeys(this.shape))if(e&&!e[i])t[i]=this.shape[i];else{let s=this.shape[i];for(;s instanceof Tn;)s=s._def.innerType;t[i]=s}return new r({...this._def,shape:()=>t})}keyof(){return jL(ot.objectKeys(this.shape))}};Vi.create=(r,e)=>new Vi({shape:()=>r,unknownKeys:"strip",catchall:ss.create(),typeName:Ge.ZodObject,...et(e)});Vi.strictCreate=(r,e)=>new Vi({shape:()=>r,unknownKeys:"strict",catchall:ss.create(),typeName:Ge.ZodObject,...et(e)});Vi.lazycreate=(r,e)=>new Vi({shape:r,unknownKeys:"strip",catchall:ss.create(),typeName:Ge.ZodObject,...et(e)});var rd=class extends rt{_parse(e){let{ctx:t}=this._processInputParams(e),i=this._def.options;function n(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let a=s.map(o=>new $i(o.ctx.common.issues));return Ee(t,{code:le.invalid_union,unionErrors:a}),Ke}if(t.common.async)return Promise.all(i.map(async s=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await s._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(n);{let s,a=[];for(let c of i){let l={...t,common:{...t.common,issues:[]},parent:null},d=c._parseSync({data:t.data,path:t.path,parent:l});if(d.status==="valid")return d;d.status==="dirty"&&!s&&(s={result:d,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(s)return t.common.issues.push(...s.ctx.common.issues),s.result;let o=a.map(c=>new $i(c));return Ee(t,{code:le.invalid_union,unionErrors:o}),Ke}}get options(){return this._def.options}};rd.create=(r,e)=>new rd({options:r,typeName:Ge.ZodUnion,...et(e)});var Va=r=>r instanceof nd?Va(r.schema):r instanceof Rn?Va(r.innerType()):r instanceof sd?[r.value]:r instanceof ad?r.options:r instanceof od?ot.objectValues(r.enum):r instanceof cd?Va(r._def.innerType):r instanceof ed?[void 0]:r instanceof td?[null]:r instanceof Tn?[void 0,...Va(r.unwrap())]:r instanceof js?[null,...Va(r.unwrap())]:r instanceof C0||r instanceof dd?Va(r.unwrap()):r instanceof ld?Va(r._def.innerType):[],kC=class r extends rt{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==ke.object)return Ee(t,{code:le.invalid_type,expected:ke.object,received:t.parsedType}),Ke;let i=this.discriminator,n=t.data[i],s=this.optionsMap.get(n);return s?t.common.async?s._parseAsync({data:t.data,path:t.path,parent:t}):s._parseSync({data:t.data,path:t.path,parent:t}):(Ee(t,{code:le.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[i]}),Ke)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,i){let n=new Map;for(let s of t){let a=Va(s.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of a){if(n.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);n.set(o,s)}}return new r({typeName:Ge.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...et(i)})}};function cS(r,e){let t=zs(r),i=zs(e);if(r===e)return{valid:!0,data:r};if(t===ke.object&&i===ke.object){let n=ot.objectKeys(e),s=ot.objectKeys(r).filter(o=>n.indexOf(o)!==-1),a={...r,...e};for(let o of s){let c=cS(r[o],e[o]);if(!c.valid)return{valid:!1};a[o]=c.data}return{valid:!0,data:a}}else if(t===ke.array&&i===ke.array){if(r.length!==e.length)return{valid:!1};let n=[];for(let s=0;s<r.length;s++){let a=r[s],o=e[s],c=cS(a,o);if(!c.valid)return{valid:!1};n.push(c.data)}return{valid:!0,data:n}}else return t===ke.date&&i===ke.date&&+r==+e?{valid:!0,data:r}:{valid:!1}}var id=class extends rt{_parse(e){let{status:t,ctx:i}=this._processInputParams(e),n=(s,a)=>{if(bC(s)||bC(a))return Ke;let o=cS(s.value,a.value);return o.valid?((vC(s)||vC(a))&&t.dirty(),{status:t.value,value:o.data}):(Ee(i,{code:le.invalid_intersection_types}),Ke)};return i.common.async?Promise.all([this._def.left._parseAsync({data:i.data,path:i.path,parent:i}),this._def.right._parseAsync({data:i.data,path:i.path,parent:i})]).then(([s,a])=>n(s,a)):n(this._def.left._parseSync({data:i.data,path:i.path,parent:i}),this._def.right._parseSync({data:i.data,path:i.path,parent:i}))}};id.create=(r,e,t)=>new id({left:r,right:e,typeName:Ge.ZodIntersection,...et(t)});var Js=class r extends rt{_parse(e){let{status:t,ctx:i}=this._processInputParams(e);if(i.parsedType!==ke.array)return Ee(i,{code:le.invalid_type,expected:ke.array,received:i.parsedType}),Ke;if(i.data.length<this._def.items.length)return Ee(i,{code:le.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ke;!this._def.rest&&i.data.length>this._def.items.length&&(Ee(i,{code:le.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let s=[...i.data].map((a,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new Un(i,a,i.path,o)):null}).filter(a=>!!a);return i.common.async?Promise.all(s).then(a=>Yr.mergeArray(t,a)):Yr.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new r({...this._def,rest:e})}};Js.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Js({items:r,typeName:Ge.ZodTuple,rest:null,...et(e)})};var SC=class r extends rt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:i}=this._processInputParams(e);if(i.parsedType!==ke.object)return Ee(i,{code:le.invalid_type,expected:ke.object,received:i.parsedType}),Ke;let n=[],s=this._def.keyType,a=this._def.valueType;for(let o in i.data)n.push({key:s._parse(new Un(i,o,i.path,o)),value:a._parse(new Un(i,i.data[o],i.path,o)),alwaysSet:o in i.data});return i.common.async?Yr.mergeObjectAsync(t,n):Yr.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,i){return t instanceof rt?new r({keyType:e,valueType:t,typeName:Ge.ZodRecord,...et(i)}):new r({keyType:Dc.create(),valueType:e,typeName:Ge.ZodRecord,...et(t)})}},bf=class extends rt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:i}=this._processInputParams(e);if(i.parsedType!==ke.map)return Ee(i,{code:le.invalid_type,expected:ke.map,received:i.parsedType}),Ke;let n=this._def.keyType,s=this._def.valueType,a=[...i.data.entries()].map(([o,c],l)=>({key:n._parse(new Un(i,o,i.path,[l,"key"])),value:s._parse(new Un(i,c,i.path,[l,"value"]))}));if(i.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of a){let l=await c.key,d=await c.value;if(l.status==="aborted"||d.status==="aborted")return Ke;(l.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(l.value,d.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let c of a){let l=c.key,d=c.value;if(l.status==="aborted"||d.status==="aborted")return Ke;(l.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(l.value,d.value)}return{status:t.value,value:o}}}};bf.create=(r,e,t)=>new bf({valueType:e,keyType:r,typeName:Ge.ZodMap,...et(t)});var vf=class r extends rt{_parse(e){let{status:t,ctx:i}=this._processInputParams(e);if(i.parsedType!==ke.set)return Ee(i,{code:le.invalid_type,expected:ke.set,received:i.parsedType}),Ke;let n=this._def;n.minSize!==null&&i.data.size<n.minSize.value&&(Ee(i,{code:le.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),n.maxSize!==null&&i.data.size>n.maxSize.value&&(Ee(i,{code:le.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let s=this._def.valueType;function a(c){let l=new Set;for(let d of c){if(d.status==="aborted")return Ke;d.status==="dirty"&&t.dirty(),l.add(d.value)}return{status:t.value,value:l}}let o=[...i.data.values()].map((c,l)=>s._parse(new Un(i,c,i.path,l)));return i.common.async?Promise.all(o).then(c=>a(c)):a(o)}min(e,t){return new r({...this._def,minSize:{value:e,message:Te.toString(t)}})}max(e,t){return new r({...this._def,maxSize:{value:e,message:Te.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};vf.create=(r,e)=>new vf({valueType:r,minSize:null,maxSize:null,typeName:Ge.ZodSet,...et(e)});var DC=class r extends rt{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==ke.function)return Ee(t,{code:le.invalid_type,expected:ke.function,received:t.parsedType}),Ke;function i(o,c){return x0({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,wf(),$a].filter(l=>!!l),issueData:{code:le.invalid_arguments,argumentsError:c}})}function n(o,c){return x0({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,wf(),$a].filter(l=>!!l),issueData:{code:le.invalid_return_type,returnTypeError:c}})}let s={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Qc){let o=this;return hi(async function(...c){let l=new $i([]),d=await o._def.args.parseAsync(c,s).catch(A=>{throw l.addIssue(i(c,A)),l}),u=await Reflect.apply(a,this,d);return await o._def.returns._def.type.parseAsync(u,s).catch(A=>{throw l.addIssue(n(u,A)),l})})}else{let o=this;return hi(function(...c){let l=o._def.args.safeParse(c,s);if(!l.success)throw new $i([i(c,l.error)]);let d=Reflect.apply(a,this,l.data),u=o._def.returns.safeParse(d,s);if(!u.success)throw new $i([n(d,u.error)]);return u.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new r({...this._def,args:Js.create(e).rest(Ya.create())})}returns(e){return new r({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,i){return new r({args:e||Js.create([]).rest(Ya.create()),returns:t||Ya.create(),typeName:Ge.ZodFunction,...et(i)})}},nd=class extends rt{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};nd.create=(r,e)=>new nd({getter:r,typeName:Ge.ZodLazy,...et(e)});var sd=class extends rt{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return Ee(t,{received:t.data,code:le.invalid_literal,expected:this._def.value}),Ke}return{status:"valid",value:e.data}}get value(){return this._def.value}};sd.create=(r,e)=>new sd({value:r,typeName:Ge.ZodLiteral,...et(e)});function jL(r,e){return new ad({values:r,typeName:Ge.ZodEnum,...et(e)})}var ad=class r extends rt{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),i=this._def.values;return Ee(t,{expected:ot.joinValues(i),received:t.parsedType,code:le.invalid_type}),Ke}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),i=this._def.values;return Ee(t,{received:t.data,code:le.invalid_enum_value,options:i}),Ke}return hi(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return r.create(e,{...this._def,...t})}exclude(e,t=this._def){return r.create(this.options.filter(i=>!e.includes(i)),{...this._def,...t})}};ad.create=jL;var od=class extends rt{_parse(e){let t=ot.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(e);if(i.parsedType!==ke.string&&i.parsedType!==ke.number){let n=ot.objectValues(t);return Ee(i,{expected:ot.joinValues(n),received:i.parsedType,code:le.invalid_type}),Ke}if(this._cache||(this._cache=new Set(ot.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=ot.objectValues(t);return Ee(i,{received:i.data,code:le.invalid_enum_value,options:n}),Ke}return hi(e.data)}get enum(){return this._def.values}};od.create=(r,e)=>new od({values:r,typeName:Ge.ZodNativeEnum,...et(e)});var Qc=class extends rt{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==ke.promise&&t.common.async===!1)return Ee(t,{code:le.invalid_type,expected:ke.promise,received:t.parsedType}),Ke;let i=t.parsedType===ke.promise?t.data:Promise.resolve(t.data);return hi(i.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Qc.create=(r,e)=>new Qc({type:r,typeName:Ge.ZodPromise,...et(e)});var Rn=class extends rt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ge.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:i}=this._processInputParams(e),n=this._def.effect||null,s={addIssue:a=>{Ee(i,a),a.fatal?t.abort():t.dirty()},get path(){return i.path}};if(s.addIssue=s.addIssue.bind(s),n.type==="preprocess"){let a=n.transform(i.data,s);if(i.common.async)return Promise.resolve(a).then(async o=>{if(t.value==="aborted")return Ke;let c=await this._def.schema._parseAsync({data:o,path:i.path,parent:i});return c.status==="aborted"?Ke:c.status==="dirty"?Vl(c.value):t.value==="dirty"?Vl(c.value):c});{if(t.value==="aborted")return Ke;let o=this._def.schema._parseSync({data:a,path:i.path,parent:i});return o.status==="aborted"?Ke:o.status==="dirty"?Vl(o.value):t.value==="dirty"?Vl(o.value):o}}if(n.type==="refinement"){let a=o=>{let c=n.refinement(o,s);if(i.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(i.common.async===!1){let o=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});return o.status==="aborted"?Ke:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(o=>o.status==="aborted"?Ke:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(n.type==="transform")if(i.common.async===!1){let a=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});if(!Sc(a))return Ke;let o=n.transform(a.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(a=>Sc(a)?Promise.resolve(n.transform(a.value,s)).then(o=>({status:t.value,value:o})):Ke);ot.assertNever(n)}};Rn.create=(r,e,t)=>new Rn({schema:r,typeName:Ge.ZodEffects,effect:e,...et(t)});Rn.createWithPreprocess=(r,e,t)=>new Rn({schema:e,effect:{type:"preprocess",transform:r},typeName:Ge.ZodEffects,...et(t)});var Tn=class extends rt{_parse(e){return this._getType(e)===ke.undefined?hi(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Tn.create=(r,e)=>new Tn({innerType:r,typeName:Ge.ZodOptional,...et(e)});var js=class extends rt{_parse(e){return this._getType(e)===ke.null?hi(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};js.create=(r,e)=>new js({innerType:r,typeName:Ge.ZodNullable,...et(e)});var cd=class extends rt{_parse(e){let{ctx:t}=this._processInputParams(e),i=t.data;return t.parsedType===ke.undefined&&(i=this._def.defaultValue()),this._def.innerType._parse({data:i,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};cd.create=(r,e)=>new cd({innerType:r,typeName:Ge.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...et(e)});var ld=class extends rt{_parse(e){let{ctx:t}=this._processInputParams(e),i={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:i.data,path:i.path,parent:{...i}});return xf(n)?n.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new $i(i.common.issues)},input:i.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new $i(i.common.issues)},input:i.data})}}removeCatch(){return this._def.innerType}};ld.create=(r,e)=>new ld({innerType:r,typeName:Ge.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...et(e)});var kf=class extends rt{_parse(e){if(this._getType(e)!==ke.nan){let i=this._getOrReturnCtx(e);return Ee(i,{code:le.invalid_type,expected:ke.nan,received:i.parsedType}),Ke}return{status:"valid",value:e.data}}};kf.create=r=>new kf({typeName:Ge.ZodNaN,...et(r)});var Hde=Symbol("zod_brand"),C0=class extends rt{_parse(e){let{ctx:t}=this._processInputParams(e),i=t.data;return this._def.type._parse({data:i,path:t.path,parent:t})}unwrap(){return this._def.type}},E0=class r extends rt{_parse(e){let{status:t,ctx:i}=this._processInputParams(e);if(i.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:i.data,path:i.path,parent:i});return s.status==="aborted"?Ke:s.status==="dirty"?(t.dirty(),Vl(s.value)):this._def.out._parseAsync({data:s.value,path:i.path,parent:i})})();{let n=this._def.in._parseSync({data:i.data,path:i.path,parent:i});return n.status==="aborted"?Ke:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:i.path,parent:i})}}static create(e,t){return new r({in:e,out:t,typeName:Ge.ZodPipeline})}},dd=class extends rt{_parse(e){let t=this._def.innerType._parse(e),i=n=>(Sc(n)&&(n.value=Object.freeze(n.value)),n);return xf(t)?t.then(n=>i(n)):i(t)}unwrap(){return this._def.innerType}};dd.create=(r,e)=>new dd({innerType:r,typeName:Ge.ZodReadonly,...et(e)});function KL(r,e){let t=typeof r=="function"?r(e):typeof r=="string"?{message:r}:r;return typeof t=="string"?{message:t}:t}function $L(r,e={},t){return r?_c.create().superRefine((i,n)=>{let s=r(i);if(s instanceof Promise)return s.then(a=>{if(!a){let o=KL(e,i),c=o.fatal??t??!0;n.addIssue({code:"custom",...o,fatal:c})}});if(!s){let a=KL(e,i),o=a.fatal??t??!0;n.addIssue({code:"custom",...a,fatal:o})}}):_c.create()}var Kde={object:Vi.lazycreate},Ge;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly"})(Ge||(Ge={}));var Gde=(r,e={message:`Input not instance of ${r.name}`})=>$L(t=>t instanceof r,e),VL=Dc.create,YL=Yl.create,zde=kf.create,Jde=Wl.create,WL=Xl.create,jde=Zl.create,$de=Ef.create,Vde=ed.create,Yde=td.create,Wde=_c.create,Xde=Ya.create,Zde=ss.create,eue=Bf.create,tue=Wa.create,rue=Vi.create,iue=Vi.strictCreate,nue=rd.create,sue=kC.create,aue=id.create,oue=Js.create,cue=SC.create,lue=bf.create,due=vf.create,uue=DC.create,fue=nd.create,hue=sd.create,Aue=ad.create,gue=od.create,pue=Qc.create,mue=Rn.create,yue=Tn.create,Iue=js.create,wue=Rn.createWithPreprocess,xue=E0.create,Cue=()=>VL().optional(),Eue=()=>YL().optional(),Bue=()=>WL().optional(),bue={string:(r=>Dc.create({...r,coerce:!0})),number:(r=>Yl.create({...r,coerce:!0})),boolean:(r=>Xl.create({...r,coerce:!0})),bigint:(r=>Wl.create({...r,coerce:!0})),date:(r=>Zl.create({...r,coerce:!0}))};var vue=Ke;var kue="v1",_C=65535,Sue=12,XL=/[\u0000-\u001f\u007f]/,Due=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,_ue=new Set(["__proto__","prototype","constructor"]),Que=vi.string().min(1).max(128).regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),Fue=vi.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/),Pue=vi.object({apiVersion:vi.literal(kue),id:Que,version:vi.string().trim().min(1).max(64).refine(r=>!XL.test(r)),displayName:vi.string().trim().min(1).max(128).refine(r=>!XL.test(r)),description:vi.string().max(2048).default("").refine(r=>!Due.test(r)),capabilities:vi.array(Fue).max(32).default([]).refine(r=>new Set(r).size===r.length),settingsSchema:vi.record(vi.unknown()).default({}),entry:vi.record(vi.unknown()).optional()}).strict(),pt=class extends Error{code="INVALID_PLUGIN_MANIFEST";constructor(e){super(e),this.name="PluginManifestError"}};function Tue(r,e){let t=new WeakSet,i=0,n=(a,o)=>{if(i++,i>2048)throw new pt(`${e} contains too many values`);if(o>Sue)throw new pt(`${e} exceeds the maximum nesting depth`);if(!(a===null||typeof a=="boolean")){if(typeof a=="number"){if(!Number.isFinite(a))throw new pt(`${e} contains a non-finite number`);return}if(typeof a=="string"){if(a.length>8192)throw new pt(`${e} contains an oversized string`);return}if(typeof a!="object")throw new pt(`${e} contains a non-JSON value`);if(t.has(a))throw new pt(`${e} contains a circular reference`);if(t.add(a),Array.isArray(a)){if(a.length>256)throw new pt(`${e} contains an oversized array`);for(let c of a)n(c,o+1)}else{let c=Object.getPrototypeOf(a);if(c!==Object.prototype&&c!==null)throw new pt(`${e} must contain plain JSON objects`);let l=Object.keys(a);if(l.length>256)throw new pt(`${e} contains too many properties`);for(let d of l){if(_ue.has(d))throw new pt(`${e} contains a forbidden property`);n(a[d],o+1)}}t.delete(a)}};n(r,0);let s;try{s=new TextEncoder().encode(JSON.stringify(r)).byteLength}catch{throw new pt(`${e} must be JSON serializable`)}if(s>_C)throw new pt(`${e} exceeds the maximum encoded size`)}function B0(r){let e=Pue.safeParse(r);if(!e.success)throw new pt(e.error.issues.map(t=>`${t.path.join(".")||"manifest"}: ${t.message}`).join("; "));return Tue(e.data,"manifest"),e.data}function QC(r,e){let t=B0(e);if(r.id!==t.id)throw new pt("manifest.id must match the plugin id");return{...r,id:t.id,name:t.displayName,version:t.version,description:t.description,manifest:t}}var Uue=["id","name","version","description","author","homepage","repository","icon","type","enabled","high_privilege","permissions","is_builtin","tags","created_at","updated_at"];function Rue(r){let e={};for(let t of Uue)r[t]!==void 0&&(e[t]=r[t]);return e}function ZL(r){let e=Rue(r);if(r.manifest===void 0||r.manifest===null)return e;let t;try{t=B0(r.manifest)}catch{return e}return{...e,manifest:{apiVersion:t.apiVersion,id:t.id,version:t.version,displayName:t.displayName,description:t.description,capabilities:t.capabilities}}}$A();gc();dh();Fr();nt();$l();I0();Ka();zi();Wk();var as=new at;as.get("/list",async r=>{let t=((await ne(r.env)).users||[]).map(i=>({id:i.id,username:i.username,role:i.role,permission:i.permission??0,base_path:i.base_path||"/",disabled:!!i.disabled,sso_id:i.sso_id||"",allow_ldap:!!i.allow_ldap,pwd_update_at:i.pwd_update_at||"",otp:!!i.otp_secret}));return r.json({code:200,message:"success",data:{content:t,total:t.length}})});as.get("/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10),n=((await ne(r.env)).users||[]).find(s=>s.id===t);return n?r.json({code:200,message:"success",data:{id:n.id,username:n.username,password:"",role:n.role,permission:n.permission??0,base_path:n.base_path||"/",disabled:!!n.disabled,sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp:!!n.otp_secret}}):r.json({code:404,message:"User not found",data:null},404)});as.post("/create",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.username)return r.json({code:400,message:"Username is required",data:null},400);let t=await ne(r.env);if(t.users||(t.users=[]),t.users.some(l=>l.username===e.username))return r.json({code:400,message:"Username already exists",data:null},400);let s=t.users.reduce((l,d)=>Math.max(l,d.id||0),0)+1,a=e.password||"",o=null;a||(o=yf(),a=o);let c={id:s,username:e.username,role:e.role!==void 0?parseInt(e.role,10):0,permission:e.permission!==void 0?parseInt(e.permission,10):0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,pwd_update_at:new Date().toISOString()};return await ji(c,a),t.users.push(c),await he(t,r.env),r.json({code:200,message:o?"success (a random password was generated \u2014 pass one explicitly to choose your own)":"success",data:o?{password:o}:null})});as.post("/update",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.id)return r.json({code:400,message:"User ID is required",data:null},400);let t=parseInt(e.id,10),i=await ne(r.env);i.users||(i.users=[]);let n=i.users.findIndex(a=>a.id===t);if(n===-1)return r.json({code:404,message:"User not found",data:null},404);let s=i.users[n];if(e.username&&e.username!==s.username){if(i.users.some(o=>o.id!==t&&o.username===e.username))return r.json({code:400,message:"Username already in use",data:null},400);s.username=e.username}return e.password&&e.password.trim()!==""&&await ji(s,e.password.trim()),e.role!==void 0&&(s.role=parseInt(e.role,10)),e.permission!==void 0&&(s.permission=parseInt(e.permission,10)),e.base_path!==void 0&&(s.base_path=e.base_path),e.disabled!==void 0&&(s.disabled=!!e.disabled),e.sso_id!==void 0&&(s.sso_id=e.sso_id),e.allow_ldap!==void 0&&(s.allow_ldap=!!e.allow_ldap),i.users[n]=s,await he(i,r.env),r.json({code:200,message:"success",data:null})});var eH=async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10);if(t===1)return r.json({code:400,message:"Cannot delete primary admin user",data:null},400);let i=await ne(r.env);return i.users||(i.users=[]),i.users=i.users.filter(n=>n.id!==t),await he(i,r.env),r.json({code:200,message:"success",data:null})};as.post("/delete",eH);as.post("/cancel",eH);as.get("/sshkey/list",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=await Af(e,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});as.post("/sshkey/delete",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=r.req.query("id");if(!e||!t)return r.json({code:400,message:"Missing uid or id parameter",data:null},400);if(!await IC(e,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await Af(e,r.env);return r.json({code:200,message:"success",data:n})});as.post("/cancel_2fa",async r=>{let e=parseInt(r.req.query("id")||"0",10);if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=await ne(r.env),i=(t.users||[]).find(n=>n.id===e);return i?(delete i.otp_secret,await he(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:404,message:"User not found",data:null},404)});var tH=async r=>{let e=r.req.header("Authorization");if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await qr(r),n=await La(t,i,"HS256"),s=await r.req.json().catch(()=>({})),a=s.old_password||"",o=s.new_password||"";if(!o)return r.json({code:400,message:"New password is required",data:null},400);let c=await ne(r.env);c.users||(c.users=[]);let l=c.users.findIndex(u=>u.id===n.id||u.username===n.username);if(l===-1)return r.json({code:404,message:"User not found",data:null},404);let d=c.users[l];return!d.password||!await mf(d,a)?r.json({code:400,message:"Incorrect old password",data:null},400):(await ji(d,o),c.users[l]=d,await he(c,r.env),r.json({code:200,message:"success",data:null}))}catch(i){return r.json({code:401,message:`Unauthorized: ${i.message||"Invalid token"}`,data:null},401)}};var qe=new at;qe.use("*",async(r,e)=>{if(!await Vu(r))return r.json({code:401,message:"Unauthorized",data:null});await e()});function Nue(r=32){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t=new Uint8Array(r);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(t);else for(let n=0;n<r;n++)t[n]=(Math.random()*256|0)^Date.now()&255;let i="";for(let n=0;n<r;n++)i+=e.charAt(t[n]%e.length);return i}qe.get("/storage/list",async r=>{let t=[...(await ne(r.env)).storages||[]].sort((i,n)=>{let s=Number(i.order)||0,a=Number(n.order)||0;return s!==a?s-a:(Number(i.id)||0)-(Number(n.id)||0)});return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qe.post("/storage/load_all",async r=>{let e=await ne(r.env),t=[],i=0,n=0;for(let s of e.storages||[])if(!s.disabled)try{await It(s.driver,s),i++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(a){n++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:a?.message||String(a)})}return r.json({code:200,message:"success",data:{loaded:i,failed:n,results:t}})});qe.get("/storage/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=(await ne(r.env)).storages.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"storage not found",data:null})});var iH=r=>{let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(!e)return"";let i=Object.keys(Sf).find(n=>n.toLowerCase()===e||n.toLowerCase().replace(/[^a-z0-9]/g,"")===e);return i||(e.startsWith("115")?"115Open":e.startsWith("123")?"123Pan":e.includes("aliyun")?"AliyundriveOpen":e.startsWith("baidu")?"BaiduNetdisk":e.startsWith("189")||e.includes("cloud189")||e.includes("ctyun")?"Cloud189":e==="onedriveapp"?"OnedriveAPP":e.startsWith("onedrive")?"Onedrive":e.startsWith("google")||e.includes("gdrive")?"GoogleDrive":(e.includes("thunder")||e.includes("xunlei"))&&e.includes("expert")?"ThunderExpert":e.includes("thunder")||e.includes("xunlei")?"Thunder":e==="webdav"||e==="webdavdriver"?"WebDav":e==="wopan"||e.includes("unicom")||e.includes("woyun")?"WoPan":e==="quark"||e==="quarkuc"||e==="uc"?"Quark":["s3","doge","dogecloud","minio","ceph","aws","r2","b2","cos","oss","kodo"].includes(e)?"S3":e.startsWith("github")?"Github":e==="local"?"Local":e.includes("pikpak")?"PikPak":e.includes("seafile")?"Seafile":e.includes("yandex")?"YandexDisk":e.includes("terabox")||e.includes("dubox")?"Terabox":e.includes("mediatrack")||e.includes("fenmiao")?"MediaTrack":e.includes("alias")?"Alias":r||"")},nH=(r,e)=>{let t="";if(typeof e=="object"&&e!==null)try{t=JSON.stringify(e)}catch{t="{}"}else t=String(e||"{}");let i=(r||"").toLowerCase();if(i.includes("thunder")||i.includes("xunlei"))try{let n=JSON.parse(t||"{}");if(!n.device_id||typeof n.device_id!="string"||n.device_id.trim().length!==32){let s=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Math.random().toString(16).substring(2).padEnd(16,"0")+Math.random().toString(16).substring(2).padEnd(16,"0");return n.device_id=s.slice(0,32),JSON.stringify(n)}}catch{}return t};qe.post("/storage/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.driver||typeof e.driver!="string"||e.driver.trim()===""||e.driver==="undefined"||e.driver==="null")return r.json({code:400,message:"Storage driver is required",data:null},400);let i=e.mount_path;if(!i||String(i).trim()===""){let c=Sf[e.driver]?.default_mount_path;c&&(i=c)}let n="/"+String(i||"").split("/").filter(Boolean).join("/");if(t.storages.some(c=>!c.disabled&&"/"+(c.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=iH(e.driver),a=nH(s,e.addition||"{}"),o={...e,driver:s,addition:a,mount_path:n,id:t.storages.length?Math.max(...t.storages.map(c=>c.id))+1:1,status:"work",modified:new Date().toISOString()};t.storages.push(o);try{await he(t,r.env)}catch(c){return t.storages.pop(),r.json({code:500,message:`Failed to save storage config: ${c.message||String(c)}`,data:null})}if(!o.disabled){try{await It(o.driver,o),o.status="work"}catch(c){o.status=c.message||String(c),String(c.message||c).includes("unsupported driver")&&(o.disabled=!0);try{await he(t,r.env)}catch(l){console.error("[admin/storage/create] Failed to update storage status:",l)}return r.json({code:500,message:c.message||String(c),data:o})}try{await he(t,r.env)}catch(c){console.error("[admin/storage/create] Failed to update storage status after connection:",c)}}return r.json({code:200,message:"success",data:o})});qe.post("/storage/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env),i=e.mount_path;if(!i||String(i).trim()===""){let a=Sf[e.driver]?.default_mount_path;a&&(i=a)}let n=String(i||"").trim()!==""?"/"+String(i||"").split("/").filter(Boolean).join("/"):void 0;if(n&&t.storages.some(a=>a.id!==e.id&&!a.disabled&&"/"+(a.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=t.storages.findIndex(a=>a.id===e.id);if(s!==-1){let a=e.driver||t.storages[s].driver,o=iH(a),c=nH(o,e.addition!==void 0?e.addition:t.storages[s].addition||"{}"),l={...t.storages[s],...e,driver:o,addition:c,mount_path:n||t.storages[s].mount_path,modified:new Date().toISOString()};if(!l.disabled)try{await It(l.driver,l,{deferTokenPersistence:!0}),l.status="work"}catch(d){return l.status=d.message||String(d),String(d.message||d).includes("unsupported driver")&&(l.disabled=!0),t.storages[s]=l,await he(t,r.env),r.json({code:500,message:d.message||String(d),data:{id:l.id}})}t.storages[s]=l,await he(t,r.env)}return r.json({code:200,message:"success",data:null})});qe.post("/storage/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.storages=t.storages.filter(i=>i.id!==e),await he(t,r.env),r.json({code:200,message:"success",data:null})});qe.post("/storage/enable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!1,i.modified=new Date().toISOString(),await he(t,r.env),(async()=>{try{await It(i.driver,i);let n=await ne(r.env),s=n.storages.find(a=>a.id===e);s&&!s.disabled&&(s.status="work",s.modified=new Date().toISOString(),await he(n,r.env))}catch(n){let s=await ne(r.env),a=s.storages.find(o=>o.id===e);a&&!a.disabled&&(a.status=n.message||String(n),await he(s,r.env))}})()),r.json({code:200,message:"success",data:null})});qe.post("/storage/disable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!0,await he(t,r.env)),r.json({code:200,message:"success",data:null})});qe.get("/driver/names",r=>r.json({code:200,message:"success",data:["AliyundriveOpen","GoogleDrive","Onedrive","OnedriveAPP","Quark","123Pan","BaiduNetdisk","115Open","GitHub API","Thunder","ThunderExpert","189Cloud","WoPan","Lanzou","WebDav","S3","Doge","PikPak","Seafile","YandexDisk","Terabox","MediaTrack","Alias","Dropbox","WPS","139Yun","Mega_nz","115Share","123PanShare","AliyundriveShare","OnedriveSharelink","PikPakShare","SMB","Crypt","Virtual","AListV3","UrlTree","Strm","AzureBlob","USS","Alidoc","Emby","BunnyStorage","CloudflareImgbed","GuangYaPan","AutoIndex","ProtonDrive"]}));var Ht=[{name:"mount_path",type:"string",default:"",required:!0},{name:"order",type:"number",default:"0",required:!1},{name:"remark",type:"string",default:"",required:!1},{name:"cache_expiration",type:"number",default:"30",required:!1,help:"\u76EE\u5F55\u5185\u5BB9\u7F13\u5B58\u65F6\u957F\uFF08\u5206\u949F\uFF09"}],Kt={name:"custom_cache_policies",type:"text",default:"",required:!1,help:'\u6309\u8DEF\u5F84\u8986\u76D6\u7F13\u5B58\u65F6\u957F\uFF0CJSON \u683C\u5F0F\uFF0C\u5982 [{"path":"/photos/*","cache_expiration":1440}]'},Gt={name:"enable_sign",type:"bool",default:"false",required:!0,help:"Enable signature validation for this storage"},zt={name:"disable_index",type:"bool",default:"false",required:!1,help:"Disable directory listing for this storage"};function Oue(){return{name:"proxy_range",type:"bool",default:"true",required:!1,help:"Need to enable proxy"}}var rH={name:"web_proxy",type:"bool",default:"false",required:!1},lS={name:"webdav_policy",type:"select",options:"302_redirect,use_proxy_url,native_proxy",default:"302_redirect",required:!1};function Jt(r=""){let e=Wc(r),t=OQ.has(e)?[Oue()]:[];if(MQ(e))return[...t,{...lS,options:"use_proxy_url,native_proxy",default:"native_proxy"}];let i=cB(e);return[...t,i?{...rH,default:"true"}:{...rH},i?{...lS,default:"native_proxy"}:{...lS}]}var dr={name:"seed_policy",type:"select",options:"inherit,on,off",default:"inherit",required:!0,help:"Override automatic transfer-seed generation for this storage"},ud={name:"down_proxy_url",type:"string",default:"",required:!1,help:"\u81EA\u5B9A\u4E49\u4E0B\u8F7D\u4EE3\u7406\u5730\u5740\uFF08\u652F\u6301 $path \u5360\u4F4D\u7B26\uFF1B\u7559\u7A7A\u5219\u7528\u672C\u670D\u52A1\u4EE3\u7406\uFF09"},jt={name:"disable_proxy_sign",type:"bool",default:"false",required:!1,help:"Disable sign for Download proxy URL"},kt=[...Ht,Kt,Gt,zt,...Jt(),ud,jt,dr],Sf={AliyundriveOpen:{name:"AliyundriveOpen",default_mount_path:"/aliyundrive",common:kt,additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"drive_type",type:"select",options:"resource,backup,default",default:"resource",required:!0},{name:"drive_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!0},{name:"order_by",type:"select",options:"updated_at,name,size,created_at",default:"updated_at",required:!1},{name:"order_direction",type:"select",options:"DESC,ASC",default:"DESC",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/alicloud/renewapi",required:!1,help:"true"},{name:"alipan_type",type:"select",options:"alipanQR,alipanTV",default:"alipanQR",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"remove_way",type:"select",options:"trash,delete",default:"trash",required:!1}],config:{name:"AliyundriveOpen",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Onedrive:{name:"Onedrive",default_mount_path:"/onedrive",common:[...Ht,Kt,Gt,zt,...Jt("Onedrive"),ud,jt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"is_sharepoint",type:"bool",default:"false",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/onedrive/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"redirect_uri",type:"string",default:"https://api.oplist.org/onedrive/callback",required:!0},{name:"refresh_token",type:"string",default:"",required:!0},{name:"site_id",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Onedrive",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},OnedriveAPP:{name:"OnedriveAPP",default_mount_path:"/onedrive_app",common:[...Ht,Kt,Gt,zt,...Jt("OnedriveAPP"),ud,jt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"client_id",type:"string",default:"",required:!0},{name:"client_secret",type:"string",default:"",required:!0},{name:"tenant_id",type:"string",default:"",required:!0},{name:"email",type:"string",default:"",required:!0},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveAPP",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GoogleDrive:{name:"GoogleDrive",default_mount_path:"/google-drive",common:[...Ht,Kt,Gt,zt,...Jt("GoogleDrive"),jt,dr],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"folder,name,modifiedTime desc",default:"folder,name,modifiedTime desc",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"api_url_address",type:"string",default:"https://api.alist.nn.ci/googledrive/token",required:!1,help:"true"},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1}],config:{name:"GoogleDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Quark:{name:"Quark",default_mount_path:"/quark",common:kt,additional:[{name:"variant",type:"select",options:"Quark,UC",default:"Quark",required:!0},{name:"cookie",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"0",required:!0},{name:"order_by",type:"select",options:"none,file_type,file_name,updated_at",default:"none",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"use_transcoding_address",type:"bool",default:"false",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1}],config:{name:"Quark",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"123Pan":{name:"123Pan",default_mount_path:"/123",common:[...Ht,Kt,Gt,zt,...Jt("123Pan"),jt,dr],additional:[{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"access_token",type:"string",default:"",required:!1,help:"\u767B\u5F55\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09\u3002\u4EC5\u9700\u586B\u5199\u4E0A\u65B9 123 \u7F51\u76D8\u624B\u673A\u53F7\u548C\u5BC6\u7801\uFF0C\u767B\u5F55\u540E\u81EA\u52A8\u83B7\u53D6\u5E76\u4FDD\u5B58\uFF0C\u8DF3\u8FC7\u91CD\u590D\u767B\u5F55\u53EF\u907F\u514D\u5883\u5916 IP \u89E6\u53D1\u98CE\u63A7\u3002"},{name:"cookie",type:"text",default:"",required:!1,help:"\u6D4F\u89C8\u5668 Cookie\uFF08\u53EF\u9009\uFF09\u3002\u5728 123 \u7F51\u76D8\u7F51\u9875\u767B\u5F55\u540E\uFF0C\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Cookie \u6574\u4E32\u7C98\u8D34\u4E8E\u6B64\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u4ECE Authorization: Bearer <token> \u4E2D\u590D\u5236 token/Bearer \u503C\u3002\u89E3\u6790\u51FA\u7684 JWT \u4F1A\u4F5C\u4E3A Bearer \u4EE4\u724C\u4F7F\u7528\uFF0C\u6548\u679C\u7B49\u540C\u8BBF\u95EE\u4EE4\u724C\uFF0C\u9002\u5408\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u88AB\u98CE\u63A7\u62E6\u622A\u7684\u73AF\u5883\u3002"},{name:"root_id",type:"string",default:"0",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1,help:"the threads of upload"},{name:"platform",type:"string",default:"web",required:!1,help:"the platform header value, sent with API requests"},{name:"order_by",type:"select",options:"file_id,file_name,size,created_at,updated_at",default:"file_id",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"desc",required:!1}],config:{name:"123Pan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},BaiduNetdisk:{name:"BaiduNetdisk",default_mount_path:"/baidu",common:[...Ht,Kt,Gt,zt,...Jt("BaiduNetdisk"),jt,dr],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u3002\u82E5\u4EE4\u724C\u5931\u6548\uFF0C\u6302\u8F7D\u65F6\u4F1A\u81EA\u52A8\u6839\u636E refresh_token \u901A\u8FC7\u5728\u7EBF API \u6362\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"use_online_api",type:"bool",default:"true",required:!1,help:"\u4F7F\u7528\u5728\u7EBF API \u5237\u65B0 token\uFF08\u65E0\u9700 ClientID/ClientSecret\uFF09"},{name:"api_url_address",type:"string",default:"https://api.oplist.org/baiduyun/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"download_api",type:"select",options:"official,crack,crack_video",default:"official",required:!1},{name:"custom_crack_ua",type:"string",default:"netdisk",required:!0},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1},{name:"upload_thread",type:"string",default:"3",required:!1,help:"1<=thread<=32"},{name:"upload_timeout",type:"number",default:"60",required:!1,help:"per-slice upload timeout in seconds"},{name:"custom_upload_part_size",type:"number",default:"0",required:!1,help:"0 for auto"},{name:"use_dynamic_upload_api",type:"bool",default:"true",required:!1,help:"dynamically get upload api domain, when enabled, the 'Upload API' setting will be used as a fallback if failed to get"},{name:"upload_api",type:"string",default:"https://d.pcs.baidu.com",required:!1},{name:"low_bandwith_upload_mode",type:"bool",default:"false",required:!1}],config:{name:"BaiduNetdisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Open":{name:"115Open",default_mount_path:"/115",common:[...Ht,Kt,Gt,zt,...Jt("115Open"),jt,dr],additional:[{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1B\u5931\u6548\u65F6\u81EA\u52A8\u7528 refresh_token \u5237\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"refresh_token",type:"string",default:"",required:!0,help:"\u5237\u65B0\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1Baccess_token \u5931\u6548\u65F6\u81EA\u52A8\u5237\u65B0\u3002"},{name:"root_id",type:"string",default:"0",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID\uFF0C\u9ED8\u8BA4 0\uFF08\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"file_name,file_size,user_utime,file_type",default:"file_name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"page_size",type:"number",default:"200",required:!1,help:"list api per page size (1~1150)"},{name:"limit_rate",type:"float",default:"1",required:!1,help:"limit all api request rate ([limit]r/1s)\uFF0C0 \u8868\u793A\u4E0D\u9650\u901F"}],config:{name:"115Open",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"GitHub API":{name:"GitHub API",default_mount_path:"/github",common:kt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"token",type:"string",default:"",required:!0},{name:"owner",type:"string",default:"",required:!0},{name:"repo",type:"string",default:"",required:!0},{name:"ref",type:"string",default:"",required:!1,help:"A branch, a tag or a commit SHA, default branch by default."},{name:"gh_proxy",type:"string",default:"",required:!1,help:"GitHub proxy, e.g. https://ghproxy.net/raw.githubusercontent.com"},{name:"committer_name",type:"string",default:"",required:!1},{name:"committer_email",type:"string",default:"",required:!1},{name:"author_name",type:"string",default:"",required:!1},{name:"author_email",type:"string",default:"",required:!1},{name:"mkdir_commit_message",type:"text",default:"{{.UserName}} mkdir {{.ObjPath}}",required:!1},{name:"delete_commit_message",type:"text",default:"{{.UserName}} remove {{.ObjPath}}",required:!1},{name:"put_commit_message",type:"text",default:"{{.UserName}} upload {{.ObjPath}}",required:!1},{name:"rename_commit_message",type:"text",default:"{{.UserName}} rename {{.ObjPath}} to {{.TargetName}}",required:!1},{name:"copy_commit_message",type:"text",default:"{{.UserName}} copy {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"move_commit_message",type:"text",default:"{{.UserName}} move {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"GitHub API",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Thunder:{name:"Thunder",default_mount_path:"/thunder",common:kt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1,help:"32 hex characters"},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Thunder",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},ThunderExpert:{name:"ThunderExpert",default_mount_path:"/thunderexpert",common:kt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"login_type",type:"select",options:"user,refresh_token",default:"user",required:!0},{name:"sign_type",type:"select",options:"algorithms,captcha_sign",default:"algorithms",required:!0},{name:"username",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"password",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"refresh_token",type:"string",default:"",required:!1,help:"login type is refresh_token, this is required"},{name:"algorithms",type:"string",default:"9uJNVj/wLmdwKrJaVj/omlQ,Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf,Eb+L7Ce+Ej48u,jKY0,ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd,wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK,gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O,5IiCoM9B1/788ntB,P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf,+oK0AN",required:!1},{name:"captcha_sign",type:"string",default:"",required:!1},{name:"timestamp",type:"string",default:"",required:!1},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1},{name:"client_id",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_id\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_secret",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_secret\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_version",type:"string",default:"8.31.0.9726",required:!0},{name:"package_name",type:"string",default:"com.xunlei.downloadprovider",required:!0},{name:"user_agent",type:"string",default:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",required:!0},{name:"download_user_agent",type:"string",default:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",required:!0},{name:"use_video_url",type:"bool",default:"false",required:!1},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"ThunderExpert",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},"189Cloud":{name:"189Cloud",default_mount_path:"/189",common:[...Ht,Kt,Gt,zt,...Jt("189Cloud"),jt,dr],additional:[{name:"username",type:"string",default:"",required:!0,help:"the phone number used to log in"},{name:"password",type:"string",default:"",required:!0,help:"password for login"},{name:"cookie",type:"text",default:"",required:!1,help:"Fill in the cookie if need captcha (\u82E5\u9047\u6ED1\u5757\u9A8C\u8BC1\u7801\u6216\u8BBE\u5907\u9501\uFF0C\u53EF\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165)"},{name:"root_folder_id",type:"string",default:"-11",required:!1,help:"\u6839\u6587\u4EF6\u5939ID\uFF0C\u9ED8\u8BA4\u4E3A -11\uFF08\u4E2A\u4EBA\u4E91\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"lastOpTime,filename,fileSize",default:"lastOpTime",required:!1},{name:"order_direction",type:"select",options:"desc,asc",default:"desc",required:!1}],config:{name:"189Cloud",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-11"}},Lanzou:{name:"Lanzou",default_mount_path:"/lanzou",common:kt,additional:[{name:"type",type:"select",options:"cookie,account,url",default:"cookie",required:!0},{name:"account",type:"string",default:"",required:!1,help:"\u8D26\u53F7\uFF08\u624B\u673A\u53F7/UID\uFF09\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"password",type:"string",default:"",required:!1,help:"\u5BC6\u7801\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"cookie",type:"text",default:"",required:!1,help:"\u767B\u5F55 Cookie\uFF08\u542B ylogin, phpdisk_info \u7B49\uFF09\uFF0Ccookie \u6A21\u5F0F\u9700\u586B\u5199\uFF1B\u6709\u6548\u671F\u7EA6 15 \u5929"},{name:"root_folder_id",type:"string",default:"-1",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID / \u5206\u4EAB ID\uFF08\u4E2A\u4EBA\u76D8\u9ED8\u8BA4 -1\uFF0C\u5206\u4EAB\u94FE\u63A5\u586B\u5206\u4EAB ID \u5982 b00xxxx\uFF09"},{name:"share_password",type:"string",default:"",required:!1,help:"\u63D0\u53D6\u7801 / \u8BBF\u95EE\u5BC6\u7801\uFF08\u65E0\u5BC6\u7801\u7559\u7A7A\uFF09"},{name:"baseUrl",type:"string",default:"https://pc.woozooo.com",required:!1,help:"\u57FA\u672C API \u57DF\u540D"},{name:"shareUrl",type:"string",default:"https://pan.lanzoui.com",required:!1,help:"\u5206\u4EAB\u9875\u9762\u89E3\u6790\u57DF\u540D"},{name:"user_agent",type:"string",default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/42",required:!0,help:"\u53D1\u9001\u7ED9\u84DD\u594F\u4E91 API \u4E0E\u76F4\u94FE\u89E3\u6790\u65F6\u643A\u5E26\u7684\u5BA2\u6237\u7AEF User-Agent"},{name:"repair_file_info",type:"bool",default:"false",required:!1,help:"\u901A\u8FC7 HEAD \u8BF7\u6C42\u4FEE\u6B63\u6587\u4EF6\u7CBE\u786E\u5927\u5C0F\u4E0E\u4FEE\u6539\u65F6\u95F4\uFF08WebDAV \u63A8\u8350\u5F00\u542F\uFF09"},{name:"order_by",type:"select",options:"name,size,time",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Lanzou",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-1"}},WebDav:{name:"WebDav",default_mount_path:"/webdav",common:[...Ht,Kt,Gt,zt,...Jt("WebDav"),ud,jt,dr],additional:[{name:"vendor",type:"select",options:"other,sharepoint",default:"other",required:!0},{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"tls_insecure_skip_verify",type:"bool",default:"false",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WebDav",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WoPan:{name:"WoPan",default_mount_path:"/wopan",common:kt,additional:[{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"family_id",type:"string",default:"",required:!1,help:"true"},{name:"sort_rule",type:"select",options:"name_asc,name_desc,time_asc,time_desc,size_asc,size_desc",default:"name_asc",required:!1},{name:"access_token",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WoPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0",no_overwrite_upload:!0}},S3:{name:"S3",default_mount_path:"/s3",common:kt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"S3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Doge:{name:"Doge",default_mount_path:"/doge",common:kt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Doge",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},WeiYun:{name:"WeiYun",default_mount_path:"/weiyun",common:[...Ht,Kt,Gt,zt,...Jt("WeiYun"),jt,dr],additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"cookies",type:"text",default:"",required:!0},{name:"order_by",type:"select",options:"name,size,updated_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"upload_thread",type:"string",default:"4",required:!1,help:"4<=thread<=32"}],config:{name:"WeiYun",local_sort:!1,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"",check_status:!0}},SFTP:{name:"SFTP",default_mount_path:"/sftp",common:[...Ht,Kt,Gt,zt,...Jt("SFTP"),jt,dr],additional:[{name:"address",type:"string",default:"",required:!0,help:"SSH host:port (e.g. 127.0.0.1:22)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"private_key",type:"text",default:"",required:!1},{name:"passphrase",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"ignore_symlink_error",type:"bool",default:"false",required:!1,help:"Ignore symlink error"}],config:{name:"SFTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},FTP:{name:"FTP",default_mount_path:"/ftp",common:[...Ht,Kt,Gt,zt,...Jt("FTP"),jt,dr],additional:[{name:"address",type:"string",default:"",required:!0,help:"FTP host:port (e.g. 127.0.0.1:21)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"encoding",type:"string",default:"utf-8",required:!0,help:"Character encoding, e.g. utf-8, gbk, gb2312"},{name:"cwd_list",type:"bool",default:"false",required:!1,help:"Enter directory before listing"},{name:"root_folder_path",type:"string",default:"/",required:!1}],config:{name:"FTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},PikPak:{name:"PikPak",default_mount_path:"/pikpak",common:kt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"platform",type:"select",options:"web,android,pc",default:"web",required:!0},{name:"refresh_token",type:"text",default:"",required:!1},{name:"captcha_token",type:"text",default:"",required:!1},{name:"device_id",type:"string",default:"",required:!1},{name:"disable_media_link",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPak",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Seafile:{name:"Seafile",default_mount_path:"/seafile",common:kt,additional:[{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1},{name:"repo_id",type:"string",default:"",required:!1},{name:"repo_pwd",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Seafile",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},YandexDisk:{name:"YandexDisk",default_mount_path:"/yandex",common:kt,additional:[{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/yandexui/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,path,created,modified,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"YandexDisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Terabox:{name:"Terabox",default_mount_path:"/terabox",common:[...Ht,Kt,Gt,zt,...Jt("Terabox"),jt,dr],additional:[{name:"cookie",type:"text",default:"",required:!0},{name:"download_api",type:"select",options:"official,crack",default:"official",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Terabox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},MediaTrack:{name:"MediaTrack",default_mount_path:"/mediatrack",common:kt,additional:[{name:"access_token",type:"text",default:"",required:!0},{name:"project_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"updated_at,title,size",default:"title",required:!1},{name:"order_desc",type:"bool",default:"false",required:!1}],config:{name:"MediaTrack",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Alias:{name:"Alias",default_mount_path:"/alias",common:[...Ht,Kt,Gt,zt,...Jt("Alias"),ud,jt,dr],additional:[{name:"paths",type:"text",default:"",required:!0,help:"Newline-separated list of paths, e.g. /local or sub:/target"},{name:"read_conflict_policy",type:"select",options:"first,random,all",default:"first",required:!1},{name:"write_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict",default:"disabled",required:!1},{name:"put_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict,random,quota,quota_strict",default:"disabled",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Alias",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Dropbox:{name:"Dropbox",default_mount_path:"/dropbox",common:kt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"false",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/dropboxs/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_namespace_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Dropbox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WPS:{name:"WPS",default_mount_path:"/wps",common:kt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"cookie",type:"text",default:"",required:!0},{name:"mode",type:"select",options:"Personal,Business",default:"Personal",required:!1},{name:"custom_ua",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WPS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"139Yun":{name:"139Yun",default_mount_path:"/139",common:[...Ht,Kt,Gt,zt,...Jt("139Yun"),ud,jt,dr],additional:[{name:"authorization",type:"text",default:"",required:!0},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"type",type:"select",options:"personal_new,family,group,personal,share",default:"personal_new",required:!1},{name:"link_id",type:"text",default:"",required:!1},{name:"cloud_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"139Yun",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Mega_nz:{name:"Mega_nz",default_mount_path:"/mega",common:[...Ht,Kt,Gt,zt,...Jt("Mega_nz"),jt,dr],additional:[{name:"email",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"two_fa_code",type:"string",default:"",required:!1},{name:"two_fa_secret",type:"string",default:"",required:!1},{name:"move_to_trash",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Mega_nz",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Share":{name:"115Share",default_mount_path:"/115_share",common:kt,additional:[{name:"share_code",type:"text",default:"",required:!0},{name:"receive_code",type:"text",default:"",required:!0},{name:"cookie",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"page_size",type:"number",default:"1000",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"115Share",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},"123PanShare":{name:"123PanShare",default_mount_path:"/123_share",common:[...Ht,Kt,Gt,zt,...Jt("123PanShare"),jt,dr],additional:[{name:"sharekey",type:"string",default:"",required:!0},{name:"sharepassword",type:"string",default:"",required:!1},{name:"accesstoken",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"123PanShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},AliyundriveShare:{name:"AliyundriveShare",default_mount_path:"/aliyun_share",common:kt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"name,size,updated_at,created_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"ASC,DESC",default:"ASC",required:!1}],config:{name:"AliyundriveShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}},OnedriveSharelink:{name:"OnedriveSharelink",default_mount_path:"/onedrive_share",common:kt,additional:[{name:"url",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveSharelink",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"/"}},PikPakShare:{name:"PikPakShare",default_mount_path:"/pikpak_share",common:kt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"platform",type:"select",options:"android,web,pc",default:"web",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPakShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},SMB:{name:"SMB",default_mount_path:"/smb",common:[...Ht,Kt,Gt,zt,...Jt("SMB"),jt,dr],additional:[{name:"address",type:"string",default:"",required:!0},{name:"share_name",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"port",type:"number",default:"445",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"SMB",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Crypt:{name:"Crypt",default_mount_path:"/crypt",common:[...Ht,Kt,Gt,zt,...Jt("Crypt"),jt,dr],additional:[{name:"remote_path",type:"string",default:"",required:!0,help:"\u52A0\u5BC6\u6570\u636E\u5B9E\u9645\u5B58\u50A8\u7684\u4F4D\u7F6E\uFF08\u53E6\u4E00\u4E2A\u5DF2\u6302\u8F7D\u5B58\u50A8\u7684\u8DEF\u5F84\uFF0C\u5982 /aliyundrive/enc\uFF09"},{name:"password",type:"string",default:"",required:!0,help:"\u4E3B\u5BC6\u7801\uFF08\u7528\u4E8E\u6D3E\u751F\u52A0\u5BC6\u5BC6\u94A5\uFF09"},{name:"salt",type:"string",default:"",required:!1,help:"\u76D0\uFF08\u7B2C\u4E8C\u5BC6\u7801\uFF09\u3002\u53EF\u9009\u4F46\u63A8\u8350\uFF0C\u63D0\u9AD8\u5BC6\u94A5\u5F3A\u5EA6"},{name:"filename_encryption",type:"select",options:"off,standard,obfuscate",default:"off",required:!0,help:"\u6587\u4EF6\u540D\u52A0\u5BC6\u65B9\u5F0F\u3002\u5F53\u524D\u4EC5\u652F\u6301 off\uFF08\u6587\u4EF6\u540D\u4E0D\u52A0\u5BC6\uFF0C\u4EC5\u5185\u5BB9\u52A0\u5BC6\uFF09"},{name:"directory_name_encryption",type:"select",options:"false,true",default:"false",required:!0},{name:"encrypted_suffix",type:"string",default:".bin",required:!0,help:"\u52A0\u5BC6\u6587\u4EF6\u7684\u540E\u7F00\uFF08\u9AD8\u7EA7\u9009\u9879\uFF09"},{name:"filename_encoding",type:"select",options:"base64,base32,base32768",default:"base64",required:!0},{name:"thumbnail",type:"bool",default:"false",required:!1},{name:"show_hidden",type:"bool",default:"true",required:!1}],config:{name:"Crypt",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",no_link_url:!0,check_status:!0}},Virtual:{name:"Virtual",default_mount_path:"/virtual",common:[...Ht,Kt,Gt,zt,...Jt("Virtual"),jt,dr],additional:[{name:"num_file",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u6587\u4EF6\u6570\u91CF"},{name:"num_folder",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u76EE\u5F55\u6570\u91CF"},{name:"max_file_size",type:"number",default:"1073741824",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5927\u5B57\u8282\u6570"},{name:"min_file_size",type:"number",default:"1048576",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5C0F\u5B57\u8282\u6570"}],config:{name:"Virtual",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!0,default_root:"/",no_link_url:!0}},AListV3:{name:"AListV3",default_mount_path:"/alist",common:[...Ht,Kt,Gt,zt,...Jt("AListV3"),ud,jt,dr],additional:[{name:"url",type:"string",default:"",required:!0,help:"\u53E6\u4E00\u4E2A OpenList / AList \u5B9E\u4F8B\u7684\u5730\u5740\uFF0C\u5982 https://example.com"},{name:"meta_password",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09"},{name:"pass_ip_to_upsteam",type:"bool",default:"true",required:!1},{name:"pass_ua_to_upsteam",type:"bool",default:"true",required:!1},{name:"forward_archive_requests",type:"bool",default:"true",required:!1}],config:{name:"AListV3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},UrlTree:{name:"UrlTree",default_mount_path:"/url_tree",common:kt,additional:[{name:"url_structure",type:"text",default:"",required:!0,help:"URL \u6811\u7ED3\u6784\u6587\u672C\uFF0C\u6BCF\u884C\u7F29\u8FDB 2 \u7A7A\u683C\u8868\u793A\u4E00\u7EA7\u3002\u76EE\u5F55\u884C\u4EE5 : \u7ED3\u5C3E\uFF0C\u6587\u4EF6\u884C\u683C\u5F0F [FileName:][FileSize:][Modified:]Url"},{name:"head_size",type:"bool",default:"false",required:!1,help:"\u7528 HEAD \u8BF7\u6C42\u83B7\u53D6\u6587\u4EF6\u5927\u5C0F\uFF08\u53EF\u80FD\u5931\u8D25\uFF09"},{name:"writable",type:"bool",default:"false",required:!1,help:"\u5141\u8BB8\u589E\u5220\u6539\u6587\u4EF6\u6811\uFF08\u4F1A\u6301\u4E45\u5316\u56DE url_structure\uFF09"}],config:{name:"UrlTree",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Strm:{name:"Strm",default_mount_path:"/strm",common:[...Ht,Kt,Gt,zt,...Jt("Strm"),jt,dr],additional:[{name:"paths",type:"text",default:"",required:!0,help:"\u8DEF\u5F84\u6620\u5C04\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF1A\u865A\u62DF\u540D:\u5E95\u5C42\u8DEF\u5F84\uFF08\u5982 movies:/aliyundrive/movies\uFF09\uFF0C\u6216\u76F4\u63A5\u5E95\u5C42\u8DEF\u5F84"},{name:"siteUrl",type:"text",default:"",required:!1,help:"strm \u6587\u4EF6\u5185\u5BB9\u7684 URL \u524D\u7F00\uFF08\u7559\u7A7A\u5219\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF09"},{name:"PathPrefix",type:"text",default:"/d",required:!1,help:"\u4E0B\u8F7D\u8DEF\u5F84\u524D\u7F00"},{name:"downloadFileTypes",type:"text",default:"ass,srt,vtt,sub,strm",required:!1,help:"\u9700\u539F\u6837\u4E0B\u8F7D\u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u901A\u5E38\u4E3A\u5B57\u5E55\uFF09"},{name:"filterFileTypes",type:"text",default:"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac",required:!1,help:"\u652F\u6301\u751F\u6210 strm \u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u89C6\u9891/\u97F3\u9891\uFF09"},{name:"encodePath",type:"bool",default:"true",required:!1},{name:"withoutUrl",type:"bool",default:"false",required:!1},{name:"withSign",type:"bool",default:"false",required:!1}],config:{name:"Strm",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!0,need_ms:!1,default_root:"/",no_link_url:!0}},AzureBlob:{name:"AzureBlob",default_mount_path:"/azure",common:kt,additional:[{name:"endpoint",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u7AEF\u70B9\uFF0C\u5982 https://accountname.blob.core.windows.net/"},{name:"access_key",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u8BBF\u95EE\u5BC6\u94A5\uFF08Base64\uFF09"},{name:"container_name",type:"string",default:"",required:!0,help:"\u5BB9\u5668\u540D\u79F0"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"SAS URL \u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"AzureBlob",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},USS:{name:"USS",default_mount_path:"/uss",common:kt,additional:[{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0,help:"\u4E0B\u8F7D\u57DF\u540D\uFF08\u53EF\u542B\u534F\u8BAE\u5934\uFF09"},{name:"operator_name",type:"string",default:"",required:!0},{name:"operator_password",type:"string",default:"",required:!0},{name:"anti_theft_chain_token",type:"string",default:"",required:!1,help:"\u9632\u76D7\u94FE Token\uFF08\u7559\u7A7A\u5219\u7528\u64CD\u4F5C\u5458\u5BC6\u7801\uFF09"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"USS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Alidoc:{name:"Alidoc",default_mount_path:"/alidoc",common:kt,additional:[{name:"cookie",type:"text",default:"",required:!0,help:"\u9489\u9489\u6587\u6863\u7F51\u9875 Cookie"},{name:"root_folder_id",type:"string",default:"",required:!0,help:"\u6839\u76EE\u5F55 dentryUuid"}],config:{name:"Alidoc",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},Emby:{name:"Emby",default_mount_path:"/emby",common:kt,additional:[{name:"url",type:"string",default:"",required:!0,help:"Emby \u670D\u52A1\u5668\u5730\u5740\uFF0C\u5982 http://localhost:8096"},{name:"api_key",type:"string",default:"",required:!1},{name:"user_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"link_method",type:"select",options:"stream,download",default:"stream",required:!1},{name:"root_folder_id",type:"string",default:"1",required:!1,help:"\u6839\u76EE\u5F55 ID\uFF0C\u9ED8\u8BA4 1"}],config:{name:"Emby",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"1"}},BunnyStorage:{name:"BunnyStorage",default_mount_path:"/bunny",common:kt,additional:[{name:"storage_zone_name",type:"string",default:"",required:!0},{name:"access_key",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"storage.bunnycdn.com",required:!1},{name:"cdn_base_url",type:"string",default:"",required:!1},{name:"cdn_token_key",type:"string",default:"",required:!1},{name:"cdn_token_method",type:"select",options:"sha256,hmac_sha256",default:"sha256",required:!1},{name:"cdn_token_include_ip",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"},{name:"placeholder",type:"string",default:".openlist",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"BunnyStorage",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},CloudflareImgbed:{name:"CloudflareImgbed",default_mount_path:"/cfimgbed",common:kt,additional:[{name:"address",type:"string",default:"",required:!0,help:"\u56FE\u5E8A\u670D\u52A1\u5730\u5740"},{name:"token",type:"string",default:"",required:!0},{name:"small_channel_name",type:"string",default:"",required:!1},{name:"large_channel_name",type:"string",default:"",required:!1},{name:"large_channel_type",type:"string",default:"",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"CloudflareImgbed",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GuangYaPan:{name:"GuangYaPan",default_mount_path:"/guangyapan",common:kt,additional:[{name:"client_id",type:"string",default:"",required:!0},{name:"device_id",type:"string",default:"",required:!1},{name:"device_sign",type:"string",default:"",required:!1},{name:"access_token",type:"text",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!1},{name:"phone_number",type:"string",default:"",required:!1,help:"\u624B\u673A\u53F7\uFF08\u767B\u5F55\u7528\uFF0C+86 \u683C\u5F0F\uFF09"},{name:"verify_code",type:"string",default:"",required:!1},{name:"page_size",type:"number",default:"100",required:!1},{name:"order_by",type:"number",default:"3",required:!1},{name:"sort_type",type:"number",default:"1",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"GuangYaPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},AutoIndex:{name:"AutoIndex",default_mount_path:"/autoindex",common:kt,additional:[{name:"url",type:"string",default:"",required:!0,help:"AutoIndex \u76EE\u5F55\u9875 URL"},{name:"item_xpath",type:"string",default:"//pre/a",required:!0},{name:"name_xpath",type:"string",default:"@href",required:!0},{name:"modified_xpath",type:"string",default:"string(following-sibling::text()[2])",required:!1},{name:"size_xpath",type:"string",default:"string(following-sibling::text()[1])",required:!1},{name:"ignore_file_names",type:"text",default:`. .. Parent Directory -Up`,required:!1},{name:"modified_time_format",type:"string",default:"02-Jan-2006 15:04",required:!1}],config:{name:"AutoIndex",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},ProtonDrive:{name:"ProtonDrive",default_mount_path:"/proton",common:[...Ft,Pt,Tt,Ut,...Rt("ProtonDrive"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u90AE\u7BB1"},{name:"password",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u5BC6\u7801"},{name:"two_fa_code",type:"string",default:"",required:!1,help:"\u4E24\u6B65\u9A8C\u8BC1\u7801\uFF08\u5982\u5DF2\u542F\u7528 2FA\uFF09"},{name:"root_folder_id",type:"string",default:"root",required:!1,help:"\u6839\u6587\u4EF6\u5939 LinkID\uFF0C\u9ED8\u8BA4 root \u8868\u793A\u4E3B\u5171\u4EAB\u6839\u76EE\u5F55"},{name:"chunk_size",type:"number",default:"4",required:!1,help:"\u5206\u5757\u5927\u5C0F\uFF08MB\uFF09"},{name:"use_reusable_login",type:"bool",default:"true",required:!1}],config:{name:"ProtonDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}}};Ue.get("/driver/list",r=>r.json({code:200,message:"success",data:fu}));Ue.get("/driver/info",r=>{let e=r.req.query("driver")||"",t=fu[e]||fu.AliyundriveOpen;return r.json({code:200,message:"success",data:t})});Ue.get("/setting/list",async r=>{let e=await ne(r.env),t=r.req.query("group"),i=r.req.query("groups"),n=e.settings||[];if(t!==void 0){let s=parseInt(t,10);n=n.filter(o=>o.group===s)}else if(i!==void 0){let s=i.split(",").map(o=>parseInt(o,10));n=n.filter(o=>s.includes(o.group))}return r.json({code:200,message:"success",data:n})});Ue.post("/setting/save",async r=>{let e=await r.req.json().catch(()=>[]);if(!Array.isArray(e))return r.json({code:400,message:"body must be an array",data:null});let t=await ne(r.env);t.settings||(t.settings=[]);for(let n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;let s=n.key;if(typeof s!="string"||s.length===0||s.length>128)continue;let o=n.value;o!==null&&typeof o=="object"&&(o=JSON.stringify(o));let a=t.settings.findIndex(c=>c.key===s);a!==-1?(t.settings[a].value=o,typeof n.group=="number"&&(t.settings[a].group=n.group)):t.settings.push({key:s,value:o,type:typeof n.type=="string"?n.type:"string",help:typeof n.help=="string"?n.help:"",group:typeof n.group=="number"?n.group:0,flag:typeof n.flag=="number"?n.flag:0})}let i=new Set;return t.settings=t.settings.filter(n=>!n.key||i.has(n.key)?!1:(i.add(n.key),!0)),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/setting/default",async r=>{let e=r.req.query("group");if(e===void 0)return r.json({code:400,message:"group is required",data:null});let t=parseInt(e,10),i=await ne(r.env);i.settings=(i.settings||[]).filter(o=>o.group!==t);let n=ac.settings.filter(o=>o.group===t),s=new Set(n.map(o=>o.key));return i.settings=i.settings.filter(o=>!s.has(o.key)),i.settings.push(...JSON.parse(JSON.stringify(n))),await fe(i,r.env),r.json({code:200,message:"success",data:n})});Ue.post("/setting/delete",async r=>{let e=r.req.query("key");if(!e)return r.json({code:400,message:"key is required",data:null});let t=await ne(r.env);return t.settings=(t.settings||[]).filter(i=>i.key!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});var Io=async(r,e,t=14)=>{let i=await ne(r);i.settings||(i.settings=[]);for(let[n,s]of Object.entries(e)){if(s===void 0)continue;let o=i.settings.findIndex(a=>a.key===n);o!==-1?i.settings[o].value=s:i.settings.push({key:n,value:s,type:"string",help:n,group:t,flag:0})}await fe(i,r)};Ue.post("/setting/set_115",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"115_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_115_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"115_open_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_pan",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"123_pan_temp_dir":e.temp_dir||"","123_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"123_open_temp_dir":e.temp_dir||"","123_open_callback_url":e.callback_url||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_pikpak",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{pikpak_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunder_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder_browser",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunder_browser_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunderx",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunderx_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/reset_token",async r=>{let e=Poe(32);await Io(r.env,{token:e});let{resetJwtSecretCache:t}=await Promise.resolve().then(()=>(Qi(),VI));return t(),r.json({code:200,message:"success",data:e})});Ue.get("/meta/list",async r=>{let t=(await ne(r.env)).metas||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.get("/meta/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=((await ne(r.env)).metas||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"meta not found",data:null})});Ue.post("/meta/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i="/"+String(e.path||"").split("/").filter(Boolean).join("/");if(!i||i==="/")return r.json({code:400,message:"path is required",data:null});if(t.metas.some(o=>o.path===i))return r.json({code:400,message:"meta already exists",data:null});let n=String(e.hide||"");if(n){let o=p2(n);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}let s={id:t.metas.length?Math.max(...t.metas.map(o=>o.id))+1:1,path:i,password:e.password||"",read_users:e.read_users||[],read_users_sub:!!e.read_users_sub,write_users:e.write_users||[],write_users_sub:!!e.write_users_sub,p_sub:!!e.p_sub,write:!!e.write,w_sub:!!e.w_sub,hide:n,h_sub:!!e.h_sub,readme:e.readme||"",r_sub:!!e.r_sub,header:e.header||"",header_sub:!!e.header_sub};return t.metas.push(s),await fe(t,r.env),r.json({code:200,message:"success",data:s})});Ue.post("/meta/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i=t.metas.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"meta not found",data:null});let n=e.path!==void 0?"/"+String(e.path).split("/").filter(Boolean).join("/"):t.metas[i].path;if(n&&t.metas.some(o=>o.path===n&&o.id!==e.id))return r.json({code:400,message:"meta already exists",data:null});let s=e.hide!==void 0?String(e.hide):t.metas[i].hide;if(s){let o=p2(s);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}return t.metas[i]={...t.metas[i],...n?{path:n}:{},password:e.password!==void 0?e.password:t.metas[i].password,read_users:e.read_users!==void 0?e.read_users:t.metas[i].read_users,read_users_sub:e.read_users_sub!==void 0?!!e.read_users_sub:t.metas[i].read_users_sub,write_users:e.write_users!==void 0?e.write_users:t.metas[i].write_users,write_users_sub:e.write_users_sub!==void 0?!!e.write_users_sub:t.metas[i].write_users_sub,p_sub:e.p_sub!==void 0?!!e.p_sub:t.metas[i].p_sub,write:e.write!==void 0?!!e.write:t.metas[i].write,w_sub:e.w_sub!==void 0?!!e.w_sub:t.metas[i].w_sub,hide:e.hide!==void 0?e.hide:t.metas[i].hide,h_sub:e.h_sub!==void 0?!!e.h_sub:t.metas[i].h_sub,readme:e.readme!==void 0?e.readme:t.metas[i].readme,r_sub:e.r_sub!==void 0?!!e.r_sub:t.metas[i].r_sub,header:e.header!==void 0?e.header:t.metas[i].header,header_sub:e.header_sub!==void 0?!!e.header_sub:t.metas[i].header_sub},await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/meta/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.metas||(t.metas=[]),t.metas=t.metas.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.route("/user",qn);Ue.get("/kv/status",async r=>{let[e,t]=await Promise.all([bl(r.env),Jn(r.env)]);return r.json({code:200,message:"success",data:{...e,store:t}})});function e0(r){let e=r.search_index||{};return{obj_count:e.total??0,is_done:e.is_done!==!1,last_done_time:e.updated_at||null,error:e.error||""}}Ue.post("/index/build",async r=>{try{let e=await ne(r.env),t=await Jd({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.search_index={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/update",async r=>{try{let e=await r.req.json().catch(()=>({})),t=Array.isArray(e.paths)?e.paths:["/"],i=Math.min(20,Math.max(0,Number(e.max_depth)||20)),n=await ne(r.env),o=(n.search_index?.items||[]).filter(c=>!t.some(l=>(c.parent||"/").startsWith(l))),a=await Jd({parent:"/",keywords:"",max_depth:i,max_results:2e3},r.env);return n.search_index={items:[...o,...a.content],total:o.length+a.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(n,r.env),r.json({code:200,message:"success",data:e0(n)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/stop",async r=>{let e=await ne(r.env);return e.search_index&&(e.search_index.is_done=!0),await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})});Ue.post("/index/clear",async r=>{let e=await ne(r.env);return e.search_index={items:[],total:0,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})});Ue.get("/index/progress",async r=>{let e=await ne(r.env);return r.json({code:200,message:"success",data:e0(e)})});Ue.post("/scan/start",async r=>{try{let e=await ne(r.env),t=await Jd({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.scan_result={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:{obj_count:t.total,is_done:!0,last_done_time:e.scan_result.updated_at,error:""}})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/scan/stop",async r=>r.json({code:200,message:"success",data:{obj_count:0,is_done:!0,last_done_time:null,error:""}}));Ue.get("/scan/progress",async r=>{let t=(await ne(r.env)).scan_result||{};return r.json({code:200,message:"success",data:{obj_count:t.total??0,is_done:t.is_done!==!1,last_done_time:t.updated_at||null,error:t.error||""}})});Ue.get("/plugin/list",async r=>{let e=await ne(r.env);return e.plugins||(e.plugins=[]),r.json({code:200,message:"success",data:{content:e.plugins,total:e.plugins.length}})});Ue.get("/plugin/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"Plugin not found",data:null})});Ue.post("/plugin/install",async r=>{try{let e=await r.req.json(),t=e;if(e.manifest_url&&typeof e.manifest_url=="string")try{let a=await fetch(e.manifest_url);if(!a.ok)return r.json({code:400,message:`Failed to fetch plugin manifest from URL: HTTP ${a.status}`,data:null});t={...await a.json(),...e}}catch(a){return r.json({code:400,message:`Network error fetching plugin manifest: ${Ne(a,"unexpected network error")}`,data:null})}if(!t.id||!t.name)return r.json({code:400,message:"Plugin id and name are required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.findIndex(a=>a.id===t.id),s=new Date().toISOString(),o={id:t.id,name:t.name,version:t.version||"1.0.0",description:t.description||"",author:t.author||"Unknown",homepage:t.homepage||"",repository:t.repository||"",icon:t.icon||"",type:t.type||"ui",enabled:t.enabled!==void 0?!!t.enabled:!0,high_privilege:!!t.high_privilege,permissions:Array.isArray(t.permissions)?t.permissions:[],entry_url:t.entry_url||"",script_content:t.script_content||"",style_content:t.style_content||"",config_schema:t.config_schema||[],config_values:t.config_values||t.default_config||{},target_hooks:t.target_hooks||["global"],is_builtin:!!t.is_builtin,tags:t.tags||[],created_at:n>=0?i.plugins[n].created_at:s,updated_at:s};return n>=0?i.plugins[n]=o:i.plugins.push(o),await fe(i,r.env),r.json({code:200,message:"Plugin installed successfully",data:o})}catch(e){return r.json({code:500,message:e.message||"Failed to install plugin",data:null})}});Ue.post("/plugin/update",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=t.plugins[i],s={...n,...e,id:n.id,updated_at:new Date().toISOString()};return t.plugins[i]=s,await fe(t,r.env),r.json({code:200,message:"Plugin updated successfully",data:s})}catch(e){return r.json({code:500,message:e.message||"Failed to update plugin",data:null})}});Ue.post("/plugin/toggle",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=e.enabled!==void 0?!!e.enabled:!t.plugins[i].enabled;return t.plugins[i].enabled=n,t.plugins[i].updated_at=new Date().toISOString(),await fe(t,r.env),r.json({code:200,message:n?"Plugin enabled":"Plugin disabled",data:{id:e.id,enabled:n}})}catch(e){return r.json({code:500,message:e.message||"Failed to toggle plugin",data:null})}});Ue.post("/plugin/delete",async r=>{try{let t=r.req.query("id");if(!t)try{t=(await r.req.json()).id}catch{}if(!t)return r.json({code:400,message:"Plugin id is required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.length;return i.plugins=i.plugins.filter(s=>s.id!==t),i.plugins.length===n?r.json({code:404,message:"Plugin not found",data:null}):(await fe(i,r.env),r.json({code:200,message:"Plugin deleted successfully",data:null}))}catch(e){return r.json({code:500,message:e.message||"Failed to delete plugin",data:null})}});Ue.post("/plugin/batch_save",async r=>{try{let e=await r.req.json(),t=Array.isArray(e)?e:e.plugins;if(!Array.isArray(t))return r.json({code:400,message:"plugins array is required",data:null});let i=await ne(r.env);return i.plugins=t,await fe(i,r.env),r.json({code:200,message:"Plugins saved successfully",data:{count:t.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to batch save plugins",data:null})}});var lO=[];Ue.post("/message/send",async r=>{let t=(await r.req.json().catch(()=>({})))?.message;return t==null||t===""?r.json({code:400,message:"message is required",data:null},400):(lO.push(String(t)),r.json({code:200,message:"success",data:null}))});Ue.post("/message/get",r=>{let e=lO.shift();return e===void 0?r.json({code:404,message:"no message",data:null},404):r.json({code:200,message:"success",data:e})});Ue.get("/audit/logs",async r=>{try{let{queryAuditLogs:e}=await Promise.resolve().then(()=>(kA(),vA)),t=r.req.query("username"),i=r.req.query("action"),n=r.req.query("method"),s=r.req.query("status"),o=r.req.query("start_date"),a=r.req.query("end_date"),c=parseInt(r.req.query("limit")||"100",10),l=e({username:t,action:i,method:n,status:s,startDate:o,endDate:a,limit:Math.min(c,1e3)});return r.json({code:200,message:"success",data:{content:l,total:l.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to query audit logs",data:null},500)}});Ue.get("/audit/stats",async r=>{try{let{getAuditStats:e}=await Promise.resolve().then(()=>(kA(),vA)),t=e();return r.json({code:200,message:"success",data:t})}catch(e){return r.json({code:500,message:e.message||"Failed to get audit stats",data:null},500)}});Ue.post("/audit/cleanup",async r=>{try{let e=await r.req.json().catch(()=>({})),t=parseInt(e.retention_days||"30",10),{cleanupExpiredLogs:i}=await Promise.resolve().then(()=>(kA(),vA));return i(t),r.json({code:200,message:`Cleaned up logs older than ${t} days`,data:null})}catch(e){return r.json({code:500,message:e.message||"Failed to cleanup logs",data:null},500)}});wr();Ve();Ve();function t0(r,e){let t=r.replace(/bytes=/,"").split("-"),i=parseInt(t[0],10),n=t[1]?parseInt(t[1],10):e-1,s=n-i+1;return{start:i,end:n,chunksize:s}}Yt();Da();lc();var Uoe="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";function dO(r){let e=Roe(r.ignoreHeaders),t={...r.rawUrlHeaders||{}};return!t["User-Agent"]&&!e.has("user-agent")&&(t["User-Agent"]=Uoe),r.proxyRange&&r.rangeHeader&&!e.has("range")&&(t.Range=r.rangeHeader),t}function Roe(r){let e=Array.isArray(r)?r.join(","):r;return new Set(String(e??"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean))}function uO(r,e){return r.Range?e.status===412||e.status===200&&!e.headers.get("content-range"):!1}var Noe={pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",flac:"audio/flac",m3u8:"application/vnd.apple.mpegurl",ts:"video/mp2t",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml"};function fO(r){let e=r.split(".").pop()?.toLowerCase()||"";return Noe[e]||"application/octet-stream"}function AO(r){return r.replace(/[\r\n\u0000-\u001f]+/g,"")}var qoe=6*1024*1024,Ooe=(r,e)=>{let i=(r?.env||{})[e];if(i!=null)return String(i);if(typeof process<"u"&&process.env){let n=process.env[e];if(n!=null)return String(n)}return""};function Moe(r){let e=typeof globalThis<"u"?globalThis:{},t=r?.env||{},i=typeof process<"u"?process.env||{}:{};return!!(t.EDGEONE||t.EO_REGION||t.EDGEONE_BLOB||e.EDGEONE_BLOB||typeof e.EdgeOne<"u"||t.TENCENTCLOUD_SCF_FUNCTIONNAME||i.TENCENTCLOUD_SCF_FUNCTIONNAME)}function Cs(r){let e=Ooe(r,"RAW_PROXY_MAX_BYTES").trim();if(e!==""){let t=parseInt(e,10);if(Number.isFinite(t)&&t>=0)return t}return Moe(r)?qoe:0}function Kw(r,e,t){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return!1;if(e)try{return t0(e,r).chunksize>t}catch{return!1}return r>t}var Loe=new Set(["authorization","cookie"]);function Hoe(r){return r?Object.keys(r).some(e=>Loe.has(e.trim().toLowerCase())):!1}function hO(r,e,t){return Lw(t,r)||Hoe(e)}function gO(r){if(!r)return 0;let e=parseInt(r.get("content-length")||"",10);if(Number.isFinite(e)&&e>0)return e;let t=r.get("content-range")||"",i=/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i.exec(t);if(i){let n=parseInt(i[1],10),s=parseInt(i[2],10);if(Number.isFinite(n)&&Number.isFinite(s)&&s>=n)return s-n+1}return 0}function ov(r){return Kw(r.size,r.range,r.payloadLimit)?r.authBound?"too-large":"redirect":"proxy"}var zw=null,Gw=null;async function Koe(){if(typeof process<"u"&&process.release?.name==="node"&&!zw)try{zw=await import("fs/promises"),Gw=(await import("fs")).createReadStream}catch{}}var Es=new Xe,Goe=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t)}}catch{return}},zoe=new Set(["range","user-agent","accept","accept-language","referer"]);async function pO(r,e,t){let n=r,s=e;for(let o=0;o<5;o++){try{zr(n,"Proxy download",t)}catch(l){throw new Error(l?.message||"SSRF blocked: restricted destination")}let a=await fetch(n,{headers:s,redirect:"manual"}),c=a.headers.get("location");if(a.status>=300&&a.status<400&&c){n=new URL(c,n).toString();let l={};for(let[d,u]of Object.entries(s))zoe.has(d.toLowerCase())&&u&&(l[d]=u);s=l;continue}return a}throw new Error("Proxy download blocked: too many redirects")}function Jw(r,e,t){let i=Cs(r);return`\u6587\u4EF6\u8FC7\u5927\uFF0C\u5F53\u524D\u90E8\u7F72\u5E73\u53F0\u65E0\u6CD5\u4EE3\u7406\u4E0B\u8F7D\uFF08${t} \u5B57\u8282 > \u4E0A\u9650 ${i} \u5B57\u8282 \u2248 ${(s=>Math.floor(s/1024/1024))(i)} MiB\uFF09\u3002\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u5BF9\u51FD\u6570\u5355\u6B21\u8BF7\u6C42/\u54CD\u5E94 body \u6709\u786C\u4E0A\u9650\uFF08EdgeOne \u4E91\u51FD\u6570\u4E3A 6 MiB\uFF0C\u9519\u8BEF\u7801 CLOUD_FUNCTION_PAYLOAD_TOO_LARGE / HTTP 413\uFF09\uFF0C${e} \u65E0\u6CD5\u63D0\u4F9B\u53EF\u76F4\u8FDE\u7684\u4E0B\u8F7D\u94FE\u63A5\uFF08\u6216\u76F4\u94FE\u5FC5\u987B\u643A\u5E26\u79C1\u6709\u9274\u6743\u5934\uFF09\uFF0C\u53EA\u80FD\u7ECF\u670D\u52A1\u7AEF\u8F6C\u53D1\uFF0C\u56E0\u6B64\u65E0\u6CD5\u7ED5\u8FC7\u8BE5\u4E0A\u9650\u3002\u5EFA\u8BAE\uFF1A\u6539\u7528\u8FD4\u56DE\u516C\u5F00\u76F4\u94FE\u7684\u5B58\u50A8\u3001\u6216\u5728\u81EA\u6258\u7BA1\u73AF\u5883\uFF08Docker / Node\uFF09\u90E8\u7F72\uFF1B\u786E\u9700\u653E\u5F00\u9650\u5236\u53EF\u8BBE\u7F6E RAW_PROXY_MAX_BYTES=0\uFF08\u6216\u6309\u5E73\u53F0\u5B9E\u9645\u4E0A\u9650\u8C03\u6574\u8BE5\u503C\uFF09\u3002`}async function mO(r,e,t,i,n={}){let s=n.proxyRange??!1,o=n.driver??"",a=hO(o,e.raw_url_headers,n.storage),c=ov({size:Number(e.size)||0,range:s?r.req.header("Range"):void 0,payloadLimit:Cs(r),authBound:a});if(c==="redirect"){try{zr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.warn(`[rawRouter] Falling back to 302 direct link for '${t}': ${e.size} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime \u2014 native proxy would hit CLOUD_FUNCTION_PAYLOAD_TOO_LARGE`),r.redirect(e.raw_url,302)}if(c==="too-large")return console.warn(`[rawRouter] Refusing to proxy '${t}': ${e.size} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime and no direct link can be handed to the browser (driver=${o}, authBound=${a})`),r.json({code:413,message:Jw(r,o||"\u8BE5\u5B58\u50A8",Number(e.size)||0),data:null},413);let l=dO({rawUrlHeaders:e.raw_url_headers,rangeHeader:r.req.header("Range"),proxyRange:s,ignoreHeaders:n.ignoreHeaders}),d;try{d=await pO(e.raw_url,l,i)}catch(C){return r.text(C.message||"SSRF blocked",403)}uO(l,d)&&(console.warn(`[rawRouter] Upstream ignored/refused Range (status=${d.status}) for '${t}', retrying without Range header...`),delete l.Range,d=await pO(e.raw_url,l,i));let u=gO(d.headers),f=ov({size:u,payloadLimit:Cs(r),authBound:a});if(f!=="proxy"){try{await d.body?.cancel()}catch{}if(console.warn(`[rawRouter] Upstream body is ${u} bytes after Range negotiation (status=${d.status}) for '${t}', which exceeds the ${Cs(r)}-byte payload limit of this runtime \u2014 refusing to stream it (decision=${f}).`),f==="redirect"){try{zr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return r.redirect(e.raw_url,302)}return r.json({code:413,message:Jw(r,o||"\u8BE5\u5B58\u50A8",u),data:null},413)}r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, OPTIONS, HEAD"),r.header("Access-Control-Expose-Headers","Content-Range, Accept-Ranges, Content-Length, Content-Disposition"),r.header("Content-Type",d.headers.get("content-type")||fO(t));let h=d.headers.get("content-length");h&&r.header("Content-Length",h);let g=d.headers.get("content-range");g&&r.header("Content-Range",g),r.header("Accept-Ranges",d.headers.get("accept-ranges")||"bytes");let p=d.headers.get("etag");p&&r.header("ETag",p);let I=d.headers.get("last-modified");I&&r.header("Last-Modified",I);let y=d.headers.get("cache-control");y&&r.header("Cache-Control",y);let w=d.headers.get("content-disposition");return w&&r.header("Content-Disposition",AO(w)),r.body(d.body,d.status)}function Joe(r,e){if(r.startsWith("/"))return!0;try{let t=new URL(r),i=e.req.header("host")||new URL(e.req.url).host;return t.host===i}catch{return!1}}async function joe(r,e,t,i){if(!e)return"";let n=encodeURI(t.startsWith("/")?t:"/"+t),s=e.includes("$path")?e.replace(/\$path(?!\w)/g,n):e.replace(/\/+$/,"")+n;if(Joe(s,r)&&!tO(i)&&!/[?&]sign=/.test(s))try{if((await zd(r)).enabled){let a=await QA(r,t,await DA(r));a&&(s+=(s.includes("?")?"&":"?")+"sign="+a)}}catch(o){console.warn(`[rawRouter] failed to sign down_proxy_url for '${t}': ${o?.message||o}`)}return s}Es.get("/*",async r=>{await Koe();let e=r.req.query("proxy")==="true"||r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p")||r.req.path.startsWith("/sd")||r.req.path.startsWith("/api/sd"),t=r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p"),i=r.req.path.replace(/^\/(?:api\/)?(?:raw|sd|d|p)(?=\/|$)/,""),n=decodeURIComponent(i);try{let s=n;if(r.req.path.startsWith("/api/sd")||r.req.path.startsWith("/sd")){let u=(r.req.header("Cookie")||"").split(";").map(p=>p.trim()).find(p=>p.startsWith("browser-password="))?.split("=").slice(1).join("=")||"",f;try{f=u?decodeURIComponent(u):""}catch{f=u}let h=r.req.query("pwd")||f,g=await Md(s,h,r.env);if(!g.ok)return r.text(g.error||"Share not found",404);if(g.virtualList||!g.realPath)return r.text("Cannot download share root",400);s=g.realPath}else if(await uN(r,s)){let d=r.req.query("sign")||"";if(!await fN(r,s,d))return r.text("sign verify failed",401)}let a=await tt(s);if(a.isVirtual||!a.physical)return r.text("Cannot download virtual directory path",400);if(a.storage){let d=(a.storage.driver||"").toLowerCase().replace(/[^a-z0-9]/g,""),u=await jn().catch(()=>({})),f=al(u.proxy_types),h=al(u.text_types),g={proxyRange:oN(a.storage),driver:a.storage.driver,storage:a.storage,ignoreHeaders:u.proxy_ignore_headers};if(t&&!Hw({storage:a.storage,driver:d,filename:s,proxyTypes:f,textTypes:h}))return console.warn(`[rawRouter] proxy not allowed for '${s}' (storage=${a.storage.id}, driver=${a.storage.driver})`),r.text("proxy not allowed",403);if(d!=="local")try{let p=yh(a.storage.addition,r.env),I=await lt(a.storage.driver,a.storage),y;try{y=await I.get(s,a.physical)}finally{await Jt(a.storage.driver,a.storage,I,Goe(r))}if(y&&y.raw_url){let w=iO(a.storage,d,e,{filename:s,proxyTypes:f});if(w.mode==="use_proxy_url"){let C=eO(a.storage);if(C){let b=await joe(r,C,s,a.storage);if(b){try{zr(b,"Redirect download",p)}catch(x){return r.text(x.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' to configured proxy url via ${a.storage.driver}`),r.redirect(b,302)}}return console.warn(`[rawRouter] webdav_policy=use_proxy_url but down_proxy_url is empty (storage=${a.storage.id}); falling back to native proxy`),mO(r,y,s,p,g)}if(w.needsProxy)return mO(r,y,s,p,g);try{zr(y.raw_url,"Redirect download",p)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' via ${a.storage.driver}`),r.redirect(y.raw_url,302)}else if(typeof I.createReadStream=="function"&&y&&!y.is_dir){let w=Number(y.size)||0;if(Kw(w,r.req.header("Range"),Cs(r)))return console.warn(`[rawRouter] Refusing to stream '${s}': ${w} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime.`),r.json({code:413,message:Jw(r,a.storage.driver,w),data:null},413);r.header("Access-Control-Allow-Origin","*");let C=y.size||0,b=r.req.header("Range");if(b&&C>0){let{start:x,end:_,chunksize:R}=t0(b,C),U=await I.createReadStream(a.physical,{start:x,end:_});return r.header("Content-Range",`bytes ${x}-${_}/${C}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",R.toString()),r.header("Content-Type","application/octet-stream"),r.body(U,206)}else{C>0&&r.header("Content-Length",C.toString()),r.header("Accept-Ranges","bytes"),r.header("Content-Type","application/octet-stream");let x=await I.createReadStream(a.physical);return r.body(x)}}else{let w=y?.raw_url_error||(y?.is_dir?"\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002":"\u8BE5\u5B58\u50A8\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08raw_url \u4E3A\u7A7A\uFF09\u3002");return r.text(`File not found or no download link available: ${s} -${w}`,404)}}catch(p){return console.error(`[rawRouter] Driver get failed for '${s}':`,p.message),r.text(`Download failed: ${Ne(p)}`,500)}}if(!zw||!Gw)return r.text("Local file streaming not supported in Edge Runtime",500);let c=await zw.stat(a.physical);if(c.isDirectory())return r.text("Cannot download directory",400);if(Kw(Number(c.size)||0,r.req.header("Range"),Cs(r)))return r.json({code:413,message:Jw(r,"local",Number(c.size)||0),data:null},413);r.header("Access-Control-Allow-Origin","*");let l=r.req.header("Range");if(l){let{start:d,end:u,chunksize:f}=t0(l,c.size),h=Gw(a.physical,{start:d,end:u});return r.header("Content-Range",`bytes ${d}-${u}/${c.size}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",f.toString()),r.header("Content-Type","application/octet-stream"),r.body(h,206)}else{r.header("Content-Length",c.size.toString()),r.header("Accept-Ranges","bytes");let d=Gw(a.physical);return r.body(d)}}catch(s){return console.error(`[rawRouter] Download 404 for '${n}':`,s.message),r.text(`Not found: ${Ne(s,"file not found")}`,404)}});wr();Ve();ic();XA();function yO(r){let e=String(r).trim();e=e.replace(/(\w+:\/\/)[^/@\s]+@/g,"$1***@"),e=e.replace(/\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi,"$1=***");let t=160;return e.length>t?e.slice(0,t)+"\u2026":e}var $oe=new Set(["INVALID_COMBINATION","DRIVER_UNAVAILABLE","UNKNOWN_DRIVER","NO_STORAGE","PROXY_CONFIG","DRIVER_ERROR"]);function r0(r){return r&&$oe.has(r)?3:1}function Au(r){if(r==null)return null;let e=String(r).split(` -`).map(t=>t.trim()).find(t=>t.length>0);return e?yO(e):null}function ll(r,e=1){if(r==null)return"unknown error";let t=String(r).split(` -`).map(i=>i.trim()).filter(Boolean).slice(0,Math.max(1,e)).map(yO);return t.length?t.join(" "):"unknown error"}function IO(r){return{reason:r.message?ll(r.message,r0(r.code)):null,suggestion:r.suggestion}}var wo=new Xe,CO="https://doc.oplist.org",i0=`${CO}/ecosystem/official_worker/guide_env`,wO=`${CO}/ecosystem/official_worker/guide`;function xO(r){let e=String(r??"").trim();return e&&e!=="none"?e:null}wo.get("/env_check",async r=>{let e=r.env,t=rh(e),i=ih(e),n=zn(e),s=await Jn(e).catch(I=>({driver:"none",format:"none",available:!1,configError:String(I?.message||I)})),o=String(s?.driver??"none"),a=o==="memory",c=o!=="none"&&o!=="",l=!!s?.configError,d=s?.available!==!1,u=c&&!a&&!l&&d,f=await gh(e).catch(()=>!1),h=[],g={code:null,summary:null,message:null,suggestion:null};if(l){let I=await rc(e,{silent:!0});g={code:I.code,summary:Au(I.message),message:I.message,suggestion:I.suggestion}}if(l&&g.code==="NO_STORAGE")h.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:i0,suggestion:g.suggestion||"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."});else if(l){let I=g.code==="INVALID_COMBINATION",y=ll(g.message||s?.configError,r0(g.code));h.push({code:I?"STORAGE_INVALID_COMBINATION":"STORAGE_CONFIG_ERROR",level:"error",summary:g.summary||(I?"Unsupported storage combination.":"Storage driver is not configured correctly."),message:I?`Unsupported storage combination: ${y}`:`Storage driver is not configured correctly: ${y}`,docUrl:wO,suggestion:g.suggestion})}else a?h.push({code:"STORAGE_MEMORY_ONLY",level:n?"error":"warning",summary:n?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",message:n?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",docUrl:i0,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."}):c||h.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:i0,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."});if(c&&!a&&!l&&!d){let I=`Storage driver "${o}" is configured but not reachable${s.error?": "+ll(s.error):""}.`;h.push({code:"STORAGE_UNHEALTHY",level:"error",summary:I,message:I,docUrl:wO,suggestion:"Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto."})}f||h.push({code:"JWT_SECRET_MISSING",level:n?"error":"warning",summary:"JWT_SECRET is not set.",message:"JWT_SECRET is not set.",docUrl:i0,suggestion:"Set JWT_SECRET (>=32 chars, `openssl rand -hex 32`) in your deployment variables."});let p=u&&f;return r.json({code:200,message:"success",data:{runtime:{serverless:n,platform:s?.platform??null},config:{db_format:i,db_driver:t,resolved_driver:xO(s?.driver),resolved_format:xO(s?.format)},storage:{available:u,configured:s?.configured??null,connected:s?.connected??null,platform:s?.platform??null,memory:a,error_code:g.code,summary:g.summary,error_message:g.message!==null?ll(g.message,r0(g.code)):null,suggestion:g.suggestion},jwt:{ready:f,source:f?"env-or-persisted":"none"},ready:p,issues:h,docUrl:i0}})});wo.get("/settings",async r=>{let e=await ne(r.env),t={title:"OpenList",site_title:"OpenList",version:"v4.2.3",backend:"ts-worker",announcement:"",pagination_type:"pagination",default_page_size:"20",allow_indexed:"false",allow_mounted:"true",robots_txt:`User-agent: * -Allow: /`,logo:"https://res.oplist.org/logo/logo.svg",favicon:"https://res.oplist.org/logo/logo.svg",main_color:"#1890ff",hide_storage_details:"false",hide_storage_details_in_manage_page:"false",customize_head:"",customize_body:"",text_types:"txt,htm,html,xml,java,properties,sql,js,md,json,conf,ini,vue,php,py,bat,gitignore,yml,yaml,toml,Makefile,mk,dockerfile,sh,pub,lock,gradle,ts,tsx,jsx,go,rs,c,cpp,h,cs,rb,swift,kt,dart,r,m,pl,pm,lua,ex,exs",audio_types:"mp3,flac,ogg,m4a,wav,opus,wma,aac,aiff,ape",video_types:"mp4,mkv,avi,mov,rmvb,webm,flv,m3u8,ts,wmv,m2ts,mpg,mpeg,3gp",image_types:"jpg,tiff,jpeg,png,gif,bmp,svg,ico,webp,avif,heic,heif,raw,cr2,nef,arw,dng",proxy_types:"",proxy_ignore_headers:"",audio_autoplay:"false",video_autoplay:"false",readme_autorender:"true",filter_readme_scripts:"true",preview_download_by_default:"false",preview_archives_by_default:"false",share_preview_download_by_default:"false",share_preview_archives_by_default:"false",share_preview:"true",share_archive_preview:"true",hide_files:"/\\.DS_Store/i",link_expiration:"0",sign_all:"false",filename_char_mapping:"{}",forward_direct_link_params:"false",ignore_direct_link_params:"",package_download:"true",offline_download:"true",ocr_api:"",privacy_regs:"",iframe_previews:"{}",external_previews:"{}",check_down_link:"false",check_update:"false",allow_guest:"true",webauthn_login_enabled:"false",sso_login_enabled:"false",sso_compatibility_mode:"false",ldap_login_enabled:"false",show_disk_usage_in_plain_text:"false",non_efs_zip_encoding:"UTF-8"},i=new Set([...Object.keys(t),"audio_cover","home_container","ldap_login_tips","search_index","settings_layout","share_icon","share_summary_content","sso_login_platform"]),n=/(secret|password|passwd|pwd|cookie|token|credential|private[_-]?key|api[_-]?key|access[_-]?key|jwt|salt|signature|webhook)/i;e.settings.forEach(a=>{if(a.key&&a.value!==void 0){if(!i.has(a.key)||n.test(a.key))return;t[a.key]=a.value,a.key==="site_title"&&(t.title=a.value)}});let s=(e.users||[]).find(a=>a.username==="guest");return!!!(s&&!s.disabled)||t.allow_guest==="false"?t.allow_guest="false":t.allow_guest="true",r.json({code:200,message:"success",data:t})});wo.get("/archive_extensions",r=>r.json({code:200,message:"success",data:["zip","rar","7z","tar","gz","bz2","xz","tar.gz","tar.bz2","tar.xz"]}));wo.get("/offline_download_tools",r=>r.json({code:200,message:"success",data:[]}));wo.get("/plugins",async r=>{let i=((await ne(r.env)).plugins||[]).filter(n=>n.enabled);return r.json({code:200,message:"success",data:i})});function Voe(r){let e=r?.ADMIN_PASS,t=typeof process<"u"?process.env?.ADMIN_PASS:"";return String(e||t||"").trim()!==""}wo.get("/init_status",async r=>{let e=await Xx(r.env),t=!1;if(e){if(Voe(r.env))try{let{getOrInitUsers:l}=await Promise.resolve().then(()=>(sl(),$q));await l(r.env)}catch(l){console.warn("[DB] init_status: ADMIN_PASS auto-initialization failed: "+(l?.message||l))}let c=((await ne(r.env)).users||[]).find(l=>l.role===2);t=!!(c&&String(c.password||"").trim()!=="")}let i=t?await gh(r.env):!1,n=null,s=null;if(!e){let a=await rc(r.env,{silent:!0});n=Au(a.message),s=a.suggestion}let o=Ah();return r.json({code:200,message:"success",data:{initialized:t,ready:i,db_trusted:nC(),storage_error:n,storage_suggestion:s,db_load_error:o?ll(o,1):null}})});wo.post("/init/setup",async r=>{let e=await r.req.json().catch(()=>({})),t=String(e.username||"admin").trim(),i=String(e.password||"").trim(),n=String(e.site_title||"").trim();if(!t)return r.json({code:400,message:"username is required",data:null},400);if(!i)return r.json({code:400,message:"password is required",data:null},400);if(i.length<4)return r.json({code:400,message:"password must be at least 4 characters",data:null},400);let s=await ne(r.env);s.users||(s.users=[]);let o=Ah();if(o){console.error("[DB] init/setup rejected: database could not be loaded from the persistence backend: "+o);let c=await rc(r.env,{silent:!0}),l=c.code||"STORAGE_READ_FAILED";return r.json({code:500,message:"database is not readable; refusing to initialize to avoid overwriting existing config",data:{code:l,summary:Au(o),reason:ll(o,r0(l)),suggestion:c.suggestion}},500)}let a=s.users.find(c=>c.role===2);if(a&&String(a.password||"").trim()!=="")return r.json({code:400,message:"system has already been initialized",data:null},400);if(await aC(r.env),a)a.username=t,await Fi(a,i);else{let c={id:1,username:t,password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await Fi(c,i),s.users.push(c)}if(n){s.settings||(s.settings=[]);let c=s.settings.find(l=>l.key==="site_title");c?c.value=n:s.settings.push({key:"site_title",value:n,type:"string",help:"Site Title",group:1,flag:0})}return await fe(s,r.env,{force:!0}),r.json({code:200,message:"success",data:null})});wr();function Yoe(){return[{name:"list_files",description:"List files and directories in OpenList storage",inputSchema:{type:"object",properties:{path:{type:"string",description:"Storage mount path"}}}},{name:"get_system_info",description:"Fetch server hardware and storage metrics",inputSchema:{type:"object",properties:{}}}]}function Woe(){return[{uri:"openlist://storage/metrics",name:"Storage Metrics",mimeType:"application/json",description:"Current storage metrics of OpenList"}]}function Xoe(){return[{name:"summarize_directory",description:"Prompt to summarize contents of a folder",arguments:[{name:"path",description:"The folder path",required:!0}]}]}async function Zoe(r,e,t,i){try{if(e==="list_files"){let{listItems:n}=await Promise.resolve().then(()=>(Yt(),qi)),s=t?.path||"/",{content:o,provider:a}=await n(s),c=o.map(l=>({name:l.name,size:l.size,is_dir:l.is_dir,modified:l.modified}));return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({path:s,provider:a,files:c},null,2)}],isError:!1},id:r}}if(e==="get_system_info"){let{getDb:n}=await Promise.resolve().then(()=>(Ve(),Gr)),s=await n(i);return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({storages:s?.storages?.length??0,users:s?.users?.length??0,metas:s?.metas?.length??0,shares:s?.shares?.length??0},null,2)}],isError:!1},id:r}}return{jsonrpc:"2.0",error:{code:-32602,message:`Unknown tool: ${e}`},id:r}}catch(n){return{jsonrpc:"2.0",result:{content:[{type:"text",text:String(n?.message||n)}],isError:!0},id:r}}}async function EO(r,e,t,i){switch(r){case"tools/list":return{jsonrpc:"2.0",result:{tools:Yoe()},id:e};case"tools/call":{let n=t?.name,s=t?.arguments||{};return n?Zoe(e,n,s,i):{jsonrpc:"2.0",error:{code:-32602,message:"Missing tool name"},id:e}}case"resources/list":return{jsonrpc:"2.0",result:{resources:Woe()},id:e};case"prompts/list":return{jsonrpc:"2.0",result:{prompts:Xoe()},id:e};default:return{jsonrpc:"2.0",error:{code:-32601,message:"Method not found"},id:e}}}Qi();var n0=new Xe;n0.use("*",_i);n0.get("/sse",r=>(r.header("Content-Type","text/event-stream"),r.header("Cache-Control","no-cache"),r.header("Connection","keep-alive"),r.text(`event: endpoint +Up`,required:!1},{name:"modified_time_format",type:"string",default:"02-Jan-2006 15:04",required:!1}],config:{name:"AutoIndex",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},ProtonDrive:{name:"ProtonDrive",default_mount_path:"/proton",common:[...Ht,Kt,Gt,zt,...Jt("ProtonDrive"),jt,dr],additional:[{name:"email",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u90AE\u7BB1"},{name:"password",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u5BC6\u7801"},{name:"two_fa_code",type:"string",default:"",required:!1,help:"\u4E24\u6B65\u9A8C\u8BC1\u7801\uFF08\u5982\u5DF2\u542F\u7528 2FA\uFF09"},{name:"root_folder_id",type:"string",default:"root",required:!1,help:"\u6839\u6587\u4EF6\u5939 LinkID\uFF0C\u9ED8\u8BA4 root \u8868\u793A\u4E3B\u5171\u4EAB\u6839\u76EE\u5F55"},{name:"chunk_size",type:"number",default:"4",required:!1,help:"\u5206\u5757\u5927\u5C0F\uFF08MB\uFF09"},{name:"use_reusable_login",type:"bool",default:"true",required:!1}],config:{name:"ProtonDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}}};qe.get("/driver/list",r=>r.json({code:200,message:"success",data:Sf}));qe.get("/driver/info",r=>{let e=r.req.query("driver")||"",t=Sf[e]||Sf.AliyundriveOpen;return r.json({code:200,message:"success",data:t})});qe.get("/setting/list",async r=>{let e=await ne(r.env),t=r.req.query("group"),i=r.req.query("groups"),n=e.settings||[];if(t!==void 0){let s=parseInt(t,10);n=n.filter(a=>a.group===s)}else if(i!==void 0){let s=i.split(",").map(a=>parseInt(a,10));n=n.filter(a=>s.includes(a.group))}return r.json({code:200,message:"success",data:n})});qe.post("/setting/save",async r=>{let e=await r.req.json().catch(()=>[]);if(!Array.isArray(e))return r.json({code:400,message:"body must be an array",data:null});let t=await ne(r.env);t.settings||(t.settings=[]);for(let n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;let s=n.key;if(typeof s!="string"||s.length===0||s.length>128)continue;let a=n.value;a!==null&&typeof a=="object"&&(a=JSON.stringify(a));let o=t.settings.findIndex(c=>c.key===s);o!==-1?(t.settings[o].value=a,typeof n.group=="number"&&(t.settings[o].group=n.group)):t.settings.push({key:s,value:a,type:typeof n.type=="string"?n.type:"string",help:typeof n.help=="string"?n.help:"",group:typeof n.group=="number"?n.group:0,flag:typeof n.flag=="number"?n.flag:0})}let i=new Set;return t.settings=t.settings.filter(n=>!n.key||i.has(n.key)?!1:(i.add(n.key),!0)),await he(t,r.env),r.json({code:200,message:"success",data:null})});qe.post("/setting/default",async r=>{let e=r.req.query("group");if(e===void 0)return r.json({code:400,message:"group is required",data:null});let t=parseInt(e,10),i=await ne(r.env);i.settings=(i.settings||[]).filter(a=>a.group!==t);let n=Vc.settings.filter(a=>a.group===t),s=new Set(n.map(a=>a.key));return i.settings=i.settings.filter(a=>!s.has(a.key)),i.settings.push(...JSON.parse(JSON.stringify(n))),await he(i,r.env),r.json({code:200,message:"success",data:n})});qe.post("/setting/delete",async r=>{let e=r.req.query("key");if(!e)return r.json({code:400,message:"key is required",data:null});let t=await ne(r.env);return t.settings=(t.settings||[]).filter(i=>i.key!==e),await he(t,r.env),r.json({code:200,message:"success",data:null})});var Xa=async(r,e,t=14)=>{let i=await ne(r);i.settings||(i.settings=[]);for(let[n,s]of Object.entries(e)){if(s===void 0)continue;let a=i.settings.findIndex(o=>o.key===n);a!==-1?i.settings[a].value=s:i.settings.push({key:n,value:s,type:"string",help:n,group:t,flag:0})}await he(i,r)};qe.post("/setting/set_115",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{"115_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_115_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{"115_open_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_123_pan",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{"123_pan_temp_dir":e.temp_dir||"","123_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_123_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{"123_open_temp_dir":e.temp_dir||"","123_open_callback_url":e.callback_url||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_pikpak",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{pikpak_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_thunder",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{thunder_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_thunder_browser",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{thunder_browser_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/set_thunderx",async r=>{let e=await r.req.json().catch(()=>({}));return await Xa(r.env,{thunderx_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});qe.post("/setting/reset_token",async r=>{let e=Nue(32);await Xa(r.env,{token:e});let{resetJwtSecretCache:t}=await Promise.resolve().then(()=>(zi(),Fx));return t(),r.json({code:200,message:"success",data:e})});qe.get("/meta/list",async r=>{let t=(await ne(r.env)).metas||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qe.get("/meta/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=((await ne(r.env)).metas||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"meta not found",data:null})});qe.post("/meta/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i="/"+String(e.path||"").split("/").filter(Boolean).join("/");if(!i||i==="/")return r.json({code:400,message:"path is required",data:null});if(t.metas.some(a=>a.path===i))return r.json({code:400,message:"meta already exists",data:null});let n=String(e.hide||"");if(n){let a=wv(n);if(a)return r.json({code:400,message:`invalid hide regex: ${a}`,data:null},400)}let s={id:t.metas.length?Math.max(...t.metas.map(a=>a.id))+1:1,path:i,password:e.password||"",read_users:e.read_users||[],read_users_sub:!!e.read_users_sub,write_users:e.write_users||[],write_users_sub:!!e.write_users_sub,p_sub:!!e.p_sub,write:!!e.write,w_sub:!!e.w_sub,hide:n,h_sub:!!e.h_sub,readme:e.readme||"",r_sub:!!e.r_sub,header:e.header||"",header_sub:!!e.header_sub};return t.metas.push(s),await he(t,r.env),r.json({code:200,message:"success",data:s})});qe.post("/meta/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i=t.metas.findIndex(a=>a.id===e.id);if(i===-1)return r.json({code:404,message:"meta not found",data:null});let n=e.path!==void 0?"/"+String(e.path).split("/").filter(Boolean).join("/"):t.metas[i].path;if(n&&t.metas.some(a=>a.path===n&&a.id!==e.id))return r.json({code:400,message:"meta already exists",data:null});let s=e.hide!==void 0?String(e.hide):t.metas[i].hide;if(s){let a=wv(s);if(a)return r.json({code:400,message:`invalid hide regex: ${a}`,data:null},400)}return t.metas[i]={...t.metas[i],...n?{path:n}:{},password:e.password!==void 0?e.password:t.metas[i].password,read_users:e.read_users!==void 0?e.read_users:t.metas[i].read_users,read_users_sub:e.read_users_sub!==void 0?!!e.read_users_sub:t.metas[i].read_users_sub,write_users:e.write_users!==void 0?e.write_users:t.metas[i].write_users,write_users_sub:e.write_users_sub!==void 0?!!e.write_users_sub:t.metas[i].write_users_sub,p_sub:e.p_sub!==void 0?!!e.p_sub:t.metas[i].p_sub,write:e.write!==void 0?!!e.write:t.metas[i].write,w_sub:e.w_sub!==void 0?!!e.w_sub:t.metas[i].w_sub,hide:e.hide!==void 0?e.hide:t.metas[i].hide,h_sub:e.h_sub!==void 0?!!e.h_sub:t.metas[i].h_sub,readme:e.readme!==void 0?e.readme:t.metas[i].readme,r_sub:e.r_sub!==void 0?!!e.r_sub:t.metas[i].r_sub,header:e.header!==void 0?e.header:t.metas[i].header,header_sub:e.header_sub!==void 0?!!e.header_sub:t.metas[i].header_sub},await he(t,r.env),r.json({code:200,message:"success",data:null})});qe.post("/meta/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.metas||(t.metas=[]),t.metas=t.metas.filter(i=>i.id!==e),await he(t,r.env),r.json({code:200,message:"success",data:null})});qe.route("/user",as);qe.get("/kv/status",async r=>{let[e,t]=await Promise.all([Qd(r.env),gs(r.env)]);return r.json({code:200,message:"success",data:{...e,store:t}})});function b0(r){let e=r.search_index||{};return{obj_count:e.total??0,is_done:e.is_done!==!1,last_done_time:e.updated_at||null,error:e.error||""}}qe.post("/index/build",async r=>{try{let e=await ne(r.env),t=await Zu({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.search_index={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await he(e,r.env),r.json({code:200,message:"success",data:b0(e)})}catch(e){return r.json({code:500,message:Le(e),data:null},500)}});qe.post("/index/update",async r=>{try{let e=await r.req.json().catch(()=>({})),t=Array.isArray(e.paths)?e.paths:["/"],i=Math.min(20,Math.max(0,Number(e.max_depth)||20)),n=await ne(r.env),a=(n.search_index?.items||[]).filter(c=>!t.some(l=>(c.parent||"/").startsWith(l))),o=await Zu({parent:"/",keywords:"",max_depth:i,max_results:2e3},r.env);return n.search_index={items:[...a,...o.content],total:a.length+o.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await he(n,r.env),r.json({code:200,message:"success",data:b0(n)})}catch(e){return r.json({code:500,message:Le(e),data:null},500)}});qe.post("/index/stop",async r=>{let e=await ne(r.env);return e.search_index&&(e.search_index.is_done=!0),await he(e,r.env),r.json({code:200,message:"success",data:b0(e)})});qe.post("/index/clear",async r=>{let e=await ne(r.env);return e.search_index={items:[],total:0,is_done:!0,updated_at:new Date().toISOString(),error:""},await he(e,r.env),r.json({code:200,message:"success",data:b0(e)})});qe.get("/index/progress",async r=>{let e=await ne(r.env);return r.json({code:200,message:"success",data:b0(e)})});qe.post("/scan/start",async r=>{try{let e=await ne(r.env),t=await Zu({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.scan_result={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await he(e,r.env),r.json({code:200,message:"success",data:{obj_count:t.total,is_done:!0,last_done_time:e.scan_result.updated_at,error:""}})}catch(e){return r.json({code:500,message:Le(e),data:null},500)}});qe.post("/scan/stop",async r=>r.json({code:200,message:"success",data:{obj_count:0,is_done:!0,last_done_time:null,error:""}}));qe.get("/scan/progress",async r=>{let t=(await ne(r.env)).scan_result||{};return r.json({code:200,message:"success",data:{obj_count:t.total??0,is_done:t.is_done!==!1,last_done_time:t.updated_at||null,error:t.error||""}})});function dS(r){if(r&&typeof r=="object"){if(Object.prototype.hasOwnProperty.call(r,"manifest"))return r.manifest;if(r.apiVersion!==void 0)return r}}function uS(r){if(!r||typeof r!="object")return{};let e={...r};return delete e.manifest,delete e.apiVersion,delete e.displayName,delete e.capabilities,delete e.settingsSchema,delete e.entry,e}function $s(r){return String(r||"").toLowerCase()}function Df(r){return typeof r=="string"&&r.trim().length>0&&Array.from(r).length<=255&&!/[\u0000-\u001f\u007f]/.test(r)}function v0(r){return _d(r.env)!=="key"?null:r.json({code:409,message:"Plugin writes require atomic persistence; DB_FORMAT=key is not supported",data:{code:"ATOMIC_PLUGIN_PERSISTENCE_UNSUPPORTED",suggestion:"Use DB_FORMAT=map or DB_FORMAT=sql"}},409)}function k0(r,e){return{...r,plugins:e}}var FC=Promise.resolve();async function que(r){let e=FC,t=()=>{},i=new Promise(s=>{t=s}),n=e.catch(()=>{}).then(()=>i);FC=n,await e.catch(()=>{});try{return await r()}finally{t(),FC===n&&(FC=Promise.resolve())}}function S0(r){return e=>que(()=>r(e))}async function D0(r,e={}){let t;try{t=await r.req.json()}catch{throw new pt("request body must be valid JSON")}if(!t||typeof t!="object"||Array.isArray(t)&&!e.allowArray)throw new pt("request body must be a JSON object");return t}async function Mue(r){if(Number(r.headers.get("content-length")||0)>_C)throw await r.body?.cancel().catch(()=>{}),new pt("manifest URL response is too large");if(!r.body)return"";let t=r.body.getReader(),i=[],n=0;try{for(;;){let{done:o,value:c}=await t.read();if(o)break;if(n+=c.byteLength,n>_C)throw new pt("manifest URL response is too large");i.push(c)}}catch(o){throw await t.cancel().catch(()=>{}),o}let s=new Uint8Array(n),a=0;for(let o of i)s.set(o,a),a+=o.byteLength;return new TextDecoder().decode(s)}async function Lue(r,e){let t,i;try{t=new URL(e);let a=String(r?.PLUGIN_MANIFEST_ORIGIN||(typeof process<"u"?process.env?.PLUGIN_MANIFEST_ORIGIN:"")||"").trim();if(!a)throw new pt("PLUGIN_MANIFEST_ORIGIN is required for manifest_url installs");i=new URL(a)}catch(a){throw a instanceof pt?a:new pt("manifest_url or trusted origin is invalid")}if(!["http:","https:"].includes(t.protocol))throw new pt("manifest_url must use HTTP or HTTPS");if(t.origin!==i.origin)throw new pt("manifest_url must match PLUGIN_MANIFEST_ORIGIN");if(t.username||t.password)throw new pt("manifest_url must not contain credentials");let n=new AbortController,s=setTimeout(()=>n.abort(),5e3);try{let a=await fetch(t.href,{redirect:"error",signal:n.signal});if(!a.ok)throw await a.body?.cancel().catch(()=>{}),new pt(`Failed to fetch plugin manifest from URL: HTTP ${a.status}`);let o=await Mue(a);try{return JSON.parse(o)}catch{throw new pt("manifest_url did not return valid JSON")}}catch(a){throw a instanceof pt?a:new pt(`Network error fetching plugin manifest: ${Le(a,"request failed")}`)}finally{clearTimeout(s)}}function _0(r,e,t){return e instanceof pt?r.json({code:400,message:e.message,data:{code:e.code}},400):r.json({code:503,message:e?.message||t,data:null},503)}qe.get("/plugin/list",async r=>{let e=await Kn(r.env),t=Array.isArray(e.plugins)?e.plugins:[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qe.get("/plugin/get",async r=>{let e=r.req.query("id");if(!Df(e))return r.json({code:400,message:"id is invalid",data:null},400);let t=await Kn(r.env),n=(Array.isArray(t.plugins)?t.plugins:[]).find(s=>$s(s.id)===$s(e));return n?r.json({code:200,message:"success",data:n}):r.json({code:404,message:"Plugin not found",data:null})});qe.post("/plugin/install",S0(async r=>{try{let e=v0(r);if(e)return e;let t=await D0(r),i=t;if(t.manifest_url&&typeof t.manifest_url=="string"){let I=await Lue(r.env,t.manifest_url);i={...t,manifest:I}}let n=dS(i),s=n===void 0?null:B0(n),a=uS(i),o=s?.id||a.id,c=s?.displayName||a.name;if(!s&&!Df(o))return r.json({code:400,message:"Plugin id is invalid",data:null},400);if(!o||!c)return r.json({code:400,message:"Plugin id and name are required",data:null},400);let l=await Kn(r.env),d=Array.isArray(l.plugins)?l.plugins:[],u=d.findIndex(I=>$s(I.id)===$s(o)),f=u>=0?d[u]:{},A=new Date().toISOString(),g={...f,id:o,name:c,version:a.version??f.version??"1.0.0",description:a.description??f.description??"",author:a.author??f.author??"Unknown",homepage:a.homepage??f.homepage??"",repository:a.repository??f.repository??"",icon:a.icon??f.icon??"",type:a.type??f.type??"ui",enabled:!!(a.enabled??f.enabled??!0),high_privilege:!!(a.high_privilege??f.high_privilege??!1),permissions:Array.isArray(a.permissions)?a.permissions:Array.isArray(f.permissions)?f.permissions:[],entry_url:a.entry_url??f.entry_url??"",script_content:a.script_content??f.script_content??"",style_content:a.style_content??f.style_content??"",config_schema:a.config_schema??f.config_schema??[],config_values:a.config_values??a.default_config??f.config_values??{},target_hooks:a.target_hooks??f.target_hooks??["global"],is_builtin:!!(a.is_builtin??f.is_builtin??!1),tags:a.tags??f.tags??[],created_at:f.created_at??A,updated_at:A};s?g=QC(g,s):delete g.manifest;let p=d.slice();return u>=0?p[u]=g:p.push(g),await he(k0(l,p),r.env,{publishOnSuccess:!0})?r.json({code:200,message:"Plugin installed successfully",data:g}):r.json({code:503,message:"Failed to persist plugin",data:null},503)}catch(e){return _0(r,e,"Failed to install plugin")}}));qe.post("/plugin/update",S0(async r=>{try{let e=v0(r);if(e)return e;let t=await D0(r);if(!Df(t.id))return r.json({code:400,message:"Plugin id is required",data:null},400);let i=await Kn(r.env),n=Array.isArray(i.plugins)?i.plugins:[],s=n.findIndex(d=>$s(d.id)===$s(t.id));if(s===-1)return r.json({code:404,message:"Plugin not found",data:null},404);let a=n[s],o={...a,...uS(t),id:a.id,updated_at:new Date().toISOString()},c=dS(t);c!==void 0&&(o=QC(o,c));let l=n.slice();return l[s]=o,await he(k0(i,l),r.env,{publishOnSuccess:!0})?r.json({code:200,message:"Plugin updated successfully",data:o}):r.json({code:503,message:"Failed to persist plugin",data:null},503)}catch(e){return _0(r,e,"Failed to update plugin")}}));qe.post("/plugin/toggle",S0(async r=>{try{let e=v0(r);if(e)return e;let t=await D0(r);if(!Df(t.id))return r.json({code:400,message:"Plugin id is required",data:null},400);let i=await Kn(r.env),n=Array.isArray(i.plugins)?i.plugins:[],s=n.findIndex(l=>$s(l.id)===$s(t.id));if(s===-1)return r.json({code:404,message:"Plugin not found",data:null},404);let a=n[s],o=t.enabled!==void 0?!!t.enabled:!a.enabled,c=n.slice();return c[s]={...a,enabled:o,updated_at:new Date().toISOString()},await he(k0(i,c),r.env,{publishOnSuccess:!0})?r.json({code:200,message:o?"Plugin enabled":"Plugin disabled",data:{id:t.id,enabled:o}}):r.json({code:503,message:"Failed to persist plugin",data:null},503)}catch(e){return _0(r,e,"Failed to toggle plugin")}}));qe.post("/plugin/delete",S0(async r=>{try{let e=v0(r);if(e)return e;let i=r.req.query("id");if(i||(i=(await D0(r))?.id),!Df(i))return r.json({code:400,message:"Plugin id is invalid",data:null},400);let n=await Kn(r.env),s=Array.isArray(n.plugins)?n.plugins:[],a=s.filter(o=>$s(o.id)!==$s(i));return a.length===s.length?r.json({code:404,message:"Plugin not found",data:null},404):await he(k0(n,a),r.env,{publishOnSuccess:!0})?r.json({code:200,message:"Plugin deleted successfully",data:null}):r.json({code:503,message:"Failed to persist plugin",data:null},503)}catch(e){return _0(r,e,"Failed to delete plugin")}}));qe.post("/plugin/batch_save",S0(async r=>{try{let e=v0(r);if(e)return e;let t=await D0(r,{allowArray:!0}),i=Array.isArray(t)?t:t?.plugins;if(!Array.isArray(i))return r.json({code:400,message:"plugins array is required",data:null},400);let n=new Set,s=i.map(o=>{let c=dS(o),l=uS(o),d=l;if(c!==void 0){let f=B0(c);d=QC({...l,id:f.id},f)}if(!Df(d.id))throw new pt("every plugin requires a valid id");let u=d.id.toLowerCase();if(n.has(u))throw new pt(`duplicate plugin id: ${d.id}`);return n.add(u),d}),a=await Kn(r.env);return await he(k0(a,s),r.env,{publishOnSuccess:!0})?r.json({code:200,message:"Plugins saved successfully",data:{count:s.length}}):r.json({code:503,message:"Failed to persist plugins",data:null},503)}catch(e){return _0(r,e,"Failed to batch save plugins")}}));var sH=[];qe.post("/message/send",async r=>{let t=(await r.req.json().catch(()=>({})))?.message;return t==null||t===""?r.json({code:400,message:"message is required",data:null},400):(sH.push(String(t)),r.json({code:200,message:"success",data:null}))});qe.post("/message/get",r=>{let e=sH.shift();return e===void 0?r.json({code:404,message:"no message",data:null},404):r.json({code:200,message:"success",data:e})});qe.get("/audit/logs",async r=>{try{let{queryAuditLogs:e}=await Promise.resolve().then(()=>(YA(),VA)),t=r.req.query("username"),i=r.req.query("action"),n=r.req.query("method"),s=r.req.query("status"),a=r.req.query("start_date"),o=r.req.query("end_date"),c=parseInt(r.req.query("limit")||"100",10),l=e({username:t,action:i,method:n,status:s,startDate:a,endDate:o,limit:Math.min(c,1e3)});return r.json({code:200,message:"success",data:{content:l,total:l.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to query audit logs",data:null},500)}});qe.get("/audit/stats",async r=>{try{let{getAuditStats:e}=await Promise.resolve().then(()=>(YA(),VA)),t=e();return r.json({code:200,message:"success",data:t})}catch(e){return r.json({code:500,message:e.message||"Failed to get audit stats",data:null},500)}});qe.post("/audit/cleanup",async r=>{try{let e=await r.req.json().catch(()=>({})),t=parseInt(e.retention_days||"30",10),{cleanupExpiredLogs:i}=await Promise.resolve().then(()=>(YA(),VA));return i(t),r.json({code:200,message:`Cleaned up logs older than ${t} days`,data:null})}catch(e){return r.json({code:500,message:e.message||"Failed to cleanup logs",data:null},500)}});Fr();nt();nt();function Q0(r,e){let t=r.replace(/bytes=/,"").split("-"),i=parseInt(t[0],10),n=t[1]?parseInt(t[1],10):e-1,s=n-i+1;return{start:i,end:n,chunksize:s}}ar();gc();Pd();el();dh();lh();dh();var Hue="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";function aH(r){let e=Kue(r.ignoreHeaders),t={...r.rawUrlHeaders||{}};return!t["User-Agent"]&&!e.has("user-agent")&&(t["User-Agent"]=Hue),r.proxyRange&&r.rangeHeader&&!e.has("range")&&(t.Range=r.rangeHeader),t}function Kue(r){let e=Array.isArray(r)?r.join(","):r;return new Set(String(e??"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean))}function oH(r,e){return r.Range?e.status===412||e.status===200&&!e.headers.get("content-range"):!1}var Gue={pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",flac:"audio/flac",m3u8:"application/vnd.apple.mpegurl",ts:"video/mp2t",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml"};function cH(r){let e=r.split(".").pop()?.toLowerCase()||"";return Gue[e]||"application/octet-stream"}function lH(r){return r.replace(/[\r\n\u0000-\u001f]+/g,"")}var zue=6*1024*1024,Jue=(r,e)=>{let i=(r?.env||{})[e];if(i!=null)return String(i);if(typeof process<"u"&&process.env){let n=process.env[e];if(n!=null)return String(n)}return""};function jue(r){let e=typeof globalThis<"u"?globalThis:{},t=r?.env||{},i=typeof process<"u"?process.env||{}:{};return!!(t.EDGEONE||t.EO_REGION||t.EDGEONE_BLOB||e.EDGEONE_BLOB||typeof e.EdgeOne<"u"||t.TENCENTCLOUD_SCF_FUNCTIONNAME||i.TENCENTCLOUD_SCF_FUNCTIONNAME)}function Vs(r){let e=Jue(r,"RAW_PROXY_MAX_BYTES").trim();if(e!==""){let t=parseInt(e,10);if(Number.isFinite(t)&&t>=0)return t}return jue(r)?zue:0}function PC(r,e,t){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return!1;if(e)try{return Q0(e,r).chunksize>t}catch{return!1}return r>t}var $ue=new Set(["authorization","cookie"]);function Vue(r){return r?Object.keys(r).some(e=>$ue.has(e.trim().toLowerCase())):!1}function dH(r,e,t){return Up(t,r)||Vue(e)}function uH(r){if(!r)return 0;let e=parseInt(r.get("content-length")||"",10);if(Number.isFinite(e)&&e>0)return e;let t=r.get("content-range")||"",i=/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i.exec(t);if(i){let n=parseInt(i[1],10),s=parseInt(i[2],10);if(Number.isFinite(n)&&Number.isFinite(s)&&s>=n)return s-n+1}return 0}function fS(r){return PC(r.size,r.range,r.payloadLimit)?r.authBound?"too-large":"redirect":"proxy"}var UC=null,TC=null;async function Yue(){if(typeof process<"u"&&process.release?.name==="node"&&!UC)try{UC=await import("fs/promises"),TC=(await import("fs")).createReadStream}catch{}}var Ys=new at,Wue=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t)}}catch{return}},Xue=new Set(["range","user-agent","accept","accept-language","referer"]);async function fH(r,e,t){let n=r,s=e;for(let a=0;a<5;a++){try{ni(n,"Proxy download",t)}catch(l){throw new Error(l?.message||"SSRF blocked: restricted destination")}let o=await fetch(n,{headers:s,redirect:"manual"}),c=o.headers.get("location");if(o.status>=300&&o.status<400&&c){n=new URL(c,n).toString();let l={};for(let[d,u]of Object.entries(s))Xue.has(d.toLowerCase())&&u&&(l[d]=u);s=l;continue}return o}throw new Error("Proxy download blocked: too many redirects")}function RC(r,e,t){let i=Vs(r);return`\u6587\u4EF6\u8FC7\u5927\uFF0C\u5F53\u524D\u90E8\u7F72\u5E73\u53F0\u65E0\u6CD5\u4EE3\u7406\u4E0B\u8F7D\uFF08${t} \u5B57\u8282 > \u4E0A\u9650 ${i} \u5B57\u8282 \u2248 ${(s=>Math.floor(s/1024/1024))(i)} MiB\uFF09\u3002\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u5BF9\u51FD\u6570\u5355\u6B21\u8BF7\u6C42/\u54CD\u5E94 body \u6709\u786C\u4E0A\u9650\uFF08EdgeOne \u4E91\u51FD\u6570\u4E3A 6 MiB\uFF0C\u9519\u8BEF\u7801 CLOUD_FUNCTION_PAYLOAD_TOO_LARGE / HTTP 413\uFF09\uFF0C${e} \u65E0\u6CD5\u63D0\u4F9B\u53EF\u76F4\u8FDE\u7684\u4E0B\u8F7D\u94FE\u63A5\uFF08\u6216\u76F4\u94FE\u5FC5\u987B\u643A\u5E26\u79C1\u6709\u9274\u6743\u5934\uFF09\uFF0C\u53EA\u80FD\u7ECF\u670D\u52A1\u7AEF\u8F6C\u53D1\uFF0C\u56E0\u6B64\u65E0\u6CD5\u7ED5\u8FC7\u8BE5\u4E0A\u9650\u3002\u5EFA\u8BAE\uFF1A\u6539\u7528\u8FD4\u56DE\u516C\u5F00\u76F4\u94FE\u7684\u5B58\u50A8\u3001\u6216\u5728\u81EA\u6258\u7BA1\u73AF\u5883\uFF08Docker / Node\uFF09\u90E8\u7F72\uFF1B\u786E\u9700\u653E\u5F00\u9650\u5236\u53EF\u8BBE\u7F6E RAW_PROXY_MAX_BYTES=0\uFF08\u6216\u6309\u5E73\u53F0\u5B9E\u9645\u4E0A\u9650\u8C03\u6574\u8BE5\u503C\uFF09\u3002`}async function hH(r,e,t,i,n={}){let s=n.proxyRange??!1,a=n.driver??"",o=dH(a,e.raw_url_headers,n.storage),c=fS({size:Number(e.size)||0,range:s?r.req.header("Range"):void 0,payloadLimit:Vs(r),authBound:o});if(c==="redirect"){try{ni(e.raw_url,"Redirect download",i)}catch(B){return r.text(B.message||"SSRF blocked",403)}return console.warn(`[rawRouter] Falling back to 302 direct link for '${t}': ${e.size} bytes exceeds the ${Vs(r)}-byte payload limit of this runtime \u2014 native proxy would hit CLOUD_FUNCTION_PAYLOAD_TOO_LARGE`),r.redirect(e.raw_url,302)}if(c==="too-large")return console.warn(`[rawRouter] Refusing to proxy '${t}': ${e.size} bytes exceeds the ${Vs(r)}-byte payload limit of this runtime and no direct link can be handed to the browser (driver=${a}, authBound=${o})`),r.json({code:413,message:RC(r,a||"\u8BE5\u5B58\u50A8",Number(e.size)||0),data:null},413);let l=aH({rawUrlHeaders:e.raw_url_headers,rangeHeader:r.req.header("Range"),proxyRange:s,ignoreHeaders:n.ignoreHeaders}),d;try{d=await fH(e.raw_url,l,i)}catch(B){return r.text(B.message||"SSRF blocked",403)}oH(l,d)&&(console.warn(`[rawRouter] Upstream ignored/refused Range (status=${d.status}) for '${t}', retrying without Range header...`),delete l.Range,d=await fH(e.raw_url,l,i));let u=uH(d.headers),f=fS({size:u,payloadLimit:Vs(r),authBound:o});if(f!=="proxy"){try{await d.body?.cancel()}catch{}if(console.warn(`[rawRouter] Upstream body is ${u} bytes after Range negotiation (status=${d.status}) for '${t}', which exceeds the ${Vs(r)}-byte payload limit of this runtime \u2014 refusing to stream it (decision=${f}).`),f==="redirect"){try{ni(e.raw_url,"Redirect download",i)}catch(B){return r.text(B.message||"SSRF blocked",403)}return r.redirect(e.raw_url,302)}return r.json({code:413,message:RC(r,a||"\u8BE5\u5B58\u50A8",u),data:null},413)}r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, OPTIONS, HEAD"),r.header("Access-Control-Expose-Headers","Content-Range, Accept-Ranges, Content-Length, Content-Disposition"),r.header("Content-Type",d.headers.get("content-type")||cH(t));let A=d.headers.get("content-length");A&&r.header("Content-Length",A);let g=d.headers.get("content-range");g&&r.header("Content-Range",g),r.header("Accept-Ranges",d.headers.get("accept-ranges")||"bytes");let p=d.headers.get("etag");p&&r.header("ETag",p);let I=d.headers.get("last-modified");I&&r.header("Last-Modified",I);let m=d.headers.get("cache-control");m&&r.header("Cache-Control",m);let w=d.headers.get("content-disposition");return w&&r.header("Content-Disposition",lH(w)),r.body(d.body,d.status)}async function Zue(r,e,t,i){if(!e)return"";let n=da(t),s=e.includes("$path")?e.replace(/\$path(?!\w)/g,n):e.replace(/\/+$/,"")+n;if(!KQ(i)&&!/[?&]sign=/.test(s))try{let a=await Xu(r,t,await Wu(r));a&&(s+=(s.includes("?")?"&":"?")+"sign="+a)}catch(a){console.warn(`[rawRouter] failed to sign down_proxy_url for '${t}': ${a?.message||a}`)}return s}Ys.get("/*",async r=>{await Yue();let e=r.req.query("proxy")==="true"||r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p")||r.req.path.startsWith("/sd")||r.req.path.startsWith("/api/sd"),t=r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p"),i=r.req.path.replace(/^\/(?:api\/)?(?:raw|sd|d|p)(?=\/|$)/,""),n;try{n=decodeURIComponent(i)}catch{return r.text("Bad Request: malformed path encoding",400)}try{let s=n;if(r.req.path.startsWith("/api/sd")||r.req.path.startsWith("/sd")){let u=(r.req.header("Cookie")||"").split(";").map(p=>p.trim()).find(p=>p.startsWith("browser-password="))?.split("=").slice(1).join("=")||"",f;try{f=u?decodeURIComponent(u):""}catch{f=u}let A=r.req.query("pwd")||f,g=await Ju(s,A,r.env);if(!g.ok)return r.text(g.error||"Share not found",404);if(g.virtualList||!g.realPath)return r.text("Cannot download share root",400);s=g.realPath}else if(await i7(r,s)){let d=r.req.query("sign")||"";if(!await n7(r,s,d))return r.text("sign verify failed",401)}let o=await yt(s);if(o.isVirtual||!o.physical)return r.text("Cannot download virtual directory path",400);if(o.storage){let d=(o.storage.driver||"").toLowerCase().replace(/[^a-z0-9]/g,""),u=await ps().catch(()=>({})),f=Xc(u.proxy_types),A=Xc(u.text_types),g={proxyRange:PQ(o.storage),driver:o.storage.driver,storage:o.storage,ignoreHeaders:u.proxy_ignore_headers};if(t&&!Rp({storage:o.storage,driver:d,filename:s,proxyTypes:f,textTypes:A}))return console.warn(`[rawRouter] proxy not allowed for '${s}' (storage=${o.storage.id}, driver=${o.storage.driver})`),r.text("proxy not allowed",403);if(d!=="local")try{let p=qp(o.storage.addition,r.env),I=await It(o.storage.driver,o.storage),m;try{m=await I.get(s,o.physical)}finally{await rr(o.storage.driver,o.storage,I,Wue(r))}if(m&&m.raw_url){let w=zQ(o.storage,d,e,{filename:s,proxyTypes:f});if(w.mode==="use_proxy_url"){let B=HQ(o.storage);if(B){let C=await Zue(r,B,s,o.storage);if(C){try{ni(C,"Redirect download",p)}catch(x){return r.text(x.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' to configured proxy url via ${o.storage.driver}`),r.redirect(C,302)}}return console.warn(`[rawRouter] webdav_policy=use_proxy_url but down_proxy_url is empty (storage=${o.storage.id}); falling back to native proxy`),hH(r,m,s,p,g)}if(w.needsProxy)return hH(r,m,s,p,g);try{ni(m.raw_url,"Redirect download",p)}catch(B){return r.text(B.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' via ${o.storage.driver}`),r.redirect(m.raw_url,302)}else if(typeof I.createReadStream=="function"&&m&&!m.is_dir){let w=Number(m.size)||0;if(PC(w,r.req.header("Range"),Vs(r)))return console.warn(`[rawRouter] Refusing to stream '${s}': ${w} bytes exceeds the ${Vs(r)}-byte payload limit of this runtime.`),r.json({code:413,message:RC(r,o.storage.driver,w),data:null},413);r.header("Access-Control-Allow-Origin","*");let B=m.size||0,C=r.req.header("Range");if(C&&B>0){let{start:x,end:_,chunksize:R}=Q0(C,B),U=await I.createReadStream(o.physical,{start:x,end:_});return r.header("Content-Range",`bytes ${x}-${_}/${B}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",R.toString()),r.header("Content-Type","application/octet-stream"),r.body(U,206)}else{B>0&&r.header("Content-Length",B.toString()),r.header("Accept-Ranges","bytes"),r.header("Content-Type","application/octet-stream");let x=await I.createReadStream(o.physical);return r.body(x)}}else{let w=m?.raw_url_error||(m?.is_dir?"\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002":"\u8BE5\u5B58\u50A8\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08raw_url \u4E3A\u7A7A\uFF09\u3002");return r.text(`File not found or no download link available: ${s} +${w}`,404)}}catch(p){return console.error(`[rawRouter] Driver get failed for '${s}':`,p.message),r.text(`Download failed: ${Le(p)}`,500)}}if(!UC||!TC)return r.text("Local file streaming not supported in Edge Runtime",500);let c=await UC.stat(o.physical);if(c.isDirectory())return r.text("Cannot download directory",400);if(PC(Number(c.size)||0,r.req.header("Range"),Vs(r)))return r.json({code:413,message:RC(r,"local",Number(c.size)||0),data:null},413);r.header("Access-Control-Allow-Origin","*");let l=r.req.header("Range");if(l){let{start:d,end:u,chunksize:f}=Q0(l,c.size),A=TC(o.physical,{start:d,end:u});return r.header("Content-Range",`bytes ${d}-${u}/${c.size}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",f.toString()),r.header("Content-Type","application/octet-stream"),r.body(A,206)}else{r.header("Content-Length",c.size.toString()),r.header("Accept-Ranges","bytes");let d=TC(o.physical);return r.body(d)}}catch(s){return console.error(`[rawRouter] Download 404 for '${n}':`,s.message),r.text(`Not found: ${Le(s,"file not found")}`,404)}});Fr();nt();Bo();I0();function AH(r){let e=String(r).trim();e=e.replace(/(\w+:\/\/)[^/@\s]+@/g,"$1***@"),e=e.replace(/\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi,"$1=***");let t=160;return e.length>t?e.slice(0,t)+"\u2026":e}var efe=new Set(["INVALID_COMBINATION","DRIVER_UNAVAILABLE","UNKNOWN_DRIVER","NO_STORAGE","PROXY_CONFIG","DRIVER_ERROR"]);function F0(r){return r&&efe.has(r)?3:1}function _f(r){if(r==null)return null;let e=String(r).split(` +`).map(t=>t.trim()).find(t=>t.length>0);return e?AH(e):null}function fd(r,e=1){if(r==null)return"unknown error";let t=String(r).split(` +`).map(i=>i.trim()).filter(Boolean).slice(0,Math.max(1,e)).map(AH);return t.length?t.join(" "):"unknown error"}function gH(r){return{reason:r.message?fd(r.message,F0(r.code)):null,suggestion:r.suggestion}}var Za=new at,yH="https://doc.oplist.org",P0=`${yH}/ecosystem/official_worker/guide_env`,pH=`${yH}/ecosystem/official_worker/guide`;function mH(r){let e=String(r??"").trim();return e&&e!=="none"?e:null}function hS(){return"No storage binding was detected (auto probes every driver). Bind one and redeploy \u2014 Cloudflare: D1 or KV namespace; EdgeOne: Blob; ESA: ESA_BLOB."}Za.get("/env_check",async r=>{let e=r.env,t=wp(e),i=_d(e),n=jc(e),s=As(e),a=await gs(e).catch(m=>({driver:"none",format:"none",available:!1,configError:String(m?.message||m)})),o=await Cp(e),c=String(a?.driver??"none"),l=c==="memory",d=c!=="none"&&c!=="",u=!!a?.configError,f=a?.available!==!1,A=await Tp(e).catch(()=>!1),g=[],p={code:null,summary:null,message:null,suggestion:null};if(u){let m=await $c(e,{silent:!0});p={code:m.code,summary:_f(m.message),message:m.message,suggestion:m.suggestion}}if(u&&p.code==="NO_STORAGE")g.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:P0,suggestion:p.suggestion||hS()});else if(u){let m=p.code==="INVALID_COMBINATION",w=fd(p.message||a?.configError,F0(p.code));g.push({code:m?"STORAGE_INVALID_COMBINATION":"STORAGE_CONFIG_ERROR",level:"error",summary:p.summary||(m?"Unsupported storage combination.":"Storage driver is not configured correctly."),message:m?`Unsupported storage combination: ${w}`:`Storage driver is not configured correctly: ${w}`,docUrl:pH,suggestion:p.suggestion})}else l?g.push({code:"STORAGE_MEMORY_ONLY",level:s?"error":"warning",summary:s?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",message:s?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",docUrl:P0,suggestion:hS()}):d||g.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:P0,suggestion:hS()});if(d&&!l&&!u&&!f){let m=`Storage driver "${c}" is configured but not reachable${a.error?": "+fd(a.error):""}.`;g.push({code:"STORAGE_UNHEALTHY",level:"error",summary:m,message:m,docUrl:pH,suggestion:`Check the credentials/bindings for "${c}" (it resolved, but its health check failed).`})}A||g.push({code:"JWT_SECRET_MISSING",level:"warning",summary:"JWT_SECRET is not set.",message:"JWT_SECRET is not set. If storage is available, a secret is generated and persisted automatically during setup; setting it explicitly is recommended so that all instances and cold starts share one key.",docUrl:P0,suggestion:"Set JWT_SECRET (32+ chars recommended, `openssl rand -hex 32`) in your deployment variables \u2014 or leave it empty and let setup generate one (requires working storage)."});let I=o;return r.json({code:200,message:"success",data:{runtime:{serverless:s,platform:a?.platform??null},config:{db_format:i,db_driver:t,db_cipher:n,resolved_driver:mH(a?.driver),resolved_format:mH(a?.format)},storage:{available:o,configured:a?.configured??null,connected:a?.connected??null,platform:a?.platform??null,memory:l,error_code:p.code,summary:p.summary,error_message:p.message!==null?fd(p.message,F0(p.code)):null,suggestion:p.suggestion},jwt:{ready:A,source:A?"env-or-persisted":"none"},ready:I,issues:g,docUrl:P0}})});Za.get("/settings",async r=>{let e=await ne(r.env),t={title:"OpenList",site_title:"OpenList",version:"v4.2.3",backend:"ts-worker",announcement:"",pagination_type:"pagination",default_page_size:"20",allow_indexed:"false",allow_mounted:"true",robots_txt:`User-agent: * +Allow: /`,logo:"https://res.oplist.org/logo/logo.svg",favicon:"https://res.oplist.org/logo/logo.svg",main_color:"#1890ff",hide_storage_details:"false",hide_storage_details_in_manage_page:"false",customize_head:"",customize_body:"",text_types:"txt,htm,html,xml,java,properties,sql,js,md,json,conf,ini,vue,php,py,bat,gitignore,yml,yaml,toml,Makefile,mk,dockerfile,sh,pub,lock,gradle,ts,tsx,jsx,go,rs,c,cpp,h,cs,rb,swift,kt,dart,r,m,pl,pm,lua,ex,exs",audio_types:"mp3,flac,ogg,m4a,wav,opus,wma,aac,aiff,ape",video_types:"mp4,mkv,avi,mov,rmvb,webm,flv,m3u8,ts,wmv,m2ts,mpg,mpeg,3gp",image_types:"jpg,tiff,jpeg,png,gif,bmp,svg,ico,webp,avif,heic,heif,raw,cr2,nef,arw,dng",proxy_types:"",proxy_ignore_headers:"",audio_autoplay:"false",video_autoplay:"false",readme_autorender:"true",filter_readme_scripts:"true",preview_download_by_default:"false",preview_archives_by_default:"false",share_preview_download_by_default:"false",share_preview_archives_by_default:"false",share_preview:"true",share_archive_preview:"true",hide_files:"/\\.DS_Store/i",link_expiration:"0",sign_all:"false",filename_char_mapping:"{}",forward_direct_link_params:"false",ignore_direct_link_params:"",package_download:"true",offline_download:"true",ocr_api:"",privacy_regs:"",iframe_previews:"{}",external_previews:"{}",check_down_link:"false",check_update:"false",allow_guest:"true",webauthn_login_enabled:"false",sso_login_enabled:"false",sso_compatibility_mode:"false",ldap_login_enabled:"false",show_disk_usage_in_plain_text:"false",non_efs_zip_encoding:"UTF-8"},i=new Set([...Object.keys(t),"audio_cover","home_container","ldap_login_tips","search_index","settings_layout","share_icon","share_summary_content","sso_login_platform"]),n=/(secret|password|passwd|pwd|cookie|token|credential|private[_-]?key|api[_-]?key|access[_-]?key|jwt|salt|signature|webhook)/i;e.settings.forEach(o=>{if(o.key&&o.value!==void 0){if(!i.has(o.key)||n.test(o.key))return;t[o.key]=o.value,o.key==="site_title"&&(t.title=o.value)}});let s=(e.users||[]).find(o=>o.username==="guest");return!!!(s&&!s.disabled)||t.allow_guest==="false"?t.allow_guest="false":t.allow_guest="true",r.json({code:200,message:"success",data:t})});Za.get("/archive_extensions",r=>r.json({code:200,message:"success",data:["zip","rar","7z","tar","gz","bz2","xz","tar.gz","tar.bz2","tar.xz"]}));Za.get("/offline_download_tools",r=>r.json({code:200,message:"success",data:[]}));Za.get("/plugins",async r=>{let i=((await Kn(r.env)).plugins||[]).filter(n=>n.enabled);return r.json({code:200,message:"success",data:i.map(n=>ZL(n))})});function tfe(r){let e=r?.ADMIN_PASS,t=typeof process<"u"?process.env?.ADMIN_PASS:"";return String(e||t||"").trim()!==""}Za.get("/init_status",async r=>{let e=await Cp(r.env),t=!1;if(e){if(tfe(r.env))try{let{getOrInitUsers:l}=await Promise.resolve().then(()=>($l(),ML));await l(r.env)}catch(l){console.warn("[DB] init_status: ADMIN_PASS auto-initialization failed: "+(l?.message||l))}let c=((await ne(r.env)).users||[]).find(l=>l.role===2);t=!!(c&&String(c.password||"").trim()!=="")}let i=t?await Tp(r.env):!1,n=null,s=null;if(!e){let o=await $c(r.env,{silent:!0});n=_f(o.message),s=o.suggestion}let a=Fp();return r.json({code:200,message:"success",data:{initialized:t,ready:i,db_trusted:tB(),storage_error:n,storage_suggestion:s,db_load_error:a?fd(a,1):null}})});Za.post("/init/setup",async r=>{let e=await r.req.json().catch(()=>({})),t=String(e.username||"admin").trim(),i=String(e.password||"").trim(),n=String(e.site_title||"").trim();if(!t)return r.json({code:400,message:"username is required",data:null},400);if(!i)return r.json({code:400,message:"password is required",data:null},400);if(i.length<4)return r.json({code:400,message:"password must be at least 4 characters",data:null},400);let s=await ne(r.env);s.users||(s.users=[]);let a=Fp();if(a){console.error("[DB] init/setup rejected: database could not be loaded from the persistence backend: "+a);let c=await $c(r.env,{silent:!0}),l=c.code||"STORAGE_READ_FAILED";return r.json({code:500,message:"database is not readable; refusing to initialize to avoid overwriting existing config",data:{code:l,summary:_f(a),reason:fd(a,F0(l)),suggestion:c.suggestion}},500)}let o=s.users.find(c=>c.role===2);if(o&&String(o.password||"").trim()!=="")return r.json({code:400,message:"system has already been initialized",data:null},400);if(await sB(r.env),o)o.username=t,await ji(o,i);else{let c={id:1,username:t,password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await ji(c,i),s.users.push(c)}if(n){s.settings||(s.settings=[]);let c=s.settings.find(l=>l.key==="site_title");c?c.value=n:s.settings.push({key:"site_title",value:n,type:"string",help:"Site Title",group:1,flag:0})}return await he(s,r.env,{force:!0}),r.json({code:200,message:"success",data:null})});Fr();function rfe(){return[{name:"list_files",description:"List files and directories in OpenList storage",inputSchema:{type:"object",properties:{path:{type:"string",description:"Storage mount path"}}}},{name:"get_system_info",description:"Fetch server hardware and storage metrics",inputSchema:{type:"object",properties:{}}}]}function ife(){return[{uri:"openlist://storage/metrics",name:"Storage Metrics",mimeType:"application/json",description:"Current storage metrics of OpenList"}]}function nfe(){return[{name:"summarize_directory",description:"Prompt to summarize contents of a folder",arguments:[{name:"path",description:"The folder path",required:!0}]}]}async function sfe(r,e,t,i){try{if(e==="list_files"){let{listItems:n}=await Promise.resolve().then(()=>(ar(),tn)),s=t?.path||"/",{content:a,provider:o}=await n(s),c=a.map(l=>({name:l.name,size:l.size,is_dir:l.is_dir,modified:l.modified}));return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({path:s,provider:o,files:c},null,2)}],isError:!1},id:r}}if(e==="get_system_info"){let{getDb:n}=await Promise.resolve().then(()=>(nt(),ii)),s=await n(i);return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({storages:s?.storages?.length??0,users:s?.users?.length??0,metas:s?.metas?.length??0,shares:s?.shares?.length??0},null,2)}],isError:!1},id:r}}return{jsonrpc:"2.0",error:{code:-32602,message:`Unknown tool: ${e}`},id:r}}catch(n){return{jsonrpc:"2.0",result:{content:[{type:"text",text:String(n?.message||n)}],isError:!0},id:r}}}async function IH(r,e,t,i){switch(r){case"tools/list":return{jsonrpc:"2.0",result:{tools:rfe()},id:e};case"tools/call":{let n=t?.name,s=t?.arguments||{};return n?sfe(e,n,s,i):{jsonrpc:"2.0",error:{code:-32602,message:"Missing tool name"},id:e}}case"resources/list":return{jsonrpc:"2.0",result:{resources:ife()},id:e};case"prompts/list":return{jsonrpc:"2.0",result:{prompts:nfe()},id:e};default:return{jsonrpc:"2.0",error:{code:-32601,message:"Method not found"},id:e}}}zi();var T0=new at;T0.use("*",Ji);T0.get("/sse",r=>(r.header("Content-Type","text/event-stream"),r.header("Cache-Control","no-cache"),r.header("Connection","keep-alive"),r.text(`event: endpoint data: /api/mcp/messages -`)));n0.post("/messages",async r=>{let e=await r.req.json().catch(()=>({})),{method:t,id:i,params:n}=e;if(!t)return r.json({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request"},id:i||null},400);let s=await EO(t,i,n,r.env),o=s.error?404:200;return r.json(s,o)});wr();Ve();bA();var av=new Xe;av.get("/info",async r=>{let e=await Kd(r),t=await ne(r.env),i={runtime:"Cloudflare Workers / Edge",timestamp:new Date().toISOString(),store:await Jn(r.env)};return e&&(i.db_state={storages_count:t.storages?.length||0,users_count:t.users?.length||0,metas_count:t.metas?.length||0,settings_count:t.settings?.length||0}),r.json({code:200,message:"OpenList debug profile generated",data:i})});wr();Ve();Qi();var ei=new Xe;function eae(r){let t=(r||"").replace(/\\/g,"/").replace(/\/+/g,"/").split("/").filter(i=>i&&i!==".");if(t.some(i=>i===".."))throw new Error("Path traversal segment '..' is not allowed");return"/"+t.join("/")}ei.use("/list",_i);ei.use("/get",_i);ei.use("/update",_i);ei.use("/delete",_i);ei.use("/cancel",_i);ei.use("/enable",_i);ei.use("/disable",_i);ei.get("/list",async r=>{let t=(await ne(r.env)).shares||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});ei.get("/get",async r=>{let e=r.req.query("id")||"",i=((await ne(r.env)).shares||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"share not found",data:null})});ei.post("/create",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);if(!ms(e)&&!_a(e,Qa.SHARE))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=await ne(r.env),n=[];if(Array.isArray(t.files))try{n=t.files.map(c=>{let l=eae(String(c));return ms(e)?l:We(e,l)})}catch(c){return r.json({code:400,message:c.message||"Invalid file path",data:null},400)}let s=t.id?String(t.id).trim():"";if(s&&!/^[a-zA-Z0-9_-]{1,64}$/.test(s))return r.json({code:400,message:"Invalid share id format (only alphanumeric, _ and - allowed, max 64 chars)",data:null},400);let o=s||tae();if((i.shares||[]).some(c=>c.id===o))return r.json({code:400,message:"share id already exists",data:null},400);let a={id:o,new_id:t.new_id||o,creator:t.creator||e.username||"user",creator_role:t.creator_role!==void 0?t.creator_role:e.role??1,accessed:t.accessed??0,expires:t.expires||null,pwd:t.pwd||"",max_accessed:t.max_accessed??0,disabled:t.disabled??!1,order_by:t.order_by||"",order_direction:t.order_direction||"",extract_folder:t.extract_folder||"",files:n,remark:t.remark||"",readme:t.readme||"",header:t.header||""};return i.shares||(i.shares=[]),i.shares.push(a),await fe(i,r.env),r.json({code:200,message:"success",data:a})});function tae(){return crypto.randomUUID().replace(/-/g,"").slice(0,16)}ei.post("/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.id)return r.json({code:400,message:"share id is required",data:null});let i=(t.shares||[]).findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"share not found",data:null});let n=e.new_id&&String(e.new_id).trim()!==""?String(e.new_id).trim():e.id;return n!==e.id&&(t.shares||[]).some(o=>o.id===n&&o.id!==e.id)?r.json({code:400,message:"share id already exists",data:null}):(t.shares[i]={...t.shares[i],id:n,new_id:n,expires:e.expires!==void 0?e.expires:t.shares[i].expires,pwd:e.pwd!==void 0?e.pwd:t.shares[i].pwd,max_accessed:e.max_accessed!==void 0?e.max_accessed:t.shares[i].max_accessed,disabled:e.disabled!==void 0?e.disabled:t.shares[i].disabled,order_by:e.order_by!==void 0?e.order_by:t.shares[i].order_by,order_direction:e.order_direction!==void 0?e.order_direction:t.shares[i].order_direction,extract_folder:e.extract_folder!==void 0?e.extract_folder:t.shares[i].extract_folder,files:e.files!==void 0?e.files:t.shares[i].files,remark:e.remark!==void 0?e.remark:t.shares[i].remark,readme:e.readme!==void 0?e.readme:t.shares[i].readme,header:e.header!==void 0?e.header:t.shares[i].header},await fe(t,r.env),r.json({code:200,message:"success",data:null}))});ei.post("/delete",async r=>{let e=r.req.query("id")||"",t=await ne(r.env);return t.shares||(t.shares=[]),t.shares=t.shares.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});ei.post("/enable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!1,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});ei.post("/disable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});wr();Ve();Yt();Qi();var Pi=new Xe;Pi.all("/refresh",async(r,e)=>await c2(r)?e():_i(r,e),async r=>{let e=await ne(r.env),t=0,i=0,n=[];for(let s of e.storages||[])if(!s.disabled)try{let o=await lt(s.driver,s);if(await o.init?.(),typeof o.checkCookieValid=="function"&&/lanzou/i.test(String(s.driver))){let a=await o.checkCookieValid();if(!a.valid){s.status="cookie_expired",i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"cookie_expired",error:a.error||"Cookie expired"});continue}}s.status="work",t++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return await fe(e,r.env),i>0?r.json({code:500,message:`token refresh failed: ${i}/${t+i} storage(s) failed`,data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}},500):r.json({code:200,message:"token refresh executed",data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}})});var dl={upload:[],copy:[],move:[],offline_download:[]};Pi.use("*",_i);Pi.get("/:type/:state",r=>{let e=r.req.param("type"),t=r.req.param("state"),n=(dl[e]||[]).filter(s=>t==="done"?s.done:!s.done);return r.json({code:200,message:"success",data:n})});Pi.post("/:type/clear_done",r=>{let e=r.req.param("type");return dl[e]&&(dl[e]=dl[e].filter(t=>!t.done)),r.json({code:200,message:"success",data:null})});Pi.post("/:type/clear_succeeded",r=>{let e=r.req.param("type");return dl[e]&&(dl[e]=dl[e].filter(t=>t.state!=="succeeded")),r.json({code:200,message:"success",data:null})});var ul=r=>r.json({code:501,message:"task lifecycle operations (retry/cancel/delete) are not supported in the TS Worker runtime; file operations execute synchronously and do not produce persistent tasks",data:null},501);Pi.post("/:type/retry_failed",ul);Pi.post("/:type/retry",ul);Pi.post("/:type/retry_some",ul);Pi.post("/:type/cancel",ul);Pi.post("/:type/cancel_some",ul);Pi.post("/:type/delete",ul);Pi.post("/:type/delete_some",ul);wr();Ao();Ve();Qi();sl();XA();var jw=new Xe,rae=300*1e3,cv=new Map;function ti(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return!i||i.value===void 0||i.value===null?t:String(i.value)}function s0(r,e){let t=ti(r,e,"false");return t==="true"||t==="1"}function vO(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function hu(r){try{return new URL(r.req.url).origin}catch{return"http://localhost"}}function iae(r,e){let t=new Uint8Array(16);crypto.getRandomValues(t);let i=Array.from(t,n=>n.toString(16).padStart(2,"0")).join("");return cv.set(`${r}_${i}`,{ip:e,exp:Date.now()+rae}),i}function nae(r,e,t){let i=`${r}_${t}`,n=cv.get(i);return n?(cv.delete(i),n.ip===e&&n.exp>Date.now()):!1}function kO(r,e,t,i,n){switch(r){case"Github":return{authUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userUrl:"https://api.github.com/user",scope:n||"read:user",authField:"code",idField:"id",usernameField:"login"};case"Microsoft":return{authUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",userUrl:"https://graph.microsoft.com/v1.0/me",scope:n||"user.read",authField:"code",idField:"id",usernameField:"displayName",extraAuth:{response_mode:"query"},extraForm:{grant_type:"authorization_code"}};case"Google":return{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scope:n||"https://www.googleapis.com/auth/userinfo.profile",authField:"code",idField:"id",usernameField:"name",extraForm:{grant_type:"authorization_code"}};case"Dingtalk":return{authUrl:"https://login.dingtalk.com/oauth2/auth",tokenUrl:"https://api.dingtalk.com/v1.0/oauth2/userAccessToken",userUrl:"https://api.dingtalk.com/v1.0/contact/users/me",scope:n||"openid",authField:"authCode",idField:"unionId",usernameField:"nick",extraAuth:{prompt:"consent"},tokenStyle:"json"};case"Casdoor":return{authUrl:(e||"").replace(/\/login\/oauth\/authorize$/,"")+"/login/oauth/authorize",tokenUrl:(t||"").replace(/\/api\/login\/oauth\/access_token$/,"")+"/api/login/oauth/access_token",userUrl:(i||"").replace(/\/api\/userinfo$/,"")+"/api/userinfo",scope:n||"profile",authField:"code",idField:"sub",usernameField:"preferred_username",extraForm:{grant_type:"authorization_code"}};case"OIDC":return null;default:return null}}async function SO(r){let e=r.endsWith("/.well-known/openid-configuration")?r:r.replace(/\/+$/,"")+"/.well-known/openid-configuration",t=await fetch(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`OIDC discovery failed: HTTP ${t.status}`);let i=await t.json();if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("OIDC discovery returned incomplete metadata");return{authUrl:i.authorization_endpoint,tokenUrl:i.token_endpoint,userUrl:i.userinfo_endpoint||""}}async function sae(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():du()},i=await kr(e);return await fo(t,i)}async function oae(r,e,t){let i=e||t;r.users.some(o=>o.username===i)&&(i=`${i}_${t}`);let s={id:r.users.length?Math.max(...r.users.map(o=>Number(o.id)||0))+1:1,username:i,password:"",role:0,permission:0,base_path:"/",disabled:!1,sso_id:t,allow_ldap:!1,pwd_update_at:new Date().toISOString()};return await Fi(s,du()),r.users.push(s),await fe(r,r.env),s}function BO(r,e){let t=String(e).replace(/</g,"\\u003c").replace(/>/g,"\\u003e");return`<!DOCTYPE html> +`)));T0.post("/messages",async r=>{let e=await r.req.json().catch(()=>({})),{method:t,id:i,params:n}=e;if(!t)return r.json({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request"},id:i||null},400);let s=await IH(t,i,n,r.env),a=s.error?404:200;return r.json(s,a)});Fr();nt();$A();var AS=new at;AS.get("/info",async r=>{let e=await Vu(r),t=await ne(r.env),i={runtime:"Cloudflare Workers / Edge",timestamp:new Date().toISOString(),store:await gs(r.env)};return e&&(i.db_state={storages_count:t.storages?.length||0,users_count:t.users?.length||0,metas_count:t.metas?.length||0,settings_count:t.settings?.length||0}),r.json({code:200,message:"OpenList debug profile generated",data:i})});Fr();nt();zi();var Ai=new at;function afe(r){let t=(r||"").replace(/\\/g,"/").replace(/\/+/g,"/").split("/").filter(i=>i&&i!==".");if(t.some(i=>i===".."))throw new Error("Path traversal segment '..' is not allowed");return"/"+t.join("/")}Ai.use("/list",Ji);Ai.use("/get",Ji);Ai.use("/update",Ji);Ai.use("/delete",Ji);Ai.use("/cancel",Ji);Ai.use("/enable",Ji);Ai.use("/disable",Ji);Ai.get("/list",async r=>{let t=(await ne(r.env)).shares||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ai.get("/get",async r=>{let e=r.req.query("id")||"",i=((await ne(r.env)).shares||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"share not found",data:null})});Ai.post("/create",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);if(!Ms(e)&&!mc(e,pc.SHARE))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=await ne(r.env),n=[];if(Array.isArray(t.files))try{n=t.files.map(c=>{let l=afe(String(c));return Ms(e)?l:st(e,l)})}catch(c){return r.json({code:400,message:c.message||"Invalid file path",data:null},400)}let s=t.id?String(t.id).trim():"";if(s&&!/^[a-zA-Z0-9_-]{1,64}$/.test(s))return r.json({code:400,message:"Invalid share id format (only alphanumeric, _ and - allowed, max 64 chars)",data:null},400);let a=s||ofe();if((i.shares||[]).some(c=>c.id===a))return r.json({code:400,message:"share id already exists",data:null},400);let o={id:a,new_id:t.new_id||a,creator:t.creator||e.username||"user",creator_role:t.creator_role!==void 0?t.creator_role:e.role??1,accessed:t.accessed??0,expires:t.expires||null,pwd:t.pwd||"",max_accessed:t.max_accessed??0,disabled:t.disabled??!1,order_by:t.order_by||"",order_direction:t.order_direction||"",extract_folder:t.extract_folder||"",files:n,remark:t.remark||"",readme:t.readme||"",header:t.header||""};return i.shares||(i.shares=[]),i.shares.push(o),await he(i,r.env),r.json({code:200,message:"success",data:o})});function ofe(){return crypto.randomUUID().replace(/-/g,"").slice(0,16)}Ai.post("/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.id)return r.json({code:400,message:"share id is required",data:null});let i=(t.shares||[]).findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"share not found",data:null});let n=e.new_id&&String(e.new_id).trim()!==""?String(e.new_id).trim():e.id;return n!==e.id&&(t.shares||[]).some(a=>a.id===n&&a.id!==e.id)?r.json({code:400,message:"share id already exists",data:null}):(t.shares[i]={...t.shares[i],id:n,new_id:n,expires:e.expires!==void 0?e.expires:t.shares[i].expires,pwd:e.pwd!==void 0?e.pwd:t.shares[i].pwd,max_accessed:e.max_accessed!==void 0?e.max_accessed:t.shares[i].max_accessed,disabled:e.disabled!==void 0?e.disabled:t.shares[i].disabled,order_by:e.order_by!==void 0?e.order_by:t.shares[i].order_by,order_direction:e.order_direction!==void 0?e.order_direction:t.shares[i].order_direction,extract_folder:e.extract_folder!==void 0?e.extract_folder:t.shares[i].extract_folder,files:e.files!==void 0?e.files:t.shares[i].files,remark:e.remark!==void 0?e.remark:t.shares[i].remark,readme:e.readme!==void 0?e.readme:t.shares[i].readme,header:e.header!==void 0?e.header:t.shares[i].header},await he(t,r.env),r.json({code:200,message:"success",data:null}))});Ai.post("/delete",async r=>{let e=r.req.query("id")||"",t=await ne(r.env);return t.shares||(t.shares=[]),t.shares=t.shares.filter(i=>i.id!==e),await he(t,r.env),r.json({code:200,message:"success",data:null})});Ai.post("/enable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!1,await he(t,r.env)),r.json({code:200,message:"success",data:null})});Ai.post("/disable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!0,await he(t,r.env)),r.json({code:200,message:"success",data:null})});Fr();nt();ar();zi();var Yi=new at;Yi.all("/refresh",async(r,e)=>await fv(r)?e():Ji(r,e),async r=>{let e=await ne(r.env),t=0,i=0,n=[];for(let s of e.storages||[])if(!s.disabled)try{let a=await It(s.driver,s);if(await a.init?.(),typeof a.checkCookieValid=="function"&&/lanzou/i.test(String(s.driver))){let o=await a.checkCookieValid();if(!o.valid){s.status="cookie_expired",i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"cookie_expired",error:o.error||"Cookie expired"});continue}}s.status="work",t++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(a){i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:a?.message||String(a)})}return await he(e,r.env),i>0?r.json({code:500,message:`token refresh failed: ${i}/${t+i} storage(s) failed`,data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}},500):r.json({code:200,message:"token refresh executed",data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}})});var hd={upload:[],copy:[],move:[],offline_download:[]};Yi.use("*",Ji);Yi.get("/:type/:state",r=>{let e=r.req.param("type"),t=r.req.param("state"),n=(hd[e]||[]).filter(s=>t==="done"?s.done:!s.done);return r.json({code:200,message:"success",data:n})});Yi.post("/:type/clear_done",r=>{let e=r.req.param("type");return hd[e]&&(hd[e]=hd[e].filter(t=>!t.done)),r.json({code:200,message:"success",data:null})});Yi.post("/:type/clear_succeeded",r=>{let e=r.req.param("type");return hd[e]&&(hd[e]=hd[e].filter(t=>t.state!=="succeeded")),r.json({code:200,message:"success",data:null})});var Ad=r=>r.json({code:501,message:"task lifecycle operations (retry/cancel/delete) are not supported in the TS Worker runtime; file operations execute synchronously and do not produce persistent tasks",data:null},501);Yi.post("/:type/retry_failed",Ad);Yi.post("/:type/retry",Ad);Yi.post("/:type/retry_some",Ad);Yi.post("/:type/cancel",Ad);Yi.post("/:type/cancel_some",Ad);Yi.post("/:type/delete",Ad);Yi.post("/:type/delete_some",Ad);Fr();Ka();nt();zi();$l();I0();var NC=new at,cfe=300*1e3,gS=new Map;function gi(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return!i||i.value===void 0||i.value===null?t:String(i.value)}function U0(r,e){let t=gi(r,e,"false");return t==="true"||t==="1"}function CH(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Qf(r){try{return new URL(r.req.url).origin}catch{return"http://localhost"}}function lfe(r,e){let t=new Uint8Array(16);crypto.getRandomValues(t);let i=Array.from(t,n=>n.toString(16).padStart(2,"0")).join("");return gS.set(`${r}_${i}`,{ip:e,exp:Date.now()+cfe}),i}function dfe(r,e,t){let i=`${r}_${t}`,n=gS.get(i);return n?(gS.delete(i),n.ip===e&&n.exp>Date.now()):!1}function EH(r,e,t,i,n){switch(r){case"Github":return{authUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userUrl:"https://api.github.com/user",scope:n||"read:user",authField:"code",idField:"id",usernameField:"login"};case"Microsoft":return{authUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",userUrl:"https://graph.microsoft.com/v1.0/me",scope:n||"user.read",authField:"code",idField:"id",usernameField:"displayName",extraAuth:{response_mode:"query"},extraForm:{grant_type:"authorization_code"}};case"Google":return{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scope:n||"https://www.googleapis.com/auth/userinfo.profile",authField:"code",idField:"id",usernameField:"name",extraForm:{grant_type:"authorization_code"}};case"Dingtalk":return{authUrl:"https://login.dingtalk.com/oauth2/auth",tokenUrl:"https://api.dingtalk.com/v1.0/oauth2/userAccessToken",userUrl:"https://api.dingtalk.com/v1.0/contact/users/me",scope:n||"openid",authField:"authCode",idField:"unionId",usernameField:"nick",extraAuth:{prompt:"consent"},tokenStyle:"json"};case"Casdoor":return{authUrl:(e||"").replace(/\/login\/oauth\/authorize$/,"")+"/login/oauth/authorize",tokenUrl:(t||"").replace(/\/api\/login\/oauth\/access_token$/,"")+"/api/login/oauth/access_token",userUrl:(i||"").replace(/\/api\/userinfo$/,"")+"/api/userinfo",scope:n||"profile",authField:"code",idField:"sub",usernameField:"preferred_username",extraForm:{grant_type:"authorization_code"}};case"OIDC":return null;default:return null}}async function BH(r){let e=r.endsWith("/.well-known/openid-configuration")?r:r.replace(/\/+$/,"")+"/.well-known/openid-configuration",t=await fetch(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`OIDC discovery failed: HTTP ${t.status}`);let i=await t.json();if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("OIDC discovery returned incomplete metadata");return{authUrl:i.authorization_endpoint,tokenUrl:i.token_endpoint,userUrl:i.userinfo_endpoint||""}}async function ufe(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():yf()},i=await qr(e);return await Ha(t,i)}async function ffe(r,e,t){let i=e||t;r.users.some(a=>a.username===i)&&(i=`${i}_${t}`);let s={id:r.users.length?Math.max(...r.users.map(a=>Number(a.id)||0))+1:1,username:i,password:"",role:0,permission:0,base_path:"/",disabled:!1,sso_id:t,allow_ldap:!1,pwd_update_at:new Date().toISOString()};return await ji(s,yf()),r.users.push(s),await he(r,r.env),s}function wH(r,e){let t=String(e).replace(/</g,"\\u003c").replace(/>/g,"\\u003e");return`<!DOCTYPE html> <head></head> <body> <script> window.opener.postMessage({"${r}":"${t}"}, "*") window.close() </script> -</body>`}jw.get("/sso",async r=>{let e=await ne(r.env);if(!s0(e,"sso_login_enabled"))return r.json({code:403,message:"Single sign-on is not enabled",data:null},403);let t=r.req.query("method")||"";if(!t)return r.json({code:400,message:"no method provided",data:null},400);let i=ti(e,"sso_login_platform"),n=ti(e,"sso_client_id"),o=s0(e,"sso_compatibility_mode")?`${hu(r)}/api/auth/${t}`:`${hu(r)}/api/auth/sso_callback?method=${t}`,a=ti(e,"sso_login_url"),c=ti(e,"sso_token_url"),l=ti(e,"sso_userinfo_url"),d=ti(e,"sso_scopes"),u=ti(e,"sso_oidc_discovery_url");try{if(i==="OIDC"){let g=await SO(u||a),p=iae(n,vO(r)),I=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:d||"openid profile",state:p});return r.redirect(`${g.authUrl}?${I.toString()}`,302)}let f=kO(i,a,c,l,d);if(!f)return r.json({code:400,message:"invalid platform",data:null},400);let h=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:f.scope});for(let[g,p]of Object.entries(f.extraAuth||{}))h.set(g,p);return r.redirect(`${f.authUrl}?${h.toString()}`,302)}catch(f){return r.json({code:400,message:f.message||"SSO error",data:null},400)}});jw.get("/sso_callback",async r=>{let e=await ne(r.env);if(!s0(e,"sso_login_enabled"))return r.text("Single sign-on is not enabled",403);let t=r.req.query("method")||"";if(t!=="get_sso_id"&&t!=="sso_get_token")return r.text("invalid request",400);let i=ti(e,"sso_login_platform"),n=ti(e,"sso_client_id"),s=ti(e,"sso_client_secret"),o=s0(e,"sso_compatibility_mode"),a=o?`${hu(r)}/api/auth/${t}`:`${hu(r)}/api/auth/sso_callback?method=${t}`,c=ti(e,"sso_login_url"),l=ti(e,"sso_token_url"),d=ti(e,"sso_userinfo_url"),u=ti(e,"sso_scopes"),f=ti(e,"sso_oidc_discovery_url");try{let h,g,p,I,y,w,C;if(i==="OIDC"){let R=await SO(f||c);if(h=R.tokenUrl,g=R.userUrl,p="sub",I="preferred_username",y=u||"openid profile",!nae(n,vO(r),r.req.query("state")||""))return r.text("incorrect or expired state parameter",400);let U=r.req.query("code")||"",D=await(await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",code:U,client_id:n,client_secret:s,redirect_uri:a,scope:y}).toString()})).json().catch(()=>({}));if(w=D.access_token,!w)throw new Error("no access_token in token response");if(g){C=await(await fetch(g,{headers:{Authorization:`Bearer ${w}`,Accept:"application/json"}})).json().catch(()=>({}));let Q=C?.preferred_username||C?.name||C?.nickname||"";if(!C?.sub&&!Q){let v=D.id_token;if(v){let E=bO(v);C=C||{},C.sub=C.sub||E?.sub,C.name=Q||E?.name||E?.preferred_username||""}}Q&&(C.name=Q)}else{let B=D.id_token;if(!B)throw new Error("no id_token and no userinfo endpoint");C=bO(B)||{},C.sub=C.sub||C.name||""}}else{let R=kO(i,c,l,d,u);if(!R)return r.text("invalid platform",400);h=R.tokenUrl,g=R.userUrl,p=R.idField,I=R.usernameField,y=R.scope;let U=r.req.query(R.authField)||"";if(!U)return r.text("No code provided",400);let T;if(R.tokenStyle==="json")T=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:n,clientSecret:s,code:U,grantType:"authorization_code"})});else{let v={client_id:n,client_secret:s,code:U,redirect_uri:a,scope:y,...R.extraForm||{}};T=await fetch(h,{method:"POST",headers:{Accept:"application/json"},body:new URLSearchParams(v).toString()})}let D=await T.json().catch(()=>({}));if(w=D.access_token||D.accessToken,!w)throw new Error(`token exchange failed: ${D.error||T.status}`);let B={Accept:"application/json"};i==="Dingtalk"?B["x-acs-dingtalk-access-token"]=w:B.Authorization=`Bearer ${w}`,C=await(await fetch(g,{headers:B})).json().catch(()=>({}))}let b=String(C?.id??C?.sub??C?.[p]??"");if(!b||b==="0")return r.text("cannot get user id from SSO provider",400);if(t==="get_sso_id")return o?r.redirect(`${hu(r)}/@manage?sso_id=${encodeURIComponent(b)}`,302):r.html(BO("sso_id",b));let x=(e.users||[]).find(R=>R.sso_id===b);if(!x){if(!s0(e,"sso_auto_register"))return r.text("user not found and auto register is disabled",400);let U=String(C?.login??C?.[I]??C?.name??"");x=await oae(e,U||b,b)}let _=await sae(x,r);return o?r.redirect(`${hu(r)}/@login?token=${encodeURIComponent(_)}`,302):r.html(BO("token",_))}catch(h){return r.text(h.message||"SSO error",500)}});function bO(r){try{let e=r.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=t.padEnd(Math.ceil(t.length/4)*4,"="),n=atob(i);return JSON.parse(n)}catch{return null}}wr();Ao();Ve();Qi();var Ga=new Xe;function ri(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ha(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=atob(t),n=new Uint8Array(i.length);for(let s=0;s<i.length;s++)n[s]=i.charCodeAt(s);return n}function aae(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function cae(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function Ka(r){let e=r.u8[r.i++],t=e>>5,i=e&31,n=i;if(i===24)n=r.u8[r.i++];else if(i===25)n=r.u8[r.i]<<8|r.u8[r.i+1],r.i+=2;else if(i===26)n=r.u8[r.i]<<24|r.u8[r.i+1]<<16|r.u8[r.i+2]<<8|r.u8[r.i+3],r.i+=4;else if(i===27){let s=0n;for(let o=0;o<8;o++)s=s<<8n|BigInt(r.u8[r.i++]);n=Number(s)}else if(i===31){if(t===4){let s=[];for(;r.u8[r.i]!==255;)s.push(Ka(r));return r.i++,s}else if(t===5){let s={};for(;r.u8[r.i]!==255;){let o=Ka(r),a=Ka(r);s[String(o)]=a}return r.i++,s}}switch(t){case 0:return n;case 1:return-1-n;case 2:{let s=r.u8.slice(r.i,r.i+n);return r.i+=n,s}case 3:{let s=new TextDecoder().decode(r.u8.slice(r.i,r.i+n));return r.i+=n,s}case 4:{let s=[];for(let o=0;o<n;o++)s.push(Ka(r));return s}case 5:{let s={};for(let o=0;o<n;o++){let a=Ka(r),c=Ka(r);s[String(a)]=c}return s}default:throw new Error(`unsupported CBOR major type ${t}`)}}async function lae(r){let e=r[1],t=r[3];if(e===2){let i=r[-1],n=r[-2],s=r[-3];if(i!==1)throw new Error("unsupported EC curve (only P-256)");let o={kty:"EC",crv:"P-256",x:ri(new Uint8Array(n)),y:ri(new Uint8Array(s))};return await crypto.subtle.importKey("jwk",o,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}if(e===3){let i=r[-1],n=r[-2],s={kty:"RSA",n:ri(new Uint8Array(i)),e:ri(new Uint8Array(n))};return await crypto.subtle.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"])}throw new Error(`unsupported COSE kty ${e}`)}async function dae(r){let t=Ka({u8:r,i:0}),i=t.authData,n=t.attStmt||{},s=i.slice(0,32),o=i[32],a=i[33]<<24|i[34]<<16|i[35]<<8|i[36];if(!(o&64))throw new Error("attestedCredentialData not present");let c=37,l=i.slice(c,c+16);c+=16;let d=i[c]<<8|i[c+1];c+=2;let u=i.slice(c,c+d);c+=d;let f={u8:i.slice(c),i:0},h=Ka(f),g=await lae(h);return{authData:i,publicKey:g,aaguid:l,credentialId:u,signCount:a,flags:o}}function $w(r,e){let i=(r.settings||[]).find(n=>n.key===e)?.value;return i==="true"||i==="1"}function DO(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return i?.value?String(i.value):t}function Vw(r,e){let t=DO(e,"webauthn_rp_id");if(t)return t;try{return new URL(r.req.url).hostname}catch{return"localhost"}}function lv(){let r=new Uint8Array(32);return crypto.getRandomValues(r),r}function QO(r){return aae(new TextEncoder().encode(JSON.stringify(r)))}function _O(r){return JSON.parse(new TextDecoder().decode(cae(r)))}async function uae(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():ri(lv())},i=await kr(e);return await fo(t,i)}function o0(r){return r.webauthn_credentials||[]}Ga.post("/webauthn_begin_login",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.query("username")||"",i=Vw(r,e),n=lv(),s={challenge:ri(n),userVerification:"preferred"},o;if(t){let c=(e.users||[]).find(l=>l.username===t);if(!c)return r.json({code:400,message:"user not found",data:null},400);s.userId=String(c.id),s.username=t,o=o0(c).map(l=>({id:typeof l.id=="string"?l.id:ri(new Uint8Array(l.id)),type:"public-key"})),s.allowedCredentials=o}let a={challenge:s.challenge,rpId:i,userVerification:s.userVerification};return o&&o.length>0&&(a.allowCredentials=o),r.json({code:200,message:"success",data:{options:a,session:QO(s)}})});Ga.post("/webauthn_finish_login",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.header("session")||r.req.header("Session")||"",i;try{i=_O(t)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let n=await r.req.json().catch(()=>({})),s=Vw(r,e);try{let o=Ha(n.id||""),a=JSON.parse(new TextDecoder().decode(Ha(n.response?.clientDataJSON||"")));if(a.challenge!==i.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.get")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Ha(n.response?.authenticatorData||"");if(c.length<37)throw new Error("invalid authenticatorData");let l=c.slice(0,32),d=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(s)));if(ri(l)!==ri(d))return r.json({code:400,message:"rpId hash mismatch",data:null},400);let u=r.req.query("username")||i.username||"",f=u?(e.users||[]).find(R=>R.username===u):null,h;if(f)h=o0(f).find(R=>(typeof R.id=="string"?R.id:ri(new Uint8Array(R.id)))===n.id);else{let R=Ha(n.response?.userHandle||"");if(R.length){let U=new TextDecoder().decode(R);f=(e.users||[]).find(T=>String(T.id)===U),f&&(h=o0(f).find(T=>(typeof T.id=="string"?T.id:ri(new Uint8Array(T.id)))===n.id))}}if(!f||!h)return r.json({code:400,message:"credential not found",data:null},400);let g=h.publicKey;if(!g)return r.json({code:400,message:"credential missing public key",data:null},400);let p=await crypto.subtle.importKey("jwk",g,g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"}:{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),I=Ha(n.response?.signature||""),y=new Uint8Array(await crypto.subtle.digest("SHA-256",Ha(n.response?.clientDataJSON||""))),w=new Uint8Array(c.length+y.length);w.set(c,0),w.set(y,c.length);let C=g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5"}:{name:"ECDSA",hash:"SHA-256"};if(!await crypto.subtle.verify(C,p,I,w).catch(()=>!1))return r.json({code:400,message:"signature verification failed",data:null},400);let x=c[33]<<24|c[34]<<16|c[35]<<8|c[36];if(h.sign_count!==void 0&&x!==0&&x<=h.sign_count)return r.json({code:400,message:"stale signCount (possible replay)",data:null},400);h.sign_count=x,await fe(e,r.env);let _=await uae(f,r);return r.json({code:200,message:"success",data:{token:_}})}catch(o){return r.json({code:400,message:o.message||"WebAuthn login failed",data:null},400)}});Ga.post("/webauthn_begin_registration",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=Vw(r,e),n=lv(),s=new TextEncoder().encode(String(t.id)),o={challenge:ri(n),userId:String(t.id),username:t.username,userVerification:"preferred"},a=o0(t).map(l=>({id:typeof l.id=="string"?l.id:ri(new Uint8Array(l.id)),type:"public-key"})),c={challenge:o.challenge,rp:{name:DO(e,"site_title","OpenList"),id:i},user:{id:ri(s),name:t.username,displayName:t.username},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,authenticatorSelection:{userVerification:o.userVerification,residentKey:"preferred"},attestation:"none"};return a.length>0&&(c.excludeCredentials=a),r.json({code:200,message:"success",data:{options:c,session:QO(o)}})});Ga.post("/webauthn_finish_registration",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=r.req.header("Session")||r.req.header("session")||"",n;try{n=_O(i)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let s=await r.req.json().catch(()=>({})),o=Vw(r,e);try{let a=JSON.parse(new TextDecoder().decode(Ha(s.response?.clientDataJSON||"")));if(a.challenge!==n.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.create")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Ha(s.response?.attestationObject||""),{publicKey:l,aaguid:d,credentialId:u,signCount:f}=await dae(c),g={id:s.id||ri(u),publicKey:await crypto.subtle.exportKey("jwk",l),aaguid:ri(d),sign_count:f,created_at:new Date().toISOString()},p=t;return p.webauthn_credentials||(p.webauthn_credentials=[]),p.webauthn_credentials.push(g),await fe(e,r.env),r.json({code:200,message:"Registered Successfully",data:null})}catch(a){return r.json({code:400,message:a.message||"registration failed",data:null},400)}});Ga.post("/delete_authn",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=(await r.req.json().catch(()=>({}))).id||"",n=await ne(r.env),s=(n.users||[]).find(a=>a.id===e.id);if(!s)return r.json({code:404,message:"user not found",data:null},404);let o=(s.webauthn_credentials||[]).length;return s.webauthn_credentials=(s.webauthn_credentials||[]).filter(a=>a.id!==i),s.webauthn_credentials.length===o?r.json({code:404,message:"credential not found",data:null},404):(await fe(n,r.env),r.json({code:200,message:"Deleted Successfully",data:null}))});Ga.get("/getcredentials",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=o0(e).map(i=>({id:i.id,fingerprint:i.aaguid||""}));return r.json({code:200,message:"success",data:t})});var a0=new Map,gu=new Map;function fae(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Aae(){let r=Date.now();if(a0.size>2e4)for(let[e,t]of a0)r-t.start>6e4&&a0.delete(e);if(gu.size>2e4)for(let[e,t]of gu)r-t.start>36e5&&gu.delete(e)}async function hae(r,e){let t=fae(r),i=Date.now(),n=0,s=0;try{let o=await ne(r.env),a={};for(let c of o.settings||[])a[c.key]=c.value;n=parseInt(a.ip_limit,10)||0,s=parseInt(a.traffic_limit,10)||0}catch{}if(Aae(),n>0){let o=a0.get(t);if(!o||i-o.start>6e4)a0.set(t,{start:i,count:1});else if(o.count+=1,o.count>n)return r.json({code:429,message:"Too many requests, slow down",data:null},429)}if(s>0){let o=gu.get(t),a=s*1024*1024;if(o&&i-o.start<=36e5&&o.bytes>=a)return r.json({code:429,message:"Traffic limit exceeded",data:null},429)}if(await e(),(r.req.query("token")||r.req.query("access_token"))&&(r.res?.headers?.set("Referrer-Policy","no-referrer"),r.res?.headers?.set("Cache-Control","no-store, no-cache, must-revalidate"),r.res?.headers?.set("Pragma","no-cache")),s>0){let o=parseInt(r.res?.headers?.get("content-length")||"0",10)||0;if(o>0){let a=gu.get(t);!a||i-a.start>36e5?gu.set(t,{start:i,bytes:o}):a.bytes+=o}}}function FO(r){r.use("*",hae),r.use("*",async(e,t)=>{let{auditMiddleware:i}=await Promise.resolve().then(()=>(Qi(),VI));return i(e,t)}),r.use("*",async(e,t)=>{await t(),e.res.headers.set("X-Frame-Options","DENY"),e.res.headers.set("X-Content-Type-Options","nosniff"),e.res.headers.set("Content-Security-Policy","default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; media-src 'self' blob:; frame-ancestors 'none'"),e.res.headers.set("Strict-Transport-Security","max-age=31536000; includeSubDomains"),e.res.headers.set("Referrer-Policy","no-referrer")}),r.use("*",fk({origin:(e,t)=>{if(!e)return e;let s=((t.env||{}).ALLOW_URLS||(typeof process<"u"?process.env?.ALLOW_URLS:"")||"").split(",").map(a=>a.trim()).filter(Boolean);if(s.length>0)return s.includes(e)?e:null;let o=t.req.header("host")||"";try{if(new URL(e).host===o)return e}catch{}return null},allowHeaders:["Content-Type","Authorization","X-Requested-With"],allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],exposeHeaders:["Content-Length","Content-Type"],maxAge:600,credentials:!0})),r.route("/raw",Es),r.route("/fs",dt),r.route("/auth",pn),r.route("/public",wo),r.route("/admin",Ue),r.route("/mcp",n0),r.route("/debug",av),r.route("/share",ei),r.route("/task",Pi),r.route("/auth",jw),r.route("/authn",Ga),r.route("/d",Es),r.route("/sd",Es),r.route("/p",Es),r.route("/me",cu),r.get("/me",Mw),r.post("/me/update",Ow),r.post("/user/update_pwd",sO),r.get("/logout",uu),r.post("/logout",uu),r.get("/health",e=>e.json({ok:!0,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development"})),r.get("/healthz",async e=>{let t={},i=!0;try{let o=await ne(e.env);t.config={ok:!0,storages:o?.storages?.length??0,users:o?.users?.length??0}}catch(o){i=!1,t.config={ok:!1,error:o?.message||String(o)}}let n;try{n=await bl(e.env)}catch(o){i=!1,n={configured:!1,connected:!1,error:o?.message||String(o)}}t.persistence={configured:!!n?.configured,connected:!!n?.connected,platform:n?.platform??null,error:n?.error??null};let s=zn(e.env);return n?.configured||(t.persistence.mode=s?"unavailable":"memory",s?(t.persistence.note=Fs,i=!1):t.persistence.note="No persistence configured \u2014 changes are ephemeral"),n?.configured&&!n?.connected&&(i=!1),e.json({ok:i,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development",checks:t},i?200:503)})}wr();Ve();var gae="https://res.oplist.org/logo/logo.svg",za=new Xe;function c0(r){return r.redirect(gae,302)}za.get("/logo.svg",c0);za.get("/logo.png",c0);za.get("/favicon.svg",c0);za.get("/favicon.png",c0);za.get("/favicon.ico",c0);za.get("/:folder/:filepath*",async r=>{let t=r.env?.ASSET_URLS||process.env.ASSET_URLS;if(!t)return r.text("Static resource not found",404);let i=await ne(),n="latest";try{let l=i.get("SELECT * FROM x_settings WHERE key = 'version'");if(l&&l.value){let d=l.value.match(/Frontend:\s*([^\s-]+)/);d&&(n=d[1])}}catch{}let s=t.replace(/\$version/g,n),o=r.req.param("folder"),a=r.req.param("filepath")||"",c=`${s}/${o}/${a}`;return r.redirect(c,302)});wr();sl();Yt();bA();function PO(r,e){return YR(r,e)}Da();Ve();var dv=new Xe,pae=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}};async function mae(r){let e=r.req.header("Authorization")||"";if(e.startsWith("Basic "))try{let t=atob(e.substring(6).trim()),i=t.indexOf(":");if(i<0)return null;let n=t.substring(0,i),s=t.substring(i+1),{users:o}=await ZA(r.env),a=o.find(c=>c.username===n&&!c.disabled);return a?a.password?await lu(a,s)?a:null:s===""?a:null:null}catch{return null}if(e.startsWith("Bearer ")){let t=await Nn(r);return t?t.user:null}return null}function yae(r){let t=new URL(r.req.url).pathname.replace(/^\/dav/,"");t||(t="/");try{return decodeURIComponent(t)}catch{return t}}function l0(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}dv.all("/*",async r=>{let e=await mae(r);if(!e)return r.text("Unauthorized",401,{"WWW-Authenticate":'Basic realm="OpenList"'});let t=_a(e,Qa.WEBDAV_READ),i=_a(e,Qa.WEBDAV_MANAGE);if(!t&&!i)return r.text("Forbidden",403);let n=r.req.method.toUpperCase(),s=yae(r),o=pae(r);try{switch(n){case"OPTIONS":return r.header("DAV","1, 2"),r.header("Allow","OPTIONS, PROPFIND, GET, HEAD, PUT, MKCOL, DELETE, MOVE, COPY"),r.header("MS-Author-Via","DAV"),r.body(null,200);case"PROPFIND":{if(!t)return r.text("Forbidden",403);let a=r.req.header("Depth")||"1",l=((await Zt(s,o)).content||[]).map(f=>({name:f.name,size:f.size||0,isFolder:!!f.is_dir,modified:f.modified||new Date().toISOString()})),d=s==="/"?"/":s.endsWith("/")?s:s+"/",u=PO(d,l);return r.body(u,207,{"Content-Type":"application/xml; charset=utf-8"})}case"GET":case"HEAD":{if(!t)return r.text("Forbidden",403);let{item:a,rawUrl:c}=await Di(s,o);if(!a)return r.text("Not found",404);if(a.is_dir)return r.text("Is a directory",400);let l="/api/p";try{let u=(await tt(s))?.storage;if(u){let f=await jn().catch(()=>({}));Hw({storage:u,driver:u.driver,filename:s,proxyTypes:al(f.proxy_types),textTypes:al(f.text_types)})||(l="/api/d")}}catch{}return r.redirect(c||`${l}${s.startsWith("/")?"":"/"}${s}`,302)}case"PUT":{if(!i)return r.text("Forbidden",403);let a=Buffer.from(await r.req.arrayBuffer());return await Tn(s,a,o),r.body(null,201)}case"MKCOL":return i?(await xA(s,o),r.body(null,201)):r.text("Forbidden",403);case"DELETE":{if(!i)return r.text("Forbidden",403);let{dir:a,name:c}=l0(s);return await ka(a,[c],o),r.body(null,204)}case"MOVE":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=l0(s),d=l0(c);return await Od(l.dir,d.dir,[l.name],o),r.body(null,201)}case"COPY":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=l0(s),d=l0(c);return await EA(l.dir,d.dir,[l.name],o),r.body(null,201)}case"LOCK":case"UNLOCK":return r.text("Locking not supported",405);default:return r.text("Method Not Allowed",405)}}catch(a){let c=Ne(a);return c.includes("not found")||c.includes("storage not found")?r.text("Not Found",404):r.text(c,500)}});wr();sl();Yt();Da();var fl=new Xe;function Yw(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Dr(r,e,t){let i=`<?xml version="1.0" encoding="UTF-8"?> -<Error><Code>${Yw(r)}</Code><Message>${Yw(e)}</Message></Error>`;return new Response(i,{status:t,headers:{"Content-Type":"application/xml","x-amz-request-id":"-"}})}function Ww(r){let i=new URL(r.req.url).pathname.replace(/^\/s3\/?/,"").split("/").filter(Boolean),n=i[0]||"",s=i.slice(1).map(decodeURIComponent).join("/");return{bucket:n,key:s}}async function d0(r){let e=await Nn(r);return e?e.user:null}var u0=r=>{try{let e=r.executionCtx;return e&&typeof e.waitUntil=="function"?{waitUntil:t=>e.waitUntil(t)}:void 0}catch{return}};fl.get("/",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);try{let n=`<?xml version="1.0" encoding="UTF-8"?> +</body>`}NC.get("/sso",async r=>{let e=await ne(r.env);if(!U0(e,"sso_login_enabled"))return r.json({code:403,message:"Single sign-on is not enabled",data:null},403);let t=r.req.query("method")||"";if(!t)return r.json({code:400,message:"no method provided",data:null},400);let i=gi(e,"sso_login_platform"),n=gi(e,"sso_client_id"),a=U0(e,"sso_compatibility_mode")?`${Qf(r)}/api/auth/${t}`:`${Qf(r)}/api/auth/sso_callback?method=${t}`,o=gi(e,"sso_login_url"),c=gi(e,"sso_token_url"),l=gi(e,"sso_userinfo_url"),d=gi(e,"sso_scopes"),u=gi(e,"sso_oidc_discovery_url");try{if(i==="OIDC"){let g=await BH(u||o),p=lfe(n,CH(r)),I=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:a,scope:d||"openid profile",state:p});return r.redirect(`${g.authUrl}?${I.toString()}`,302)}let f=EH(i,o,c,l,d);if(!f)return r.json({code:400,message:"invalid platform",data:null},400);let A=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:a,scope:f.scope});for(let[g,p]of Object.entries(f.extraAuth||{}))A.set(g,p);return r.redirect(`${f.authUrl}?${A.toString()}`,302)}catch(f){return r.json({code:400,message:f.message||"SSO error",data:null},400)}});NC.get("/sso_callback",async r=>{let e=await ne(r.env);if(!U0(e,"sso_login_enabled"))return r.text("Single sign-on is not enabled",403);let t=r.req.query("method")||"";if(t!=="get_sso_id"&&t!=="sso_get_token")return r.text("invalid request",400);let i=gi(e,"sso_login_platform"),n=gi(e,"sso_client_id"),s=gi(e,"sso_client_secret"),a=U0(e,"sso_compatibility_mode"),o=a?`${Qf(r)}/api/auth/${t}`:`${Qf(r)}/api/auth/sso_callback?method=${t}`,c=gi(e,"sso_login_url"),l=gi(e,"sso_token_url"),d=gi(e,"sso_userinfo_url"),u=gi(e,"sso_scopes"),f=gi(e,"sso_oidc_discovery_url");try{let A,g,p,I,m,w,B;if(i==="OIDC"){let R=await BH(f||c);if(A=R.tokenUrl,g=R.userUrl,p="sub",I="preferred_username",m=u||"openid profile",!dfe(n,CH(r),r.req.query("state")||""))return r.text("incorrect or expired state parameter",400);let U=r.req.query("code")||"",D=await(await fetch(A,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",code:U,client_id:n,client_secret:s,redirect_uri:o,scope:m}).toString()})).json().catch(()=>({}));if(w=D.access_token,!w)throw new Error("no access_token in token response");if(g){B=await(await fetch(g,{headers:{Authorization:`Bearer ${w}`,Accept:"application/json"}})).json().catch(()=>({}));let Q=B?.preferred_username||B?.name||B?.nickname||"";if(!B?.sub&&!Q){let v=D.id_token;if(v){let E=xH(v);B=B||{},B.sub=B.sub||E?.sub,B.name=Q||E?.name||E?.preferred_username||""}}Q&&(B.name=Q)}else{let b=D.id_token;if(!b)throw new Error("no id_token and no userinfo endpoint");B=xH(b)||{},B.sub=B.sub||B.name||""}}else{let R=EH(i,c,l,d,u);if(!R)return r.text("invalid platform",400);A=R.tokenUrl,g=R.userUrl,p=R.idField,I=R.usernameField,m=R.scope;let U=r.req.query(R.authField)||"";if(!U)return r.text("No code provided",400);let T;if(R.tokenStyle==="json")T=await fetch(A,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:n,clientSecret:s,code:U,grantType:"authorization_code"})});else{let v={client_id:n,client_secret:s,code:U,redirect_uri:o,scope:m,...R.extraForm||{}};T=await fetch(A,{method:"POST",headers:{Accept:"application/json"},body:new URLSearchParams(v).toString()})}let D=await T.json().catch(()=>({}));if(w=D.access_token||D.accessToken,!w)throw new Error(`token exchange failed: ${D.error||T.status}`);let b={Accept:"application/json"};i==="Dingtalk"?b["x-acs-dingtalk-access-token"]=w:b.Authorization=`Bearer ${w}`,B=await(await fetch(g,{headers:b})).json().catch(()=>({}))}let C=String(B?.id??B?.sub??B?.[p]??"");if(!C||C==="0")return r.text("cannot get user id from SSO provider",400);if(t==="get_sso_id")return a?r.redirect(`${Qf(r)}/@manage?sso_id=${encodeURIComponent(C)}`,302):r.html(wH("sso_id",C));let x=(e.users||[]).find(R=>R.sso_id===C);if(!x){if(!U0(e,"sso_auto_register"))return r.text("user not found and auto register is disabled",400);let U=String(B?.login??B?.[I]??B?.name??"");x=await ffe(e,U||C,C)}let _=await ufe(x,r);return a?r.redirect(`${Qf(r)}/@login?token=${encodeURIComponent(_)}`,302):r.html(wH("token",_))}catch(A){return r.text(A.message||"SSO error",500)}});function xH(r){try{let e=r.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=t.padEnd(Math.ceil(t.length/4)*4,"="),n=atob(i);return JSON.parse(n)}catch{return null}}Fr();Ka();nt();zi();var Tc=new at;function pi(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Fc(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=atob(t),n=new Uint8Array(i.length);for(let s=0;s<i.length;s++)n[s]=i.charCodeAt(s);return n}function hfe(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function Afe(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function Pc(r){let e=r.u8[r.i++],t=e>>5,i=e&31,n=i;if(i===24)n=r.u8[r.i++];else if(i===25)n=r.u8[r.i]<<8|r.u8[r.i+1],r.i+=2;else if(i===26)n=r.u8[r.i]<<24|r.u8[r.i+1]<<16|r.u8[r.i+2]<<8|r.u8[r.i+3],r.i+=4;else if(i===27){let s=0n;for(let a=0;a<8;a++)s=s<<8n|BigInt(r.u8[r.i++]);n=Number(s)}else if(i===31){if(t===4){let s=[];for(;r.u8[r.i]!==255;)s.push(Pc(r));return r.i++,s}else if(t===5){let s={};for(;r.u8[r.i]!==255;){let a=Pc(r),o=Pc(r);s[String(a)]=o}return r.i++,s}}switch(t){case 0:return n;case 1:return-1-n;case 2:{let s=r.u8.slice(r.i,r.i+n);return r.i+=n,s}case 3:{let s=new TextDecoder().decode(r.u8.slice(r.i,r.i+n));return r.i+=n,s}case 4:{let s=[];for(let a=0;a<n;a++)s.push(Pc(r));return s}case 5:{let s={};for(let a=0;a<n;a++){let o=Pc(r),c=Pc(r);s[String(o)]=c}return s}default:throw new Error(`unsupported CBOR major type ${t}`)}}async function gfe(r){let e=r[1],t=r[3];if(e===2){let i=r[-1],n=r[-2],s=r[-3];if(i!==1)throw new Error("unsupported EC curve (only P-256)");let a={kty:"EC",crv:"P-256",x:pi(new Uint8Array(n)),y:pi(new Uint8Array(s))};return await crypto.subtle.importKey("jwk",a,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}if(e===3){let i=r[-1],n=r[-2],s={kty:"RSA",n:pi(new Uint8Array(i)),e:pi(new Uint8Array(n))};return await crypto.subtle.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"])}throw new Error(`unsupported COSE kty ${e}`)}async function pfe(r){let t=Pc({u8:r,i:0}),i=t.authData,n=t.attStmt||{},s=i.slice(0,32),a=i[32],o=i[33]<<24|i[34]<<16|i[35]<<8|i[36];if(!(a&64))throw new Error("attestedCredentialData not present");let c=37,l=i.slice(c,c+16);c+=16;let d=i[c]<<8|i[c+1];c+=2;let u=i.slice(c,c+d);c+=d;let f={u8:i.slice(c),i:0},A=Pc(f),g=await gfe(A);return{authData:i,publicKey:g,aaguid:l,credentialId:u,signCount:o,flags:a}}function OC(r,e){let i=(r.settings||[]).find(n=>n.key===e)?.value;return i==="true"||i==="1"}function bH(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return i?.value?String(i.value):t}function qC(r,e){let t=bH(e,"webauthn_rp_id");if(t)return t;try{return new URL(r.req.url).hostname}catch{return"localhost"}}function pS(){let r=new Uint8Array(32);return crypto.getRandomValues(r),r}function vH(r){return hfe(new TextEncoder().encode(JSON.stringify(r)))}function kH(r){return JSON.parse(new TextDecoder().decode(Afe(r)))}async function mfe(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():pi(pS())},i=await qr(e);return await Ha(t,i)}function R0(r){return r.webauthn_credentials||[]}Tc.post("/webauthn_begin_login",async r=>{let e=await ne(r.env);if(!OC(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.query("username")||"",i=qC(r,e),n=pS(),s={challenge:pi(n),userVerification:"preferred"},a;if(t){let c=(e.users||[]).find(l=>l.username===t);if(!c)return r.json({code:400,message:"user not found",data:null},400);s.userId=String(c.id),s.username=t,a=R0(c).map(l=>({id:typeof l.id=="string"?l.id:pi(new Uint8Array(l.id)),type:"public-key"})),s.allowedCredentials=a}let o={challenge:s.challenge,rpId:i,userVerification:s.userVerification};return a&&a.length>0&&(o.allowCredentials=a),r.json({code:200,message:"success",data:{options:o,session:vH(s)}})});Tc.post("/webauthn_finish_login",async r=>{let e=await ne(r.env);if(!OC(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.header("session")||r.req.header("Session")||"",i;try{i=kH(t)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let n=await r.req.json().catch(()=>({})),s=qC(r,e);try{let a=Fc(n.id||""),o=JSON.parse(new TextDecoder().decode(Fc(n.response?.clientDataJSON||"")));if(o.challenge!==i.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(o.type!=="webauthn.get")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Fc(n.response?.authenticatorData||"");if(c.length<37)throw new Error("invalid authenticatorData");let l=c.slice(0,32),d=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(s)));if(pi(l)!==pi(d))return r.json({code:400,message:"rpId hash mismatch",data:null},400);let u=r.req.query("username")||i.username||"",f=u?(e.users||[]).find(R=>R.username===u):null,A;if(f)A=R0(f).find(R=>(typeof R.id=="string"?R.id:pi(new Uint8Array(R.id)))===n.id);else{let R=Fc(n.response?.userHandle||"");if(R.length){let U=new TextDecoder().decode(R);f=(e.users||[]).find(T=>String(T.id)===U),f&&(A=R0(f).find(T=>(typeof T.id=="string"?T.id:pi(new Uint8Array(T.id)))===n.id))}}if(!f||!A)return r.json({code:400,message:"credential not found",data:null},400);let g=A.publicKey;if(!g)return r.json({code:400,message:"credential missing public key",data:null},400);let p=await crypto.subtle.importKey("jwk",g,g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"}:{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),I=Fc(n.response?.signature||""),m=new Uint8Array(await crypto.subtle.digest("SHA-256",Fc(n.response?.clientDataJSON||""))),w=new Uint8Array(c.length+m.length);w.set(c,0),w.set(m,c.length);let B=g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5"}:{name:"ECDSA",hash:"SHA-256"};if(!await crypto.subtle.verify(B,p,I,w).catch(()=>!1))return r.json({code:400,message:"signature verification failed",data:null},400);let x=c[33]<<24|c[34]<<16|c[35]<<8|c[36];if(A.sign_count!==void 0&&x!==0&&x<=A.sign_count)return r.json({code:400,message:"stale signCount (possible replay)",data:null},400);A.sign_count=x,await he(e,r.env);let _=await mfe(f,r);return r.json({code:200,message:"success",data:{token:_}})}catch(a){return r.json({code:400,message:a.message||"WebAuthn login failed",data:null},400)}});Tc.post("/webauthn_begin_registration",async r=>{let e=await ne(r.env);if(!OC(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Je(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=qC(r,e),n=pS(),s=new TextEncoder().encode(String(t.id)),a={challenge:pi(n),userId:String(t.id),username:t.username,userVerification:"preferred"},o=R0(t).map(l=>({id:typeof l.id=="string"?l.id:pi(new Uint8Array(l.id)),type:"public-key"})),c={challenge:a.challenge,rp:{name:bH(e,"site_title","OpenList"),id:i},user:{id:pi(s),name:t.username,displayName:t.username},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,authenticatorSelection:{userVerification:a.userVerification,residentKey:"preferred"},attestation:"none"};return o.length>0&&(c.excludeCredentials=o),r.json({code:200,message:"success",data:{options:c,session:vH(a)}})});Tc.post("/webauthn_finish_registration",async r=>{let e=await ne(r.env);if(!OC(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Je(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=r.req.header("Session")||r.req.header("session")||"",n;try{n=kH(i)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let s=await r.req.json().catch(()=>({})),a=qC(r,e);try{let o=JSON.parse(new TextDecoder().decode(Fc(s.response?.clientDataJSON||"")));if(o.challenge!==n.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(o.type!=="webauthn.create")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Fc(s.response?.attestationObject||""),{publicKey:l,aaguid:d,credentialId:u,signCount:f}=await pfe(c),g={id:s.id||pi(u),publicKey:await crypto.subtle.exportKey("jwk",l),aaguid:pi(d),sign_count:f,created_at:new Date().toISOString()},p=t;return p.webauthn_credentials||(p.webauthn_credentials=[]),p.webauthn_credentials.push(g),await he(e,r.env),r.json({code:200,message:"Registered Successfully",data:null})}catch(o){return r.json({code:400,message:o.message||"registration failed",data:null},400)}});Tc.post("/delete_authn",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=(await r.req.json().catch(()=>({}))).id||"",n=await ne(r.env),s=(n.users||[]).find(o=>o.id===e.id);if(!s)return r.json({code:404,message:"user not found",data:null},404);let a=(s.webauthn_credentials||[]).length;return s.webauthn_credentials=(s.webauthn_credentials||[]).filter(o=>o.id!==i),s.webauthn_credentials.length===a?r.json({code:404,message:"credential not found",data:null},404):(await he(n,r.env),r.json({code:200,message:"Deleted Successfully",data:null}))});Tc.get("/getcredentials",async r=>{let e=await Je(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=R0(e).map(i=>({id:i.id,fingerprint:i.aaguid||""}));return r.json({code:200,message:"success",data:t})});var N0=new Map,Ff=new Map;function yfe(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Ife(){let r=Date.now();if(N0.size>2e4)for(let[e,t]of N0)r-t.start>6e4&&N0.delete(e);if(Ff.size>2e4)for(let[e,t]of Ff)r-t.start>36e5&&Ff.delete(e)}async function wfe(r,e){let t=yfe(r),i=Date.now(),n=0,s=0;try{let a=await ne(r.env),o={};for(let c of a.settings||[])o[c.key]=c.value;n=parseInt(o.ip_limit,10)||0,s=parseInt(o.traffic_limit,10)||0}catch{}if(Ife(),n>0){let a=N0.get(t);if(!a||i-a.start>6e4)N0.set(t,{start:i,count:1});else if(a.count+=1,a.count>n)return r.json({code:429,message:"Too many requests, slow down",data:null},429)}if(s>0){let a=Ff.get(t),o=s*1024*1024;if(a&&i-a.start<=36e5&&a.bytes>=o)return r.json({code:429,message:"Traffic limit exceeded",data:null},429)}if(await e(),(r.req.query("token")||r.req.query("access_token"))&&(r.res?.headers?.set("Referrer-Policy","no-referrer"),r.res?.headers?.set("Cache-Control","no-store, no-cache, must-revalidate"),r.res?.headers?.set("Pragma","no-cache")),s>0){let a=parseInt(r.res?.headers?.get("content-length")||"0",10)||0;if(a>0){let o=Ff.get(t);!o||i-o.start>36e5?Ff.set(t,{start:i,bytes:a}):o.bytes+=a}}}function SH(r){r.use("*",wfe),r.use("*",async(e,t)=>{let{auditMiddleware:i}=await Promise.resolve().then(()=>(zi(),Fx));return i(e,t)}),r.use("*",async(e,t)=>{await t(),e.res.headers.set("X-Frame-Options","DENY"),e.res.headers.set("X-Content-Type-Options","nosniff"),e.res.headers.set("Content-Security-Policy","default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; media-src 'self' blob:; frame-ancestors 'none'"),e.res.headers.set("Strict-Transport-Security","max-age=31536000; includeSubDomains"),e.res.headers.set("Referrer-Policy","no-referrer")}),r.use("*",ID({origin:(e,t)=>{if(!e)return e;let s=((t.env||{}).ALLOW_URLS||(typeof process<"u"?process.env?.ALLOW_URLS:"")||"").split(",").map(o=>o.trim()).filter(Boolean);if(s.length>0)return s.includes(e)?e:null;let a=t.req.header("host")||"";try{if(new URL(e).host===a)return e}catch{}return null},allowHeaders:["Content-Type","Authorization","X-Requested-With"],allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],exposeHeaders:["Content-Length","Content-Type"],maxAge:600,credentials:!0})),r.route("/raw",Ys),r.route("/fs",wt),r.route("/auth",Pn),r.route("/public",Za),r.route("/admin",qe),r.route("/mcp",T0),r.route("/debug",AS),r.route("/share",Ai),r.route("/task",Yi),r.route("/auth",NC),r.route("/authn",Tc),r.route("/d",Ys),r.route("/sd",Ys),r.route("/p",Ys),r.route("/me",pf),r.get("/me",BC),r.post("/me/update",EC),r.post("/user/update_pwd",tH),r.get("/logout",If),r.post("/logout",If),r.get("/health",e=>e.json({ok:!0,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development"})),r.get("/healthz",async e=>{let t={},i=!0;try{let a=await ne(e.env);t.config={ok:!0,storages:a?.storages?.length??0,users:a?.users?.length??0}}catch(a){i=!1,t.config={ok:!1,error:a?.message||String(a)}}let n;try{n=await Qd(e.env)}catch(a){i=!1,n={configured:!1,connected:!1,error:a?.message||String(a)}}t.persistence={configured:!!n?.configured,connected:!!n?.connected,platform:n?.platform??null,error:n?.error??null};let s=As(e.env);return n?.configured||(t.persistence.mode=s?"unavailable":"memory",s?(t.persistence.note=Eo,i=!1):t.persistence.note="No persistence configured \u2014 changes are ephemeral"),n?.configured&&!n?.connected&&(i=!1),e.json({ok:i,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development",checks:t},i?200:503)})}Fr();nt();var xfe="https://res.oplist.org/logo/logo.svg",Uc=new at;function O0(r){return r.redirect(xfe,302)}Uc.get("/logo.svg",O0);Uc.get("/logo.png",O0);Uc.get("/favicon.svg",O0);Uc.get("/favicon.png",O0);Uc.get("/favicon.ico",O0);var Cfe=["assets","images","streamer","static"];async function Efe(r){let e="latest";try{let i=(await ne()).get("SELECT * FROM x_settings WHERE key = 'version'");if(i&&i.value){let n=i.value.match(/Frontend:\s*([^\s-]+)/);n&&(e=n[1])}}catch{}return r.replace(/\$version/g,e)}for(let r of Cfe)Uc.get(`/${r}/*`,async(e,t)=>{let n=e.env?.ASSET_URLS||(typeof process<"u"?process.env?.ASSET_URLS:"")||"";if(!n)return await t();let s=await Efe(n),a=`/${r}/`,o=e.req.path.startsWith(a)?e.req.path.slice(a.length):"";return e.redirect(`${s}/${r}/${o}`,302)});Fr();$l();ar();$A();function DH(r,e){return VO(r,e)}gc();Pd();var mS=new at,Bfe=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}};async function bfe(r){let e=r.req.header("Authorization")||"";if(e.startsWith("Basic "))try{let t=atob(e.substring(6).trim()),i=t.indexOf(":");if(i<0)return null;let n=t.substring(0,i),s=t.substring(i+1),{users:a}=await w0(r.env),o=a.find(c=>c.username===n&&!c.disabled);return o?o.password?await mf(o,s)?o:null:s===""?o:null:null}catch{return null}if(e.startsWith("Bearer ")){let t=await ns(r);return t?t.user:null}return null}function vfe(r){let t=new URL(r.req.url).pathname.replace(/^\/dav/,"");t||(t="/");try{return decodeURIComponent(t)}catch{return t}}function q0(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}mS.all("/*",async r=>{let e=await bfe(r);if(!e)return r.text("Unauthorized",401,{"WWW-Authenticate":'Basic realm="OpenList"'});let t=mc(e,pc.WEBDAV_READ),i=mc(e,pc.WEBDAV_MANAGE);if(!t&&!i)return r.text("Forbidden",403);let n=r.req.method.toUpperCase(),s=vfe(r),a=Bfe(r);try{switch(n){case"OPTIONS":return r.header("DAV","1, 2"),r.header("Allow","OPTIONS, PROPFIND, GET, HEAD, PUT, MKCOL, DELETE, MOVE, COPY"),r.header("MS-Author-Via","DAV"),r.body(null,200);case"PROPFIND":{if(!t)return r.text("Forbidden",403);let o=r.req.header("Depth")||"1",l=((await lr(s,a)).content||[]).map(f=>({name:f.name,size:f.size||0,isFolder:!!f.is_dir,modified:f.modified||new Date().toISOString()})),d=s==="/"?"/":s.endsWith("/")?s:s+"/",u=DH(d,l);return r.body(u,207,{"Content-Type":"application/xml; charset=utf-8"})}case"GET":case"HEAD":{if(!t)return r.text("Forbidden",403);let{item:o,rawUrl:c}=await Gi(s,a);return o?o.is_dir?r.text("Is a directory",400):r.redirect(c||`/api/d${da(s)}`,302):r.text("Not found",404)}case"PUT":{if(!i)return r.text("Forbidden",403);let o=Buffer.from(await r.req.arrayBuffer());return await ts(s,o,a),r.body(null,201)}case"MKCOL":return i?(await GA(s,a),r.body(null,201)):r.text("Forbidden",403);case"DELETE":{if(!i)return r.text("Forbidden",403);let{dir:o,name:c}=q0(s);return await hc(o,[c],a),r.body(null,204)}case"MOVE":{if(!i)return r.text("Forbidden",403);let o=r.req.header("Destination")||"",c=o;try{c=decodeURIComponent(new URL(o,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=q0(s),d=q0(c);return await zu(l.dir,d.dir,[l.name],a),r.body(null,201)}case"COPY":{if(!i)return r.text("Forbidden",403);let o=r.req.header("Destination")||"",c=o;try{c=decodeURIComponent(new URL(o,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=q0(s),d=q0(c);return await JA(l.dir,d.dir,[l.name],a),r.body(null,201)}case"LOCK":case"UNLOCK":return r.text("Locking not supported",405);default:return r.text("Method Not Allowed",405)}}catch(o){let c=Le(o);return c.includes("not found")||c.includes("storage not found")?r.text("Not Found",404):r.text(c,500)}});Fr();$l();ar();gc();var gd=new at;function MC(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Lr(r,e,t){let i=`<?xml version="1.0" encoding="UTF-8"?> +<Error><Code>${MC(r)}</Code><Message>${MC(e)}</Message></Error>`;return new Response(i,{status:t,headers:{"Content-Type":"application/xml","x-amz-request-id":"-"}})}function LC(r){let i=new URL(r.req.url).pathname.replace(/^\/s3\/?/,"").split("/").filter(Boolean),n=i[0]||"",s=i.slice(1).map(decodeURIComponent).join("/");return{bucket:n,key:s}}async function M0(r){let e=await ns(r);return e?e.user:null}var L0=r=>{try{let e=r.executionCtx;return e&&typeof e.waitUntil=="function"?{waitUntil:t=>e.waitUntil(t)}:void 0}catch{return}};gd.get("/",async r=>{if(!await M0(r))return Lr("AccessDenied","Authentication required",403);try{let n=`<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner><ID>openlist</ID><DisplayName>openlist</DisplayName></Owner> <Buckets> -${((await Zt("/",u0(r))).content||[]).filter(s=>s.is_dir).map(s=>` <Bucket><Name>${Yw(s.name)}</Name><CreationDate>${Yw(s.modified||new Date().toISOString())}</CreationDate></Bucket>`).join(` +${((await lr("/",L0(r))).content||[]).filter(s=>s.is_dir).map(s=>` <Bucket><Name>${MC(s.name)}</Name><CreationDate>${MC(s.modified||new Date().toISOString())}</CreationDate></Bucket>`).join(` `)} </Buckets> -</ListAllMyBucketsResult>`;return new Response(n,{status:200,headers:{"Content-Type":"application/xml"}})}catch(t){return Dr("InternalError",Ne(t),500)}});fl.get("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("NoSuchKey","NoSuchKey",404);let n=`/${t}/${i}`;try{let{item:s,rawUrl:o}=await Di(n,u0(r));return!s||s.is_dir?Dr("NoSuchKey","NoSuchKey",404):o?r.redirect(o,302):Dr("NoSuchKey","NoSuchKey",404)}catch(s){return Dr("NoSuchKey",Ne(s),404)}});fl.on("HEAD","/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("NoSuchKey","NoSuchKey",404);try{let{item:n}=await Di(`/${t}/${i}`,u0(r));if(!n||n.is_dir)return Dr("NoSuchKey","NoSuchKey",404);let s={"Content-Length":String(n.size||0),"Content-Type":String(n.type||"application/octet-stream"),"Last-Modified":n.modified||new Date().toISOString()};return new Response(null,{status:200,headers:s})}catch{return Dr("NoSuchKey","NoSuchKey",404)}});fl.put("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("InvalidArgument","Invalid bucket/key",400);try{let n=Buffer.from(await r.req.arrayBuffer());return await Tn(`/${t}/${i}`,n,u0(r)),new Response(null,{status:200,headers:{ETag:`"${Date.now().toString(16)}"`}})}catch(n){return Dr("InternalError",Ne(n),500)}});fl.delete("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("InvalidArgument","Invalid bucket/key",400);let n=i.lastIndexOf("/"),s=n>=0?`/${t}/${i.slice(0,n)}`:`/${t}`,o=n>=0?i.slice(n+1):i;try{return await ka(s,[o],u0(r)),new Response(null,{status:204})}catch(a){return Dr("NoSuchKey",Ne(a),404)}});Ve();ic();var On=new Xe;function Iae(r,e,t){return!!(/\.[a-zA-Z0-9]+$/.test(r)||(t==="GET"||t==="HEAD")&&e.includes("text/html"))}var wae=["/api/public/env_check","/api/public/init_status","/api/healthz"];function xae(r){return wae.includes(r)}var TO=["/kv-list","/kv-get","/kv-put","/kv-delete"];function Cae(r){return TO.includes(r)}On.use("*",async(r,e)=>{let t=r.env||{};try{let s=new URL(r.req.url);t.__requestOrigin||(t.__requestOrigin=s.origin)}catch{}sC(t);let{pathname:i}=new URL(r.req.url);if(!(Iae(i,r.req.header("accept")||"",r.req.method)||xae(i)||Cae(i))){let s=await rc(t);if(s.message){let o=IO(s);return r.json({code:503,message:s.message,data:{error:"STORAGE_CONFIG_ERROR",code:s.code,configError:s.message,summary:Au(s.message),reason:o.reason,suggestion:o.suggestion}},503)}}await e()});for(let r of TO)On.all(r,e=>e.json({code:410,message:`KV proxy endpoint "${r}" is not served by this deployment. It only exists on EdgeOne Edge Functions (functions/kv-*) or Cloudflare Pages Functions. See /api/public/env_check for the storage backend actually in use.`,data:null},410));var UO=new Xe;FO(UO);On.route("/api",UO);On.route("/d",Es);On.route("/sd",Es);On.route("/p",Es);On.route("/",za);On.route("/dav",dv);On.route("/s3",fl);var uv=null;function RO(r){uv=r}On.all("*",async r=>{let e=r.env;if(e&&e.ASSETS&&typeof e.ASSETS.fetch=="function"){let t=new URL(r.req.url),i=await e.ASSETS.fetch(r.req.raw);if(i.status>=200&&i.status<300){if(t.pathname==="/"||t.pathname==="/index.html"){let s=new Headers(i.headers);return s.set("Cache-Control","no-cache, must-revalidate"),new Response(i.body,{status:i.status,headers:s})}return i}let n=new Request(`${t.origin}/`,r.req.raw);return e.ASSETS.fetch(n)}return uv&&(r.req.method==="GET"||r.req.method==="HEAD")?r.body(uv,200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-cache, must-revalidate"}):r.text("404 Not Found",404)});var NO=On;var qO=`<!doctype html> +</ListAllMyBucketsResult>`;return new Response(n,{status:200,headers:{"Content-Type":"application/xml"}})}catch(t){return Lr("InternalError",Le(t),500)}});gd.get("/*",async r=>{if(!await M0(r))return Lr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=LC(r);if(!t||!i)return Lr("NoSuchKey","NoSuchKey",404);let n=`/${t}/${i}`;try{let{item:s,rawUrl:a}=await Gi(n,L0(r));return!s||s.is_dir?Lr("NoSuchKey","NoSuchKey",404):a?r.redirect(a,302):Lr("NoSuchKey","NoSuchKey",404)}catch(s){return Lr("NoSuchKey",Le(s),404)}});gd.on("HEAD","/*",async r=>{if(!await M0(r))return Lr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=LC(r);if(!t||!i)return Lr("NoSuchKey","NoSuchKey",404);try{let{item:n}=await Gi(`/${t}/${i}`,L0(r));if(!n||n.is_dir)return Lr("NoSuchKey","NoSuchKey",404);let s={"Content-Length":String(n.size||0),"Content-Type":String(n.type||"application/octet-stream"),"Last-Modified":n.modified||new Date().toISOString()};return new Response(null,{status:200,headers:s})}catch{return Lr("NoSuchKey","NoSuchKey",404)}});gd.put("/*",async r=>{if(!await M0(r))return Lr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=LC(r);if(!t||!i)return Lr("InvalidArgument","Invalid bucket/key",400);try{let n=Buffer.from(await r.req.arrayBuffer());return await ts(`/${t}/${i}`,n,L0(r)),new Response(null,{status:200,headers:{ETag:`"${Date.now().toString(16)}"`}})}catch(n){return Lr("InternalError",Le(n),500)}});gd.delete("/*",async r=>{if(!await M0(r))return Lr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=LC(r);if(!t||!i)return Lr("InvalidArgument","Invalid bucket/key",400);let n=i.lastIndexOf("/"),s=n>=0?`/${t}/${i.slice(0,n)}`:`/${t}`,a=n>=0?i.slice(n+1):i;try{return await hc(s,[a],L0(r)),new Response(null,{status:204})}catch(o){return Lr("NoSuchKey",Le(o),404)}});nt();Bo();var os=new at;function kfe(r,e,t){return!!(/\.[a-zA-Z0-9]+$/.test(r)||(t==="GET"||t==="HEAD")&&e.includes("text/html"))}var Sfe=["/api/public/env_check","/api/public/init_status","/api/healthz"];function Dfe(r){return Sfe.includes(r)}var _H=["/kv-list","/kv-get","/kv-put","/kv-delete"];function _fe(r){return _H.includes(r)}os.use("*",async(r,e)=>{let t=r.env||{};try{let s=new URL(r.req.url);t.__requestOrigin||(t.__requestOrigin=s.origin)}catch{}rB(t);let{pathname:i}=new URL(r.req.url);if(!(kfe(i,r.req.header("accept")||"",r.req.method)||Dfe(i)||_fe(i))){let s=await $c(t);if(s.message){let a=gH(s);return r.json({code:503,message:s.message,data:{error:"STORAGE_CONFIG_ERROR",code:s.code,configError:s.message,summary:_f(s.message),reason:a.reason,suggestion:a.suggestion}},503)}}await e()});for(let r of _H)os.all(r,e=>e.json({code:410,message:`KV proxy endpoint "${r}" is not served by this deployment. It only exists on EdgeOne Edge Functions (functions/kv-*) or Cloudflare Pages Functions. See /api/public/env_check for the storage backend actually in use.`,data:null},410));var QH=new at;SH(QH);os.route("/api",QH);os.route("/d",Ys);os.route("/sd",Ys);os.route("/p",Ys);os.route("/",Uc);os.route("/dav",mS);os.route("/s3",gd);var yS=null;function FH(r){yS=r}os.all("*",async r=>{let e=r.env;if(e&&e.ASSETS&&typeof e.ASSETS.fetch=="function"){let t=new URL(r.req.url),i=await e.ASSETS.fetch(r.req.raw);if(i.status>=200&&i.status<300){if(t.pathname==="/"||t.pathname==="/index.html"){let s=new Headers(i.headers);return s.set("Cache-Control","no-cache, must-revalidate"),new Response(i.body,{status:i.status,headers:s})}return i}let n=new Request(`${t.origin}/`,r.req.raw);return e.ASSETS.fetch(n)}return yS&&(r.req.method==="GET"||r.req.method==="HEAD")?r.body(yS,200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-cache, must-revalidate"}):r.text("404 Not Found",404)});var PH=os;var TH=`<!doctype html> <html lang="en" translate="no"> <head> <!-- customize head --> @@ -376,7 +378,7 @@ document.getElementsByTagName(item.parentTagName)[0].appendChild(childNode); </body> </html> -`;RO(qO);function Bae(r){return NO.fetch(r.request,r.env,r)}var nbe=Bae;export{nbe as default,Bae as onRequest}; +`;FH(TH);function Ffe(r){return PH.fetch(r.request,r.env,r)}var Z_e=Ffe;export{Z_e as default,Ffe as onRequest}; /*! Bundled license information: crypto-js/ripemd160.js: diff --git a/package.json b/package.json index 8662a0cd..5a7381f1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,9 @@ }, "DB_CIPHER": { "description": "At-rest cipher for sensitive fields (drive credentials, 2FA secrets, password hashes): `none` (default, no encryption), `aes-256-gcm` (HKDF-derived AES-256-GCM key — the `enc:v2:` envelope written by existing encrypted deployments, recommended), `aes-256-gcm-pbkdf2` (legacy `enc:v1:` envelope, PBKDF2 per field, slow), `aes-256-cbc-hmac` (`enc:v3:`), `chacha20-poly1305` (`enc:v4:`, RFC 8439, pure-JS implementation), `des-cbc-hmac` / `3des-cbc-hmac` (`enc:v5:`/`enc:v6:`, compatibility only — single DES is 56-bit and 3DES is deprecated, do not use for real data). Ciphertexts carry an `enc:vN:` prefix and are decrypted by prefix on read, so switching back to `none` (or changing algorithms) never makes existing data unreadable — it only changes how newly written data is stored (legacy ciphertext is migrated to plaintext on the next save). Key derivation is cached per isolate, and unchanged fields are not re-encrypted on save. This setting does NOT affect the shared secret: with `none`, a secret is still generated and persisted during setup when JWT_SECRET is not provided, because JWT signing needs it." + }, + "PLUGIN_MANIFEST_ORIGIN": { + "description": "Optional trusted origin for installing plugin manifests by URL. The URL must exactly match this origin; redirects and oversized responses are rejected. Leave empty to disable manifest_url installs." } } }, diff --git a/src/backend/durable-objects/OpenListDB.ts b/src/backend/durable-objects/OpenListDB.ts index 007cd077..5fd34b28 100644 --- a/src/backend/durable-objects/OpenListDB.ts +++ b/src/backend/durable-objects/OpenListDB.ts @@ -13,7 +13,12 @@ * 通过 RPC 调用(stub.kvGet / sqlQuery 等),每个实例用 `idFromName` 定位到 * 固定实例,保证数据持久在同一 DO 实例。 */ -import { D1_SCHEMA, KV_SCHEMA_SQLITE } from "../internal/model/store/schema" +import { + buildAddColumnDdl, + buildTableInfoDdl, + D1_SCHEMA, + KV_SCHEMA_SQLITE, +} from "../internal/model/store/schema" export class OpenListDB { private state: any @@ -32,6 +37,12 @@ export class OpenListDB { for (const ddl of [...KV_SCHEMA_SQLITE, ...D1_SCHEMA]) { this.sql.exec(ddl) } + const columns = this.sql + .exec(buildTableInfoDdl("plugins")) + .toArray() + if (!columns.some((column: any) => column.name === "manifest")) { + this.sql.exec(buildAddColumnDdl("plugins", "manifest", "sqlite")) + } } async init(): Promise<void> { diff --git a/src/backend/internal/model/db.ts b/src/backend/internal/model/db.ts index a1814a6f..fc5714c0 100644 --- a/src/backend/internal/model/db.ts +++ b/src/backend/internal/model/db.ts @@ -2003,10 +2003,15 @@ async function unsealDb( } } +export interface SaveDbOptions { + force?: boolean + publishOnSuccess?: boolean +} + export const saveDb = async ( data: any, envCtx?: any, - options?: { force?: boolean }, + options?: SaveDbOptions, ): Promise<boolean> => { if (envCtx) { globalEnvCtx = envCtx @@ -2043,14 +2048,14 @@ export const saveDb = async ( return false } - memoryDb = data - dbWriteBlocked = false - // Refresh the request cache so any getDb() later in this request observes - // the write rather than a pre-write snapshot. - // 无参调用会以 globalEnvCtx 为键命中缓存,因此这里也同步刷新该键, - // 否则「写后读」在无参路径上可能读到 TTL 内的旧快照。 + const publishOnSuccess = options?.publishOnSuccess === true const cacheKey = envCtx || resolveNoArgKey() - if (cacheKey) dbCache.set(cacheKey, { ts: Date.now(), db: data }) + const publish = () => { + memoryDb = data + dbWriteBlocked = false + if (cacheKey) dbCache.set(cacheKey, { ts: Date.now(), db: data }) + } + if (!publishOnSuccess) publish() // `activeEnv` 已在本函数开头解析(写前守卫也依赖它),这里只需通过可注入的 // storeBackendLoader 取后端,便于测试统计 load/save 次数。 @@ -2087,7 +2092,13 @@ export const saveDb = async ( console.log( `[DB] saveDb: sealed data size=${JSON.stringify(sealed).length} bytes`, ) - await backend.save(sealed, activeEnv) + const saved = await backend.save(sealed, activeEnv) + if (!saved) { + console.warn( + `[DB] saveDb FAILED: backend=${backend.name} returned false`, + ) + return false + } } catch (err: any) { console.error( `[DB] saveDb FAILED: backend=${backend.name}, error=${err?.message || err}`, @@ -2098,6 +2109,7 @@ export const saveDb = async ( ) } + if (publishOnSuccess) publish() console.log( `[DB] Successfully persisted ${data.storages?.length || 0} storages to ${backend.name}`, ) @@ -2109,6 +2121,14 @@ export const saveDb = async ( return true } +export async function reloadDb(envCtx: any): Promise<any> { + if (envCtx && typeof envCtx === "object") { + dbCache.delete(envCtx) + dbInflight.delete(envCtx) + } + return loadDb(envCtx) +} + export async function resolvePath(virtualPath: string, envCtx?: any) { const db = await getDb(envCtx) diff --git a/src/backend/internal/model/db_cache.test.ts b/src/backend/internal/model/db_cache.test.ts index a56c7c51..756a96c7 100644 --- a/src/backend/internal/model/db_cache.test.ts +++ b/src/backend/internal/model/db_cache.test.ts @@ -231,6 +231,43 @@ test("getDb: 五个无参 getter 复用同一份缓存快照", async () => { assert.ok(Array.isArray(plugins)) }) +test("saveDb publishOnSuccess keeps the old snapshot after failure", async () => { + __resetDbCacheForTest() + const { backend } = createCountingBackend(SAMPLE) + const originalSave = backend.save + let shouldFail = true + backend.save = async (next: any) => { + if (shouldFail) throw new Error("write failed") + return originalSave(next) + } + __setStoreBackendLoaderForTest(async () => backend) + const env = { DB_DRIVER: "counting" } + const before = await getDb(env) + const candidate = { + ...before, + settings: [{ key: "site_title", value: "Changed" }], + } + + await assert.rejects( + saveDb(candidate, env, { publishOnSuccess: true } as any), + ) + assert.equal(await getDb(env), before) + + backend.save = async () => false + assert.equal( + await saveDb(candidate, env, { publishOnSuccess: true } as any), + false, + ) + assert.equal(await getDb(env), before) + + backend.save = originalSave + assert.equal( + await saveDb(candidate, env, { publishOnSuccess: true } as any), + true, + ) + assert.equal(await getDb(env), candidate) +}) + test("getDb: TTL 过期后允许重新加载(缓存不是永久固化)", async () => { __resetDbCacheForTest() const { backend, stats } = createCountingBackend(SAMPLE) diff --git a/src/backend/internal/model/plugin.test.ts b/src/backend/internal/model/plugin.test.ts new file mode 100644 index 00000000..cbc598df --- /dev/null +++ b/src/backend/internal/model/plugin.test.ts @@ -0,0 +1,143 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import { + applyPluginManifest, + parsePluginManifest, + toPublicPlugin, +} from "./plugin" + +const minimal = { + apiVersion: "v1", + id: "com.example.docs", + version: "1.0.0", + displayName: "Docs", +} + +test("plugin manifest v1 applies defaults", () => { + assert.deepEqual(parsePluginManifest(minimal), { + ...minimal, + description: "", + capabilities: [], + settingsSchema: {}, + }) +}) + +test("plugin manifest v1 rejects unknown fields and unsupported versions", () => { + assert.throws(() => parsePluginManifest({ ...minimal, extra: true })) + assert.throws(() => parsePluginManifest({ ...minimal, apiVersion: "v2" })) +}) + +test("plugin manifest v1 validates identity and capability names", () => { + assert.throws(() => parsePluginManifest({ ...minimal, id: "Example" })) + assert.throws(() => parsePluginManifest({ ...minimal, version: "" })) + assert.throws(() => + parsePluginManifest({ + ...minimal, + capabilities: ["files.read", "files.read"], + }), + ) + assert.throws(() => + parsePluginManifest({ ...minimal, capabilities: ["Files.Read"] }), + ) +}) + +test("plugin manifest v1 bounds nested JSON", () => { + let nested: any = { value: true } + for (let i = 0; i < 20; i++) nested = { nested } + assert.throws(() => + parsePluginManifest({ ...minimal, settingsSchema: nested }), + ) + assert.throws(() => + parsePluginManifest({ + ...minimal, + entry: JSON.parse('{"constructor":{"prototype":{}}}'), + }), + ) + assert.throws(() => + parsePluginManifest({ + ...minimal, + entry: { value: "x".repeat(70_000) }, + }), + ) + assert.throws(() => + parsePluginManifest({ + ...minimal, + settingsSchema: Object.fromEntries( + Array.from({ length: 5 }, (_, index) => [ + `field${index}`, + "x".repeat(8_000), + ]), + ), + entry: Object.fromEntries( + Array.from({ length: 5 }, (_, index) => [ + `field${index}`, + "x".repeat(8_000), + ]), + ), + }), + ) +}) + +test("plugin manifest preserves bounded opaque entry data", () => { + const entry = { module: "index.js", integrity: "sha256-abc" } + assert.deepEqual(parsePluginManifest({ ...minimal, entry }).entry, entry) +}) + +test("applying a manifest preserves legacy fields and synchronizes projections", () => { + const plugin = { + id: minimal.id, + name: "Old name", + version: "0.0.1", + description: "Old description", + enabled: false, + config_values: { token: "secret" }, + } + const updated = applyPluginManifest(plugin, { + ...minimal, + displayName: "New name", + version: "2.0.0", + description: "New description", + }) + assert.equal(updated.name, "New name") + assert.equal(updated.version, "2.0.0") + assert.equal(updated.description, "New description") + assert.equal(updated.enabled, false) + assert.deepEqual(updated.config_values, { token: "secret" }) + assert.equal(updated.manifest?.displayName, "New name") + assert.throws(() => applyPluginManifest(plugin, { ...minimal, id: "other" })) +}) + +test("public plugin projection keeps legacy rows and hides manifest internals", () => { + assert.deepEqual( + toPublicPlugin({ + id: "legacy", + script_content: "raw", + config_values: { token: "secret" }, + }), + { id: "legacy" }, + ) + + const projected = toPublicPlugin( + applyPluginManifest( + { id: minimal.id, enabled: true, config_values: { token: "secret" } }, + { + ...minimal, + capabilities: ["files_read"], + settingsSchema: { type: "object" }, + entry: { module: "index.js" }, + }, + ), + ) + assert.deepEqual(projected.manifest, { + apiVersion: "v1", + id: minimal.id, + version: minimal.version, + displayName: minimal.displayName, + description: "", + capabilities: ["files_read"], + }) + assert.equal("entry" in projected.manifest, false) + assert.equal("settingsSchema" in projected.manifest, false) + assert.equal("config_values" in projected, false) + assert.equal("script_content" in projected, false) +}) diff --git a/src/backend/internal/model/plugin.ts b/src/backend/internal/model/plugin.ts new file mode 100644 index 00000000..b3620b25 --- /dev/null +++ b/src/backend/internal/model/plugin.ts @@ -0,0 +1,226 @@ +import { z } from "zod" + +export const PLUGIN_MANIFEST_API_VERSION = "v1" +export const PLUGIN_MANIFEST_MAX_BYTES = 65_535 +export const PLUGIN_MANIFEST_MAX_DEPTH = 12 + +const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/ +const CONTROL_CHARACTERS_WITH_LINE_BREAKS = + /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/ +const FORBIDDEN_JSON_KEYS = new Set(["__proto__", "prototype", "constructor"]) + +const identifierSchema = z + .string() + .min(1) + .max(128) + .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/) + +const capabilitySchema = z + .string() + .min(1) + .max(128) + .regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/) + +const manifestSchema = z + .object({ + apiVersion: z.literal(PLUGIN_MANIFEST_API_VERSION), + id: identifierSchema, + version: z + .string() + .trim() + .min(1) + .max(64) + .refine((value) => !CONTROL_CHARACTERS.test(value)), + displayName: z + .string() + .trim() + .min(1) + .max(128) + .refine((value) => !CONTROL_CHARACTERS.test(value)), + description: z + .string() + .max(2048) + .default("") + .refine((value) => !CONTROL_CHARACTERS_WITH_LINE_BREAKS.test(value)), + capabilities: z + .array(capabilitySchema) + .max(32) + .default([]) + .refine((values) => new Set(values).size === values.length), + settingsSchema: z.record(z.unknown()).default({}), + entry: z.record(z.unknown()).optional(), + }) + .strict() + +export type PluginManifest = z.infer<typeof manifestSchema> +export type PluginRow = Record<string, any> & { + id: string + manifest?: PluginManifest +} + +export class PluginManifestError extends Error { + readonly code = "INVALID_PLUGIN_MANIFEST" + + constructor(message: string) { + super(message) + this.name = "PluginManifestError" + } +} + +function assertBoundedJson(value: unknown, label: string): void { + const active = new WeakSet<object>() + let nodes = 0 + + const walk = (current: unknown, depth: number): void => { + nodes++ + if (nodes > 2_048) { + throw new PluginManifestError(`${label} contains too many values`) + } + if (depth > PLUGIN_MANIFEST_MAX_DEPTH) { + throw new PluginManifestError( + `${label} exceeds the maximum nesting depth`, + ) + } + if (current === null || typeof current === "boolean") return + if (typeof current === "number") { + if (!Number.isFinite(current)) { + throw new PluginManifestError(`${label} contains a non-finite number`) + } + return + } + if (typeof current === "string") { + if (current.length > 8_192) { + throw new PluginManifestError(`${label} contains an oversized string`) + } + return + } + if (typeof current !== "object") { + throw new PluginManifestError(`${label} contains a non-JSON value`) + } + if (active.has(current)) { + throw new PluginManifestError(`${label} contains a circular reference`) + } + active.add(current) + if (Array.isArray(current)) { + if (current.length > 256) { + throw new PluginManifestError(`${label} contains an oversized array`) + } + for (const item of current) walk(item, depth + 1) + } else { + const prototype = Object.getPrototypeOf(current) + if (prototype !== Object.prototype && prototype !== null) { + throw new PluginManifestError( + `${label} must contain plain JSON objects`, + ) + } + const keys = Object.keys(current) + if (keys.length > 256) { + throw new PluginManifestError(`${label} contains too many properties`) + } + for (const key of keys) { + if (FORBIDDEN_JSON_KEYS.has(key)) { + throw new PluginManifestError( + `${label} contains a forbidden property`, + ) + } + walk((current as Record<string, unknown>)[key], depth + 1) + } + } + active.delete(current) + } + + walk(value, 0) + let bytes: number + try { + bytes = new TextEncoder().encode(JSON.stringify(value)).byteLength + } catch { + throw new PluginManifestError(`${label} must be JSON serializable`) + } + if (bytes > PLUGIN_MANIFEST_MAX_BYTES) { + throw new PluginManifestError(`${label} exceeds the maximum encoded size`) + } +} + +export function parsePluginManifest(input: unknown): PluginManifest { + const parsed = manifestSchema.safeParse(input) + if (!parsed.success) { + throw new PluginManifestError( + parsed.error.issues + .map( + (issue) => `${issue.path.join(".") || "manifest"}: ${issue.message}`, + ) + .join("; "), + ) + } + assertBoundedJson(parsed.data, "manifest") + return parsed.data +} + +export function applyPluginManifest( + plugin: Record<string, any>, + input: unknown, +): PluginRow { + const manifest = parsePluginManifest(input) + if (plugin.id !== manifest.id) { + throw new PluginManifestError("manifest.id must match the plugin id") + } + return { + ...plugin, + id: manifest.id, + name: manifest.displayName, + version: manifest.version, + description: manifest.description, + manifest, + } +} + +const PUBLIC_PLUGIN_FIELDS = [ + "id", + "name", + "version", + "description", + "author", + "homepage", + "repository", + "icon", + "type", + "enabled", + "high_privilege", + "permissions", + "is_builtin", + "tags", + "created_at", + "updated_at", +] as const + +function publicLegacyPlugin(plugin: Record<string, any>): Record<string, any> { + const result: Record<string, any> = {} + for (const field of PUBLIC_PLUGIN_FIELDS) { + if (plugin[field] !== undefined) result[field] = plugin[field] + } + return result +} + +export function toPublicPlugin( + plugin: Record<string, any>, +): Record<string, any> { + const legacy = publicLegacyPlugin(plugin) + if (plugin.manifest === undefined || plugin.manifest === null) return legacy + let parsed: PluginManifest + try { + parsed = parsePluginManifest(plugin.manifest) + } catch { + return legacy + } + return { + ...legacy, + manifest: { + apiVersion: parsed.apiVersion, + id: parsed.id, + version: parsed.version, + displayName: parsed.displayName, + description: parsed.description, + capabilities: parsed.capabilities, + }, + } +} diff --git a/src/backend/internal/model/store/driver/d1.ts b/src/backend/internal/model/store/driver/d1.ts index 5fb7070c..b0e8b691 100644 --- a/src/backend/internal/model/store/driver/d1.ts +++ b/src/backend/internal/model/store/driver/d1.ts @@ -6,7 +6,12 @@ * - OPENLIST_DB (别名) */ import type { Driver } from "../types" -import { buildDdl, KV_SCHEMA_SQLITE } from "../schema" +import { + buildAddColumnDdl, + buildDdl, + buildTableInfoDdl, + KV_SCHEMA_SQLITE, +} from "../schema" /** * 判断对象是否具备 D1 绑定接口形态。 @@ -42,15 +47,39 @@ function getD1(env?: any): any | null { return null } -const d1Inited = new WeakMap<object, boolean>() +async function hasPluginManifestColumn(db: any, env?: any): Promise<boolean> { + const columns = await db + .prepare(buildTableInfoDdl("plugins", env)) + .all() + return (columns.results || []).some( + (column: any) => column.name === "manifest", + ) +} -async function ensureSchema(db: any, env?: any): Promise<void> { - if (d1Inited.get(db)) return - // KV 表(map/key 格式)+ 列式表(sql 格式)一并创建 - for (const ddl of [...KV_SCHEMA_SQLITE, ...buildDdl("sqlite", env)]) { - await db.prepare(ddl).run() - } - d1Inited.set(db, true) +const d1SchemaInit = new WeakMap<object, Promise<void>>() + +function ensureSchema(db: any, env?: any): Promise<void> { + const existing = d1SchemaInit.get(db) + if (existing) return existing + const task = (async () => { + for (const ddl of [...KV_SCHEMA_SQLITE, ...buildDdl("sqlite", env)]) { + await db.prepare(ddl).run() + } + if (!(await hasPluginManifestColumn(db, env))) { + try { + await db + .prepare(buildAddColumnDdl("plugins", "manifest", "sqlite", env)) + .run() + } catch (error) { + if (!(await hasPluginManifestColumn(db, env))) throw error + } + } + })() + d1SchemaInit.set(db, task) + void task.catch(() => { + if (d1SchemaInit.get(db) === task) d1SchemaInit.delete(db) + }) + return task } export const d1Driver: Driver = { @@ -62,7 +91,7 @@ export const d1Driver: Driver = { async init(env?: any): Promise<void> { const db = getD1(env) - if (db) await ensureSchema(db) + if (db) await ensureSchema(db, env) }, async get(key: string, env?: any): Promise<string | null> { @@ -135,14 +164,10 @@ export const d1Driver: Driver = { if (!db) throw new Error("D1 binding not found") await ensureSchema(db, env) - - // D1 batch 单次语句数上限约 100,分批提交 - const BATCH = 100 - const stmts = statements.map((s) => db.prepare(s.sql).bind(...s.params)) - - for (let i = 0; i < stmts.length; i += BATCH) { - await db.batch(stmts.slice(i, i + BATCH)) - } + const statementsForBatch = statements.map((statement) => + db.prepare(statement.sql).bind(...statement.params), + ) + await db.batch(statementsForBatch) }, async health(env?: any): Promise<any> { diff --git a/src/backend/internal/model/store/driver/mysql.ts b/src/backend/internal/model/store/driver/mysql.ts index 73604457..63325615 100644 --- a/src/backend/internal/model/store/driver/mysql.ts +++ b/src/backend/internal/model/store/driver/mysql.ts @@ -8,7 +8,12 @@ * - MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_NAME */ import type { Driver } from "../types" -import { buildDdl, getTablePrefix, KV_SCHEMA_MYSQL } from "../schema" +import { + buildAddColumnDdl, + buildDdl, + KV_SCHEMA_MYSQL, + tableSqlName, +} from "../schema" function isNode(): boolean { return typeof process !== "undefined" && process.release?.name === "node" @@ -32,33 +37,70 @@ function getMysqlConfig(env: any): any | null { let _pool: any = null let _poolKey: string | null = null +let _poolPending: { key: string; promise: Promise<any> } | null = null async function getPool(env: any): Promise<any | null> { const config = getMysqlConfig(env) if (!config) return null const key = JSON.stringify(config) if (_pool && _poolKey === key) return _pool - - // 动态 import,避免打包到 Workers - const specifier = "mysql2/promise" - const { createPool } = await import(specifier) - _pool = createPool(config) - _poolKey = key - return _pool + if (_poolPending?.key === key) return _poolPending.promise + + const promise = (async () => { + const specifier = "mysql2/promise" + const { createPool } = await import(specifier) + const pool = createPool(config) + _pool = pool + _poolKey = key + return pool + })() + _poolPending = { key, promise } + try { + return await promise + } finally { + if (_poolPending?.promise === promise) _poolPending = null + } } -let _schemaInitedPrefix: string | null = null +async function hasPluginManifestColumn( + pool: any, + env?: any, +): Promise<boolean> { + const [columns]: any[] = await pool.query( + "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ?", + [tableSqlName("plugins", env), "manifest"], + ) + return Array.isArray(columns) && columns.length > 0 +} -async function ensureSchema(pool: any, env?: any): Promise<void> { - const prefix = getTablePrefix(env) - if (_schemaInitedPrefix === prefix) return - // KV 表(map/key 格式)+ 列式表(sql 格式)一并创建 - for (const ddl of [...KV_SCHEMA_MYSQL, ...buildDdl("mysql", env)]) { - await pool.query(ddl) - } - _schemaInitedPrefix = prefix +const mysqlSchemaInit = new WeakMap<object, Promise<void>>() + +function ensureSchema(pool: any, env?: any): Promise<void> { + const existing = mysqlSchemaInit.get(pool) + if (existing) return existing + const task = (async () => { + for (const ddl of [...KV_SCHEMA_MYSQL, ...buildDdl("mysql", env)]) { + await pool.query(ddl) + } + if (!(await hasPluginManifestColumn(pool, env))) { + try { + await pool.query( + buildAddColumnDdl("plugins", "manifest", "mysql", env), + ) + } catch (error) { + if (!(await hasPluginManifestColumn(pool, env))) throw error + } + } + })() + mysqlSchemaInit.set(pool, task) + void task.catch(() => { + if (mysqlSchemaInit.get(pool) === task) mysqlSchemaInit.delete(pool) + }) + return task } +export const __ensureMysqlSchemaForTest = ensureSchema + export const mysqlDriver: Driver = { name: "mysql", @@ -69,7 +111,7 @@ export const mysqlDriver: Driver = { async init(env?: any): Promise<void> { const pool = await getPool(env) - if (pool) await ensureSchema(pool) + if (pool) await ensureSchema(pool, env) }, async get(key: string, env?: any): Promise<string | null> { diff --git a/src/backend/internal/model/store/schema.ts b/src/backend/internal/model/store/schema.ts index b5ce1a0d..4827d375 100644 --- a/src/backend/internal/model/store/schema.ts +++ b/src/backend/internal/model/store/schema.ts @@ -232,6 +232,7 @@ export const TABLES: Record<DdlTableName, TableDef> = { { name: "id", type: "string", pk: true }, { name: "name", type: "string", nullable: true }, { name: "version", type: "string", nullable: true }, + { name: "manifest", type: "json", nullable: true }, { name: "description", type: "string", nullable: true }, { name: "author", type: "string", nullable: true }, { name: "homepage", type: "string", nullable: true }, @@ -417,6 +418,16 @@ function sqlType(col: ColumnDef, dialect: "sqlite" | "mysql"): string { } } +function ddlColumnType( + col: ColumnDef, + dialect: "sqlite" | "mysql", +): string { + if (dialect === "mysql" && (col.pk || col.unique) && col.type === "string") { + return "VARCHAR(255)" + } + return sqlType(col, dialect) +} + /** 列标识符统一加反引号(SQLite 与 MySQL 均支持)。 */ function quote(name: string): string { return "`" + name + "`" @@ -432,7 +443,7 @@ function buildTableDdl( ): string { const parts: string[] = [] for (const col of def.columns) { - let line = `${quote(col.name)} ${sqlType(col, dialect)}` + let line = `${quote(col.name)} ${ddlColumnType(col, dialect)}` if (col.pk) { line += " PRIMARY KEY" } else if (!col.nullable) { @@ -446,6 +457,28 @@ function buildTableDdl( return `CREATE TABLE IF NOT EXISTS ${quote(tableName)} (${parts.join(", ")})` } +export function buildAddColumnDdl( + table: DdlTableName, + columnName: string, + dialect: "sqlite" | "mysql", + env?: any, +): string { + const column = TABLES[table].columns.find( + (item) => item.name === columnName, + ) + if (!column) { + throw new Error(`Unknown column ${table}.${columnName}`) + } + let definition = `${quote(column.name)} ${ddlColumnType(column, dialect)}` + if (!column.nullable) definition += " NOT NULL" + if (column.unique) definition += " UNIQUE" + return `ALTER TABLE ${quote(tableSqlName(table, env))} ADD COLUMN ${definition}` +} + +export function buildTableInfoDdl(table: DdlTableName, env?: any): string { + return `PRAGMA table_info(${quote(tableSqlName(table, env))})` +} + /** * 生成 schema_info 表(标记 SQL 格式是否已初始化)。 */ diff --git a/src/backend/internal/model/store/store.test.ts b/src/backend/internal/model/store/store.test.ts index 0c05c9a4..15b105be 100644 --- a/src/backend/internal/model/store/store.test.ts +++ b/src/backend/internal/model/store/store.test.ts @@ -21,7 +21,12 @@ import { deserializeColumn, rowToEntity, entityToRow, + buildAddColumnDdl, + buildTableInfoDdl, } from "./schema" +import { d1Driver } from "./driver/d1" +import { __ensureMysqlSchemaForTest } from "./driver/mysql" +import { OpenListDB } from "../../../durable-objects/OpenListDB" /** 基于局部 Map 的内存 KV 驱动(隔离测试)。 */ function createMockKvDriver(): Driver { @@ -158,7 +163,23 @@ const SAMPLE_DB = { ], shares: [], metas: [{ id: 1, path: "/a", read_users: [1, 2], read_users_sub: false }], - plugins: [], + plugins: [ + { + id: "com.example.docs", + name: "Docs", + version: "1.0.0", + enabled: true, + manifest: { + apiVersion: "v1", + id: "com.example.docs", + version: "1.0.0", + displayName: "Docs", + description: "", + capabilities: ["files_read"], + settingsSchema: { type: "object" }, + }, + }, + ], } test("schema: columnar tables match Go backend structure", () => { @@ -368,7 +389,7 @@ test("secret persistence: degrades gracefully when no backend is available", asy test("getKvBinding: 同一 env 只解析一次(含 mode=none),重复调用返回同一缓存对象", async () => { // 回归:此前只有「成功」的绑定会被缓存,`mode=none` 直接 return,于是每次 - // 调用都会重新探测 env.KV / globalThis.KV、重试 Blob SDK 初始化,并重新打印 + // 调用都要重新探测 env.KV / globalThis.KV、重试 Blob SDK 初始化,并重新打印 // 一次告警。登录失败计数、注销黑名单、审计日志读写都在这条路径上 // (serverless 日志被同一行刷屏的来源之一)。 const { getKvBinding } = await import("./json") @@ -394,3 +415,241 @@ test("getKvBinding: 同一 env 只解析一次(含 mode=none),重复调用 "「未探测到 KV 绑定」的告警每个进程最多打印一次", ) }) + +test("schema: plugin manifest column and migration SQL are available", () => { + const pluginDdl = D1_SCHEMA.find((sql) => sql.includes("x_plugins")) + assert.ok(pluginDdl?.includes("`manifest` TEXT")) + assert.equal( + buildAddColumnDdl("plugins", "manifest", "sqlite"), + "ALTER TABLE `x_plugins` ADD COLUMN `manifest` TEXT", + ) + const mysqlDdl = MYSQL_SCHEMA.join("\n") + assert.doesNotMatch(mysqlDdl, /TEXT\s+(?:PRIMARY KEY|UNIQUE)/) + assert.match( + MYSQL_SCHEMA.find((sql) => sql.includes("x_plugins")) || "", + /`id` VARCHAR\(255\) PRIMARY KEY/, + ) + assert.equal( + buildAddColumnDdl("plugins", "manifest", "mysql"), + "ALTER TABLE `x_plugins` ADD COLUMN `manifest` TEXT", + ) + assert.equal( + buildTableInfoDdl("plugins"), + "PRAGMA table_info(`x_plugins`)", + ) +}) + +function createD1SchemaBinding( + columns: string[], + options: { failFirstAlter?: boolean; duplicateFirstAlter?: boolean } = {}, +) { + const sql: string[] = [] + const stats = { batchCalls: 0 } + let failFirstAlter = Boolean(options.failFirstAlter) + let duplicateFirstAlter = Boolean(options.duplicateFirstAlter) + const db = { + prepare(statement: string) { + sql.push(statement) + let params: any[] = [] + const stmt = { + bind(...args: any[]) { + params = args + return stmt + }, + async first() { + return null + }, + async all() { + if (/^PRAGMA table_info/i.test(statement)) { + return { results: columns.map((name) => ({ name })) } + } + return { results: [] } + }, + async run() { + void params + if (statement.includes("ADD COLUMN `manifest`")) { + if (failFirstAlter) { + failFirstAlter = false + throw new Error("alter failed") + } + if (duplicateFirstAlter) { + duplicateFirstAlter = false + if (!columns.includes("manifest")) columns.push("manifest") + throw new Error("duplicate column name: manifest") + } + if (!columns.includes("manifest")) columns.push("manifest") + } + return { success: true } + }, + } + return stmt + }, + async batch(statements: any[]) { + stats.batchCalls++ + for (const statement of statements) await statement.run() + return [] + }, + } + return { db, sql, stats, columns } +} + +test("D1 schema migration adds the plugin manifest column exactly once", async () => { + const oldSchema = createD1SchemaBinding(["id", "name"]) + await Promise.all([ + d1Driver.init({ DB: oldSchema.db }), + d1Driver.init({ DB: oldSchema.db }), + d1Driver.init({ DB: oldSchema.db }), + ]) + assert.equal( + oldSchema.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")) + .length, + 1, + ) + + const newSchema = createD1SchemaBinding(["id", "name", "manifest"]) + await d1Driver.init({ DB: newSchema.db }) + assert.equal( + newSchema.sql.some((sql) => sql.includes("ADD COLUMN `manifest`")), + false, + ) +}) + +test("D1 schema migration retries after a failed concurrent attempt", async () => { + const schema = createD1SchemaBinding(["id", "name"], { + failFirstAlter: true, + }) + await assert.rejects( + Promise.all([ + d1Driver.init({ DB: schema.db }), + d1Driver.init({ DB: schema.db }), + ]), + ) + assert.equal( + schema.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")) + .length, + 1, + ) + await d1Driver.init({ DB: schema.db }) + assert.equal( + schema.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")) + .length, + 2, + ) +}) + +test("D1 schema migration accepts a cross-isolate duplicate after recheck", async () => { + const schema = createD1SchemaBinding(["id"], { + duplicateFirstAlter: true, + }) + await d1Driver.init({ DB: schema.db }) + assert.deepEqual(schema.columns, ["id", "manifest"]) +}) + +test("D1 batch uses one native transaction", async () => { + const schema = createD1SchemaBinding(["id", "manifest"]) + const statements = Array.from({ length: 250 }, (_, index) => ({ + sql: `UPDATE plugins SET version = ? WHERE id = ?`, + params: [`${index}`, `${index}`], + })) + await d1Driver.batch!(statements, { DB: schema.db }) + assert.equal(schema.stats.batchCalls, 1) +}) + +function createMysqlSchemaPool( + columns: string[], + options: { failFirstAlter?: boolean; duplicateFirstAlter?: boolean } = {}, +) { + const sql: string[] = [] + let failFirstAlter = Boolean(options.failFirstAlter) + let duplicateFirstAlter = Boolean(options.duplicateFirstAlter) + return { + sql, + columns, + async query(statement: string) { + sql.push(statement) + if (statement.includes("information_schema.COLUMNS")) { + return [ + columns.includes("manifest") + ? [{ COLUMN_NAME: "manifest" }] + : [], + ] + } + if (statement.includes("ADD COLUMN `manifest`")) { + if (duplicateFirstAlter) { + duplicateFirstAlter = false + columns.push("manifest") + const error: any = new Error("Duplicate column name 'manifest'") + error.code = "ER_DUP_FIELDNAME" + throw error + } + if (failFirstAlter) { + failFirstAlter = false + throw new Error("alter failed") + } + columns.push("manifest") + } + return [[], []] + }, + } +} + +test("MySQL schema migration is single-flight per pool and isolated across pools", async () => { + const first = createMysqlSchemaPool(["id"]) + await Promise.all([ + __ensureMysqlSchemaForTest(first, {}), + __ensureMysqlSchemaForTest(first, {}), + ]) + assert.equal( + first.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")).length, + 1, + ) + + const second = createMysqlSchemaPool(["id"]) + await __ensureMysqlSchemaForTest(second, {}) + assert.equal( + second.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")) + .length, + 1, + ) + + const retry = createMysqlSchemaPool(["id"], { failFirstAlter: true }) + await assert.rejects(__ensureMysqlSchemaForTest(retry, {})) + await __ensureMysqlSchemaForTest(retry, {}) + assert.equal( + retry.sql.filter((sql) => sql.includes("ADD COLUMN `manifest`")).length, + 2, + ) +}) + +test("MySQL schema migration accepts a cross-instance duplicate after recheck", async () => { + const schema = createMysqlSchemaPool(["id"], { + duplicateFirstAlter: true, + }) + await __ensureMysqlSchemaForTest(schema, {}) + assert.deepEqual(schema.columns, ["id", "manifest"]) +}) + +test("Durable Object schema migration adds the plugin manifest column", async () => { + const sql: string[] = [] + const state = { + storage: { + sql: { + exec(statement: string) { + sql.push(statement) + return { + toArray: () => + /^PRAGMA table_info/i.test(statement) ? [{ name: "id" }] : [], + } + }, + }, + transactionSync(callback: () => void) { + callback() + }, + }, + } + const database = new OpenListDB(state) + await database.init() + assert.ok( + sql.includes("ALTER TABLE `x_plugins` ADD COLUMN `manifest` TEXT"), + ) +}) diff --git a/src/backend/server/admin.ts b/src/backend/server/admin.ts index a23583a5..61899261 100644 --- a/src/backend/server/admin.ts +++ b/src/backend/server/admin.ts @@ -5,9 +5,17 @@ import { defaultDb, getKvStatus, getStoreStatus, + reloadDb, } from "../internal/model/db" import { getDriver } from "../internal/op/storage" +import { readFormat } from "../internal/model/store/backend" import { search } from "../internal/op/search" +import { + applyPluginManifest, + parsePluginManifest, + PluginManifestError, + PLUGIN_MANIFEST_MAX_BYTES, +} from "../internal/model/plugin" import { checkAdminAuth } from "../pkg/utils" import { safeErrorMessage } from "../pkg/errs" import { validateHide } from "../pkg/meta" @@ -4806,274 +4814,597 @@ adminRouter.get("/scan/progress", async (c) => { }) }) +function pluginManifestInput(payload: any): unknown | undefined { + if (payload && typeof payload === "object") { + if (Object.prototype.hasOwnProperty.call(payload, "manifest")) { + return payload.manifest + } + if (payload.apiVersion !== undefined) return payload + } + return undefined +} + +function pluginLegacyPayload(payload: any): Record<string, any> { + if (!payload || typeof payload !== "object") return {} + const legacy = { ...payload } + delete legacy.manifest + delete legacy.apiVersion + delete legacy.displayName + delete legacy.capabilities + delete legacy.settingsSchema + delete legacy.entry + return legacy +} + +function normalizedPluginId(id: unknown): string { + return String(id || "").toLowerCase() +} + +function validLegacyPluginId(id: unknown): id is string { + return ( + typeof id === "string" && + id.trim().length > 0 && + Array.from(id).length <= 255 && + !/[\u0000-\u001f\u007f]/.test(id) + ) +} + +function rejectUnsupportedPluginWrite(c: any) { + if (readFormat(c.env) !== "key") return null + return c.json( + { + code: 409, + message: + "Plugin writes require atomic persistence; DB_FORMAT=key is not supported", + data: { + code: "ATOMIC_PLUGIN_PERSISTENCE_UNSUPPORTED", + suggestion: "Use DB_FORMAT=map or DB_FORMAT=sql", + }, + }, + 409, + ) +} + +function pluginSnapshot(db: any, plugins: any[]): any { + return { ...db, plugins } +} + +let pluginWriteTail = Promise.resolve() + +async function withPluginWriteLock<T>(task: () => Promise<T>): Promise<T> { + const prior = pluginWriteTail + let release = () => {} + const gate = new Promise<void>((resolve) => { + release = resolve + }) + const tail = prior.catch(() => {}).then(() => gate) + pluginWriteTail = tail + await prior.catch(() => {}) + try { + return await task() + } finally { + release() + if (pluginWriteTail === tail) pluginWriteTail = Promise.resolve() + } +} + +function serializedPluginRoute( + handler: (c: any) => Promise<any>, +): (c: any) => Promise<any> { + return (c: any) => withPluginWriteLock(() => handler(c)) +} + +async function readPluginJson( + c: any, + options: { allowArray?: boolean } = {}, +): Promise<any> { + let body: any + try { + body = await c.req.json() + } catch { + throw new PluginManifestError("request body must be valid JSON") + } + if ( + !body || + typeof body !== "object" || + (Array.isArray(body) && !options.allowArray) + ) { + throw new PluginManifestError("request body must be a JSON object") + } + return body +} + +async function readPluginManifestResponse(response: Response): Promise<string> { + const declared = Number(response.headers.get("content-length") || 0) + if (declared > PLUGIN_MANIFEST_MAX_BYTES) { + await response.body?.cancel().catch(() => {}) + throw new PluginManifestError("manifest URL response is too large") + } + if (!response.body) return "" + const reader = response.body.getReader() + const chunks: Uint8Array[] = [] + let size = 0 + try { + while (true) { + const { done, value } = await reader.read() + if (done) break + size += value.byteLength + if (size > PLUGIN_MANIFEST_MAX_BYTES) { + throw new PluginManifestError("manifest URL response is too large") + } + chunks.push(value) + } + } catch (err: any) { + await reader.cancel().catch(() => {}) + throw err + } + const bytes = new Uint8Array(size) + let offset = 0 + for (const chunk of chunks) { + bytes.set(chunk, offset) + offset += chunk.byteLength + } + return new TextDecoder().decode(bytes) +} + +async function fetchPluginManifest( + env: any, + rawUrl: string, +): Promise<unknown> { + let target: URL + let trustedOrigin: URL + try { + target = new URL(rawUrl) + const configured = String( + env?.PLUGIN_MANIFEST_ORIGIN || + (typeof process !== "undefined" + ? process.env?.PLUGIN_MANIFEST_ORIGIN + : "") || + "", + ).trim() + if (!configured) { + throw new PluginManifestError( + "PLUGIN_MANIFEST_ORIGIN is required for manifest_url installs", + ) + } + trustedOrigin = new URL(configured) + } catch (err: any) { + if (err instanceof PluginManifestError) throw err + throw new PluginManifestError("manifest_url or trusted origin is invalid") + } + if (!["http:", "https:"].includes(target.protocol)) { + throw new PluginManifestError("manifest_url must use HTTP or HTTPS") + } + if (target.origin !== trustedOrigin.origin) { + throw new PluginManifestError( + "manifest_url must match PLUGIN_MANIFEST_ORIGIN", + ) + } + if (target.username || target.password) { + throw new PluginManifestError("manifest_url must not contain credentials") + } + + const controller = new AbortController() + const timeout = setTimeout(() => controller.abort(), 5_000) + try { + const response = await fetch(target.href, { + redirect: "error", + signal: controller.signal, + }) + if (!response.ok) { + await response.body?.cancel().catch(() => {}) + throw new PluginManifestError( + `Failed to fetch plugin manifest from URL: HTTP ${response.status}`, + ) + } + const text = await readPluginManifestResponse(response) + try { + return JSON.parse(text) + } catch { + throw new PluginManifestError("manifest_url did not return valid JSON") + } + } catch (err: any) { + if (err instanceof PluginManifestError) throw err + throw new PluginManifestError( + `Network error fetching plugin manifest: ${safeErrorMessage(err, "request failed")}`, + ) + } finally { + clearTimeout(timeout) + } +} + +function pluginErrorResponse(c: any, err: any, fallback: string) { + if (err instanceof PluginManifestError) { + return c.json( + { code: 400, message: err.message, data: { code: err.code } }, + 400, + ) + } + return c.json( + { code: 503, message: err?.message || fallback, data: null }, + 503, + ) +} + // --- Plugin Management API --- adminRouter.get("/plugin/list", async (c) => { - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] + const db = await reloadDb(c.env) + const plugins = Array.isArray(db.plugins) ? db.plugins : [] return c.json({ code: 200, message: "success", data: { - content: db.plugins, - total: db.plugins.length, + content: plugins, + total: plugins.length, }, }) }) adminRouter.get("/plugin/get", async (c) => { const id = c.req.query("id") - if (!id) { - return c.json({ code: 400, message: "id is required", data: null }) + if (!validLegacyPluginId(id)) { + return c.json({ code: 400, message: "id is invalid", data: null }, 400) } - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] - const plugin = db.plugins.find((p: any) => p.id === id) + const db = await reloadDb(c.env) + const plugins = Array.isArray(db.plugins) ? db.plugins : [] + const plugin = plugins.find( + (candidate: any) => + normalizedPluginId(candidate.id) === normalizedPluginId(id), + ) if (!plugin) { return c.json({ code: 404, message: "Plugin not found", data: null }) } return c.json({ code: 200, message: "success", data: plugin }) }) -adminRouter.post("/plugin/install", async (c) => { - try { - const body = await c.req.json() - let pluginData = body - - // Support install by manifest URL - if (body.manifest_url && typeof body.manifest_url === "string") { - try { - const resp = await fetch(body.manifest_url) - if (!resp.ok) { - return c.json({ - code: 400, - message: `Failed to fetch plugin manifest from URL: HTTP ${resp.status}`, - data: null, - }) - } - const fetchedManifest = await resp.json() - pluginData = { ...fetchedManifest, ...body } - } catch (err: any) { - return c.json({ - code: 400, - message: `Network error fetching plugin manifest: ${safeErrorMessage(err, "unexpected network error")}`, - data: null, - }) +adminRouter.post( + "/plugin/install", + serializedPluginRoute(async (c) => { + try { + const unsupported = rejectUnsupportedPluginWrite(c) + if (unsupported) return unsupported + const body = await readPluginJson(c) + let pluginData = body + + if (body.manifest_url && typeof body.manifest_url === "string") { + const fetchedManifest = await fetchPluginManifest( + c.env, + body.manifest_url, + ) + pluginData = { ...body, manifest: fetchedManifest } } - } - if (!pluginData.id || !pluginData.name) { - return c.json({ - code: 400, - message: "Plugin id and name are required", - data: null, - }) - } + const manifestInput = pluginManifestInput(pluginData) + const manifest = + manifestInput === undefined ? null : parsePluginManifest(manifestInput) + const legacy = pluginLegacyPayload(pluginData) + const id = manifest?.id || legacy.id + const name = manifest?.displayName || legacy.name + if (!manifest && !validLegacyPluginId(id)) { + return c.json( + { code: 400, message: "Plugin id is invalid", data: null }, + 400, + ) + } + if (!id || !name) { + return c.json( + { code: 400, message: "Plugin id and name are required", data: null }, + 400, + ) + } - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] + const db = await reloadDb(c.env) + const currentPlugins = Array.isArray(db.plugins) ? db.plugins : [] + const existingIndex = currentPlugins.findIndex( + (plugin: any) => + normalizedPluginId(plugin.id) === normalizedPluginId(id), + ) + const previous = existingIndex >= 0 ? currentPlugins[existingIndex] : {} + const now = new Date().toISOString() + let newPlugin: any = { + ...previous, + id, + name, + version: legacy.version ?? previous.version ?? "1.0.0", + description: legacy.description ?? previous.description ?? "", + author: legacy.author ?? previous.author ?? "Unknown", + homepage: legacy.homepage ?? previous.homepage ?? "", + repository: legacy.repository ?? previous.repository ?? "", + icon: legacy.icon ?? previous.icon ?? "", + type: legacy.type ?? previous.type ?? "ui", + enabled: Boolean(legacy.enabled ?? previous.enabled ?? true), + high_privilege: Boolean( + legacy.high_privilege ?? previous.high_privilege ?? false, + ), + permissions: Array.isArray(legacy.permissions) + ? legacy.permissions + : Array.isArray(previous.permissions) + ? previous.permissions + : [], + entry_url: legacy.entry_url ?? previous.entry_url ?? "", + script_content: legacy.script_content ?? previous.script_content ?? "", + style_content: legacy.style_content ?? previous.style_content ?? "", + config_schema: legacy.config_schema ?? previous.config_schema ?? [], + config_values: + legacy.config_values ?? + legacy.default_config ?? + previous.config_values ?? + {}, + target_hooks: legacy.target_hooks ?? + previous.target_hooks ?? ["global"], + is_builtin: Boolean(legacy.is_builtin ?? previous.is_builtin ?? false), + tags: legacy.tags ?? previous.tags ?? [], + created_at: previous.created_at ?? now, + updated_at: now, + } + if (manifest) { + newPlugin = applyPluginManifest(newPlugin, manifest) + } else { + delete newPlugin.manifest + } - const existingIndex = db.plugins.findIndex( - (p: any) => p.id === pluginData.id, - ) - const now = new Date().toISOString() - const newPlugin = { - id: pluginData.id, - name: pluginData.name, - version: pluginData.version || "1.0.0", - description: pluginData.description || "", - author: pluginData.author || "Unknown", - homepage: pluginData.homepage || "", - repository: pluginData.repository || "", - icon: pluginData.icon || "", - type: pluginData.type || "ui", - enabled: - pluginData.enabled !== undefined ? Boolean(pluginData.enabled) : true, - high_privilege: Boolean(pluginData.high_privilege), - permissions: Array.isArray(pluginData.permissions) - ? pluginData.permissions - : [], - entry_url: pluginData.entry_url || "", - script_content: pluginData.script_content || "", - style_content: pluginData.style_content || "", - config_schema: pluginData.config_schema || [], - config_values: - pluginData.config_values || pluginData.default_config || {}, - target_hooks: pluginData.target_hooks || ["global"], - is_builtin: Boolean(pluginData.is_builtin), - tags: pluginData.tags || [], - created_at: - existingIndex >= 0 ? db.plugins[existingIndex].created_at : now, - updated_at: now, - } + const nextPlugins = currentPlugins.slice() + if (existingIndex >= 0) nextPlugins[existingIndex] = newPlugin + else nextPlugins.push(newPlugin) - if (existingIndex >= 0) { - db.plugins[existingIndex] = newPlugin - } else { - db.plugins.push(newPlugin) + if ( + !(await saveDb(pluginSnapshot(db, nextPlugins), c.env, { + publishOnSuccess: true, + })) + ) { + return c.json( + { code: 503, message: "Failed to persist plugin", data: null }, + 503, + ) + } + return c.json({ + code: 200, + message: "Plugin installed successfully", + data: newPlugin, + }) + } catch (err: any) { + return pluginErrorResponse(c, err, "Failed to install plugin") } + }), +) - await saveDb(db, c.env) - return c.json({ - code: 200, - message: "Plugin installed successfully", - data: newPlugin, - }) - } catch (err: any) { - return c.json({ - code: 500, - message: err.message || "Failed to install plugin", - data: null, - }) - } -}) +adminRouter.post( + "/plugin/update", + serializedPluginRoute(async (c) => { + try { + const unsupported = rejectUnsupportedPluginWrite(c) + if (unsupported) return unsupported + const body = await readPluginJson(c) + if (!validLegacyPluginId(body.id)) { + return c.json( + { code: 400, message: "Plugin id is required", data: null }, + 400, + ) + } -adminRouter.post("/plugin/update", async (c) => { - try { - const body = await c.req.json() - if (!body.id) { - return c.json({ code: 400, message: "Plugin id is required", data: null }) - } + const db = await reloadDb(c.env) + const currentPlugins = Array.isArray(db.plugins) ? db.plugins : [] + const index = currentPlugins.findIndex( + (plugin: any) => + normalizedPluginId(plugin.id) === normalizedPluginId(body.id), + ) + if (index === -1) { + return c.json( + { code: 404, message: "Plugin not found", data: null }, + 404, + ) + } - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] + const current = currentPlugins[index] + let updated: any = { + ...current, + ...pluginLegacyPayload(body), + id: current.id, + updated_at: new Date().toISOString(), + } + const manifestInput = pluginManifestInput(body) + if (manifestInput !== undefined) { + updated = applyPluginManifest(updated, manifestInput) + } - const index = db.plugins.findIndex((p: any) => p.id === body.id) - if (index === -1) { - return c.json({ code: 404, message: "Plugin not found", data: null }) - } + const nextPlugins = currentPlugins.slice() + nextPlugins[index] = updated + if ( + !(await saveDb(pluginSnapshot(db, nextPlugins), c.env, { + publishOnSuccess: true, + })) + ) { + return c.json( + { code: 503, message: "Failed to persist plugin", data: null }, + 503, + ) + } - const current = db.plugins[index] - const updated = { - ...current, - ...body, - id: current.id, // prevent ID mutation - updated_at: new Date().toISOString(), + return c.json({ + code: 200, + message: "Plugin updated successfully", + data: updated, + }) + } catch (err: any) { + return pluginErrorResponse(c, err, "Failed to update plugin") } + }), +) - db.plugins[index] = updated - await saveDb(db, c.env) - - return c.json({ - code: 200, - message: "Plugin updated successfully", - data: updated, - }) - } catch (err: any) { - return c.json({ - code: 500, - message: err.message || "Failed to update plugin", - data: null, - }) - } -}) +adminRouter.post( + "/plugin/toggle", + serializedPluginRoute(async (c) => { + try { + const unsupported = rejectUnsupportedPluginWrite(c) + if (unsupported) return unsupported + const body = await readPluginJson(c) + if (!validLegacyPluginId(body.id)) { + return c.json( + { code: 400, message: "Plugin id is required", data: null }, + 400, + ) + } -adminRouter.post("/plugin/toggle", async (c) => { - try { - const body = await c.req.json() - if (!body.id) { - return c.json({ code: 400, message: "Plugin id is required", data: null }) - } + const db = await reloadDb(c.env) + const currentPlugins = Array.isArray(db.plugins) ? db.plugins : [] + const index = currentPlugins.findIndex( + (plugin: any) => + normalizedPluginId(plugin.id) === normalizedPluginId(body.id), + ) + if (index === -1) { + return c.json( + { code: 404, message: "Plugin not found", data: null }, + 404, + ) + } - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] + const current = currentPlugins[index] + const targetEnabled = + body.enabled !== undefined ? Boolean(body.enabled) : !current.enabled + const nextPlugins = currentPlugins.slice() + nextPlugins[index] = { + ...current, + enabled: targetEnabled, + updated_at: new Date().toISOString(), + } + if ( + !(await saveDb(pluginSnapshot(db, nextPlugins), c.env, { + publishOnSuccess: true, + })) + ) { + return c.json( + { code: 503, message: "Failed to persist plugin", data: null }, + 503, + ) + } - const index = db.plugins.findIndex((p: any) => p.id === body.id) - if (index === -1) { - return c.json({ code: 404, message: "Plugin not found", data: null }) + return c.json({ + code: 200, + message: targetEnabled ? "Plugin enabled" : "Plugin disabled", + data: { id: body.id, enabled: targetEnabled }, + }) + } catch (err: any) { + return pluginErrorResponse(c, err, "Failed to toggle plugin") } + }), +) - const targetEnabled = - body.enabled !== undefined - ? Boolean(body.enabled) - : !db.plugins[index].enabled - - db.plugins[index].enabled = targetEnabled - db.plugins[index].updated_at = new Date().toISOString() - await saveDb(db, c.env) +adminRouter.post( + "/plugin/delete", + serializedPluginRoute(async (c) => { + try { + const unsupported = rejectUnsupportedPluginWrite(c) + if (unsupported) return unsupported + const queryId = c.req.query("id") + let id = queryId + if (!id) { + const body = await readPluginJson(c) + id = body?.id + } - return c.json({ - code: 200, - message: targetEnabled ? "Plugin enabled" : "Plugin disabled", - data: { id: body.id, enabled: targetEnabled }, - }) - } catch (err: any) { - return c.json({ - code: 500, - message: err.message || "Failed to toggle plugin", - data: null, - }) - } -}) + if (!validLegacyPluginId(id)) { + return c.json( + { code: 400, message: "Plugin id is invalid", data: null }, + 400, + ) + } -adminRouter.post("/plugin/delete", async (c) => { - try { - const queryId = c.req.query("id") - let id = queryId - if (!id) { - try { - const body = await c.req.json() - id = body.id - } catch {} - } + const db = await reloadDb(c.env) + const currentPlugins = Array.isArray(db.plugins) ? db.plugins : [] + const nextPlugins = currentPlugins.filter( + (plugin: any) => + normalizedPluginId(plugin.id) !== normalizedPluginId(id), + ) + if (nextPlugins.length === currentPlugins.length) { + return c.json( + { code: 404, message: "Plugin not found", data: null }, + 404, + ) + } - if (!id) { - return c.json({ code: 400, message: "Plugin id is required", data: null }) + if ( + !(await saveDb(pluginSnapshot(db, nextPlugins), c.env, { + publishOnSuccess: true, + })) + ) { + return c.json( + { code: 503, message: "Failed to persist plugin", data: null }, + 503, + ) + } + return c.json({ + code: 200, + message: "Plugin deleted successfully", + data: null, + }) + } catch (err: any) { + return pluginErrorResponse(c, err, "Failed to delete plugin") } + }), +) - const db = await getDb(c.env) - if (!db.plugins) db.plugins = [] - - const initialLen = db.plugins.length - db.plugins = db.plugins.filter((p: any) => p.id !== id) +adminRouter.post( + "/plugin/batch_save", + serializedPluginRoute(async (c) => { + try { + const unsupported = rejectUnsupportedPluginWrite(c) + if (unsupported) return unsupported + const body = await readPluginJson(c, { allowArray: true }) + const plugins = Array.isArray(body) ? body : body?.plugins + if (!Array.isArray(plugins)) { + return c.json( + { code: 400, message: "plugins array is required", data: null }, + 400, + ) + } - if (db.plugins.length === initialLen) { - return c.json({ code: 404, message: "Plugin not found", data: null }) - } + const seenIds = new Set<string>() + const validated = plugins.map((plugin: any) => { + const manifestInput = pluginManifestInput(plugin) + const legacy = pluginLegacyPayload(plugin) + let validatedPlugin = legacy + if (manifestInput !== undefined) { + const manifest = parsePluginManifest(manifestInput) + validatedPlugin = applyPluginManifest( + { ...legacy, id: manifest.id }, + manifest, + ) + } + if (!validLegacyPluginId(validatedPlugin.id)) { + throw new PluginManifestError("every plugin requires a valid id") + } + const normalizedId = validatedPlugin.id.toLowerCase() + if (seenIds.has(normalizedId)) { + throw new PluginManifestError( + `duplicate plugin id: ${validatedPlugin.id}`, + ) + } + seenIds.add(normalizedId) + return validatedPlugin + }) - await saveDb(db, c.env) - return c.json({ - code: 200, - message: "Plugin deleted successfully", - data: null, - }) - } catch (err: any) { - return c.json({ - code: 500, - message: err.message || "Failed to delete plugin", - data: null, - }) - } -}) + const db = await reloadDb(c.env) + if ( + !(await saveDb(pluginSnapshot(db, validated), c.env, { + publishOnSuccess: true, + })) + ) { + return c.json( + { code: 503, message: "Failed to persist plugins", data: null }, + 503, + ) + } -adminRouter.post("/plugin/batch_save", async (c) => { - try { - const body = await c.req.json() - const plugins = Array.isArray(body) ? body : body.plugins - if (!Array.isArray(plugins)) { return c.json({ - code: 400, - message: "plugins array is required", - data: null, + code: 200, + message: "Plugins saved successfully", + data: { count: validated.length }, }) + } catch (err: any) { + return pluginErrorResponse(c, err, "Failed to batch save plugins") } - - const db = await getDb(c.env) - db.plugins = plugins - await saveDb(db, c.env) - - return c.json({ - code: 200, - message: "Plugins saved successfully", - data: { count: plugins.length }, - }) - } catch (err: any) { - return c.json({ - code: 500, - message: err.message || "Failed to batch save plugins", - data: null, - }) - } -}) + }), +) // ---- Message(与 Go internal/message/http.go 对齐)---- // 进程内消息队列:send 入队、get 出队。Serverless 多实例下队列不跨实例共享, diff --git a/src/backend/server/plugin_manifest.test.ts b/src/backend/server/plugin_manifest.test.ts new file mode 100644 index 00000000..4851b3e8 --- /dev/null +++ b/src/backend/server/plugin_manifest.test.ts @@ -0,0 +1,611 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import { Hono } from "hono" +import { + __resetDbCacheForTest, + __setStoreBackendLoaderForTest, +} from "../internal/model/db" +import { adminRouter } from "./admin" +import { publicRouter } from "./public" + +const TOKEN = "plugin-test-token" +const manifest = { + apiVersion: "v1", + id: "com.example.docs", + version: "1.0.0", + displayName: "Docs", + description: "Documentation tools", + capabilities: ["files_read"], + settingsSchema: { type: "object" }, + entry: { module: "index.js" }, +} + +function setup( + options: { + format?: string + onSave?: (next: any, current: any) => Promise<boolean> + } = {}, +) { + __resetDbCacheForTest() + let stored: any = { + settings: [{ key: "token", value: TOKEN }], + users: [], + storages: [], + shares: [], + metas: [], + plugins: [], + } + const backend = { + name: "plugin-test", + isConfigured: async () => true, + load: async () => JSON.parse(JSON.stringify(stored)), + save: async (next: any) => { + if (options.onSave) return options.onSave(next, stored) + stored = JSON.parse(JSON.stringify(next)) + return true + }, + } + __setStoreBackendLoaderForTest(async () => backend) + const env: any = { + DB_DRIVER: "plugin-test", + DB_FORMAT: options.format || "map", + PLUGIN_MANIFEST_ORIGIN: "http://localhost", + JWT_SECRET: "plugin-test-secret-0123456789abcdef", + } + return { + env, + getStored: () => stored, + } +} + +function adminApp() { + const app = new Hono() + app.route("/api/admin", adminRouter) + return app +} + +function publicApp() { + const app = new Hono() + app.route("/api/public", publicRouter) + return app +} + +async function install(app: Hono, env: any, body: any) { + return app.request( + "/api/admin/plugin/install", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }, + env, + ) +} + +async function listPlugins(app: Hono, env: any) { + return app.request( + "/api/admin/plugin/list", + { headers: { Authorization: TOKEN } }, + env, + ) +} + +test( + "plugin install accepts a v1 manifest and preserves compatibility fields", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + try { + const res = await install(adminApp(), env, { + manifest, + enabled: false, + config_values: { keep: "value" }, + }) + assert.equal(res.status, 200) + const body: any = await res.json() + assert.equal(body.data.id, manifest.id) + assert.equal(body.data.name, manifest.displayName) + assert.equal(body.data.version, manifest.version) + assert.equal(body.data.enabled, false) + assert.deepEqual(body.data.config_values, { keep: "value" }) + assert.deepEqual(body.data.manifest, manifest) + + const raw = await install(adminApp(), env, { + ...manifest, + id: "com.example.raw", + displayName: "Raw", + }) + assert.equal(raw.status, 200) + assert.equal(getStored().plugins.length, 2) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "concurrent plugin installs serialize read-modify-write", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + const app = adminApp() + const secondEnv = { ...env } + try { + const results = await Promise.all([ + install(app, env, { manifest }), + install(app, secondEnv, { + manifest: { ...manifest, id: "com.example.second" }, + }), + ]) + assert.deepEqual( + results.map((response) => response.status), + [200, 200], + ) + assert.equal(getStored().plugins.length, 2) + const listResponse = await listPlugins(app, env) + const listBody: any = await listResponse.json() + assert.equal(listBody.data.content.length, 2) + const publicResponse = await publicApp().request( + "/api/public/plugins", + {}, + env, + ) + const publicBody: any = await publicResponse.json() + assert.equal(publicBody.data.length, 2) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "plugin install rejects invalid manifests without changing storage", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + try { + const malformed = await adminApp().request( + "/api/admin/plugin/install", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: "{", + }, + env, + ) + assert.equal(malformed.status, 400) + + const nullBody = await adminApp().request( + "/api/admin/plugin/install", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: "null", + }, + env, + ) + assert.equal(nullBody.status, 400) + + const res = await install(adminApp(), env, { + manifest: { ...manifest, capabilities: ["files.read"] }, + }) + assert.equal(res.status, 400) + const body: any = await res.json() + assert.equal(body.code, 400) + assert.match(body.message, /capabilities/) + assert.deepEqual(getStored().plugins, []) + + const legacy = await install(adminApp(), env, { + id: "legacy.plugin", + name: "Legacy", + }) + assert.equal(legacy.status, 200) + assert.equal(getStored().plugins[0].manifest, undefined) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "plugin writes reject non-atomic key format", + { concurrency: false }, + async () => { + const { env, getStored } = setup({ format: "key" }) + try { + const res = await install(adminApp(), env, { manifest }) + assert.equal(res.status, 409) + const body: any = await res.json() + assert.equal(body.data.code, "ATOMIC_PLUGIN_PERSISTENCE_UNSUPPORTED") + assert.deepEqual(getStored().plugins, []) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "failed plugin persistence never publishes the candidate snapshot", + { concurrency: false }, + async () => { + let saveAttempts = 0 + const { env, getStored } = setup({ + onSave: async () => { + saveAttempts++ + if (saveAttempts === 1) throw new Error("backend unavailable") + return false + }, + }) + const app = adminApp() + try { + const res = await install(app, env, { manifest }) + assert.equal(res.status, 503) + assert.deepEqual(getStored().plugins, []) + const listResponse = await listPlugins(app, env) + const listBody: any = await listResponse.json() + assert.deepEqual(listBody.data.content, []) + const publicResponse = await publicApp().request( + "/api/public/plugins", + {}, + env, + ) + const publicBody: any = await publicResponse.json() + assert.deepEqual(publicBody.data, []) + + const falseResult = await install(app, env, { + manifest: { ...manifest, id: "com.example.false" }, + }) + assert.equal(falseResult.status, 503) + assert.deepEqual(getStored().plugins, []) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "manifest reinstall preserves legacy-only plugin fields", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + try { + const legacy = { + id: manifest.id, + name: "Legacy", + version: "0.9.0", + description: "Legacy description", + author: "Author", + homepage: "https://example.com", + repository: "https://example.com/repo", + icon: "icon.png", + type: "ui", + enabled: false, + high_privilege: true, + permissions: ["files_read"], + entry_url: "index.js", + script_content: "script", + style_content: "style", + config_schema: [{ key: "token" }], + config_values: { token: "keep" }, + target_hooks: ["global"], + is_builtin: true, + tags: ["legacy"], + } + assert.equal((await install(adminApp(), env, legacy)).status, 200) + assert.equal((await install(adminApp(), env, { manifest })).status, 200) + const stored = getStored().plugins[0] + assert.equal(stored.name, manifest.displayName) + assert.equal(stored.author, "Author") + assert.equal(stored.entry_url, "index.js") + assert.equal(stored.script_content, "script") + assert.equal(stored.style_content, "style") + assert.deepEqual(stored.config_schema, [{ key: "token" }]) + assert.deepEqual(stored.config_values, { token: "keep" }) + assert.deepEqual(stored.target_hooks, ["global"]) + assert.equal(stored.is_builtin, true) + assert.deepEqual(stored.tags, ["legacy"]) + assert.equal(stored.enabled, false) + assert.equal(stored.high_privilege, true) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "legacy plugin IDs are length-bounded and case-insensitive", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + const app = adminApp() + try { + assert.equal( + ( + await install(app, env, { + id: "Legacy.Plugin", + name: "Legacy", + }) + ).status, + 200, + ) + assert.equal( + ( + await install(app, env, { + id: "legacy.plugin", + name: "Legacy updated", + }) + ).status, + 200, + ) + assert.equal(getStored().plugins.length, 1) + assert.equal(getStored().plugins[0].id, "legacy.plugin") + const getResponse = await app.request( + "/api/admin/plugin/get?id=LEGACY.PLUGIN", + { headers: { Authorization: TOKEN } }, + env, + ) + assert.equal(getResponse.status, 200) + + const tooLong = await install(app, env, { + id: "x".repeat(256), + name: "Too long", + }) + assert.equal(tooLong.status, 400) + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "plugin update and batch save validate manifests atomically", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + const app = adminApp() + try { + assert.equal((await install(app, env, { manifest })).status, 200) + + const mismatch = await app.request( + "/api/admin/plugin/update", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + id: manifest.id, + manifest: { ...manifest, id: "other.plugin" }, + }), + }, + env, + ) + assert.equal(mismatch.status, 400) + assert.equal(getStored().plugins[0].version, manifest.version) + + const updated = await app.request( + "/api/admin/plugin/update", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + id: manifest.id, + manifest: { ...manifest, version: "2.0.0" }, + }), + }, + env, + ) + assert.equal(updated.status, 200) + assert.equal(getStored().plugins[0].version, "2.0.0") + + const duplicateBatch = await app.request( + "/api/admin/plugin/batch_save", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + plugins: [ + { id: "Legacy", name: "Legacy" }, + { id: "legacy", name: "Legacy duplicate" }, + ], + }), + }, + env, + ) + assert.equal(duplicateBatch.status, 400) + assert.equal(getStored().plugins.length, 1) + + const invalidBatch = await app.request( + "/api/admin/plugin/batch_save", + { + method: "POST", + headers: { + Authorization: TOKEN, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + plugins: [{ ...getStored().plugins[0], manifest: null }], + }), + }, + env, + ) + assert.equal(invalidBatch.status, 400) + assert.equal(getStored().plugins[0].version, "2.0.0") + } finally { + __resetDbCacheForTest() + } + }, +) + +test( + "manifest URL installation uses a trusted origin and cancels rejected bodies", + { concurrency: false }, + async () => { + const { env, getStored } = setup() + const originalFetch = globalThis.fetch + const originalProcessOrigin = process.env.PLUGIN_MANIFEST_ORIGIN + let calls = 0 + try { + ;(globalThis as any).fetch = async ( + input: any, + init: any, + ): Promise<Response> => { + calls++ + assert.equal(String(input), "http://localhost/plugin.json") + assert.equal(init.redirect, "error") + assert.ok(init.signal) + return new Response(JSON.stringify(manifest), { + status: 200, + headers: { "Content-Type": "application/json" }, + }) + } + const installed = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(installed.status, 200) + assert.equal(getStored().plugins[0].manifest.id, manifest.id) + ;(globalThis as any).fetch = async () => { + calls++ + return new Response(JSON.stringify(manifest)) + } + const external = await install(adminApp(), env, { + manifest_url: "https://evil.example/plugin.json", + }) + assert.equal(external.status, 400) + assert.equal(calls, 1) + let oversizedCanceled = false + ;(globalThis as any).fetch = async () => + new Response( + new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode("{}")) + }, + cancel() { + oversizedCanceled = true + }, + }), + { headers: { "Content-Length": "70000" } }, + ) + const oversized = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(oversized.status, 400) + assert.equal(oversizedCanceled, true) + assert.equal(getStored().plugins.length, 1) + + let streamedOversizedCanceled = false + ;(globalThis as any).fetch = async () => + new Response( + new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode("x".repeat(40_000))) + controller.enqueue(new TextEncoder().encode("x".repeat(40_000))) + }, + cancel() { + streamedOversizedCanceled = true + }, + }), + ) + const streamedOversized = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(streamedOversized.status, 400) + assert.equal(streamedOversizedCanceled, true) + + let errorCanceled = false + ;(globalThis as any).fetch = async () => + new Response( + new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode("error")) + }, + cancel() { + errorCanceled = true + }, + }), + { status: 500 }, + ) + const failed = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(failed.status, 400) + assert.equal(errorCanceled, true) + + delete env.PLUGIN_MANIFEST_ORIGIN + const untrusted = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(untrusted.status, 400) + + process.env.PLUGIN_MANIFEST_ORIGIN = "http://localhost" + ;(globalThis as any).fetch = async () => + new Response(JSON.stringify(manifest), { status: 200 }) + const processOrigin = await install(adminApp(), env, { + manifest_url: "http://localhost/plugin.json", + }) + assert.equal(processOrigin.status, 200) + } finally { + globalThis.fetch = originalFetch + if (originalProcessOrigin === undefined) { + delete process.env.PLUGIN_MANIFEST_ORIGIN + } else { + process.env.PLUGIN_MANIFEST_ORIGIN = originalProcessOrigin + } + __resetDbCacheForTest() + } + }, +) + +test( + "public plugins expose only safe manifest metadata", + { concurrency: false }, + async () => { + const { env } = setup() + try { + assert.equal( + ( + await install(adminApp(), env, { + manifest, + config_values: { token: "secret" }, + script_content: "raw", + }) + ).status, + 200, + ) + const res = await publicApp().request("/api/public/plugins", {}, env) + assert.equal(res.status, 200) + const body: any = await res.json() + assert.equal(body.data.length, 1) + assert.deepEqual(body.data[0].manifest, { + apiVersion: "v1", + id: manifest.id, + version: manifest.version, + displayName: manifest.displayName, + description: manifest.description, + capabilities: manifest.capabilities, + }) + assert.equal("entry" in body.data[0].manifest, false) + assert.equal("settingsSchema" in body.data[0].manifest, false) + assert.equal("config_values" in body.data[0], false) + assert.equal("script_content" in body.data[0], false) + } finally { + __resetDbCacheForTest() + } + }, +) diff --git a/src/backend/server/public.ts b/src/backend/server/public.ts index 9016c823..21d9bb73 100644 --- a/src/backend/server/public.ts +++ b/src/backend/server/public.ts @@ -6,6 +6,7 @@ import { getStoreStatus, isDbTrusted, isEncryptionReady, + reloadDb, saveDb, } from "../internal/model/db" import { @@ -16,6 +17,7 @@ import { readDriver, readFormat, } from "../internal/model/store/backend" +import { toPublicPlugin } from "../internal/model/plugin" import { setUserPassword } from "../pkg/password" // 脱敏 / 截断 / 摘要 / 建议组装:与全局 503 拦截(index.ts)共用同一套规则 import { @@ -523,13 +525,13 @@ publicRouter.get("/offline_download_tools", (c) => { }) publicRouter.get("/plugins", async (c) => { - const db = await getDb(c.env) + const db = await reloadDb(c.env) const plugins = db.plugins || [] const activePlugins = plugins.filter((p: any) => p.enabled) return c.json({ code: 200, message: "success", - data: activePlugins, + data: activePlugins.map((plugin: any) => toPublicPlugin(plugin)), }) }) diff --git a/wrangler.jsonc b/wrangler.jsonc index a7a08f3a..22f4a00a 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -97,6 +97,10 @@ // 前端静态资源 CDN 地址,支持 $version 占位符 // "ASSET_URLS": "https://example.com/dist", // + // 允许通过 manifest_url 安装插件的可信 origin,例如 https://yourdomain.com。 + // 留空禁用 URL 安装;URL 必须与该 origin 完全一致,且不允许重定向。 + // "PLUGIN_MANIFEST_ORIGIN": "https://yourdomain.com", + // // 允许作为种子数据来源的主机白名单,逗号/空格分隔 // "ALLOW_SEED": "",