blob: 3b5264a672316b40f67eef59b0fdf2cf95b501ff [file]
(()=>{var T={blink:!0,gecko:!1,webkit:!1,unknown:!1},j=()=>navigator.vendor==="Google Inc."||navigator.userAgent.includes("Edg/")?"blink":navigator.vendor==="Apple Computer, Inc."?"webkit":navigator.vendor===""&&navigator.userAgent.includes("Firefox")?"gecko":"unknown",W=j(),K=()=>typeof ImageDecoder>"u"?!1:W==="blink",B=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",$=()=>typeof window.TextCluster<"u",F=()=>{let n=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(n))},O=()=>{let n=document.createElement("canvas");return n.width=1,n.height=1,n.getContext("webgl2")!=null?2:n.getContext("webgl")!=null?1:-1},M=()=>window.chrome&&chrome.runtime&&chrome.runtime.id,h={browserEngine:W,hasImageCodecs:K(),hasChromiumBreakIterators:B(),hasTextCluster:$(),supportsWasmGC:F(),crossOriginIsolated:window.crossOriginIsolated,webGLVersion:O(),isChromeExtension:M()};function m(...n){return new URL(E(...n),document.baseURI).toString()}function E(...n){return n.filter(e=>!!e).map((e,s)=>s===0?_(e):H(_(e))).filter(e=>e.length).join("/")}function H(n){let e=0;for(;e<n.length&&n.charAt(e)==="/";)e++;return n.substring(e)}function _(n){let e=n.length;for(;e>0&&n.charAt(e-1)==="/";)e--;return n.substring(0,e)}function I(n,e){return n.canvasKitBaseUrl?n.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?E("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var v=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:s=m("main.dart.js"),onEntrypointLoaded:t,nonce:r}=e||{};return this._loadJSEntrypoint(s,t,r)}async load(e,s,t,r,i){i??=c=>{c.initializeEngine(t).then(a=>a.runApp())};let{entrypointBaseUrl:o}=t,{entryPointBaseUrl:l}=t;if(!o&&l&&(console.warn("[deprecated] `entryPointBaseUrl` is deprecated and will be removed in a future release. Use `entrypointBaseUrl` instead."),o=l),e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,s,o,i,t?.wasmDeferredModulesLoader);{let c=e.mainJsPath??"main.dart.js",a=m(o,c);return this._loadJSEntrypoint(a,i,r)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,s,t){let r=typeof s=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let i=this._createScriptTag(e,t);if(r)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=s,document.head.append(i);else return new Promise((o,l)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=o,i.addEventListener("error",l),document.head.append(i)})}}async _loadWasmEntrypoint(e,s,t,r,i){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=r;let{mainWasmPath:o,jsSupportRuntimePath:l}=e,c=m(t,o),a=m(t,l);this._ttPolicy!=null&&(a=this._ttPolicy.createScriptURL(a));let d=(await import(a)).compileStreaming(fetch(c)),w;e.renderer==="skwasm"?w=(async()=>{let g=await s.skwasm;return window._flutter_skwasmInstance=g,{skwasm:g.wasmExports,skwasmWrapper:g,ffi:{memory:g.wasmMemory}}})():w=Promise.resolve({});let f=await d,p=(g,R)=>Promise.all(g.map(L=>R(L,fetch(m(t,L)))));await(await f.instantiate(await w,{loadDeferredModules:i||p})).invokeMain()}}_createScriptTag(e,s){let t=document.createElement("script");t.type="application/javascript",s&&(t.nonce=s);let r=e;return this._ttPolicy!=null&&(r=this._ttPolicy.createScriptURL(e)),t.src=r,t}};async function U(n,e,s){if(e<0)return n;let t,r=new Promise((i,o)=>{t=setTimeout(()=>{o(new Error(`${s} took more than ${e}ms to resolve. Moving on.`,{cause:U}))},e)});return Promise.race([n,r]).finally(()=>{clearTimeout(t)})}var y=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e||!("serviceWorker"in navigator))return Promise.resolve();let s=()=>{console.warn(`Loading the service worker using Flutter bootstrap is deprecated and will stop working in a future release.
For more details, see: https://github.com/flutter/flutter/issues/156910`)},t=()=>{let{serviceWorkerVersion:r,serviceWorkerUrl:i=m(`flutter_service_worker.js?v=${r}`),timeoutMillis:o=4e3}=e,l=i;this._ttPolicy!=null&&(l=this._ttPolicy.createScriptURL(l));let c=navigator.serviceWorker.register(l).then(a=>this._getNewServiceWorker(a,r)).then(this._waitForServiceWorkerActivation);return U(c,o,"prepareServiceWorker")};return e.serviceWorkerUrl!=null?(s(),t()):navigator.serviceWorker.getRegistration().then(r=>r?t():Promise.resolve())}async _getNewServiceWorker(e,s){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(s))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((s,t)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),s())})})}};var b=class{constructor(e,s="flutter-js"){let t=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(s,{createScriptURL:function(r){if(r.startsWith("blob:"))return r;let i=new URL(r,window.location),o=i.pathname.split("/").pop();if(t.some(c=>c.test(o)))return i.toString();console.error("URL rejected by TrustedTypes policy",s,":",r,"(download prevented)")}}))}};var k=(n,e)=>{let s=window._flutter?.buildConfig?.wasmHashes,t=s?.[e];if(!t&&e.includes("/")){let c=e.split("/").pop();t=s?.[c]}let r="crossOriginStorage"in navigator&&"requestFileHandles"in navigator.crossOriginStorage;r&&console.log("Cross-Origin Storage is supported. See https://wicg.github.io/cross-origin-storage/ for more details.");let i=async c=>{let a={algorithm:"SHA-256",value:c};try{let[u]=await navigator.crossOriginStorage.requestFileHandles([a]),d=await u.getFile();return new Response(d,{headers:{"Content-Type":"application/wasm"}})}catch(u){u.name==="NotAllowedError"?console.warn(`Not allowed to retrieve ${e} (hash: ${c}).`):u.name!=="NotFoundError"&&console.warn(`Unexpected error during retrieval of ${e} (hash: ${c}).`,u)}},o=async()=>{if(r&&t){let a=await i(t);if(a)return a}let c=await fetch(n);if(r&&t&&c.ok){let a={algorithm:"SHA-256",value:t},u=c.clone();(async()=>{try{let d=await u.blob(),[w]=await navigator.crossOriginStorage.requestFileHandles([a],{create:!0}),f=await w.createWritable();await f.write(d),await f.close()}catch(d){console.warn(`Error storing ${e} (hash: ${t}):`,d)}})()}return c},l=WebAssembly.compileStreaming(o());return(c,a)=>((async()=>{let u=await l,d=await WebAssembly.instantiate(u,c);a(d,u)})(),{})};var P=(n,e,s,t)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let r=s.hasChromiumBreakIterators&&s.hasImageCodecs;if(!r&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let i=r&&e.canvasKitVariant!=="full",o=i&&e.preferWebParagraph&&s.hasTextCluster,l=t;o?l=m(l,"webparagraph"):i&&(l=m(l,"chromium"));let c=m(l,"canvaskit.js");n.flutterTT.policy&&(c=n.flutterTT.policy.createScriptURL(c));let a="canvaskit.wasm";o?a="webparagraph/canvaskit.wasm":i&&(a="chromium/canvaskit.wasm");let u=k(m(l,"canvaskit.wasm"),a),d=await import(c);return window.flutterCanvasKit=await d.default({instantiateWasm:u}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var A=async(n,e,s,t)=>{let i=!s.hasImageCodecs||!s.hasChromiumBreakIterators?"skwasm_heavy":e.enableWimp?"wimp":"skwasm",o=m(t,`${i}.js`),l=o;n.flutterTT.policy&&(l=n.flutterTT.policy.createScriptURL(l));let c=k(m(t,`${i}.wasm`),`${i}.wasm`),a=await import(l);return!s.crossOriginIsolated&&!e.forceSingleThreadedSkwasm&&!e.suppressMultithreadingWarning&&console.warn(`Flutter Web: Skwasm uses multi-threading and web workers for better performance, but your page needs to be cross-origin isolated to support multi-threading. Skwasm will run in single-threaded mode.
To enable multithreading, serve your app with these HTTP response headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
See https://web.dev/articles/coop-coep for guidance.
To silence this warning, set \`suppressMultithreadingWarning: true\` in your Flutter configuration.`),await a.default({skwasmSingleThreaded:e.enableWimp||!s.crossOriginIsolated||s.isChromeExtension||e.forceSingleThreadedSkwasm,instantiateWasm:c,locateFile:(u,d)=>u.endsWith(".ww.js")?URL.createObjectURL(new Blob([`
"use strict";
let eventListener;
eventListener = (message) => {
const pendingMessages = [];
const data = message.data;
data["instantiateWasm"] = (info,receiveInstance) => {
const instance = new WebAssembly.Instance(data["wasm"], info);
return receiveInstance(instance, data["wasm"])
};
import(data.js).then(async (skwasm) => {
await skwasm.default(data);
removeEventListener("message", eventListener);
for (const message of pendingMessages) {
dispatchEvent(message);
}
});
removeEventListener("message", eventListener);
eventListener = (message) => {
pendingMessages.push(message);
};
addEventListener("message", eventListener);
};
addEventListener("message", eventListener);
`],{type:"application/javascript"})):m(t,u),mainScriptUrlOrBlob:o})};var x=h.supportsWasmGC,S=class{async loadEntrypoint(e){let{serviceWorker:s,...t}=e||{},r=new b,i=new y;i.setTrustedTypesPolicy(r.policy),await i.loadServiceWorker(s).catch(l=>{console.warn("Exception while loading service worker:",l)});let o=new v;return o.setTrustedTypesPolicy(r.policy),this.didCreateEngineInitializer=o.didCreateEngineInitializer.bind(o),o.loadEntrypoint(t)}async load({serviceWorkerSettings:e,onEntrypointLoaded:s,nonce:t,config:r}={}){r??={};let i=_flutter.buildConfig;if(!i)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let o=r.wasmAllowList?.[h.browserEngine]??T[h.browserEngine],l=p=>{switch(p){case"skwasm":return x?h.webGLVersion>0?o?null:`Skwasm is disabled by your wasmAllowList configuration for browser engine "${h.browserEngine}".`:"Skwasm requires WebGL support; this browser does not provide it.":"Skwasm requires WasmGC support; this browser does not implement it yet.";default:return null}},c=p=>p.compileTarget==="dart2wasm"&&!x?"dart2wasm requires WasmGC support; this browser does not implement it yet.":r.renderer&&r.renderer!=p.renderer?`The application is configured to use the "${r.renderer}" renderer; this build targets "${p.renderer}".`:l(p.renderer),a,u=[];for(let p of i.builds){let C=c(p);if(C===null){a=p;break}u.push({candidate:p,reason:C})}if(r.verboseBuildSelection)for(let p of u)console.warn(`Flutter Web: build ${p.candidate.compileTarget}/${p.candidate.renderer} was skipped: ${p.reason}`);if(!a)throw console.warn("Flutter Web: no compatible build found for this browser."+(r.verboseBuildSelection?"":" Set `verboseBuildSelection: true` in your Flutter configuration to see why each candidate was rejected.")),new Error("FlutterLoader could not find a build compatible with configuration and environment.");let d={};d.flutterTT=new b,e&&(d.serviceWorkerLoader=new y,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(p=>{console.warn("Exception while loading service worker:",p)}));let w=I(r,i);a.renderer==="canvaskit"?d.canvasKit=P(d,r,h,w):a.renderer==="skwasm"&&(d.skwasm=A(d,r,h,w));let f=new v;return f.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(a,d,r,t,s)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
//# sourceMappingURL=flutter.js.map