@loaders.gl/gltf 4.4.0-alpha.16 → 4.4.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +267 -130
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +2 -3
- package/dist/index.cjs.map +2 -2
- package/dist/lib/parsers/parse-gltf.js +2 -3
- package/dist/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/lib/utils/version.js +1 -1
- package/package.json +7 -7
- package/src/lib/parsers/parse-gltf.ts +2 -3
package/dist/dist.min.js
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
6
|
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var _n=Object.create;var Ce=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,wn=Object.prototype.hasOwnProperty;var Jn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of On(e))!wn.call(r,s)&&s!==t&&Ce(r,s,{get:()=>e[s],enumerable:!(n=Sn(e,s))||n.enumerable});return r},Ee=(r,e,t)=>(he(r,e,"default"),t&&he(t,e,"default")),Hn=(r,e,t)=>(t=r!=null?_n(Ln(r)):{},he(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Un=r=>he(Ce({},"__esModule",{value:!0}),r);var qt=Jn((Ra,Zt)=>{Zt.exports=globalThis.loaders});var pe={};T(pe,{EXT_FEATURE_METADATA:()=>dt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Fn,GLBWriter:()=>Dn,GLTFLoader:()=>Ye,GLTFScenegraph:()=>d,GLTFWriter:()=>bn,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>mt,postProcessGLTF:()=>Gn});Ee(pe,Hn(qt(),1));var Ge={};T(Ge,{createExtMeshFeatures:()=>ft,decode:()=>Gs,encode:()=>_s,name:()=>ct});var zt="4.4.0-alpha.16";async function re(r,e,t,n){return n._parse(r,e,t,n)}function M(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var R={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pn=R.self||R.window||R.global||{},Nn=R.window||R.self||R.global||{},Kn=R.global||R.self||R.window||{},jn=R.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function vn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.16"),globalThis._loadersgl_.version}var tr=vn();function rr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Ha=D.self||D.window||D.global||{},Ua=D.window||D.self||D.global||{},Pa=D.global||D.self||D.window||{},Na=D.document||{};var O=typeof process!="object"||String(process)!=="[object process]"||process.browser,se=typeof importScripts=="function",Ka=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ja=nr&&parseFloat(nr[1])||0;var qe={};async function b(r,e=null,t={},n=null){return e&&(r=sr(r,e,t,n)),qe[r]=qe[r]||Qn(r),await qe[r]}function sr(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:O?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):se?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Qn(r){if(r.endsWith("wasm"))return await Yn(r);if(!O){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(se)return importScripts(r);let e=await kn(r);return Vn(e,r)}function Vn(r,e){if(!O){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(se)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Yn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function kn(r){let{readFileAsText:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?or(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?or(r,0,e):""}function or(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),s="";for(let o=0;o<t;o++)s+=String.fromCharCode(n.getUint8(e+o));return s}function ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function oe(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function G(r,e){return M(r>=0),M(e>0),r+(e-1)&~(e-1)}function $e(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let s=r.byteOffset,o=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,s,o)}return e.set(n,t),t+G(n.byteLength,4)}function ge(r,e,t,n){let s=G(t.byteLength,n),o=s-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<o;++c)r.setUint8(e+t.byteLength+c,32)}return e+=s,e}function et(r,e,t,n){let o=new TextEncoder().encode(t);return e=ge(r,e,o,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ie(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ie(e,t,n)}function ie(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),s=new Uint8Array(n.length);return s.set(n),s.buffer}var Wn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",Zn=Boolean(Wn),nt=ne?!0:Zn;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=qn(r);if(!e)throw new Error("Not an image");return e}function ae(r){switch(fr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function qn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var zn=/^data:image\/svg\+xml/,$n=/\.svg((\?|#).*)?$/;function xe(r){return r&&(zn.test(r)||$n.test(r))}function Ar(r,e){if(xe(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return st(r,e)}function st(r,e){if(xe(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(r,t),s=self.URL||self.webkitURL,o=typeof n!="string"&&s.createObjectURL(n);try{return await es(o||n,e)}finally{o&&s.revokeObjectURL(o)}}async function es(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,s)=>{try{t.onload=()=>n(t),t.onerror=o=>{let i=o instanceof Error?o.message:"error";s(new Error(i))}}catch(o){s(o)}})}var ur=!0;async function Br(r,e,t){let n;xe(t)?n=await ye(r,e,t):n=st(r,t);let s=e&&e.imagebitmap;return await ts(n,s)}async function ts(r,e=null){if((rs(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function rs(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function mr(r){return!is(r,"ftyp",4)||!(r[8]&96)?null:ns(r)}function ns(r){switch(ss(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function ss(r,e,t){return String.fromCharCode(...r.slice(e,t))}function os(r){return[...r].map(e=>e.charCodeAt(0))}function is(r,e,t=0){let n=os(e);for(let s=0;s<n.length;++s)if(n[s]!==r[s+t])return!1;return!0}var _=!1,ce=!0;function N(r){let e=fe(r);return cs(e)||us(e)||fs(e)||As(e)||as(e)}function as(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=mr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function cs(r){let e=fe(r);return e.byteLength>=24&&e.getUint32(0,_)===2303741511?{mimeType:"image/png",width:e.getUint32(16,_),height:e.getUint32(20,_)}:null}function fs(r){let e=fe(r);return e.byteLength>=10&&e.getUint32(0,_)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ce),height:e.getUint16(8,ce)}:null}function As(r){let e=fe(r);return e.byteLength>=14&&e.getUint16(0,_)===16973&&e.getUint32(2,ce)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ce),height:e.getUint32(22,ce)}:null}function us(r){let e=fe(r);if(!(e.byteLength>=3&&e.getUint16(0,_)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=Bs(),o=2;for(;o+9<e.byteLength;){let i=e.getUint16(o,_);if(s.has(i))return{mimeType:"image/jpeg",height:e.getUint16(o+5,_),width:e.getUint16(o+7,_)};if(!n.has(i))return null;o+=2,o+=e.getUint16(o,_)}return null}function Bs(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function fe(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function dr(r,e){let{mimeType:t}=N(r)||{},n=globalThis.loaders?.parseImageNode;return M(n),await n(r,t)}async function lr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=ms(s),a;switch(i){case"imagebitmap":a=await Br(r,e,o);break;case"image":a=await ye(r,e,o);break;case"data":a=await dr(r,e);break;default:M(!1)}return s==="data"&&(a=ae(a)),a}function ms(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var ds=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ls=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ps={image:{type:"auto",decode:!0}},ot={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:ls,extensions:ds,parse:lr,tests:[r=>Boolean(N(new DataView(r)))],options:ps};var it={};function at(r){if(it[r]===void 0){let e=ne?Cs(r):hs(r);it[r]=e}return it[r]}function hs(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function Cs(r){switch(r){case"image/avif":case"image/webp":return Es(r);default:return!0}}function Es(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var gs=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],xs=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],ys=new Map(xs),Ts={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ms={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},bs={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function be(r){return pr[r-1]||pr[0]}function H(r){let e=ys.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=bs[r.componentType],n=Ts[r.type],s=Ms[r.componentType],o=r.count*n,i=r.count*n*s;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let s=t.reduce((i,a)=>i+a.byteLength,0),o=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return s+Math.ceil(4*o*gs)}function Cr(r,e,t){let n=r.bufferViews[t];h(n);let s=n.buffer,o=e[s];h(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Er(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let s=r.bufferViews?.[n.bufferView||0];if(!s)throw new Error(`No gltf buffer view for accessor ${s}`);let{arrayBuffer:o,byteOffset:i}=e[s.buffer],a=(i||0)+(n.byteOffset||0)+(s.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,s),B=A*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,f);let l=new c(f);for(let p=0;p<n.count;p++){let x=new c(o,a+p*m,u);l.set(x,p*u)}return l}function Fs(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var d=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Fs(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.getRequiredExtensions().find(s=>s===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Er(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),s=this.getBuffer(t.buffer).data,o=t.byteOffset||0;return new Uint8Array(s,o,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let s=e.extensions||{};s[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let s=this.json.extensionsRemoved;s.includes(t)||s.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let s={mesh:t};return n&&(s.matrix=n),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:s,mode:o=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:o}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(s)&&(a.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=N(e),s=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let s=e.byteLength;h(Number.isFinite(s)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let o={buffer:t,byteOffset:n,byteLength:s};return this.byteLength+=G(s,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(o),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:be(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),s={min:t.min,max:t.max};(!s.min||!s.max)&&(s=this._getAccessorMinMax(e,t.size));let o={size:t.size,componentType:H(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(n,Object.assign(o,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=$e(o,n,s);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let s=e.indexOf(t);s>-1?e.splice(s,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let s=e[n],o=this._getGltfAttributeName(n),i=this.addBinaryBuffer(s.value,s);t[o]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let s=e.subarray(0,t);for(let o of s)n.min.push(o),n.max.push(o);for(let o=t;o<e.length;o+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[o+i]),n.max[0+i]=Math.max(n.max[0+i],e[o+i]);return n}};function gr(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Is={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},yr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function Ae(r,e){return yr[e]*xr[r]}function V(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let s=r.getTypedArrayForBufferView(e),o=Y(s,"SCALAR",t,n+1);return o instanceof BigInt64Array||o instanceof BigUint64Array?null:o}function Y(r,e,t,n=1){let s=xr[e],o=Is[t],i=yr[t],a=n*s,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new o(J(f),A,a)}function k(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,s=t.attributes[n],o=r.getTypedArrayForAccessor(s),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=Rs(A,f,o,B,e.channels);u.push(m)}return u}}return[]}function Fe(r,e,t,n,s){if(!t?.length)return;let o=[];for(let A of t){let u=n.findIndex(B=>B===A);u===-1&&(u=n.push(A)-1),o.push(u)}let i=new Uint32Array(o),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:H(i),count:i.length});s.attributes[e]=f}function Rs(r,e,t,n,s=[0]){let o={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=Ds(i,a,r,c),A=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=f+B.offset,l=ae(r);if(l.data.length<=m)throw new Error(`${l.data.length} <= ${m}`);let p=l.data[m];A|=p<<B.shift}return A}function Ds(r,e,t,n=1){let s=t.width,o=gr(r)*(s-1),i=Math.round(o),a=t.height,c=gr(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*s+i)*A}function Ie(r,e,t,n,s){let o=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/s,A=c/s;o.push(r.slice(f,f+A))}return o}function Re(r,e,t){let n=[];for(let s=0;s<e;s++){let o=s*t;n.push(r.slice(o,o+t))}return n}function De(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let s=[],o=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=o.decode(f);s.push(A),i+=c}}return s}return[]}var W="EXT_mesh_features",ct=W;async function Gs(r,e){let t=new d(r);Ss(t,e)}function _s(r,e){let t=new d(r);return Ls(t,e),t.createBinaryChunk(),t.gltf}function Ss(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let s of n.primitives)Os(r,s,e)}function Os(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[W]?.featureIds;if(s)for(let o of s){let i;if(typeof o.attribute<"u"){let a=`_FEATURE_ID_${o.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof o.texture<"u"&&t?.gltf?.loadImages?i=k(r,o.texture,e):i=[];o.data=i}}function Ls(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let s of n.primitives)ws(r,s)}function ft(r,e,t,n){e.extensions||(e.extensions={});let s=e.extensions[W];s||(s={featureIds:[]},e.extensions[W]=s);let{featureIds:o}=s,i={featureCount:t.length,propertyTable:n,data:t};o.push(i),r.addObjectExtension(e,W,s)}function ws(r,e){let t=e.extensions?.[W];if(!t)return;let n=t.featureIds;n.forEach((s,o)=>{if(s.data){let{accessorKey:i,index:a}=Js(e.attributes),c=new Uint32Array(s.data);n[o]={featureCount:c.length,propertyTable:s.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:H(c),count:c.length});e.attributes[i]=A}})}function Js(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(o=>o.indexOf(e)===0),n=-1;for(let o of t){let i=Number(o.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var _e={};T(_e,{createExtStructuralMetadata:()=>mt,decode:()=>Hs,encode:()=>Us,name:()=>ut});var Z="EXT_structural_metadata",ut=Z;async function Hs(r,e){let t=new d(r);Ps(t,e)}function Us(r,e){let t=new d(r);return to(t,e),t.createBinaryChunk(),t.gltf}function Ps(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Z);t&&(e.gltf?.loadImages&&Ns(r,t),Ks(r,t))}function Ns(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let s of n.meshes)for(let o of s.primitives)Xs(r,t,o,e)}function Ks(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.propertyTables;if(n&&s)for(let o in n){let i=js(s,o);i&&Qs(r,t,i)}}function js(r,e){for(let t of r)if(t.class===e)return t;return null}function Xs(r,e,t,n){if(!e)return;let o=t.extensions?.[Z]?.propertyTextures;if(o)for(let i of o){let a=e[i];vs(r,a,t,n)}}function vs(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let s=e.class;for(let o in e.properties){let i=`${s}_${o}`,a=e.properties?.[o];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=k(r,a,t);f!==null&&(Fe(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Qs(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=Vs(r,e,i,s,a);a.data=c}}}function Vs(r,e,t,n,s){let o=[],i=s.values,a=r.getTypedArrayForBufferView(i),c=Ys(r,t,s,n),f=ks(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Ws(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=De(n,a,c,f);break}case"ENUM":{o=Zs(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function Ys(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?V(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function ks(r,e,t){return typeof e.stringOffsets<"u"?V(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Ws(r,e,t,n){let s=r.array,o=r.count,i=Ae(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=Y(t,r.type,r.componentType,a):c=t,s?n?Ie(c,e,n,t.length,i):o?Re(c,e,o):[]:c}function Zs(r,e,t,n,s){let o=e.enumType;if(!o)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[o];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${o}`);let a=i.valueType||"UINT16",c=Ae(e.type,a),f=n.byteLength/c,A=Y(n,e.type,a,f);if(A||(A=n),e.array){if(s)return qs({valuesData:A,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?zs(A,t,u,i):[]}return Bt(A,0,t,i)}function qs(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>s)break;let u=f/o,B=A/o,m=Bt(e,u,B,i);a.push(m)}return a}function zs(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=Bt(r,i,t,n);s.push(a)}return s}function Bt(r,e,t,n){let s=[];for(let o=0;o<t;o++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)s.push("");else{let i=r[e+o],a=$s(n,i);a?s.push(a.name):s.push("")}return s}function $s(r,e){for(let t of r.values)if(t.value===e)return t;return null}var eo="schemaClassId";function to(r,e){let t=r.getExtension(Z);if(t&&t.propertyTables)for(let n of t.propertyTables){let s=n.class,o=t.schema?.classes?.[s];n.properties&&o&&ro(n,o,r)}}function ro(r,e,t){for(let n in r.properties){let s=r.properties[n].data;if(s){let o=e.properties[n];if(o){let i=oo(s,o,t);r.properties[n]=i}}}}function mt(r,e,t=eo){let n=r.getExtension(Z);n||(n=r.addExtension(Z)),n.schema=no(e,t,n.schema);let s=so(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(s)-1}function no(r,e,t){let n=t??{id:"schema_id"},s={properties:{}};for(let o of r){let i={type:o.elementType,componentType:o.componentType};s.properties[o.name]=i}return n.classes={},n.classes[e]=s,n}function so(r,e,t){let n={class:e,count:0},s=0,o=t.classes?.[e];for(let i of r){if(s===0&&(s=i.values.length),s!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");o?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=s,n}function oo(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:s,stringOffsets:o}=co(r);n.stringOffsets=At(o,t),n.values=At(s,t)}else if(e.type==="SCALAR"&&e.componentType){let s=ao(r,e.componentType);n.values=At(s,t)}return n}var io={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function ao(r,e){let t=[];for(let s of r)t.push(Number(s));let n=io[e];if(!n)throw new Error("Illegal component type");return new n(t)}function co(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let s=new Uint8Array(n),o=[],i=0;for(let c of t)s.set(c,i),o.push(i),i+=c.length;o.push(i);let a=new Uint32Array(o);return{stringData:s,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var lt={};T(lt,{decode:()=>fo,name:()=>dt});var Tr="EXT_feature_metadata",dt=Tr;async function fo(r,e){let t=new d(r);Ao(t,e)}function Ao(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Tr);t&&(e.gltf?.loadImages&&uo(r,t),Bo(r,t))}function uo(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:s}=e;if(n&&s)for(let o in n){let i=n[o],a=lo(s,o);a&&ho(r,a,i)}}function Bo(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.featureTables;if(n&&s)for(let o in n){let i=mo(s,o);i&&po(r,t,i)}}function mo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function lo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function po(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=Co(r,e,i,s,a);a.data=c}}}function ho(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=To(r,o,n);o.data=i}}}function Co(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=Eo(r,t,s,n),f=go(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=De(n,a,c,f):xo(t)&&(o=yo(t,n,a,c)),o}function Eo(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?V(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function go(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?V(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function xo(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function yo(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=Ae(i,a),f=t.byteLength/c,A=Y(t,i,a,f);return s?n?Ie(A,e,n,t.length,c):o?Re(A,e,o):[]:A}function To(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let s=[];for(let o of n.meshes)for(let i of o.primitives)Mo(r,t,e,s,i);return s}function Mo(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=k(r,o,s);i&&Fe(r,e,i,n,s)}var U="4.4.0-alpha.16";var Mr="4.4.0-alpha.16";var Se={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},br;async function ht(r){We(r.modules);let e=Ze("basis");return e||(br||=bo(r),await br)}async function bo(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.TRANSCODER,"textures",r),await b(Se.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Fo(e,t)}function Fo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,initializeBasis:i}=s;i(),n({BasisFile:o})})})}var pt;async function Ct(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Io(r),await pt)}async function Io(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.ENCODER,"textures",r),await b(Se.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ro(e,t)}function Ro(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,KTX2File:i,initializeBasis:a,BasisEncoder:c}=s;a(),n({BasisFile:o,KTX2File:i,BasisEncoder:c})})})}var K={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var Do=["","WEBKIT_","MOZ_"],Fr={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},Oe=null;function Ir(r){if(!Oe){r=r||Go()||void 0,Oe=new Set;for(let e of Do)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`)){let n=Fr[t];Oe.add(n)}}return Oe}function Go(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var y=[171,75,84,88,32,50,48,187,13,10,26,10];function Rr(r){let e=new Uint8Array(r);return!(e.byteLength<y.length||e[0]!==y[0]||e[1]!==y[1]||e[2]!==y[2]||e[3]!==y[3]||e[4]!==y[4]||e[5]!==y[5]||e[6]!==y[6]||e[7]!==y[7]||e[8]!==y[8]||e[9]!==y[9]||e[10]!==y[10]||e[11]!==y[11])}var _o={etc1:{basisFormat:0,compressed:!0,format:K.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:K.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:K.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:K.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function Gr(r,e={}){if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Rr(r)){let n=await Ct(e?.core||{});return Dr(n.KTX2File,r,e)}let{BasisFile:t}=await ht(e?.core||{});return Et(t,r,e)}switch(e.basis.module){case"encoder":let t=await Ct(e?.core||{});switch(e.basis.containerFormat){case"ktx2":return Dr(t.KTX2File,r,e);case"basis":default:return Et(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ht(e.core||{});return Et(n,r,e)}}function Et(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let s=n.getNumImages(),o=[];for(let i=0;i<s;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(So(n,i,f,t));o.push(c)}return o}finally{n.close(),n.delete()}}function So(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f}=_r(n,i),A=r.getImageTranscodedSizeInBytes(e,t,f),u=new Uint8Array(A);if(!r.transcodeImage(u,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Dr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=n.getLevels(),o=[];for(let i=0;i<s;i++)o.push(Oo(n,i,t));return[o]}finally{n.close(),n.delete()}}function Oo(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=_r(t,n),f=r.getImageTranscodedSizeInBytes(e,0,0,c),A=new Uint8Array(f);if(!r.transcodeImage(A,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:A,compressed:i,levelSize:f,hasAlpha:n,format:a}}function _r(r,e){let t=r.basis?.format;return t==="auto"&&(t=Le()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),_o[t]}function Le(){let r=Ir();return r.has("astc")?"astc-4x4":r.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:r.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:r.has("etc1")?"etc1":r.has("etc2")?"etc2":"rgb565"}var Sr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Mr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},gt={...Sr,parse:Gr};var q=!0,Or=1735152710,Tt=12,we=8,Lo=1313821514,wo=5130562,Jo=0,Ho=0,Uo=1;function Po(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Lr(r,e=0,t={}){let n=new DataView(r),{magic:s=Or}=t,o=n.getUint32(e,!1);return o===s||o===Or}function Je(r,e,t=0,n={}){let s=new DataView(e),o=Po(s,t+0),i=s.getUint32(t+4,q),a=s.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=Tt,r.version){case 1:return No(r,s,t);case 2:return Ko(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function No(r,e,t){M(r.header.byteLength>Tt+we);let n=e.getUint32(t+0,q),s=e.getUint32(t+4,q);return t+=we,M(s===Jo),xt(r,e,t,n),t+=n,t+=yt(r,e,t,r.header.byteLength),t}function Ko(r,e,t,n){return M(r.header.byteLength>Tt+we),jo(r,e,t,n),t+r.header.byteLength}function jo(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,q),o=e.getUint32(t+4,q);switch(t+=we,o){case Lo:xt(r,e,t,s);break;case wo:yt(r,e,t,s);break;case Ho:n.strict||xt(r,e,t,s);break;case Uo:n.strict||yt(r,e,t,s);break;default:break}t+=G(s,4)}return t}function xt(r,e,t,n){let s=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(s);return r.json=JSON.parse(i),G(n,4)}function yt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),G(n,4)}function Mt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var Ft={};T(Ft,{decode:()=>ei,name:()=>$o});var Xo="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",vo="B9h9z9tFBBBF8dL9gBB9gLaaaaaFa9gEaaaB9gGaaB9gFaFaEQSBBFBFFGEGEGIILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBNn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBcI9z9iqlBMc/j9JSIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMkRIbaG97FaK978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAnDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAnDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBRnCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBHiCFD9tAiAPD9OD9hD9RHiDQBTFtGmEYIPLdKeOnH8ZAIAQJDBIBHpCFD9tApAPD9OD9hD9RHpAIASJDBIBHyCFD9tAyAPD9OD9hD9RHyDQBTFtGmEYIPLdKeOnH8cDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAnD9uHnDyBjGBAEAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnA8ZA8cDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNiV8ZcpMyS8cQ8df8eb8fHdApAyDQNiV8ZcpMyS8cQ8df8eb8fHiDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/xLGEaK978jUUUUBCAlHE8kUUUUBGXGXAGCI9HQBGXAFC98ZHI9FQBABRGCBRLEXAGAGDBBBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMBBAGCTJRGALCIJHLAI9JQBMMAIAF9PQFAEAFCEZHLCGWHGqCBCTAGl/8MBAEABAICGWJHIAG/8cBBGXAL9FQBAEAEDBIBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMIBMAIAEAG/8cBBSFMABAFC98ZHGT+HUUUBAGAF9PQBAEAFCEZHICEWHLJCBCAALl/8MBAEABAGCEWJHGAL/8cBBAEAIT+HUUUBAGAEAL/8cBBMAECAJ8kUUUUBM+yEGGaO97GXAF9FQBCBRGEXABCTJHEAEDBBBHICBDtHLCUU98D8cFCUU98D8cEHKD9OABDBBBHOAIDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAOAIDQBFGENVcMTtmYi8ZpyHICTD+sFD/6FHND/gFAICTD+rFCTD+sFD/6FHVD/gFD/kFD/lFHI9DB/+g6DYAVAIALD+2FHLAVCUUUU94DtHcD9OD9RD/kFHVAVD/mFAIAID/mFANALANAcD9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHLD/kFCTD+rFAVAND/mFALD/kFCggEDtD9OD9QHVAIAND/mFALD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHIDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAOAKD9OAVAIDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM94FEa8jUUUUBCAlHE8kUUUUBABAFC98ZHIT+JUUUBGXAIAF9PQBAEAFCEZHLCEWHFJCBCAAFl/8MBAEABAICEWJHBAF/8cBBAEALT+JUUUBABAEAF/8cBBMAECAJ8kUUUUBM/hEIGaF97FaL978jUUUUBCTlRGGXAF9FQBCBREEXAGABDBBBHIABCTJHLDBBBHKDQILKOSQfbPden8c8d8e8fHOCTD+sFHNCID+rFDMIBAB9DBBU8/DY9D/zI818/DYANCEDtD9QD/6FD/nFHNAIAKDQBFGENVcMTtmYi8ZpyHICTD+rFCTD+sFD/6FD/mFHKAKD/mFANAICTD+sFD/6FD/mFHVAVD/mFANAOCTD+rFCTD+sFD/6FD/mFHOAOD/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHND/mF9DBBX9LDYHID/kFCggEDtHcD9OAVAND/mFAID/kFCTD+rFD9QHVAOAND/mFAID/kFCTD+rFAKAND/mFAID/kFAcD9OD9QHNDQBFTtGEmYILPdKOenHID8dBAGDBIBDyB+t+J83EBABCNJAID8dFAGDBIBDyF+t+J83EBALAVANDQNVi8ZcMpySQ8c8dfb8e8fHND8dBAGDBIBDyG+t+J83EBABCiJAND8dFAGDBIBDyE+t+J83EBABCAJRBAECIJHEAF9JQBMMM/3FGEaF978jUUUUBCoBlREGXAGCGrAF9sHIC98ZHL9FQBCBRGABRFEXAFAFDBBBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBAFCTJRFAGCIJHGAL9JQBMMGXALAI9PQBAEAICEZHGCGWHFqCBCoBAFl/8MBAEABALCGWJHLAF/8cBBGXAG9FQBAEAEDBIBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMIBMALAEAF/8cBBMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",Qo=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),Vo=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Yo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},ko={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function wr(r,e,t,n,s,o="NONE"){let i=await Wo();zo(i,i.exports[ko[s]],r,e,t,n,i.exports[Yo[o||"NONE"]])}var bt;async function Wo(){return bt||(bt=Zo()),bt}async function Zo(){let r=Xo;WebAssembly.validate(Qo)&&(r=vo,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(qo(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function qo(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let s=r.charCodeAt(n);e[n]=s>96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Vo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function zo(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*s),A=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,A);let B=e(f,n,s,A,o.length);if(B===0&&i&&i(f,c,s),t.set(u.subarray(f,f+n*s)),a(f-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var He="EXT_meshopt_compression",$o=He;async function ei(r,e){let t=new d(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let s of r.json.bufferViews||[])n.push(ti(t,s));await Promise.all(n),t.removeExtension(He)}async function ti(r,e){let t=r.getObjectExtension(e,He);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,s),B=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await wr(B,i,o,u,a,c),r.removeObjectExtension(e,He)}}var It={};T(It,{name:()=>ri,preprocess:()=>ni});var z="EXT_texture_webp",ri=z;function ni(r,e){let t=new d(r);if(!at("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,z);o&&(s.source=o.source),t.removeObjectExtension(s,z)}t.removeExtension(z)}var Rt={};T(Rt,{name:()=>si,preprocess:()=>oi});var Ue="KHR_texture_basisu",si=Ue;function oi(r,e){let t=new d(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Ue);o&&(s.source=o.source,t.removeObjectExtension(s,Ue))}t.removeExtension(Ue)}var wt={};T(wt,{decode:()=>xi,encode:()=>yi,name:()=>Ei,preprocess:()=>gi});var ii="1.5.6",ai="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${ii}`,C={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},ue={[C.DECODER]:`${Dt}/${C.DECODER}`,[C.DECODER_WASM]:`${Dt}/${C.DECODER_WASM}`,[C.FALLBACK_DECODER]:`${Dt}/${C.FALLBACK_DECODER}`,[C.ENCODER]:`https://raw.githubusercontent.com/google/draco/${ai}/javascript/${C.ENCODER}`},Gt;async function Hr(r={},e){let t=r.modules||{};return t.draco3d?Gt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Gt||=ci(r,e),await Gt}function Jr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function ci(r,e){let t,n;switch(e){case"js":t=await b(ue[C.FALLBACK_DECODER],"draco",r,C.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await b(ue[C.DECODER],"draco",r,C.DECODER),await b(ue[C.DECODER_WASM],"draco",r,C.DECODER_WASM)])}catch{t=null,n=null}}return t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!O&&([t,n]=await Promise.all([await b(ue[C.DECODER],"draco",{...r,useLocalLibraries:!0},C.DECODER),await b(ue[C.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},C.DECODER_WASM)]),t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await fi(t,n)}function fi(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Ur="4.4.0-alpha.16";function Pr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function _t(r){let e=1/0,t=1/0,n=1/0,s=-1/0,o=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],B=a[f+2];e=A<e?A:e,t=u<t?u:t,n=B<n?B:n,s=A>s?A:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function St(r,e,t){let n=Pr(e.value),s=t||Nr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function Nr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function jr(r,e,t){let n=Xr(e.metadata),s=[],o=Ai(e.attributes);for(let i in r){let a=r[i],c=Kr(i,a,o[i]);s.push(c)}if(t){let i=Kr("indices",t);s.push(i)}return{fields:s,metadata:n}}function Ai(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Kr(r,e,t){let n=t?Xr(t.metadata):void 0;return St(r,e,n)}function Xr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var vr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},ui={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Bi=4,Be=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let s=this.decoder.GetEncodedGeometryType(n),o=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(s){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,o);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,o);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!o.ptr){let B=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(B)}let a=this._getDracoLoaderData(o,s,t),c=this._getMeshData(o,a,t),f=_t(c.attributes),A=jr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),o&&this.draco.destroy(o)}}_getDracoLoaderData(e,t,n){let s=this._getTopLevelMetadata(e),o=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:o}}_getDracoAttributes(e,t){let n={};for(let s=0;s<e.num_attributes();s++){let o=this.decoder.GetAttribute(e,s),i=this._getAttributeMetadata(e,s);n[o.unique_id()]={unique_id:o.unique_id(),attribute_type:o.attribute_type(),data_type:o.data_type(),num_components:o.num_components(),byte_offset:o.byte_offset(),byte_stride:o.byte_stride(),normalized:o.normalized(),attribute_index:s,metadata:i};let a=this._getQuantizationTransform(o,t);a&&(n[o.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(o,t);c&&(n[o.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let s=this._getMeshAttributes(t,e,n);if(!s.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:s,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:s,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:s}}_getMeshAttributes(e,t,n){let s={};for(let o of Object.values(e.attributes)){let i=this._deduceAttributeName(o,n);o.name=i;let a=this._getAttributeValues(t,o);if(a){let{value:c,size:f}=a;s[i]={value:c,size:f,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Bi,o=this.draco._malloc(s);try{return this.decoder.GetTrianglesUInt32Array(e,s,o),new Uint32Array(this.draco.HEAPF32.buffer,o,n).slice()}finally{this.draco._free(o)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),li(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=ui[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let s=t.num_components,i=e.num_points()*s,a=i*n.BYTES_PER_ELEMENT,c=mi(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:s}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let s=e.attribute_type;for(let i in vr)if(this.draco[i]===s)return vr[i];let o=t.attributeNameEntry||"name";return e.metadata[o]?e.metadata[o].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let s=0;s<n;s++){let o=this.metadataQuerier.GetEntryName(e,s);t[o]=this._getDracoMetadataField(e,o)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let s=di(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:s}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,s=[...t,...n];for(let o of s)this.decoder.SkipAttributeTransform(this.draco[o])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function mi(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function di(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function li(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Qr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Ur,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}},Ot={...Qr,parse:pi};async function pi(r,e){let{draco:t}=await Hr(e?.core,e?.draco?.decoderType||"wasm"),n=new Be(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Vr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let s=Lt(n);e[t]=s}}return e}function Lt(r){let{buffer:e,size:t,count:n}=hi(r);return{value:e,size:t,byteOffset:0,count:n,type:be(t),componentType:H(e)}}function hi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=Ci(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function Ci(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var P="KHR_draco_mesh_compression",Ei=P;function gi(r,e,t){let n=new d(r);for(let s of Yr(n))n.getObjectExtension(s,P)}async function xi(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new d(r),s=[];for(let o of Yr(n))n.getObjectExtension(o,P)&&s.push(Ti(n,o,e,t));await Promise.all(s),n.removeExtension(P)}function yi(r,e={}){let t=new d(r);for(let n of t.json.meshes||[])Mi(n,e),t.addRequiredExtension(P)}async function Ti(r,e,t,n){let s=r.getObjectExtension(e,P);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=oe(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Vr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let B=e.attributes[A],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=f,c.indices&&(e.indices=Lt(c.indices)),r.removeObjectExtension(e,P),bi(e)}function Mi(r,e,t=4,n,s){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let o=n.DracoWriter.encodeSync({attributes:r}),i=s?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(o);return{primitives:[{attributes:a,mode:t,extensions:{[P]:{bufferView:c,attributes:a}}}]}}function bi(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Yr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var jt={};T(jt,{decode:()=>Ki,name:()=>Ui});var VA=1/Math.PI*180,YA=1/180*Math.PI,Fi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Fi}};var E=globalThis.mathgl.config;function kr(r,{precision:e=E.precision}={}){return r=Ii(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=E.EPSILON;t&&(E.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!Jt(r[s],e[s]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=E.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{E.EPSILON=n}}function Ii(r){return Math.round(r/E.EPSILON)*E.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(E)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+kr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let s=0;s<this.ELEMENTS;++s){let o=e[s],i=typeof t=="number"?t:t[s];this[s]=o+n*(i-o)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(E.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function Ri(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function g(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Wr(r,e,t=""){if(E.debug&&!Ri(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ht(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Pe=class extends ee{get x(){return this[0]}set x(e){this[0]=g(e)}get y(){return this[1]}set y(e){this[1]=g(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let s=this[n]-e[n];t+=s*s}return g(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return g(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Ht(e>=0&&e<this.ELEMENTS,"index is out of range"),g(this[e])}setComponent(e,t){return Ht(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var su=Math.PI/180;function Si(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function qr(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[3]*s+t[6],r[1]=t[1]*n+t[4]*s+t[7],r}var ou=function(){let r=Si();return function(e,t,n,s,o,i){let a,c;for(t||(t=2),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],o(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function zr(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o||1;return r[0]=(t[0]*n+t[4]*s+t[8]*o)/i,r[1]=(t[1]*n+t[5]*s+t[9]*o)/i,r[2]=(t[2]*n+t[6]*s+t[10]*o)/i,r}function $r(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[2]*s,r[1]=t[1]*n+t[3]*s,r[2]=e[2],r}function en(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=t[0]*n+t[3]*s+t[6]*o,r[1]=t[1]*n+t[4]*s+t[7]*o,r[2]=t[2]*n+t[5]*s+t[8]*o,r[3]=e[3],r}function Oi(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Li(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function tn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[0],a=t[1],c=t[2];return r[0]=s*c-o*a,r[1]=o*i-n*c,r[2]=n*a-s*i,r}function rn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*s+t[8]*o+t[12])/i,r[1]=(t[1]*n+t[5]*s+t[9]*o+t[13])/i,r[2]=(t[2]*n+t[6]*s+t[10]*o+t[14])/i,r}function Ne(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=n*t[0]+s*t[3]+o*t[6],r[1]=n*t[1]+s*t[4]+o*t[7],r[2]=n*t[2]+s*t[5]+o*t[8],r}function nn(r,e,t){let n=t[0],s=t[1],o=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=s*f-o*c,u=o*a-n*f,B=n*c-s*a,m=s*B-o*u,l=o*A-n*B,p=n*u-s*A,x=i*2;return A*=x,u*=x,B*=x,m*=2,l*=2,p*=2,r[0]=a+A+m,r[1]=c+u+l,r[2]=f+B+p,r}function sn(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0],o[1]=s[1]*Math.cos(n)-s[2]*Math.sin(n),o[2]=s[1]*Math.sin(n)+s[2]*Math.cos(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function on(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[2]*Math.sin(n)+s[0]*Math.cos(n),o[1]=s[1],o[2]=s[2]*Math.cos(n)-s[0]*Math.sin(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function an(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0]*Math.cos(n)-s[1]*Math.sin(n),o[1]=s[0]*Math.sin(n)+s[1]*Math.cos(n),o[2]=s[2],r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function cn(r,e){let t=r[0],n=r[1],s=r[2],o=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+s*s)*(o*o+i*i+a*a)),f=c&&Li(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var cu=function(){let r=Oi();return function(e,t,n,s,o,i){let a,c;for(t||(t=3),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],o(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ut=[0,0,0],Ke,j=class extends Pe{static get ZERO(){return Ke||(Ke=new j(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(E.debug&&(g(e),g(t),g(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return E.debug&&(g(e.x),g(e.y),g(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=g(e)}angle(e){return cn(this,e)}cross(e){return tn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ut}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ut}){return on(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ut}){return an(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return rn(this,this,e),this.check()}transformAsVector(e){return zr(this,this,e),this.check()}transformByMatrix3(e){return Ne(this,this,e),this.check()}transformByMatrix2(e){return $r(this,this,e),this.check()}transformByQuaternion(e){return nn(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(E.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=g(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)t[s]=this[n+s];return t}setColumn(e,t){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)this[n+s]=t[s];return this}};function fn(r,e){if(r===e){let t=e[1],n=e[2],s=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=s}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function An(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,B=-A*o+a*c,m=f*o-i*c,l=t*u+n*B+s*m;return l?(l=1/l,r[0]=u*l,r[1]=(-A*n+s*f)*l,r[2]=(a*n-s*i)*l,r[3]=B*l,r[4]=(A*t-s*c)*l,r[5]=(-a*t+s*o)*l,r[6]=m*l,r[7]=(-f*t+n*c)*l,r[8]=(i*t-n*o)*l,r):null}function un(r){let e=r[0],t=r[1],n=r[2],s=r[3],o=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*o-i*c)+t*(-f*s+i*a)+n*(c*s-o*a)}function Pt(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],B=t[0],m=t[1],l=t[2],p=t[3],x=t[4],I=t[5],w=t[6],v=t[7],ke=t[8];return r[0]=B*n+m*i+l*f,r[1]=B*s+m*a+l*A,r[2]=B*o+m*c+l*u,r[3]=p*n+x*i+I*f,r[4]=p*s+x*a+I*A,r[5]=p*o+x*c+I*u,r[6]=w*n+v*i+ke*f,r[7]=w*s+v*a+ke*A,r[8]=w*o+v*c+ke*u,r}function Bn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],B=t[0],m=t[1];return r[0]=n,r[1]=s,r[2]=o,r[3]=i,r[4]=a,r[5]=c,r[6]=B*n+m*i+f,r[7]=B*s+m*a+A,r[8]=B*o+m*c+u,r}function mn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],B=Math.sin(t),m=Math.cos(t);return r[0]=m*n+B*i,r[1]=m*s+B*a,r[2]=m*o+B*c,r[3]=m*i-B*n,r[4]=m*a-B*s,r[5]=m*c-B*o,r[6]=f,r[7]=A,r[8]=u,r}function Nt(r,e,t){let n=t[0],s=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=s*e[3],r[4]=s*e[4],r[5]=s*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function dn(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=t+t,a=n+n,c=s+s,f=t*i,A=n*i,u=n*a,B=s*i,m=s*a,l=s*c,p=o*i,x=o*a,I=o*c;return r[0]=1-u-l,r[3]=A-I,r[6]=B+x,r[1]=A+I,r[4]=1-f-l,r[7]=m-p,r[2]=B-x,r[5]=m+p,r[8]=1-f-u,r}var Kt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Kt||(Kt={}));var wi=Object.freeze([1,0,0,0,1,0,0,0,1]),L=class extends je{static get IDENTITY(){return Hi()}static get ZERO(){return Ji()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(wi)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,s,o,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=s,this[4]=o,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,s,o,i,a,c,f){return this[0]=e,this[1]=s,this[2]=a,this[3]=t,this[4]=o,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return un(this)}transpose(){return fn(this,this),this.check()}invert(){return An(this,this),this.check()}multiplyLeft(e){return Pt(this,e,this),this.check()}multiplyRight(e){return Pt(this,this,e),this.check()}rotate(e){return mn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Nt(this,this,e):Nt(this,this,[e,e]),this.check()}translate(e){return Bn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=qr(t||[-0,-0],e,this);break;case 3:n=Ne(t||[-0,-0,-0],e,this);break;case 4:n=en(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Wr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},Xe,ve=null;function Ji(){return Xe||(Xe=new L([0,0,0,0,0,0,0,0,0]),Object.freeze(Xe)),Xe}function Hi(){return ve||(ve=new L,Object.freeze(ve)),ve}var Ve="KHR_texture_transform",Ui=Ve,Qe=new j,Pi=new L,Ni=new L;async function Ki(r,e){if(!new d(r).hasExtension(Ve)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)ji(o,r)}function ji(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],s=[];for(let o of n)o&&o?.extensions?.[Ve]&&Xi(e,r,o,s)}function Xi(r,e,t,n){let s=vi(t,n);if(!s)return;let o=r.json.meshes||[];for(let i of o)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Qi(r,a,s)}}function vi(r,e){let t=r.extensions?.[Ve],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=ki(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Qi(r,e,t){let{originalTexCoord:n,texCoord:s,matrix:o}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=Q(a,c),l=Me[a.componentType],p=Te[a.type],x=c.byteStride||l*p,I=new Float32Array(m);for(let w=0;w<a.count;w++){let v=new B(f,u+w*x,2);Qe.set(v[0],v[1],1),Qe.transformByMatrix3(o),I.set([Qe[0],Qe[1]],w*p)}n===s?Vi(a,r,I,a.bufferView):Yi(s,a,e,r,I)}}}}function Vi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Yi(r,e,t,n,s){n.buffers.push({arrayBuffer:J(s.buffer),byteOffset:0,byteLength:s.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let o=n.json.bufferViews;o.push({buffer:n.buffers.length-1,byteLength:s.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:o?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function ki(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new L().set(1,0,0,0,1,0,e[0],e[1],1),o=Pi.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=Ni.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Xt={};T(Xt,{decode:()=>Zi,encode:()=>qi,name:()=>Wi});var X="KHR_lights_punctual",Wi=X;async function Zi(r){let e=new d(r),{json:t}=e,n=e.getExtension(X);n&&(e.json.lights=n.lights,e.removeExtension(X));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,X);o&&(s.light=o.light),e.removeObjectExtension(s,X)}}async function qi(r){let e=new d(r),{json:t}=e;if(t.lights){let n=e.addExtension(X);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let s=n.node;e.addObjectExtension(s,X,n)}delete e.json.lights}}var vt={};T(vt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var me="KHR_materials_unlit",zi=me;async function $i(r){let e=new d(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,me);e.removeExtension(me)}function ea(r){let e=new d(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,me,{}),e.addExtension(me))}var Qt={};T(Qt,{decode:()=>ra,encode:()=>na,name:()=>ta});var de="KHR_techniques_webgl",ta=de;async function ra(r){let e=new d(r),{json:t}=e,n=e.getExtension(de);if(n){let s=sa(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,de);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=oa(o.technique,e)),e.removeObjectExtension(o,de)}e.removeExtension(de)}}async function na(r,e){}function sa(r,e){let{programs:t=[],shaders:n=[],techniques:s=[]}=r,o=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=o.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),s.forEach(i=>{i.program=t[i.program]}),s}function oa(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var ln=[_e,Ge,Ft,It,Rt,wt,Xt,vt,Qt,jt,lt],ia=[_e,Ge];function pn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function hn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function Cn(r,e={}){for(let t of ia)r=t.encode?.(r,e)??r;return r}function En(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Vt="KHR_binary_glTF";function gn(r){let e=new d(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Vt);s&&Object.assign(n,s),e.removeObjectExtension(n,Vt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Vt)}var xn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},ca={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),gn(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in xn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let s in n){let o=n[s];o.id=o.id||s;let i=e[t].length;e[t].push(o),this.idToIndexMap[t][s]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in xn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:s,material:o}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");s&&(t.indices=this._convertIdToIndex(s,"accessor")),o&&(t.material=this._convertIdToIndex(o,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let s in n){let o=n[s],i=this._convertIdToIndex(o,s);n[s]=i}}_convertIdToIndex(e,t){let n=ca[t];if(n in this.idToIndexMap){let s=this.idToIndexMap[n][e];if(!Number.isFinite(s))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return s}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,s=e.textures.findIndex(o=>o.id===n);s!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:s})}}};function yn(r,e={}){return new Yt().normalize(r,e)}async function Tn(r,e,t=0,n,s){return fa(r,e,t,n),yn(r,{normalize:n?.gltf?.normalize}),pn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await Aa(r,n,s),n?.gltf?.loadImages&&await ua(r,n,s),await hn(r,n,s),r}function fa(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Lr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let s=r.json.buffers||[];if(r.buffers=new Array(s.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let o=r.json.images||[];r.images=new Array(o.length).fill({})}async function Aa(r,e,t){let n=r.json.buffers||[];for(let s=0;s<n.length;++s){let o=n[s];if(o.uri){let{fetch:i}=t;h(i);let a=Mt(o.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function ua(r,e,t){let n=Ba(r),s=r.json.images||[],o=[];for(let i of n)o.push(ma(r,s[i],i,e,t));return await Promise.all(o)}function Ba(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function ma(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Mt(e.uri,n),{fetch:A}=s;o=await(await A(f)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let f=Cr(r.json,r.buffers,e.bufferView);o=oe(f.buffer,f.byteOffset,f.byteLength)}h(o,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType},basis:i.basis||{format:Le()}},c=await re(o,[ot,gt],a,s);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:da,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function da(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let s=e?.glb?.byteOffset||0;return await Tn({},r,s,n,t)}var la=1179937895,pa=1313821514,ha=5130562,S=!0;function le(r,e,t=0,n={}){let{magic:s=la,version:o=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,s,S),e.setUint32(t+4,o,S),e.setUint32(t+8,0,S));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,pa,S)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let B=t-A-8;e.setUint32(A+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,ha,S)),t+=8,t=ge(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,S)}}if(e){let B=t-c;e.setUint32(f,B,S)}return t}function kt(r,e,t,n){return Ca(r),le(r,e,t,n)}function Ca(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var bn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Mn(r,e),encodeSync:Mn};function Mn(r,e={}){let{byteOffset:t=0}=e,n=Cn(r),s=kt(n,null,t,e),o=new ArrayBuffer(s),i=new DataView(o);return kt(n,i,t,e),o}var Fn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ea,parseSync:In,options:{glb:{strict:!1}}};async function Ea(r,e){return In(r,e)}function In(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Dn={name:"GLB",id:"glb",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Rn(r,e),encodeSync:Rn};function Rn(r,e){let{byteOffset:t=0}=e??{},n=le(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return le(r,o,t,e),s}var ga={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xa={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},ya={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Ta={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Ma(){return{id:"default-sampler",parameters:Ta}}function ba(r){return xa[r]}function Fa(r){return ga[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=s,this.images=o,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((s,o)=>this._resolveBufferView(s,o))),e.images&&(n.images=e.images.map((s,o)=>this._resolveImage(s,o))),e.samplers&&(n.samplers=e.samplers.map((s,o)=>this._resolveSampler(s,o))),e.textures&&(n.textures=e.textures.map((s,o)=>this._resolveTexture(s,o))),e.accessors&&(n.accessors=e.accessors.map((s,o)=>this._resolveAccessor(s,o))),e.materials&&(n.materials=e.materials.map((s,o)=>this._resolveMaterial(s,o))),e.meshes&&(n.meshes=e.meshes.map((s,o)=>this._resolveMesh(s,o))),e.nodes&&(n.nodes=e.nodes.map((s,o)=>this._resolveNode(s,o)),n.nodes=n.nodes.map((s,o)=>this._resolveNodeChildren(s))),e.skins&&(n.skins=e.skins.map((s,o)=>this._resolveSkin(s,o))),e.scenes&&(n.scenes=e.scenes.map((s,o)=>this._resolveScene(s,o))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((s,o)=>{let i=this.getMesh(o);return s.id=i.id,s.primitives=s.primitives.concat(i.primitives),s},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(s=>{let o={...s,attributes:{},indices:void 0,material:void 0},i=s.attributes;for(let a in i)o.attributes[a]=this.getAccessor(i[a]);return s.indices!==void 0&&(o.indices=this.getAccessor(s.indices)),s.material!==void 0&&(o.material=this.getMaterial(s.material)),o})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let s=n.pbrMetallicRoughness;s.baseColorTexture&&(s.baseColorTexture={...s.baseColorTexture},s.baseColorTexture.texture=this.getTexture(s.baseColorTexture.index)),s.metallicRoughnessTexture&&(s.metallicRoughnessTexture={...s.metallicRoughnessTexture},s.metallicRoughnessTexture.texture=this.getTexture(s.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=ba(e.componentType),s=Fa(e.type),o=n*s,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:s,bytesPerElement:o,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ie(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,s,o){let i=new Uint8Array(o*s);for(let a=0;a<o;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+s)),a*s)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Ma(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let s in n){let o=this._enumSamplerParameter(s);o!==void 0&&(n.parameters[o]=n[s])}return n}_enumSamplerParameter(e){return ya[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},s=this.images[t];return s&&(n.image=s),n}_resolveBufferView(e,t){let n=e.buffer,s=this.buffers[n].arrayBuffer,o=this.buffers[n].byteOffset||0;return e.byteOffset&&(o+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(s,o,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function Gn(r,e){return new Wt().postProcess(r,e)}return Un(pe);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var Ln=Object.create;var Ce=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var Jn=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var Hn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},ge=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Sn(e))!Un.call(r,o)&&o!==t&&Ce(r,o,{get:()=>e[o],enumerable:!(n=_n(e,o))||n.enumerable});return r},be=(r,e,t)=>(ge(r,e,"default"),t&&ge(t,e,"default")),Nn=(r,e,t)=>(t=r!=null?Ln(Jn(r)):{},ge(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Pn=r=>ge(Ce({},"__esModule",{value:!0}),r);var qt=Hn((wa,Zt)=>{Zt.exports=globalThis.loaders});var he={};y(he,{EXT_FEATURE_METADATA:()=>lt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Gn,GLBWriter:()=>wn,GLTFLoader:()=>Ye,GLTFScenegraph:()=>l,GLTFWriter:()=>In,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>Bt,postProcessGLTF:()=>On});be(he,Nn(qt(),1));var we={};y(we,{createExtMeshFeatures:()=>ft,decode:()=>Lo,encode:()=>_o,name:()=>ct});var zt="4.4.0-alpha.18";async function re(r,e,t,n){return n._parse(r,e,t,n)}function T(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var G={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Kn=G.self||G.window||G.global||{},jn=G.window||G.self||G.global||{},vn=G.global||G.self||G.window||{},Qn=G.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function kn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.18"),globalThis._loadersgl_.version}var tr=kn();function rr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pa=D.self||D.window||D.global||{},Ka=D.window||D.self||D.global||{},ja=D.global||D.self||D.window||{},va=D.document||{};var L=typeof process!="object"||String(process)!=="[object process]"||process.browser,oe=typeof importScripts=="function",Qa=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xa=nr&&parseFloat(nr[1])||0;var qe={};function se(r={}){let e=r.useLocalLibraries??r.core?.useLocalLibraries,t=r.CDN??r.core?.CDN,n=r.modules;return{...e!==void 0?{useLocalLibraries:e}:{},...t!==void 0?{CDN:t}:{},...n!==void 0?{modules:n}:{}}}async function M(r,e=null,t={},n=null){return e&&(r=or(r,e,t,n)),qe[r]=qe[r]||Yn(r),await qe[r]}function or(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let o=t.modules||{};return o[n]?o[n]:L?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):oe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Yn(r){if(r.endsWith("wasm"))return await Wn(r);if(!L){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(oe)return importScripts(r);let e=await Zn(r);return Vn(e,r)}function Vn(r,e){if(!L){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(oe)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Wn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function Zn(r){let{readFileAsText:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?sr(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?sr(r,0,e):""}function sr(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),o="";for(let s=0;s<t;s++)o+=String.fromCharCode(n.getUint8(e+s));return o}function ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function ie(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function R(r,e){return T(r>=0),T(e>0),r+(e-1)&~(e-1)}function $e(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let o=r.byteOffset,s=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,o,s)}return e.set(n,t),t+R(n.byteLength,4)}function xe(r,e,t,n){let o=R(t.byteLength,n),s=o-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<s;++c)r.setUint8(e+t.byteLength+c,32)}return e+=o,e}function et(r,e,t,n){let s=new TextEncoder().encode(t);return e=xe(r,e,s,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ae(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ae(e,t,n)}function ae(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),o=new Uint8Array(n.length);return o.set(n),o.buffer}var qn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",zn=Boolean(qn),nt=ne?!0:zn;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=$n(r);if(!e)throw new Error("Not an image");return e}function ce(r){switch(fr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function $n(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var eo=/^data:image\/svg\+xml/,to=/\.svg((\?|#).*)?$/;function Ee(r){return r&&(eo.test(r)||to.test(r))}function Ar(r,e){if(Ee(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return ot(r,e)}function ot(r,e){if(Ee(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(r,t),o=self.URL||self.webkitURL,s=typeof n!="string"&&o.createObjectURL(n);try{return await ro(s||n,e)}finally{s&&o.revokeObjectURL(s)}}async function ro(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,o)=>{try{t.onload=()=>n(t),t.onerror=s=>{let i=s instanceof Error?s.message:"error";o(new Error(i))}}catch(s){o(s)}})}var ur=!0;async function mr(r,e,t){let n;Ee(t)?n=await ye(r,e,t):n=ot(r,t);let o=e&&e.imagebitmap;return await no(n,o)}async function no(r,e=null){if((oo(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function oo(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function Br(r){return!co(r,"ftyp",4)||!(r[8]&96)?null:so(r)}function so(r){switch(io(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function io(r,e,t){return String.fromCharCode(...r.slice(e,t))}function ao(r){return[...r].map(e=>e.charCodeAt(0))}function co(r,e,t=0){let n=ao(e);for(let o=0;o<n.length;++o)if(n[o]!==r[o+t])return!1;return!0}var w=!1,fe=!0;function P(r){let e=Ae(r);return Ao(e)||Bo(e)||uo(e)||mo(e)||fo(e)}function fo(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=Br(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function Ao(r){let e=Ae(r);return e.byteLength>=24&&e.getUint32(0,w)===2303741511?{mimeType:"image/png",width:e.getUint32(16,w),height:e.getUint32(20,w)}:null}function uo(r){let e=Ae(r);return e.byteLength>=10&&e.getUint32(0,w)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,fe),height:e.getUint16(8,fe)}:null}function mo(r){let e=Ae(r);return e.byteLength>=14&&e.getUint16(0,w)===16973&&e.getUint32(2,fe)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,fe),height:e.getUint32(22,fe)}:null}function Bo(r){let e=Ae(r);if(!(e.byteLength>=3&&e.getUint16(0,w)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:o}=lo(),s=2;for(;s+9<e.byteLength;){let i=e.getUint16(s,w);if(o.has(i))return{mimeType:"image/jpeg",height:e.getUint16(s+5,w),width:e.getUint16(s+7,w)};if(!n.has(i))return null;s+=2,s+=e.getUint16(s,w)}return null}function lo(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Ae(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function lr(r,e){let{mimeType:t}=P(r)||{},n=globalThis.loaders?.parseImageNode;return T(n),await n(r,t)}async function dr(r,e,t){e=e||{};let o=(e.image||{}).type||"auto",{url:s}=t||{},i=po(o),a;switch(i){case"imagebitmap":a=await mr(r,e,s);break;case"image":a=await ye(r,e,s);break;case"data":a=await lr(r,e);break;default:T(!1)}return o==="data"&&(a=ce(a)),a}function po(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var ho=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],go=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Co={image:{type:"auto",decode:!0}},st={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:go,extensions:ho,parse:dr,tests:[r=>Boolean(P(new DataView(r)))],options:Co};var it={};function at(r){if(it[r]===void 0){let e=ne?xo(r):bo(r);it[r]=e}return it[r]}function bo(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function xo(r){switch(r){case"image/avif":case"image/webp":return Eo(r);default:return!0}}function Eo(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var yo=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],To=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Mo=new Map(To),Fo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Io={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Go={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Fe(r){return pr[r-1]||pr[0]}function U(r){let e=Mo.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Go[r.componentType],n=Fo[r.type],o=Io[r.componentType],s=r.count*n,i=r.count*n*o;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:s,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let o=t.reduce((i,a)=>i+a.byteLength,0),s=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return o+Math.ceil(4*s*yo)}function gr(r,e,t){let n=r.bufferViews[t];h(n);let o=n.buffer,s=e[o];h(s);let i=(n.byteOffset||0)+s.byteOffset;return new Uint8Array(s.arrayBuffer,i,n.byteLength)}function Cr(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[n.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:s,byteOffset:i}=e[o.buffer],a=(i||0)+(n.byteOffset||0)+(o.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,o),m=A*u,B=o.byteStride||m;if(typeof o.byteStride>"u"||o.byteStride===m)return new c(s,a,f);let d=new c(f);for(let p=0;p<n.count;p++){let x=new c(s,a+p*B,u);d.set(x,p*u)}return d}function Do(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Do(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.getRequiredExtensions().find(o=>o===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let o=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Cr(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(o,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let o=e.extensions||{};o[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return n&&(o.matrix=n),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:o,mode:s=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:s}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(o)&&(a.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=P(e),o=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let o=e.byteLength;h(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let s={buffer:t,byteOffset:n,byteLength:o};return this.byteLength+=R(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(s),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Fe(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let s={size:t.size,componentType:U(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(n,Object.assign(s,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),o=0;for(let s of this.sourceBuffers||[])o=$e(s,n,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let o=e.indexOf(t);o>-1?e.splice(o,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let o=e[n],s=this._getGltfAttributeName(n),i=this.addBinaryBuffer(o.value,o);t[s]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let o=e.subarray(0,t);for(let s of o)n.min.push(s),n.max.push(s);for(let s=t;s<e.length;s+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[s+i]),n.max[0+i]=Math.max(n.max[0+i],e[s+i]);return n}};function br(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Ro={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},Er={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function ue(r,e){return Er[e]*xr[r]}function X(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let o=r.getTypedArrayForBufferView(e),s=k(o,"SCALAR",t,n+1);return s instanceof BigInt64Array||s instanceof BigUint64Array?null:s}function k(r,e,t,n=1){let o=xr[e],s=Ro[t],i=Er[t],a=n*o,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new s(J(f),A,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[n],s=r.getTypedArrayForAccessor(o),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let m=0;m<s.length;m+=2){let B=wo(A,f,s,m,e.channels);u.push(B)}return u}}return[]}function Ie(r,e,t,n,o){if(!t?.length)return;let s=[];for(let A of t){let u=n.findIndex(m=>m===A);u===-1&&(u=n.push(A)-1),s.push(u)}let i=new Uint32Array(s),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:U(i),count:i.length});o.attributes[e]=f}function wo(r,e,t,n,o=[0]){let s={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=Oo(i,a,r,c),A=0;for(let u of o){let m=typeof u=="number"?Object.values(s)[u]:s[u],B=f+m.offset,d=ce(r);if(d.data.length<=B)throw new Error(`${d.data.length} <= ${B}`);let p=d.data[B];A|=p<<m.shift}return A}function Oo(r,e,t,n=1){let o=t.width,s=br(r)*(o-1),i=Math.round(s),a=t.height,c=br(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*o+i)*A}function Ge(r,e,t,n,o){let s=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/o,A=c/o;s.push(r.slice(f,f+A))}return s}function De(r,e,t){let n=[];for(let o=0;o<e;o++){let s=o*t;n.push(r.slice(s,s+t))}return n}function Re(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let o=[],s=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=s.decode(f);o.push(A),i+=c}}return o}return[]}var V="EXT_mesh_features",ct=V;async function Lo(r,e){let t=new l(r);So(t,e)}function _o(r,e){let t=new l(r);return Uo(t,e),t.createBinaryChunk(),t.gltf}function So(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let o of n.primitives)Jo(r,o,e)}function Jo(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[V]?.featureIds;if(o)for(let s of o){let i;if(typeof s.attribute<"u"){let a=`_FEATURE_ID_${s.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof s.texture<"u"&&t?.gltf?.loadImages?i=Y(r,s.texture,e):i=[];s.data=i}}function Uo(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let o of n.primitives)Ho(r,o)}function ft(r,e,t,n){e.extensions||(e.extensions={});let o=e.extensions[V];o||(o={featureIds:[]},e.extensions[V]=o);let{featureIds:s}=o,i={featureCount:t.length,propertyTable:n,data:t};s.push(i),r.addObjectExtension(e,V,o)}function Ho(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((o,s)=>{if(o.data){let{accessorKey:i,index:a}=No(e.attributes),c=new Uint32Array(o.data);n[s]={featureCount:c.length,propertyTable:o.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:U(c),count:c.length});e.attributes[i]=A}})}function No(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(s=>s.indexOf(e)===0),n=-1;for(let s of t){let i=Number(s.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var Oe={};y(Oe,{createExtStructuralMetadata:()=>Bt,decode:()=>Po,encode:()=>Ko,name:()=>ut});var W="EXT_structural_metadata",ut=W;async function Po(r,e){let t=new l(r);jo(t,e)}function Ko(r,e){let t=new l(r);return os(t,e),t.createBinaryChunk(),t.gltf}function jo(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&vo(r,t),Qo(r,t))}function vo(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let o of n.meshes)for(let s of o.primitives)ko(r,t,s,e)}function Qo(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.propertyTables;if(n&&o)for(let s in n){let i=Xo(o,s);i&&Vo(r,t,i)}}function Xo(r,e){for(let t of r)if(t.class===e)return t;return null}function ko(r,e,t,n){if(!e)return;let s=t.extensions?.[W]?.propertyTextures;if(s)for(let i of s){let a=e[i];Yo(r,a,t,n)}}function Yo(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let o=e.class;for(let s in e.properties){let i=`${o}_${s}`,a=e.properties?.[s];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=Y(r,a,t);f!==null&&(Ie(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Vo(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Wo(r,e,i,o,a);a.data=c}}}function Wo(r,e,t,n,o){let s=[],i=o.values,a=r.getTypedArrayForBufferView(i),c=Zo(r,t,o,n),f=qo(r,o,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{s=zo(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{s=Re(n,a,c,f);break}case"ENUM":{s=$o(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return s}function Zo(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?X(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function qo(r,e,t){return typeof e.stringOffsets<"u"?X(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function zo(r,e,t,n){let o=r.array,s=r.count,i=ue(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,o?n?Ge(c,e,n,t.length,i):s?De(c,e,s):[]:c}function $o(r,e,t,n,o){let s=e.enumType;if(!s)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[s];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${s}`);let a=i.valueType||"UINT16",c=ue(e.type,a),f=n.byteLength/c,A=k(n,e.type,a,f);if(A||(A=n),e.array){if(o)return es({valuesData:A,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?ts(A,t,u,i):[]}return mt(A,0,t,i)}function es(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:o,elementSize:s,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>o)break;let u=f/s,m=A/s,B=mt(e,u,m,i);a.push(B)}return a}function ts(r,e,t,n){let o=[];for(let s=0;s<e;s++){let i=t*s,a=mt(r,i,t,n);o.push(a)}return o}function mt(r,e,t,n){let o=[];for(let s=0;s<t;s++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push("");else{let i=r[e+s],a=rs(n,i);a?o.push(a.name):o.push("")}return o}function rs(r,e){for(let t of r.values)if(t.value===e)return t;return null}var ns="schemaClassId";function os(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let o=n.class,s=t.schema?.classes?.[o];n.properties&&s&&ss(n,s,r)}}function ss(r,e,t){for(let n in r.properties){let o=r.properties[n].data;if(o){let s=e.properties[n];if(s){let i=cs(o,s,t);r.properties[n]=i}}}}function Bt(r,e,t=ns){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=is(e,t,n.schema);let o=as(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(o)-1}function is(r,e,t){let n=t??{id:"schema_id"},o={properties:{}};for(let s of r){let i={type:s.elementType,componentType:s.componentType};o.properties[s.name]=i}return n.classes={},n.classes[e]=o,n}function as(r,e,t){let n={class:e,count:0},o=0,s=t.classes?.[e];for(let i of r){if(o===0&&(o=i.values.length),o!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");s?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=o,n}function cs(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:o,stringOffsets:s}=us(r);n.stringOffsets=At(s,t),n.values=At(o,t)}else if(e.type==="SCALAR"&&e.componentType){let o=As(r,e.componentType);n.values=At(o,t)}return n}var fs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function As(r,e){let t=[];for(let o of r)t.push(Number(o));let n=fs[e];if(!n)throw new Error("Illegal component type");return new n(t)}function us(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let o=new Uint8Array(n),s=[],i=0;for(let c of t)o.set(c,i),s.push(i),i+=c.length;s.push(i);let a=new Uint32Array(s);return{stringData:o,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var dt={};y(dt,{decode:()=>ms,name:()=>lt});var yr="EXT_feature_metadata",lt=yr;async function ms(r,e){let t=new l(r);Bs(t,e)}function Bs(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(yr);t&&(e.gltf?.loadImages&&ls(r,t),ds(r,t))}function ls(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:o}=e;if(n&&o)for(let s in n){let i=n[s],a=hs(o,s);a&&Cs(r,a,i)}}function ds(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.featureTables;if(n&&o)for(let s in n){let i=ps(o,s);i&&gs(r,t,i)}}function ps(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function hs(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function gs(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=bs(r,e,i,o,a);a.data=c}}}function Cs(r,e,t){let n=e.class;for(let o in t.properties){let s=e?.properties?.[o];if(s){let i=Ms(r,s,n);s.data=i}}}function bs(r,e,t,n,o){let s=[],i=o.bufferView,a=r.getTypedArrayForBufferView(i),c=xs(r,t,o,n),f=Es(r,t,o,n);return t.type==="STRING"||t.componentType==="STRING"?s=Re(n,a,c,f):ys(t)&&(s=Ts(t,n,a,c)),s}function xs(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?X(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function Es(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?X(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function ys(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function Ts(r,e,t,n){let o=r.type==="ARRAY",s=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=ue(i,a),f=t.byteLength/c,A=k(t,i,a,f);return o?n?Ge(A,e,n,t.length,c):s?De(A,e,s):[]:A}function Ms(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let o=[];for(let s of n.meshes)for(let i of s.primitives)Fs(r,t,e,o,i);return o}function Fs(r,e,t,n,o){let s={channels:t.channels,...t.texture},i=Y(r,s,o);i&&Ie(r,e,i,n,o)}var H="4.4.0-alpha.18";var Tr="4.4.0-alpha.18";var Le={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Mr;async function ht(r){We(r.modules);let e=Ze("basis");return e||(Mr||=Is(r),await Mr)}async function Is(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Le.TRANSCODER,"textures",r),await M(Le.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Gs(e,t)}function Gs(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,initializeBasis:i}=o;i(),n({BasisFile:s})})})}var pt;async function gt(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Ds(r),await pt)}async function Ds(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Le.ENCODER,"textures",r),await M(Le.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Rs(e,t)}function Rs(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,KTX2File:i,initializeBasis:a,BasisEncoder:c}=o;a(),n({BasisFile:s,KTX2File:i,BasisEncoder:c})})})}var ws=["","WEBKIT_","MOZ_"],Fr={WEBGL_compressed_texture_s3tc:["bc1-rgb-unorm-webgl","bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"],WEBGL_compressed_texture_s3tc_srgb:["bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"],EXT_texture_compression_rgtc:["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"],EXT_texture_compression_bptc:["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"],WEBGL_compressed_texture_etc1:["etc1-rbg-unorm-webgl"],WEBGL_compressed_texture_etc:["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"],WEBGL_compressed_texture_pvrtc:["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"],WEBGL_compressed_texture_atc:["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"],WEBGL_compressed_texture_astc:["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]};var _e=null;function Ir(r){if(!_e){r=r||Os()||void 0,_e=new Set;for(let e of ws)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`))for(let n of Fr[t])_e.add(n)}return _e}function Os(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function Gr(r){let e=new Uint8Array(r);return!(e.byteLength<E.length||e[0]!==E[0]||e[1]!==E[1]||e[2]!==E[2]||e[3]!==E[3]||e[4]!==E[4]||e[5]!==E[5]||e[6]!==E[6]||e[7]!==E[7]||e[8]!==E[8]||e[9]!==E[9]||e[10]!==E[10]||e[11]!==E[11])}var wr={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:"etc1-rbg-unorm-webgl"},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:"etc2-rgba8unorm"},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:"bc1-rgb-unorm-webgl"},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:"bc3-rgba-unorm"},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:"bc4-r-unorm"},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:"bc5-rg-unorm"},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:"pvrtc-rgb4unorm-webgl"},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:"pvrtc-rgba4unorm-webgl"},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:"astc-4x4-unorm"},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:"atc-rgb-unorm-webgl"},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:"atc-rgbai-unorm-webgl"},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:"rgba8unorm"},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:"rgba4unorm-webgl"}},pA=Object.freeze(Object.keys(wr));async function Or(r,e={}){let t=se(e);if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Gr(r)){let o=await gt(t);return Dr(o.KTX2File,r,e)}let{BasisFile:n}=await ht(t);return Ct(n,r,e)}switch(e.basis.module){case"encoder":let n=await gt(t);switch(e.basis.containerFormat){case"ktx2":return Dr(n.KTX2File,r,e);case"basis":default:return Ct(n.BasisFile,r,e)}case"transcoder":default:let{BasisFile:o}=await ht(t);return Ct(o,r,e)}}function Ct(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let o=n.getNumImages(),s=[];for(let i=0;i<o;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(Ss(n,i,f,t));s.push(c)}return s}finally{n.close(),n.delete()}}function Ss(r,e,t,n){let o=r.getImageWidth(e,t),s=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f,textureFormat:A}=Lr(n,i),u=r.getImageTranscodedSizeInBytes(e,t,f),m=new Uint8Array(u);if(!r.transcodeImage(m,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{shape:"texture-level",width:o,height:s,data:m,compressed:a,...c!==void 0?{format:c}:{},...A!==void 0?{textureFormat:A}:{},hasAlpha:i}}function Dr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let o=n.getLevels(),s=[];for(let i=0;i<o;i++)s.push(Js(n,i,t));return[s]}finally{n.close(),n.delete()}}function Js(r,e,t){let{alphaFlag:n,height:o,width:s}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c,textureFormat:f}=Lr(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),u=new Uint8Array(A);if(!r.transcodeImage(u,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{shape:"texture-level",width:s,height:o,data:u,compressed:i,...a!==void 0?{format:a}:{},...f!==void 0?{textureFormat:f}:{},levelSize:A,hasAlpha:n}}function Lr(r,e){let t=r.basis?.format||"auto";t==="auto"&&(t=r.basis?.supportedTextureFormats?Rr(r.basis.supportedTextureFormats):Rr()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha);let n=t.toLowerCase(),o=wr[n];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function Rr(r=Ir()){let e=new Set(r);return Z(e,["astc-4x4-unorm","astc-4x4-unorm-srgb"])?"astc-4x4":Z(e,["bc7-rgba-unorm","bc7-rgba-unorm-srgb"])?{alpha:"bc7-m5",noAlpha:"bc7-m6-opaque-only"}:Z(e,["bc1-rgb-unorm-webgl","bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb"])?{alpha:"bc3",noAlpha:"bc1"}:Z(e,["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"])?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:Z(e,["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"])?"etc2":e.has("etc1-rbg-unorm-webgl")?"etc1":Z(e,["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"])?{alpha:"atc-rgba-interpolated-alpha",noAlpha:"atc-rgb"}:"rgb565"}function Z(r,e){return e.some(t=>r.has(t))}var _r={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Tr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",containerFormat:"auto",module:"transcoder"}}},bt={..._r,parse:Or};var q=!0,Sr=1735152710,yt=12,Se=8,Us=1313821514,Hs=5130562,Ns=0,Ps=0,Ks=1;function js(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Jr(r,e=0,t={}){let n=new DataView(r),{magic:o=Sr}=t,s=n.getUint32(e,!1);return s===o||s===Sr}function Je(r,e,t=0,n={}){let o=new DataView(e),s=js(o,t+0),i=o.getUint32(t+4,q),a=o.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:s,version:i,json:{},binChunks:[]}),t+=yt,r.version){case 1:return vs(r,o,t);case 2:return Qs(r,o,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function vs(r,e,t){T(r.header.byteLength>yt+Se);let n=e.getUint32(t+0,q),o=e.getUint32(t+4,q);return t+=Se,T(o===Ns),xt(r,e,t,n),t+=n,t+=Et(r,e,t,r.header.byteLength),t}function Qs(r,e,t,n){return T(r.header.byteLength>yt+Se),Xs(r,e,t,n),t+r.header.byteLength}function Xs(r,e,t,n){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,q),s=e.getUint32(t+4,q);switch(t+=Se,s){case Us:xt(r,e,t,o);break;case Hs:Et(r,e,t,o);break;case Ps:n.strict||xt(r,e,t,o);break;case Ks:n.strict||Et(r,e,t,o);break;default:break}t+=R(o,4)}return t}function xt(r,e,t,n){let o=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(o);return r.json=JSON.parse(i),R(n,4)}function Et(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),R(n,4)}function Tt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var Ft={};y(Ft,{decode:()=>ni,name:()=>ri});var ks="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",Ys="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",Vs=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),Ws=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Zs={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},qs={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Ur(r,e,t,n,o,s="NONE"){let i=await zs();ti(i,i.exports[qs[o]],r,e,t,n,i.exports[Zs[s||"NONE"]])}var Mt;async function zs(){return Mt||(Mt=$s()),Mt}async function $s(){let r=ks;WebAssembly.validate(Vs)&&(r=Ys,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(ei(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function ei(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let o=r.charCodeAt(n);e[n]=o>96?o-71:o>64?o-65:o>47?o+4:o>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Ws[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function ti(r,e,t,n,o,s,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*o),A=a(s.length),u=new Uint8Array(r.exports.memory.buffer);u.set(s,A);let m=e(f,n,o,A,s.length);if(m===0&&i&&i(f,c,o),t.set(u.subarray(f,f+n*o)),a(f-a(0)),m!==0)throw new Error(`Malformed buffer data: ${m}`)}var Ue="EXT_meshopt_compression",ri=Ue;async function ni(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let o of r.json.bufferViews||[])n.push(oi(t,o));await Promise.all(n),t.removeExtension(Ue)}async function oi(r,e){let t=r.getObjectExtension(e,Ue);if(t){let{byteOffset:n=0,byteLength:o=0,byteStride:s,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,o),m=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Ur(m,i,s,u,a,c),r.removeObjectExtension(e,Ue)}}var It={};y(It,{name:()=>si,preprocess:()=>ii});var z="EXT_texture_webp",si=z;function ii(r,e){let t=new l(r);if(!at("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,z);s&&(o.source=s.source),t.removeObjectExtension(o,z)}t.removeExtension(z)}var Gt={};y(Gt,{name:()=>ai,preprocess:()=>ci});var He="KHR_texture_basisu",ai=He;function ci(r,e){let t=new l(r),{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,He);s&&(o.source=s.source,t.removeObjectExtension(o,He))}t.removeExtension(He)}var St={};y(St,{decode:()=>Ti,encode:()=>Mi,name:()=>Ei,preprocess:()=>yi});var fi="1.5.6",Ai="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${fi}`,g={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},me={[g.DECODER]:`${Dt}/${g.DECODER}`,[g.DECODER_WASM]:`${Dt}/${g.DECODER_WASM}`,[g.FALLBACK_DECODER]:`${Dt}/${g.FALLBACK_DECODER}`,[g.ENCODER]:`https://raw.githubusercontent.com/google/draco/${Ai}/javascript/${g.ENCODER}`},Rt;async function Nr(r={},e){let t=r.modules||{};return t.draco3d?Rt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Rt||=ui(r,e),await Rt}function Hr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function ui(r,e){let t,n;switch(e){case"js":t=await M(me[g.FALLBACK_DECODER],"draco",r,g.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await M(me[g.DECODER],"draco",r,g.DECODER),await M(me[g.DECODER_WASM],"draco",r,g.DECODER_WASM)])}catch{t=null,n=null}}return t=Hr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!L&&([t,n]=await Promise.all([await M(me[g.DECODER],"draco",{...r,useLocalLibraries:!0},g.DECODER),await M(me[g.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},g.DECODER_WASM)]),t=Hr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await mi(t,n)}function mi(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:o=>n({draco:o})})})}var Pr="4.4.0-alpha.18";function Kr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function wt(r){let e=1/0,t=1/0,n=1/0,o=-1/0,s=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],m=a[f+2];e=A<e?A:e,t=u<t?u:t,n=m<n?m:n,o=A>o?A:o,s=u>s?u:s,i=m>i?m:i}return[[e,t,n],[o,s,i]]}function Ot(r,e,t){let n=Kr(e.value),o=t||jr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:o}}function jr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function Qr(r,e,t){let n=Xr(e.metadata),o=[],s=Bi(e.attributes);for(let i in r){let a=r[i],c=vr(i,a,s[i]);o.push(c)}if(t){let i=vr("indices",t);o.push(i)}return{fields:o,metadata:n}}function Bi(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function vr(r,e,t){let n=t?Xr(t.metadata):void 0;return Ot(r,e,n)}function Xr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var kr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},li={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},di=4,Be=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(n),s=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(o){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,s);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,s);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!s.ptr){let m=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(m)}let a=this._getDracoLoaderData(s,o,t),c=this._getMeshData(s,a,t),f=wt(c.attributes),A=Qr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:s.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),s&&this.draco.destroy(s)}}_getDracoLoaderData(e,t,n){let o=this._getTopLevelMetadata(e),s=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:s}}_getDracoAttributes(e,t){let n={};for(let o=0;o<e.num_attributes();o++){let s=this.decoder.GetAttribute(e,o),i=this._getAttributeMetadata(e,o);n[s.unique_id()]={unique_id:s.unique_id(),attribute_type:s.attribute_type(),data_type:s.data_type(),num_components:s.num_components(),byte_offset:s.byte_offset(),byte_stride:s.byte_stride(),normalized:s.normalized(),attribute_index:o,metadata:i};let a=this._getQuantizationTransform(s,t);a&&(n[s.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(s,t);c&&(n[s.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let o=this._getMeshAttributes(t,e,n);if(!o.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:o}}_getMeshAttributes(e,t,n){let o={};for(let s of Object.values(e.attributes)){let i=this._deduceAttributeName(s,n);s.name=i;let a=this._getAttributeValues(t,s);if(a){let{value:c,size:f}=a;o[i]={value:c,size:f,byteOffset:s.byte_offset,byteStride:s.byte_stride,normalized:s.normalized}}}return o}_getTriangleListIndices(e){let n=e.num_faces()*3,o=n*di,s=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,s),new Uint32Array(this.draco.HEAPF32.buffer,s,n).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),gi(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=li[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,i=e.num_points()*o,a=i*n.BYTES_PER_ELEMENT,c=pi(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:o}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let o=e.attribute_type;for(let i in kr)if(this.draco[i]===o)return kr[i];let s=t.attributeNameEntry||"name";return e.metadata[s]?e.metadata[s].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let o=0;o<n;o++){let s=this.metadataQuerier.GetEntryName(e,o);t[s]=this._getDracoMetadataField(e,s)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let o=hi(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,o=[...t,...n];for(let s of o)this.decoder.SkipAttributeTransform(this.draco[s])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function pi(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function hi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function gi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Yr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Pr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",extraAttributes:{},attributeNameEntry:void 0}}},Lt={...Yr,parse:Ci};async function Ci(r,e){let{draco:t}=await Nr(se(e),e?.draco?.decoderType||"wasm"),n=new Be(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Vr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let o=_t(n);e[t]=o}}return e}function _t(r){let{buffer:e,size:t,count:n}=bi(r);return{value:e,size:t,byteOffset:0,count:n,type:Fe(t),componentType:U(e)}}function bi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=xi(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function xi(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var N="KHR_draco_mesh_compression",Ei=N;function yi(r,e,t){let n=new l(r);for(let o of Wr(n))n.getObjectExtension(o,N)}async function Ti(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),o=[];for(let s of Wr(n))n.getObjectExtension(s,N)&&o.push(Fi(n,s,e,t));await Promise.all(o),n.removeExtension(N)}function Mi(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])Ii(n,e),t.addRequiredExtension(N)}async function Fi(r,e,t,n){let o=r.getObjectExtension(e,N);if(!o)return;let s=r.getTypedArrayForBufferView(o.bufferView),i=ie(s.buffer,s.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Lt,a,n),f=Vr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let m=e.attributes[A],B=r.getAccessor(m);B?.min&&B?.max&&(u.min=B.min,u.max=B.max)}e.attributes=f,c.indices&&(e.indices=_t(c.indices)),r.removeObjectExtension(e,N),Gi(e)}function Ii(r,e,t=4,n,o){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let s=n.DracoWriter.encodeSync({attributes:r}),i=o?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(s);return{primitives:[{attributes:a,mode:t,extensions:{[N]:{bufferView:c,attributes:a}}}]}}function Gi(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Wr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var jt={};y(jt,{decode:()=>Qi,name:()=>Ki});var fu=1/Math.PI*180,Au=1/180*Math.PI,Di={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Di}};var C=globalThis.mathgl.config;function Zr(r,{precision:e=C.precision}={}){return r=Ri(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let o=0;o<r.length;++o)if(!Jt(r[o],e[o]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function Ri(r){return Math.round(r/C.EPSILON)*C.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Zr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let o=0;o<this.ELEMENTS;++o){let s=e[o],i=typeof t=="number"?t:t[o];this[o]=s+n*(i-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function wi(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function b(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function qr(r,e,t=""){if(C.debug&&!wi(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ut(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Ne=class extends ee{get x(){return this[0]}set x(e){this[0]=b(e)}get y(){return this[1]}set y(e){this[1]=b(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let o=this[n]-e[n];t+=o*o}return b(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return b(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),b(this[e])}setComponent(e,t){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var xu=Math.PI/180;function Si(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function $r(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[3]*o+t[6],r[1]=t[1]*n+t[4]*o+t[7],r}var Eu=function(){let r=Si();return function(e,t,n,o,s,i){let a,c;for(t||(t=2),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],s(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function en(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s||1;return r[0]=(t[0]*n+t[4]*o+t[8]*s)/i,r[1]=(t[1]*n+t[5]*o+t[9]*s)/i,r[2]=(t[2]*n+t[6]*o+t[10]*s)/i,r}function tn(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[2]*o,r[1]=t[1]*n+t[3]*o,r[2]=e[2],r}function rn(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=t[0]*n+t[3]*o+t[6]*s,r[1]=t[1]*n+t[4]*o+t[7]*s,r[2]=t[2]*n+t[5]*o+t[8]*s,r[3]=e[3],r}function Ji(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Ui(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function nn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[0],a=t[1],c=t[2];return r[0]=o*c-s*a,r[1]=s*i-n*c,r[2]=n*a-o*i,r}function on(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*o+t[8]*s+t[12])/i,r[1]=(t[1]*n+t[5]*o+t[9]*s+t[13])/i,r[2]=(t[2]*n+t[6]*o+t[10]*s+t[14])/i,r}function Pe(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=n*t[0]+o*t[3]+s*t[6],r[1]=n*t[1]+o*t[4]+s*t[7],r[2]=n*t[2]+o*t[5]+s*t[8],r}function sn(r,e,t){let n=t[0],o=t[1],s=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=o*f-s*c,u=s*a-n*f,m=n*c-o*a,B=o*m-s*u,d=s*A-n*m,p=n*u-o*A,x=i*2;return A*=x,u*=x,m*=x,B*=2,d*=2,p*=2,r[0]=a+A+B,r[1]=c+u+d,r[2]=f+m+p,r}function an(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0],s[1]=o[1]*Math.cos(n)-o[2]*Math.sin(n),s[2]=o[1]*Math.sin(n)+o[2]*Math.cos(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function cn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[2]*Math.sin(n)+o[0]*Math.cos(n),s[1]=o[1],s[2]=o[2]*Math.cos(n)-o[0]*Math.sin(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function fn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0]*Math.cos(n)-o[1]*Math.sin(n),s[1]=o[0]*Math.sin(n)+o[1]*Math.cos(n),s[2]=o[2],r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function An(r,e){let t=r[0],n=r[1],o=r[2],s=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+o*o)*(s*s+i*i+a*a)),f=c&&Ui(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var Mu=function(){let r=Ji();return function(e,t,n,o,s,i){let a,c;for(t||(t=3),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],s(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ht=[0,0,0],Ke,K=class extends Ne{static get ZERO(){return Ke||(Ke=new K(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(C.debug&&(b(e),b(t),b(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(b(e.x),b(e.y),b(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=b(e)}angle(e){return An(this,e)}cross(e){return nn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ht}){return an(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ht}){return cn(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ht}){return fn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return on(this,this,e),this.check()}transformAsVector(e){return en(this,this,e),this.check()}transformByMatrix3(e){return Pe(this,this,e),this.check()}transformByMatrix2(e){return tn(this,this,e),this.check()}transformByQuaternion(e){return sn(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=b(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)t[o]=this[n+o];return t}setColumn(e,t){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)this[n+o]=t[o];return this}};function un(r,e){if(r===e){let t=e[1],n=e[2],o=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=o}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function mn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,m=-A*s+a*c,B=f*s-i*c,d=t*u+n*m+o*B;return d?(d=1/d,r[0]=u*d,r[1]=(-A*n+o*f)*d,r[2]=(a*n-o*i)*d,r[3]=m*d,r[4]=(A*t-o*c)*d,r[5]=(-a*t+o*s)*d,r[6]=B*d,r[7]=(-f*t+n*c)*d,r[8]=(i*t-n*s)*d,r):null}function Bn(r){let e=r[0],t=r[1],n=r[2],o=r[3],s=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*s-i*c)+t*(-f*o+i*a)+n*(c*o-s*a)}function Nt(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1],d=t[2],p=t[3],x=t[4],I=t[5],S=t[6],v=t[7],Ve=t[8];return r[0]=m*n+B*i+d*f,r[1]=m*o+B*a+d*A,r[2]=m*s+B*c+d*u,r[3]=p*n+x*i+I*f,r[4]=p*o+x*a+I*A,r[5]=p*s+x*c+I*u,r[6]=S*n+v*i+Ve*f,r[7]=S*o+v*a+Ve*A,r[8]=S*s+v*c+Ve*u,r}function ln(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1];return r[0]=n,r[1]=o,r[2]=s,r[3]=i,r[4]=a,r[5]=c,r[6]=m*n+B*i+f,r[7]=m*o+B*a+A,r[8]=m*s+B*c+u,r}function dn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=Math.sin(t),B=Math.cos(t);return r[0]=B*n+m*i,r[1]=B*o+m*a,r[2]=B*s+m*c,r[3]=B*i-m*n,r[4]=B*a-m*o,r[5]=B*c-m*s,r[6]=f,r[7]=A,r[8]=u,r}function Pt(r,e,t){let n=t[0],o=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=o*e[3],r[4]=o*e[4],r[5]=o*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function pn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=t+t,a=n+n,c=o+o,f=t*i,A=n*i,u=n*a,m=o*i,B=o*a,d=o*c,p=s*i,x=s*a,I=s*c;return r[0]=1-u-d,r[3]=A-I,r[6]=m+x,r[1]=A+I,r[4]=1-f-d,r[7]=B-p,r[2]=m-x,r[5]=B+p,r[8]=1-f-u,r}var Kt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Kt||(Kt={}));var Hi=Object.freeze([1,0,0,0,1,0,0,0,1]),_=class extends je{static get IDENTITY(){return Pi()}static get ZERO(){return Ni()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Hi)}fromObject(e){return this.check()}fromQuaternion(e){return pn(this,e),this.check()}set(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=o,this[4]=s,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=o,this[2]=a,this[3]=t,this[4]=s,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return Bn(this)}transpose(){return un(this,this),this.check()}invert(){return mn(this,this),this.check()}multiplyLeft(e){return Nt(this,e,this),this.check()}multiplyRight(e){return Nt(this,this,e),this.check()}rotate(e){return dn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Pt(this,this,e):Pt(this,this,[e,e]),this.check()}translate(e){return ln(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=$r(t||[-0,-0],e,this);break;case 3:n=Pe(t||[-0,-0,-0],e,this);break;case 4:n=rn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return qr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},ve,Qe=null;function Ni(){return ve||(ve=new _([0,0,0,0,0,0,0,0,0]),Object.freeze(ve)),ve}function Pi(){return Qe||(Qe=new _,Object.freeze(Qe)),Qe}var ke="KHR_texture_transform",Ki=ke,Xe=new K,ji=new _,vi=new _;async function Qi(r,e){if(!new l(r).hasExtension(ke)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let s=0;s<o.length;s++)Xi(s,r)}function Xi(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],o=[];for(let s of n)s&&s?.extensions?.[ke]&&ki(e,r,s,o)}function ki(r,e,t,n){let o=Yi(t,n);if(!o)return;let s=r.json.meshes||[];for(let i of s)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Vi(r,a,o)}}function Yi(r,e){let t=r.extensions?.[ke],{texCoord:n=0}=r,{texCoord:o=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===o)!==-1)){let i=qi(t);return n!==o&&(r.texCoord=o),e.push([n,o]),{originalTexCoord:n,texCoord:o,matrix:i}}return null}function Vi(r,e,t){let{originalTexCoord:n,texCoord:o,matrix:s}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:m,length:B}=Q(a,c),d=Me[a.componentType],p=Te[a.type],x=c.byteStride||d*p,I=new Float32Array(B);for(let S=0;S<a.count;S++){let v=new m(f,u+S*x,2);Xe.set(v[0],v[1],1),Xe.transformByMatrix3(s),I.set([Xe[0],Xe[1]],S*p)}n===o?Wi(a,r,I,a.bufferView):Zi(o,a,e,r,I)}}}}function Wi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Zi(r,e,t,n,o){n.buffers.push({arrayBuffer:J(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let s=n.json.bufferViews;s.push({buffer:n.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:s?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function qi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,o=new _().set(1,0,0,0,1,0,e[0],e[1],1),s=ji.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=vi.set(n[0],0,0,0,n[1],0,0,0,1);return o.multiplyRight(s).multiplyRight(i)}var vt={};y(vt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var j="KHR_lights_punctual",zi=j;async function $i(r){let e=new l(r),{json:t}=e,n=e.getExtension(j);n&&(e.json.lights=n.lights,e.removeExtension(j));for(let o of t.nodes||[]){let s=e.getObjectExtension(o,j);s&&(o.light=s.light),e.removeObjectExtension(o,j)}}async function ea(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(j);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let o=n.node;e.addObjectExtension(o,j,n)}delete e.json.lights}}var Qt={};y(Qt,{decode:()=>ra,encode:()=>na,name:()=>ta});var le="KHR_materials_unlit",ta=le;async function ra(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,le);e.removeExtension(le)}function na(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,le,{}),e.addExtension(le))}var Xt={};y(Xt,{decode:()=>sa,encode:()=>ia,name:()=>oa});var de="KHR_techniques_webgl",oa=de;async function sa(r){let e=new l(r),{json:t}=e,n=e.getExtension(de);if(n){let o=aa(n,e);for(let s of t.materials||[]){let i=e.getObjectExtension(s,de);i&&(s.technique=Object.assign({},i,o[i.technique]),s.technique.values=ca(s.technique,e)),e.removeObjectExtension(s,de)}e.removeExtension(de)}}async function ia(r,e){}function aa(r,e){let{programs:t=[],shaders:n=[],techniques:o=[]}=r,s=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=s.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),o.forEach(i=>{i.program=t[i.program]}),o}function ca(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var hn=[Oe,we,Ft,It,Gt,St,vt,Qt,Xt,jt,dt],fa=[Oe,we];function gn(r,e={},t){let n=hn.filter(o=>xn(o.name,e));for(let o of n)o.preprocess?.(r,e,t)}async function Cn(r,e={},t){let n=hn.filter(o=>xn(o.name,e));for(let o of n)await o.decode?.(r,e,t)}function bn(r,e={}){for(let t of fa)r=t.encode?.(r,e)??r;return r}function xn(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var kt="KHR_binary_glTF";function En(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let o=e.getObjectExtension(n,kt);o&&Object.assign(n,o),e.removeObjectExtension(n,kt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(kt)}var yn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},ua={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),En(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in yn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let o in n){let s=n[o];s.id=s.id||o;let i=e[t].length;e[t].push(s),this.idToIndexMap[t][o]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in yn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:o,material:s}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");o&&(t.indices=this._convertIdToIndex(o,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let o in n){let s=n[o],i=this._convertIdToIndex(s,o);n[o]=i}}_convertIdToIndex(e,t){let n=ua[t];if(n in this.idToIndexMap){let o=this.idToIndexMap[n][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(s=>s.id===n);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function Tn(r,e={}){return new Yt().normalize(r,e)}async function Mn(r,e,t=0,n,o){return ma(r,e,t,n),Tn(r,{normalize:n?.gltf?.normalize}),gn(r,n,o),n?.gltf?.loadBuffers&&r.json.buffers&&await Ba(r,n,o),n?.gltf?.loadImages&&await la(r,n,o),await Cn(r,n,o),r}function ma(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Jr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let s=r.json.images||[];r.images=new Array(s.length).fill({})}async function Ba(r,e,t){let n=r.json.buffers||[];for(let o=0;o<n.length;++o){let s=n[o];if(s.uri){let{fetch:i}=t;h(i);let a=Tt(s.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete s.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(s.byteLength),byteOffset:0,byteLength:s.byteLength})}}async function la(r,e,t){let n=da(r),o=r.json.images||[],s=[];for(let i of n)s.push(pa(r,o[i],i,e,t));return await Promise.all(s)}function da(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function pa(r,e,t,n,o){let s;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Tt(e.uri,n),{fetch:A}=o;s=await(await A(f)).arrayBuffer(),e.bufferView={data:s}}if(Number.isFinite(e.bufferView)){let f=gr(r.json,r.buffers,e.bufferView);s=ie(f.buffer,f.byteOffset,f.byteLength)}h(s,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType}},c=await re(s,[st,bt],a,o);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ha,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function ha(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let o=e?.glb?.byteOffset||0;return await Mn({},r,o,n,t)}var ga=1179937895,Ca=1313821514,ba=5130562,O=!0;function pe(r,e,t=0,n={}){let{magic:o=ga,version:s=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,o,O),e.setUint32(t+4,s,O),e.setUint32(t+8,0,O));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,Ca,O)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let m=t-A-8;e.setUint32(A+0,m,O)}if(a){let m=t;if(e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,ba,O)),t+=8,t=xe(e,t,a,4),e){let B=t-m-8;e.setUint32(m+0,B,O)}}if(e){let m=t-c;e.setUint32(f,m,O)}return t}function Vt(r,e,t,n){return xa(r),pe(r,e,t,n)}function xa(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var In={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Fn(r,e),encodeSync:Fn};function Fn(r,e={}){let{byteOffset:t=0}=e,n=bn(r),o=Vt(n,null,t,e),s=new ArrayBuffer(o),i=new DataView(s);return Vt(n,i,t,e),s}var Gn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ea,parseSync:Dn,options:{glb:{strict:!1}}};async function Ea(r,e){return Dn(r,e)}function Dn(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var wn={name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Rn(r,e),encodeSync:Rn};function Rn(r,e){let{byteOffset:t=0}=e??{},n=pe(r,null,t,e),o=new ArrayBuffer(n),s=new DataView(o);return pe(r,s,t,e),o}var ya={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ta={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Ma={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Fa={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Ia(){return{id:"default-sampler",parameters:Fa}}function Ga(r){return Ta[r]}function Da(r){return ya[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:o=[],images:s=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=o,this.images=s,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((o,s)=>this._resolveBufferView(o,s))),e.images&&(n.images=e.images.map((o,s)=>this._resolveImage(o,s))),e.samplers&&(n.samplers=e.samplers.map((o,s)=>this._resolveSampler(o,s))),e.textures&&(n.textures=e.textures.map((o,s)=>this._resolveTexture(o,s))),e.accessors&&(n.accessors=e.accessors.map((o,s)=>this._resolveAccessor(o,s))),e.materials&&(n.materials=e.materials.map((o,s)=>this._resolveMaterial(o,s))),e.meshes&&(n.meshes=e.meshes.map((o,s)=>this._resolveMesh(o,s))),e.nodes&&(n.nodes=e.nodes.map((o,s)=>this._resolveNode(o,s)),n.nodes=n.nodes.map((o,s)=>this._resolveNodeChildren(o))),e.skins&&(n.skins=e.skins.map((o,s)=>this._resolveSkin(o,s))),e.scenes&&(n.scenes=e.scenes.map((o,s)=>this._resolveScene(o,s))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((o,s)=>{let i=this.getMesh(s);return o.id=i.id,o.primitives=o.primitives.concat(i.primitives),o},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(o=>{let s={...o,attributes:{},indices:void 0,material:void 0},i=o.attributes;for(let a in i)s.attributes[a]=this.getAccessor(i[a]);return o.indices!==void 0&&(s.indices=this.getAccessor(o.indices)),o.material!==void 0&&(s.material=this.getMaterial(o.material)),s})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let o=n.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture={...o.baseColorTexture},o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture={...o.metallicRoughnessTexture},o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=Ga(e.componentType),o=Da(e.type),s=n*o,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:o,bytesPerElement:s,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ae(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,o,s){let i=new Uint8Array(s*o);for(let a=0;a<s;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+o)),a*o)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Ia(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let o in n){let s=this._enumSamplerParameter(o);s!==void 0&&(n.parameters[s]=n[o])}return n}_enumSamplerParameter(e){return Ma[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},o=this.images[t];return o&&(n.image=o),n}_resolveBufferView(e,t){let n=e.buffer,o=this.buffers[n].arrayBuffer,s=this.buffers[n].byteOffset||0;return e.byteOffset&&(s+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(o,s,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function On(r,e){return new Wt().postProcess(r,e)}return Pn(he);})();
|
|
8
8
|
return __exports__;
|
|
9
9
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -1695,7 +1695,7 @@ function processPrimitiveTextures(scenegraph, attributeName, featureTexturePrope
|
|
|
1695
1695
|
}
|
|
1696
1696
|
|
|
1697
1697
|
// dist/lib/utils/version.js
|
|
1698
|
-
var VERSION = true ? "4.4.0-alpha.
|
|
1698
|
+
var VERSION = true ? "4.4.0-alpha.18" : "latest";
|
|
1699
1699
|
|
|
1700
1700
|
// dist/lib/parsers/parse-gltf.js
|
|
1701
1701
|
var import_loader_utils7 = require("@loaders.gl/loader-utils");
|
|
@@ -2982,8 +2982,7 @@ async function loadImage(gltf, image, index, options, context) {
|
|
|
2982
2982
|
const strictOptions = options;
|
|
2983
2983
|
const gltfOptions = {
|
|
2984
2984
|
...strictOptions,
|
|
2985
|
-
core: { ...strictOptions == null ? void 0 : strictOptions.core, mimeType: image.mimeType }
|
|
2986
|
-
basis: strictOptions.basis || { format: (0, import_textures.selectSupportedBasisFormat)() }
|
|
2985
|
+
core: { ...strictOptions == null ? void 0 : strictOptions.core, mimeType: image.mimeType }
|
|
2987
2986
|
};
|
|
2988
2987
|
let parsedImage = await (0, import_loader_utils7.parseFromContext)(arrayBuffer, [import_images4.ImageLoader, import_textures.BasisLoader], gltfOptions, context);
|
|
2989
2988
|
if (parsedImage && parsedImage[0]) {
|