@loaders.gl/gltf 4.3.0-alpha.6 → 4.3.0-alpha.8

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.
Files changed (34) hide show
  1. package/dist/dist.dev.js +383 -66
  2. package/dist/dist.min.js +1 -1
  3. package/dist/glb-writer.js +1 -1
  4. package/dist/gltf-writer.d.ts.map +1 -1
  5. package/dist/gltf-writer.js +4 -2
  6. package/dist/index.cjs +266 -16
  7. package/dist/index.cjs.map +3 -3
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/lib/api/gltf-extensions.d.ts +4 -1
  12. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  13. package/dist/lib/api/gltf-extensions.js +11 -0
  14. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  15. package/dist/lib/api/gltf-scenegraph.js +1 -2
  16. package/dist/lib/encoders/encode-gltf.d.ts +3 -1
  17. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -1
  18. package/dist/lib/encoders/encode-gltf.js +3 -3
  19. package/dist/lib/extensions/EXT_mesh_features.d.ts +17 -1
  20. package/dist/lib/extensions/EXT_mesh_features.d.ts.map +1 -1
  21. package/dist/lib/extensions/EXT_mesh_features.js +109 -0
  22. package/dist/lib/extensions/EXT_structural_metadata.d.ts +19 -0
  23. package/dist/lib/extensions/EXT_structural_metadata.d.ts.map +1 -1
  24. package/dist/lib/extensions/EXT_structural_metadata.js +168 -0
  25. package/dist/lib/utils/version.js +1 -1
  26. package/package.json +8 -8
  27. package/src/glb-writer.ts +1 -1
  28. package/src/gltf-writer.ts +8 -4
  29. package/src/index.ts +6 -0
  30. package/src/lib/api/gltf-extensions.ts +15 -1
  31. package/src/lib/api/gltf-scenegraph.ts +1 -3
  32. package/src/lib/encoders/encode-gltf.ts +11 -4
  33. package/src/lib/extensions/EXT_mesh_features.ts +130 -0
  34. package/src/lib/extensions/EXT_structural_metadata.ts +232 -1
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 Tn=Object.create;var Be=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var In=Object.getPrototypeOf,Rn=Object.prototype.hasOwnProperty;var bn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)Be(r,t,{get:e[t],enumerable:!0})},ue=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Fn(e))!Rn.call(r,s)&&s!==t&&Be(r,s,{get:()=>e[s],enumerable:!(n=yn(e,s))||n.enumerable});return r},me=(r,e,t)=>(ue(r,e,"default"),t&&ue(t,e,"default")),Gn=(r,e,t)=>(t=r!=null?Tn(In(r)):{},ue(e||!r||!r.__esModule?Be(t,"default",{value:r,enumerable:!0}):t,r)),Dn=r=>ue(Be({},"__esModule",{value:!0}),r);var Qt=bn((aa,Xt)=>{Xt.exports=globalThis.loaders});var fe={};T(fe,{EXT_FEATURE_METADATA:()=>at,EXT_MESH_FEATURES:()=>tt,EXT_STRUCTURAL_METADATA:()=>st,GLBLoader:()=>Cn,GLBWriter:()=>xn,GLTFLoader:()=>Ne,GLTFScenegraph:()=>d,GLTFWriter:()=>pn,_getMemoryUsageGLTF:()=>fr,postProcessGLTF:()=>Mn});me(fe,Gn(Qt(),1));var rt={};T(rt,{decode:()=>Ts,name:()=>tt});var Yt="4.3.0-alpha.5";async function $(r,e,t,n){return n._parse(r,e,t,n)}function y(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},_n=R.self||R.window||R.global||{},Sn=R.window||R.self||R.global||{},On=R.global||R.self||R.window||{},Ln=R.document||{};var ee=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var kt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Jn=kt&&parseFloat(kt[1])||0;function ve(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function je(r){return globalThis.loaders?.modules?.[r]||null}function wn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.3.0-alpha.5"),globalThis._loadersgl_.version}var Vt=wn();function Wt(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var b={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},la=b.self||b.window||b.global||{},ha=b.window||b.self||b.global||{},pa=b.global||b.self||b.window||{},Ca=b.document||{};var v=typeof process!="object"||String(process)!=="[object process]"||process.browser,de=typeof importScripts=="function",Ea=typeof window<"u"&&typeof window.orientation<"u",Zt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ga=Zt&&parseFloat(Zt[1])||0;var Xe={};async function G(r,e=null,t={},n=null){return e&&(r=qt(r,e,t,n)),Xe[r]=Xe[r]||Hn(r),await Xe[r]}function qt(r,e,t={},n=null){if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:v?t.CDN?(Wt(t.CDN.startsWith("http")),`${t.CDN}/${e}@${Vt}/dist/libs/${n}`):de?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Hn(r){if(r.endsWith("wasm"))return await Pn(r);if(!v)try{let{requireFromFile:t}=globalThis.loaders||{};return await t?.(r)}catch(t){return console.error(t),null}if(de)return importScripts(r);let e=await Nn(r);return Un(e,r)}function Un(r,e){if(!v){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(de)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 Pn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};return v||!e||r.startsWith("http")?await(await fetch(r)).arrayBuffer():await e(r)}async function Nn(r){let{readFileAsText:e}=globalThis.loaders||{};return v||!e||r.startsWith("http")?await(await fetch(r)).text():await e(r)}function $t(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?zt(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?zt(r,0,e):""}function zt(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 Qe(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${$t(r)}"`)}}function te(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 D(r,e){return y(r>=0),y(e>0),r+(e-1)&~(e-1)}function Ye(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+D(n.byteLength,4)}function le(r,e,t,n){let s=D(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 ke(r,e,t,n){let o=new TextEncoder().encode(t);return e=le(r,e,o,n),e}var Kn=globalThis.loaders?.parseImageNode,Ve=typeof Image<"u",We=typeof ImageBitmap<"u",vn=Boolean(Kn),Ze=ee?!0:vn;function er(r){switch(r){case"auto":return We||Ve||Ze;case"imagebitmap":return We;case"image":return Ve;case"data":return Ze;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function tr(){if(We)return"imagebitmap";if(Ve)return"image";if(Ze)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function rr(r){let e=jn(r);if(!e)throw new Error("Not an image");return e}function re(r){switch(rr(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 jn(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 Xn=/^data:image\/svg\+xml/,Qn=/\.svg((\?|#).*)?$/;function he(r){return r&&(Xn.test(r)||Qn.test(r))}function nr(r,e){if(he(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 qe(r,e)}function qe(r,e){if(he(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function pe(r,e,t){let n=nr(r,t),s=self.URL||self.webkitURL,o=typeof n!="string"&&s.createObjectURL(n);try{return await Yn(o||n,e)}finally{o&&s.revokeObjectURL(o)}}async function Yn(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 kn={},sr=!0;async function or(r,e,t){let n;he(t)?n=await pe(r,e,t):n=qe(r,t);let s=e&&e.imagebitmap;return await Vn(n,s)}async function Vn(r,e=null){if((Wn(e)||!sr)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),sr=!1}return await createImageBitmap(r)}function Wn(r){for(let e in r||kn)return!1;return!0}function ir(r){return!$n(r,"ftyp",4)||!(r[8]&96)?null:Zn(r)}function Zn(r){switch(qn(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function qn(r,e,t){return String.fromCharCode(...r.slice(e,t))}function zn(r){return[...r].map(e=>e.charCodeAt(0))}function $n(r,e,t=0){let n=zn(e);for(let s=0;s<n.length;++s)if(n[s]!==r[s+t])return!1;return!0}var _=!1,ne=!0;function H(r){let e=se(r);return ts(e)||ss(e)||rs(e)||ns(e)||es(e)}function es(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=ir(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function ts(r){let e=se(r);return e.byteLength>=24&&e.getUint32(0,_)===2303741511?{mimeType:"image/png",width:e.getUint32(16,_),height:e.getUint32(20,_)}:null}function rs(r){let e=se(r);return e.byteLength>=10&&e.getUint32(0,_)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ne),height:e.getUint16(8,ne)}:null}function ns(r){let e=se(r);return e.byteLength>=14&&e.getUint16(0,_)===16973&&e.getUint32(2,ne)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ne),height:e.getUint32(22,ne)}:null}function ss(r){let e=se(r);if(!(e.byteLength>=3&&e.getUint16(0,_)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=os(),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 os(){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 se(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 ar(r,e){let{mimeType:t}=H(r)||{},n=globalThis.loaders?.parseImageNode;return y(n),await n(r,t)}async function cr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=is(s),a;switch(i){case"imagebitmap":a=await or(r,e,o);break;case"image":a=await pe(r,e,o);break;case"data":a=await ar(r,e);break;default:y(!1)}return s==="data"&&(a=re(a)),a}function is(r){switch(r){case"auto":case"data":return tr();default:return er(r),r}}var as=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],cs=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],As={image:{type:"auto",decode:!0}},ze={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:Yt,mimeTypes:cs,extensions:as,parse:cr,tests:[r=>Boolean(H(new DataView(r)))],options:As};var $e={};function et(r){if($e[r]===void 0){let e=ee?us(r):fs(r);$e[r]=e}return $e[r]}function fs(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 us(r){switch(r){case"image/avif":case"image/webp":return Bs(r);default:return!0}}function Bs(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function p(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Ce={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ee={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var ms=1.33,Ar=["SCALAR","VEC2","VEC3","VEC4"],ds=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],ls=new Map(ds),hs={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ps={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Cs={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function ge(r){return Ar[r-1]||Ar[0]}function j(r){let e=ls.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function X(r,e){let t=Cs[r.componentType],n=hs[r.type],s=ps[r.componentType],o=r.count*n,i=r.count*n*s;p(i>=0&&i<=e.byteLength);let a=Ee[r.componentType],c=Ce[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function fr(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:A}=a.image;return i+c*A},0);return s+Math.ceil(4*o*ms)}function ur(r,e,t){let n=r.bufferViews[t];p(n);let s=n.buffer,o=e[s];p(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Br(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:A,componentByteSize:f,numberOfComponentsInElement:u}=X(n,s),B=f*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,A);let l=new c(A);for(let h=0;h<n.count;h++){let g=new c(o,a+h*m,u);l.set(g,h*u)}return l}function Es(){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||Es(),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];p(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Br(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 p(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return p(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=H(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;p(Number.isFinite(s)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let o={buffer:t,byteOffset:n,byteLength:s};return this.byteLength+=D(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:ge(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:j(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(){this.gltf.buffers=[];let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=Ye(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]}_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 mr(r){return(r%1+1)%1}var dr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},gs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},lr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function oe(r,e){return lr[e]*dr[r]}function Q(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=dr[e],o=gs[t],i=lr[t],a=n*s,c=a*i,A=r.buffer,f=r.byteOffset;return f%i!==0&&(A=new Uint8Array(A).slice(f,f+c).buffer,f=0),new o(A,f,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 A=i.images?.[c]?.mimeType,f=r.gltf.images?.[c];if(f&&typeof f.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=xs(f,A,o,B,e.channels);u.push(m)}return u}}return[]}function xe(r,e,t,n,s){if(!t?.length)return;let o=[];for(let f of t){let u=n.findIndex(B=>B===f);u===-1&&(u=n.push(f)-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),A=r.addAccessor(c,{size:1,componentType:j(i),count:i.length});s.attributes[e]=A}function xs(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 A=Ms(i,a,r,c),f=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=A+B.offset,l=re(r);if(l.data.length<=m)throw new Error(`${l.data.length} <= ${m}`);let h=l.data[m];f|=h<<B.shift}return f}function Ms(r,e,t,n=1){let s=t.width,o=mr(r)*(s-1),i=Math.round(o),a=t.height,c=mr(e)*(a-1),A=Math.round(c),f=t.components?t.components:n;return(A*s+i)*f}function Me(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 A=a/s,f=c/s;o.push(r.slice(A,A+f))}return o}function Te(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 ye(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 A=e.subarray(i,c+i),f=o.decode(A);s.push(f),i+=c}}return s}return[]}var hr="EXT_mesh_features",tt=hr;async function Ts(r,e){let t=new d(r);ys(t,e)}function ys(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let s of n.primitives)Fs(r,s,e)}function Fs(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[hr]?.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}}var it={};T(it,{decode:()=>Is,name:()=>st});var nt="EXT_structural_metadata",st=nt;async function Is(r,e){let t=new d(r);Rs(t,e)}function Rs(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(nt);t&&(e.gltf?.loadImages&&bs(r,t),Gs(r,t))}function bs(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)_s(r,t,o,e)}function Gs(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=Ds(s,o);i&&Os(r,t,i)}}function Ds(r,e){for(let t of r)if(t.class===e)return t;return null}function _s(r,e,t,n){if(!e)return;let o=t.extensions?.[nt]?.propertyTextures;if(o)for(let i of o){let a=e[i];Ss(r,a,t,n)}}function Ss(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,A=k(r,a,t);A!==null&&(xe(r,i,A,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Os(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=Ls(r,e,i,s,a);a.data=c}}}function Ls(r,e,t,n,s){let o=[],i=s.values,a=r.getTypedArrayForBufferView(i),c=Js(r,t,s,n),A=ws(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Hs(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=ye(n,a,c,A);break}case"ENUM":{o=Us(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function Js(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?Q(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function ws(r,e,t){return typeof e.stringOffsets<"u"?Q(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Hs(r,e,t,n){let s=r.array,o=r.count,i=oe(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=Y(t,r.type,r.componentType,a):c=t,s?n?Me(c,e,n,t.length,i):o?Te(c,e,o):[]:c}function Us(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=oe(e.type,a),A=n.byteLength/c,f=Y(n,e.type,a,A);if(f||(f=n),e.array){if(s)return Ps({valuesData:f,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?Ns(f,t,u,i):[]}return ot(f,0,t,i)}function Ps(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let A=n[c],f=n[c+1]-n[c];if(f+A>s)break;let u=A/o,B=f/o,m=ot(e,u,B,i);a.push(m)}return a}function Ns(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=ot(r,i,t,n);s.push(a)}return s}function ot(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=Ks(n,i);a?s.push(a.name):s.push("")}return s}function Ks(r,e){for(let t of r.values)if(t.value===e)return t;return null}var ct={};T(ct,{decode:()=>vs,name:()=>at});var pr="EXT_feature_metadata",at=pr;async function vs(r,e){let t=new d(r);js(t,e)}function js(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(pr);t&&(e.gltf?.loadImages&&Xs(r,t),Qs(r,t))}function Xs(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=ks(s,o);a&&Ws(r,a,i)}}function Qs(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=Ys(s,o);i&&Vs(r,t,i)}}function Ys(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function ks(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function Vs(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=Zs(r,e,i,s,a);a.data=c}}}function Ws(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 Zs(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=qs(r,t,s,n),A=zs(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=ye(n,a,c,A):$s(t)&&(o=eo(t,n,a,c)),o}function qs(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?Q(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function zs(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?Q(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function $s(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 eo(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=oe(i,a),A=t.byteLength/c,f=Y(t,i,a,A);return s?n?Me(f,e,n,t.length,c):o?Te(f,e,o):[]:f}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)ro(r,t,e,s,i);return s}function ro(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=k(r,o,s);i&&xe(r,e,i,n,s)}var J="4.3.0-alpha.5";var Cr="4.3.0-alpha.5";var Fe={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Er;async function ft(r){ve(r.modules);let e=je("basis");return e||(Er||=no(r),await Er)}async function no(r){let e=null,t=null;return[e,t]=await Promise.all([await G(Fe.TRANSCODER,"textures",r),await G(Fe.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await so(e,t)}function so(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 At;async function ut(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(At=At||oo(r),await At)}async function oo(r){let e=null,t=null;return[e,t]=await Promise.all([await G(Fe.ENCODER,"textures",r),await G(Fe.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await io(e,t)}function io(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 U={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 ao=["","WEBKIT_","MOZ_"],gr={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"},Ie=null;function xr(r){if(!Ie){r=r||co()||void 0,Ie=new Set;for(let e of ao)for(let t in gr)if(r&&r.getExtension(`${e}${t}`)){let n=gr[t];Ie.add(n)}}return Ie}function co(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var M=[171,75,84,88,32,50,48,187,13,10,26,10];function Mr(r){let e=new Uint8Array(r);return!(e.byteLength<M.length||e[0]!==M[0]||e[1]!==M[1]||e[2]!==M[2]||e[3]!==M[3]||e[4]!==M[4]||e[5]!==M[5]||e[6]!==M[6]||e[7]!==M[7]||e[8]!==M[8]||e[9]!==M[9]||e[10]!==M[10]||e[11]!==M[11])}var Ao={etc1:{basisFormat:0,compressed:!0,format:U.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:U.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:U.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:U.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:U.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:U.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 mt(r,e){if(e.basis.containerFormat==="auto"){if(Mr(r)){let n=await ut(e);return Tr(n.KTX2File,r,e)}let{BasisFile:t}=await ft(e);return Bt(t,r,e)}switch(e.basis.module){case"encoder":let t=await ut(e);switch(e.basis.containerFormat){case"ktx2":return Tr(t.KTX2File,r,e);case"basis":default:return Bt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ft(e);return Bt(n,r,e)}}function Bt(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 A=0;A<a;A++)c.push(fo(n,i,A,t));o.push(c)}return o}finally{n.close(),n.delete()}}function fo(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:A}=yr(n,i),f=r.getImageTranscodedSizeInBytes(e,t,A),u=new Uint8Array(f);if(!r.transcodeImage(u,e,t,A,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Tr(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(uo(n,i,t));return[o]}finally{n.close(),n.delete()}}function uo(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=yr(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),f=new Uint8Array(A);if(!r.transcodeImage(f,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:f,compressed:i,levelSize:A,hasAlpha:n,format:a}}function yr(r,e){let t=r&&r.basis&&r.basis.format;return t==="auto"&&(t=Re()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),Ao[t]}function Re(){let r=xr();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 Fr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Cr,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"}}},dt={...Fr,parse:mt};var V=!0,Ir=1735152710,pt=12,be=8,Bo=1313821514,mo=5130562,lo=0,ho=0,po=1;function Co(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 Rr(r,e=0,t={}){let n=new DataView(r),{magic:s=Ir}=t,o=n.getUint32(e,!1);return o===s||o===Ir}function Ge(r,e,t=0,n={}){let s=new DataView(e),o=Co(s,t+0),i=s.getUint32(t+4,V),a=s.getUint32(t+8,V);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=pt,r.version){case 1:return Eo(r,s,t);case 2:return go(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function Eo(r,e,t){y(r.header.byteLength>pt+be);let n=e.getUint32(t+0,V),s=e.getUint32(t+4,V);return t+=be,y(s===lo),lt(r,e,t,n),t+=n,t+=ht(r,e,t,r.header.byteLength),t}function go(r,e,t,n){return y(r.header.byteLength>pt+be),xo(r,e,t,n),t+r.header.byteLength}function xo(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,V),o=e.getUint32(t+4,V);switch(t+=be,o){case Bo:lt(r,e,t,s);break;case mo:ht(r,e,t,s);break;case ho:n.strict||lt(r,e,t,s);break;case po:n.strict||ht(r,e,t,s);break;default:break}t+=D(s,4)}return t}function lt(r,e,t,n){let s=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(s);return r.json=JSON.parse(i),D(n,4)}function ht(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),D(n,4)}function Ct(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=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 gt={};T(gt,{decode:()=>Oo,name:()=>So});var Mo="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",To="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",yo=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]),Fo=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]),Io={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Ro={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function br(r,e,t,n,s,o="NONE"){let i=await bo();_o(i,i.exports[Ro[s]],r,e,t,n,i.exports[Io[o||"NONE"]])}var Et;async function bo(){return Et||(Et=Go()),Et}async function Go(){let r=Mo;WebAssembly.validate(yo)&&(r=To,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(Do(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function Do(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?Fo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function _o(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,A=a(c*s),f=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,f);let B=e(A,n,s,f,o.length);if(B===0&&i&&i(A,c,s),t.set(u.subarray(A,A+n*s)),a(A-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var De="EXT_meshopt_compression",So=De;async function Oo(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(Lo(t,s));await Promise.all(n),t.removeExtension(De)}async function Lo(r,e){let t=r.getObjectExtension(e,De);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:A}=t,f=r.gltf.buffers[A],u=new Uint8Array(f.arrayBuffer,f.byteOffset+n,s),B=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await br(B,i,o,u,a,c),r.removeObjectExtension(e,De)}}var xt={};T(xt,{name:()=>Jo,preprocess:()=>wo});var W="EXT_texture_webp",Jo=W;function wo(r,e){let t=new d(r);if(!et("image/webp")){if(t.getRequiredExtensions().includes(W))throw new Error(`gltf: Required extension ${W} not supported by browser`);return}let{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,W);o&&(s.source=o.source),t.removeObjectExtension(s,W)}t.removeExtension(W)}var Mt={};T(Mt,{name:()=>Ho,preprocess:()=>Uo});var _e="KHR_texture_basisu",Ho=_e;function Uo(r,e){let t=new d(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,_e);o&&(s.source=o.source,t.removeObjectExtension(s,_e))}t.removeExtension(_e)}var Gt={};T(Gt,{decode:()=>ei,encode:()=>ti,name:()=>zo,preprocess:()=>$o});var Gr="4.3.0-alpha.5";var Dr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Gr,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}}};function _r(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 Tt(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 A=0;A<c;A+=3){let f=a[A],u=a[A+1],B=a[A+2];e=f<e?f:e,t=u<t?u:t,n=B<n?B:n,s=f>s?f:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function yt(r,e,t){let n=_r(e.value),s=t||Sr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function Sr(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 Lr(r,e,t){let n=Jr(e.metadata),s=[],o=Po(e.attributes);for(let i in r){let a=r[i],c=Or(i,a,o[i]);s.push(c)}if(t){let i=Or("indices",t);s.push(i)}return{fields:s,metadata:n}}function Po(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Or(r,e,t){let n=t?Jr(t.metadata):void 0;return yt(r,e,n)}function Jr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var wr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},No={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Ko=4,ie=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),A=Tt(c.attributes),f=Lr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:A},...c,schema:f}}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:A}=a;s[i]={value:c,size:A,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Ko,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),Xo(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=No[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=vo(this.draco,n),A,f=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,f),A=new n(this.draco.HEAPF32.buffer,f,i).slice()}finally{this.draco._free(f)}return{value:A,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 wr)if(this.draco[i]===s)return wr[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=jo(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 vo(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 jo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function Xo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Qo="1.5.6",Yo="1.4.1",Ft=`https://www.gstatic.com/draco/versioned/decoders/${Qo}`,x={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},It={[x.DECODER]:`${Ft}/${x.DECODER}`,[x.DECODER_WASM]:`${Ft}/${x.DECODER_WASM}`,[x.FALLBACK_DECODER]:`${Ft}/${x.FALLBACK_DECODER}`,[x.ENCODER]:`https://raw.githubusercontent.com/google/draco/${Yo}/javascript/${x.ENCODER}`},Rt;async function Hr(r){let e=r.modules||{};return e.draco3d?Rt||=e.draco3d.createDecoderModule({}).then(t=>({draco:t})):Rt||=ko(r),await Rt}async function ko(r){let e,t;switch(r.draco&&r.draco.decoderType){case"js":e=await G(It[x.FALLBACK_DECODER],"draco",r,x.FALLBACK_DECODER);break;case"wasm":default:[e,t]=await Promise.all([await G(It[x.DECODER],"draco",r,x.DECODER),await G(It[x.DECODER_WASM],"draco",r,x.DECODER_WASM)])}return e=e||globalThis.DracoDecoderModule,await Vo(e,t)}function Vo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Ur={...Dr,parse:Wo};async function Wo(r,e){let{draco:t}=await Hr(e),n=new ie(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Pr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let s=bt(n);e[t]=s}}return e}function bt(r){let{buffer:e,size:t,count:n}=Zo(r);return{value:e,size:t,byteOffset:0,count:n,type:ge(t),componentType:j(e)}}function Zo(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=qo(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function qo(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var w="KHR_draco_mesh_compression",zo=w;function $o(r,e,t){let n=new d(r);for(let s of Nr(n))n.getObjectExtension(s,w)}async function ei(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new d(r),s=[];for(let o of Nr(n))n.getObjectExtension(o,w)&&s.push(ri(n,o,e,t));await Promise.all(s),n.removeExtension(w)}function ti(r,e={}){let t=new d(r);for(let n of t.json.meshes||[])ni(n,e),t.addRequiredExtension(w)}async function ri(r,e,t,n){let s=r.getObjectExtension(e,w);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=te(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await $(i,Ur,a,n),A=Pr(c.attributes);for(let[f,u]of Object.entries(A))if(f in e.attributes){let B=e.attributes[f],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=A,c.indices&&(e.indices=bt(c.indices)),r.removeObjectExtension(e,w),si(e)}function ni(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:{[w]:{bufferView:c,attributes:a}}}]}}function si(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Nr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var wt={};T(wt,{decode:()=>xi,name:()=>Ci});var mf=1/Math.PI*180,df=1/180*Math.PI,oi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...oi}};var C=globalThis.mathgl.config;function Kr(r,{precision:e=C.precision}={}){return r=ii(r),"".concat(parseFloat(r.toPrecision(e)))}function Z(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Dt(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if(Z(r)&&Z(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!Dt(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)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function ii(r){return Math.round(r/C.EPSILON)*C.EPSILON}function ai(r){function e(){var t=Reflect.construct(r,Array.from(arguments));return Object.setPrototypeOf(t,Object.getPrototypeOf(this)),t}return e.prototype=Object.create(r.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r,e}var q=class extends ai(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:Z(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?", ":"")+Kr(this[n],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(t,"]")}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Dt(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(C.debug&&!this.validate())throw new Error("math.gl: ".concat(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 ci(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 E(r){if(!Number.isFinite(r))throw new Error("Invalid number ".concat(JSON.stringify(r)));return r}function vr(r,e,t=""){if(C.debug&&!ci(r,e))throw new Error("math.gl: ".concat(t," some fields set to invalid numbers'"));return r}function _t(r,e){if(!r)throw new Error("math.gl assertion ".concat(e))}var Se=class extends q{get x(){return this[0]}set x(e){this[0]=E(e)}get y(){return this[1]}set y(e){this[1]=E(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 E(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return E(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 _t(e>=0&&e<this.ELEMENTS,"index is out of range"),E(this[e])}setComponent(e,t){return _t(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 z=typeof Float32Array<"u"?Float32Array:Array;var Ff=Math.PI/180;function Bi(){let r=new z(2);return z!=Float32Array&&(r[0]=0,r[1]=0),r}function Xr(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 If=function(){let r=Bi();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 Qr(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 Yr(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 kr(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 mi(){let r=new z(3);return z!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function di(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function Vr(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 Wr(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 Oe(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 Zr(r,e,t){let n=t[0],s=t[1],o=t[2],i=t[3],a=e[0],c=e[1],A=e[2],f=s*A-o*c,u=o*a-n*A,B=n*c-s*a,m=s*B-o*u,l=o*f-n*B,h=n*u-s*f,g=i*2;return f*=g,u*=g,B*=g,m*=2,l*=2,h*=2,r[0]=a+f+m,r[1]=c+u+l,r[2]=A+B+h,r}function qr(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 zr(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 $r(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 en(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)),A=c&&di(r,e)/c;return Math.acos(Math.min(Math.max(A,-1),1))}var Gf=function(){let r=mi();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 St=[0,0,0],Le,P=class extends Se{static get ZERO(){return Le||(Le=new P(0,0,0),Object.freeze(Le)),Le}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&Z(e)?this.copy(e):(C.debug&&(E(e),E(t),E(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&&(E(e.x),E(e.y),E(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]=E(e)}angle(e){return en(this,e)}cross(e){return Vr(this,this,e),this.check()}rotateX({radians:e,origin:t=St}){return qr(this,this,t,e),this.check()}rotateY({radians:e,origin:t=St}){return zr(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=St}){return $r(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return Wr(this,this,e),this.check()}transformAsVector(e){return Qr(this,this,e),this.check()}transformByMatrix3(e){return Oe(this,this,e),this.check()}transformByMatrix2(e){return Yr(this,this,e),this.check()}transformByQuaternion(e){return Zr(this,this,e),this.check()}};var Je=class extends q{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+=" ".concat(this[n*this.RANK+t])}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=" ".concat(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]=E(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 tn(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 rn(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],A=e[7],f=e[8],u=f*i-a*A,B=-f*o+a*c,m=A*o-i*c,l=t*u+n*B+s*m;return l?(l=1/l,r[0]=u*l,r[1]=(-f*n+s*A)*l,r[2]=(a*n-s*i)*l,r[3]=B*l,r[4]=(f*t-s*c)*l,r[5]=(-a*t+s*o)*l,r[6]=m*l,r[7]=(-A*t+n*c)*l,r[8]=(i*t-n*o)*l,r):null}function nn(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],A=r[8];return e*(A*o-i*c)+t*(-A*s+i*a)+n*(c*s-o*a)}function Ot(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],m=t[1],l=t[2],h=t[3],g=t[4],I=t[5],L=t[6],K=t[7],Ke=t[8];return r[0]=B*n+m*i+l*A,r[1]=B*s+m*a+l*f,r[2]=B*o+m*c+l*u,r[3]=h*n+g*i+I*A,r[4]=h*s+g*a+I*f,r[5]=h*o+g*c+I*u,r[6]=L*n+K*i+Ke*A,r[7]=L*s+K*a+Ke*f,r[8]=L*o+K*c+Ke*u,r}function sn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=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+A,r[7]=B*s+m*a+f,r[8]=B*o+m*c+u,r}function on(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=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]=A,r[7]=f,r[8]=u,r}function Lt(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 an(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=t+t,a=n+n,c=s+s,A=t*i,f=n*i,u=n*a,B=s*i,m=s*a,l=s*c,h=o*i,g=o*a,I=o*c;return r[0]=1-u-l,r[3]=f-I,r[6]=B+g,r[1]=f+I,r[4]=1-A-l,r[7]=m-h,r[2]=B-g,r[5]=m+h,r[8]=1-A-u,r}var Jt;(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"})(Jt||(Jt={}));var li=Object.freeze([1,0,0,0,1,0,0,0,1]),O=class extends Je{static get IDENTITY(){return pi()}static get ZERO(){return hi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Jt}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(li)}fromObject(e){return this.check()}fromQuaternion(e){return an(this,e),this.check()}set(e,t,n,s,o,i,a,c,A){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]=A,this.check()}setRowMajor(e,t,n,s,o,i,a,c,A){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]=A,this.check()}determinant(){return nn(this)}transpose(){return tn(this,this),this.check()}invert(){return rn(this,this),this.check()}multiplyLeft(e){return Ot(this,e,this),this.check()}multiplyRight(e){return Ot(this,this,e),this.check()}rotate(e){return on(this,this,e),this.check()}scale(e){return Array.isArray(e)?Lt(this,this,e):Lt(this,this,[e,e]),this.check()}translate(e){return sn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=Xr(t||[-0,-0],e,this);break;case 3:n=Oe(t||[-0,-0,-0],e,this);break;case 4:n=kr(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return vr(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)}},we,He=null;function hi(){return we||(we=new O([0,0,0,0,0,0,0,0,0]),Object.freeze(we)),we}function pi(){return He||(He=new O,Object.freeze(He)),He}var Pe="KHR_texture_transform",Ci=Pe,Ue=new P,Ei=new O,gi=new O;async function xi(r,e){if(!new d(r).hasExtension(Pe)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)Mi(o,r)}function Mi(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?.[Pe]&&Ti(e,r,o,s)}function Ti(r,e,t,n){let s=yi(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&&Fi(r,a,s)}}function yi(r,e){let t=r.extensions?.[Pe],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=bi(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Fi(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){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:A,byteOffset:f}=r.buffers[c.buffer],u=(f||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=X(a,c),l=Ee[a.componentType],h=Ce[a.type],g=c.byteStride||l*h,I=new Float32Array(m);for(let L=0;L<a.count;L++){let K=new B(A,u+L*g,2);Ue.set(K[0],K[1],1),Ue.transformByMatrix3(o),I.set([Ue[0],Ue[1]],L*h)}n===s?Ii(a,c,r.buffers,I):Ri(s,a,e,r,I)}}}}function Ii(r,e,t,n){r.componentType=5126,t.push({arrayBuffer:n.buffer,byteOffset:0,byteLength:n.buffer.byteLength}),e.buffer=t.length-1,e.byteLength=n.buffer.byteLength,e.byteOffset=0,delete e.byteStride}function Ri(r,e,t,n,s){n.buffers.push({arrayBuffer:s.buffer,byteOffset:0,byteLength:s.buffer.byteLength});let o=n.json.bufferViews;if(!o)return;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 bi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new O().set(1,0,0,0,1,0,e[0],e[1],1),o=Ei.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=gi.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Ht={};T(Ht,{decode:()=>Di,encode:()=>_i,name:()=>Gi});var N="KHR_lights_punctual",Gi=N;async function Di(r){let e=new d(r),{json:t}=e,n=e.getExtension(N);n&&(e.json.lights=n.lights,e.removeExtension(N));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,N);o&&(s.light=o.light),e.removeObjectExtension(s,N)}}async function _i(r){let e=new d(r),{json:t}=e;if(t.lights){let n=e.addExtension(N);p(!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,N,n)}delete e.json.lights}}var Ut={};T(Ut,{decode:()=>Oi,encode:()=>Li,name:()=>Si});var ae="KHR_materials_unlit",Si=ae;async function Oi(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,ae);e.removeExtension(ae)}function Li(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,ae,{}),e.addExtension(ae))}var Pt={};T(Pt,{decode:()=>wi,encode:()=>Hi,name:()=>Ji});var ce="KHR_techniques_webgl",Ji=ce;async function wi(r){let e=new d(r),{json:t}=e,n=e.getExtension(ce);if(n){let s=Ui(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,ce);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=Pi(o.technique,e)),e.removeObjectExtension(o,ce)}e.removeExtension(ce)}}async function Hi(r,e){}function Ui(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 Pi(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 cn=[it,rt,gt,xt,Mt,Gt,Ht,Ut,Pt,wt,ct];function An(r,e={},t){let n=cn.filter(s=>un(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function fn(r,e={},t){let n=cn.filter(s=>un(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function un(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Nt="KHR_binary_glTF";function Bn(r){let e=new d(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Nt);s&&Object.assign(n,s),e.removeObjectExtension(n,Nt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Nt)}var mn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Ki={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Kt=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),Bn(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 mn)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 mn)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=Ki[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 dn(r,e={}){return new Kt().normalize(r,e)}async function ln(r,e,t=0,n,s){return vi(r,e,t,n),dn(r,{normalize:n?.gltf?.normalize}),An(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await ji(r,n,s),n?.gltf?.loadImages&&await Xi(r,n,s),await fn(r,n,s),r}function vi(r,e,t,n){if(n.uri&&(r.baseUri=n.uri),e instanceof ArrayBuffer&&!Rr(e,t,n)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=Qe(e);else if(e instanceof ArrayBuffer){let i={};t=Ge(i,e,t,n.glb),p(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else p(!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 ji(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;p(i);let a=Ct(o.uri,e),A=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:A,byteOffset:0,byteLength:A.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function Xi(r,e,t){let n=Qi(r),s=r.json.images||[],o=[];for(let i of n)o.push(Yi(r,s[i],i,e,t));return await Promise.all(o)}function Qi(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 Yi(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let a=Ct(e.uri,n),{fetch:c}=s;o=await(await c(a)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let a=ur(r.json,r.buffers,e.bufferView);o=te(a.buffer,a.byteOffset,a.byteLength)}p(o,"glTF image has no data");let i=await $(o,[ze,dt],{...n,mimeType:e.mimeType,basis:n.basis||{format:Re()}},s);i&&i[0]&&(i={compressed:!0,mipmaps:!1,width:i[0].width,height:i[0].height,data:i[0]}),r.images=r.images||[],r.images[t]=i}var Ne={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:J,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ki,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0},log:console}};async function ki(r,e={},t){e={...Ne.options,...e},e.gltf={...Ne.options.gltf,...e.gltf};let{byteOffset:n=0}=e;return await ln({},r,n,e,t)}var Vi=1179937895,Wi=1313821514,Zi=5130562,S=!0;function Ae(r,e,t=0,n={}){let{magic:s=Vi,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 A=t+8;t+=12;let f=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,Wi,S)),t+=8;let u=JSON.stringify(i);if(t=ke(e,t,u,4),e){let B=t-f-8;e.setUint32(f+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,Zi,S)),t+=8,t=le(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,S)}}if(e){let B=t-c;e.setUint32(A,B,S)}return t}function vt(r,e,t,n){return qi(r),Ae(r,e,t,n)}function qi(r,{firstBuffer:e=0}={}){if(r.buffers&&r.buffers.length>e)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var pn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>hn(r,e),encodeSync:hn};function hn(r,e={}){let{byteOffset:t=0}=e,n=vt(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return vt(r,o,t,e),s}var Cn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:zi,parseSync:En,options:{glb:{strict:!1}}};async function zi(r,e){return En(r,e)}function En(r,e){let{byteOffset:t=0}=e||{},n={};return Ge(n,r,t,e?.glb),n}var xn={name:"GLB",id:"glb",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>gn(r,e),encodeSync:gn};function gn(r,e){let{byteOffset:t=0}=e,n=Ae(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return Ae(r,o,t,e),s}var $i={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ea={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},ta={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},ra={[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 na(){return{id:"default-sampler",parameters:ra}}function sa(r){return ea[r]}function oa(r){return $i[r]}var jt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return p(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=sa(e.componentType),s=oa(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:A}=X(i,i.bufferView),f=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=a.arrayBuffer.slice(f,f+A);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,f,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):na(),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 ta[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 Mn(r,e){return new jt().postProcess(r,e)}return Dn(fe);})();
7
+ "use strict";var __exports__=(()=>{var bn=Object.create;var de=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var Gn=Object.getPrototypeOf,_n=Object.prototype.hasOwnProperty;var Sn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),M=(r,e)=>{for(var t in e)de(r,t,{get:e[t],enumerable:!0})},me=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Dn(e))!_n.call(r,s)&&s!==t&&de(r,s,{get:()=>e[s],enumerable:!(n=Rn(e,s))||n.enumerable});return r},le=(r,e,t)=>(me(r,e,"default"),t&&me(t,e,"default")),On=(r,e,t)=>(t=r!=null?bn(Gn(r)):{},me(e||!r||!r.__esModule?de(t,"default",{value:r,enumerable:!0}):t,r)),Ln=r=>me(de({},"__esModule",{value:!0}),r);var Wt=Sn((Fa,Vt)=>{Vt.exports=globalThis.loaders});var Be={};M(Be,{EXT_FEATURE_METADATA:()=>ut,EXT_MESH_FEATURES:()=>ot,EXT_STRUCTURAL_METADATA:()=>ct,GLBLoader:()=>Tn,GLBWriter:()=>Fn,GLTFLoader:()=>je,GLTFScenegraph:()=>d,GLTFWriter:()=>xn,_getMemoryUsageGLTF:()=>dr,createExtMeshFeatures:()=>it,createExtStructuralMetadata:()=>ft,postProcessGLTF:()=>In});le(Be,On(Wt(),1));var be={};M(be,{createExtMeshFeatures:()=>it,decode:()=>bs,encode:()=>Rs,name:()=>ot});var Zt="4.3.0-alpha.7";async function te(r,e,t,n){return n._parse(r,e,t,n)}function y(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var b={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},wn=b.self||b.window||b.global||{},Jn=b.window||b.self||b.global||{},Hn=b.global||b.self||b.window||{},Un=b.document||{};var re=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var qt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Pn=qt&&parseFloat(qt[1])||0;function Ye(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function ke(r){return globalThis.loaders?.modules?.[r]||null}function Nn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.3.0-alpha.7"),globalThis._loadersgl_.version}var zt=Nn();function $t(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var R={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Oa=R.self||R.window||R.global||{},La=R.window||R.self||R.global||{},wa=R.global||R.self||R.window||{},Ja=R.document||{};var X=typeof process!="object"||String(process)!=="[object process]"||process.browser,pe=typeof importScripts=="function",Ha=typeof window<"u"&&typeof window.orientation<"u",er=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Ua=er&&parseFloat(er[1])||0;var Ve={};async function D(r,e=null,t={},n=null){return e&&(r=tr(r,e,t,n)),Ve[r]=Ve[r]||Kn(r),await Ve[r]}function tr(r,e,t={},n=null){if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:X?t.CDN?($t(t.CDN.startsWith("http")),`${t.CDN}/${e}@${zt}/dist/libs/${n}`):pe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Kn(r){if(r.endsWith("wasm"))return await Xn(r);if(!X)try{let{requireFromFile:t}=globalThis.loaders||{};return await t?.(r)}catch(t){return console.error(t),null}if(pe)return importScripts(r);let e=await jn(r);return vn(e,r)}function vn(r,e){if(!X){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(pe)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 Xn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};return X||!e||r.startsWith("http")?await(await fetch(r)).arrayBuffer():await e(r)}async function jn(r){let{readFileAsText:e}=globalThis.loaders||{};return X||!e||r.startsWith("http")?await(await fetch(r)).text():await e(r)}function nr(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?rr(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?rr(r,0,e):""}function rr(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 We(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${nr(r)}"`)}}function ne(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 y(r>=0),y(e>0),r+(e-1)&~(e-1)}function Ze(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 he(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 qe(r,e,t,n){let o=new TextEncoder().encode(t);return e=he(r,e,o,n),e}var Qn=globalThis.loaders?.parseImageNode,ze=typeof Image<"u",$e=typeof ImageBitmap<"u",Yn=Boolean(Qn),et=re?!0:Yn;function sr(r){switch(r){case"auto":return $e||ze||et;case"imagebitmap":return $e;case"image":return ze;case"data":return et;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function or(){if($e)return"imagebitmap";if(ze)return"image";if(et)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function ir(r){let e=kn(r);if(!e)throw new Error("Not an image");return e}function se(r){switch(ir(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 kn(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 Vn=/^data:image\/svg\+xml/,Wn=/\.svg((\?|#).*)?$/;function Ce(r){return r&&(Vn.test(r)||Wn.test(r))}function ar(r,e){if(Ce(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 tt(r,e)}function tt(r,e){if(Ce(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function Ee(r,e,t){let n=ar(r,t),s=self.URL||self.webkitURL,o=typeof n!="string"&&s.createObjectURL(n);try{return await Zn(o||n,e)}finally{o&&s.revokeObjectURL(o)}}async function Zn(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 qn={},cr=!0;async function Ar(r,e,t){let n;Ce(t)?n=await Ee(r,e,t):n=tt(r,t);let s=e&&e.imagebitmap;return await zn(n,s)}async function zn(r,e=null){if(($n(e)||!cr)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),cr=!1}return await createImageBitmap(r)}function $n(r){for(let e in r||qn)return!1;return!0}function fr(r){return!ns(r,"ftyp",4)||!(r[8]&96)?null:es(r)}function es(r){switch(ts(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function ts(r,e,t){return String.fromCharCode(...r.slice(e,t))}function rs(r){return[...r].map(e=>e.charCodeAt(0))}function ns(r,e,t=0){let n=rs(e);for(let s=0;s<n.length;++s)if(n[s]!==r[s+t])return!1;return!0}var _=!1,oe=!0;function U(r){let e=ie(r);return os(e)||cs(e)||is(e)||as(e)||ss(e)}function ss(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=fr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function os(r){let e=ie(r);return e.byteLength>=24&&e.getUint32(0,_)===2303741511?{mimeType:"image/png",width:e.getUint32(16,_),height:e.getUint32(20,_)}:null}function is(r){let e=ie(r);return e.byteLength>=10&&e.getUint32(0,_)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,oe),height:e.getUint16(8,oe)}:null}function as(r){let e=ie(r);return e.byteLength>=14&&e.getUint16(0,_)===16973&&e.getUint32(2,oe)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,oe),height:e.getUint32(22,oe)}:null}function cs(r){let e=ie(r);if(!(e.byteLength>=3&&e.getUint16(0,_)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=As(),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 As(){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 ie(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 ur(r,e){let{mimeType:t}=U(r)||{},n=globalThis.loaders?.parseImageNode;return y(n),await n(r,t)}async function Br(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=fs(s),a;switch(i){case"imagebitmap":a=await Ar(r,e,o);break;case"image":a=await Ee(r,e,o);break;case"data":a=await ur(r,e);break;default:y(!1)}return s==="data"&&(a=se(a)),a}function fs(r){switch(r){case"auto":case"data":return or();default:return sr(r),r}}var us=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Bs=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ms={image:{type:"auto",decode:!0}},rt={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:Zt,mimeTypes:Bs,extensions:us,parse:Br,tests:[r=>Boolean(U(new DataView(r)))],options:ms};var nt={};function st(r){if(nt[r]===void 0){let e=re?ls(r):ds(r);nt[r]=e}return nt[r]}function ds(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 ls(r){switch(r){case"image/avif":case"image/webp":return ps(r);default:return!0}}function ps(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 ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xe={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var hs=1.33,mr=["SCALAR","VEC2","VEC3","VEC4"],Cs=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Es=new Map(Cs),gs={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xs={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Ts={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Te(r){return mr[r-1]||mr[0]}function w(r){let e=Es.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function j(r,e){let t=Ts[r.componentType],n=gs[r.type],s=xs[r.componentType],o=r.count*n,i=r.count*n*s;h(i>=0&&i<=e.byteLength);let a=xe[r.componentType],c=ge[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function dr(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:A}=a.image;return i+c*A},0);return s+Math.ceil(4*o*hs)}function lr(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 pr(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:A,componentByteSize:f,numberOfComponentsInElement:u}=j(n,s),B=f*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,A);let l=new c(A);for(let p=0;p<n.count;p++){let g=new c(o,a+p*m,u);l.set(g,p*u)}return l}function Ms(){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||Ms(),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 pr(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=U(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:Te(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:w(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=Ze(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 hr(r){return(r%1+1)%1}var Cr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},ys={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 ae(r,e){return Er[e]*Cr[r]}function Q(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=Cr[e],o=ys[t],i=Er[t],a=n*s,c=a*i,A=r.buffer,f=r.byteOffset;return f%i!==0&&(A=new Uint8Array(A).slice(f,f+c).buffer,f=0),new o(A,f,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 A=i.images?.[c]?.mimeType,f=r.gltf.images?.[c];if(f&&typeof f.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=Fs(f,A,o,B,e.channels);u.push(m)}return u}}return[]}function Me(r,e,t,n,s){if(!t?.length)return;let o=[];for(let f of t){let u=n.findIndex(B=>B===f);u===-1&&(u=n.push(f)-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),A=r.addAccessor(c,{size:1,componentType:w(i),count:i.length});s.attributes[e]=A}function Fs(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 A=Is(i,a,r,c),f=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=A+B.offset,l=se(r);if(l.data.length<=m)throw new Error(`${l.data.length} <= ${m}`);let p=l.data[m];f|=p<<B.shift}return f}function Is(r,e,t,n=1){let s=t.width,o=hr(r)*(s-1),i=Math.round(o),a=t.height,c=hr(e)*(a-1),A=Math.round(c),f=t.components?t.components:n;return(A*s+i)*f}function ye(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 A=a/s,f=c/s;o.push(r.slice(A,A+f))}return o}function Fe(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 Ie(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 A=e.subarray(i,c+i),f=o.decode(A);s.push(f),i+=c}}return s}return[]}var V="EXT_mesh_features",ot=V;async function bs(r,e){let t=new d(r);Ds(t,e)}function Rs(r,e){let t=new d(r);return _s(t,e),t.createBinaryChunk(),t.gltf}function Ds(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let s of n.primitives)Gs(r,s,e)}function Gs(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[V]?.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 _s(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let s of n.primitives)Ss(r,s)}function it(r,e,t,n){e.extensions||(e.extensions={});let s=e.extensions[V];s||(s={featureIds:[]},e.extensions[V]=s);let{featureIds:o}=s,i={featureCount:t.length,propertyTable:n,data:t};o.push(i),r.addObjectExtension(e,V,s)}function Ss(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((s,o)=>{if(s.data){let{accessorKey:i,index:a}=Os(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 A=r.addBufferView(c),f=r.addAccessor(A,{size:1,componentType:w(c),count:c.length});e.attributes[i]=f}})}function Os(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 Re={};M(Re,{createExtStructuralMetadata:()=>ft,decode:()=>Ls,encode:()=>ws,name:()=>ct});var W="EXT_structural_metadata",ct=W;async function Ls(r,e){let t=new d(r);Js(t,e)}function ws(r,e){let t=new d(r);return zs(t,e),t.createBinaryChunk(),t.gltf}function Js(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&Hs(r,t),Us(r,t))}function Hs(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)Ns(r,t,o,e)}function Us(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=Ps(s,o);i&&vs(r,t,i)}}function Ps(r,e){for(let t of r)if(t.class===e)return t;return null}function Ns(r,e,t,n){if(!e)return;let o=t.extensions?.[W]?.propertyTextures;if(o)for(let i of o){let a=e[i];Ks(r,a,t,n)}}function Ks(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,A=k(r,a,t);A!==null&&(Me(r,i,A,c,t),a.data=c,n.dataAttributeNames.push(i))}}function vs(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=Xs(r,e,i,s,a);a.data=c}}}function Xs(r,e,t,n,s){let o=[],i=s.values,a=r.getTypedArrayForBufferView(i),c=js(r,t,s,n),A=Qs(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Ys(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=Ie(n,a,c,A);break}case"ENUM":{o=ks(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function js(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?Q(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function Qs(r,e,t){return typeof e.stringOffsets<"u"?Q(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Ys(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?ye(c,e,n,t.length,i):o?Fe(c,e,o):[]:c}function ks(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),A=n.byteLength/c,f=Y(n,e.type,a,A);if(f||(f=n),e.array){if(s)return Vs({valuesData:f,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?Ws(f,t,u,i):[]}return At(f,0,t,i)}function Vs(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let A=n[c],f=n[c+1]-n[c];if(f+A>s)break;let u=A/o,B=f/o,m=At(e,u,B,i);a.push(m)}return a}function Ws(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=At(r,i,t,n);s.push(a)}return s}function At(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=Zs(n,i);a?s.push(a.name):s.push("")}return s}function Zs(r,e){for(let t of r.values)if(t.value===e)return t;return null}var qs="schemaClassId";function zs(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let s=n.class,o=t.schema?.classes?.[s];n.properties&&o&&$s(n,o,r)}}function $s(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=ro(s,o,t);r.properties[n]=i}}}}function ft(r,e,t=qs){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=eo(e,t,n.schema);let s=to(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(s)-1}function eo(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 to(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 ro(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:s,stringOffsets:o}=oo(r);n.stringOffsets=at(o,t),n.values=at(s,t)}else if(e.type==="SCALAR"&&e.componentType){let s=so(r,e.componentType);n.values=at(s,t)}return n}var no={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function so(r,e){let t=[];for(let s of r)t.push(Number(s));let n=no[e];if(!n)throw new Error("Illegal component type");return new n(t)}function oo(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let A=e.encode(c);n+=A.length,t.push(A)}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:r.buffer,byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var Bt={};M(Bt,{decode:()=>io,name:()=>ut});var gr="EXT_feature_metadata",ut=gr;async function io(r,e){let t=new d(r);ao(t,e)}function ao(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(gr);t&&(e.gltf?.loadImages&&co(r,t),Ao(r,t))}function co(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=uo(s,o);a&&mo(r,a,i)}}function Ao(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=fo(s,o);i&&Bo(r,t,i)}}function fo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function uo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function Bo(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=lo(r,e,i,s,a);a.data=c}}}function mo(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=go(r,o,n);o.data=i}}}function lo(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=po(r,t,s,n),A=ho(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=Ie(n,a,c,A):Co(t)&&(o=Eo(t,n,a,c)),o}function po(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?Q(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function ho(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?Q(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function Co(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 Eo(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=ae(i,a),A=t.byteLength/c,f=Y(t,i,a,A);return s?n?ye(f,e,n,t.length,c):o?Fe(f,e,o):[]:f}function go(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)xo(r,t,e,s,i);return s}function xo(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=k(r,o,s);i&&Me(r,e,i,n,s)}var J="4.3.0-alpha.7";var xr="4.3.0-alpha.7";var De={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Tr;async function dt(r){Ye(r.modules);let e=ke("basis");return e||(Tr||=To(r),await Tr)}async function To(r){let e=null,t=null;return[e,t]=await Promise.all([await D(De.TRANSCODER,"textures",r),await D(De.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Mo(e,t)}function Mo(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 mt;async function lt(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(mt=mt||yo(r),await mt)}async function yo(r){let e=null,t=null;return[e,t]=await Promise.all([await D(De.ENCODER,"textures",r),await D(De.ENCODER_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,KTX2File:i,initializeBasis:a,BasisEncoder:c}=s;a(),n({BasisFile:o,KTX2File:i,BasisEncoder:c})})})}var P={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 Io=["","WEBKIT_","MOZ_"],Mr={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"},Ge=null;function yr(r){if(!Ge){r=r||bo()||void 0,Ge=new Set;for(let e of Io)for(let t in Mr)if(r&&r.getExtension(`${e}${t}`)){let n=Mr[t];Ge.add(n)}}return Ge}function bo(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var T=[171,75,84,88,32,50,48,187,13,10,26,10];function Fr(r){let e=new Uint8Array(r);return!(e.byteLength<T.length||e[0]!==T[0]||e[1]!==T[1]||e[2]!==T[2]||e[3]!==T[3]||e[4]!==T[4]||e[5]!==T[5]||e[6]!==T[6]||e[7]!==T[7]||e[8]!==T[8]||e[9]!==T[9]||e[10]!==T[10]||e[11]!==T[11])}var Ro={etc1:{basisFormat:0,compressed:!0,format:P.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:P.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:P.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:P.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:P.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:P.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 ht(r,e){if(e.basis.containerFormat==="auto"){if(Fr(r)){let n=await lt(e);return Ir(n.KTX2File,r,e)}let{BasisFile:t}=await dt(e);return pt(t,r,e)}switch(e.basis.module){case"encoder":let t=await lt(e);switch(e.basis.containerFormat){case"ktx2":return Ir(t.KTX2File,r,e);case"basis":default:return pt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await dt(e);return pt(n,r,e)}}function pt(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 A=0;A<a;A++)c.push(Do(n,i,A,t));o.push(c)}return o}finally{n.close(),n.delete()}}function Do(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:A}=br(n,i),f=r.getImageTranscodedSizeInBytes(e,t,A),u=new Uint8Array(f);if(!r.transcodeImage(u,e,t,A,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Ir(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(Go(n,i,t));return[o]}finally{n.close(),n.delete()}}function Go(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=br(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),f=new Uint8Array(A);if(!r.transcodeImage(f,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:f,compressed:i,levelSize:A,hasAlpha:n,format:a}}function br(r,e){let t=r&&r.basis&&r.basis.format;return t==="auto"&&(t=_e()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),Ro[t]}function _e(){let r=yr();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 Rr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:xr,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"}}},Ct={...Rr,parse:ht};var Z=!0,Dr=1735152710,xt=12,Se=8,_o=1313821514,So=5130562,Oo=0,Lo=0,wo=1;function Jo(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 Gr(r,e=0,t={}){let n=new DataView(r),{magic:s=Dr}=t,o=n.getUint32(e,!1);return o===s||o===Dr}function Oe(r,e,t=0,n={}){let s=new DataView(e),o=Jo(s,t+0),i=s.getUint32(t+4,Z),a=s.getUint32(t+8,Z);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=xt,r.version){case 1:return Ho(r,s,t);case 2:return Uo(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function Ho(r,e,t){y(r.header.byteLength>xt+Se);let n=e.getUint32(t+0,Z),s=e.getUint32(t+4,Z);return t+=Se,y(s===Oo),Et(r,e,t,n),t+=n,t+=gt(r,e,t,r.header.byteLength),t}function Uo(r,e,t,n){return y(r.header.byteLength>xt+Se),Po(r,e,t,n),t+r.header.byteLength}function Po(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,Z),o=e.getUint32(t+4,Z);switch(t+=Se,o){case _o:Et(r,e,t,s);break;case So:gt(r,e,t,s);break;case Lo:n.strict||Et(r,e,t,s);break;case wo:n.strict||gt(r,e,t,s);break;default:break}t+=G(s,4)}return t}function Et(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 gt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),G(n,4)}function Tt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=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 yt={};M(yt,{decode:()=>qo,name:()=>Zo});var No="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",Ko="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",vo=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]),Xo=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]),jo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Qo={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function _r(r,e,t,n,s,o="NONE"){let i=await Yo();Wo(i,i.exports[Qo[s]],r,e,t,n,i.exports[jo[o||"NONE"]])}var Mt;async function Yo(){return Mt||(Mt=ko()),Mt}async function ko(){let r=No;WebAssembly.validate(vo)&&(r=Ko,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(Vo(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function Vo(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?Xo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function Wo(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,A=a(c*s),f=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,f);let B=e(A,n,s,f,o.length);if(B===0&&i&&i(A,c,s),t.set(u.subarray(A,A+n*s)),a(A-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var Le="EXT_meshopt_compression",Zo=Le;async function qo(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(zo(t,s));await Promise.all(n),t.removeExtension(Le)}async function zo(r,e){let t=r.getObjectExtension(e,Le);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:A}=t,f=r.gltf.buffers[A],u=new Uint8Array(f.arrayBuffer,f.byteOffset+n,s),B=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await _r(B,i,o,u,a,c),r.removeObjectExtension(e,Le)}}var Ft={};M(Ft,{name:()=>$o,preprocess:()=>ei});var q="EXT_texture_webp",$o=q;function ei(r,e){let t=new d(r);if(!st("image/webp")){if(t.getRequiredExtensions().includes(q))throw new Error(`gltf: Required extension ${q} not supported by browser`);return}let{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,q);o&&(s.source=o.source),t.removeObjectExtension(s,q)}t.removeExtension(q)}var It={};M(It,{name:()=>ti,preprocess:()=>ri});var we="KHR_texture_basisu",ti=we;function ri(r,e){let t=new d(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,we);o&&(s.source=o.source,t.removeObjectExtension(s,we))}t.removeExtension(we)}var Ot={};M(Ot,{decode:()=>Ci,encode:()=>Ei,name:()=>pi,preprocess:()=>hi});var Sr="4.3.0-alpha.7";var Or={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Sr,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}}};function Lr(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 bt(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 A=0;A<c;A+=3){let f=a[A],u=a[A+1],B=a[A+2];e=f<e?f:e,t=u<t?u:t,n=B<n?B:n,s=f>s?f:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function Rt(r,e,t){let n=Lr(e.value),s=t||wr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function wr(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 Hr(r,e,t){let n=Ur(e.metadata),s=[],o=ni(e.attributes);for(let i in r){let a=r[i],c=Jr(i,a,o[i]);s.push(c)}if(t){let i=Jr("indices",t);s.push(i)}return{fields:s,metadata:n}}function ni(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Jr(r,e,t){let n=t?Ur(t.metadata):void 0;return Rt(r,e,n)}function Ur(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Pr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},si={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},oi=4,ce=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),A=bt(c.attributes),f=Hr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:A},...c,schema:f}}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:A}=a;s[i]={value:c,size:A,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*oi,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),ci(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=si[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=ii(this.draco,n),A,f=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,f),A=new n(this.draco.HEAPF32.buffer,f,i).slice()}finally{this.draco._free(f)}return{value:A,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 Pr)if(this.draco[i]===s)return Pr[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=ai(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 ii(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 ai(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function ci(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Ai="1.5.6",fi="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${Ai}`,x={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},Gt={[x.DECODER]:`${Dt}/${x.DECODER}`,[x.DECODER_WASM]:`${Dt}/${x.DECODER_WASM}`,[x.FALLBACK_DECODER]:`${Dt}/${x.FALLBACK_DECODER}`,[x.ENCODER]:`https://raw.githubusercontent.com/google/draco/${fi}/javascript/${x.ENCODER}`},_t;async function Nr(r){let e=r.modules||{};return e.draco3d?_t||=e.draco3d.createDecoderModule({}).then(t=>({draco:t})):_t||=ui(r),await _t}async function ui(r){let e,t;switch(r.draco&&r.draco.decoderType){case"js":e=await D(Gt[x.FALLBACK_DECODER],"draco",r,x.FALLBACK_DECODER);break;case"wasm":default:[e,t]=await Promise.all([await D(Gt[x.DECODER],"draco",r,x.DECODER),await D(Gt[x.DECODER_WASM],"draco",r,x.DECODER_WASM)])}return e=e||globalThis.DracoDecoderModule,await Bi(e,t)}function Bi(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Kr={...Or,parse:mi};async function mi(r,e){let{draco:t}=await Nr(e),n=new ce(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=St(n);e[t]=s}}return e}function St(r){let{buffer:e,size:t,count:n}=di(r);return{value:e,size:t,byteOffset:0,count:n,type:Te(t),componentType:w(e)}}function di(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=li(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function li(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var H="KHR_draco_mesh_compression",pi=H;function hi(r,e,t){let n=new d(r);for(let s of Xr(n))n.getObjectExtension(s,H)}async function Ci(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new d(r),s=[];for(let o of Xr(n))n.getObjectExtension(o,H)&&s.push(gi(n,o,e,t));await Promise.all(s),n.removeExtension(H)}function Ei(r,e={}){let t=new d(r);for(let n of t.json.meshes||[])xi(n,e),t.addRequiredExtension(H)}async function gi(r,e,t,n){let s=r.getObjectExtension(e,H);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=ne(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await te(i,Kr,a,n),A=vr(c.attributes);for(let[f,u]of Object.entries(A))if(f in e.attributes){let B=e.attributes[f],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=A,c.indices&&(e.indices=St(c.indices)),r.removeObjectExtension(e,H),Ti(e)}function xi(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:{[H]:{bufferView:c,attributes:a}}}]}}function Ti(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Xr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var Nt={};M(Nt,{decode:()=>Ui,name:()=>wi});var Sf=1/Math.PI*180,Of=1/180*Math.PI,Mi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Mi}};var C=globalThis.mathgl.config;function jr(r,{precision:e=C.precision}={}){return r=yi(r),`${parseFloat(r.toPrecision(e))}`}function z(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Lt(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if(z(r)&&z(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!Lt(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)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function yi(r){return Math.round(r/C.EPSILON)*C.EPSILON}var $=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:z(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?", ":"")+jr(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(!Lt(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(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 Fi(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 E(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Qr(r,e,t=""){if(C.debug&&!Fi(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function wt(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Je=class extends ${get x(){return this[0]}set x(e){this[0]=E(e)}get y(){return this[1]}set y(e){this[1]=E(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 E(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return E(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 wt(e>=0&&e<this.ELEMENTS,"index is out of range"),E(this[e])}setComponent(e,t){return wt(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 ee=typeof Float32Array<"u"?Float32Array:Array;var jf=Math.PI/180;function Di(){let r=new ee(2);return ee!=Float32Array&&(r[0]=0,r[1]=0),r}function kr(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 Qf=function(){let r=Di();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 Vr(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 Wr(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 Zr(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 Gi(){let r=new ee(3);return ee!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function _i(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function qr(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 zr(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 He(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 $r(r,e,t){let n=t[0],s=t[1],o=t[2],i=t[3],a=e[0],c=e[1],A=e[2],f=s*A-o*c,u=o*a-n*A,B=n*c-s*a,m=s*B-o*u,l=o*f-n*B,p=n*u-s*f,g=i*2;return f*=g,u*=g,B*=g,m*=2,l*=2,p*=2,r[0]=a+f+m,r[1]=c+u+l,r[2]=A+B+p,r}function en(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 tn(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 rn(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 nn(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)),A=c&&_i(r,e)/c;return Math.acos(Math.min(Math.max(A,-1),1))}var Vf=function(){let r=Gi();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 Jt=[0,0,0],Ue,N=class extends Je{static get ZERO(){return Ue||(Ue=new N(0,0,0),Object.freeze(Ue)),Ue}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&z(e)?this.copy(e):(C.debug&&(E(e),E(t),E(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&&(E(e.x),E(e.y),E(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]=E(e)}angle(e){return nn(this,e)}cross(e){return qr(this,this,e),this.check()}rotateX({radians:e,origin:t=Jt}){return en(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Jt}){return tn(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Jt}){return rn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return zr(this,this,e),this.check()}transformAsVector(e){return Vr(this,this,e),this.check()}transformByMatrix3(e){return He(this,this,e),this.check()}transformByMatrix2(e){return Wr(this,this,e),this.check()}transformByQuaternion(e){return $r(this,this,e),this.check()}};var Pe=class extends ${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]=E(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 sn(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 on(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],A=e[7],f=e[8],u=f*i-a*A,B=-f*o+a*c,m=A*o-i*c,l=t*u+n*B+s*m;return l?(l=1/l,r[0]=u*l,r[1]=(-f*n+s*A)*l,r[2]=(a*n-s*i)*l,r[3]=B*l,r[4]=(f*t-s*c)*l,r[5]=(-a*t+s*o)*l,r[6]=m*l,r[7]=(-A*t+n*c)*l,r[8]=(i*t-n*o)*l,r):null}function an(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],A=r[8];return e*(A*o-i*c)+t*(-A*s+i*a)+n*(c*s-o*a)}function Ht(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],m=t[1],l=t[2],p=t[3],g=t[4],I=t[5],L=t[6],v=t[7],Qe=t[8];return r[0]=B*n+m*i+l*A,r[1]=B*s+m*a+l*f,r[2]=B*o+m*c+l*u,r[3]=p*n+g*i+I*A,r[4]=p*s+g*a+I*f,r[5]=p*o+g*c+I*u,r[6]=L*n+v*i+Qe*A,r[7]=L*s+v*a+Qe*f,r[8]=L*o+v*c+Qe*u,r}function cn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=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+A,r[7]=B*s+m*a+f,r[8]=B*o+m*c+u,r}function An(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=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]=A,r[7]=f,r[8]=u,r}function Ut(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 fn(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=t+t,a=n+n,c=s+s,A=t*i,f=n*i,u=n*a,B=s*i,m=s*a,l=s*c,p=o*i,g=o*a,I=o*c;return r[0]=1-u-l,r[3]=f-I,r[6]=B+g,r[1]=f+I,r[4]=1-A-l,r[7]=m-p,r[2]=B-g,r[5]=m+p,r[8]=1-A-u,r}var Pt;(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"})(Pt||(Pt={}));var Si=Object.freeze([1,0,0,0,1,0,0,0,1]),O=class extends Pe{static get IDENTITY(){return Li()}static get ZERO(){return Oi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Pt}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(Si)}fromObject(e){return this.check()}fromQuaternion(e){return fn(this,e),this.check()}set(e,t,n,s,o,i,a,c,A){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]=A,this.check()}setRowMajor(e,t,n,s,o,i,a,c,A){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]=A,this.check()}determinant(){return an(this)}transpose(){return sn(this,this),this.check()}invert(){return on(this,this),this.check()}multiplyLeft(e){return Ht(this,e,this),this.check()}multiplyRight(e){return Ht(this,this,e),this.check()}rotate(e){return An(this,this,e),this.check()}scale(e){return Array.isArray(e)?Ut(this,this,e):Ut(this,this,[e,e]),this.check()}translate(e){return cn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=kr(t||[-0,-0],e,this);break;case 3:n=He(t||[-0,-0,-0],e,this);break;case 4:n=Zr(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)}},Ne,Ke=null;function Oi(){return Ne||(Ne=new O([0,0,0,0,0,0,0,0,0]),Object.freeze(Ne)),Ne}function Li(){return Ke||(Ke=new O,Object.freeze(Ke)),Ke}var Xe="KHR_texture_transform",wi=Xe,ve=new N,Ji=new O,Hi=new O;async function Ui(r,e){if(!new d(r).hasExtension(Xe)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)Pi(o,r)}function Pi(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?.[Xe]&&Ni(e,r,o,s)}function Ni(r,e,t,n){let s=Ki(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&&vi(r,a,s)}}function Ki(r,e){let t=r.extensions?.[Xe],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=Qi(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function vi(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){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:A,byteOffset:f}=r.buffers[c.buffer],u=(f||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=j(a,c),l=xe[a.componentType],p=ge[a.type],g=c.byteStride||l*p,I=new Float32Array(m);for(let L=0;L<a.count;L++){let v=new B(A,u+L*g,2);ve.set(v[0],v[1],1),ve.transformByMatrix3(o),I.set([ve[0],ve[1]],L*p)}n===s?Xi(a,c,r.buffers,I):ji(s,a,e,r,I)}}}}function Xi(r,e,t,n){r.componentType=5126,t.push({arrayBuffer:n.buffer,byteOffset:0,byteLength:n.buffer.byteLength}),e.buffer=t.length-1,e.byteLength=n.buffer.byteLength,e.byteOffset=0,delete e.byteStride}function ji(r,e,t,n,s){n.buffers.push({arrayBuffer:s.buffer,byteOffset:0,byteLength:s.buffer.byteLength});let o=n.json.bufferViews;if(!o)return;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 Qi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new O().set(1,0,0,0,1,0,e[0],e[1],1),o=Ji.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=Hi.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Kt={};M(Kt,{decode:()=>ki,encode:()=>Vi,name:()=>Yi});var K="KHR_lights_punctual",Yi=K;async function ki(r){let e=new d(r),{json:t}=e,n=e.getExtension(K);n&&(e.json.lights=n.lights,e.removeExtension(K));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,K);o&&(s.light=o.light),e.removeObjectExtension(s,K)}}async function Vi(r){let e=new d(r),{json:t}=e;if(t.lights){let n=e.addExtension(K);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,K,n)}delete e.json.lights}}var vt={};M(vt,{decode:()=>Zi,encode:()=>qi,name:()=>Wi});var Ae="KHR_materials_unlit",Wi=Ae;async function Zi(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,Ae);e.removeExtension(Ae)}function qi(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,Ae,{}),e.addExtension(Ae))}var Xt={};M(Xt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var fe="KHR_techniques_webgl",zi=fe;async function $i(r){let e=new d(r),{json:t}=e,n=e.getExtension(fe);if(n){let s=ta(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,fe);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=ra(o.technique,e)),e.removeObjectExtension(o,fe)}e.removeExtension(fe)}}async function ea(r,e){}function ta(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 ra(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 un=[Re,be,yt,Ft,It,Ot,Kt,vt,Xt,Nt,Bt],na=[Re,be];function Bn(r,e={},t){let n=un.filter(s=>ln(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function mn(r,e={},t){let n=un.filter(s=>ln(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function dn(r,e={}){for(let t of na)r=t.encode?.(r,e)??r;return r}function ln(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var jt="KHR_binary_glTF";function pn(r){let e=new d(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,jt);s&&Object.assign(n,s),e.removeObjectExtension(n,jt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(jt)}var hn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},oa={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Qt=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),pn(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 hn)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 hn)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=oa[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 Cn(r,e={}){return new Qt().normalize(r,e)}async function En(r,e,t=0,n,s){return ia(r,e,t,n),Cn(r,{normalize:n?.gltf?.normalize}),Bn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await aa(r,n,s),n?.gltf?.loadImages&&await ca(r,n,s),await mn(r,n,s),r}function ia(r,e,t,n){if(n.uri&&(r.baseUri=n.uri),e instanceof ArrayBuffer&&!Gr(e,t,n)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=We(e);else if(e instanceof ArrayBuffer){let i={};t=Oe(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=Tt(o.uri,e),A=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:A,byteOffset:0,byteLength:A.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function ca(r,e,t){let n=Aa(r),s=r.json.images||[],o=[];for(let i of n)o.push(fa(r,s[i],i,e,t));return await Promise.all(o)}function Aa(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 fa(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let a=Tt(e.uri,n),{fetch:c}=s;o=await(await c(a)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let a=lr(r.json,r.buffers,e.bufferView);o=ne(a.buffer,a.byteOffset,a.byteLength)}h(o,"glTF image has no data");let i=await te(o,[rt,Ct],{...n,mimeType:e.mimeType,basis:n.basis||{format:_e()}},s);i&&i[0]&&(i={compressed:!0,mipmaps:!1,width:i[0].width,height:i[0].height,data:i[0]}),r.images=r.images||[],r.images[t]=i}var je={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:J,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ua,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0},log:console}};async function ua(r,e={},t){e={...je.options,...e},e.gltf={...je.options.gltf,...e.gltf};let{byteOffset:n=0}=e;return await En({},r,n,e,t)}var Ba=1179937895,ma=1313821514,da=5130562,S=!0;function ue(r,e,t=0,n={}){let{magic:s=Ba,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 A=t+8;t+=12;let f=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,ma,S)),t+=8;let u=JSON.stringify(i);if(t=qe(e,t,u,4),e){let B=t-f-8;e.setUint32(f+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,da,S)),t+=8,t=he(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,S)}}if(e){let B=t-c;e.setUint32(A,B,S)}return t}function Yt(r,e,t,n){return la(r),ue(r,e,t,n)}function la(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var xn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>gn(r,e),encodeSync:gn};function gn(r,e={}){let{byteOffset:t=0}=e,n=dn(r),s=Yt(n,null,t,e),o=new ArrayBuffer(s),i=new DataView(o);return Yt(n,i,t,e),o}var Tn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:pa,parseSync:Mn,options:{glb:{strict:!1}}};async function pa(r,e){return Mn(r,e)}function Mn(r,e){let{byteOffset:t=0}=e||{},n={};return Oe(n,r,t,e?.glb),n}var Fn={name:"GLB",id:"glb",module:"gltf",version:J,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>yn(r,e),encodeSync:yn};function yn(r,e){let{byteOffset:t=0}=e??{},n=ue(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return ue(r,o,t,e),s}var ha={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ca={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},Ea={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},ga={[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 xa(){return{id:"default-sampler",parameters:ga}}function Ta(r){return Ca[r]}function Ma(r){return ha[r]}var kt=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=Ta(e.componentType),s=Ma(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:A}=j(i,i.bufferView),f=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=a.arrayBuffer.slice(f,f+A);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,f,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):xa(),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 Ea[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 In(r,e){return new kt().postProcess(r,e)}return Ln(Be);})();
8
8
  return __exports__;
9
9
  });
@@ -22,7 +22,7 @@ export const GLBWriter = {
22
22
  encodeSync
23
23
  };
24
24
  function encodeSync(glb, options) {
25
- const { byteOffset = 0 } = options;
25
+ const { byteOffset = 0 } = options ?? {};
26
26
  // Calculate length and allocate buffer
27
27
  const byteLength = encodeGLBSync(glb, null, byteOffset, options);
28
28
  const arrayBuffer = new ArrayBuffer(byteLength);
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-writer.d.ts","sourceRoot":"","sources":["../src/gltf-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAI/E,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,kDAkB8B,CAAC"}
1
+ {"version":3,"file":"gltf-writer.d.ts","sourceRoot":"","sources":["../src/gltf-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAM/E,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,kDAmB8B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { VERSION } from "./lib/utils/version.js";
2
2
  import { encodeGLTFSync } from "./lib/encoders/encode-gltf.js";
3
+ import { encodeExtensions } from "./lib/api/gltf-extensions.js";
3
4
  /**
4
5
  * GLTF exporter
5
6
  */
@@ -21,10 +22,11 @@ export const GLTFWriter = {
21
22
  };
22
23
  function encodeSync(gltf, options = {}) {
23
24
  const { byteOffset = 0 } = options;
25
+ const gltfToEncode = encodeExtensions(gltf);
24
26
  // Calculate length, then create arraybuffer and encode
25
- const byteLength = encodeGLTFSync(gltf, null, byteOffset, options);
27
+ const byteLength = encodeGLTFSync(gltfToEncode, null, byteOffset, options);
26
28
  const arrayBuffer = new ArrayBuffer(byteLength);
27
29
  const dataView = new DataView(arrayBuffer);
28
- encodeGLTFSync(gltf, dataView, byteOffset, options);
30
+ encodeGLTFSync(gltfToEncode, dataView, byteOffset, options);
29
31
  return arrayBuffer;
30
32
  }