polyscript
Advanced tools
Comparing version
@@ -11,5 +11,4 @@ import { createProgress, writeFile } from './_utils.js'; | ||
const { apply } = Reflect; | ||
const FunctionPrototype = Function.prototype; | ||
const { call } = FunctionPrototype; | ||
const apply = call.bind(call, call.apply); | ||
@@ -16,0 +15,0 @@ // REQUIRES INTEGRATION TEST |
@@ -8,3 +8,3 @@ /* c8 ignore start */ | ||
const { Worker } = coincident({ encoder, transfer: false }); | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(['/*@*/'+"const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith(\"on\")&&(e[n]=t);return e}))}dispatchEvent(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(Bn){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 3:return e[y++];case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 12:return BigInt(e[y++]);case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=y-4,o=[d(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 0:return e[e[y++]];default:throw new TypeError(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+32767,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>(e=>(y=0,e.length?d(e):void 0))(f(e)))),m=\"940beb37\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},{fromCharCode:k}=String,{min:x}=Math;var j=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=x(a+32767,n);o+=k.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:B}=JSON,P=j(B),$=\"array\",T=\"bigint\",O=\"boolean\",F=\"function\",R=\"null\",M=\"number\",D=\"object\",L=\"string\",C=\"symbol\",I=\"undefined\";var N={[$]:0,[T]:1,[O]:2,[F]:3,[R]:4,[M]:5,[D]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=j((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t}));var W=Promise.withResolvers.bind(Promise);const J=[],q=new WeakSet,z=(...e)=>(q.add(e),e),K=Promise.withResolvers();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),K.resolve([e.data,e.ports[0]])}),{once:!0});var G=async e=>{const[t,n]=await K.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||P)(v),a=!1!==e?.transfer;let i,c,l;if(A){const t=new SharedArrayBuffer(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});i=new Int32Array(t),({pause:c,wait:l}=Atomics),!c||r||t instanceof ArrayBuffer||(l=(e,t)=>{for(;e[t]<1;)c()})}const[u,p]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=W();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]})(String),d=new Map,f=b(null),y=new Proxy(f,{get(e,c){if(\"then\"===c)return;let p=d.get(c);return p||d.set(c,p=(...e)=>{const p=((e,t)=>{let n=J;return e&&q.has(t.at(-1)||J)&&(n=t.pop(),q.delete(n)),n})(a,e),d=[i,c,s?e.map(s):e];if(A){r?postMessage({ID:t,data:d},p):n.postMessage(d,p),l(i,0),i[0]=0;const e=i[1]?o(i[1],i.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=u();return d[0]=e,n.postMessage(d,p),t}}),p},set:S});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?p.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,f,s),n.postMessage(e))},{native:A,proxy:y,transfer:z}};const Y=\"apply\",V=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",Q=\"get\",ee=\"getOwnPropertyDescriptor\",te=\"getPrototypeOf\",ne=\"has\",re=\"isExtensible\",se=\"ownKeys\",oe=\"preventExtensions\",ae=\"set\",ie=\"setPrototypeOf\";var ce=Object.freeze({__proto__:null,APPLY:Y,CONSTRUCT:V,DEFINE_PROPERTY:X,DELETE_PROPERTY:Z,GET:Q,GET_OWN_PROPERTY_DESCRIPTOR:ee,GET_PROTOTYPE_OF:te,HAS:ne,IS_EXTENSIBLE:re,OWN_KEYS:se,PREVENT_EXTENSION:oe,SET:ae,SET_PROTOTYPE_OF:ie});const le=\"destruct\";function ue(){return this}const pe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),de=Object.create(null),fe=(e,t,{debug:n,handler:r,return:s,token:o=e}=de)=>{const a=s||new Proxy(e,r||de),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),pe.register(...i),a},{Object:ye,Proxy:he,Reflect:me}=globalThis,{isArray:we}=Array,{ownKeys:ge}=me,{create:be,hasOwn:_e,values:Ae}=ye,Ee=(e,t)=>t===$?e[0]:t===F?e():t===D?e.$:e,ve=(e,t,n,r)=>{const s={type:{value:t}},o=_e(e,\"valueOf\");for(const a of Ae(ce)){let i=r(e[a]||me[a]);if(o&&a===Q){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,Ee(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return be(e,s)},Se=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case D:case I:r||(r=!1);case F:break;default:r=!1,t===e&&(t=ye(e))}const s=new he(t,n),{destruct:o}=n;return o?fe(e,o,{token:r,return:s}):s},ke=e=>t=>{const n=typeof t;return n===D?t?e.get(t)?.[0]??(e=>we(e)?$:D)(t):R:n},xe=e=>t=>{let n=typeof t;switch(n){case D:if(!t){n=R;break}case F:const r=e.get(t);r&&([n,t]=r)}return[n,t]},je=e=>((e=>{pe.unregister(e)})(e),e);var Be=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:je,pair:xe(t),typeOf:ke(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ge(e)){if(_e(o,t))continue;const a=e[t];switch(t){case $:{const e=ve(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,[t],e,...n),$,t);break}case F:{const e=ve(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(Se(t,(r=t,ue.bind(r)),e,...n),F,t);var r};break}case D:{const e=ve(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,{$:t},e,...n),D,t);break}default:{const e=ve(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(Se(n,n,e,...r),t,n);break}}}return o};const{drop:Pe,get:$e,hold:Te}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===M?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Oe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Oe.set(Symbol[e],e),Oe.set(e,Symbol[e]));const Fe=e=>Oe.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:Re}=Array,{isView:Me}=ArrayBuffer,{[Y]:De}=Reflect;var Le=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[D]:return null==t?globalThis:typeof t===M?r(t,l.object):t;case N[$]:return typeof t===M?r(t,l.array):t;case N[F]:return typeof t===M?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Oe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case D:if(r==globalThis||null==r)r=null;else if(typeof r===D){if(r=t(r),Re(r))return[N[$],r.map(o)];if(Me(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[D],r];case $:return[N[$],typeof r===M?r:t(r).map(o)];case F:return[N[F],typeof r===F?String(Te(t(r))):r];case C:return[N[C],Fe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[X]:(e,t,n)=>a(X,e,o(t),o(n)),[Z]:(e,t)=>a(Z,e,o(t)),[Q]:(e,t)=>a(Q,e,o(t)),[te]:e=>a(te,e),[ee]:(e,t)=>{const n=a(ee,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[ne]:(e,t)=>a(ne,e,o(t)),[re]:e=>a(re,e),[se]:e=>a(se,e).map(s),[oe]:e=>a(oe,e),[ae]:(e,t,n)=>a(ae,e,o(t),o(n)),[ie]:(e,t)=>a(ie,e,o(t)),[le](t){n.delete(t),e(le,t)}},c={[D]:i,[$]:i,[F]:{...i,[Y]:(e,...t)=>a(Y,e,...t.map(o)),[V]:(e,...t)=>a(V,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=Be(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case Y:{const[e,t]=n;return o(await De($e(r),s(e),t.map(s)))}case le:Pe(r)}}}};const Ce={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp(\"^\"+RegExp.$1,\"gm\"),\"\"));break}return e}},Ie=new WeakMap,Ne=e=>{const t=e||console,n={buffered:He,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Ie.set(t,n),t}}},Ue=new TextDecoder,He=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ue.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},We=(e,...t)=>Ce[typeof e](e,...t),{isArray:Je}=Array,{assign:qe,create:ze,defineProperty:Ke,entries:Ge}=Object,{all:Ye,resolve:Ve}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Xe=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ze(e){return e.startsWith(\".\")?Xe(e,this):e}const Qe=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},et=e=>Function(`'use strict';return (${e})`)(),tt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),nt=Symbol.for(\"polyscript.js_modules\"),rt=new Map;Ke(globalThis,nt,{value:rt}),new Proxy(rt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const st=(e,t)=>!t.startsWith(\"_\"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(e,t)=>import(e).then((e=>{rt.set(t,{...e})})),it=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(qe(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),ct=e=>/\\.css$/i.test(new URL(e).pathname),lt=(e,t)=>e.has(t),ut=e=>[...e.keys()];var pt=(e,t,n,r)=>{const s=globalThis[nt];if(n)for(let[e,t]of Ge(n)){let n=s.get(t);n&&!Je(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:lt,ownKeys:ut,get:(e,s)=>{let o=e.get(s);if(Je(o)){let a=o;o=null;for(let e of a)e=Xe(e,r),ct(e)?n.importCSS(e):(n.importJS(e,s),o=t[nt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const dt=new Map,ft=e=>dt.get(e),yt=(e,t)=>{try{return Function(\"require\",t)(ft)}catch(t){Ie.get(e).stderr(t)}};var ht={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>Ne().get(e),registerJSModule(e,t,n){dt.set(t,n)},run:yt,runAsync:yt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(ft,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const mt=Object.getOwnPropertyDescriptors(Response.prototype),wt=e=>\"function\"==typeof e,gt={get:(e,t)=>mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!wt(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,mt[t]):((e,t)=>wt(t)?t.bind(e):t)(e,e[t])};var bt=(e,...t)=>new Proxy(fetch(e,...t),gt);const _t=!globalThis.window,At=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):vt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Et=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},vt=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},St=(e,t)=>{const n=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join(\"/\").replace(/^\\/+/,\"/\")},kt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},xt=(e,t)=>bt(Xe(e,t)).arrayBuffer(),jt=(e,t,n,r)=>Ye((e=>{for(const{files:t,to_file:n,from:r=\"\"}of e){if(void 0!==t&&void 0!==n)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===n&&r.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:n,files:r})=>{if(Je(r))return r.map((n=>({url:kt([e,n]),path:kt([t,n])})));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:kt([t,s])}]}))})(n).map((({url:n,path:s})=>xt(n,r).then((n=>e.writeFile(t,s,n)))))),Bt=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,Pt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),$t=(e,t,n,r)=>Ye((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Ge(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Pt(o,t))}else{const e=Pt(s,t),a=Bt(e,Pt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>xt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Tt=({main:e,worker:t},n)=>{const r=[];if(t&&_t)for(let[e,s]of Ge(t))e=Xe(e,n),r.push(at(e,s));if(e&&!_t)for(let[t,s]of Ge(e))t=Xe(t,n),ct(t)?it(t):r.push(at(t,s));return Ye(r)},Ot=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Ft}=Object,Rt=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Mt=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Mt+=crypto.randomUUID()}catch(Ft){Mt+=Math.random().toString(36).substring(2)}var Dt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Lt}=Object,Ct=e=>{switch(e[Nt++]){case Dt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Dt.object:{const t=e[Nt++],n={};e[Nt-2]=n;for(let r=0;r<t;r++)n[Ct(e)]=Ct(e);return n}case Dt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Dt.number:return e[Nt++];case Dt.true:return!0;case Dt.false:return!1;case Dt.null:return null;case Dt.undefined:return;case Dt.bigint:return BigInt(e[Nt++]);case Dt.buffer:{const t=e[Nt++],n=e[Nt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Nt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Nt++];return s}case Dt.view:{const t=e[Nt++],n=e[Nt++],r=e[Nt++],s=Nt-4,o=[Ct(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case Dt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Dt.map:{const t=e[Nt++],n=new Map;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e),r=Ct(e);void 0!==t&&n.set(t,r)}return n}case Dt.set:{const t=e[Nt++],n=new Set;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e);void 0!==t&&n.add(t)}return n}case Dt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Dt.error:{const t=globalThis[e[Nt++]]||Error,n=e[Nt++],r=e[Nt++],s=new t(n,{cause:e[Nt++]});return e[Nt-5]=Lt(s,\"stack\",{value:r}),s}case Dt.symbol:return(t=e[Nt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Dt.ref:return e[e[Nt++]];default:throw new TypeError(`Unknown type: ${e[Nt-1]}`)}var t},{parse:It}=JSON;let Nt=0;const{isArray:Ut}=Array,{isView:Ht}=ArrayBuffer,{stringify:Wt}=JSON,Jt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Dt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Rt(n))=>{switch(r){case\"null\":e.push(Dt.null);break;case\"object\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Dt.array,r);for(let s=0;s<r;s++)qt(e,t,n[s]);break}case Ht(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Dt.view,(e=>{for(;!(e.name in globalThis);)e=Ft(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Jt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Dt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=32767)e.push.apply(e,r.subarray(t,t+32767))}break}case n instanceof Date:e.push(Dt.date,+n);break;case n instanceof Map:{const r=e.push(Dt.map,0);let s=0;for(const[r,o]of n){const n=Rt(r),a=Rt(o);n&&a&&(qt(e,t,r,n),qt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Dt.set,0);let s=0;for(const r of n){const n=Rt(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Dt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Dt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Dt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Dt.object,0);let s=0;for(const r in n){const o=n[r],a=Rt(o);a&&(qt(e,t,r,\"string\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Dt.true:Dt.false);break;case\"string\":if(Jt(e,t,n))break;e.push(Dt.string,n);break;case\"bigint\":e.push(Dt.bigint,n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Dt.symbol,t);break}}case\"\":e.push(Dt.undefined);break;default:e.push(Dt[r],n)}},zt={parse:e=>{return t=It(e),Nt=0,t.length?Ct(t):void 0;var t},stringify:e=>Wt((e=>{const t=[];return qt(t,new Map,e),t})(e))},Kt=new WeakMap,Gt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await $t(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await jt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await Tt(r.js_modules,s),t(\"Loaded JS modules\"))},Yt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Kt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=zt),e.registerJsModule(t,n)},Vt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Xt=(e,t,...n)=>{try{return e.runPython(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Zt=async(e,t,...n)=>{try{return await e.runPythonAsync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Qt=async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}};var en=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const tn=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function nn(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function rn(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await sn(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):vt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await nn(t,!0),{syncfs:async()=>await nn(t,!1)}}}const sn=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},on=(e,t)=>{try{e.mkdir(t)}catch(e){}},an=Ot(\"mpy\");var cn={type:\"micropython\",module:(e=\"1.25.0\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=Ne({stderr:He(console.error),stdout:He(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),an(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=ln.bind(this,i,r);return Kt.set(i,c),await Gt(this,an,i,t,r),this.writeFile(i,\"./mip.py\",en),t.packages&&(an(\"Loading packages\"),await c(t.packages.map(Ze,r)),an(\"Loaded packages\")),an(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=rn(i._module)),i},registerJSModule:Yt,run:Xt,runAsync:Zt,runEvent:Qt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=Vt(t,r);if(c){const r=t.slice(0,-1);switch(\"./\"!==r&&s.mkdir(r),c){case\"whl\":case\"zip\":{const e=new Blob([n],{type:\"application/zip\"});return import(\"./zip-1TWXRld0.js\").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)on(s,i);else{on(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case\"tgz\":case\"tar.gz\":{const t=\"./_.tar.gz\";return At(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${t}\", \"rb\")))\\n for f in tar:\\n name = f\"${r}{f.name}\"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != \"./\":\\n os.mkdir(name.strip(\"/\"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, \"wb\") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove(\"${t}\")\\n `)}}}return At(i,t,n)}};async function ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Xe(s,t),r=await bt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const un={dict_converter:Object.fromEntries},{stringify:pn}=JSON,dn=Function.prototype,{call:fn}=dn,yn=fn.bind(fn,fn.apply),hn=e=>function(...t){return yn(e,this,t)};let mn,wn;const gn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\"object\":if(null===r)break;case\"function\":if(mn in r&&!r[mn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=wn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(dn,{apply:{value(t,r){return e&&n(r),yn(this,t,r)}},call:{value(t,...r){return e&&n(r),yn(this,t,r)}}})},bn=Ot(\"py\"),_n=new WeakMap;var An={type:\"pyodide\",module:(e=\"0.27.6\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){bn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ze,r)),bn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=pn(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();bn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=Ne(),y=await f(e({stderr:p,stdout:d,...l})),h=vn.bind(y);return o&&_n.set(y,o),Kt.set(y,h),await Gt(this,bn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),bn(\"Loaded Pyodide\"),\"auto\"===t.experimental_create_proxy&&(y.runPython([\"import js\",\"from pyodide.ffi import to_js\",\"o=js.Object.fromEntries\",\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\"].join(\";\"),{globals:y.toPy({})}),wn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[mn]=Reflect.ownKeys(wn).filter((e=>\"symbol\"==typeof e&&\"Symbol(pyproxy.attrs)\"===String(e))),gn(!0)),y},registerJSModule:Yt,run:hn(Xt),runAsync:hn(Zt),runEvent:hn(Qt),transform:(e,t)=>yn(En,e,[t]),writeFile:(e,t,n,r)=>{const s=Vt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return At({FS:o,PATH:a,PATH_FS:i},t,n)}};function En(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(un);if(e instanceof Map)return new Map([...e.entries()]);if(Je(e))return e.map(En,this)}return e}async function vn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,bn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(_n.has(this)&&o.set_index_urls(_n.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(pn(e),n)}o.destroy()}const Sn=\"ruby-wasm-wasi\",kn=Sn.replace(/\\W+/g,\"_\");var xn={type:Sn,experimental:!0,module:(e=\"2.7.1\")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,\"/ruby.wasm\");const s=await bt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await $t(this,a,t.files,r),t.fetch&&await jt(this,a,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${kn}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(We(t),...n),runAsync:(e,t,...n)=>e.evalAsync(We(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${kn}_event`;globalThis[r]=n,this.run(e,`require \"js\";$xworker.call(\"${t}\",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${Sn}`)}};var jn={type:\"wasmoon\",module:(e=\"1.16.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=Ne(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,\"print\",a),c.global.setField(e,\"printErr\",o)})),n.files&&await $t(this,c,n.files,s),n.fetch&&await jt(this,c,n.fetch,s),n.js_modules&&await Tt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(vt(e,Et(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const Bn=new WeakMap,Pn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=Bn.get(e),{output:o,result:a}=await n.captureR(We(t));for(const{type:e,data:t}of o)s[e](t);return fe(a,r,{token:!1})};var $n={type:\"webr\",experimental:!0,module:(e=\"0.4.3\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Ne(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return Bn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ie.get(o)}),t.files&&await $t(this,o,t.files,r),t.fetch&&await jt(this,o,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:Pn,runAsync:Pn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log(\"transforming\",t),t),writeFile:()=>{}};const Tn=new Map,On=new Map,Fn=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=Tn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(r)?r.join(\"@\"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(On.set(t,e),s(r,e,n,o))))}}),Rn=e=>{for(const t of[].concat(e.type))Tn.set(t,e)};for(const e of[ht,cn,An,xn,jn,$n])Rn(e);const{parse:Mn}=JSON,Dn=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Xe(e),n]})(e,t);return\"json\"===s?n=bt(r).json():\"toml\"===s?n=bt(r).text().then(tn):\"string\"===s?n=Ln(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=Ln(n)),[n,e=r]},Ln=e=>{try{return Mn(e)}catch(t){return tn(e)}},Cn=\"BeforeRun\",In=\"AfterRun\",Nn=[`code${Cn}`,`code${Cn}Async`,`code${In}`,`code${In}Async`],Un=[\"onWorker\",\"onReady\",`on${Cn}`,`on${Cn}Async`,`on${In}`,`on${In}Async`];function Hn(e,t){const{run:n,runAsync:r}=Tn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Wn=(e,t,n,r,s,o)=>{if(s||o){const a=Hn.bind(e,t),i=r?\"runAsync\":\"run\",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Jn,qn,zn;const Kn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Jn,qn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Gn,native:Yn,window:Vn,isWindowProxy:Xn}=await(async e=>{let t=!1;const n=e?.decoder||P,r=await G({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Le((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transfer:!1,transform:e=>zn?zn(e):e}),Zn={polyfill:!Yn,sync:Gn,window:Yn?Vn:null,isWindowProxy:Xn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Kn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Jn=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=Dn(t,n,r)),Ve(r).then((n=>Fn[e](n,t)))))(y,t,n,d),{js_modules:m}=On.get(y),w=m?.main,g=ze(Tn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ie.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of Nn){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(e.startsWith(\"codeBefore\")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]=\"run\"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,tt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,tt(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Un.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=et(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Wn(g,b,Zn,f,e,t)}let A,E,v,S=null,k=\"\";Yn&&(({CustomEvent:A,document:E}=Vn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Vn,Gn,w,t);if(((e,t,n,r)=>{if(\"pyodide\"===e)return;const s=\"polyscript.js_modules\";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,ot(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:Zn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(qe(Vn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),qn=g.runEvent.bind(g,h),zn=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&et(s?.onReady).call(g,Hn.call(g,b,h),Zn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.runPython([`import js as ${t}`,`${t}.${t} = \"${n}\" in locals() and ${n} or []`,`del ${t}`].join(\"\\n\"));const r=[...globalThis[t]];delete globalThis[t],r.length&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),Kn(\"error\"),Kn(\"message\"),Kn(\"messageerror\"),Yn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Vn.dispatchEvent(new Vn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(['/*@*/'+"const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith(\"on\")&&(e[n]=t);return e}))}dispatchEvent(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(jn){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 3:return e[y++];case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 12:return BigInt(e[y++]);case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=y-4,o=[d(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 0:return e[e[y++]];default:throw new TypeError(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+32767,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>(e=>(y=0,e.length?d(e):void 0))(f(e)))),m=\"940beb37\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},{fromCharCode:k}=String,{min:x}=Math;var j=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=x(a+32767,n);o+=k.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:B}=JSON,P=j(B),$=\"array\",T=\"bigint\",O=\"boolean\",R=\"function\",F=\"null\",M=\"number\",D=\"object\",L=\"string\",C=\"symbol\",I=\"undefined\";var N={[$]:0,[T]:1,[O]:2,[R]:3,[F]:4,[M]:5,[D]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=j((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t}));var W=Promise.withResolvers.bind(Promise);const J=[],q=new WeakSet,z=(...e)=>(q.add(e),e),K=Promise.withResolvers();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),K.resolve([e.data,e.ports[0]])}),{once:!0});var G=async e=>{const[t,n]=await K.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||P)(v),a=!1!==e?.transfer;let i,c,l;if(A){const t=new SharedArrayBuffer(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});i=new Int32Array(t),({pause:c,wait:l}=Atomics),!c||r||t instanceof ArrayBuffer||(l=(e,t)=>{for(;e[t]<1;)c()})}const[u,p]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=W();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]})(String),d=new Map,f=b(null),y=new Proxy(f,{get(e,c){if(\"then\"===c)return;let p=d.get(c);return p||d.set(c,p=(...e)=>{const p=((e,t)=>{let n=J;return e&&q.has(t.at(-1)||J)&&(n=t.pop(),q.delete(n)),n})(a,e),d=[i,c,s?e.map(s):e];if(A){r?postMessage({ID:t,data:d},p):n.postMessage(d,p),l(i,0),i[0]=0;const e=i[1]?o(i[1],i.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=u();return d[0]=e,n.postMessage(d,p),t}}),p},set:S});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?p.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,f,s),n.postMessage(e))},{native:A,proxy:y,transfer:z}};const Y=\"apply\",V=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",Q=\"get\",ee=\"getOwnPropertyDescriptor\",te=\"getPrototypeOf\",ne=\"has\",re=\"isExtensible\",se=\"ownKeys\",oe=\"preventExtensions\",ae=\"set\",ie=\"setPrototypeOf\";var ce=Object.freeze({__proto__:null,APPLY:Y,CONSTRUCT:V,DEFINE_PROPERTY:X,DELETE_PROPERTY:Z,GET:Q,GET_OWN_PROPERTY_DESCRIPTOR:ee,GET_PROTOTYPE_OF:te,HAS:ne,IS_EXTENSIBLE:re,OWN_KEYS:se,PREVENT_EXTENSION:oe,SET:ae,SET_PROTOTYPE_OF:ie});const le=\"destruct\";function ue(){return this}const pe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),de=Object.create(null),fe=(e,t,{debug:n,handler:r,return:s,token:o=e}=de)=>{const a=s||new Proxy(e,r||de),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),pe.register(...i),a},{Object:ye,Proxy:he,Reflect:me}=globalThis,{isArray:we}=Array,{ownKeys:ge}=me,{create:be,hasOwn:_e,values:Ae}=ye,Ee=(e,t)=>t===$?e[0]:t===R?e():t===D?e.$:e,ve=(e,t,n,r)=>{const s={type:{value:t}},o=_e(e,\"valueOf\");for(const a of Ae(ce)){let i=r(e[a]||me[a]);if(o&&a===Q){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,Ee(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return be(e,s)},Se=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case D:case I:r||(r=!1);case R:break;default:r=!1,t===e&&(t=ye(e))}const s=new he(t,n),{destruct:o}=n;return o?fe(e,o,{token:r,return:s}):s},ke=e=>t=>{const n=typeof t;return n===D?t?e.get(t)?.[0]??(e=>we(e)?$:D)(t):F:n},xe=e=>t=>{let n=typeof t;switch(n){case D:if(!t){n=F;break}case R:const r=e.get(t);r&&([n,t]=r)}return[n,t]},je=e=>((e=>{pe.unregister(e)})(e),e);var Be=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:je,pair:xe(t),typeOf:ke(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ge(e)){if(_e(o,t))continue;const a=e[t];switch(t){case $:{const e=ve(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,[t],e,...n),$,t);break}case R:{const e=ve(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(Se(t,(r=t,ue.bind(r)),e,...n),R,t);var r};break}case D:{const e=ve(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,{$:t},e,...n),D,t);break}default:{const e=ve(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(Se(n,n,e,...r),t,n);break}}}return o};const{drop:Pe,get:$e,hold:Te}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===M?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Oe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Oe.set(Symbol[e],e),Oe.set(e,Symbol[e]));const Re=e=>Oe.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:Fe}=Array,{isView:Me}=ArrayBuffer,{[Y]:De}=Reflect;var Le=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[D]:return null==t?globalThis:typeof t===M?r(t,l.object):t;case N[$]:return typeof t===M?r(t,l.array):t;case N[R]:return typeof t===M?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Oe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case D:if(r==globalThis||null==r)r=null;else if(typeof r===D){if(r=t(r),Fe(r))return[N[$],r.map(o)];if(Me(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[D],r];case $:return[N[$],typeof r===M?r:t(r).map(o)];case R:return[N[R],typeof r===R?String(Te(t(r))):r];case C:return[N[C],Re(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[X]:(e,t,n)=>a(X,e,o(t),o(n)),[Z]:(e,t)=>a(Z,e,o(t)),[Q]:(e,t)=>a(Q,e,o(t)),[te]:e=>a(te,e),[ee]:(e,t)=>{const n=a(ee,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[ne]:(e,t)=>a(ne,e,o(t)),[re]:e=>a(re,e),[se]:e=>a(se,e).map(s),[oe]:e=>a(oe,e),[ae]:(e,t,n)=>a(ae,e,o(t),o(n)),[ie]:(e,t)=>a(ie,e,o(t)),[le](t){n.delete(t),e(le,t)}},c={[D]:i,[$]:i,[R]:{...i,[Y]:(e,...t)=>a(Y,e,...t.map(o)),[V]:(e,...t)=>a(V,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=Be(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case Y:{const[e,t]=n;return o(await De($e(r),s(e),t.map(s)))}case le:Pe(r)}}}};const Ce={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp(\"^\"+RegExp.$1,\"gm\"),\"\"));break}return e}},Ie=new WeakMap,Ne=e=>{const t=e||console,n={buffered:He,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Ie.set(t,n),t}}},Ue=new TextDecoder,He=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ue.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},We=(e,...t)=>Ce[typeof e](e,...t),{isArray:Je}=Array,{assign:qe,create:ze,defineProperty:Ke,entries:Ge}=Object,{all:Ye,resolve:Ve}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Xe=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ze(e){return e.startsWith(\".\")?Xe(e,this):e}const Qe=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},et=e=>Function(`'use strict';return (${e})`)(),tt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),nt=Symbol.for(\"polyscript.js_modules\"),rt=new Map;Ke(globalThis,nt,{value:rt}),new Proxy(rt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const st=(e,t)=>!t.startsWith(\"_\"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(e,t)=>import(e).then((e=>{rt.set(t,{...e})})),it=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(qe(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),ct=e=>/\\.css$/i.test(new URL(e).pathname),lt=(e,t)=>e.has(t),ut=e=>[...e.keys()];var pt=(e,t,n,r)=>{const s=globalThis[nt];if(n)for(let[e,t]of Ge(n)){let n=s.get(t);n&&!Je(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:lt,ownKeys:ut,get:(e,s)=>{let o=e.get(s);if(Je(o)){let a=o;o=null;for(let e of a)e=Xe(e,r),ct(e)?n.importCSS(e):(n.importJS(e,s),o=t[nt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const dt=new Map,ft=e=>dt.get(e),yt=(e,t)=>{try{return Function(\"require\",t)(ft)}catch(t){Ie.get(e).stderr(t)}};var ht={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>Ne().get(e),registerJSModule(e,t,n){dt.set(t,n)},run:yt,runAsync:yt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(ft,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const mt=Object.getOwnPropertyDescriptors(Response.prototype),wt=e=>\"function\"==typeof e,gt={get:(e,t)=>mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!wt(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,mt[t]):((e,t)=>wt(t)?t.bind(e):t)(e,e[t])};var bt=(e,...t)=>new Proxy(fetch(e,...t),gt);const _t=!globalThis.window,At=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):vt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Et=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},vt=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},St=(e,t)=>{const n=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join(\"/\").replace(/^\\/+/,\"/\")},kt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},xt=(e,t)=>bt(Xe(e,t)).arrayBuffer(),jt=(e,t,n,r)=>Ye((e=>{for(const{files:t,to_file:n,from:r=\"\"}of e){if(void 0!==t&&void 0!==n)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===n&&r.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:n,files:r})=>{if(Je(r))return r.map((n=>({url:kt([e,n]),path:kt([t,n])})));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:kt([t,s])}]}))})(n).map((({url:n,path:s})=>xt(n,r).then((n=>e.writeFile(t,s,n)))))),Bt=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,Pt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),$t=(e,t,n,r)=>Ye((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Ge(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Pt(o,t))}else{const e=Pt(s,t),a=Bt(e,Pt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>xt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Tt=({main:e,worker:t},n)=>{const r=[];if(t&&_t)for(let[e,s]of Ge(t))e=Xe(e,n),r.push(at(e,s));if(e&&!_t)for(let[t,s]of Ge(e))t=Xe(t,n),ct(t)?it(t):r.push(at(t,s));return Ye(r)},Ot=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Rt}=Object,Ft=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Mt=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Mt+=crypto.randomUUID()}catch(Rt){Mt+=Math.random().toString(36).substring(2)}var Dt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Lt}=Object,Ct=e=>{switch(e[Nt++]){case Dt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Dt.object:{const t=e[Nt++],n={};e[Nt-2]=n;for(let r=0;r<t;r++)n[Ct(e)]=Ct(e);return n}case Dt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Dt.number:return e[Nt++];case Dt.true:return!0;case Dt.false:return!1;case Dt.null:return null;case Dt.undefined:return;case Dt.bigint:return BigInt(e[Nt++]);case Dt.buffer:{const t=e[Nt++],n=e[Nt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Nt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Nt++];return s}case Dt.view:{const t=e[Nt++],n=e[Nt++],r=e[Nt++],s=Nt-4,o=[Ct(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case Dt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Dt.map:{const t=e[Nt++],n=new Map;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e),r=Ct(e);void 0!==t&&n.set(t,r)}return n}case Dt.set:{const t=e[Nt++],n=new Set;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e);void 0!==t&&n.add(t)}return n}case Dt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Dt.error:{const t=globalThis[e[Nt++]]||Error,n=e[Nt++],r=e[Nt++],s=new t(n,{cause:e[Nt++]});return e[Nt-5]=Lt(s,\"stack\",{value:r}),s}case Dt.symbol:return(t=e[Nt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Dt.ref:return e[e[Nt++]];default:throw new TypeError(`Unknown type: ${e[Nt-1]}`)}var t},{parse:It}=JSON;let Nt=0;const{isArray:Ut}=Array,{isView:Ht}=ArrayBuffer,{stringify:Wt}=JSON,Jt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Dt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Ft(n))=>{switch(r){case\"null\":e.push(Dt.null);break;case\"object\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Dt.array,r);for(let s=0;s<r;s++)qt(e,t,n[s]);break}case Ht(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Dt.view,(e=>{for(;!(e.name in globalThis);)e=Rt(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Jt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Dt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=32767)e.push.apply(e,r.subarray(t,t+32767))}break}case n instanceof Date:e.push(Dt.date,+n);break;case n instanceof Map:{const r=e.push(Dt.map,0);let s=0;for(const[r,o]of n){const n=Ft(r),a=Ft(o);n&&a&&(qt(e,t,r,n),qt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Dt.set,0);let s=0;for(const r of n){const n=Ft(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Dt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Dt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Dt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Dt.object,0);let s=0;for(const r in n){const o=n[r],a=Ft(o);a&&(qt(e,t,r,\"string\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Dt.true:Dt.false);break;case\"string\":if(Jt(e,t,n))break;e.push(Dt.string,n);break;case\"bigint\":e.push(Dt.bigint,n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Dt.symbol,t);break}}case\"\":e.push(Dt.undefined);break;default:e.push(Dt[r],n)}},zt={parse:e=>{return t=It(e),Nt=0,t.length?Ct(t):void 0;var t},stringify:e=>Wt((e=>{const t=[];return qt(t,new Map,e),t})(e))},Kt=new WeakMap,Gt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await $t(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await jt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await Tt(r.js_modules,s),t(\"Loaded JS modules\"))},Yt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Kt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=zt),e.registerJsModule(t,n)},Vt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Xt=(e,t,...n)=>{try{return e.runPython(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Zt=async(e,t,...n)=>{try{return await e.runPythonAsync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Qt=async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}};var en=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const tn=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function nn(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function rn(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await sn(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):vt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await nn(t,!0),{syncfs:async()=>await nn(t,!1)}}}const sn=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},on=(e,t)=>{try{e.mkdir(t)}catch(e){}},an=Ot(\"mpy\");var cn={type:\"micropython\",module:(e=\"1.25.0\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=Ne({stderr:He(console.error),stdout:He(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),an(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=ln.bind(this,i,r);return Kt.set(i,c),await Gt(this,an,i,t,r),this.writeFile(i,\"./mip.py\",en),t.packages&&(an(\"Loading packages\"),await c(t.packages.map(Ze,r)),an(\"Loaded packages\")),an(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=rn(i._module)),i},registerJSModule:Yt,run:Xt,runAsync:Zt,runEvent:Qt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=Vt(t,r);if(c){const r=t.slice(0,-1);switch(\"./\"!==r&&s.mkdir(r),c){case\"whl\":case\"zip\":{const e=new Blob([n],{type:\"application/zip\"});return import(\"./zip-1TWXRld0.js\").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)on(s,i);else{on(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case\"tgz\":case\"tar.gz\":{const t=\"./_.tar.gz\";return At(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${t}\", \"rb\")))\\n for f in tar:\\n name = f\"${r}{f.name}\"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != \"./\":\\n os.mkdir(name.strip(\"/\"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, \"wb\") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove(\"${t}\")\\n `)}}}return At(i,t,n)}};async function ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Xe(s,t),r=await bt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const un={dict_converter:Object.fromEntries},{stringify:pn}=JSON,{apply:dn}=Reflect,fn=Function.prototype,yn=e=>function(...t){return dn(e,this,t)};let hn,mn;const wn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\"object\":if(null===r)break;case\"function\":if(hn in r&&!r[hn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=mn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(fn,{apply:{value(t,r){return e&&n(r),dn(this,t,r)}},call:{value(t,...r){return e&&n(r),dn(this,t,r)}}})},gn=Ot(\"py\"),bn=new WeakMap;var _n={type:\"pyodide\",module:(e=\"0.27.6\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){gn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ze,r)),gn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=pn(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();gn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=Ne(),y=await f(e({stderr:p,stdout:d,...l})),h=En.bind(y);return o&&bn.set(y,o),Kt.set(y,h),await Gt(this,gn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),gn(\"Loaded Pyodide\"),\"auto\"===t.experimental_create_proxy&&(y.runPython([\"import js\",\"from pyodide.ffi import to_js\",\"o=js.Object.fromEntries\",\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\"].join(\";\"),{globals:y.toPy({})}),mn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[hn]=Reflect.ownKeys(mn).filter((e=>\"symbol\"==typeof e&&\"Symbol(pyproxy.attrs)\"===String(e))),wn(!0)),y},registerJSModule:Yt,run:yn(Xt),runAsync:yn(Zt),runEvent:yn(Qt),transform:(e,t)=>dn(An,e,[t]),writeFile:(e,t,n,r)=>{const s=Vt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return At({FS:o,PATH:a,PATH_FS:i},t,n)}};function An(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(un);if(e instanceof Map)return new Map([...e.entries()]);if(Je(e))return e.map(An,this)}return e}async function En(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,gn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(bn.has(this)&&o.set_index_urls(bn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(pn(e),n)}o.destroy()}const vn=\"ruby-wasm-wasi\",Sn=vn.replace(/\\W+/g,\"_\");var kn={type:vn,experimental:!0,module:(e=\"2.7.1\")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,\"/ruby.wasm\");const s=await bt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await $t(this,a,t.files,r),t.fetch&&await jt(this,a,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${Sn}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(We(t),...n),runAsync:(e,t,...n)=>e.evalAsync(We(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Sn}_event`;globalThis[r]=n,this.run(e,`require \"js\";$xworker.call(\"${t}\",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${vn}`)}};var xn={type:\"wasmoon\",module:(e=\"1.16.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=Ne(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,\"print\",a),c.global.setField(e,\"printErr\",o)})),n.files&&await $t(this,c,n.files,s),n.fetch&&await jt(this,c,n.fetch,s),n.js_modules&&await Tt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(vt(e,Et(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const jn=new WeakMap,Bn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=jn.get(e),{output:o,result:a}=await n.captureR(We(t));for(const{type:e,data:t}of o)s[e](t);return fe(a,r,{token:!1})};var Pn={type:\"webr\",experimental:!0,module:(e=\"0.4.3\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Ne(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return jn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ie.get(o)}),t.files&&await $t(this,o,t.files,r),t.fetch&&await jt(this,o,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:Bn,runAsync:Bn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log(\"transforming\",t),t),writeFile:()=>{}};const $n=new Map,Tn=new Map,On=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=$n.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(r)?r.join(\"@\"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(Tn.set(t,e),s(r,e,n,o))))}}),Rn=e=>{for(const t of[].concat(e.type))$n.set(t,e)};for(const e of[ht,cn,_n,kn,xn,Pn])Rn(e);const{parse:Fn}=JSON,Mn=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Xe(e),n]})(e,t);return\"json\"===s?n=bt(r).json():\"toml\"===s?n=bt(r).text().then(tn):\"string\"===s?n=Dn(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=Dn(n)),[n,e=r]},Dn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Ln=\"BeforeRun\",Cn=\"AfterRun\",In=[`code${Ln}`,`code${Ln}Async`,`code${Cn}`,`code${Cn}Async`],Nn=[\"onWorker\",\"onReady\",`on${Ln}`,`on${Ln}Async`,`on${Cn}`,`on${Cn}Async`];function Un(e,t){const{run:n,runAsync:r}=$n.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Hn=(e,t,n,r,s,o)=>{if(s||o){const a=Un.bind(e,t),i=r?\"runAsync\":\"run\",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Wn,Jn,qn;const zn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Wn,Jn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Kn,native:Gn,window:Yn,isWindowProxy:Vn}=await(async e=>{let t=!1;const n=e?.decoder||P,r=await G({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Le((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transfer:!1,transform:e=>qn?qn(e):e}),Xn={polyfill:!Gn,sync:Kn,window:Gn?Yn:null,isWindowProxy:Vn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};zn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Wn=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=Mn(t,n,r)),Ve(r).then((n=>On[e](n,t)))))(y,t,n,d),{js_modules:m}=Tn.get(y),w=m?.main,g=ze($n.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ie.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of In){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(e.startsWith(\"codeBefore\")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]=\"run\"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,tt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,tt(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Nn.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=et(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Hn(g,b,Xn,f,e,t)}let A,E,v,S=null,k=\"\";Gn&&(({CustomEvent:A,document:E}=Yn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Yn,Kn,w,t);if(((e,t,n,r)=>{if(\"pyodide\"===e)return;const s=\"polyscript.js_modules\";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,ot(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:Xn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(qe(Yn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),Jn=g.runEvent.bind(g,h),qn=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&et(s?.onReady).call(g,Un.call(g,b,h),Xn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.runPython([`import js as ${t}`,`${t}.${t} = \"${n}\" in locals() and ${n} or []`,`del ${t}`].join(\"\\n\"));const r=[...globalThis[t]];delete globalThis[t],r.length&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),zn(\"error\"),zn(\"message\"),zn(\"messageerror\"),Gn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Yn.dispatchEvent(new Yn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
/* c8 ignore stop */ |
{ | ||
"name": "polyscript", | ||
"version": "0.17.17", | ||
"version": "0.17.18", | ||
"description": "PyScript single core to rule them all", | ||
@@ -99,4 +99,4 @@ "main": "./esm/index.js", | ||
"worker": { | ||
"blob": "sha256-ewx2lRkKJ6uwQgWpftFjRvEhjXIITAvL6MfcTaeSxTk=" | ||
"blob": "sha256-O+HvjdLH9ZO5EJ2AhdtN4bWQt6Cy5lFI1uvUhA7mP1M=" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1210684
-0.02%4412
-0.05%