@abi-software/scaffoldvuer 1.7.1 → 1.7.2

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.
@@ -3179,7 +3179,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
3179
3179
  `),s=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
3180
3180
  `),o=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.specularRoughness += geometryRoughness;","material.specularRoughness = min( material.specularRoughness, 1.0 );","material.specularColor = specularFactor;"].join(`
3181
3181
  `),l={specular:{value:new Ae().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=l,this.onBeforeCompile=function(u){for(const c in l)u.uniforms[c]=l[c];u.fragmentShader=u.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",t).replace("#include <metalnessmap_pars_fragment>",i).replace("#include <roughnessmap_fragment>",r).replace("#include <metalnessmap_fragment>",s).replace("#include <lights_physical_fragment>",o)},Object.defineProperties(this,{specular:{get:function(){return l.specular.value},set:function(u){l.specular.value=u}},specularMap:{get:function(){return l.specularMap.value},set:function(u){l.specularMap.value=u,u?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return l.glossiness.value},set:function(u){l.glossiness.value=u}},glossinessMap:{get:function(){return l.glossinessMap.value},set:function(u){l.glossinessMap.value=u,u?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}copy(e){return super.copy(e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class kB{constructor(){this.name=nt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return Sf}extendParams(e,t,i){const r=t.extensions[this.name];e.color=new Ae(1,1,1),e.opacity=1;const s=[];if(Array.isArray(r.diffuseFactor)){const o=r.diffuseFactor;e.color.fromArray(o),e.opacity=o[3]}if(r.diffuseTexture!==void 0&&s.push(i.assignTexture(e,"map",r.diffuseTexture)),e.emissive=new Ae(0,0,0),e.glossiness=r.glossinessFactor!==void 0?r.glossinessFactor:1,e.specular=new Ae(1,1,1),Array.isArray(r.specularFactor)&&e.specular.fromArray(r.specularFactor),r.specularGlossinessTexture!==void 0){const o=r.specularGlossinessTexture;s.push(i.assignTexture(e,"glossinessMap",o)),s.push(i.assignTexture(e,"specularMap",o))}return Promise.all(s)}createMaterial(e){const t=new Sf(e);return t.fog=!0,t.color=e.color,t.map=e.map===void 0?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=e.aoMap===void 0?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=1,t.emissiveMap=e.emissiveMap===void 0?null:e.emissiveMap,t.bumpMap=e.bumpMap===void 0?null:e.bumpMap,t.bumpScale=1,t.normalMap=e.normalMap===void 0?null:e.normalMap,t.normalMapType=ir,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=e.specularMap===void 0?null:e.specularMap,t.specular=e.specular,t.glossinessMap=e.glossinessMap===void 0?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=e.envMap===void 0?null:e.envMap,t.envMapIntensity=1,t.refractionRatio=.98,t}}class zB{constructor(){this.name=nt.KHR_MESH_QUANTIZATION}}class Ao extends si{constructor(e,t,i,r){super(e,t,i,r)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,r=this.valueSize,s=e*r*3+r;for(let o=0;o!==r;o++)t[o]=i[s+o];return t}}Ao.prototype.beforeStart_=Ao.prototype.copySampleValue_,Ao.prototype.afterEnd_=Ao.prototype.copySampleValue_,Ao.prototype.interpolate_=function(n,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=o*2,u=o*3,c=i-e,f=(t-e)/c,h=f*f,p=h*f,y=n*u,m=y-u,d=-2*p+3*h,b=p-h,v=1-d,g=b-h+f;for(let M=0;M!==o;M++){const _=s[m+M+o],E=s[m+M+l]*c,S=s[y+M+o],w=s[y+M]*c;r[M]=v*_+g*E+d*S+b*w}return r};const Fi={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},za={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},hx={9728:Et,9729:vt,9984:Qo,9985:kl,9986:ea,9987:_i},fx={33071:zt,33648:Os,10497:nr},px={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},_f={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},wr={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},UB={CUBICSPLINE:void 0,LINEAR:Fr,STEP:Bs},Ef={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function mx(n,e){return typeof n!="string"||n===""?"":(/^https?:\/\//i.test(e)&&/^\//.test(n)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(n)||/^data:.*,.*$/i.test(n)||/^blob:.*$/i.test(n)?n:e+n)}function GB(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Kr({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Qi})),n.DefaultMaterial}function Ua(n,e,t){for(const i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function ls(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function HB(n,e,t){let i=!1,r=!1;for(let l=0,u=e.length;l<u;l++){const c=e[l];if(c.POSITION!==void 0&&(i=!0),c.NORMAL!==void 0&&(r=!0),i&&r)break}if(!i&&!r)return Promise.resolve(n);const s=[],o=[];for(let l=0,u=e.length;l<u;l++){const c=e[l];if(i){const f=c.POSITION!==void 0?t.getDependency("accessor",c.POSITION):n.attributes.position;s.push(f)}if(r){const f=c.NORMAL!==void 0?t.getDependency("accessor",c.NORMAL):n.attributes.normal;o.push(f)}}return Promise.all([Promise.all(s),Promise.all(o)]).then(function(l){const u=l[0],c=l[1];return i&&(n.morphAttributes.position=u),r&&(n.morphAttributes.normal=c),n.morphTargetsRelative=!0,n})}function WB(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,i=e.weights.length;t<i;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let i=0,r=t.length;i<r;i++)n.morphTargetDictionary[t[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function jB(n){const e=n.extensions&&n.extensions[nt.KHR_DRACO_MESH_COMPRESSION];let t;return e?t="draco:"+e.bufferView+":"+e.indices+":"+gx(e.attributes):t=n.indices+":"+gx(n.attributes)+":"+n.mode,t}function gx(n){let e="";const t=Object.keys(n).sort();for(let i=0,r=t.length;i<r;i++)e+=t[i]+":"+n[t[i]]+";";return e}function Tf(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}class $B{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new AB,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.textureCache={},this.nodeNamesUsed={},typeof createImageBitmap<"u"&&/Firefox/.test(navigator.userAgent)===!1?this.textureLoader=new af(this.options.manager):this.textureLoader=new Kh(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new xn(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const l={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};Ua(s,l,r),ls(l,r),Promise.all(i._invokeAll(function(u){return u.afterRoot&&u.afterRoot(l)})).then(function(){e(l)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r<s;r++){const o=t[r].joints;for(let l=0,u=o.length;l<u;l++)e[o[l]].isBone=!0}for(let r=0,s=e.length;r<s;r++){const o=e[r];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;const r=i.clone();return r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){const r=e(t[i]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const i=[];for(let r=0;r<t.length;r++){const s=e(t[r]);s&&i.push(s)}return i}getDependency(e,t){const i=e+":"+t;let r=this.cache.get(i);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this.loadNode(t);break;case"mesh":r=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this.loadAnimation(t);break;case"camera":r=this.loadCamera(t);break;default:throw new Error("Unknown type: "+e)}this.cache.add(i,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const i=this,r=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(r.map(function(s,o){return i.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],i=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[nt.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(s,o){i.load(mx(t.uri,r.path),s,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(i){const r=t.byteLength||0,s=t.byteOffset||0;return i.slice(s,s+r)})}loadAccessor(e){const t=this,i=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0)return Promise.resolve(null);const s=[];return r.bufferView!==void 0?s.push(this.getDependency("bufferView",r.bufferView)):s.push(null),r.sparse!==void 0&&(s.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(s).then(function(o){const l=o[0],u=px[r.type],c=za[r.componentType],f=c.BYTES_PER_ELEMENT,h=f*u,p=r.byteOffset||0,y=r.bufferView!==void 0?i.bufferViews[r.bufferView].byteStride:void 0,m=r.normalized===!0;let d,b;if(y&&y!==h){const v=Math.floor(p/y),g="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+v+":"+r.count;let M=t.cache.get(g);M||(d=new c(l,v*y,r.count*y/f),M=new pr(d,y/f),t.cache.add(g,M)),b=new Di(M,u,p%y/f,m)}else l===null?d=new c(r.count*u):d=new c(l,p,r.count*u),b=new Ge(d,u,m);if(r.sparse!==void 0){const v=px.SCALAR,g=za[r.sparse.indices.componentType],M=r.sparse.indices.byteOffset||0,_=r.sparse.values.byteOffset||0,E=new g(o[1],M,r.sparse.count*v),S=new c(o[2],_,r.sparse.count*u);l!==null&&(b=new Ge(b.array.slice(),b.itemSize,b.normalized));for(let w=0,A=E.length;w<A;w++){const I=E[w];if(b.setX(I,S[w*u]),u>=2&&b.setY(I,S[w*u+1]),u>=3&&b.setZ(I,S[w*u+2]),u>=4&&b.setW(I,S[w*u+3]),u>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return b})}loadTexture(e){const t=this.json,i=this.options,r=t.textures[e],s=t.images[r.source];let o=this.textureLoader;if(s.uri){const l=i.manager.getHandler(s.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){const r=this,s=this.json,o=this.options,l=s.textures[e],u=(t.uri||t.bufferView)+":"+l.sampler;if(this.textureCache[u])return this.textureCache[u];const c=self.URL||self.webkitURL;let f=t.uri||"",h=!1,p=!0;const y=f.search(/\.jpe?g($|\?)/i)>0||f.search(/^data\:image\/jpeg/)===0;if((t.mimeType==="image/jpeg"||y)&&(p=!1),t.bufferView!==void 0)f=r.getDependency("bufferView",t.bufferView).then(function(d){if(t.mimeType==="image/png"){const v=new DataView(d,25,1).getUint8(0,!1);p=v===6||v===4||v===3}h=!0;const b=new Blob([d],{type:t.mimeType});return f=c.createObjectURL(b),f});else if(t.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const m=Promise.resolve(f).then(function(d){return new Promise(function(b,v){let g=b;i.isImageBitmapLoader===!0&&(g=function(M){const _=new Tt(M);_.needsUpdate=!0,b(_)}),i.load(mx(d,o.path),g,void 0,v)})}).then(function(d){h===!0&&c.revokeObjectURL(f),d.flipY=!1,l.name&&(d.name=l.name),p||(d.format=Ti);const v=(s.samplers||{})[l.sampler]||{};return d.magFilter=hx[v.magFilter]||vt,d.minFilter=hx[v.minFilter]||_i,d.wrapS=fx[v.wrapS]||nr,d.wrapT=fx[v.wrapT]||nr,r.associations.set(d,{type:"textures",index:e}),d}).catch(function(){return console.error("THREE.GLTFLoader: Couldn't load texture",f),null});return this.textureCache[u]=m,m}assignTexture(e,t,i){const r=this;return this.getDependency("texture",i.index).then(function(s){if(i.texCoord!==void 0&&i.texCoord!=0&&!(t==="aoMap"&&i.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[nt.KHR_TEXTURE_TRANSFORM]){const o=i.extensions!==void 0?i.extensions[nt.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=r.associations.get(s);s=r.extensions[nt.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),r.associations.set(s,l)}}e[t]=s})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent!==void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0,l=Object.keys(t.morphAttributes).length>0,u=l&&t.morphAttributes.normal!==void 0;if(e.isPoints){const c="PointsMaterial:"+i.uuid;let f=this.cache.get(c);f||(f=new mr,Nt.prototype.copy.call(f,i),f.color.copy(i.color),f.map=i.map,f.sizeAttenuation=!1,this.cache.add(c,f)),i=f}else if(e.isLine){const c="LineBasicMaterial:"+i.uuid;let f=this.cache.get(c);f||(f=new Ft,Nt.prototype.copy.call(f,i),f.color.copy(i.color),this.cache.add(c,f)),i=f}if(r||s||o||l){let c="ClonedMaterial:"+i.uuid+":";i.isGLTFSpecularGlossinessMaterial&&(c+="specular-glossiness:"),r&&(c+="vertex-tangents:"),s&&(c+="vertex-colors:"),o&&(c+="flat-shading:"),l&&(c+="morph-targets:"),u&&(c+="morph-normals:");let f=this.cache.get(c);f||(f=i.clone(),s&&(f.vertexColors=!0),o&&(f.flatShading=!0),l&&(f.morphTargets=!0),u&&(f.morphNormals=!0),r&&(f.vertexTangents=!0,f.normalScale&&(f.normalScale.y*=-1),f.clearcoatNormalScale&&(f.clearcoatNormalScale.y*=-1)),this.cache.add(c,f),this.associations.set(f,this.associations.get(i))),i=f}i.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return Kr}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const l={},u=s.extensions||{},c=[];if(u[nt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const h=r[nt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];o=h.getMaterialType(),c.push(h.extendParams(l,s,t))}else if(u[nt.KHR_MATERIALS_UNLIT]){const h=r[nt.KHR_MATERIALS_UNLIT];o=h.getMaterialType(),c.push(h.extendParams(l,s,t))}else{const h=s.pbrMetallicRoughness||{};if(l.color=new Ae(1,1,1),l.opacity=1,Array.isArray(h.baseColorFactor)){const p=h.baseColorFactor;l.color.fromArray(p),l.opacity=p[3]}h.baseColorTexture!==void 0&&c.push(t.assignTexture(l,"map",h.baseColorTexture)),l.metalness=h.metallicFactor!==void 0?h.metallicFactor:1,l.roughness=h.roughnessFactor!==void 0?h.roughnessFactor:1,h.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(l,"metalnessMap",h.metallicRoughnessTexture)),c.push(t.assignTexture(l,"roughnessMap",h.metallicRoughnessTexture))),o=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,l)})))}s.doubleSided===!0&&(l.side=er);const f=s.alphaMode||Ef.OPAQUE;return f===Ef.BLEND?(l.transparent=!0,l.depthWrite=!1):(l.transparent=!1,f===Ef.MASK&&(l.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==dn&&(c.push(t.assignTexture(l,"normalMap",s.normalTexture)),l.normalScale=new _e(1,-1),s.normalTexture.scale!==void 0&&l.normalScale.set(s.normalTexture.scale,-s.normalTexture.scale)),s.occlusionTexture!==void 0&&o!==dn&&(c.push(t.assignTexture(l,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(l.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==dn&&(l.emissive=new Ae().fromArray(s.emissiveFactor)),s.emissiveTexture!==void 0&&o!==dn&&c.push(t.assignTexture(l,"emissiveMap",s.emissiveTexture)),Promise.all(c).then(function(){let h;return o===Sf?h=r[nt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(l):h=new o(l),s.name&&(h.name=s.name),h.map&&(h.map.encoding=zr),h.emissiveMap&&(h.emissiveMap.encoding=zr),ls(h,s),t.associations.set(h,{type:"materials",index:e}),s.extensions&&Ua(r,h,s),h})}createUniqueName(e){const t=Qe.sanitizeNodeName(e||"");let i=t;for(let r=1;this.nodeNamesUsed[i];++r)i=t+"_"+r;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(l){return i[nt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(l,t).then(function(u){return vx(u,l,t)})}const o=[];for(let l=0,u=e.length;l<u;l++){const c=e[l],f=jB(c),h=r[f];if(h)o.push(h.promise);else{let p;c.extensions&&c.extensions[nt.KHR_DRACO_MESH_COMPRESSION]?p=s(c):p=vx(new ke,c,t),r[f]={primitive:c,promise:p},o.push(p)}}return Promise.all(o)}loadMesh(e){const t=this,i=this.json,r=this.extensions,s=i.meshes[e],o=s.primitives,l=[];for(let u=0,c=o.length;u<c;u++){const f=o[u].material===void 0?GB(this.cache):this.getDependency("material",o[u].material);l.push(f)}return l.push(t.loadGeometries(o)),Promise.all(l).then(function(u){const c=u.slice(0,u.length-1),f=u[u.length-1],h=[];for(let y=0,m=f.length;y<m;y++){const d=f[y],b=o[y];let v;const g=c[y];if(b.mode===Fi.TRIANGLES||b.mode===Fi.TRIANGLE_STRIP||b.mode===Fi.TRIANGLE_FAN||b.mode===void 0)v=s.isSkinnedMesh===!0?new wa(d,g):new At(d,g),v.isSkinnedMesh===!0&&!v.geometry.attributes.skinWeight.normalized&&v.normalizeSkinWeights(),b.mode===Fi.TRIANGLE_STRIP?v.geometry=bx(v.geometry,My):b.mode===Fi.TRIANGLE_FAN&&(v.geometry=bx(v.geometry,Fd));else if(b.mode===Fi.LINES)v=new on(d,g);else if(b.mode===Fi.LINE_STRIP)v=new ni(d,g);else if(b.mode===Fi.LINE_LOOP)v=new Mc(d,g);else if(b.mode===Fi.POINTS)v=new oo(d,g);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+b.mode);Object.keys(v.geometry.morphAttributes).length>0&&WB(v,s),v.name=t.createUniqueName(s.name||"mesh_"+e),ls(v,s),b.extensions&&Ua(r,v,b),t.assignFinalMaterial(v),h.push(v)}if(h.length===1)return h[0];const p=new ti;for(let y=0,m=h.length;y<m;y++)p.add(h[y]);return p})}loadCamera(e){let t;const i=this.json.cameras[e],r=i[i.type];if(!r){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?t=new Bt(Wd.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):i.type==="orthographic"&&(t=new So(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),ls(t,i),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],i={joints:t.joints};return t.inverseBindMatrices===void 0?Promise.resolve(i):this.getDependency("accessor",t.inverseBindMatrices).then(function(r){return i.inverseBindMatrices=r,i})}loadAnimation(e){const i=this.json.animations[e],r=[],s=[],o=[],l=[],u=[];for(let c=0,f=i.channels.length;c<f;c++){const h=i.channels[c],p=i.samplers[h.sampler],y=h.target,m=y.node!==void 0?y.node:y.id,d=i.parameters!==void 0?i.parameters[p.input]:p.input,b=i.parameters!==void 0?i.parameters[p.output]:p.output;r.push(this.getDependency("node",m)),s.push(this.getDependency("accessor",d)),o.push(this.getDependency("accessor",b)),l.push(p),u.push(y)}return Promise.all([Promise.all(r),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(u)]).then(function(c){const f=c[0],h=c[1],p=c[2],y=c[3],m=c[4],d=[];for(let v=0,g=f.length;v<g;v++){const M=f[v],_=h[v],E=p[v],S=y[v],w=m[v];if(M===void 0)continue;M.updateMatrix(),M.matrixAutoUpdate=!0;let A;switch(wr[w.path]){case wr.weights:A=xo;break;case wr.rotation:A=Qr;break;case wr.position:case wr.scale:default:A=wo;break}const I=M.name?M.name:M.uuid,T=S.interpolation!==void 0?UB[S.interpolation]:Fr,P=[];wr[w.path]===wr.weights?M.traverse(function(R){R.isMesh===!0&&R.morphTargetInfluences&&P.push(R.name?R.name:R.uuid)}):P.push(I);let C=E.array;if(E.normalized){const R=Tf(C.constructor),L=new Float32Array(C.length);for(let N=0,x=C.length;N<x;N++)L[N]=C[N]*R;C=L}for(let R=0,L=P.length;R<L;R++){const N=new A(P[R]+"."+wr[w.path],_.array,C,T);S.interpolation==="CUBICSPLINE"&&(N.createInterpolant=function(O){return new Ao(this.times,this.values,this.getValueSize()/3,O)},N.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),d.push(N)}}const b=i.name?i.name:"animation_"+e;return new Mo(b,void 0,d)})}createNodeMesh(e){const t=this.json,i=this,r=t.nodes[e];return r.mesh===void 0?null:i.getDependency("mesh",r.mesh).then(function(s){const o=i._getNodeRef(i.meshCache,r.mesh,s);return r.weights!==void 0&&o.traverse(function(l){if(l.isMesh)for(let u=0,c=r.weights.length;u<c;u++)l.morphTargetInfluences[u]=r.weights[u]}),o})}loadNode(e){const t=this.json,i=this.extensions,r=this,s=t.nodes[e],o=s.name?r.createUniqueName(s.name):"";return function(){const l=[],u=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return u&&l.push(u),s.camera!==void 0&&l.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){l.push(c)}),Promise.all(l)}().then(function(l){let u;if(s.isBone===!0?u=new Ma:l.length>1?u=new ti:l.length===1?u=l[0]:u=new $e,u!==l[0])for(let c=0,f=l.length;c<f;c++)u.add(l[c]);if(s.name&&(u.userData.name=s.name,u.name=o),ls(u,s),s.extensions&&Ua(i,u,s),s.matrix!==void 0){const c=new De;c.fromArray(s.matrix),u.applyMatrix4(c)}else s.translation!==void 0&&u.position.fromArray(s.translation),s.rotation!==void 0&&u.quaternion.fromArray(s.rotation),s.scale!==void 0&&u.scale.fromArray(s.scale);return r.associations.set(u,{type:"nodes",index:e}),u})}loadScene(e){const t=this.json,i=this.extensions,r=this.json.scenes[e],s=this,o=new ti;r.name&&(o.name=s.createUniqueName(r.name)),ls(o,r),r.extensions&&Ua(i,o,r);const l=r.nodes||[],u=[];for(let c=0,f=l.length;c<f;c++)u.push(yx(l[c],o,t,s));return Promise.all(u).then(function(){return o})}}function yx(n,e,t,i){const r=t.nodes[n];return i.getDependency("node",n).then(function(s){if(r.skin===void 0)return s;let o;return i.getDependency("skin",r.skin).then(function(l){o=l;const u=[];for(let c=0,f=o.joints.length;c<f;c++)u.push(i.getDependency("node",o.joints[c]));return Promise.all(u)}).then(function(l){return s.traverse(function(u){if(!u.isMesh)return;const c=[],f=[];for(let h=0,p=l.length;h<p;h++){const y=l[h];if(y){c.push(y);const m=new De;o.inverseBindMatrices!==void 0&&m.fromArray(o.inverseBindMatrices.array,h*16),f.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[h])}u.bind(new Sa(c,f),u.matrixWorld)}),s})}).then(function(s){e.add(s);const o=[];if(r.children){const l=r.children;for(let u=0,c=l.length;u<c;u++){const f=l[u];o.push(yx(f,s,t,i))}}return Promise.all(o)})}function ZB(n,e,t){const i=e.attributes,r=new un;if(i.POSITION!==void 0){const l=t.json.accessors[i.POSITION],u=l.min,c=l.max;if(u!==void 0&&c!==void 0){if(r.set(new J(u[0],u[1],u[2]),new J(c[0],c[1],c[2])),l.normalized){const f=Tf(za[l.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=e.targets;if(s!==void 0){const l=new J,u=new J;for(let c=0,f=s.length;c<f;c++){const h=s[c];if(h.POSITION!==void 0){const p=t.json.accessors[h.POSITION],y=p.min,m=p.max;if(y!==void 0&&m!==void 0){if(u.setX(Math.max(Math.abs(y[0]),Math.abs(m[0]))),u.setY(Math.max(Math.abs(y[1]),Math.abs(m[1]))),u.setZ(Math.max(Math.abs(y[2]),Math.abs(m[2]))),p.normalized){const d=Tf(za[p.componentType]);u.multiplyScalar(d)}l.max(u)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(l)}n.boundingBox=r;const o=new Ai;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,n.boundingSphere=o}function vx(n,e,t){const i=e.attributes,r=[];function s(o,l){return t.getDependency("accessor",o).then(function(u){n.setAttribute(l,u)})}for(const o in i){const l=_f[o]||o.toLowerCase();l in n.attributes||r.push(s(i[o],l))}if(e.indices!==void 0&&!n.index){const o=t.getDependency("accessor",e.indices).then(function(l){n.setIndex(l)});r.push(o)}return ls(n,e),ZB(n,e,t),Promise.all(r).then(function(){return e.targets!==void 0?HB(n,e.targets,t):n})}function bx(n,e){let t=n.getIndex();if(t===null){const o=[],l=n.getAttribute("position");if(l!==void 0){for(let u=0;u<l.count;u++)o.push(u);n.setIndex(o),t=n.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=t.count-2,r=[];if(e===Fd)for(let o=1;o<=i;o++)r.push(t.getX(0)),r.push(t.getX(o)),r.push(t.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(r.push(t.getX(o)),r.push(t.getX(o+1)),r.push(t.getX(o+2))):(r.push(t.getX(o+2)),r.push(t.getX(o+1)),r.push(t.getX(o)));r.length/3!==i&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=n.clone();return s.setIndex(r),s}const XB=Rl(Object.freeze(Object.defineProperty({__proto__:null,GLTFLoader:CB},Symbol.toStringTag,{value:"Module"})));var Cf={exports:{}},xx;function YB(){return xx||(xx=1,function(n){function e(c){var f={};function h(y){if(f[y])return f[y].exports;var m=f[y]={i:y,l:!1,exports:{}};return c[y].call(m.exports,m,m.exports,h),m.l=!0,m.exports}h.m=c,h.c=f,h.i=function(y){return y},h.d=function(y,m,d){h.o(y,m)||Object.defineProperty(y,m,{configurable:!1,enumerable:!0,get:d})},h.r=function(y){Object.defineProperty(y,"__esModule",{value:!0})},h.n=function(y){var m=y&&y.__esModule?function(){return y.default}:function(){return y};return h.d(m,"a",m),m},h.o=function(y,m){return Object.prototype.hasOwnProperty.call(y,m)},h.p="/",h.oe=function(y){throw console.error(y),y};var p=h(h.s=ENTRY_MODULE);return p.default||p}var t="[\\.|\\-|\\+|\\w|/|@]+",i="\\(\\s*(/\\*.*?\\*/)?\\s*.*?("+t+").*?\\)";function r(c){return(c+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function s(c){return!isNaN(1*c)}function o(c,f,h){var p={};p[h]=[];var y=f.toString(),m=y.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!m)return p;for(var d=m[1],b=new RegExp("(\\\\n|\\W)"+r(d)+i,"g"),v;v=b.exec(y);)v[3]!=="dll-reference"&&p[h].push(v[3]);for(b=new RegExp("\\("+r(d)+'\\("(dll-reference\\s('+t+'))"\\)\\)'+i,"g");v=b.exec(y);)c[v[2]]||(p[h].push(v[1]),c[v[2]]=__webpack_require__(v[1]).m),p[v[2]]=p[v[2]]||[],p[v[2]].push(v[4]);for(var g=Object.keys(p),M=0;M<g.length;M++)for(var _=0;_<p[g[M]].length;_++)s(p[g[M]][_])&&(p[g[M]][_]=1*p[g[M]][_]);return p}function l(c){var f=Object.keys(c);return f.reduce(function(h,p){return h||c[p].length>0},!1)}function u(c,f){for(var h={main:[f]},p={main:[]},y={main:{}};l(h);)for(var m=Object.keys(h),d=0;d<m.length;d++){var b=m[d],v=h[b],g=v.pop();if(y[b]=y[b]||{},!(y[b][g]||!c[b][g])){y[b][g]=!0,p[b]=p[b]||[],p[b].push(g);for(var M=o(c,c[b][g],b),_=Object.keys(M),E=0;E<_.length;E++)h[_[E]]=h[_[E]]||[],h[_[E]]=h[_[E]].concat(M[_[E]])}}return p}n.exports=function(c,f){f=f||{};var h={main:__webpack_modules__},p=f.all?{main:Object.keys(h.main)}:u(h,c),y="";Object.keys(p).filter(function(g){return g!=="main"}).forEach(function(g){for(var M=0;p[g][M];)M++;p[g].push(M),h[g][M]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",y=y+"var "+g+" = ("+e.toString().replace("ENTRY_MODULE",JSON.stringify(M))+")({"+p[g].map(function(_){return""+JSON.stringify(_)+": "+h[g][_].toString()}).join(",")+`});
3182
- `}),y=y+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(c))+")({"+p.main.map(function(g){return""+JSON.stringify(g)+": "+h.main[g].toString()}).join(",")+"}))(self);";var m=new window.Blob([y],{type:"text/javascript"});if(f.bare)return m;var d=window.URL||window.webkitURL||window.mozURL||window.msURL,b=d.createObjectURL(m),v=new window.Worker(b);return v.objectURL=b,v}}(Cf)),Cf.exports}function JB(n){var e=this.constructor;return this.then(function(t){return e.resolve(n()).then(function(){return t})},function(t){return e.resolve(n()).then(function(){return e.reject(t)})})}function KB(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError(typeof n+" "+n+" is not iterable(cannot read property Symbol(Symbol.iterator))"));var r=Array.prototype.slice.call(n);if(r.length===0)return t([]);var s=r.length;function o(u,c){if(c&&(typeof c=="object"||typeof c=="function")){var f=c.then;if(typeof f=="function"){f.call(c,function(h){o(u,h)},function(h){r[u]={status:"rejected",reason:h},--s===0&&t(r)});return}}r[u]={status:"fulfilled",value:c},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function wx(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}wx.prototype=Error.prototype;function qB(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError("Promise.any accepts an array"));var r=Array.prototype.slice.call(n);if(r.length===0)return i();for(var s=[],o=0;o<r.length;o++)try{e.resolve(r[o]).then(t).catch(function(l){s.push(l),s.length===r.length&&i(new wx(s,"All promises were rejected"))})}catch(l){i(l)}})}var QB=setTimeout;function Mx(n){return!!(n&&typeof n.length<"u")}function eF(){}function tF(n,e){return function(){n.apply(e,arguments)}}function yt(n){if(!(this instanceof yt))throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],_x(n,this)}function Sx(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,yt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?Af:Ga)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){Ga(e.promise,r);return}Af(e.promise,i)})}function Af(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&(typeof e=="object"||typeof e=="function")){var t=e.then;if(e instanceof yt){n._state=3,n._value=e,Rf(n);return}else if(typeof t=="function"){_x(tF(t,e),n);return}}n._state=1,n._value=e,Rf(n)}catch(i){Ga(n,i)}}function Ga(n,e){n._state=2,n._value=e,Rf(n)}function Rf(n){n._state===2&&n._deferreds.length===0&&yt._immediateFn(function(){n._handled||yt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)Sx(n,n._deferreds[e]);n._deferreds=null}function nF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function _x(n,e){var t=!1;try{n(function(i){t||(t=!0,Af(e,i))},function(i){t||(t=!0,Ga(e,i))})}catch(i){if(t)return;t=!0,Ga(e,i)}}yt.prototype.catch=function(n){return this.then(null,n)},yt.prototype.then=function(n,e){var t=new this.constructor(eF);return Sx(this,new nF(n,e,t)),t},yt.prototype.finally=JB,yt.all=function(n){return new yt(function(e,t){if(!Mx(n))return t(new TypeError("Promise.all accepts an array"));var i=Array.prototype.slice.call(n);if(i.length===0)return e([]);var r=i.length;function s(l,u){try{if(u&&(typeof u=="object"||typeof u=="function")){var c=u.then;if(typeof c=="function"){c.call(u,function(f){s(l,f)},t);return}}i[l]=u,--r===0&&e(i)}catch(f){t(f)}}for(var o=0;o<i.length;o++)s(o,i[o])})},yt.any=qB,yt.allSettled=KB,yt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===yt?n:new yt(function(e){e(n)})},yt.reject=function(n){return new yt(function(e,t){t(n)})},yt.race=function(n){return new yt(function(e,t){if(!Mx(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)yt.resolve(n[i]).then(e,t)})},yt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){QB(n,0)},yt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const iF=Rl(Object.freeze(Object.defineProperty({__proto__:null,default:yt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Ki,()=>(()=>{var t=[(o,l,u)=>{u(1);var c=u(2),f=c.version,h=function(){this.Revision=f,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=u(3).Geometry,this.Glyph=u(16).Glyph,this.Glyphset=u(18).Glyphset,this.Pointset=u(22).Pointset,this.Label=u(17).Label,this.Lines=u(24).Lines,this.TextureArray=u(25).TextureArray,this.TextureSlides=u(27).TextureSlides,this.Renderer=u(30).Renderer,this.Scene=u(32).Scene,this.GeometryCSG=u(50).GeometryCSG,this.GlyphsetCSG=u(56).GlyphsetCSG,this.Viewport=u(43).Viewport,this.CameraControls=u(43).CameraControls,this.SmoothCameraTransition=u(43).SmoothCameraTransition,this.RayCaster=u(43).RayCaster,this.CameraAutoTumble=u(43).CameraAutoTumble,this.StereoEffect=u(43).StereoEffect,this.loadExternalFile=u(5).loadExternalFile,this.loadExternalFiles=u(5).loadExternalFiles,this.THREE=u(4)};o.exports=new h},o=>{o.exports=JR()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.11.6","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}')},function(o,l,u){var c=u(4),f=u(5).toBufferGeometry,h=(y,m,d)=>{var b=f(y,d),v=!1;1>d.opacity&&(v=!0);var g;if(b._video===void 0){var M=d.localTimeEnabled||d.localMorphColour;m?(g=m,g.morphTargets=M,g.morphNormals=d.localTimeEnabled):b instanceof c.BufferGeometry&&b.attributes.color===void 0?g=new c.MeshPhongMaterial({color:d.colour,morphTargets:M,morphNormals:d.localTimeEnabled,transparent:v,opacity:d.opacity,side:c.DoubleSide}):g=new c.MeshPhongMaterial({color:d.colour,morphTargets:M,morphNormals:d.localTimeEnabled,vertexColors:c.VertexColors,transparent:v,opacity:d.opacity,side:c.DoubleSide}),d.localMorphColour&&b.morphAttributes.color&&(g.onBeforeCompile=u(9).augmentMorphColor())}else{var _=b._video.createCanvasVideoTexture();g=new c.MeshBasicMaterial({morphTargets:d.localTimeEnabled,color:new c.Color(1,1,1),transparent:v,opacity:d.opacity,map:_,side:c.DoubleSide}),this.videoHandler=b._video}return new c.Mesh(b,g)},p=function(){u(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(y,m,d)=>{if(!(this.morph&&this.morph.geometry&&y!=null)){var b=h(y,m,d);this.setMesh(b,d.localTimeEnabled,d.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var y=this.geometry.boundingBox.max,m=this.geometry.boundingBox.min,d=new c.Vector2(0-m.x,0-m.y),b=new c.Vector2(y.x-m.x,y.y-m.y);this.geometry.faceVertexUvs[0]=[];for(var v=0;v<this.geometry.faces.length;v++){var g=this.geometry.vertices[this.geometry.faces[v].a],M=this.geometry.vertices[this.geometry.faces[v].b],_=this.geometry.vertices[this.geometry.faces[v].c];geometry.faceVertexUvs[0].push([new c.Vector2((g.x+d.x)/b.x,(g.y+d.y)/b.y),new c.Vector2((M.x+d.x)/b.x,(M.y+d.y)/b.y),new c.Vector2((_.x+d.x)/b.x,(_.y+d.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=y=>{this.morph.material.wireframe=y},this.editVertices=function(y,m){if(y&&y.length){var d=this.getMorph(),b=d.geometry.getAttribute("position");if(!d||0>m)return;var v=3*m;y.forEach(g=>{b.array[v++]=g[0],b.array[v++]=g[1],b.array[v++]=g[2]}),b.needsUpdate=!0,d.geometry.computeBoundingBox(),d.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};p.prototype=Object.create(u(10).ZincObject.prototype),l.Geometry=p},o=>{o.exports=cB},(o,l,u)=>{function c(w){throw new TypeError('"'+w+'" is read-only')}var f=u(4),h=u(6).Geometry,p=u(7).default;function y(w){var A=w,I=u(0).modelPrefix;return I&&(I[I.length-1]!="/"&&c("prefix"),/^(?:[a-z]+:)?\/\//i.test(w)||(A=I+w)),A}function m(w,A){var I=(P,C)=>{try{var R=new URL(P,C).href;if(P&&2>P.split("?").length){var L=C.split("?");L.length===2&&(R=R+"?"+L[1])}return R}catch{console.error("There is an issue creating the url link with: ".concat(P,"."))}};if(!Array.isArray(w))return I(w,A);var T=[];return w.forEach(P=>{T.push(I(P,A))}),T}function d(w,A,I,T,P){var C=w.morphTargetInfluences,R=void 0;w.geometry&&(R=w.geometry.morphAttributes);var L=!1;if(C&&R&&R.position){T.set(0,0,0),P.set(0,0,0);for(var N=0;N<C.length;N++)0<C[N]&&(L=!0,I.setFromArray(R.position[N].array),T.add(I.min.multiplyScalar(C[N])),P.add(I.max.multiplyScalar(C[N])));L&&A.set(T,P)}L||A.setFromBufferAttribute(w.geometry.attributes.position),w.updateWorldMatrix(!0,!0),A.applyMatrix4(w.matrixWorld)}function b(w,A,I,T){var P=new XMLHttpRequest;P.open("GET",y(w),!0),P.onreadystatechange=()=>{P.readyState==4&&(P.status==200?I(P.responseText,A):T(w))},P.send(null)}function v(w,A,I){function T(N,x){R[x]=N,C++,C==P&&A(R)}for(var P=w.length,C=0,R=[],L=0;L<P;L++)b(w[L],L,T,I)}l.getColorsRGB=(w,A)=>{var I=Math.floor(A/3),T=A%3,P=0;T==0?P=w[I].r:T==1?P=w[I].g:T==2&&(P=w[I].b);var C=new f.Color(P);return[C.r,C.g,C.b]},l.updateMorphColorAttribute=function(w,A){if(A&&w&&w.morphAttributes&&w.morphAttributes.color){var I=w.morphAttributes.color,T=A.morphTargetInfluences,P=T.length;w.deleteAttribute("morphColor0"),w.deleteAttribute("morphColor1");for(var C=0,R=[],L=0;1>C||L<P;L++)0<T[L]&&(C++,R.push([L,T[L]]));R.length==2?(w.setAttribute("morphColor0",I[R[0][0]]),w.setAttribute("morphColor1",I[R[1][0]])):R.length==1&&(w.setAttribute("morphColor0",I[R[0][0]]),w.setAttribute("morphColor1",I[R[0][0]]))}},l.toBufferGeometry=(w,A)=>{var I;return w instanceof h?(A.localTimeEnabled&&!w.morphNormalsReady&&(w.morphNormals==null||w.morphNormals.length==0)&&w.computeMorphNormals(),I=w.toIndexedBufferGeometry(),A.localMorphColour&&g(w,I)):w instanceof f.BufferGeometry&&(I=w.clone()),I.colorsNeedUpdate=!0,I.computeBoundingBox(),I.computeBoundingSphere(),w._video&&(I._video=w._video),I},l.copyMorphColorsToBufferGeometry=(w,A)=>{if(w&&w.morphColors&&0<w.morphColors.length){for(var I=[],T=w.morphColors,P=u(5).getColorsRGB,C=0,R=T.length;C<R;C++){for(var L=T[C],N=[],x=0;x<w.faces.length;x++){var O=w.faces[x],B=P(L.colors,O.a);N.push(B[0],B[1],B[2]),B=P(L.colors,O.b),N.push(B[0],B[1],B[2]),B=P(L.colors,O.c),N.push(B[0],B[1],B[2])}var D=new f.Float32BufferAttribute(3*(3*w.faces.length),3);D.name=L.name,I.push(D.copyArray(N))}A.morphAttributes.color=I}};var g=(w,A)=>{if(w&&w.morphColors&&0<w.morphColors.length){for(var I=[],T=w.morphColors,P=u(5).getColorsRGB,C=0,R=T.length;C<R;C++){for(var L,N=T[C],x=[],O=0;O<3*N.colors.length;O++)L=P(N.colors,O),x.push(L[0],L[1],L[2]);var B=new f.Float32BufferAttribute(x,3);B.name=N.name,I.push(B)}A.morphAttributes.color=I}};l.mergeVertices=function(w){var A=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;A=Math.max(A,Number.EPSILON);for(var I,T={},P=w.getIndex(),C=w.getAttribute("position"),R=P?P.count:C.count,L=0,N=Object.keys(w.attributes),x={},O={},le=[],B=["getX","getY","getZ","getW"],D=0,k=N.length;D<k;D++){I=N[D],x[I]=[];var U=w.morphAttributes[I];U&&(O[I]=Array(U.length).fill().map(()=>[]))}for(var H=Math.log10(1/A),X=Math.pow(10,H),D=0;D<R;D++){for(var re=P?P.getX(D):D,j="",G=0,k=N.length;G<k;G++)for(var I=N[G],W=w.getAttribute(I),K=W.itemSize,ee=0;ee<K;ee++)j+="".concat(~~(W[B[ee]](re)*X),",");if(j in T)le.push(T[j]);else{for(var G=0,k=N.length;G<k;G++)for(var q,I=N[G],W=w.getAttribute(I),U=w.morphAttributes[I],K=W.itemSize,ie=x[I],Y=O[I],ee=0;ee<K;ee++)if(q=B[ee],ie.push(W[q](re)),U)for(var te=0,F=U.length;te<F;te++)Y[te].push(U[te][q](re));T[j]=L,le.push(L),L++}}for(var $=w.clone(),D=0,k=N.length;D<k;D++){var W,I=N[D],Q=w.getAttribute(I),V=new Q.array.constructor(x[I]);if(Q.isInterleavedBufferAttribute?W=new f.BufferAttribute(V,Q.itemSize,Q.itemSize):(W=w.getAttribute(I).clone(),W.setArray(V)),$.setAttribute(I,W),I in O)for(var z,G=0;G<O[I].length;G++)z=w.morphAttributes[I][G].clone(),z.setArray(new z.array.constructor(O[I][G])),$.morphAttributes[I][G]=z}var oe=Uint8Array;le.length>=Math.pow(2,8)&&(oe=Uint16Array),le.length>=Math.pow(2,16)&&(oe=Uint32Array);var ae=new oe(le),le=null;return P===null?le=new f.BufferAttribute(ae,1):(le=w.getIndex().clone(),le.setArray(ae)),$.setIndex(le),$};function M(w){if(w.isMeshPhongMaterial){var A=new f.MeshToonMaterial({color:w.color.clone(),morphTargets:w.morphTargets,morphNormals:w.morphNormals,vertexColors:w.vertexColors,transparent:w.transparent,opacity:w.opacity,side:w.side});return w.map&&(A.map=w.map),A}return w}function _(w,A){if(A&&w>=A.length){var I=new f.BufferGeometry,T=new Float32Array(3*w),P=0;return A.forEach(C=>{T[P++]=C[0],T[P++]=C[1],T[P++]=C[2]}),I.setAttribute("position",new f.BufferAttribute(T,3)),I.setDrawRange(0,A.length),I}}function E(){var w=new Image;w.src=u(8);var A=new f.Texture;return A.image=w,A.needsUpdate=!0,A}function S(w,A,I,T,P,C){var R=new p(w,A,I,T,P,C);return R.fontFace=T,R.fontSize=P,R.fontWeight=C,R.material.map.generateMipmaps=!1,R.material.map.anisotropy=4,R.material.sizeAttenuation=!1,R.material.alphaTest=.5,R.material.transparent=!0,R.material.depthWrite=!1,R.material.depthTest=!1,R.center.set(.5,-1.2),R.renderOrder=1e4,R}l.getBoundingBox=d,l.createNewURL=m,l.createBufferGeometry=_,l.getCircularTexture=E,l.resolveURL=y,l.loadExternalFile=b,l.loadExternalFiles=v,l.PhongToToon=M,l.createNewSpriteText=S},(o,l,u)=>{u.r(l),u.d(l,{Face3:()=>b,Geometry:()=>m});var c=u(4),f=new c.Matrix4,h=new c.Object3D,p=new c.Vector3,y=new c.Vector3;function m(){this.uuid=c.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.normals=[],this.uvs=[],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1,this.morphNormalsReady=!1}m.prototype=Object.assign(Object.create(c.EventDispatcher.prototype),{constructor:m,isGeometry:!0,applyMatrix4:function(g){for(var M,_=new c.Matrix3().getNormalMatrix(g),E=0,S=this.vertices.length;E<S;E++)M=this.vertices[E],M.applyMatrix4(g);for(var w,A=0,I=this.faces.length;A<I;A++){w=this.faces[A],w.normal.applyMatrix3(_).normalize();for(var T=0,P=w.vertexNormals.length;T<P;T++)w.vertexNormals[T].applyMatrix3(_).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(g){return f.makeRotationX(g),this.applyMatrix4(f),this},rotateY:function(g){return f.makeRotationY(g),this.applyMatrix4(f),this},rotateZ:function(g){return f.makeRotationZ(g),this.applyMatrix4(f),this},translate:function(g,M,_){return f.makeTranslation(g,M,_),this.applyMatrix4(f),this},scale:function(g,M,_){return f.makeScale(g,M,_),this.applyMatrix4(f),this},lookAt:function(g){return h.lookAt(g),h.updateMatrix(),this.applyMatrix4(h.matrix),this},fromBufferGeometry:function(g){function M(H,X,re,j){var G=I===void 0?[]:[_.colors[H].clone(),_.colors[X].clone(),_.colors[re].clone()],W=A===void 0?[]:[new c.Vector3().fromBufferAttribute(A,H),new c.Vector3().fromBufferAttribute(A,X),new c.Vector3().fromBufferAttribute(A,re)],K=new b(H,X,re,W,G,j);_.faces.push(K),T!==void 0&&_.faceVertexUvs[0].push([new c.Vector2().fromBufferAttribute(T,H),new c.Vector2().fromBufferAttribute(T,X),new c.Vector2().fromBufferAttribute(T,re)]),P!==void 0&&_.faceVertexUvs[1].push([new c.Vector2().fromBufferAttribute(P,H),new c.Vector2().fromBufferAttribute(P,X),new c.Vector2().fromBufferAttribute(P,re)])}var _=this,E=g.index===null?void 0:g.index,S=g.attributes;if(S.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var w=S.position,A=S.normal,I=S.color,T=S.uv,P=S.uv2;P!==void 0&&(this.faceVertexUvs[1]=[]);for(var C=0;C<w.count;C++)_.vertices.push(new c.Vector3().fromBufferAttribute(w,C)),I!==void 0&&_.colors.push(new c.Color().fromBufferAttribute(I,C));var R=g.groups;if(0<R.length)for(var L=0;L<R.length;L++)for(var N=R[L],x=N.start,O=N.count,B=x,D=x+O;B<D;B+=3)E===void 0?M(B,B+1,B+2,N.materialIndex):M(E.getX(B),E.getX(B+1),E.getX(B+2),N.materialIndex);else if(E!==void 0)for(var k=0;k<E.count;k+=3)M(E.getX(k),E.getX(k+1),E.getX(k+2));else for(var U=0;U<w.count;U+=3)M(U,U+1,U+2);return this.computeFaceNormals(),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(p).negate(),this.translate(p.x,p.y,p.z),this},normalize:function(){this.computeBoundingSphere();var g=this.boundingSphere.center,M=this.boundingSphere.radius,_=M===0?1:1/M,E=new c.Matrix4;return E.set(_,0,0,-_*g.x,0,_,0,-_*g.y,0,0,_,-_*g.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var g=new c.Vector3,M=new c.Vector3,_=0,E=this.faces.length;_<E;_++){var S=this.faces[_],w=this.vertices[S.a],A=this.vertices[S.b],I=this.vertices[S.c];g.subVectors(I,A),M.subVectors(w,A),g.cross(M),g.normalize(),S.normal.copy(g)}},computeVertexNormals:function(){for(var g=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],M=Array(this.vertices.length),_=0,E=this.vertices.length;_<E;_++)M[_]=new c.Vector3;if(g)for(var S=new c.Vector3,w=new c.Vector3,A=0,I=this.faces.length;A<I;A++){var T=this.faces[A],P=this.vertices[T.a],C=this.vertices[T.b],R=this.vertices[T.c];S.subVectors(R,C),w.subVectors(P,C),S.cross(w),M[T.a].add(S),M[T.b].add(S),M[T.c].add(S)}else{this.computeFaceNormals();for(var L,N=0,x=this.faces.length;N<x;N++)L=this.faces[N],M[L.a].add(L.normal),M[L.b].add(L.normal),M[L.c].add(L.normal)}for(var O=0,B=this.vertices.length;O<B;O++)M[O].normalize();for(var D=0,k=this.faces.length;D<k;D++){var U=this.faces[D],H=U.vertexNormals;H.length===3?(H[0].copy(M[U.a]),H[1].copy(M[U.b]),H[2].copy(M[U.c])):(H[0]=M[U.a].clone(),H[1]=M[U.b].clone(),H[2]=M[U.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),M},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var g=0,M=this.faces.length;g<M;g++){var _=this.faces[g],E=_.vertexNormals;E.length===3?(E[0].copy(_.normal),E[1].copy(_.normal),E[2].copy(_.normal)):(E[0]=_.normal.clone(),E[1]=_.normal.clone(),E[2]=_.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var g,M=0,_=this.faces.length;M<_;M++){g=this.faces[M],g.__originalFaceNormal?g.__originalFaceNormal.copy(g.normal):g.__originalFaceNormal=g.normal.clone(),g.__originalVertexNormals||(g.__originalVertexNormals=[]);for(var E=0,S=g.vertexNormals.length;E<S;E++)g.__originalVertexNormals[E]?g.__originalVertexNormals[E].copy(g.vertexNormals[E]):g.__originalVertexNormals[E]=g.vertexNormals[E].clone()}var w=new m;w.faces=this.faces;for(var A=0,I=this.morphTargets.length;A<I;A++){if(!this.morphNormals[A]){this.morphNormals[A]={},this.morphNormals[A].faceNormals=[],this.morphNormals[A].vertexNormals=[];for(var T=this.morphNormals[A].faceNormals,P=this.morphNormals[A].vertexNormals,C=0,R=this.faces.length;C<R;C++){var L=new c.Vector3,N={a:new c.Vector3,b:new c.Vector3,c:new c.Vector3};T.push(L),P.push(N)}}var x=this.morphNormals[A];w.vertices=this.morphTargets[A].vertices,w.computeFaceNormals();var O=w.computeVertexNormals();if(O&&0<O.length){this.morphTargets[A].normals=Array(this.vertices.length);for(var B=0;B<O.length;B++)this.morphTargets[A].normals[B]=O[B].clone()}for(var D=0,k=this.faces.length;D<k;D++){var U=this.faces[D],H=x.faceNormals[D],X=x.vertexNormals[D];H.copy(U.normal),X.a.copy(U.vertexNormals[0]),X.b.copy(U.vertexNormals[1]),X.c.copy(U.vertexNormals[2])}}for(var re,j=0,G=this.faces.length;j<G;j++)re=this.faces[j],re.normal=re.__originalFaceNormal,re.vertexNormals=re.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new c.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingSphere.setFromPoints(this.vertices)},mergeMorph:function(g,M){var _=this.morphTargets.length,E=this.morphTargets,S=g.morphTargets,w=this.morphColors.length,A=this.morphColors,I=g.morphColors;if(0<_&&_==S.length)for(var T=0,P=E.length;T<P;T++){for(var C=E[T],R=S[T],L=0,N=R.vertices.length;L<N;L++){var x=R.vertices[L],O=x.clone();M!==void 0&&O.applyMatrix4(M),C.vertices.push(O)}if(C.normals&&R.normals)for(var B=0;B<R.normals.length;B+=3)y.set(R.normals2[B],R.normals2[B+1],R.normals2[B+2]),M!==void 0&&y.applyMatrix4(M),C.normals.push(y.x,y.y,y.z)}if(0<w&&w==I.length)for(var D=0,k=A.length;D<k;D++)for(var U=A[D],H=I[D],X=0,re=H.colors;X<re;X++)U.colors.push(H.colors[X].clone())},merge:function(g,M){var _=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(g&&g.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",g);var E,S=this.vertices.length,w=this.vertices,A=g.vertices,I=g.normals,T=this.faces,P=g.faces,C=this.colors,R=g.colors;M!==void 0&&(E=new c.Matrix3().getNormalMatrix(M));for(var L=0,N=A.length;L<N;L++){var x=A[L],O=x.clone();M!==void 0&&O.applyMatrix4(M),w.push(O)}for(var B=0;B<I.length;B+=3)y.set(I[B],I[B+1],I[B+2]),M!==void 0&&y.applyMatrix4(M),this.normals.push(y.x,y.y,y.z);for(var D=0,k=R.length;D<k;D++)typeof R[D]=="number"?C.push(R[D]):C.push(R[D].clone());for(var U=0,H=P.length;U<H;U++){var X=P[U],re=void 0,j=void 0,G=X.vertexNormals,W=X.vertexColors,K=new b(X.a+S,X.b+S,X.c+S);K.normal.copy(X.normal),E!==void 0&&K.normal.applyMatrix3(E).normalize();for(var ee=0,q=G.length;ee<q;ee++)re=G[ee].clone(),E!==void 0&&re.applyMatrix3(E).normalize(),K.vertexNormals.push(re);K.color.copy(X.color);for(var ie=0,Y=W.length;ie<Y;ie++)j=W[ie],K.vertexColors.push(j.clone());K.materialIndex=X.materialIndex+_,T.push(K)}for(var te,F=0,$=g.faceVertexUvs.length;F<$;F++){te=g.faceVertexUvs[F],this.faceVertexUvs[F]===void 0&&(this.faceVertexUvs[F]=[]);for(var Q=0,V=te.length;Q<V;Q++){for(var z=te[Q],oe=[],ae=0,le=z.length;ae<le;ae++)oe.push(z[ae].clone());this.faceVertexUvs[F].push(oe)}}this.mergeMorph(g,M)},mergeMesh:function(g){return g&&g.isMesh?(g.matrixAutoUpdate&&g.updateMatrix(),void this.merge(g.geometry,g.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",g)},mergeVertices:function(){for(var g=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,M={},_=[],E=[],S=Math.pow(10,g),w=0,A=this.vertices.length;w<A;w++){var I=this.vertices[w],T=Math.round(I.x*S)+"_"+Math.round(I.y*S)+"_"+Math.round(I.z*S);M[T]===void 0?(M[T]=w,_.push(this.vertices[w]),E[w]=_.length-1):E[w]=E[M[T]]}for(var P,C=[],R=0,L=this.faces.length;R<L;R++){P=this.faces[R],P.a=E[P.a],P.b=E[P.b],P.c=E[P.c];for(var N=[P.a,P.b,P.c],x=0;3>x;x++)if(N[x]===N[(x+1)%3]){C.push(R);break}}for(var O,B=C.length-1;0<=B;B--){O=C[B],this.faces.splice(O,1);for(var D=0,k=this.faceVertexUvs.length;D<k;D++)this.faceVertexUvs[D].splice(O,1)}var U=this.vertices.length-_.length;return this.vertices=_,U},setFromPoints:function(g){this.vertices=[];for(var M,_=0,E=g.length;_<E;_++)M=g[_],this.vertices.push(new c.Vector3(M.x,M.y,M.z||0));return this},sortFacesByMaterialIndex:function(){for(var g=this.faces,M=g.length,_=0;_<M;_++)g[_]._id=_;g.sort(function(P,C){return P.materialIndex-C.materialIndex});var E,S,w=this.faceVertexUvs[0],A=this.faceVertexUvs[1];w&&w.length===M&&(E=[]),A&&A.length===M&&(S=[]);for(var I,T=0;T<M;T++)I=g[T]._id,E&&E.push(w[I]),S&&S.push(A[I]);E&&(this.faceVertexUvs[0]=E),S&&(this.faceVertexUvs[1]=S)},toJSON:function(){function g(Y,te,F){return F?Y|1<<te:Y&~(1<<te)}function M(Y){var te=Y.x.toString()+Y.y.toString()+Y.z.toString();return L[te]===void 0&&(L[te]=R.length/3,R.push(Y.x,Y.y,Y.z)),L[te]}function _(Y){var te=Y.r.toString()+Y.g.toString()+Y.b.toString();return x[te]===void 0&&(x[te]=N.length,N.push(Y.getHex())),x[te]}function E(Y){var te=Y.x.toString()+Y.y.toString();return B[te]===void 0&&(B[te]=O.length/2,O.push(Y.x,Y.y)),B[te]}var S={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(S.uuid=this.uuid,S.type=this.type,this.name!==""&&(S.name=this.name),this.parameters!==void 0){var w=this.parameters;for(var A in w)w[A]!==void 0&&(S[A]=w[A]);return S}for(var I,T=[],P=0;P<this.vertices.length;P++)I=this.vertices[P],T.push(I.x,I.y,I.z);for(var C=[],R=[],L={},N=[],x={},O=[],B={},D=0;D<this.faces.length;D++){var k=this.faces[D],U=!0,H=!1,X=this.faceVertexUvs[0][D]!==void 0,re=0<k.normal.length(),j=0<k.vertexNormals.length,G=k.color.r!==1||k.color.g!==1||k.color.b!==1,W=0<k.vertexColors.length,K=0;if(K=g(K,0,0),K=g(K,1,U),K=g(K,2,H),K=g(K,3,X),K=g(K,4,re),K=g(K,5,j),K=g(K,6,G),K=g(K,7,W),C.push(K),C.push(k.a,k.b,k.c),C.push(k.materialIndex),X){var ee=this.faceVertexUvs[0][D];C.push(E(ee[0]),E(ee[1]),E(ee[2]))}if(re&&C.push(M(k.normal)),j){var q=k.vertexNormals;C.push(M(q[0]),M(q[1]),M(q[2]))}if(G&&C.push(_(k.color)),W){var ie=k.vertexColors;C.push(_(ie[0]),_(ie[1]),_(ie[2]))}}return S.data={},S.data.vertices=T,S.data.normals=R,0<N.length&&(S.data.colors=N),0<O.length&&(S.data.uvs=[O]),S.data.faces=C,S},clone:function(){return new m().copy(this)},copy:function(g){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=g.name;for(var M=g.vertices,_=0,E=M.length;_<E;_++)this.vertices.push(M[_].clone());for(var S=g.colors,w=0,A=S.length;w<A;w++)this.colors.push(S[w].clone());for(var I=g.faces,T=0,P=I.length;T<P;T++)this.faces.push(I[T].clone());for(var C,R=0,L=g.faceVertexUvs.length;R<L;R++){C=g.faceVertexUvs[R],this.faceVertexUvs[R]===void 0&&(this.faceVertexUvs[R]=[]);for(var N=0,x=C.length;N<x;N++){for(var O,B=C[N],D=[],k=0,U=B.length;k<U;k++)O=B[k],D.push(O.clone());this.faceVertexUvs[R].push(D)}}for(var H,X=g.morphTargets,re=0,j=X.length;re<j;re++){if(H={},H.name=X[re].name,X[re].vertices!==void 0){H.vertices=[];for(var G=0,W=X[re].vertices.length;G<W;G++)H.vertices.push(X[re].vertices[G].clone())}if(X[re].normals!==void 0){H.normals=[];for(var K=0,ee=X[re].normals.length;K<ee;K++)H.normals.push(X[re].normals[K].clone())}this.morphTargets.push(H)}for(var q,ie=g.morphNormals,Y=0,te=ie.length;Y<te;Y++){if(q={},ie[Y].vertexNormals!==void 0){q.vertexNormals=[];for(var F=0,$=ie[Y].vertexNormals.length;F<$;F++){var Q=ie[Y].vertexNormals[F],V={};V.a=Q.a.clone(),V.b=Q.b.clone(),V.c=Q.c.clone(),q.vertexNormals.push(V)}}if(ie[Y].faceNormals!==void 0){q.faceNormals=[];for(var z=0,oe=ie[Y].faceNormals.length;z<oe;z++)q.faceNormals.push(ie[Y].faceNormals[z].clone())}this.morphNormals.push(q)}for(var ae=g.skinWeights,le=0,fe=ae.length;le<fe;le++)this.skinWeights.push(ae[le].clone());for(var be=g.skinIndices,ye=0,he=be.length;ye<he;ye++)this.skinIndices.push(be[ye].clone());for(var ve=g.lineDistances,se=0,we=ve.length;se<we;se++)this.lineDistances.push(ve[se]);var pe=g.boundingBox;pe!==null&&(this.boundingBox=pe.clone());var ge=g.boundingSphere;return ge!==null&&(this.boundingSphere=ge.clone()),this.elementsNeedUpdate=g.elementsNeedUpdate,this.verticesNeedUpdate=g.verticesNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.lineDistancesNeedUpdate=g.lineDistancesNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,this},computeGroups(){var v,g,M=[],_=void 0,E=this.faces;for(g=0;g<E.length;g++){var S=E[g];S.materialIndex!==_&&(_=S.materialIndex,v!==void 0&&(v.count=3*g-v.start,M.push(v)),v={start:3*g,materialIndex:_})}return v!==void 0&&(v.count=3*g-v.start,M.push(v)),M},toBufferGeometry:function(){var g=new d().fromGeometry(this),M=new c.BufferGeometry,_=new Float32Array(3*g.vertices.length);if(M.setAttribute("position",new c.BufferAttribute(_,3).copyVector3sArray(g.vertices)),0<g.normals.length){var E=new Float32Array(3*g.normals.length);M.setAttribute("normal",new c.BufferAttribute(E,3).copyVector3sArray(g.normals))}if(0<g.colors.length){var S=new Float32Array(3*g.colors.length);M.setAttribute("color",new c.BufferAttribute(S,3).copyColorsArray(g.colors))}if(0<g.uvs.length){var w=new Float32Array(2*g.uvs.length);M.setAttribute("uv",new c.BufferAttribute(w,2).copyVector2sArray(g.uvs))}if(0<g.uvs2.length){var A=new Float32Array(2*g.uvs2.length);M.setAttribute("uv2",new c.BufferAttribute(A,2).copyVector2sArray(g.uvs2))}for(var I in M.groups=g.groups,g.morphTargets){for(var T=[],P=g.morphTargets[I],C=0,R=P.length;C<R;C++){var L=P[C],N=new c.Float32BufferAttribute(3*L.data.length,3);N.name=L.name,T.push(N.copyVector3sArray(L.data))}M.morphAttributes[I]=T}if(0<g.skinIndices.length){var x=new c.Float32BufferAttribute(4*g.skinIndices.length,4);M.setAttribute("skinIndex",x.copyVector4sArray(g.skinIndices))}if(0<g.skinWeights.length){var O=new c.Float32BufferAttribute(4*g.skinWeights.length,4);M.setAttribute("skinWeight",O.copyVector4sArray(g.skinWeights))}return g.boundingSphere!==null&&(M.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(M.boundingBox=g.boundingBox.clone()),M},toIndexedBufferGeometry:function(){var g=new c.BufferGeometry,M=new Float32Array(3*this.vertices.length);if(g.setAttribute("position",new c.BufferAttribute(M,3).copyVector3sArray(this.vertices)),0<this.normals.length){var _=new Float32Array(this.normals.length),E=new c.BufferAttribute(_,3).copyArray(this.normals);g.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var S=new Float32Array(2*this.uvs[0].length);g.setAttribute("uv",new c.BufferAttribute(S,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var w=new Float32Array(2*this.uvs[1].length);g.setAttribute("uv2",new c.BufferAttribute(w,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var A=[],I=0;I<this.colors.length;I++)A.push(new c.Color(this.colors[I]));var T=new Float32Array(3*A.length);g.setAttribute("color",new c.BufferAttribute(T,3).copyColorsArray(A))}else{for(var P=new Float32Array(3*this.vertices.length),C=0;C<3*this.vertices.length;C++)P[C]=1;g.setAttribute("color",new c.BufferAttribute(P,3))}if(0<this.faces.length){for(var R=[],L=[],N=0;N<this.faces.length;N++){L.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var x=this.faces[N].vertexColors;if(x.length===3)R.push(x[0],x[1],x[2]);else{var O=this.faces[N].color;R.push(O,O,O)}}g.setIndex(L),g.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var B=[],D=[],k=0,U=this.morphTargets.length;k<U;k++){var H=this.morphTargets[k],X=new c.Float32BufferAttribute(3*H.vertices.length,3);if(X.name=H.name,B.push(X.copyVector3sArray(H.vertices)),H.normals){var re=new c.Float32BufferAttribute(3*H.normals.length,3);re.name=H.name,D.push(re.copyVector3sArray(H.normals))}}g.morphAttributes.position=B,g.morphAttributes.normal=D}if(0<this.skinIndices.length){var j=new c.Float32BufferAttribute(4*this.skinIndices.length,4);g.setAttribute("skinIndex",j.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var G=new c.Float32BufferAttribute(4*this.skinWeights.length,4);g.setAttribute("skinWeight",G.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(g.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(g.boundingBox=this.boundingBox.clone()),g},computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(g){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(g)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),m.createBufferGeometryFromObject=function(v){var g=new c.BufferGeometry,M=v.geometry;if(v.isPoints||v.isLine){var _=new c.Float32BufferAttribute(3*M.vertices.length,3),E=new c.Float32BufferAttribute(3*M.colors.length,3);if(g.setAttribute("position",_.copyVector3sArray(M.vertices)),g.setAttribute("color",E.copyColorsArray(M.colors)),M.lineDistances&&M.lineDistances.length===M.vertices.length){var S=new c.Float32BufferAttribute(M.lineDistances.length,1);g.setAttribute("lineDistance",S.copyArray(M.lineDistances))}M.boundingSphere!==null&&(g.boundingSphere=M.boundingSphere.clone()),M.boundingBox!==null&&(g.boundingBox=M.boundingBox.clone())}else v.isMesh&&(g=M.toBufferGeometry());return g};class d{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(g){var M,_,E=[],S=void 0,w=g.faces;for(_=0;_<w.length;_++){var A=w[_];A.materialIndex!==S&&(S=A.materialIndex,M!==void 0&&(M.count=3*_-M.start,E.push(M)),M={start:3*_,materialIndex:S})}M!==void 0&&(M.count=3*_-M.start,E.push(M)),this.groups=E}fromGeometry(g){var M,_=g.faces,E=g.vertices,S=g.faceVertexUvs,w=S[0]&&0<S[0].length,A=S[1]&&0<S[1].length,I=g.morphTargets,T=I.length;if(0<T){M=[];for(var P=0;P<T;P++)M[P]={name:I[P].name,data:[]};this.morphTargets.position=M}var C,R=g.morphNormals,L=R.length;if(0<L){C=[];for(var N=0;N<L;N++)C[N]={name:R[N].name,data:[]};this.morphTargets.normal=C}var x=g.skinIndices,O=g.skinWeights,B=x.length===E.length,D=O.length===E.length;0<E.length&&_.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var k,U=0;U<_.length;U++){k=_[U],this.vertices.push(E[k.a],E[k.b],E[k.c]);var H=k.vertexNormals;if(H.length===3)this.normals.push(H[0],H[1],H[2]);else{var X=k.normal;this.normals.push(X,X,X)}var re=k.vertexColors;if(re.length===3)this.colors.push(re[0],re[1],re[2]);else{var j=k.color;this.colors.push(j,j,j)}if(w===!0){var G=S[0][U];G===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",U),this.uvs.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs.push(G[0],G[1],G[2])}if(A===!0){var W=S[1][U];W===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",U),this.uvs2.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs2.push(W[0],W[1],W[2])}for(var K,ee=0;ee<T;ee++)K=I[ee].vertices,M[ee].data.push(K[k.a],K[k.b],K[k.c]);for(var q,ie=0;ie<L;ie++)q=R[ie].vertexNormals[U],C[ie].data.push(q.a,q.b,q.c);B&&this.skinIndices.push(x[k.a],x[k.b],x[k.c]),D&&this.skinWeights.push(O[k.a],O[k.b],O[k.c])}return this.computeGroups(g),this.verticesNeedUpdate=g.verticesNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),this}}class b{constructor(g,M,_,E,S){var w=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=g,this.b=M,this.c=_,this.normal=E&&E.isVector3?E:new c.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=S&&S.isColor?S:new c.Color,this.vertexColors=Array.isArray(S)?S:[],this.materialIndex=w}clone(){return new this.constructor().copy(this)}copy(g){this.a=g.a,this.b=g.b,this.c=g.c,this.normal.copy(g.normal),this.color.copy(g.color),this.materialIndex=g.materialIndex;for(var M=0,_=g.vertexNormals.length;M<_;M++)this.vertexNormals[M]=g.vertexNormals[M].clone();for(var E=0,S=g.vertexColors.length;E<S;E++)this.vertexColors[E]=g.vertexColors[E].clone();return this}}},o=>{o.exports=EB},o=>{o.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg=="},(o,l)=>{l.augmentMorphColor=function(){return function(u){u.vertexShader=u.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3182
+ `}),y=y+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(c))+")({"+p.main.map(function(g){return""+JSON.stringify(g)+": "+h.main[g].toString()}).join(",")+"}))(self);";var m=new window.Blob([y],{type:"text/javascript"});if(f.bare)return m;var d=window.URL||window.webkitURL||window.mozURL||window.msURL,b=d.createObjectURL(m),v=new window.Worker(b);return v.objectURL=b,v}}(Cf)),Cf.exports}function JB(n){var e=this.constructor;return this.then(function(t){return e.resolve(n()).then(function(){return t})},function(t){return e.resolve(n()).then(function(){return e.reject(t)})})}function KB(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError(typeof n+" "+n+" is not iterable(cannot read property Symbol(Symbol.iterator))"));var r=Array.prototype.slice.call(n);if(r.length===0)return t([]);var s=r.length;function o(u,c){if(c&&(typeof c=="object"||typeof c=="function")){var f=c.then;if(typeof f=="function"){f.call(c,function(h){o(u,h)},function(h){r[u]={status:"rejected",reason:h},--s===0&&t(r)});return}}r[u]={status:"fulfilled",value:c},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function wx(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}wx.prototype=Error.prototype;function qB(n){var e=this;return new e(function(t,i){if(!(n&&typeof n.length<"u"))return i(new TypeError("Promise.any accepts an array"));var r=Array.prototype.slice.call(n);if(r.length===0)return i();for(var s=[],o=0;o<r.length;o++)try{e.resolve(r[o]).then(t).catch(function(l){s.push(l),s.length===r.length&&i(new wx(s,"All promises were rejected"))})}catch(l){i(l)}})}var QB=setTimeout;function Mx(n){return!!(n&&typeof n.length<"u")}function eF(){}function tF(n,e){return function(){n.apply(e,arguments)}}function yt(n){if(!(this instanceof yt))throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],_x(n,this)}function Sx(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,yt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?Af:Ga)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){Ga(e.promise,r);return}Af(e.promise,i)})}function Af(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&(typeof e=="object"||typeof e=="function")){var t=e.then;if(e instanceof yt){n._state=3,n._value=e,Rf(n);return}else if(typeof t=="function"){_x(tF(t,e),n);return}}n._state=1,n._value=e,Rf(n)}catch(i){Ga(n,i)}}function Ga(n,e){n._state=2,n._value=e,Rf(n)}function Rf(n){n._state===2&&n._deferreds.length===0&&yt._immediateFn(function(){n._handled||yt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)Sx(n,n._deferreds[e]);n._deferreds=null}function nF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function _x(n,e){var t=!1;try{n(function(i){t||(t=!0,Af(e,i))},function(i){t||(t=!0,Ga(e,i))})}catch(i){if(t)return;t=!0,Ga(e,i)}}yt.prototype.catch=function(n){return this.then(null,n)},yt.prototype.then=function(n,e){var t=new this.constructor(eF);return Sx(this,new nF(n,e,t)),t},yt.prototype.finally=JB,yt.all=function(n){return new yt(function(e,t){if(!Mx(n))return t(new TypeError("Promise.all accepts an array"));var i=Array.prototype.slice.call(n);if(i.length===0)return e([]);var r=i.length;function s(l,u){try{if(u&&(typeof u=="object"||typeof u=="function")){var c=u.then;if(typeof c=="function"){c.call(u,function(f){s(l,f)},t);return}}i[l]=u,--r===0&&e(i)}catch(f){t(f)}}for(var o=0;o<i.length;o++)s(o,i[o])})},yt.any=qB,yt.allSettled=KB,yt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===yt?n:new yt(function(e){e(n)})},yt.reject=function(n){return new yt(function(e,t){t(n)})},yt.race=function(n){return new yt(function(e,t){if(!Mx(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)yt.resolve(n[i]).then(e,t)})},yt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){QB(n,0)},yt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const iF=Rl(Object.freeze(Object.defineProperty({__proto__:null,default:yt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Ki,()=>(()=>{var t=[(o,l,u)=>{u(1);var c=u(2),f=c.version,h=function(){this.Revision=f,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=u(3).Geometry,this.Glyph=u(16).Glyph,this.Glyphset=u(18).Glyphset,this.Pointset=u(22).Pointset,this.Label=u(17).Label,this.Lines=u(24).Lines,this.TextureArray=u(25).TextureArray,this.TextureSlides=u(27).TextureSlides,this.Renderer=u(30).Renderer,this.Scene=u(32).Scene,this.GeometryCSG=u(50).GeometryCSG,this.GlyphsetCSG=u(56).GlyphsetCSG,this.Viewport=u(43).Viewport,this.CameraControls=u(43).CameraControls,this.SmoothCameraTransition=u(43).SmoothCameraTransition,this.RayCaster=u(43).RayCaster,this.CameraAutoTumble=u(43).CameraAutoTumble,this.StereoEffect=u(43).StereoEffect,this.loadExternalFile=u(5).loadExternalFile,this.loadExternalFiles=u(5).loadExternalFiles,this.THREE=u(4)};o.exports=new h},o=>{o.exports=JR()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.11.7","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}')},function(o,l,u){var c=u(4),f=u(5).toBufferGeometry,h=(y,m,d)=>{var b=f(y,d),v=!1;1>d.opacity&&(v=!0);var g;if(b._video===void 0){var M=d.localTimeEnabled||d.localMorphColour;m?(g=m,g.morphTargets=M,g.morphNormals=d.localTimeEnabled):b instanceof c.BufferGeometry&&b.attributes.color===void 0?g=new c.MeshPhongMaterial({color:d.colour,morphTargets:M,morphNormals:d.localTimeEnabled,transparent:v,opacity:d.opacity,side:c.DoubleSide}):g=new c.MeshPhongMaterial({color:d.colour,morphTargets:M,morphNormals:d.localTimeEnabled,vertexColors:c.VertexColors,transparent:v,opacity:d.opacity,side:c.DoubleSide}),d.localMorphColour&&b.morphAttributes.color&&(g.onBeforeCompile=u(9).augmentMorphColor())}else{var _=b._video.createCanvasVideoTexture();g=new c.MeshBasicMaterial({morphTargets:d.localTimeEnabled,color:new c.Color(1,1,1),transparent:v,opacity:d.opacity,map:_,side:c.DoubleSide}),this.videoHandler=b._video}return new c.Mesh(b,g)},p=function(){u(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(y,m,d)=>{if(!(this.morph&&this.morph.geometry&&y!=null)){var b=h(y,m,d);this.setMesh(b,d.localTimeEnabled,d.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var y=this.geometry.boundingBox.max,m=this.geometry.boundingBox.min,d=new c.Vector2(0-m.x,0-m.y),b=new c.Vector2(y.x-m.x,y.y-m.y);this.geometry.faceVertexUvs[0]=[];for(var v=0;v<this.geometry.faces.length;v++){var g=this.geometry.vertices[this.geometry.faces[v].a],M=this.geometry.vertices[this.geometry.faces[v].b],_=this.geometry.vertices[this.geometry.faces[v].c];geometry.faceVertexUvs[0].push([new c.Vector2((g.x+d.x)/b.x,(g.y+d.y)/b.y),new c.Vector2((M.x+d.x)/b.x,(M.y+d.y)/b.y),new c.Vector2((_.x+d.x)/b.x,(_.y+d.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=y=>{this.morph.material.wireframe=y},this.editVertices=function(y,m){if(y&&y.length){var d=this.getMorph(),b=d.geometry.getAttribute("position");if(!d||0>m)return;var v=3*m;y.forEach(g=>{b.array[v++]=g[0],b.array[v++]=g[1],b.array[v++]=g[2]}),b.needsUpdate=!0,d.geometry.computeBoundingBox(),d.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};p.prototype=Object.create(u(10).ZincObject.prototype),l.Geometry=p},o=>{o.exports=cB},(o,l,u)=>{function c(w){throw new TypeError('"'+w+'" is read-only')}var f=u(4),h=u(6).Geometry,p=u(7).default;function y(w){var A=w,I=u(0).modelPrefix;return I&&(I[I.length-1]!="/"&&c("prefix"),/^(?:[a-z]+:)?\/\//i.test(w)||(A=I+w)),A}function m(w,A){var I=(P,C)=>{try{var R=new URL(P,C).href;if(P&&2>P.split("?").length){var L=C.split("?");L.length===2&&(R=R+"?"+L[1])}return R}catch{console.error("There is an issue creating the url link with: ".concat(P,"."))}};if(!Array.isArray(w))return I(w,A);var T=[];return w.forEach(P=>{T.push(I(P,A))}),T}function d(w,A,I,T,P){var C=w.morphTargetInfluences,R=void 0;w.geometry&&(R=w.geometry.morphAttributes);var L=!1;if(C&&R&&R.position){T.set(0,0,0),P.set(0,0,0);for(var N=0;N<C.length;N++)0<C[N]&&(L=!0,I.setFromArray(R.position[N].array),T.add(I.min.multiplyScalar(C[N])),P.add(I.max.multiplyScalar(C[N])));L&&A.set(T,P)}L||A.setFromBufferAttribute(w.geometry.attributes.position),w.updateWorldMatrix(!0,!0),A.applyMatrix4(w.matrixWorld)}function b(w,A,I,T){var P=new XMLHttpRequest;P.open("GET",y(w),!0),P.onreadystatechange=()=>{P.readyState==4&&(P.status==200?I(P.responseText,A):T(w))},P.send(null)}function v(w,A,I){function T(N,x){R[x]=N,C++,C==P&&A(R)}for(var P=w.length,C=0,R=[],L=0;L<P;L++)b(w[L],L,T,I)}l.getColorsRGB=(w,A)=>{var I=Math.floor(A/3),T=A%3,P=0;T==0?P=w[I].r:T==1?P=w[I].g:T==2&&(P=w[I].b);var C=new f.Color(P);return[C.r,C.g,C.b]},l.updateMorphColorAttribute=function(w,A){if(A&&w&&w.morphAttributes&&w.morphAttributes.color){var I=w.morphAttributes.color,T=A.morphTargetInfluences,P=T.length;w.deleteAttribute("morphColor0"),w.deleteAttribute("morphColor1");for(var C=0,R=[],L=0;1>C||L<P;L++)0<T[L]&&(C++,R.push([L,T[L]]));R.length==2?(w.setAttribute("morphColor0",I[R[0][0]]),w.setAttribute("morphColor1",I[R[1][0]])):R.length==1&&(w.setAttribute("morphColor0",I[R[0][0]]),w.setAttribute("morphColor1",I[R[0][0]]))}},l.toBufferGeometry=(w,A)=>{var I;return w instanceof h?(A.localTimeEnabled&&!w.morphNormalsReady&&(w.morphNormals==null||w.morphNormals.length==0)&&w.computeMorphNormals(),I=w.toIndexedBufferGeometry(),A.localMorphColour&&g(w,I)):w instanceof f.BufferGeometry&&(I=w.clone()),I.colorsNeedUpdate=!0,I.computeBoundingBox(),I.computeBoundingSphere(),w._video&&(I._video=w._video),I},l.copyMorphColorsToBufferGeometry=(w,A)=>{if(w&&w.morphColors&&0<w.morphColors.length){for(var I=[],T=w.morphColors,P=u(5).getColorsRGB,C=0,R=T.length;C<R;C++){for(var L=T[C],N=[],x=0;x<w.faces.length;x++){var O=w.faces[x],B=P(L.colors,O.a);N.push(B[0],B[1],B[2]),B=P(L.colors,O.b),N.push(B[0],B[1],B[2]),B=P(L.colors,O.c),N.push(B[0],B[1],B[2])}var D=new f.Float32BufferAttribute(3*(3*w.faces.length),3);D.name=L.name,I.push(D.copyArray(N))}A.morphAttributes.color=I}};var g=(w,A)=>{if(w&&w.morphColors&&0<w.morphColors.length){for(var I=[],T=w.morphColors,P=u(5).getColorsRGB,C=0,R=T.length;C<R;C++){for(var L,N=T[C],x=[],O=0;O<3*N.colors.length;O++)L=P(N.colors,O),x.push(L[0],L[1],L[2]);var B=new f.Float32BufferAttribute(x,3);B.name=N.name,I.push(B)}A.morphAttributes.color=I}};l.mergeVertices=function(w){var A=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;A=Math.max(A,Number.EPSILON);for(var I,T={},P=w.getIndex(),C=w.getAttribute("position"),R=P?P.count:C.count,L=0,N=Object.keys(w.attributes),x={},O={},le=[],B=["getX","getY","getZ","getW"],D=0,k=N.length;D<k;D++){I=N[D],x[I]=[];var U=w.morphAttributes[I];U&&(O[I]=Array(U.length).fill().map(()=>[]))}for(var H=Math.log10(1/A),X=Math.pow(10,H),D=0;D<R;D++){for(var re=P?P.getX(D):D,j="",G=0,k=N.length;G<k;G++)for(var I=N[G],W=w.getAttribute(I),K=W.itemSize,ee=0;ee<K;ee++)j+="".concat(~~(W[B[ee]](re)*X),",");if(j in T)le.push(T[j]);else{for(var G=0,k=N.length;G<k;G++)for(var q,I=N[G],W=w.getAttribute(I),U=w.morphAttributes[I],K=W.itemSize,ie=x[I],Y=O[I],ee=0;ee<K;ee++)if(q=B[ee],ie.push(W[q](re)),U)for(var te=0,F=U.length;te<F;te++)Y[te].push(U[te][q](re));T[j]=L,le.push(L),L++}}for(var $=w.clone(),D=0,k=N.length;D<k;D++){var W,I=N[D],Q=w.getAttribute(I),V=new Q.array.constructor(x[I]);if(Q.isInterleavedBufferAttribute?W=new f.BufferAttribute(V,Q.itemSize,Q.itemSize):(W=w.getAttribute(I).clone(),W.setArray(V)),$.setAttribute(I,W),I in O)for(var z,G=0;G<O[I].length;G++)z=w.morphAttributes[I][G].clone(),z.setArray(new z.array.constructor(O[I][G])),$.morphAttributes[I][G]=z}var oe=Uint8Array;le.length>=Math.pow(2,8)&&(oe=Uint16Array),le.length>=Math.pow(2,16)&&(oe=Uint32Array);var ae=new oe(le),le=null;return P===null?le=new f.BufferAttribute(ae,1):(le=w.getIndex().clone(),le.setArray(ae)),$.setIndex(le),$};function M(w){if(w.isMeshPhongMaterial){var A=new f.MeshToonMaterial({color:w.color.clone(),morphTargets:w.morphTargets,morphNormals:w.morphNormals,vertexColors:w.vertexColors,transparent:w.transparent,opacity:w.opacity,side:w.side});return w.map&&(A.map=w.map),A}return w}function _(w,A){if(A&&w>=A.length){var I=new f.BufferGeometry,T=new Float32Array(3*w),P=0;return A.forEach(C=>{T[P++]=C[0],T[P++]=C[1],T[P++]=C[2]}),I.setAttribute("position",new f.BufferAttribute(T,3)),I.setDrawRange(0,A.length),I}}function E(){var w=new Image;w.src=u(8);var A=new f.Texture;return A.image=w,A.needsUpdate=!0,A}function S(w,A,I,T,P,C){var R=new p(w,A,I,T,P,C);return R.fontFace=T,R.fontSize=P,R.fontWeight=C,R.material.map.generateMipmaps=!1,R.material.map.anisotropy=4,R.material.sizeAttenuation=!1,R.material.alphaTest=.5,R.material.transparent=!0,R.material.depthWrite=!1,R.material.depthTest=!1,R.center.set(.5,-1.2),R.renderOrder=1e4,R}l.getBoundingBox=d,l.createNewURL=m,l.createBufferGeometry=_,l.getCircularTexture=E,l.resolveURL=y,l.loadExternalFile=b,l.loadExternalFiles=v,l.PhongToToon=M,l.createNewSpriteText=S},(o,l,u)=>{u.r(l),u.d(l,{Face3:()=>b,Geometry:()=>m});var c=u(4),f=new c.Matrix4,h=new c.Object3D,p=new c.Vector3,y=new c.Vector3;function m(){this.uuid=c.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.normals=[],this.uvs=[],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1,this.morphNormalsReady=!1}m.prototype=Object.assign(Object.create(c.EventDispatcher.prototype),{constructor:m,isGeometry:!0,applyMatrix4:function(g){for(var M,_=new c.Matrix3().getNormalMatrix(g),E=0,S=this.vertices.length;E<S;E++)M=this.vertices[E],M.applyMatrix4(g);for(var w,A=0,I=this.faces.length;A<I;A++){w=this.faces[A],w.normal.applyMatrix3(_).normalize();for(var T=0,P=w.vertexNormals.length;T<P;T++)w.vertexNormals[T].applyMatrix3(_).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(g){return f.makeRotationX(g),this.applyMatrix4(f),this},rotateY:function(g){return f.makeRotationY(g),this.applyMatrix4(f),this},rotateZ:function(g){return f.makeRotationZ(g),this.applyMatrix4(f),this},translate:function(g,M,_){return f.makeTranslation(g,M,_),this.applyMatrix4(f),this},scale:function(g,M,_){return f.makeScale(g,M,_),this.applyMatrix4(f),this},lookAt:function(g){return h.lookAt(g),h.updateMatrix(),this.applyMatrix4(h.matrix),this},fromBufferGeometry:function(g){function M(H,X,re,j){var G=I===void 0?[]:[_.colors[H].clone(),_.colors[X].clone(),_.colors[re].clone()],W=A===void 0?[]:[new c.Vector3().fromBufferAttribute(A,H),new c.Vector3().fromBufferAttribute(A,X),new c.Vector3().fromBufferAttribute(A,re)],K=new b(H,X,re,W,G,j);_.faces.push(K),T!==void 0&&_.faceVertexUvs[0].push([new c.Vector2().fromBufferAttribute(T,H),new c.Vector2().fromBufferAttribute(T,X),new c.Vector2().fromBufferAttribute(T,re)]),P!==void 0&&_.faceVertexUvs[1].push([new c.Vector2().fromBufferAttribute(P,H),new c.Vector2().fromBufferAttribute(P,X),new c.Vector2().fromBufferAttribute(P,re)])}var _=this,E=g.index===null?void 0:g.index,S=g.attributes;if(S.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var w=S.position,A=S.normal,I=S.color,T=S.uv,P=S.uv2;P!==void 0&&(this.faceVertexUvs[1]=[]);for(var C=0;C<w.count;C++)_.vertices.push(new c.Vector3().fromBufferAttribute(w,C)),I!==void 0&&_.colors.push(new c.Color().fromBufferAttribute(I,C));var R=g.groups;if(0<R.length)for(var L=0;L<R.length;L++)for(var N=R[L],x=N.start,O=N.count,B=x,D=x+O;B<D;B+=3)E===void 0?M(B,B+1,B+2,N.materialIndex):M(E.getX(B),E.getX(B+1),E.getX(B+2),N.materialIndex);else if(E!==void 0)for(var k=0;k<E.count;k+=3)M(E.getX(k),E.getX(k+1),E.getX(k+2));else for(var U=0;U<w.count;U+=3)M(U,U+1,U+2);return this.computeFaceNormals(),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(p).negate(),this.translate(p.x,p.y,p.z),this},normalize:function(){this.computeBoundingSphere();var g=this.boundingSphere.center,M=this.boundingSphere.radius,_=M===0?1:1/M,E=new c.Matrix4;return E.set(_,0,0,-_*g.x,0,_,0,-_*g.y,0,0,_,-_*g.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var g=new c.Vector3,M=new c.Vector3,_=0,E=this.faces.length;_<E;_++){var S=this.faces[_],w=this.vertices[S.a],A=this.vertices[S.b],I=this.vertices[S.c];g.subVectors(I,A),M.subVectors(w,A),g.cross(M),g.normalize(),S.normal.copy(g)}},computeVertexNormals:function(){for(var g=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],M=Array(this.vertices.length),_=0,E=this.vertices.length;_<E;_++)M[_]=new c.Vector3;if(g)for(var S=new c.Vector3,w=new c.Vector3,A=0,I=this.faces.length;A<I;A++){var T=this.faces[A],P=this.vertices[T.a],C=this.vertices[T.b],R=this.vertices[T.c];S.subVectors(R,C),w.subVectors(P,C),S.cross(w),M[T.a].add(S),M[T.b].add(S),M[T.c].add(S)}else{this.computeFaceNormals();for(var L,N=0,x=this.faces.length;N<x;N++)L=this.faces[N],M[L.a].add(L.normal),M[L.b].add(L.normal),M[L.c].add(L.normal)}for(var O=0,B=this.vertices.length;O<B;O++)M[O].normalize();for(var D=0,k=this.faces.length;D<k;D++){var U=this.faces[D],H=U.vertexNormals;H.length===3?(H[0].copy(M[U.a]),H[1].copy(M[U.b]),H[2].copy(M[U.c])):(H[0]=M[U.a].clone(),H[1]=M[U.b].clone(),H[2]=M[U.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),M},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var g=0,M=this.faces.length;g<M;g++){var _=this.faces[g],E=_.vertexNormals;E.length===3?(E[0].copy(_.normal),E[1].copy(_.normal),E[2].copy(_.normal)):(E[0]=_.normal.clone(),E[1]=_.normal.clone(),E[2]=_.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var g,M=0,_=this.faces.length;M<_;M++){g=this.faces[M],g.__originalFaceNormal?g.__originalFaceNormal.copy(g.normal):g.__originalFaceNormal=g.normal.clone(),g.__originalVertexNormals||(g.__originalVertexNormals=[]);for(var E=0,S=g.vertexNormals.length;E<S;E++)g.__originalVertexNormals[E]?g.__originalVertexNormals[E].copy(g.vertexNormals[E]):g.__originalVertexNormals[E]=g.vertexNormals[E].clone()}var w=new m;w.faces=this.faces;for(var A=0,I=this.morphTargets.length;A<I;A++){if(!this.morphNormals[A]){this.morphNormals[A]={},this.morphNormals[A].faceNormals=[],this.morphNormals[A].vertexNormals=[];for(var T=this.morphNormals[A].faceNormals,P=this.morphNormals[A].vertexNormals,C=0,R=this.faces.length;C<R;C++){var L=new c.Vector3,N={a:new c.Vector3,b:new c.Vector3,c:new c.Vector3};T.push(L),P.push(N)}}var x=this.morphNormals[A];w.vertices=this.morphTargets[A].vertices,w.computeFaceNormals();var O=w.computeVertexNormals();if(O&&0<O.length){this.morphTargets[A].normals=Array(this.vertices.length);for(var B=0;B<O.length;B++)this.morphTargets[A].normals[B]=O[B].clone()}for(var D=0,k=this.faces.length;D<k;D++){var U=this.faces[D],H=x.faceNormals[D],X=x.vertexNormals[D];H.copy(U.normal),X.a.copy(U.vertexNormals[0]),X.b.copy(U.vertexNormals[1]),X.c.copy(U.vertexNormals[2])}}for(var re,j=0,G=this.faces.length;j<G;j++)re=this.faces[j],re.normal=re.__originalFaceNormal,re.vertexNormals=re.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new c.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingSphere.setFromPoints(this.vertices)},mergeMorph:function(g,M){var _=this.morphTargets.length,E=this.morphTargets,S=g.morphTargets,w=this.morphColors.length,A=this.morphColors,I=g.morphColors;if(0<_&&_==S.length)for(var T=0,P=E.length;T<P;T++){for(var C=E[T],R=S[T],L=0,N=R.vertices.length;L<N;L++){var x=R.vertices[L],O=x.clone();M!==void 0&&O.applyMatrix4(M),C.vertices.push(O)}if(C.normals&&R.normals)for(var B=0;B<R.normals.length;B+=3)y.set(R.normals2[B],R.normals2[B+1],R.normals2[B+2]),M!==void 0&&y.applyMatrix4(M),C.normals.push(y.x,y.y,y.z)}if(0<w&&w==I.length)for(var D=0,k=A.length;D<k;D++)for(var U=A[D],H=I[D],X=0,re=H.colors;X<re;X++)U.colors.push(H.colors[X].clone())},merge:function(g,M){var _=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(g&&g.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",g);var E,S=this.vertices.length,w=this.vertices,A=g.vertices,I=g.normals,T=this.faces,P=g.faces,C=this.colors,R=g.colors;M!==void 0&&(E=new c.Matrix3().getNormalMatrix(M));for(var L=0,N=A.length;L<N;L++){var x=A[L],O=x.clone();M!==void 0&&O.applyMatrix4(M),w.push(O)}for(var B=0;B<I.length;B+=3)y.set(I[B],I[B+1],I[B+2]),M!==void 0&&y.applyMatrix4(M),this.normals.push(y.x,y.y,y.z);for(var D=0,k=R.length;D<k;D++)typeof R[D]=="number"?C.push(R[D]):C.push(R[D].clone());for(var U=0,H=P.length;U<H;U++){var X=P[U],re=void 0,j=void 0,G=X.vertexNormals,W=X.vertexColors,K=new b(X.a+S,X.b+S,X.c+S);K.normal.copy(X.normal),E!==void 0&&K.normal.applyMatrix3(E).normalize();for(var ee=0,q=G.length;ee<q;ee++)re=G[ee].clone(),E!==void 0&&re.applyMatrix3(E).normalize(),K.vertexNormals.push(re);K.color.copy(X.color);for(var ie=0,Y=W.length;ie<Y;ie++)j=W[ie],K.vertexColors.push(j.clone());K.materialIndex=X.materialIndex+_,T.push(K)}for(var te,F=0,$=g.faceVertexUvs.length;F<$;F++){te=g.faceVertexUvs[F],this.faceVertexUvs[F]===void 0&&(this.faceVertexUvs[F]=[]);for(var Q=0,V=te.length;Q<V;Q++){for(var z=te[Q],oe=[],ae=0,le=z.length;ae<le;ae++)oe.push(z[ae].clone());this.faceVertexUvs[F].push(oe)}}this.mergeMorph(g,M)},mergeMesh:function(g){return g&&g.isMesh?(g.matrixAutoUpdate&&g.updateMatrix(),void this.merge(g.geometry,g.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",g)},mergeVertices:function(){for(var g=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,M={},_=[],E=[],S=Math.pow(10,g),w=0,A=this.vertices.length;w<A;w++){var I=this.vertices[w],T=Math.round(I.x*S)+"_"+Math.round(I.y*S)+"_"+Math.round(I.z*S);M[T]===void 0?(M[T]=w,_.push(this.vertices[w]),E[w]=_.length-1):E[w]=E[M[T]]}for(var P,C=[],R=0,L=this.faces.length;R<L;R++){P=this.faces[R],P.a=E[P.a],P.b=E[P.b],P.c=E[P.c];for(var N=[P.a,P.b,P.c],x=0;3>x;x++)if(N[x]===N[(x+1)%3]){C.push(R);break}}for(var O,B=C.length-1;0<=B;B--){O=C[B],this.faces.splice(O,1);for(var D=0,k=this.faceVertexUvs.length;D<k;D++)this.faceVertexUvs[D].splice(O,1)}var U=this.vertices.length-_.length;return this.vertices=_,U},setFromPoints:function(g){this.vertices=[];for(var M,_=0,E=g.length;_<E;_++)M=g[_],this.vertices.push(new c.Vector3(M.x,M.y,M.z||0));return this},sortFacesByMaterialIndex:function(){for(var g=this.faces,M=g.length,_=0;_<M;_++)g[_]._id=_;g.sort(function(P,C){return P.materialIndex-C.materialIndex});var E,S,w=this.faceVertexUvs[0],A=this.faceVertexUvs[1];w&&w.length===M&&(E=[]),A&&A.length===M&&(S=[]);for(var I,T=0;T<M;T++)I=g[T]._id,E&&E.push(w[I]),S&&S.push(A[I]);E&&(this.faceVertexUvs[0]=E),S&&(this.faceVertexUvs[1]=S)},toJSON:function(){function g(Y,te,F){return F?Y|1<<te:Y&~(1<<te)}function M(Y){var te=Y.x.toString()+Y.y.toString()+Y.z.toString();return L[te]===void 0&&(L[te]=R.length/3,R.push(Y.x,Y.y,Y.z)),L[te]}function _(Y){var te=Y.r.toString()+Y.g.toString()+Y.b.toString();return x[te]===void 0&&(x[te]=N.length,N.push(Y.getHex())),x[te]}function E(Y){var te=Y.x.toString()+Y.y.toString();return B[te]===void 0&&(B[te]=O.length/2,O.push(Y.x,Y.y)),B[te]}var S={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(S.uuid=this.uuid,S.type=this.type,this.name!==""&&(S.name=this.name),this.parameters!==void 0){var w=this.parameters;for(var A in w)w[A]!==void 0&&(S[A]=w[A]);return S}for(var I,T=[],P=0;P<this.vertices.length;P++)I=this.vertices[P],T.push(I.x,I.y,I.z);for(var C=[],R=[],L={},N=[],x={},O=[],B={},D=0;D<this.faces.length;D++){var k=this.faces[D],U=!0,H=!1,X=this.faceVertexUvs[0][D]!==void 0,re=0<k.normal.length(),j=0<k.vertexNormals.length,G=k.color.r!==1||k.color.g!==1||k.color.b!==1,W=0<k.vertexColors.length,K=0;if(K=g(K,0,0),K=g(K,1,U),K=g(K,2,H),K=g(K,3,X),K=g(K,4,re),K=g(K,5,j),K=g(K,6,G),K=g(K,7,W),C.push(K),C.push(k.a,k.b,k.c),C.push(k.materialIndex),X){var ee=this.faceVertexUvs[0][D];C.push(E(ee[0]),E(ee[1]),E(ee[2]))}if(re&&C.push(M(k.normal)),j){var q=k.vertexNormals;C.push(M(q[0]),M(q[1]),M(q[2]))}if(G&&C.push(_(k.color)),W){var ie=k.vertexColors;C.push(_(ie[0]),_(ie[1]),_(ie[2]))}}return S.data={},S.data.vertices=T,S.data.normals=R,0<N.length&&(S.data.colors=N),0<O.length&&(S.data.uvs=[O]),S.data.faces=C,S},clone:function(){return new m().copy(this)},copy:function(g){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=g.name;for(var M=g.vertices,_=0,E=M.length;_<E;_++)this.vertices.push(M[_].clone());for(var S=g.colors,w=0,A=S.length;w<A;w++)this.colors.push(S[w].clone());for(var I=g.faces,T=0,P=I.length;T<P;T++)this.faces.push(I[T].clone());for(var C,R=0,L=g.faceVertexUvs.length;R<L;R++){C=g.faceVertexUvs[R],this.faceVertexUvs[R]===void 0&&(this.faceVertexUvs[R]=[]);for(var N=0,x=C.length;N<x;N++){for(var O,B=C[N],D=[],k=0,U=B.length;k<U;k++)O=B[k],D.push(O.clone());this.faceVertexUvs[R].push(D)}}for(var H,X=g.morphTargets,re=0,j=X.length;re<j;re++){if(H={},H.name=X[re].name,X[re].vertices!==void 0){H.vertices=[];for(var G=0,W=X[re].vertices.length;G<W;G++)H.vertices.push(X[re].vertices[G].clone())}if(X[re].normals!==void 0){H.normals=[];for(var K=0,ee=X[re].normals.length;K<ee;K++)H.normals.push(X[re].normals[K].clone())}this.morphTargets.push(H)}for(var q,ie=g.morphNormals,Y=0,te=ie.length;Y<te;Y++){if(q={},ie[Y].vertexNormals!==void 0){q.vertexNormals=[];for(var F=0,$=ie[Y].vertexNormals.length;F<$;F++){var Q=ie[Y].vertexNormals[F],V={};V.a=Q.a.clone(),V.b=Q.b.clone(),V.c=Q.c.clone(),q.vertexNormals.push(V)}}if(ie[Y].faceNormals!==void 0){q.faceNormals=[];for(var z=0,oe=ie[Y].faceNormals.length;z<oe;z++)q.faceNormals.push(ie[Y].faceNormals[z].clone())}this.morphNormals.push(q)}for(var ae=g.skinWeights,le=0,fe=ae.length;le<fe;le++)this.skinWeights.push(ae[le].clone());for(var be=g.skinIndices,ye=0,he=be.length;ye<he;ye++)this.skinIndices.push(be[ye].clone());for(var ve=g.lineDistances,se=0,we=ve.length;se<we;se++)this.lineDistances.push(ve[se]);var pe=g.boundingBox;pe!==null&&(this.boundingBox=pe.clone());var ge=g.boundingSphere;return ge!==null&&(this.boundingSphere=ge.clone()),this.elementsNeedUpdate=g.elementsNeedUpdate,this.verticesNeedUpdate=g.verticesNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.lineDistancesNeedUpdate=g.lineDistancesNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,this},computeGroups(){var v,g,M=[],_=void 0,E=this.faces;for(g=0;g<E.length;g++){var S=E[g];S.materialIndex!==_&&(_=S.materialIndex,v!==void 0&&(v.count=3*g-v.start,M.push(v)),v={start:3*g,materialIndex:_})}return v!==void 0&&(v.count=3*g-v.start,M.push(v)),M},toBufferGeometry:function(){var g=new d().fromGeometry(this),M=new c.BufferGeometry,_=new Float32Array(3*g.vertices.length);if(M.setAttribute("position",new c.BufferAttribute(_,3).copyVector3sArray(g.vertices)),0<g.normals.length){var E=new Float32Array(3*g.normals.length);M.setAttribute("normal",new c.BufferAttribute(E,3).copyVector3sArray(g.normals))}if(0<g.colors.length){var S=new Float32Array(3*g.colors.length);M.setAttribute("color",new c.BufferAttribute(S,3).copyColorsArray(g.colors))}if(0<g.uvs.length){var w=new Float32Array(2*g.uvs.length);M.setAttribute("uv",new c.BufferAttribute(w,2).copyVector2sArray(g.uvs))}if(0<g.uvs2.length){var A=new Float32Array(2*g.uvs2.length);M.setAttribute("uv2",new c.BufferAttribute(A,2).copyVector2sArray(g.uvs2))}for(var I in M.groups=g.groups,g.morphTargets){for(var T=[],P=g.morphTargets[I],C=0,R=P.length;C<R;C++){var L=P[C],N=new c.Float32BufferAttribute(3*L.data.length,3);N.name=L.name,T.push(N.copyVector3sArray(L.data))}M.morphAttributes[I]=T}if(0<g.skinIndices.length){var x=new c.Float32BufferAttribute(4*g.skinIndices.length,4);M.setAttribute("skinIndex",x.copyVector4sArray(g.skinIndices))}if(0<g.skinWeights.length){var O=new c.Float32BufferAttribute(4*g.skinWeights.length,4);M.setAttribute("skinWeight",O.copyVector4sArray(g.skinWeights))}return g.boundingSphere!==null&&(M.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(M.boundingBox=g.boundingBox.clone()),M},toIndexedBufferGeometry:function(){var g=new c.BufferGeometry,M=new Float32Array(3*this.vertices.length);if(g.setAttribute("position",new c.BufferAttribute(M,3).copyVector3sArray(this.vertices)),0<this.normals.length){var _=new Float32Array(this.normals.length),E=new c.BufferAttribute(_,3).copyArray(this.normals);g.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var S=new Float32Array(2*this.uvs[0].length);g.setAttribute("uv",new c.BufferAttribute(S,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var w=new Float32Array(2*this.uvs[1].length);g.setAttribute("uv2",new c.BufferAttribute(w,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var A=[],I=0;I<this.colors.length;I++)A.push(new c.Color(this.colors[I]));var T=new Float32Array(3*A.length);g.setAttribute("color",new c.BufferAttribute(T,3).copyColorsArray(A))}else{for(var P=new Float32Array(3*this.vertices.length),C=0;C<3*this.vertices.length;C++)P[C]=1;g.setAttribute("color",new c.BufferAttribute(P,3))}if(0<this.faces.length){for(var R=[],L=[],N=0;N<this.faces.length;N++){L.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var x=this.faces[N].vertexColors;if(x.length===3)R.push(x[0],x[1],x[2]);else{var O=this.faces[N].color;R.push(O,O,O)}}g.setIndex(L),g.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var B=[],D=[],k=0,U=this.morphTargets.length;k<U;k++){var H=this.morphTargets[k],X=new c.Float32BufferAttribute(3*H.vertices.length,3);if(X.name=H.name,B.push(X.copyVector3sArray(H.vertices)),H.normals){var re=new c.Float32BufferAttribute(3*H.normals.length,3);re.name=H.name,D.push(re.copyVector3sArray(H.normals))}}g.morphAttributes.position=B,g.morphAttributes.normal=D}if(0<this.skinIndices.length){var j=new c.Float32BufferAttribute(4*this.skinIndices.length,4);g.setAttribute("skinIndex",j.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var G=new c.Float32BufferAttribute(4*this.skinWeights.length,4);g.setAttribute("skinWeight",G.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(g.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(g.boundingBox=this.boundingBox.clone()),g},computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(g){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(g)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),m.createBufferGeometryFromObject=function(v){var g=new c.BufferGeometry,M=v.geometry;if(v.isPoints||v.isLine){var _=new c.Float32BufferAttribute(3*M.vertices.length,3),E=new c.Float32BufferAttribute(3*M.colors.length,3);if(g.setAttribute("position",_.copyVector3sArray(M.vertices)),g.setAttribute("color",E.copyColorsArray(M.colors)),M.lineDistances&&M.lineDistances.length===M.vertices.length){var S=new c.Float32BufferAttribute(M.lineDistances.length,1);g.setAttribute("lineDistance",S.copyArray(M.lineDistances))}M.boundingSphere!==null&&(g.boundingSphere=M.boundingSphere.clone()),M.boundingBox!==null&&(g.boundingBox=M.boundingBox.clone())}else v.isMesh&&(g=M.toBufferGeometry());return g};class d{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(g){var M,_,E=[],S=void 0,w=g.faces;for(_=0;_<w.length;_++){var A=w[_];A.materialIndex!==S&&(S=A.materialIndex,M!==void 0&&(M.count=3*_-M.start,E.push(M)),M={start:3*_,materialIndex:S})}M!==void 0&&(M.count=3*_-M.start,E.push(M)),this.groups=E}fromGeometry(g){var M,_=g.faces,E=g.vertices,S=g.faceVertexUvs,w=S[0]&&0<S[0].length,A=S[1]&&0<S[1].length,I=g.morphTargets,T=I.length;if(0<T){M=[];for(var P=0;P<T;P++)M[P]={name:I[P].name,data:[]};this.morphTargets.position=M}var C,R=g.morphNormals,L=R.length;if(0<L){C=[];for(var N=0;N<L;N++)C[N]={name:R[N].name,data:[]};this.morphTargets.normal=C}var x=g.skinIndices,O=g.skinWeights,B=x.length===E.length,D=O.length===E.length;0<E.length&&_.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var k,U=0;U<_.length;U++){k=_[U],this.vertices.push(E[k.a],E[k.b],E[k.c]);var H=k.vertexNormals;if(H.length===3)this.normals.push(H[0],H[1],H[2]);else{var X=k.normal;this.normals.push(X,X,X)}var re=k.vertexColors;if(re.length===3)this.colors.push(re[0],re[1],re[2]);else{var j=k.color;this.colors.push(j,j,j)}if(w===!0){var G=S[0][U];G===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",U),this.uvs.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs.push(G[0],G[1],G[2])}if(A===!0){var W=S[1][U];W===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",U),this.uvs2.push(new c.Vector2,new c.Vector2,new c.Vector2)):this.uvs2.push(W[0],W[1],W[2])}for(var K,ee=0;ee<T;ee++)K=I[ee].vertices,M[ee].data.push(K[k.a],K[k.b],K[k.c]);for(var q,ie=0;ie<L;ie++)q=R[ie].vertexNormals[U],C[ie].data.push(q.a,q.b,q.c);B&&this.skinIndices.push(x[k.a],x[k.b],x[k.c]),D&&this.skinWeights.push(O[k.a],O[k.b],O[k.c])}return this.computeGroups(g),this.verticesNeedUpdate=g.verticesNeedUpdate,this.normalsNeedUpdate=g.normalsNeedUpdate,this.colorsNeedUpdate=g.colorsNeedUpdate,this.uvsNeedUpdate=g.uvsNeedUpdate,this.groupsNeedUpdate=g.groupsNeedUpdate,g.boundingSphere!==null&&(this.boundingSphere=g.boundingSphere.clone()),g.boundingBox!==null&&(this.boundingBox=g.boundingBox.clone()),this}}class b{constructor(g,M,_,E,S){var w=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=g,this.b=M,this.c=_,this.normal=E&&E.isVector3?E:new c.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=S&&S.isColor?S:new c.Color,this.vertexColors=Array.isArray(S)?S:[],this.materialIndex=w}clone(){return new this.constructor().copy(this)}copy(g){this.a=g.a,this.b=g.b,this.c=g.c,this.normal.copy(g.normal),this.color.copy(g.color),this.materialIndex=g.materialIndex;for(var M=0,_=g.vertexNormals.length;M<_;M++)this.vertexNormals[M]=g.vertexNormals[M].clone();for(var E=0,S=g.vertexColors.length;E<S;E++)this.vertexColors[E]=g.vertexColors[E].clone();return this}}},o=>{o.exports=EB},o=>{o.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg=="},(o,l)=>{l.augmentMorphColor=function(){return function(u){u.vertexShader=u.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3183
3183
  `)),u.vertexShader=u.vertexShader.replace("#include <color_vertex>",["vColor.xyz = color.xyz;","#ifdef USE_MORPHTARGETS","vColor = morphColor0 * morphTargetInfluences[ 0 ];","vColor += morphColor1 * morphTargetInfluences[ 1 ];","#endif"].join(`
3184
3184
  `))}}},(o,l,u)=>{var c=u(4),f=u(5).createBufferGeometry,h=u(5).resolveURL,p=0,y=function(){return"pr"+p++},m=function(){this.isZincObject=!0,this.geometry=void 0,this.morph=void 0,this.group=new c.Group,this._lod=new(u(11)).LOD(this),this.groupName=void 0,this.timeEnabled=!1,this.morphColour=!1,this.inbuildTime=0,this.mixer=void 0,this.animationGroup=void 0,this.duration=6e3,this.clipAction=void 0,this.userData={},this.videoHandler=void 0,this.marker=void 0,this.markerNumber=void 0,this.markerUpdateRequired=!0,this.closestVertexIndex=-1,this.boundingBoxUpdateRequired=!0,this.cachedBoundingBox=new c.Box3,this.anatomicalId=void 0,this.region=void 0,this.animationClip=void 0,this.markerMode="inherited",this.uuid=y(),this._v1=new c.Vector3,this._v2=new c.Vector3,this._b1=new c.Box3,this.center=new c.Vector3,this.radius=0,this.visible=!0,this.drawRange=-1};m.prototype.setDuration=function(d){this.duration=d,this.clipAction&&this.clipAction.setDuration(this.duration)},m.prototype.getDuration=function(){return this.duration},m.prototype.setRegion=function(d){this.region=d},m.prototype.getRegion=function(){return this.region},m.prototype.getMorph=function(){var d=this._lod.getCurrentMorph();return d||this.morph},m.prototype.getGroup=function(){return this.group},m.prototype.setMorph=function(d){this.morph=d,this.group.add(this.morph);var b=this._lod.calculateDistance("far");this._lod.addLevel(d,b),this._lod.setMaterial(d.material)},m.prototype.checkTransparentMesh=function(){},m.prototype.setMesh=function(d,b,v){this.animationGroup=new c.AnimationObjectGroup(d),this.mixer=new c.AnimationMixer(this.animationGroup);var g=d.geometry;if(this.geometry=d.geometry,this.clipAction=void 0,g&&g.morphAttributes){var M=g.morphAttributes.position;M||(M=g.morphAttributes.color?g.morphAttributes.color:g.morphAttributes.normal),M&&(this.animationClip=c.AnimationClip.CreateClipsFromMorphTargetSequences(M,10,!0),this.animationClip&&this.animationClip[0]!=null&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=c.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=b,this.morphColour=v,d.userData=this,d.matrixAutoUpdate=!1,this.setMorph(d),this.checkTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(g.setAttribute("morphTarget0",g.getAttribute("position")),g.setAttribute("morphTarget1",g.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},m.prototype.setName=function(d){this.groupName=d,this._lod.setName(d)},m.prototype.getCurrentTime=function(){if(this.clipAction){var d=this.clipAction.time/this.clipAction._clip.duration;return this.duration*d}return this.inbuildTime},m.prototype.setMorphTime=function(d){var b=!1;if(this.clipAction){var v=d/this.duration,g=this.clipAction._clip.duration,M=v*g;M!=this.clipAction.time&&(this.clipAction.time=M,b=!0),b&&this.isTimeVarying()&&this.mixer.update(0)}else{var _=d;_=d>this.duration?this.duration:0>d?0:d,_!=this.inbuildTime&&(this.inbuildTime=_,b=!0)}b&&(this.boundingBoxUpdateRequired=!0,this._lod.updateMorphColorAttribute(!0),this.timeEnabled&&(this.markerUpdateRequired=!0))},m.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},m.prototype.getVisibility=function(){return this.visible},m.prototype.setVisibility=function(d){d!==this.visible&&(this.visible=d,this.group.visible=d,this.region&&(this.region.pickableUpdateRequired=!0))},m.prototype.setAlpha=function(d){var b=this._lod._material,v=!1;1>d&&(v=!0),b.opacity=d,b.transparent=v,this.checkTransparentMesh()},m.prototype.setFrustumCulled=function(d){this._lod.setFrustumCulled(d)},m.prototype.setVertexColors=function(d){this._lod.setVertexColors(d)},m.prototype.getColour=function(){return this._lod._material?this._lod._material.color:void 0},m.prototype.setColour=function(d){this._lod.setColour(d)},m.prototype.getColourHex=function(){return!this.morphColour&&this._lod._material&&this._lod._material.color?this._lod._material.color.getHexString():void 0},m.prototype.setColourHex=function(d){this._lod._material.color.setHex(d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.color.setHex(d)},m.prototype.setEmissiveRGB=function(d){this._lod._material&&this._lod._material.emissive&&this._lod._material.emissive.setRGB(...d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.emissive.setRGB(...d)},m.prototype.setMaterial=function(d){this._lod.setMaterial(d)},m.prototype.getClosestVertexIndex=function(){var d=-1,b=this.getMorph();if(b&&b.geoemtry){var v=b.geometry.attributes.position;if(this._b1.setFromBufferAttribute(v),this._b1.getCenter(this._v1),v)for(var g=-1,M=0,_=0;_<v.count;_++)this._v2.fromArray(v.array,3*_),M=this._v2.distanceTo(this._v1),g==-1?g=M:g>M&&(g=M,d=_)}return d},m.prototype.getClosestVertex=function(d){var b=new c.Vector3;this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex());var v=this.getMorph();if(v&&v.geometry&&0<=this.closestVertexIndex){var g=v.morphTargetInfluences,M=v.geometry.morphAttributes;if(g&&M&&M.position){for(var _=!1,E=0;E<g.length;E++)0<g[E]&&(_=!0,this._v1.fromArray(M.position[E].array,3*this.closestVertexIndex),b.add(this._v1.multiplyScalar(g[E])));if(_)return d?b.applyMatrix4(v.matrixWorld):b}else return b.fromArray(v.geometry.attributes.position.array,3*this.closestVertexIndex),d?b.applyMatrix4(v.matrixWorld):b}return this.getBoundingBox(),b.copy(this.center),d?b.applyMatrix4(this.morph.matrixWorld):b},m.prototype.getBoundingBox=function(){if(this.visible){var d=this._lod.getCurrentMorph();if(d&&d.visible)return this.boundingBoxUpdateRequired&&(u(5).getBoundingBox(d,this.cachedBoundingBox,this._b1,this._v1,this._v2),this.cachedBoundingBox.getCenter(this.center),this.radius=this.center.distanceTo(this.cachedBoundingBox.max),this.boundingBoxUpdateRequired=!1),this.cachedBoundingBox}},m.prototype.dispose=function(){this._lod.dispose(),this.animationGroup=void 0,this.mixer=void 0,this.morph=void 0,this.group=void 0,this.clipAction=void 0,this.groupName=void 0},m.prototype.markerIsRequired=function(d){return!!(this.visible&&(this.markerMode==="on"||d&&d.displayMarkers&&this.markerMode==="inherited"))},m.prototype.updateMarker=function(d,b){if(d==!1&&this.markerIsRequired(b)){var v=b.ndcToBeUpdated;if(this.groupName){if(this.marker||(this.marker=new(u(14)).Marker(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var g=this.getClosestVertex(!1);g&&(this.marker.setPosition(g.x,g.y,g.z),this.markerUpdateRequired=!1)}this.marker.isEnabled()||(b.markersList&&!(this.marker.uuid in b.markersList)&&(v=!0,b.markersList[this.marker.uuid]=this.marker),this.marker.enable(),this.group.add(this.marker.morph)),this.marker.setNumber(this.markerNumber),this.markerImgURL?this.marker.loadUserSprite(this.markerImgURL):this.marker.setDefaultSprite(),b&&b.camera&&(v||b.markerCluster.markerUpdateRequired)&&(this.marker.updateNDC(b.camera.cameraObject),b.markerCluster.markerUpdateRequired=!0)}}else this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.group.remove(this.marker.morph),b.markersList&&this.marker.uuid in b.markersList&&(b.markerCluster.markerUpdateRequired=!0,delete b.markersList[this.marker.uuid])),this.markerUpdateRequired=!0},m.prototype.processMarkerVisual=function(d,b){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(d,b)},m.prototype.initiateMorphColor=function(){this.morphColour==1&&this._lod.updateMorphColorAttribute(!1)},m.prototype.setRenderOrder=function(d){this._lod.setRenderOrder(d)},m.prototype.getClosestVertexDOMElementCoords=function(d){if(d&&d.camera){var b=!0,v=this.getClosestVertex(!0);return v.project(d.camera),v.z=Math.min(Math.max(v.z,0),1),(1<v.x||-1>v.x||1<v.y||-1>v.y)&&(b=!1),d.getZincCameraControls().getRelativeCoordsFromNDC(v.x,v.y,v),{position:v,inView:b}}},m.prototype.setMarkerMode=function(d,b){d!==this.markerMode&&(this.markerMode=d==="on"||d==="off"?d:"inherited",this.region&&(this.region.pickableUpdateRequired=!0)),b&&(this.markerNumber=b.number,this.markerImgURL=b.imgURL)},m.prototype.render=function(d,b,v,g){if(this.visible&&!(this.timeEnabled&&b)&&this._lod.update(v,this.center),b==!0){if(this.clipAction&&this.isTimeVarying())this.mixer.update(d);else{var M=this.inbuildTime+d;M>this.duration&&(M-=this.duration),this.inbuildTime=M}this.visible&&d!=0&&(this.boundingBoxUpdateRequired=!0,this.morphColour==1&&this._lod.updateMorphColorAttribute(!0))}this.updateMarker(b,g)},m.prototype.addLOD=function(d,b,v,g,M){this._lod.addLevelFromURL(d,b,v,g,M)},m.prototype.addVertices=function(d){var b=this.getMorph(),v=void 0;if(!b)v=f(500,d),this.drawRange=d.length;else if(-1<this.drawRange){var g=b.geometry.getAttribute("position");d.forEach(M=>{g.setXYZ(this.drawRange,M[0],M[1],M[2]),++this.drawRange}),g.needsUpdate=!0,b.geometry.setDrawRange(0,this.drawRange),b.geometry.computeBoundingBox(),b.geometry.computeBoundingSphere(),v=b.geoemtry,this.boundingBoxUpdateRequired=!0}return v},m.prototype.setPosition=function(d,b,v){var g=this.getGroup();g&&(g.position.set(d,b,v),g.updateMatrix(),this.boundingBoxUpdateRequired=!0)},m.prototype.loadAdditionalSources=function(d){d.load(h(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))},m.prototype.setScaleAll=function(d){var b=this.getGroup();b&&(b.scale.set(d,d,d),b.updateMatrix(),this.boundingBoxUpdateRequired=!0)},l.ZincObject=m},(o,l,u)=>{var c=u(4),f=u(5).updateMorphColorAttribute,h=u(5).toBufferGeometry,p=function(y){this.levels=[],this._currentLevel=0,this._renderOrder=1,this._material=void 0,this._secondaryMaterial=void 0,this._loader=void 0,this._parent=y,this.addLevel=(d,b)=>{if(d){var v,g=Math.abs(b);for(v=0;v<this.levels.length&&!(g<this.levels[v].distance);v++);this.levels.splice(v,0,{distance:g,morph:d,loaded:!0,loading:!1,url:""}),d.renderOrder=this._renderOrder}},this.levelLoaded=(d,b)=>{if(d){for(var v=Math.abs(b),g=0;g<this.levels.length;g++)if(v===this.levels[g].distance){this._parent.group.add(d),this.levels[g].morph=d,this.levels[g].loaded=!0,this.levels[g].loading=!1;break}this.checkTransparentMesh()}},this.addLevelFromURL=(d,b,v,g,M)=>{this._loader=d;var _,E=this.calculateDistance(b);for(_=0;_<this.levels.length&&!(E<this.levels[_].distance);_++);this.levels.splice(_,0,{distance:E,morph:void 0,loaded:!1,loading:!1,url:v,index:g}),M&&this.loadLevel(_)},this.loadLevel=d=>{var b=this.levels[d];return b.morph||b.loaded||b.loading||(b.loading=!0,this._loader.load(b.url,this.lodLoader(b.distance),void 0,void 0,{index:b.index})),b.morph===void 0},this.calculateDistance=function(d){this._parent.getBoundingBox();var b=this._parent.radius,v=0;return d==="far"?v=4.5*b:d==="medium"?v=2.5*b:d=="close"&&(v=0),v},this.containsLevels=()=>!!(this.levels&&1<this.levels.length),this.checkTransparentMesh=()=>{var d=this.levels[this._currentLevel];this._material&&(this._material.transparent?(!this._secondaryMaterial&&(this._secondaryMaterial=this._material.clone(),this._secondaryMaterial.side=c.FrontSide),this._secondaryMaterial.opacity=this._material.opacity,this._secondaryMaterial.emissive&&this._secondaryMaterial.emissive.copy(this._material.emissive),this._secondaryMaterial.needsUpdate=!0,!d.secondaryMesh&&(d.secondaryMesh=new c.Mesh(d.morph.geometry,this._secondaryMaterial),d.secondaryMesh.renderOrder=d.morph.renderOrder+1,d.secondaryMesh.userData=d.morph.userData,d.secondaryMesh.name=d.morph.name),this._material.side=c.BackSide,this._material.needsUpdate=!0,!d.secondaryMesh.parent&&(d.morph.add(d.secondaryMesh),this._parent.animationGroup&&this._parent.animationGroup.add(d.secondaryMesh))):(d.secondaryMesh&&(d.morph.remove(d.secondaryMesh),this._parent.animationGroup&&(this._parent.animationGroup.uncache(d.secondaryMesh),this._parent.animationGroup.remove(d.secondaryMesh))),this._material.side=c.DoubleSide,this._material.needsUpdate=!0))},this.dispose=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&d.morph.geometry.dispose()}),this._material&&this._material.dispose(),this._secondaryMaterial&&this._secondaryMaterial.dispose()},this.getCurrentLevel=()=>this._currentLevel,this.getCurrentMorph=()=>{var d=this.levels[this._currentLevel];return d&&d.morph?d.morph:this._parent.morph},this.lodLoader=function(d){return b=>{var v=this._material,g={localTimeEnabled:this._parent.timeEnabled,localMorphColour:this._parent.morphColour},M=h(b,g),_=void 0;this._parent.isGeometry?_=new c.Mesh(M,v):this._parent.isLines&&(_=new(u(12)).LineSegments(M,v)),_.userData=this._parent,_.renderOrder=this._renderOrder,b.dispose(),this.levelLoaded(_,d)}},this.updateMorphColorAttribute=d=>{if(this._material&&(this._material.vertexColors==c.VertexColors||this._material.vertexColors==!0))if(d){var b=this.getCurrentMorph();f(b.geometry,b)}else this.levels.forEach(v=>{v.morph&&v.morph.geometry&&f(v.morph.geometry,v.morph)})},this.setColour=d=>{this._material.color=d,this._secondaryMaterial&&(this._secondaryMaterial.color=d),m()},this.setFrustumCulled=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.frustumCulled=d),b.secondaryMesh&&(b.secondaryMesh.frustumCulled=d)})},this.setMaterial=d=>{d&&(!this._material||this._material.id!==d.id)&&(this._material=d,this._secondaryMaterial&&this._secondaryMaterial.dispose(),this._secondaryMaterial=d.clone(),this._secondaryMaterial.side=c.FrontSide,this._secondaryMaterial.transparent=!0,this.levels.forEach(b=>{b.morph&&(b.morph.material=this._material,b.morph.geometry&&(b.morph.geometry.colorsNeedUpdate=!0)),b.secondaryMesh&&(b.secondaryMesh.material=this._secondaryMaterial)}))},this.setName=d=>{this.levels.forEach(b=>{b.morph&&(b.morph.name=d),b.secondaryMesh&&(b.secondaryMesh.name=d)})},this.setRenderOrder=d=>{this._renderOrder=d,this.levels.forEach(b=>{b.morph&&(b.morph.renderOrder=d),b.secondaryMesh&&(b.secondaryMesh.renderOrder=d)})},this.setVertexColors=d=>{this._material.vertexColors=d,m(),this._secondaryMaterial&&(this._secondaryMaterial.vertexColors=d)},this.update=(d,b)=>{var v=this.levels;if(1<v.length){var g,M,_=d.cameraObject.position.distanceTo(b),E=-1,S=-1;for(g=0,M=v.length;g<M&&_>=v[g].distance;g++)v[g].morph?(-1<E&&v[E].morph&&(v[E].morph.visible=!1),E=g,v[g].morph.visible=!0,S=-1):S=g;for(-1<S&&this.loadLevel(S);g<M;g++)v[g].morph&&(-1<E?v[g].morph.visible=!1:(v[g].morph.visible=!0,E=g));this._currentLevel!=E&&(this._currentLevel=E,this.checkTransparentMesh())}},this.toggleMarker=(d,b)=>{this.levels.forEach(v=>{v.morph&&(b?v.morph.add(d):v.morph.remove(d))})};var m=()=>{this.levels.forEach(d=>{d.morph&&d.morph.geometry&&(d.morph.geometry.colorsNeedUpdate=!0)})}};l.LOD=p},(o,l,u)=>{u.r(l),u.d(l,{LineSegments:()=>y});var c=u(13),f=u(4),h=new f.Vector3,p=new f.Vector3;class y extends c.Line{constructor(d,b){super(d,b),this.type="LineSegments"}computeLineDistances(){var d=this.geometry;if(!d.isBufferGeometry)d.isGeometry&&console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(d.index===null){for(var b=d.attributes.position,v=[],g=0,M=b.count;g<M;g+=2)h.fromBufferAttribute(b,g),p.fromBufferAttribute(b,g+1),v[g]=g==0?0:v[g-1],v[g+1]=v[g]+h.distanceTo(p);d.setAttribute("lineDistance",new f.Float32BufferAttribute(v,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}y.prototype.isLineSegments=!0},(o,l,u)=>{u.r(l),u.d(l,{Line:()=>M});var c=u(4),f=new c.Vector3,h=new c.Vector3,p=new c.Matrix4,y=new c.Ray,m=new c.Sphere,d=new c.Vector3,b=new c.Vector3,v=new c.Vector3,g=new c.Vector3;class M extends c.Object3D{constructor(){var S=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,w=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.LineBasicMaterial;super(),this.type="Line",this.geometry=S,this.material=w,this.updateMorphTargets()}copy(S){return super.copy(S),this.material=S.material,this.geometry=S.geometry,this}computeLineDistances(){var S=this.geometry;if(!S.isBufferGeometry)S.isGeometry&&console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(S.index===null){for(var w=S.attributes.position,A=[0],I=1,T=w.count;I<T;I++)f.fromBufferAttribute(w,I-1),h.fromBufferAttribute(w,I),A[I]=A[I-1],A[I]+=f.distanceTo(h);S.setAttribute("lineDistance",new c.Float32BufferAttribute(A,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(S,w){var A=this.geometry,I=this.matrixWorld,T=S.params.Line.threshold,P=A.drawRange,C=A.morphAttributes.position;if(A.boundingSphere===null&&A.computeBoundingSphere(),m.copy(A.boundingSphere),m.applyMatrix4(I),m.radius+=T,S.ray.intersectsSphere(m)!==!1){p.copy(I).invert(),y.copy(S.ray).applyMatrix4(p);var R=T/((this.scale.x+this.scale.y+this.scale.z)/3),L=R*R,N=new c.Vector3,x=new c.Vector3,O=new c.Vector3,B=new c.Vector3,D=this.isLineSegments?2:1;if(A.isBufferGeometry){var k=A.index,U=A.attributes,H=U.position;if(k!==null)for(var X=Math.max(0,P.start),re=Math.min(k.count,P.start+P.count),j=X;j<re-1;j+=D){var G=k.getX(j),W=k.getX(j+1);_(N,x,this,H,C,G,W);var K=y.distanceSqToSegment(N,x,B,O);if(!(K>L)){B.applyMatrix4(this.matrixWorld);var ee=S.ray.origin.distanceTo(B);ee<S.near||ee>S.far||w.push({distance:ee,point:O.clone().applyMatrix4(this.matrixWorld),index:j,face:null,faceIndex:null,object:this})}}else for(var q=Math.max(0,P.start),ie=Math.min(H.count,P.start+P.count),Y=q;Y<ie-1;Y+=D){_(N,x,this,H,C,Y,Y+1);var te=y.distanceSqToSegment(N,x,B,O);if(!(te>L)){B.applyMatrix4(this.matrixWorld);var F=S.ray.origin.distanceTo(B);F<S.near||F>S.far||w.push({distance:F,point:O.clone().applyMatrix4(this.matrixWorld),index:Y,face:null,faceIndex:null,object:this})}}}else A.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var S=this.geometry;if(S.isBufferGeometry){var w=S.morphAttributes,A=Object.keys(w);if(0<A.length){var I=w[A[0]];if(I!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var T,P=0,C=I.length;P<C;P++)T=I[P].name||P+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[T]=P}}}else{var R=S.morphTargets;R!==void 0&&0<R.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function _(E,S,w,A,I,T,P){E.fromBufferAttribute(A,T),S.fromBufferAttribute(A,P);var C=w.morphTargetInfluences;if(w.material.morphTargets&&I&&C){d.set(0,0,0),b.set(0,0,0);for(var R=0,L=I.length;R<L;R++){var N=C[R],x=I[R];N!==0&&(v.fromBufferAttribute(x,T),g.fromBufferAttribute(x,P),d.addScaledVector(v.sub(E),N),b.addScaledVector(g.sub(S),N))}E.add(d),S.add(b)}}M.prototype.isLine=!0},(o,l,u)=>{var c=u(4),f=new Image(128,128);f.src=u(15);var h=new c.Texture;h.image=f,h.needsUpdate=!0;var p=[.02,.03,1],y=new c.SpriteMaterial({map:h,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),m=u(5).createNewSpriteText,d=function(b){u(10).ZincObject.call(this),this.texture=h;var v=void 0,g=void 0,M=void 0,_=void 0,E=void 0,S=!0;this.morph=new c.Group,this.group=this.morph,this.parent=b,this.isMarker=!0;var w=!1;this.ndc=new c.Vector3;var A=void 0,I=void 0,T=()=>{v=new c.Sprite(y),v.center.set(.5,0),this.morph.add(v),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,v.scale.set(p[0],p[1],p[2]),v.userData=this};this.updateVisual=(P,C)=>{var R=1,L=0;P!==C&&(L=1-(this.ndc.z-P)/(C-P),R=.6+.4*L),this.setSpriteSize(R)},this.updateNDC=P=>(this.ndc.copy(this.morph.position),this.ndc.project(P),this.ndc.z=Math.min(Math.max(this.ndc.z,0),1),this.ndc),this.setPosition=(P,C,R)=>{this.morph.position.set(P,C,R)},this.setSpriteSize=P=>{v.scale.set(.015,.02,1),v.scale.multiplyScalar(P)},this.setUserSprite=()=>{_&&(this.morph.add(_),S&&(this.morph.remove(v),I&&this.morph.remove(I),S=!1))},this.setImageForUserSprite=(P,C)=>{_&&(this.morph.remove(_),_=void 0),g&&g.dispose(),M&&M.dispose(),g=new c.Texture,g.image=P,g.needsUpdate=!0,M=new c.SpriteMaterial({map:g,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),C||(C=[.05,.05,1]),_=new c.Sprite(M),_.center.set(.5,0),_.scale.set(C[0],C[1],C[2]),_.userData=this,this.setUserSprite()},this.setDefaultSprite=()=>{S||(S=!0,this.morph.add(v),_&&this.morph.remove(_),I&&this.morph.add(I))},this.loadUserSprite=(P,C)=>{if(P)if(P!==E){E=P;var R=new Image(128,128);R.crossOrigin="anonymous",R.onload=()=>{this.setImageForUserSprite(R,C)},R.src=P}else this.setUserSprite()},this.dispose=()=>{this.morph&&this.morph.clear(),v&&(v.clear(),v=void 0),I&&(I.material.map.dispose(),I.material.dispose(),I=void 0)},this.isEnabled=()=>w,this.setNumber=P=>{(!P||A!=P)&&I&&(this.morph.remove(I),I.material.map.dispose(),I.material.dispose(),I=void 0),!I&&P&&(I=m(P,.012,"black","Asap",120,700),this.morph.add(I)),A=P},this.getNumber=()=>A||1,this.setVisibility=function(P){P!==this.visible&&(this.visible=P,this.group.visible=P,this.parent.region&&(this.parent.region.pickableUpdateRequired=!0))},this.enable=()=>{w=!0,this.morph.visible=!0,this.visible=!0},this.disable=()=>{w=!1,this.morph.visible=!1,this.visible=!1},T()};d.prototype=Object.create(u(10).ZincObject.prototype),l.Marker=d},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgdmlld0JveD0iMCAwIDM2NSA1NjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4NCjxkZWZzPg0KPC9kZWZzPg0KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCAwKSIgaWQ9IjgwOGVkMjgzLTI1MjQtNDQwZi04OGFlLTNiZGI0N2JiNTc0OSIgID4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4NCjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItMTgyLjUiIHk9Ii0yODAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIC8+DQo8L2c+DQo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+DQo8ZyBzdHlsZT0iIiAgID4NCjwvZz4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCA5Ny41KSIgID4NCjxnIHN0eWxlPSIiICAgPg0KPC9nPg0KPC9nPg0KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC45OSAwIDAgMC45OSAxODIuNSAyODApIiAgPg0KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHBhdGggc3R5bGU9InN0cm9rZTogcmdiKDAsMCwwKTsgc3Ryb2tlLXdpZHRoOiAwOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMCw4OSwxMTYpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB0cmFuc2Zvcm09IiB0cmFuc2xhdGUoLTE4Mi45LCAtMjc5Ljg1KSIgZD0iTSAxODIuOSA1NTEuNyBDIDE4Mi45IDU1MS44MDAwMDAwMDAwMDAxIDE4My4xIDU1MiAxODMuMSA1NTIgQyAxODMuMSA1NTIgMzU4LjMgMjgzIDM1OC4zIDE5NC42IEMgMzU4LjMgNjQuNSAyNjkuNSA3LjkwMDAwMDAwMDAwMDAwNiAxODIuOSA3LjY5OTk5OTk5OTk5OTk4OSBDIDk2LjMgNy45IDcuNSA2NC41IDcuNSAxOTQuNiBDIDcuNSAyODMgMTgyLjggNTUyIDE4Mi44IDU1MiBDIDE4Mi44IDU1MiAxODIuOSA1NTEuNyAxODIuOSA1NTEuNyB6IE0gMTIyLjIgMTg3LjIgQyAxMjIuMiAxNTMuNiAxNDkuNCAxMjYuMzk5OTk5OTk5OTk5OTkgMTgzIDEyNi4zOTk5OTk5OTk5OTk5OSBDIDIxNi42IDEyNi4zOTk5OTk5OTk5OTk5OSAyNDMuOCAxNTMuNiAyNDMuOCAxODcuMiBDIDI0My44IDIyMC43OTk5OTk5OTk5OTk5OCAyMTYuNSAyNDggMTgyLjkgMjQ4IEMgMTQ5LjQgMjQ4IDEyMi4yIDIyMC44IDEyMi4yIDE4Ny4yIHoiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPg0KPGNpcmNsZSBzdHlsZT0ic3Ryb2tlOiByZ2IoMCwwLDApOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyNTUsMjU1LDI1NSk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIGN4PSIwIiBjeT0iMCIgcj0iMzUiIC8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4="},(o,l,u)=>{var c=u(4),f=function(h,p,y,m){u(10).ZincObject.call(this);var d;p&&(d=p.clone(),d.vertexColors=c.FaceColors),this.id=y;var b=void 0,v=void 0;this.isGlyph=!0,this.fromMesh=g=>!!(g&&g.isMesh)&&(this.morph=g.clone(),this.morph.userData=this,this.group.add(this.morph),!0),h&&d&&this.fromMesh(new c.Mesh(h,d)),this.getGlyphset=function(){return m},this.setLabel=g=>{g&&(typeof g=="string"||g instanceof String)&&(v=g,this.morph&&(this.morph.name=g)),b&&this.showLabel()},this.showLabel=g=>{if(b&&(position=b.getPosition(),this.group.remove(b.getSprite()),b.dispose(),b=void 0),v&&(typeof v=="string"||v instanceof String)){var M=[0,0,0];b=new(u(17)).Label(v,g),b.setPosition(M[0],M[1],M[2]),this.group.add(b.getSprite())}},this.getLabel=()=>v,this.getMesh=()=>this.morph,this.setTransformation=(g,M,_,E)=>{this.morph&&(this.morph.matrix.elements[0]=M[0],this.morph.matrix.elements[1]=M[1],this.morph.matrix.elements[2]=M[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=_[0],this.morph.matrix.elements[5]=_[1],this.morph.matrix.elements[6]=_[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=E[0],this.morph.matrix.elements[9]=E[1],this.morph.matrix.elements[10]=E[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=g[0],this.morph.matrix.elements[13]=g[1],this.morph.matrix.elements[14]=g[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),b&&b.setPosition(g[0],g[1],g[2])},this.setColour=g=>{b&&b.setColour(g),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},this.dispose=()=>{this.material&&this.material.dispose(),this.morph=void 0}};f.prototype=Object.create(u(10).ZincObject.prototype),l.Glyph=f},(o,l,u)=>{var c=u(7).default;l.Label=function(f,h){var p=f,y=void 0;y=h?new c(p,.015,h.getStyle()):new c(p,.015),y.fontFace="Asap",y.fontWeight=700,y.material.map.generateMipmaps=!1,y.material.sizeAttenuation=!1,y.center.x=-.05,y.center.y=0,this.getPosition=()=>y?[y.position.x,y.position.y,y.position.z]:[0,0,0],this.setPosition=(m,d,b)=>{y&&y.position.set(m,d,b)},this.setColour=m=>{y.color=m.getStyle()},this.setScale=m=>{y&&0<m&&y.scale.set(m,m,1)},this.dispose=()=>{y.dispose()},this.getSprite=()=>y,this.getString=()=>p}},(o,l,u)=>{function c(y){throw new TypeError('"'+y+'" is read-only')}var f=u(4),h=u(19).JSONLoader,p=function(){u(10).ZincObject.call(this);var y=[],m=void 0,d=void 0,b=void 0,v=void 0,g=void 0,M=void 0,_=void 0,E=0,S=0,w=[0,0,0],A=[0,0,0],I=[0,0,0],T="NONE";this.ready=!1;var P=!1,C=!1;this.isGlyphset=!0;for(var R=new f.Matrix4,L=new f.Color,N=new f.Color,x=new f.Box3,O=new f.Box3,B=new f.Box3,D=[],k=[],U=[],H=[],X=[],re=[],j=[],G=[],W=0;8>W;W++)D[W]=new f.Vector3;this.load=(F,$,Q,V,z)=>{m=F.axis1,d=F.axis2,b=F.axis3,v=F.positions,g=F.scale,M=F.colors,_=F.label,P=F.metadata.MorphColours,C=F.metadata.MorphVertices,E=F.metadata.number_of_time_steps,T=F.metadata.repeat_mode,S=F.metadata.number_of_vertices,T=="AXES_2D"||T=="MIRROR"?S*=2:T=="AXES_3D"&&(S*=3),w=F.metadata.base_size,A=F.metadata.offset,I=F.metadata.scale_factors;var oe=new h;this.geometry=new f.BufferGeometry;var ae=new f.InstancedMesh(this.geometry,void 0,S);if(this.setMorph(ae),V){var le=oe.parse($);te(Q,z)(le.geometry,le.materials),le.geometry.dispose()}else oe.crossOrigin="Anonymous",oe.load($,te(Q,z))};var K=(F,$,Q,V,z,oe)=>{if(T=="NONE"||T=="MIRROR"){for(var ae,le=[0,0,0],fe=[0,0,0],be=[0,0,0],ye=[0,0,0],he=[0,0,0],ve=[0,0,0],se=[0,0,0],we=[0,0,0],pe=[0,0,0],ge=0;3>ge;ge++)ae=0>z[ge]?-1:1,le[ge]=ae*w[ge]+z[ge]*I[ge];for(var ge=0;3>ge;ge++)fe[ge]=$[ge]*le[0],be[ge]=Q[ge]*le[1],ye[ge]=V[ge]*le[2],he[ge]=F[ge]+A[0]*fe[ge]+A[1]*be[ge]+A[2]*ye[ge],T=="MIRROR"&&(ve[ge]=-fe[ge],se[ge]=-be[ge],we[ge]=-ye[ge],pe[ge]=he[ge],0>z[0]&&(he[ge]-=fe[ge],pe[ge]-=ve[ge]));0>ye[0]*(fe[1]*be[2]-fe[2]*be[1])+ye[1]*(fe[2]*be[0]-fe[0]*be[2])+ye[2]*(fe[0]*be[1]-fe[1]*be[0])&&(ye[0]=-ye[0],ye[1]=-ye[1],ye[2]=-ye[2]),oe[0]=[he,fe,be,ye],T=="MIRROR"&&(0>we[0]*(ve[1]*se[2]-ve[2]*se[1])+we[1]*(ve[2]*se[0]-ve[0]*se[2])+we[2]*(ve[0]*se[1]-ve[1]*se[0])&&(we[0]=-we[0],we[1]=-we[1],we[2]=-we[2]),oe[1]=[pe,ve,se,we])}else if(T=="AXES_2D"||T=="AXES_3D"){for(var ae,Ee=[0,0,0],He=[0,0,0],ge=0;3>ge;ge++)ae=0>z[ge]?-1:1,Ee[ge]=ae*w[0]+z[ge]*I[0];for(var ge=0;3>ge;ge++)He[ge]=F[ge]+A[0]*Ee[0]*$[ge]+A[1]*Ee[1]*Q[ge]+A[2]*Ee[2]*V[ge];for(var tt=glyph_repeat_mode=="AXES_2D"?2:3,Ie=0;Ie<tt;Ie++){var ot=void 0,Le=void 0,Ye=z[Ie],We=[0,0,0],it=[0,0,0],et=[0,0,0];Ie==0?(ot=$,Le=Q):Ie==1?(ot=Q,Le=glyph_repeat_mode=="AXES_2D"?$:V):(ot=V,Le=$);var Mt=w[0]+Ye*I[0];We[0]=ot[0]*Mt,We[1]=ot[1]*Mt,We[2]=ot[2]*Mt,et[0]=We[1]*Le[2]-Le[1]*We[2],et[1]=We[2]*Le[0]-Le[2]*We[0],et[2]=We[0]*Le[1]-We[1]*Le[0];var pt=Math.sqrt(et[0]*et[0]+et[1]*et[1]+et[2]*et[2]);if(0<pt){var hn=(w[2]+Ye*I[2])/pt;T=="AXES_2D"&&0<Ie&&(hn*=-1),et[0]*=hn,et[1]*=hn,et[2]*=hn}if(it[0]=et[1]*We[2]-We[1]*et[2],it[1]=et[2]*We[0]-We[2]*et[0],it[2]=et[0]*We[1]-et[1]*We[0],pt=Math.sqrt(it[0]*it[0]+it[1]*it[1]+it[2]*it[2]),0<pt){var Mn=(w[1]+Ye*I[1])/pt;it[0]*=Mn,it[1]*=Mn,it[2]*=Mn}oe[Ie]=[He,We,it,et]}}return oe},ee=(F,$,Q,V,z)=>{var oe=1;T=="AXES_2D"||T=="MIRROR"?oe=2:T=="AXES_3D"&&(oe=3);var ae=F.length/3,le=0;G.length=oe;for(var fe=0;fe<ae;fe++){var be=3*fe,ye=[F[be],F[be+1],F[be+2]],he=[$[be],$[be+1],$[be+2]],ve=[Q[be],Q[be+1],Q[be+2]],se=[V[be],V[be+1],V[be+2]],we=[z[be],z[be+1],z[be+2]],pe=K(ye,he,ve,se,we,G);if(pe.length==oe)for(var ge=0;ge<oe;ge++){R.elements[0]=pe[ge][1][0],R.elements[1]=pe[ge][1][1],R.elements[2]=pe[ge][1][2],R.elements[3]=0,R.elements[4]=pe[ge][2][0],R.elements[5]=pe[ge][2][1],R.elements[6]=pe[ge][2][2],R.elements[7]=0,R.elements[8]=pe[ge][3][0],R.elements[9]=pe[ge][3][1],R.elements[10]=pe[ge][3][2],R.elements[11]=0,R.elements[12]=pe[ge][0][0],R.elements[13]=pe[ge][0][1],R.elements[14]=pe[ge][0][2],R.elements[15]=1,this.morph.setMatrixAt(le,R);var Ee=y[le];Ee&&Ee.setTransformation(pe[ge][0],pe[ge][1],pe[ge][2],pe[ge][3]),le++}}this.morph.instanceMatrix.needsUpdate=!0},q=F=>{var $=1;T=="AXES_2D"||T=="MIRROR"?$=2:T=="AXES_3D"&&($=3);for(var Q,V=F.length,z=0,oe=0;oe<V;oe++){Q=F[oe];for(var ae=0;ae<$;ae++){L.setHex(Q),this.morph.setColorAt(z,L);var le=y[z];le&&le.setColour(L),z++}}this.morph.instanceColor.needsUpdate=!0},ie=()=>{var F=k,$=U,Q=H,V=X,z=re,oe=j,ae=this.inbuildTime/this.duration*(E-1),le=Math.floor(ae),fe=1-(ae-le),be=Math.ceil(ae);if(C){var ye=v[le.toString()],he=v[be.toString()],ve=m[le.toString()],se=m[be.toString()],we=d[le.toString()],pe=d[be.toString()],ge=b[le.toString()],Ee=b[be.toString()],He=g[le.toString()],tt=g[be.toString()];k.length=ye.length,U.length=ye.length,H.length=ye.length,X.length=ye.length,re.length=ye.length;for(var Ie=0;Ie<ye.length;Ie++)F[Ie]=fe*ye[Ie]+(1-fe)*he[Ie],$[Ie]=fe*ve[Ie]+(1-fe)*se[Ie],Q[Ie]=fe*we[Ie]+(1-fe)*pe[Ie],V[Ie]=fe*ge[Ie]+(1-fe)*Ee[Ie],z[Ie]=fe*He[Ie]+(1-fe)*tt[Ie]}else v[0],c("current_positions"),m[0],c("current_axis1s"),d[0],c("current_axis2s"),b[0],c("current_axis3s"),g[0],c("current_scales");if(ee(F,$,Q,V,z),this.boundingBoxUpdateRequired=!0,M!=null){if(P){var ot=M[le.toString()],Le=M[be.toString()];oe.length=ot.length;for(var Ye=0;Ye<ot.length;Ye++)L.setHex(ot[Ye]),N.setHex(Le[Ye]),L.setRGB(L.r*fe+N.r*(1-fe),L.g*fe+N.g*(1-fe),L.b*fe+N.b*(1-fe)),oe[Ye]=L.getHex()}else M[0],c("current_colors");q(oe)}};this.showLabel=()=>{for(var F=0;F<y.length;F++)y[F].showLabel(this.morph.material?this.morph.material.color:void 0)};var Y=F=>{if(_!=null&&F)for(var $,Q=0;Q<S;Q++)$=new(u(16)).Glyph(void 0,void 0,Q,this),_!=null&&_[Q]!=null&&$.setLabel(_[Q]),0<E&&$.setFrustumCulled(!1),y[Q]=$,this.morph.add($.getGroup());_!=null&&F&&this.showLabel(this.morph.material?this.morph.material.color:void 0),ee(v[0],m[0],d[0],b[0],g[0]),M!=null&&q(M[0]),this.ready=!0,this.boundingBoxUpdateRequired=!0};this.addCustomGlyph=F=>{F.isGlyph&&y.push(F),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(F,$)=>{if(F.isMesh){var Q=new(u(16)).Glyph(void 0,void 0,$,this);return Q.fromMesh(F),y.push(Q),this.morph.add(Q.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,Q}},this.forEachGlyph=F=>{for(var $=0;$<y.length;$++)F(y[$])};var te=(F,$)=>(Q,V)=>{var z=Q.toBufferGeometry();this.geometry.copy(z),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),z.dispose(),V&&V[0]&&(this.morph.material=V[0]),Y($),this.morph.name=this.groupName,this.morph.userData=this,this.setMorph(this.morph),Q.dispose(),F!=null&&typeof F=="function"&&F(this)};this.getClosestVertexIndex=function(){var F=-1;if(this.morph&&this.ready){this.getBoundingBox().getCenter(this._v1);for(var $,Q=v[0],V=Q.length/3,z=-1,oe=0,ae=0;ae<V;ae++)$=3*ae,this._v2.set(Q[$],Q[$+1],Q[$+2]),oe=this._v1.distanceTo(this._v2),(z==-1||z>oe)&&(z=oe,F=ae)}return F},this.getClosestVertex=function(){if(this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex&&this.morph){var F=new f.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,R),F.setFromMatrixPosition(R),F}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){x.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var F=0;F<S;F++)this.morph.getMatrixAt(F,R),O.copy(x).applyMatrix4(R),F==0?B.copy(O):B.union(O);if(B)this.cachedBoundingBox.copy(B),this.morph.updateWorldMatrix(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=F=>{this.inbuildTime=F>this.duration?this.duration:0>F?0:F,(P||C)&&(ie(),C&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!((this.ready===!1||0<E)&&(P||C)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var F=y.length-1;0<=F;F--)y[F].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),m=void 0,d=void 0,b=void 0,v=void 0,g=void 0,M=void 0,this.ready=!1,this.groupName=void 0},this.render=(F,$,Q)=>{if($==!0){var V=this.inbuildTime+F;V>this.duration&&(V-=this.duration),this.inbuildTime=V,(P||C)&&ie()}this.updateMarker($,Q)}};p.prototype=Object.create(u(10).ZincObject.prototype),l.Glyphset=p},(o,l,u)=>{u.r(l),u.d(l,{JSONLoader:()=>S});var c=u(4),f=u(20).Loader,h=c.LoaderUtils,p=c.AnimationClip,y=c.Vector3,m=c.Vector4,d=c.Color,b=c.Vector2,v=u(6).Face3,g=u(6).Geometry,M=c.FileLoader,_=c.DefaultLoadingManager,E=u(21).VideoHandler;function S(w){typeof w=="boolean"&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),w=void 0),this.manager=w===void 0?_:w,this.withCredentials=!1,this.paramsString=""}Object.assign(S.prototype,{load:function(A,I,T,P){var C=this,R=this.texturePath&&typeof this.texturePath=="string"?this.texturePath:h.extractUrlBase(A),L=new M(this.manager);A.split("?"),this.paramsString=A.length===2?paramsStrings[1]:"",L.setWithCredentials(this.withCredentials),L.load(A,function(N){var x;try{x=JSON.parse(N)}catch{if(console.error("The loader has encountered an error while parsing the content of a resource."),P)return void P({responseURL:A})}var O=x.metadata;if(O!==void 0){var B=O.type;if(B!==void 0&&B.toLowerCase()==="object")return void console.error("THREE.JSONLoader: "+A+" should be loaded with THREE.ObjectLoader instead.")}if(C&&C.parse){var D=C.parse(x,R);I(D.geometry,D.materials)}},T,P)},setTexturePath:function(A){this.texturePath=A},parse:function(){function w(P,C){function R(we,pe){return we&1<<pe}var L,N,x,O,B,D,k,U,H,X,re,j,G,W,K,ee,q,ie,Y,te,F,$,Q,V,z,oe,ae,le=P.faces,fe=P.vertices,be=P.normals,ye=P.colors,he=P.scale,ve=0;if(P.uvs!==void 0){for(L=0;L<P.uvs.length;L++)P.uvs[L].length&&ve++;for(L=0;L<ve;L++)C.faceVertexUvs[L]=[]}for(O=0,B=fe.length;O<B;)ie=new y,ie.x=fe[O++]*he,ie.y=fe[O++]*he,ie.z=fe[O++]*he,C.vertices.push(ie);if(O=0,B=le.length,P.uvs)for(L=0;L<P.uvs.length;L++){C.uvs[L]=[];for(var se=0;se<P.uvs[L].length;se++)C.uvs[L][se]=P.uvs[L][se]}if(be)for(L=0;L<be.length;L++)C.normals[L]=be[L];if(ye)for(L=0;L<ye.length;L++)C.colors[L]=ye[L];for(;O<B;)if(X=le[O++],re=R(X,0),j=R(X,1),G=R(X,3),W=R(X,4),K=R(X,5),ee=R(X,6),q=R(X,7),re){if(te=new v,te.a=le[O],te.b=le[O+1],te.c=le[O+3],F=new v,F.a=le[O+1],F.b=le[O+2],F.c=le[O+3],O+=4,j&&(H=le[O++],te.materialIndex=H,F.materialIndex=H),x=C.faces.length,G)for(L=0;L<ve;L++)for(V=P.uvs[L],C.faceVertexUvs[L][x]=[],C.faceVertexUvs[L][x+1]=[],N=0;4>N;N++)U=le[O++],oe=V[2*U],ae=V[2*U+1],z=new b(oe,ae),N!==2&&C.faceVertexUvs[L][x].push(z),N!==0&&C.faceVertexUvs[L][x+1].push(z);if(W&&(k=3*le[O++],te.normal.set(be[k++],be[k++],be[k]),F.normal.copy(te.normal)),K)for(L=0;4>L;L++)k=3*le[O++],Q=new y(be[k++],be[k++],be[k]),L!==2&&te.vertexNormals.push(Q),L!==0&&F.vertexNormals.push(Q);if(ee&&(D=le[O++],$=ye[D],te.color.setHex($),F.color.setHex($)),q)for(L=0;4>L;L++)D=le[O++],$=ye[D],L!==2&&te.vertexColors.push(new d($)),L!==0&&F.vertexColors.push(new d($));C.faces.push(te),C.faces.push(F)}else{if(Y=new v,Y.a=le[O++],Y.b=le[O++],Y.c=le[O++],j&&(H=le[O++],Y.materialIndex=H),x=C.faces.length,G)for(L=0;L<ve;L++)for(V=P.uvs[L],C.faceVertexUvs[L][x]=[],N=0;3>N;N++)U=le[O++],oe=V[2*U],ae=V[2*U+1],z=new b(oe,ae),C.faceVertexUvs[L][x].push(z);if(W&&(k=3*le[O++],Y.normal.set(be[k++],be[k++],be[k])),K)for(L=0;3>L;L++)k=3*le[O++],Q=new y(be[k++],be[k++],be[k]),Y.vertexNormals.push(Q);if(ee&&(D=le[O++],Y.color.setHex(ye[D])),q)for(L=0;3>L;L++)D=le[O++],Y.vertexColors.push(new d(ye[D]));C.faces.push(Y)}}function A(P,C){var R=P.influencesPerVertex===void 0?2:P.influencesPerVertex;if(P.skinWeights)for(var L=0,N=P.skinWeights.length;L<N;L+=R){var x=P.skinWeights[L],O=1<R?P.skinWeights[L+1]:0,B=2<R?P.skinWeights[L+2]:0,D=3<R?P.skinWeights[L+3]:0;C.skinWeights.push(new m(x,O,B,D))}if(P.skinIndices)for(var L=0,N=P.skinIndices.length;L<N;L+=R){var k=P.skinIndices[L],U=1<R?P.skinIndices[L+1]:0,H=2<R?P.skinIndices[L+2]:0,X=3<R?P.skinIndices[L+3]:0;C.skinIndices.push(new m(k,U,H,X))}C.bones=P.bones,C.bones&&0<C.bones.length&&(C.skinWeights.length!==C.skinIndices.length||C.skinIndices.length!==C.vertices.length)&&console.warn("When skinning, number of vertices ("+C.vertices.length+"), skinIndices ("+C.skinIndices.length+"), and skinWeights ("+C.skinWeights.length+") should match.")}function I(P,C){var R=P.scale;if(P.morphTargets!==void 0)for(var L=0,N=P.morphTargets.length;L<N;L++){C.morphTargets[L]={},C.morphTargets[L].name=P.morphTargets[L].name,C.morphTargets[L].vertices=[];for(var x,O=C.morphTargets[L].vertices,B=P.morphTargets[L].vertices,D=0,k=B.length;D<k;D+=3)x=new y,x.x=B[D]*R,x.y=B[D+1]*R,x.z=B[D+2]*R,O.push(x)}if(P.morphNormals!==void 0){for(var L=0,N=P.morphNormals.length;L<N;L++)if(C.morphTargets[L]){C.morphTargets[L].normals=[];for(var U,H=C.morphTargets[L].normals,X=P.morphNormals[L].normals,D=0,k=X.length;D<k;D+=3)U=new y,U.x=X[D],U.y=X[D+1],U.z=X[D+2],H.push(U);C.morphNormalsReady=!0}}if(P.morphColors!==void 0){var L,N,re,j,G,W,K;for(L=0,N=P.morphColors.length;L<N;L++)for(C.morphColors[L]={},C.morphColors[L].name=P.morphColors[L].name,C.morphColors[L].colors=[],G=C.morphColors[L].colors,W=P.morphColors[L].colors,re=0,j=W.length;re<j;re+=3)K=new c.Color(16755200),K.setRGB(W[re],W[re+1],W[re+2]),G.push(K)}}function T(P,C){var R=[],L=[];P.animation!==void 0&&L.push(P.animation),P.animations!==void 0&&(P.animations.length?L=L.concat(P.animations):L.push(P.animations));for(var N,x=0;x<L.length;x++)N=p.parseAnimation(L[x],C.bones),N&&R.push(N);if(C.morphTargets){var O=p.CreateClipsFromMorphTargetSequences(C.morphTargets,10);R=R.concat(O)}0<R.length&&(C.animations=R)}return function(P,C){P.data!==void 0&&(P=P.data),P.scale=P.scale===void 0?1:1/P.scale;var R=new g;if(R.morphColors=[],w(P,R),A(P,R),I(P,R),T(P,R),R.computeFaceNormals(),R.computeBoundingSphere(),P.materials===void 0||P.materials.length===0)return{geometry:R};var L=f.prototype.initMaterials(P.materials,C,"Anonymous");if(P.materials[0].video){var N=C+P.materials[0].video;this.paramsString&&(N+="?".concat(this.paramsString));var x=new E(N);R._video=x}return L&&0<L.length&&(L[0].side=P.materials[0].singleSided?c.FrontSide:P.materials[0].flipSided?c.BackSide:c.DoubleSide,P.materials[0].specularCoef&&(L[0].shininess=Math.floor(P.materials[0].specularCoef/3))),{geometry:R,materials:L}}}()})},(o,l,u)=>{u.r(l),u.d(l,{Loader:()=>f});var c=u(4);u(4);function f(){}f.Handlers={handlers:[],add:function(p,y){this.handlers.push(p,y)},get:function(p){for(var y=this.handlers,m=0,d=y.length;m<d;m+=2){var b=y[m],v=y[m+1];if(b.test(p))return v}return null}},Object.assign(f.prototype,{crossOrigin:"anonymous",onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(p,y,m){for(var d=[],b=0;b<p.length;++b)d[b]=this.createMaterial(p[b],y,m);return d},createMaterial:function(){var h={NoBlending:c.NoBlending,NormalBlending:c.NormalBlending,AdditiveBlending:c.AdditiveBlending,SubtractiveBlending:c.SubtractiveBlending,MultiplyBlending:c.MultiplyBlending,CustomBlending:c.CustomBlending},p=new c.Color,y=new c.TextureLoader,m=new c.MaterialLoader;return function(d,b,v){function g(w,A,I,T,P){var C,R=b+w,L=f.Handlers.get(R);L===null?(y.setCrossOrigin(v),C=y.load(R)):C=L.load(R),A!==void 0&&(C.repeat.fromArray(A),A[0]!==1&&(C.wrapS=c.RepeatWrapping),A[1]!==1&&(C.wrapT=c.RepeatWrapping)),I!==void 0&&C.offset.fromArray(I),T!==void 0&&(T[0]==="repeat"&&(C.wrapS=c.RepeatWrapping),T[0]==="mirror"&&(C.wrapS=c.MirroredRepeatWrapping),T[1]==="repeat"&&(C.wrapT=c.RepeatWrapping),T[1]==="mirror"&&(C.wrapT=c.MirroredRepeatWrapping)),P!==void 0&&(C.anisotropy=P);var N=c.MathUtils.generateUUID();return M[N]=C,N}var M={},_={uuid:c.MathUtils.generateUUID(),type:"MeshLambertMaterial"};for(var E in d){var S=d[E];switch(E){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":_.name=S;break;case"blending":_.blending=h[S];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",E,"is no longer supported.");break;case"colorDiffuse":_.color=p.fromArray(S).getHex();break;case"colorSpecular":_.specular=p.fromArray(S).getHex();break;case"colorEmissive":_.emissive=p.fromArray(S).getHex();break;case"specularCoef":_.shininess=S;break;case"shading":S.toLowerCase()==="basic"&&(_.type="MeshBasicMaterial"),S.toLowerCase()==="phong"&&(_.type="MeshPhongMaterial"),S.toLowerCase()==="standard"&&(_.type="MeshStandardMaterial");break;case"mapDiffuse":_.map=g(S,d.mapDiffuseRepeat,d.mapDiffuseOffset,d.mapDiffuseWrap,d.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":_.emissiveMap=g(S,d.mapEmissiveRepeat,d.mapEmissiveOffset,d.mapEmissiveWrap,d.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":_.lightMap=g(S,d.mapLightRepeat,d.mapLightOffset,d.mapLightWrap,d.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":_.aoMap=g(S,d.mapAORepeat,d.mapAOOffset,d.mapAOWrap,d.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":_.bumpMap=g(S,d.mapBumpRepeat,d.mapBumpOffset,d.mapBumpWrap,d.mapBumpAnisotropy);break;case"mapBumpScale":_.bumpScale=S;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":_.normalMap=g(S,d.mapNormalRepeat,d.mapNormalOffset,d.mapNormalWrap,d.mapNormalAnisotropy);break;case"mapNormalFactor":_.normalScale=S;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":_.specularMap=g(S,d.mapSpecularRepeat,d.mapSpecularOffset,d.mapSpecularWrap,d.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":_.metalnessMap=g(S,d.mapMetalnessRepeat,d.mapMetalnessOffset,d.mapMetalnessWrap,d.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":_.roughnessMap=g(S,d.mapRoughnessRepeat,d.mapRoughnessOffset,d.mapRoughnessWrap,d.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":_.alphaMap=g(S,d.mapAlphaRepeat,d.mapAlphaOffset,d.mapAlphaWrap,d.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":_.side=c.BackSide;break;case"doubleSided":_.side=c.DoubleSide;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),_.opacity=S;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":_[E]=S;break;case"vertexColors":S===!0&&(_.vertexColors=c.VertexColors),S==="face"&&(_.vertexColors=c.FaceColors);break;default:console.error("THREE.Loader.createMaterial: Unsupported",E,S)}}return _.type==="MeshBasicMaterial"&&delete _.emissive,_.type!=="MeshPhongMaterial"&&delete _.specular,1>_.opacity&&(_.transparent=!0),m.setTextures(M),m.parse(_)}}()})},(o,l,u)=>{var c=u(4);l.VideoHandler=function(f){var h=this;this.video=void 0,this.videoTexture=void 0,this.setMorphTime=function(p,y){var m=p/y*h.video.duration;h.video.currentTime=m},this.getVideoDuration=function(){return h.video.duration},this.createCanvasVideoTexture=function(){return h.videoTexture=new c.VideoTexture(h.video),h.videoTexture.minFilter=c.LinearFilter,h.videoTexture.magFilter=c.LinearFilter,h.videoTexture.format=c.RGBFormat,h.video.currentTime=0,h.videoTexture},this.getCurrentTime=function(p){return h.video?p*(h.video.currentTime/h.video.duration):0},this.isReadyToPlay=function(){return!!(h.video&&3<=h.video.readyState)},function(){document&&(h.video=document.createElement("video"),h.video.crossOrigin="anonymous",h.video.src=f,h.video.load(),h.video.loop=!0)}()}},(o,l,u)=>{var c=u(4),f=u(23).Points,h=u(5).toBufferGeometry,p=u(5).getCircularTexture,y=u(17).Label,m=function(){u(10).ZincObject.call(this),this.isPointset=!0;var d=[];this.createMesh=(v,g,M)=>{if(v&&g){var _=h(v,M),E=p();g.map=E;var S=new f(_,g);this.setMesh(S,M.localTimeEnabled,M.localMorphColour)}};var b=(v,g,M,_)=>{if(M){var E=new c.Color(_),S=new y(M,E);S.setPosition(g[0],g[1],g[2]);var w=S.getSprite();w.material.sizeAttenuation=!1,w.material.alphaTest=.5,w.material.transparent=!0,w.material.depthWrite=!1,w.material.depthTest=!1,this.group.add(w),d[v]=S}};this.addPoints=(v,g,M)=>{if(v&&0<v.length){var _=this.drawRange-1,E=this.addVertices(v),S=this.getMorph();if(!S){var w=new c.PointsMaterial({alphaTest:.5,size:10,color:M,sizeAttenuation:!1});E.colorsNeedUpdate=!0,this.createMesh(E,w,{localTimeEnabled:!1,localMorphColour:!1})}var A=_+v.length,I=0;if(Array.isArray(g)&&g.length===v.length||typeof g=="string")for(_;_+I<A;){var T=typeof g=="string"?g:g[I];b(I,v[I],T,M),I++}this.region&&(this.region.pickableUpdateRequired=!0)}},this.setSize=v=>{this.morph&&this.morph.material&&(this.morph.material.size=v,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=v=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=v,this.morph.material.needsUpdate=!0)},this.getVerticesByIndex=function(v){if(0<=v&&this.drawRange>v){var g=this.getMorph().geometry.getAttribute("position");return[g.getX(v),g.getY(v),g.getZ(v)]}},this.editVertices=function(v,g){if(v&&v.length){var M=this.getMorph(),_=g+v.length-1;if(!M||0>g||_>=this.drawRange)return;var E=M.geometry.getAttribute("position"),S=g;v.forEach(w=>{var A=d[S];A&&A.setPosition(w[0],w[1],w[2]),E.setXYZ(S++,w[0],w[1],w[2])}),E.needsUpdate=!0,this.boundingBoxUpdateRequired=!0}},this.render=(v,g,M,_)=>{this.morph&&M&&(this.morph.sizePerPixel=M.pixelHeight),m.prototype.render.call(this,v,g,M,_)}};m.prototype=Object.create(u(10).ZincObject.prototype),l.Pointset=m},(o,l,u)=>{u.r(l),u.d(l,{Points:()=>b});var c=u(4),f=new c.Matrix4,h=new c.Ray,p=new c.Sphere,y=new c.Vector3,m=new c.Vector3,d=new c.Vector3;class b extends c.Object3D{constructor(){var _=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new c.BufferGeometry,E=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new c.PointsMaterial;super(),this.type="Points",this.geometry=_,this.material=E,this.sizePerPixel=1,this.updateMorphTargets()}copy(_){return super.copy(_),this.material=_.material,this.geometry=_.geometry,this}raycast(_,E){var S=this.geometry,w=this.matrixWorld,A=_.params.Points.threshold,I=S.drawRange;if(S.boundingSphere===null&&S.computeBoundingSphere(),p.copy(S.boundingSphere),p.applyMatrix4(w),p.radius+=A,_.ray.intersectsSphere(p)!==!1){f.copy(w).invert(),h.copy(_.ray).applyMatrix4(f);var T=A/((this.scale.x+this.scale.y+this.scale.z)/3)*this.material.size*this.sizePerPixel,P=T*T;if(S.isBufferGeometry){var C=S.index,R=S.attributes,L=R.position,N=S.morphAttributes.position;if(C!==null)for(var x,O=Math.max(0,I.start),B=Math.min(C.count,I.start+I.count),D=O;D<B;D++)x=C.getX(D),g(this,L,N,x),v(y,x,P,w,_,E,this);else for(var k=Math.max(0,I.start),U=Math.min(L.count,I.start+I.count),H=k;H<U;H++)g(this,L,N,H),v(y,H,P,w,_,E,this)}else console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var _=this.geometry;if(_.isBufferGeometry){var E=_.morphAttributes,S=Object.keys(E);if(0<S.length){var w=E[S[0]];if(w!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var A,I=0,T=w.length;I<T;I++)A=w[I].name||I+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[A]=I}}}else{var P=_.morphTargets;P!==void 0&&0<P.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}b.prototype.isPoints=!0;function v(M,_,E,S,w,A,I){var T=h.distanceSqToPoint(M);if(T<E){var P=new c.Vector3;h.closestPointToPoint(M,P),P.applyMatrix4(S);var C=w.ray.origin.distanceTo(P);if(C<w.near||C>w.far)return;A.push({distance:C,distanceToRay:Math.sqrt(T),point:P,index:_,face:null,object:I})}}function g(M,_,E,S){y.fromBufferAttribute(_,S);var w=M.morphTargetInfluences;if(M.material.morphTargets&&E&&w){m.set(0,0,0);for(var A=0,I=E.length;A<I;A++){var T=w[A],P=E[A];T!==0&&(d.fromBufferAttribute(P,S),m.addScaledVector(d.sub(y),T))}y.add(m)}}},(o,l,u)=>{var c=u(4),f=u(5).toBufferGeometry,h=function(){u(10).ZincObject.call(this),this.isLines=!0,this.createLineSegment=(p,y,m)=>{if(p&&y){var d=f(p,m);m.localMorphColour&&d.morphAttributes.color&&(y.onBeforeCompile=u(9).augmentMorphColor());var b=new(u(12)).LineSegments(d,y);this.setMesh(b,m.localTimeEnabled,m.localMorphColour)}},this.setWidth=p=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=p,this.morph.material.needsUpdate=!0)},this.addLines=(p,y)=>{if(p&&0<p.length){var m=this.addVertices(p),d=this.getMorph();if(!d){var b=new c.LineBasicMaterial({color:y});m.colorsNeedUpdate=!0,this.createLineSegment(m,b,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}}};h.prototype=Object.create(u(10).ZincObject.prototype),l.Lines=h},(o,l,u)=>{function c(y,m,d,b,v,g,M){try{var _=y[g](M),E=_.value}catch(S){return void d(S)}_.done?m(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var m=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,M,"next",E)}function M(E){c(_,b,v,g,M,"throw",E)}var _=y.apply(m,d);g(void 0)})}}var h=u(4),p=function(){var y=this;u(26).Texture.call(this),this.isTextureArray=!0,this.loadFromImages=function(){var m=f(function*(d){var b=1,v=1,g=0;if(d&&d.length){y.isLoading=!0;var M=new Image;M.crossOrigin="Anonymous";for(var _,E=document.createElement("canvas"),S=0,w=Array(d.length),A=0;A<d.length;A++)_=yield y.imageToUint8Array(y,M,d[A],E),_&&_.array&&(b=_.width,v=_.height,w[g]=_.array,S+=w[g].length,g++);var I=new Uint8Array(S);S=0,w.forEach(T=>{I.set(T,S),S+=T.length}),y.impl=new h.DataTexture2DArray(I,b,v,g),y.size={width:b,height:v,depth:g},y.isLoading=!1,y.impl.needsUpdate=!0}});return function(){return m.apply(this,arguments)}}(),this.getMaterial=m=>{if(this.impl){var d;if(!m)d=new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide});else if(m.vs&&m.fs){var b=!0;m.transparent&&(b=m.transparent);var v=h.FrontSide;m.side&&(v=m.side),d=new h.ShaderMaterial({transparent:b,uniforms:m.uniforms,vertexShader:m.vs,fragmentShader:m.fs,side:v}),m.glslVersion&&(d.glslVersion=m.glslVersion)}if(d)return d.needsUpdate=!0,d}}};p.prototype=Object.create(u(26).Texture.prototype),l.TextureArray=p},(o,l,u)=>{function c(y,m,d,b,v,g,M){try{var _=y[g](M),E=_.value}catch(S){return void d(S)}_.done?m(E):Promise.resolve(E).then(b,v)}function f(y){return function(){var m=this,d=arguments;return new Promise(function(b,v){function g(E){c(_,b,v,g,M,"next",E)}function M(E){c(_,b,v,g,M,"throw",E)}var _=y.apply(m,d);g(void 0)})}}var h=u(4),p=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};p.prototype.loadImage=function(y,m){return new Promise((d,b)=>{y.onload=()=>d(y),y.onerror=b,y.src=m})},p.prototype.imageToUint8Array=function(){var y=f(function*(m,d,b,v){yield m.loadImage(d,b),v.width=d.width,v.height=d.height;var g=v.getContext("2d");return g.drawImage(d,0,0),{array:new Uint8Array(g.getImageData(0,0,v.width,v.height).data.buffer),width:v.width,height:v.height}});return function(){return y.apply(this,arguments)}}(),p.prototype.loadFromImages=function(){var y=f(function*(){});return function(){return y.apply(this,arguments)}}(),p.prototype.isReady=function(){return!(!this.impl||this.isLoading)},p.prototype.getMaterial=function(){if(this.impl)return new h.MeshBasicMaterial({color:new h.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:h.DoubleSide})},l.Texture=p},(o,l,u)=>{function c(v,g){var M=Object.keys(v);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(v);g&&(_=_.filter(function(E){return Object.getOwnPropertyDescriptor(v,E).enumerable})),M.push.apply(M,_)}return M}function f(v){for(var g,M=1;M<arguments.length;M++)g=arguments[M]==null?{}:arguments[M],M%2?c(Object(g),!0).forEach(function(_){h(v,_,g[_])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):c(Object(g)).forEach(function(_){Object.defineProperty(v,_,Object.getOwnPropertyDescriptor(g,_))});return v}function h(v,g,M){return g=p(g),g in v?Object.defineProperty(v,g,{value:M,enumerable:!0,configurable:!0,writable:!0}):v[g]=M,v}function p(v){var g=y(v,"string");return typeof g=="symbol"?g:g+""}function y(v,g){if(typeof v!="object"||!v)return v;var M=v[Symbol.toPrimitive];if(M!==void 0){var _=M.call(v,g||"default");if(typeof _!="object")return _;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(v)}var m=u(4),d=u(28),b=function(v){u(29).TexturePrimitive.call(this,v),this.isTextureSlides=!0;var g=[],M={};this.morph=new m.Group,this.group=this.morph,this.morph.userData=this;var _=!0;this.createSlides=w=>{w.forEach(A=>this.createSlide(A))};var E=(w,A)=>{var I=w.material,T=I.uniforms;switch(w.rotation.x=0,w.rotation.y=0,w.rotation.z=0,w.position.x=0,w.position.y=0,w.position.z=0,A.direction){case"x":var P=_?-Math.PI/2:Math.PI/2;w.rotation.y=P,T.direction.value=1,T.slide.value.set(A.value,0,0),w.position.x=A.value;break;case"y":w.rotation.x=Math.PI/2,T.direction.value=2,T.slide.value.set(0,A.value,0),w.position.y=A.value;break;case"z":T.direction.value=3,T.slide.value.set(0,0,A.value),w.position.z=A.value;break}I.needsUpdate=!0,this.boundingBoxUpdateRequired=!0};this.modifySlideSettings=w=>{w&&w.id&&w.id in M&&M[w.id]&&E(M[w.id],w)},this.createSlide=w=>{if(this.texture&&this.texture.isTextureArray&&this.texture.isReady()&&w&&w.direction&&w.value!==void 0){var A=new m.PlaneGeometry(1,1);A.translate(.5,.5,0);var I=d.getUniforms();I.diffuse.value=this.texture.impl,I.depth.value=this.texture.size.depth,I.flipY.value=_;var T={fs:d.fs,vs:d.vs,uniforms:I,glslVersion:d.glslVersion,side:m.DoubleSide,transparent:!1},P=this.texture.getMaterial(T);P.needsUpdate=!0;var C=new m.Mesh(A,P);C.name=this.groupName,C.userData=this;var R={value:w.value,direction:w.direction,id:C.id};return g.push(R),E(C,R),M[C.id]=C,this.morph.add(C),this.boundingBoxUpdateRequired=!0,R}},this.getTextureSettings=()=>[...g],this.getTextureSettingsWithId=w=>{for(var A=0;A<g.length;A++)if(w===g[A].id)return f({},g[A])},this.getSlides=()=>this.morph?[...this.morph.children]:[],this.removeSlide=w=>{w&&this.removeSlideWithId(w.id)},this.removeSlideWithId=w=>{if(this.morph&&w in M&&M[w]){if(this.morph.getObjectById(w)){var A=M[w];this.morph.remove(A),A.clear(),A.geometry&&A.geometry.dispose(),A.material&&A.material.dispose(),this.boundingBoxUpdateRequired=!0}var I=g.findIndex(T=>T.id===w);-1<I&&g.splice(I,1)}},this.dispose=()=>{this.morph.children.forEach(w=>{w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose()}),u(29).TexturePrimitive.prototype.dispose.call(this),this.boundingBoxUpdateRequired=!0};var S=(w,A,I)=>{switch(A.direction.value){case 1:I.copy(A.slide.value),w.expandByPoint(I),I.setY(1),I.setZ(1),w.expandByPoint(I);break;case 2:I.copy(A.slide.value),w.expandByPoint(I),I.setX(1),I.setZ(1),w.expandByPoint(I);break;case 3:I.copy(A.slide.value),w.expandByPoint(I),I.setX(1),I.setY(1),w.expandByPoint(I);break}};this.getBoundingBox=()=>{if(this.morph&&this.morph.children&&this.morph.visible&&this.boundingBoxUpdateRequired){this.cachedBoundingBox.makeEmpty();var w=new m.Vector3(0,0,0);this.morph.children.forEach(A=>{S(this.cachedBoundingBox,A.material.uniforms,w)}),this.morph.updateMatrixWorld(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox},this.applyTransformation=(w,A,I)=>{var T=new m.Matrix4;T.set(w[0],w[1],w[2],0,w[3],w[4],w[5],0,w[6],w[7],w[8],0,0,0,0,0);var P=new m.Quaternion().setFromRotationMatrix(T);this.morph.position.set(...A),this.morph.quaternion.copy(P),this.morph.scale.set(...I),this.morph.updateMatrix(),this.boundingBoxUpdateRequired=!0},this.initialise=(w,A)=>{if(w){var I=w.locations;I&&0<I.length&&(this.applyTransformation(I[0].orientation,I[0].position,I[0].scale),"flipY"in I[0]&&(_=I[0].flipY)),this.createSlides(w.settings.slides),A!=null&&typeof A=="function"&&A(this)}}};b.prototype=Object.create(u(29).TexturePrimitive.prototype),b.prototype.constructor=b,l.TextureSlides=b},(o,l,u)=>{var c=u(4),f=c.GLSL3,h=`
3185
3185
  precision highp float;
@@ -3228,7 +3228,7 @@ void main() {
3228
3228
  `)!==-1&&(S=S.replace(/\r\n/g,`
3229
3229
  `)),S.indexOf(`\\
3230
3230
  `)!==-1&&(S=S.replace(/\\\n/g,""));for(var A=S.split(`
3231
- `),I="",T="",P=0,C=[],R=typeof"".trimLeft=="function",L=0,N=A.length;L<N;L++)if(I=A[L],I=R?I.trimLeft():I.trim(),P=I.length,P!==0&&(T=I.charAt(0),T!=="#"))if(T==="v"){var x=I.split(/\s+/);switch(x[0]){case"v":w.vertices.push(parseFloat(x[1]),parseFloat(x[2]),parseFloat(x[3])),7<=x.length?w.colors.push(parseFloat(x[4]),parseFloat(x[5]),parseFloat(x[6])):w.colors.push(void 0,void 0,void 0);break;case"vn":w.normals.push(parseFloat(x[1]),parseFloat(x[2]),parseFloat(x[3]));break;case"vt":w.uvs.push(parseFloat(x[1]),parseFloat(x[2]))}}else if(T==="f"){for(var O,B=I.substr(1).trim(),D=B.split(/\s+/),k=[],U=0,H=D.length;U<H;U++)if(O=D[U],0<O.length){var X=O.split("/");k.push(X)}for(var re=k[0],j=1,G=k.length-1;j<G;j++){var W=k[j],K=k[j+1];w.addFace(re[0],W[0],K[0],re[1],W[1],K[1],re[2],W[2],K[2])}}else if(T==="l"){var ee=I.substring(1).trim().split(" "),q=[],ie=[];if(I.indexOf("/")===-1)q=ee;else for(var Y,te=0,F=ee.length;te<F;te++)Y=ee[te].split("/"),Y[0]!==""&&q.push(Y[0]),Y[1]!==""&&ie.push(Y[1]);w.addLineGeometry(q,ie)}else if(T==="p"){var $=I.substr(1).trim(),Q=$.split(" ");w.addPointGeometry(Q)}else if((C=f.exec(I))!==null){var V=(" "+C[0].substr(1).trim()).substr(1);w.startObject(V)}else if(p.test(I))w.object.startMaterial(I.substring(7).trim(),w.materialLibraries);else if(h.test(I))w.materialLibraries.push(I.substring(7).trim());else if(y.test(I))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(T==="s"){if(C=I.split(" "),1<C.length){var z=C[1].trim().toLowerCase();w.object.smooth=z!=="0"&&z!=="off"}else w.object.smooth=!0;var oe=w.object.currentMaterial();oe&&(oe.smooth=w.object.smooth)}else{if(I==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+I+'"')}w.finalize();var ae=new c.Group;ae.materialLibraries=[].concat(w.materialLibraries);var le=w.objects.length!==1||w.objects[0].geometry.vertices.length!==0;if(le==!0)for(var fe=0,be=w.objects.length;fe<be;fe++){var ye=w.objects[fe],he=ye.geometry,ve=ye.materials,se=he.type==="Line",we=he.type==="Points",pe=!1;if(he.vertices.length!==0){var ge=new c.BufferGeometry;ge.setAttribute("position",new c.Float32BufferAttribute(he.vertices,3)),0<he.normals.length&&ge.setAttribute("normal",new c.Float32BufferAttribute(he.normals,3)),0<he.colors.length&&(pe=!0,ge.setAttribute("color",new c.Float32BufferAttribute(he.colors,3))),he.hasUVIndices===!0&&ge.setAttribute("uv",new c.Float32BufferAttribute(he.uvs,2));for(var Ee=[],He=0,tt=ve.length;He<tt;He++){var Ie=ve[He],ot=Ie.name+"_"+Ie.smooth+"_"+pe,Le=w.materials[ot];if(this.materials!==null){if(Le=this.materials.create(Ie.name),se&&Le&&!(Le instanceof c.LineBasicMaterial)){var Ye=new c.LineBasicMaterial;c.Material.prototype.copy.call(Ye,Le),Ye.color.copy(Le.color),Le=Ye}else if(we&&Le&&!(Le instanceof c.PointsMaterial)){var We=new c.PointsMaterial({size:10,sizeAttenuation:!1});c.Material.prototype.copy.call(We,Le),We.color.copy(Le.color),We.map=Le.map,Le=We}}Le===void 0&&(Le=se?new c.LineBasicMaterial:we?new c.PointsMaterial({size:1,sizeAttenuation:!1}):new c.MeshPhongMaterial,Le.name=Ie.name,Le.flatShading=!Ie.smooth,Le.vertexColors=pe,w.materials[ot]=Le),Ee.push(Le)}var it=void 0;if(1<Ee.length){for(var et,Mt=0,pt=ve.length;Mt<pt;Mt++)et=ve[Mt],ge.addGroup(et.groupStart,et.groupCount,Mt);it=se?new c.LineSegments(ge,Ee):we?new c.Points(ge,Ee):new c.Mesh(ge,Ee)}else it=se?new c.LineSegments(ge,Ee[0]):we?new c.Points(ge,Ee[0]):new c.Mesh(ge,Ee[0]);it.name=ye.name,ae.add(it)}}else if(0<w.vertices.length){var hn=new c.PointsMaterial({size:1,sizeAttenuation:!1}),Mn=new c.BufferGeometry;Mn.setAttribute("position",new c.Float32BufferAttribute(w.vertices,3)),0<w.colors.length&&w.colors[0]!==void 0&&(Mn.setAttribute("color",new c.Float32BufferAttribute(w.colors,3)),hn.vertexColors=!0);var jn=new c.Points(Mn,hn);ae.add(jn)}return ae}}},(o,l,u)=>{function c(_,E){var S=Object.keys(_);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(_);E&&(w=w.filter(function(A){return Object.getOwnPropertyDescriptor(_,A).enumerable})),S.push.apply(S,w)}return S}function f(_){for(var E,S=1;S<arguments.length;S++)E=arguments[S]==null?{}:arguments[S],S%2?c(Object(E),!0).forEach(function(w){h(_,w,E[w])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(E)):c(Object(E)).forEach(function(w){Object.defineProperty(_,w,Object.getOwnPropertyDescriptor(E,w))});return _}function h(_,E,S){return E=p(E),E in _?Object.defineProperty(_,E,{value:S,enumerable:!0,configurable:!0,writable:!0}):_[E]=S,_}function p(_){var E=y(_,"string");return typeof E=="symbol"?E:E+""}function y(_,E){if(typeof _!="object"||!_)return _;var S=_[Symbol.toPrimitive];if(S!==void 0){var w=S.call(_,E||"default");if(typeof w!="object")return w;throw new TypeError("@@toPrimitive must return a primitive value.")}return(E==="string"?String:Number)(_)}var m=u(19).JSONLoader,d=u(4),b=d.FileLoader,v=_=>{var E=(w,A)=>{w.merge(A)};if(_&&0<_.length){for(;1<_.length;){var S=_.splice(1,1);E(_[0],S[0])}return _[0]}},g=function(E,S,w){var A=new b,I=new m;A.crossOrigin=S;var T=E,P=w,C=void 0,R=!1,L=!1,N=void 0,x=[],O=U=>{var H=C[U.index];if(H){var X=I.parse(H);U.onLoad(X.geometry,X.materials)}else B(U)},B=U=>{U.onError&&(!N&&(N={responseURL:T}),U.onError(N))};this.downloadCompleted=U=>{try{C=JSON.parse(U[0]),R=!1,L=!0,Array.isArray(C)?x.forEach(H=>O(H)):x.forEach(H=>B(H))}catch{x.forEach(X=>B(X))}};var D=()=>U=>{N=U,L=!0,R=!1,x.forEach(H=>{B(H)})},k=()=>U=>{x.forEach(H=>{H.onProgress&&H.onProgress(U)})};this.load=(U,H,X,re)=>{var j={index:U,onLoad:H,onProgress:X,onError:re};L?C?O(j):B(N):R?x.push(j):(x.push(j),R=!0,A.load(T,P,k,D))}},M=function(E,S){var w=[],A=E,I=S,T=0;this.itemDownloaded=(P,C)=>{if(w[P]=C,T++,T==A){for(var R=w[0][1],L=w.map(O=>O[0]),N=v(L),x=1;x<A;x++)w[P][0].dispose(),w[P][1].forEach(O=>O.dispose());I(N,R)}}};l.PrimitivesLoader=function(){var _=0,E=20;this.crossOrigin="Anonymous";var S=new m,w=[],A={},I=(R,L,N,x,O)=>{var B=R.length,D=new M(B,L),k=0;R.forEach(U=>{var H=O?f({},O):{};H.msHandler=D,H.order=k,k++,P(U,L,N,x,H)})},T=(R,L,N,x,O)=>{var B=O?f({},O):{},D=A[R];if(!D)if(E>_){var k=new C(void 0,this,B);++_,D=new g(R,this.crossOrigin,k),A[R]=D}else w.push({url:R,onLoad:L,onProgress:N,onError:x,options:O});D&&(B.isHandler=D,D.load(O.index,L,N,x))},P=(R,L,N,x,O)=>{if(O&&O.index!==void 0)T(R,L,N,x,O);else if(E>_){++_;var B=new C(L,this,O),D=new C(x,this,O);S.crossOrigin=this.crossOrigin,S.load(R,B,N,D)}else w.push({url:R,onLoad:L,onProgress:N,onError:x,options:O})};this.load=(R,L,N,x,O)=>{Array.isArray(R)?I(R,L,N,x,O):P(R,L,N,x,O)},this.loadFromWaitingList=()=>{for(;E>_;){var R=w.shift();if(R)this.load(R.url,R.onLoad,R.onProgress,R.onError,R.options);else return}},this.itemRemainingCheck=()=>{if(w.length===0&&_==0)for(var R in A)A.hasOwnProperty(R)&&delete A[R]};var C=function(L,N,x){return function(){--_;for(var O=arguments.length,B=Array(O),D=0;D<O;D++)B[D]=arguments[D];x!=null&&x.msHandler?x.msHandler.itemDownloaded(x.order,B):x!=null&&x.isHandler?x.isHandler.downloadCompleted(B):L&&L(...B),N.loadFromWaitingList(),N.itemRemainingCheck()}};this.parse=R=>S.parse(R)}},(o,l,u)=>{u(4);var c=u(40).GLTFLoader,f=function(){var h=this;this.parseGLTFObjects=(p,y,m,d)=>{var b=y;if(m!==0){if(p.type!=="Object3D"){var v;if(p.type==="Mesh"?v=new(u(3)).Geometry:p.type==="LineSegments"?v=new(u(24)).Lines:p.type==="Points"&&(v=new(u(22)).Pointset),v){var g=!1,M=!1;p.geometry&&p.geometry.morphAttributes&&(g=!!p.geometry.morphAttributes.position,M=!!p.geometry.morphAttributes.color),v.setMesh(p.clone(),g,M);var _=v.getMorph();v.groupName=_.name,_.matrixAutoUpdate=!0,y.addZincObject(v),d!=null&&typeof d=="function"&&d(v)}}else if(p.name!==""&&(y&&(b=y.findOrCreateChildFromPath(p.name)),b)){var E=b.getGroup();E.position.copy(p.position),E.rotation.copy(p.rotation),E.quaternion.copy(p.quaternion),E.matrixAutoUpdate=!0}}m++,p.children.forEach(S=>{h.parseGLTFObjects(S,b,m,d)})},this.setCamera=p=>{p.viewAll();var y=p.getZincCameraControls(),m=y.getCurrentViewport();y.addViewport("default",m),y.setDefaultViewport("default")},this.load=(p,y,m,d,b)=>{var v=m.substring(0,m.lastIndexOf("/")+1),g=m.substring(m.lastIndexOf("/")+1,m.length),M=new c().setPath(v);M.load(g,function(_){console.log(_),h.parseGLTFObjects(_.scene,y,0,d),h.setCamera(p),b!=null&&typeof b=="function"&&b()})}};l.GLTFToZincJSLoader=f},o=>{o.exports=XB},(o,l,u)=>{var c=u(42).GLTFExporter,f=function(h){var p=h;this.exportGLTF=y=>{var m=p.getRootRegion(),d=m.getAllObjects(!0),b=[];d.forEach(M=>{M.animationClip&&b.push({clip:M.animationClip[0],mesh:M.getMorph()})});var v=new c,g={binary:y,animations:b};return new Promise(M=>{v.parse(p.getThreeJSScene(),function(_){M(_)},g)})}};l.SceneExporter=f},(o,l,u)=>{u.r(l),u.d(l,{GLTFExporter:()=>f});var c=u(4);class f{constructor(){this.pluginCallbacks=[],this.register(function(x){return new C(x)}),this.register(function(x){return new R(x)}),this.register(function(x){return new L(x)})}register(x){return this.pluginCallbacks.indexOf(x)===-1&&this.pluginCallbacks.push(x),this}unregister(x){return this.pluginCallbacks.indexOf(x)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(x),1),this}parse(x,O,B){for(var D=new P,k=[],U=0,H=this.pluginCallbacks.length;U<H;U++)k.push(this.pluginCallbacks[U](D));D.setPlugins(k),D.write(x,O,B)}}var h={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},p={};p[c.NearestFilter]=h.NEAREST,p[c.NearestMipmapNearestFilter]=h.NEAREST_MIPMAP_NEAREST,p[c.NearestMipmapLinearFilter]=h.NEAREST_MIPMAP_LINEAR,p[c.LinearFilter]=h.LINEAR,p[c.LinearMipmapNearestFilter]=h.LINEAR_MIPMAP_NEAREST,p[c.LinearMipmapLinearFilter]=h.LINEAR_MIPMAP_LINEAR,p[c.ClampToEdgeWrapping]=h.CLAMP_TO_EDGE,p[c.RepeatWrapping]=h.REPEAT,p[c.MirroredRepeatWrapping]=h.MIRRORED_REPEAT;var y={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},m=12,d=1179937895,b=2,v=8,g=1313821514,M=5130562;function _(N,x){return N.length===x.length&&N.every(function(O,B){return O===x[B]})}function E(N){if(window.TextEncoder!==void 0)return new TextEncoder().encode(N).buffer;for(var x,O=new Uint8Array(new ArrayBuffer(N.length)),B=0,D=N.length;B<D;B++)x=N.charCodeAt(B),O[B]=255<x?32:x;return O.buffer}function S(N){return _(N.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function w(N,x,O){for(var B={min:Array(N.itemSize).fill(Number.POSITIVE_INFINITY),max:Array(N.itemSize).fill(Number.NEGATIVE_INFINITY)},D=x;D<x+O;D++)for(var k,U=0;U<N.itemSize;U++)k=void 0,4<N.itemSize?k=N.array[D*N.itemSize+U]:U===0?k=N.getX(D):U===1?k=N.getY(D):U===2?k=N.getZ(D):U==3&&(k=N.getW(D)),B.min[U]=Math.min(B.min[U],k),B.max[U]=Math.max(B.max[U],k);return B}function A(N){return 4*Math.ceil(N/4)}function I(N){var x=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,O=A(N.byteLength);if(O!==N.byteLength){var B=new Uint8Array(O);if(B.set(new Uint8Array(N)),x!==0)for(var D=N.byteLength;D<O;D++)B[D]=x;return B.buffer}return N}var T=null;class P{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(x){this.plugins=x}write(x,O,B){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},B),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(x);var D=this;Promise.all(this.pending).then(function(){var k=D.buffers,U=D.json,H=D.options,X=D.extensionsUsed,re=new Blob(k,{type:"application/octet-stream"}),j=Object.keys(X);if(0<j.length&&(U.extensionsUsed=j),U.buffers&&0<U.buffers.length&&(U.buffers[0].byteLength=re.size),H.binary===!0){var G=new window.FileReader;G.readAsArrayBuffer(re),G.onloadend=function(){var K=I(G.result),ee=new DataView(new ArrayBuffer(v));ee.setUint32(0,K.byteLength,!0),ee.setUint32(4,M,!0);var q=I(E(JSON.stringify(U)),32),ie=new DataView(new ArrayBuffer(v));ie.setUint32(0,q.byteLength,!0),ie.setUint32(4,g,!0);var Y=new ArrayBuffer(m),te=new DataView(Y);te.setUint32(0,d,!0),te.setUint32(4,b,!0);var F=m+ie.byteLength+q.byteLength+ee.byteLength+K.byteLength;te.setUint32(8,F,!0);var $=new Blob([Y,ie,q,ee,K],{type:"application/octet-stream"}),Q=new window.FileReader;Q.readAsArrayBuffer($),Q.onloadend=function(){O(Q.result)}}}else if(U.buffers&&0<U.buffers.length){var W=new window.FileReader;W.readAsDataURL(re),W.onloadend=function(){var K=W.result;U.buffers[0].uri=K,O(U)}}else O(U)})}serializeUserData(x,O){if(!(x.userData&&x.userData.isZincObject)&&Object.keys(x.userData).length!==0){var B=this.options,D=this.extensionsUsed;try{var k=JSON.parse(JSON.stringify(x.userData));if(B.includeCustomExtensions&&k.gltfExtensions){for(var U in O.extensions===void 0&&(O.extensions={}),k.gltfExtensions)O.extensions[U]=k.gltfExtensions[U],D[U]=!0;delete k.gltfExtensions}0<Object.keys(k).length&&(O.extras=k)}catch(H){console.warn("THREE.GLTFExporter: userData of '"+x.name+"' won't be serialized because of JSON.stringify error - "+H.message)}}}getUID(x){return this.uids.has(x)||this.uids.set(x,this.uid++),this.uids.get(x)}isNormalizedNormalAttribute(x){var O=this.cache;if(O.attributesNormalized.has(x))return!1;for(var B=new c.Vector3,D=0,k=x.count;D<k;D++)if(5e-4<Math.abs(B.fromBufferAttribute(x,D).length()-1))return!1;return!0}createNormalizedNormalAttribute(x){var O=this.cache;if(O.attributesNormalized.has(x))return O.attributesNormalized.get(x);for(var B=x.clone(),D=new c.Vector3,k=0,U=B.count;k<U;k++)D.fromBufferAttribute(B,k),D.x===0&&D.y===0&&D.z===0?D.setX(1):D.normalize(),B.setXYZ(k,D.x,D.y,D.z);return O.attributesNormalized.set(x,B),B}applyTextureTransform(x,O){var B=!1,D={};(O.offset.x!==0||O.offset.y!==0)&&(D.offset=O.offset.toArray(),B=!0),O.rotation!==0&&(D.rotation=O.rotation,B=!0),(O.repeat.x!==1||O.repeat.y!==1)&&(D.scale=O.repeat.toArray(),B=!0),B&&(x.extensions=x.extensions||{},x.extensions.KHR_texture_transform=D,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(x){var O=this.json,B=this.buffers;return O.buffers||(O.buffers=[{byteLength:0}]),B.push(x),0}processBufferView(x,O,B,D,k){var U=this.json;U.bufferViews||(U.bufferViews=[]);for(var H=O===h.UNSIGNED_BYTE?1:O===h.UNSIGNED_SHORT?2:4,X=A(D*x.itemSize*H),re=new DataView(new ArrayBuffer(X)),j=0,G=B;G<B+D;G++)for(var W,K=0;K<x.itemSize;K++)W=void 0,4<x.itemSize?W=x.array[G*x.itemSize+K]:K===0?W=x.getX(G):K===1?W=x.getY(G):K===2?W=x.getZ(G):K==3&&(W=x.getW(G)),O===h.FLOAT?re.setFloat32(j,W,!0):O===h.UNSIGNED_INT?re.setUint32(j,W,!0):O===h.UNSIGNED_SHORT?re.setUint16(j,W,!0):O===h.UNSIGNED_BYTE&&re.setUint8(j,W),j+=H;var ee={buffer:this.processBuffer(re.buffer),byteOffset:this.byteOffset,byteLength:X};k!==void 0&&(ee.target=k),k===h.ARRAY_BUFFER&&(ee.byteStride=x.itemSize*H),this.byteOffset+=X,U.bufferViews.push(ee);var q={id:U.bufferViews.length-1,byteLength:0};return q}processBufferViewImage(x){var O=this,B=O.json;return B.bufferViews||(B.bufferViews=[]),new Promise(function(D){var k=new window.FileReader;k.readAsArrayBuffer(x),k.onloadend=function(){var U=I(k.result),H={buffer:O.processBuffer(U),byteOffset:O.byteOffset,byteLength:U.byteLength};O.byteOffset+=U.byteLength,D(B.bufferViews.push(H)-1)}})}processAccessor(x,O,B,D){var k,U=this.options,H=this.json;if(x.array.constructor===Float32Array)k=h.FLOAT;else if(x.array.constructor===Uint32Array)k=h.UNSIGNED_INT;else if(x.array.constructor===Uint16Array)k=h.UNSIGNED_SHORT;else if(x.array.constructor===Uint8Array)k=h.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(B===void 0&&(B=0),D===void 0&&(D=x.count),U.truncateDrawRange&&O!==void 0&&O.index===null){var X=B+D,re=O.drawRange.count===1/0?x.count:O.drawRange.start+O.drawRange.count;B=Math.max(B,O.drawRange.start),D=Math.min(X,re)-B,0>D&&(D=0)}if(D===0)return null;var j,G=w(x,B,D);O!==void 0&&(j=x===O.index?h.ELEMENT_ARRAY_BUFFER:h.ARRAY_BUFFER);var W=this.processBufferView(x,k,B,D,j),K={bufferView:W.id,byteOffset:W.byteOffset,componentType:k,count:D,max:G.max,min:G.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[x.itemSize]};return x.normalized===!0&&(K.normalized=!0),H.accessors||(H.accessors=[]),H.accessors.push(K)-1}processImage(x,O,B){var D=this,k=D.cache,U=D.json,H=D.options,X=D.pending;k.images.has(x)||k.images.set(x,{});var re=k.images.get(x),j=O===c.RGBAFormat?"image/png":"image/jpeg",G=j+":flipY/"+B.toString();if(re[G]!==void 0)return re[G];U.images||(U.images=[]);var W={mimeType:j};if(H.embedImages){var K=T=T||document.createElement("canvas");K.width=Math.min(x.width,H.maxTextureSize),K.height=Math.min(x.height,H.maxTextureSize);var ee=K.getContext("2d");if(B===!0&&(ee.translate(0,K.height),ee.scale(1,-1)),typeof HTMLImageElement<"u"&&x instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&x instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&x instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&x instanceof ImageBitmap)ee.drawImage(x,0,0,K.width,K.height);else{O!==c.RGBAFormat&&O!==c.RGBFormat&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(x.width>H.maxTextureSize||x.height>H.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",x);var q=new Uint8ClampedArray(4*(x.height*x.width));if(O===c.RGBAFormat)for(var ie=0;ie<q.length;ie+=4)q[ie+0]=x.data[ie+0],q[ie+1]=x.data[ie+1],q[ie+2]=x.data[ie+2],q[ie+3]=x.data[ie+3];else for(var Y=0,te=0;Y<q.length;Y+=4,te+=3)q[Y+0]=x.data[te+0],q[Y+1]=x.data[te+1],q[Y+2]=x.data[te+2],q[Y+3]=255;ee.putImageData(new ImageData(q,x.width,x.height),0,0)}H.binary===!0?X.push(new Promise(function($){K.toBlob(function(Q){D.processBufferViewImage(Q).then(function(V){W.bufferView=V,$()})},j)})):W.uri=K.toDataURL(j)}else W.uri=x.src;var F=U.images.push(W)-1;return re[G]=F,F}processSampler(x){var O=this.json;O.samplers||(O.samplers=[]);var B={magFilter:p[x.magFilter],minFilter:p[x.minFilter],wrapS:p[x.wrapS],wrapT:p[x.wrapT]};return O.samplers.push(B)-1}processTexture(x){var O=this.cache,B=this.json;if(O.textures.has(x))return O.textures.get(x);B.textures||(B.textures=[]);var D={sampler:this.processSampler(x),source:this.processImage(x.image,x.format,x.flipY)};x.name&&(D.name=x.name),this._invokeAll(function(U){U.writeTexture&&U.writeTexture(x,D)});var k=B.textures.push(D)-1;return O.textures.set(x,k),k}processMaterial(x){var O=this.cache,B=this.json;if(O.materials.has(x))return O.materials.get(x);if(x.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;B.materials||(B.materials=[]);var D={pbrMetallicRoughness:{}};x.isMeshStandardMaterial!==!0&&x.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");var k=x.color.toArray().concat([x.opacity]);if(_(k,[1,1,1,1])||(D.pbrMetallicRoughness.baseColorFactor=k),x.isMeshStandardMaterial?(D.pbrMetallicRoughness.metallicFactor=x.metalness,D.pbrMetallicRoughness.roughnessFactor=x.roughness):(D.pbrMetallicRoughness.metallicFactor=.5,D.pbrMetallicRoughness.roughnessFactor=.5),x.metalnessMap||x.roughnessMap)if(x.metalnessMap===x.roughnessMap){var U={index:this.processTexture(x.metalnessMap)};this.applyTextureTransform(U,x.metalnessMap),D.pbrMetallicRoughness.metallicRoughnessTexture=U}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(x.map){var H={index:this.processTexture(x.map)};this.applyTextureTransform(H,x.map),D.pbrMetallicRoughness.baseColorTexture=H}if(x.emissive){var X=x.emissive.clone().multiplyScalar(x.emissiveIntensity),re=Math.max(X.r,X.g,X.b);if(1<re&&(X.multiplyScalar(1/re),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),0<re&&(D.emissiveFactor=X.toArray()),x.emissiveMap){var j={index:this.processTexture(x.emissiveMap)};this.applyTextureTransform(j,x.emissiveMap),D.emissiveTexture=j}}if(x.normalMap){var G={index:this.processTexture(x.normalMap)};x.normalScale&&x.normalScale.x!==-1&&(x.normalScale.x!==x.normalScale.y&&console.warn("THREE.GLTFExporter: Normal scale components are different, ignoring Y and exporting X."),G.scale=x.normalScale.x),this.applyTextureTransform(G,x.normalMap),D.normalTexture=G}if(x.aoMap){var W={index:this.processTexture(x.aoMap),texCoord:1};x.aoMapIntensity!==1&&(W.strength=x.aoMapIntensity),this.applyTextureTransform(W,x.aoMap),D.occlusionTexture=W}x.transparent?D.alphaMode="BLEND":0<x.alphaTest&&(D.alphaMode="MASK",D.alphaCutoff=x.alphaTest),x.side===c.DoubleSide&&(D.doubleSided=!0),x.name!==""&&(D.name=x.name),this.serializeUserData(x,D),this._invokeAll(function(ee){ee.writeMaterial&&ee.writeMaterial(x,D)});var K=B.materials.push(D)-1;return O.materials.set(x,K),K}processMesh(x){var O=this.cache,B=this.json,D=[x.geometry.uuid];if(Array.isArray(x.material))for(var k=0,U=x.material.length;k<U;k++)D.push(x.material[k].uuid);else D.push(x.material.uuid);var H=D.join(":");if(O.meshes.has(H))return O.meshes.get(H);var X,re=x.geometry;if(X=x.isLineSegments?h.LINES:x.isLineLoop?h.LINE_LOOP:x.isLine?h.LINE_STRIP:x.isPoints?h.POINTS:x.material.wireframe?h.LINES:h.TRIANGLES,re.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");var j={},G={},W=[],K=[],ee={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},q=re.getAttribute("normal");q===void 0||this.isNormalizedNormalAttribute(q)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),re.setAttribute("normal",this.createNormalizedNormalAttribute(q)));var ie=null;for(var Y in re.attributes)if(Y.substr(0,5)!=="morph"){var te=re.attributes[Y];Y=ee[Y]||Y.toUpperCase();var F=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;if(F.test(Y)||(Y="_"+Y),O.attributes.has(this.getUID(te))){G[Y]=O.attributes.get(this.getUID(te));continue}ie=null;var $=te.array;Y!=="JOINTS_0"||$ instanceof Uint16Array||$ instanceof Uint8Array||(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),ie=new c.BufferAttribute(new Uint16Array($),te.itemSize,te.normalized));var Q=this.processAccessor(ie||te,re);Q!==null&&(G[Y]=Q,O.attributes.set(this.getUID(te),Q))}if(q!==void 0&&re.setAttribute("normal",q),Object.keys(G).length===0)return null;if(x.morphTargetInfluences!==void 0&&0<x.morphTargetInfluences.length){var V=[],z=[],oe={};if(x.morphTargetDictionary!==void 0)for(var ae in x.morphTargetDictionary)oe[x.morphTargetDictionary[ae]]=ae;for(var le=0;le<x.morphTargetInfluences.length;++le){var fe={},be=!1;for(var ye in re.morphAttributes){if(ye!="position"&&ye!=="normal"&&ye!=="color"){be||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),be=!0);continue}var he=re.morphAttributes[ye][le],ve=ye.toUpperCase();ee[ye]&&(ve=ee[ye]);var se=re.attributes[ye];if(O.attributes.has(this.getUID(he))){fe[ve]=O.attributes.get(this.getUID(he));continue}var we=se.clone();if(!re.morphTargetsRelative)if(se)for(var pe=0,ge=he.count;pe<ge;pe++)se.count>pe&&we.setXYZ(pe,he.getX(pe)-se.getX(pe),he.getY(pe)-se.getY(pe),he.getZ(pe)-se.getZ(pe));else for(var Ee=0,He=he.count;Ee<He;Ee++)we.setXYZ(Ee,0,0,0);fe[ve]=this.processAccessor(we,re),O.attributes.set(this.getUID(se),fe[ve])}K.push(fe),V.push(x.morphTargetInfluences[le]),x.morphTargetDictionary!==void 0&&z.push(oe[le])}j.weights=V,0<z.length&&(j.extras={},j.extras.targetNames=z)}var tt=Array.isArray(x.material);if(tt&&re.groups.length===0)return null;for(var Ie,ot=tt?x.material:[x.material],Le=tt?re.groups:[{materialIndex:0,start:void 0,count:void 0}],Ye=0,We=Le.length;Ye<We;Ye++){if(Ie={mode:X,attributes:G},this.serializeUserData(re,Ie),0<K.length&&(Ie.targets=K),re.index!==null){var it=this.getUID(re.index);(Le[Ye].start!==void 0||Le[Ye].count!==void 0)&&(it+=":"+Le[Ye].start+":"+Le[Ye].count),O.attributes.has(it)?Ie.indices=O.attributes.get(it):(Ie.indices=this.processAccessor(re.index,re,Le[Ye].start,Le[Ye].count),O.attributes.set(it,Ie.indices)),Ie.indices===null&&delete Ie.indices}var et=this.processMaterial(ot[Le[Ye].materialIndex]);et!==null&&(Ie.material=et),W.push(Ie)}j.primitives=W,B.meshes||(B.meshes=[]),this._invokeAll(function(pt){pt.writeMesh&&pt.writeMesh(x,j)});var Mt=B.meshes.push(j)-1;return O.meshes.set(H,Mt),Mt}processCamera(x){var O=this.json;O.cameras||(O.cameras=[]);var B=x.isOrthographicCamera,D={type:B?"orthographic":"perspective"};return B?D.orthographic={xmag:2*x.right,ymag:2*x.top,zfar:0>=x.far?.001:x.far,znear:0>x.near?0:x.near}:D.perspective={aspectRatio:x.aspect,yfov:c.MathUtils.degToRad(x.fov),zfar:0>=x.far?.001:x.far,znear:0>x.near?0:x.near},x.name!==""&&(D.name=x.type),O.cameras.push(D)-1}processAnimation(x,O){var B=this.json,D=this.nodeMap;B.animations||(B.animations=[]),x=f.Utils.mergeMorphTargetTracks(x.clone(),O);for(var k=x.tracks,U=[],H=[],X=0;X<k.length;++X){var re=k[X],j=c.PropertyBinding.parseTrackName(re.name),G=c.PropertyBinding.findNode(O,j.nodeName),W=y[j.propertyName];if(j.objectName==="bones"&&(G.isSkinnedMesh===!0?G=G.skeleton.getBoneByName(j.objectIndex):G=void 0),!G||!W)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',re.name),null;var K=1,ee=re.values.length/re.times.length;W===y.morphTargetInfluences&&(ee/=G.morphTargetInfluences.length);var q=void 0;re.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(q="CUBICSPLINE",ee/=3):re.getInterpolation()===c.InterpolateDiscrete?q="STEP":q="LINEAR",H.push({input:this.processAccessor(new c.BufferAttribute(re.times,K)),output:this.processAccessor(new c.BufferAttribute(re.values,ee)),interpolation:q}),U.push({sampler:H.length-1,target:{node:D.get(G),path:W}})}return B.animations.push({name:x.name||"clip_"+B.animations.length,samplers:H,channels:U}),B.animations.length-1}processSkin(x){var O=this.json,B=this.nodeMap,D=O.nodes[B.get(x)],k=x.skeleton;if(k===void 0)return null;var U=x.skeleton.bones[0];if(U===void 0)return null;for(var H=[],X=new Float32Array(16*k.bones.length),re=new c.Matrix4,j=0;j<k.bones.length;++j)H.push(B.get(k.bones[j])),re.copy(k.boneInverses[j]),re.multiply(x.bindMatrix).toArray(X,16*j);O.skins===void 0&&(O.skins=[]),O.skins.push({inverseBindMatrices:this.processAccessor(new c.BufferAttribute(X,16)),joints:H,skeleton:B.get(U)});var G=D.skin=O.skins.length-1;return G}processNode(x){var O=this.json,B=this.options,D=this.nodeMap;O.nodes||(O.nodes=[]);var k={};if(B.trs){var U=x.quaternion.toArray(),H=x.position.toArray(),X=x.scale.toArray();_(U,[0,0,0,1])||(k.rotation=U),_(H,[0,0,0])||(k.translation=H),_(X,[1,1,1])||(k.scale=X)}else x.matrixAutoUpdate&&x.updateMatrix(),S(x.matrix)===!1&&(k.matrix=x.matrix.elements);if(x.name!==""&&(k.name=x.name+""),this.serializeUserData(x,k),x.isMesh||x.isLine||x.isPoints){var re=this.processMesh(x);re!==null&&(k.mesh=re)}else x.isCamera&&(k.camera=this.processCamera(x));if(x.isSkinnedMesh&&this.skins.push(x),0<x.children.length){for(var j,G=[],W=0,K=x.children.length;W<K;W++)if(j=x.children[W],j.visible||B.onlyVisible===!1){var ee=this.processNode(j);ee!==null&&G.push(ee)}0<G.length&&(k.children=G)}this._invokeAll(function(ie){ie.writeNode&&ie.writeNode(x,k)});var q=O.nodes.push(k)-1;return D.set(x,q),q}processScene(x){var O=this.json,B=this.options;O.scenes||(O.scenes=[],O.scene=0);var D={};x.name!==""&&(D.name=x.name),O.scenes.push(D);for(var k,U=[],H=0,X=x.children.length;H<X;H++)if(k=x.children[H],k.visible||B.onlyVisible===!1){var re=this.processNode(k);re!==null&&U.push(re)}0<U.length&&(D.nodes=U),this.serializeUserData(x,D)}processObjects(x){var O=new c.Scene;O.name="AuxScene";for(var B=0;B<x.length;B++)O.children.push(x[B]);this.processScene(O)}processInput(x){var O=this.options;x=x instanceof Array?x:[x],this._invokeAll(function(H){H.beforeParse&&H.beforeParse(x)});for(var B=[],D=0;D<x.length;D++)x[D]instanceof c.Scene?this.processScene(x[D]):B.push(x[D]);0<B.length&&this.processObjects(B);for(var k=0;k<this.skins.length;++k)this.processSkin(this.skins[k]);for(var U=0;U<O.animations.length;++U)this.processAnimation(O.animations[U].clip,O.animations[U].mesh);this._invokeAll(function(H){H.afterParse&&H.afterParse(x)})}_invokeAll(x){for(var O=0,B=this.plugins.length;O<B;O++)x(this.plugins[O])}}class C{constructor(x){this.writer=x,this.name="KHR_lights_punctual"}writeNode(x,O){if(x.isLight){if(!x.isDirectionalLight&&!x.isPointLight&&!x.isSpotLight)return void console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",x);var B=this.writer,D=B.json,k=B.extensionsUsed,U={};x.name&&(U.name=x.name),U.color=x.color.toArray(),U.intensity=x.intensity,x.isDirectionalLight?U.type="directional":x.isPointLight?(U.type="point",0<x.distance&&(U.range=x.distance)):x.isSpotLight&&(U.type="spot",0<x.distance&&(U.range=x.distance),U.spot={},U.spot.innerConeAngle=-1*((x.penumbra-1)*x.angle),U.spot.outerConeAngle=x.angle),x.decay!==void 0&&x.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),x.target&&(x.target.parent!==x||x.target.position.x!==0||x.target.position.y!==0||x.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),k[this.name]||(D.extensions=D.extensions||{},D.extensions[this.name]={lights:[]},k[this.name]=!0);var H=D.extensions[this.name].lights;H.push(U),O.extensions=O.extensions||{},O.extensions[this.name]={light:H.length-1}}}}class R{constructor(x){this.writer=x,this.name="KHR_materials_unlit"}writeMaterial(x,O){if(x.isMeshBasicMaterial){var B=this.writer,D=B.extensionsUsed;O.extensions=O.extensions||{},O.extensions[this.name]={},D[this.name]=!0,O.pbrMetallicRoughness.metallicFactor=0,O.pbrMetallicRoughness.roughnessFactor=.9}}}class L{constructor(x){this.writer=x,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(x,O){if(x.isGLTFSpecularGlossinessMaterial){var B=this.writer,D=B.extensionsUsed,k={};O.pbrMetallicRoughness.baseColorFactor&&(k.diffuseFactor=O.pbrMetallicRoughness.baseColorFactor);var U=[1,1,1];if(x.specular.toArray(U,0),k.specularFactor=U,k.glossinessFactor=x.glossiness,O.pbrMetallicRoughness.baseColorTexture&&(k.diffuseTexture=O.pbrMetallicRoughness.baseColorTexture),x.specularMap){var H={index:B.processTexture(x.specularMap)};B.applyTextureTransform(H,x.specularMap),k.specularGlossinessTexture=H}O.extensions=O.extensions||{},O.extensions[this.name]=k,D[this.name]=!0}}}f.Utils={insertKeyframe:function(x,O){var B,D=.001,k=x.getValueSize(),U=new x.TimeBufferType(x.times.length+1),H=new x.ValueBufferType(x.values.length+k),X=x.createInterpolant(new x.ValueBufferType(k));if(x.times.length===0){U[0]=O;for(var re=0;re<k;re++)H[re]=0;B=0}else if(O<x.times[0]){if(Math.abs(x.times[0]-O)<D)return 0;U[0]=O,U.set(x.times,1),H.set(X.evaluate(O),0),H.set(x.values,k),B=0}else if(O>x.times[x.times.length-1]){if(Math.abs(x.times[x.times.length-1]-O)<D)return x.times.length-1;U[U.length-1]=O,U.set(x.times,0),H.set(x.values,0),H.set(X.evaluate(O),x.values.length),B=U.length-1}else for(var j=0;j<x.times.length;j++){if(Math.abs(x.times[j]-O)<D)return j;if(x.times[j]<O&&x.times[j+1]>O){U.set(x.times.slice(0,j+1),0),U[j+1]=O,U.set(x.times.slice(j+1),j+2),H.set(x.values.slice(0,(j+1)*k),0),H.set(X.evaluate(O),(j+1)*k),H.set(x.values.slice((j+1)*k),(j+2)*k),B=j+1;break}}return x.times=U,x.values=H,B},mergeMorphTargetTracks:function(x,O){for(var B=[],D={},k=x.tracks,U=0;U<k.length;++U){var H=k[U],X=c.PropertyBinding.parseTrackName(H.name),re=c.PropertyBinding.findNode(O,X.nodeName);if(X.propertyName!=="morphTargetInfluences"||X.propertyIndex===void 0){B.push(H);continue}if(H.createInterpolant!==H.InterpolantFactoryMethodDiscrete&&H.createInterpolant!==H.InterpolantFactoryMethodLinear){if(H.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),H=H.clone(),H.setInterpolation(c.InterpolateLinear)}var j=re.morphTargetInfluences.length,G=re.morphTargetDictionary[X.propertyIndex];if(G===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+X.propertyIndex);var W=void 0;if(D[re.uuid]===void 0){W=H.clone();for(var K=new W.ValueBufferType(j*W.times.length),ee=0;ee<W.times.length;ee++)K[ee*j+G]=W.values[ee];W.name=(X.nodeName||"")+".morphTargetInfluences",W.values=K,D[re.uuid]=W,B.push(W);continue}var q=H.createInterpolant(new H.ValueBufferType(1));W=D[re.uuid];for(var ie=0;ie<W.times.length;ie++)W.values[ie*j+G]=q.evaluate(W.times[ie]);for(var Y,te=0;te<H.times.length;te++)Y=this.insertKeyframe(W,H.times[te]),W.values[Y*j+G]=H.values[te]}return x.tracks=B,x}}},(o,l,u)=>{var c=u(4),f=u(5).resolveURL,h=function(){this.nearPlane=.168248,this.farPlane=6.82906,this.eyePosition=[.5,-2.86496,.5],this.targetPosition=[.5,.5,.5],this.upVector=[0,0,1];var E=this;this.setFromObject=S=>{var{nearPlane:w,farPlane:A,eyePosition:I,targetPosition:T,upVector:P}=S;E.nearPlane=w,E.farPlane=A,E.eyePosition=I,E.targetPosition=T,E.upVector=P}},p=function(E,S,w,A){var I={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},T={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6,KEYBOARD_ZOOM:7,KEYBOARD_ROTATE:8,KEYBOARD_PAN:9},P={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},C={ARROWLEFT:37,ARROWUP:38,ARROWRIGHT:39,ARROWDOWN:40,NUMPADADD:107,NUMPADSUBTRACT:109,EQUAL:187,MINUS:189},R={};R.MAIN=T.ROTATE,R.AUXILIARY=T.ZOOM,R.SECONDARY=T.PAN,this.cameraObject=E,this.domElement=S===void 0?document:S,this.renderer=w,this.scene=A,this.tumble_rate=1.5,this.pointer_x=0,this.pointer_y=0,this.pointer_x_start=0,this.pointer_y_start=0,this.previous_pointer_x=0,this.previous_pointer_y=0,this.near_plane_fly_debt=0,this.touchZoomDistanceStart=0,this.touchZoomDistanceEnd=0,this.directionalLight=0,this.zoomRate=50,this.rotateRate=50,this.panRate=100,this.pixelHeight=1;var L=6e3,N=!0,x=0,O=void 0,B=void 0,D=!1,k=500,U=void 0,H="default",X=I.DEFAULT,re=void 0,j=void 0,G=void 0,W=0,K=P.FREE;this._state=T.NONE;var ee;this.targetTouchId=-1;var q=void 0,ie=new c.Vector3,Y=new c.Vector3,te=new c.Vector3,F=new c.Vector3,$=new c.Vector3,Q=new c.Vector3,V=new c.Vector3,z=new c.Vector3,oe=new c.Sphere,ae=new c.Vector3,le=!1,fe=void 0,be=0,ye={default:new h};ye.default.nearPlane=.1,ye.default.farPlane=2e3,ye.default.eyePosition=[0,0,0],ye.default.targetPosition=[0,0,-1],ye.default.upVector=[0,1,0],this.cameraObject.target===void 0&&(this.cameraObject.target=new c.Vector3(...ye.default.targetPosition)),this.calculateMaxAllowedDistance=ne=>{var Me=ne.getBoundingBox();if(Me){Me.getBoundingSphere(oe),be=6*oe.radius;var Ce=0;this.cameraObject&&(Ce=this.cameraObject.position.distanceTo(oe.center)),be=Ce>be?1.5*Ce:be}else be=0},this.addViewport=(ne,Me)=>{ne&&Me&&(ye[ne]=Me)},this.setDefaultViewport=ne=>!!(ne&&ne in ye)&&(H=ne,!0),this.getDefaultViewport=()=>H,this.getViewportOfName=ne=>ye[ne],this.setCurrentViewport=ne=>ne in ye&&(this.setCurrentCameraSettings(ye[ne]),!0),this.setRotationMode=ne=>{switch(ne){case"none":K=P.NONE;break;case"horizontal":K=P.HORIZONTAL;break;case"vertical":K=P.VERTICAL;break;case"free":default:K=P.FREE}},this.onResize=()=>{q&&(q=void 0),fe&&fe.setCurrentCameraSettings(this.cameraObject,ye[H])},this.getVisibleHeightAtZDepth=ne=>{var Me=this.cameraObject.position.distanceTo(this.cameraObject.target);ne<Me?ne-=Me:ne+=Me;var Ce=this.cameraObject.fov*Math.PI/180;return 2*Math.tan(Ce/2)*Math.abs(ne)},this.calculateHeightPerPixelAtZeroDepth=ne=>{var Me=this.getVisibleHeightAtZDepth(0);return this.pixelHeight=Me/ne,this.pixelHeight},this.getNDCFromDocumentCoords=(ne,Me,Ce)=>{Le(!1);var Be=Ce||new c.Vector2,Je=2*((ne-q.left)/q.width)-1,Z=2*-((Me-q.top)/q.height)+1;return Be.set(Je,Z)},this.getRelativeCoordsFromNDC=(ne,Me,Ce)=>{Le(!1);var Be=Ce||new c.Vector2;return Be.x=(ne+1)*q.width/2,Be.y=(1-Me)*q.height/2,Be},this.setMouseButtonAction=(ne,Me)=>{R[ne]=T[Me]};var he=(ne,Me)=>{ne instanceof HTMLCanvasElement&&(ne.tabIndex=Me)},ve=()=>{if(0<be){var ne=ae.distanceTo(oe.center);return be>ne||this.cameraObject.position.distanceTo(oe.center)>ne}return!0},se=ne=>{ae.copy(this.cameraObject.position).add(ne),ve()&&(this.cameraObject.target.add(ne),this.cameraObject.position.add(ne),this.updateDirectionalLight())},we=ne=>{Le(!1);var Me;if(X===I.DEFAULT&&(Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne)),!Me)ne.button==0?ne.ctrlKey?this._state=R.AUXILIARY:ne.shiftKey?this._state=R.SECONDARY:this._state=R.MAIN:ne.button==1?(ne.preventDefault(),this._state=R.AUXILIARY):ne.button==2&&(this._state=R.SECONDARY),this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y;else{X=I.MINIMAP;var Ce=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);se(Ce)}},pe=ne=>{if(Le(!1),q)if(this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,X===I.MINIMAP){var Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne);if(Me){var Ce=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);se(Ce)}}else this._state===T.NONE&&ee!==void 0&&ee.move(this,ne.clientX,ne.clientY,this.renderer)},ge=ne=>{this._state=T.NONE,X==I.MINIMAP&&(X=I.DEFAULT),ee!==void 0&&this.pointer_x_start==ne.clientX-q.left&&this.pointer_y_start==ne.clientY-q.top&&ee.pick(this,ne.clientX,ne.clientY,this.renderer)},Ee=ne=>{this._state=T.NONE},He=ne=>{Le(!1);var Me=ne.touches.length;if(Me==1){var Ce,Be;this._state=T.TOUCH_ROTATE,this.pointer_x=ne.touches[0].clientX-((Ce=q)===null||Ce===void 0?void 0:Ce.left),this.pointer_y=ne.touches[0].clientY-((Be=q)===null||Be===void 0?void 0:Be.top),this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y}else if(Me==2){this._state=T.TOUCH_ZOOM;var Je=ne.touches[0].clientX-ne.touches[1].clientX,Z=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=this.touchZoomDistanceStart=Math.sqrt(Je*Je+Z*Z)}else if(Me==3){var de,ce;this._state=T.TOUCH_PAN,this.targetTouchId=ne.touches[0].identifier,this.pointer_x=ne.touches[0].clientX-((de=q)===null||de===void 0?void 0:de.left),this.pointer_y=ne.touches[0].clientY-((ce=q)===null||ce===void 0?void 0:ce.top),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y}},tt=ne=>{ne.preventDefault(),ne.stopPropagation();var Me=ne.touches.length;if(Me==1)this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top;else if(Me==2){if(this._state===T.TOUCH_ZOOM){var Ce=ne.touches[0].clientX-ne.touches[1].clientX,Be=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=Math.sqrt(Ce*Ce+Be*Be)}}else if(Me==3&&this._state===T.TOUCH_PAN)for(var Je=0;3>Je;Je++)ne.touches[Je].identifier==this.targetTouchId&&(this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top)},Ie=ne=>{var Me=ne.touches.length;this.touchZoomDistanceStart=this.touchZoomDistanceEnd=0,this.targetTouchId=-1,this._state=T.NONE,Me==1&&ee!==void 0&&this.pointer_x_start==ne.touches[0].clientX-q.left&&this.pointer_y_start==ne.touches[0].clientY-q.top&&ee.pick(this.cameraObject,ne.touches[0].clientX,ne.touches[0].clientY,this.renderer)},ot=()=>{Le(!0)},Le=ne=>{if(ne||q===void 0){var Me=new IntersectionObserver(Ce=>{for(var Be of Ce)q=Be.boundingClientRect;Me.disconnect()});Me.observe(this.domElement)}},Ye=ne=>{Le(!1),this._state=T.SCROLL;var Me=0;0<ne.deltaY?Me=this.zoomRate:0>ne.deltaY&&(Me=-1*this.zoomRate),W+=Me,ne.preventDefault(),ne.stopImmediatePropagation()},We=ne=>{Le(!1);var Me=0;if(ne.keyCode===C.EQUAL||ne.keyCode===C.MINUS||ne.keyCode===C.NUMPADADD||ne.keyCode===C.NUMPADSUBTRACT){this._state=T.KEYBOARD_ZOOM;var Ce=1;ne.shiftKey&&(Ce*=2),ne.keyCode===C.EQUAL||ne.keyCode===C.NUMPADADD?Me=-1*(this.zoomRate*Ce):(ne.keyCode===C.MINUS||ne.keyCode===C.NUMPADSUBTRACT)&&(Me=this.zoomRate*Ce),W+=Me}else(ne.keyCode===C.ARROWLEFT||ne.keyCode===C.ARROWUP||ne.keyCode===C.ARROWRIGHT||ne.keyCode===C.ARROWDOWN)&&(ne.shiftKey?(this._state=T.KEYBOARD_ROTATE,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,Me=this.rotateRate):(this._state=T.KEYBOARD_PAN,Me=this.panRate),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,ne.keyCode===C.ARROWLEFT?this.pointer_x-=Me:ne.keyCode===C.ARROWUP?this.pointer_y-=Me:ne.keyCode===C.ARROWRIGHT?this.pointer_x+=Me:ne.keyCode===C.ARROWDOWN&&(this.pointer_y+=Me))},it=ne=>{this._state=T.NONE},et=()=>{if(typeof this.cameraObject<"u"){var ne=q.height,Me=this.cameraObject.position.distanceTo(this.cameraObject.target),Ce=0;this.cameraObject.far>this.cameraObject.near&&Me>=this.cameraObject.near&&Me<=this.cameraObject.far&&(Ce=(Me-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),Y.set(this.previous_pointer_x,ne-this.previous_pointer_y,0),te.set(this.previous_pointer_x,ne-this.previous_pointer_y,1),F.set(this.pointer_x,ne-this.pointer_y,0),$.set(this.pointer_x,ne-this.pointer_y,1),Y.unproject(this.cameraObject),te.unproject(this.cameraObject),F.unproject(this.cameraObject),$.unproject(this.cameraObject);var Be=-.002;F.sub(Y).multiplyScalar(1-Ce),$.sub(te).multiplyScalar(Ce),F.add($).multiplyScalar(Be),se(F)}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y};this.getVectorsFromRotateAboutLookAtPoints=(ne,Me)=>{ne.normalize(),V.copy(this.cameraObject.position).sub(this.cameraObject.target),z.copy(V),V.normalize(),.8<Math.abs(V.dot(ne))&&V.copy(this.cameraObject.up),Y.crossVectors(ne,V).normalize(),te.crossVectors(ne,Y);var Ce=ne.dot(z),Be=Y.dot(z),Je=te.dot(z),Z=ne.dot(this.cameraObject.up),de=Y.dot(this.cameraObject.up),ce=te.dot(this.cameraObject.up),me=Math.cos(Me),Se=Math.sin(Me);return F.set(me*Y.x+Se*te.x,me*Y.y+Se*te.y,me*Y.z+Se*te.z),$.set(me*te.x-Se*Y.x,me*te.y-Se*Y.y,me*te.z-Se*Y.z),V.copy(this.cameraObject.target),V.x=V.x+ne.x*Ce+F.x*Be+$.x*Je,V.y=V.y+ne.y*Ce+F.y*Be+$.y*Je,V.z=V.z+ne.z*Ce+F.z*Be+$.z*Je,ie.set(ne.x*Z+F.x*de+$.x*ce,ne.y*Z+F.y*de+$.y*ce,ne.z*Z+F.z*de+$.z*ce),{position:V,up:ie}},this.rotateAboutLookAtpoint=(ne,Me)=>{var Ce=this.getVectorsFromRotateAboutLookAtPoints(ne,Me);this.cameraObject.position.copy(Ce.position),this.updateDirectionalLight(),this.cameraObject.up.copy(Ce.up)};var Mt=()=>{if(typeof this.cameraObject<"u"){var ne,Me,Ce=(ne=q)===null||ne===void 0?void 0:ne.width,Be=(Me=q)===null||Me===void 0?void 0:Me.height;if(0<Ce&&0<Be){var Je=.25*(Ce+Be),Z=0,de=0;(K===P.FREE||K===P.HORIZONTAL)&&(Z=this.pointer_x-this.previous_pointer_x),(K===P.FREE||K===P.VERTICAL)&&(de=this.previous_pointer_y-this.pointer_y);var ce=Math.sqrt(Z*Z+de*de);if(0<ce){var me=1*-de/ce,Se=1*Z/ce,ue=0;K===P.FREE&&me*(this.pointer_x-.5*(Ce-1))+Se*(.5*(Be-1)-this.pointer_y);var xe=Math.acos(ue/Je)-.5*Math.PI,Te=this.tumble_rate*ce/Je;ie.copy(this.cameraObject.position).sub(this.cameraObject.target).normalize(),Y.copy(this.cameraObject.up).normalize(),te.copy(Y).cross(ie).normalize().multiplyScalar(me),Y.multiplyScalar(Se),Q.addVectors(te,Y).multiplyScalar(Math.cos(xe)),ie.multiplyScalar(Math.sin(xe)),Q.add(ie),this.rotateAboutLookAtpoint(Q,-Te)}}}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y},pt=()=>{var ne=0;return this._state===T.ZOOM?ne=this.previous_pointer_y-this.pointer_y:this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM?ne=W:(ne=-1*(this.touchZoomDistanceEnd-this.touchZoomDistanceStart),this.touchZoomDistanceStart=this.touchZoomDistanceEnd),ne};this.changeZoomByScrollRateUnit=ne=>{var Me=ne*this.zoomRate;this.changeZoomByValue(Me)},this.changeZoomByValue=ne=>{if(typeof this.cameraObject<"u"){var Me=q.height,Ce=this.cameraObject.position.clone();Ce.sub(this.cameraObject.target);var Be=Ce.length(),Je=1.5*ne/Me;if(.01<Be+Je*Be&&(Ce.normalize(),ae.copy(this.cameraObject.position),ae.x+=Ce.x*Je*Be,ae.y+=Ce.y*Je*Be,ae.z+=Ce.z*Je*Be,ve())){this.cameraObject.position.copy(ae),this.updateDirectionalLight();var Z=1e-5;if(Z*this.cameraObject.far<this.cameraObject.near+Je*Be+this.near_plane_fly_debt)this.near_plane_fly_debt!=0&&(this.near_plane_fly_debt+=Je*Be,0<this.near_plane_fly_debt?(this.cameraObject.near+=this.near_plane_fly_debt,this.cameraObject.far+=this.near_plane_fly_debt,this.near_plane_fly_debt=0):(this.cameraObject.near+=Je*Be,this.cameraObject.far+=Je*Be));else{if(this.near_plane_fly_debt==0){var de=this.cameraObject.near-Z*this.cameraObject.far;this.cameraObject.near=Z*this.cameraObject.far,this.cameraObject.far-=de,this.near_plane_fly_debt-=Z*this.cameraObject.far}this.near_plane_fly_debt+=Je*Be}le=!0}}};var hn=()=>{var ne=pt();this.changeZoomByValue(ne),this._state===T.ZOOM&&(this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y),(this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(W=0,this._state=T.NONE)};this.setDirectionalLight=ne=>{this.directionalLight=ne},this.updateDirectionalLight=()=>{this.directionalLight!=0&&this.directionalLight.position.set(this.cameraObject.position.x,this.cameraObject.position.y,this.cameraObject.position.z)},this.enable=function(){N=!0,this.domElement&&this.domElement.addEventListener&&(he(this.domElement,0),this.domElement.addEventListener("mousedown",we,!1),this.domElement.addEventListener("mousemove",pe,!1),this.domElement.addEventListener("mouseup",ge,!1),this.domElement.addEventListener("mouseleave",Ee,!1),this.domElement.addEventListener("touchstart",He,!1),this.domElement.addEventListener("touchmove",tt,!1),this.domElement.addEventListener("touchend",Ie,!1),this.domElement.addEventListener("wheel",Ye,!1),this.domElement.addEventListener("mouseenter",ot,!1),this.domElement.addEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.addEventListener("keydown",We,!1),this.domElement.addEventListener("keyup",it,!1))},this.disable=function(){N=!1,this.domElement&&this.domElement.removeEventListener&&(this.domElement.removeEventListener("mousedown",we,!1),this.domElement.removeEventListener("mousemove",pe,!1),this.domElement.removeEventListener("mouseup",ge,!1),this.domElement.removeEventListener("mouseleave",Ee,!1),this.domElement.removeEventListener("touchstart",He,!1),this.domElement.removeEventListener("touchmove",tt,!1),this.domElement.removeEventListener("touchend",Ie,!1),this.domElement.removeEventListener("wheel",Ye,!1),this.domElement.removeEventListener("mouseenter",ot,!1),this.domElement.removeEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.removeEventListener("keydown",We,!1),this.domElement.removeEventListener("keyup",it,!1),he(this.domElement,-1))},this.loadPath=ne=>{O=ne.CameraPath,B=ne.NumberOfPoints},this.loadPathURL=(ne,Me)=>{var Ce=new XMLHttpRequest;Ce.onreadystatechange=()=>{if(Ce.readyState==4&&Ce.status==200){var Je=JSON.parse(Ce.responseText);this.loadPath(Je),Me!=null&&typeof Me=="function"&&Me()}};var Be=f(ne);Ce.open("GET",Be,!0),Ce.send()},this.setPathDuration=ne=>{L=ne,re&&re.setDuration(L),j&&j.setDuration(L)},this.getPlayRate=()=>k,this.setPlayRate=ne=>{k=ne};var Mn=ne=>{var Me=x+ne;Me>L&&(Me-=L),x=Me};this.getTime=()=>x,this.setTime=ne=>{x=ne>L?L:0>ne?0:ne},this.getNumberOfTimeFrame=()=>B,this.getCurrentTimeFrame=()=>{if(2<B){var ne=x/L*(B-1),Me=Math.floor(ne),Ce=1-(ne-Me),Be=Math.ceil(ne);return Me==Be?Me==B-1?[Me-1,Be,0]:[Me,Be+1,1]:[Me,Be,Ce]}return B==1?[0,0,0]:void 0},this.setCurrentTimeFrame=ne=>{2<B&&(x=L*ne/(B-1),0>x&&(x=0),x>L&&(x=L))};var jn=ne=>{if(X===I.PATH&&(Mn(ne),O)){for(var Me=this.getCurrentTimeFrame(),Ce=Me[0],Be=Me[1],Je=Me[2],Z=[O[3*Ce],O[3*Ce+1],O[3*Ce+2]],de=[O[3*Be],O[3*Be+1],O[3*Be+2]],ce=[],me=0;me<Z.length;me++)ce.push(Je*Z[me]+(1-Je)*de[me]);this.cameraObject.position.set(ce[0],ce[1],ce[2]),this.cameraObject.target.set(de[0],de[1],de[2]),U&&this.cameraObject.lookAt(this.cameraObject.target),D&&(this.directionalLight.position.set(ce[0],ce[1],ce[2]),this.directionalLight.target.position.set(de[0],de[1],de[2]))}};this.calculatePathNow=()=>{jn(0)};var us=()=>{this._state===T.ROTATE||this._state===T.TOUCH_ROTATE||this._state===T.KEYBOARD_ROTATE?Mt():this._state===T.PAN||this._state===T.TOUCH_PAN||this._state===T.KEYBOARD_PAN?(et(),fe.triggerCallback()):(this._state===T.ZOOM||this._state===T.TOUCH_ZOOM||this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(fe.zoom(pt()),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,(this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(this._state=T.NONE),W=0,fe.triggerCallback())};this.update=ne=>{var Me=ne*k,Ce=N,Be=!0;return X===I.PATH?jn(Me):X===I.SMOOTH_CAMERA_TRANSITION&&re?(re.update(Me),re.isTransitionCompleted()&&(X=I.DEFAULT),Ce=!1):X===I.ROTATE_CAMERA_TRANSITION&&j?(j.update(Me),j.isTransitionCompleted()&&(X=I.DEFAULT),Ce=!1):X===I.AUTO_TUMBLE&&G?G.update(Me):X===I.SYNC_CONTROL&&fe?(us(),Ce=!1):Be=!1,Ce&&(this._state!==T.NONE&&(Be=!0),this._state===T.ROTATE||this._state===T.TOUCH_ROTATE||this._state===T.KEYBOARD_ROTATE?Mt():this._state===T.PAN||this._state===T.TOUCH_PAN||this._state===T.KEYBOARD_PAN?et():(this._state===T.ZOOM||this._state===T.TOUCH_ZOOM||this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&hn(),this._state!==T.NONE&&X===I.AUTO_TUMBLE&&G&&G.stopOnCameraInput,this._state===T.SCROLL&&(this._state=T.NONE)),U?(Be=!0,U.update()):this.cameraObject.lookAt(this.cameraObject.target),Be=Be||le,le=!1,Be},this.playPath=()=>{X=I.PATH},this.stopPath=()=>{X=I.DEFAULT},this.isPlayingPath=()=>X===I.PATH,this.enableDirectionalLightUpdateWithPath=ne=>{D=ne},this.enableDeviceOrientation=()=>{U||(U=new M(this.cameraObject))},this.disableDeviceOrientation=()=>{U&&(U.dispose(),U=void 0)},this.isDeviceOrientationEnabled=()=>!!U,this.resetView=()=>{var ne=ye[H];this.cameraObject.near=ne.nearPlane,this.cameraObject.far=ne.farPlane,this.cameraObject.position.set(ne.eyePosition[0],ne.eyePosition[1],ne.eyePosition[2]),this.cameraObject.target.set(ne.targetPosition[0],ne.targetPosition[1],ne.targetPosition[2]),this.cameraObject.up.set(ne.upVector[0],ne.upVector[1],ne.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.setCurrentCameraSettings=ne=>{ne.nearPlane&&(this.cameraObject.near=ne.nearPlane),ne.farPlane&&(this.cameraObject.far=ne.farPlane),ne.eyePosition&&this.cameraObject.position.set(ne.eyePosition[0],ne.eyePosition[1],ne.eyePosition[2]),ne.targetPosition&&this.cameraObject.target.set(ne.targetPosition[0],ne.targetPosition[1],ne.targetPosition[2]),ne.upVector&&this.cameraObject.up.set(ne.upVector[0],ne.upVector[1],ne.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight(),le=!0},this.getViewportFromCentreAndRadius=(ne,Me,Ce,Be,Je,Z)=>{var de=this.cameraObject.position.x-this.cameraObject.target.x,ce=this.cameraObject.position.y-this.cameraObject.target.y,me=this.cameraObject.position.z-this.cameraObject.target.z,Se=1/Math.sqrt(de*de+ce*ce+me*me);de*=Se,ce*=Se,me*=Se;var ue=[ne,Me,Ce],xe=Be/Math.tan(Je*Math.PI/360),Te=[ne+de*xe,Me+ce*xe,Ce+me*xe],Pe=xe+Z,Ne=0,ze=.95;Ne=Z>ze*xe?(1-ze)*xe:xe-Z;var Fe=new h;return Fe.nearPlane=Ne,Fe.farPlane=Pe,Fe.eyePosition=Te,Fe.targetPosition=ue,Fe.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],Fe},this.getViewportFromBoundingBox=(ne,Me)=>{var Ce=ne.min.distanceTo(ne.max)/2*Me,Be=(ne.min.x+ne.max.x)/2,Je=(ne.min.y+ne.max.y)/2,Z=(ne.min.z+ne.max.z)/2,de=4,ce=this.getViewportFromCentreAndRadius(Be,Je,Z,Ce,40,Ce*de);return ce},this.getCurrentViewport=()=>{var ne=new h;return ne.nearPlane=this.cameraObject.near,ne.farPlane=this.cameraObject.far,ne.eyePosition[0]=this.cameraObject.position.x,ne.eyePosition[1]=this.cameraObject.position.y,ne.eyePosition[2]=this.cameraObject.position.z,ne.targetPosition[0]=this.cameraObject.target.x,ne.targetPosition[1]=this.cameraObject.target.y,ne.targetPosition[2]=this.cameraObject.target.z,ne.upVector[0]=this.cameraObject.up.x,ne.upVector[1]=this.cameraObject.up.y,ne.upVector[2]=this.cameraObject.up.z,ne},this.getDefaultEyePosition=()=>eyePosition,this.getDefaultTargetPosition=()=>targetPosition,this.cameraTransition=(ne,Me,Ce)=>{j==null&&(re=new y(ne,Me,this,Ce))},this.rotateCameraTransition=(ne,Me,Ce)=>{re==null&&(j=new m(ne,Me,this,Ce))},this.enableCameraTransition=()=>{re&&(X=I.SMOOTH_CAMERA_TRANSITION),j&&(X=I.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{X=I.DEFAULT},this.stopCameraTransition=()=>{X=I.DEFAULT,re=void 0,j=void 0},this.isTransitioningCamera=()=>X===I.SMOOTH_CAMERA_TRANSITION||X===I.ROTATE_CAMERA_TRANSITION,this.autoTumble=(ne,Me,Ce)=>{G=new b(ne,Me,Ce,this)},this.enableAutoTumble=()=>{X=I.AUTO_TUMBLE},this.stopAutoTumble=()=>{X=I.DEFAULT,G=void 0},this.updateAutoTumble=()=>{G&&(G.requireUpdate=!0)},this.isAutoTumble=()=>X===I.AUTO_TUMBLE,this.enableRaycaster=(ne,Me,Ce)=>{ee==null&&(ee=new d(ne,this.scene,Me,Ce,this.renderer))},this.disableRaycaster=()=>{ee.disable(),ee=void 0},this.isSyncControl=()=>currentMpde===I.SYNC_CONTROL,this.enableSyncControl=()=>(X=I.SYNC_CONTROL,fe||(fe=new _),fe.setCurrentCameraSettings(this.cameraObject,ye[H]),fe),this.disableSyncControl=()=>{X=I.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},y=function(S,w,A,I){var T=S.eyePosition,P=S.targetPosition,C=S.upVector,R=w.eyePosition,L=w.targetPosition,N=w.upVector,x=A,O=I,B=0,D=!1;x.near=Math.min(S.nearPlane,w.nearPlane),x.far=Math.max(S.farPlane,w.farPlane),x.cameraObject.up.set(w.upVector[0],w.upVector[1],w.upVector[2]),this.setDuration=H=>{O=H};var k=H=>{var X=B+H;X>O&&(X=O),B=X},U=()=>{var H=B/O,X=[T[0]*(1-H)+R[0]*H,T[1]*(1-H)+R[1]*H,T[2]*(1-H)+R[2]*H],re=[P[0]*(1-H)+L[0]*H,P[1]*(1-H)+L[1]*H,P[2]*(1-H)+L[2]*H];C[0]*(1-H)+N[0]*H,C[1]*(1-H)+N[1]*H,C[2]*(1-H)+N[2]*H,x.cameraObject.position.set(X[0],X[1],X[2]),x.cameraObject.target.set(re[0],re[1],re[2])};this.update=H=>{this.enabled===!1||(k(H),U(),B==O&&(D=!0))},this.isTransitionCompleted=()=>D},m=function(S,w,A,I){var T=S,P=w,C=A,R=I,L=0,N=!1;this.setDuration=O=>{R=O};var x=O=>{var B=L,D=L+O;D>R&&(D=R),L=D;var k=L-B,U=k/R,H=U*P;C.rotateAboutLookAtpoint(T,H)};this.update=O=>{this.enabled===!1||(x(O),L==R&&(N=!0))},this.isTransitionCompleted=()=>N},d=function(S,w,A,I,T){var P=S,C=w,R=T,L=A,N=I,x=new c.Raycaster;x.params.Line.threshold=.1,x.params.Points.threshold=1;var O=new c.Vector2,B=!1,D=new Date,k=!1,U=0,H=[],X={zincCamera:void 0,x:-1,y:-1},re=void 0;this.enable=()=>{enable=!0},this.disable=()=>{enable=!1},this.getIntersectsObject=W=>{if(C!==P){var K=P.getThreeJSScene();R.render(K,W.cameraObject)}var ee=re||P.getPickableThreeJSObjects();return H.length=0,x.intersectObjects(ee,!0,H)},this.setPickableObjects=W=>{W===void 0?re=void 0:(re=[],W.forEach(K=>{K.getGroup()&&K.getGroup().visible&&re.push(K.getGroup())}))},this.getIntersectsObjectWithOrigin=(W,K,ee)=>(x.set(K,ee),this.getIntersectsObject(W)),this.getIntersectsObjectWithCamera=(W,K,ee)=>(W.getNDCFromDocumentCoords(K,ee,O),x.setFromCamera(O,W.cameraObject),this.getIntersectsObject(W)),this.pick=(W,K,ee)=>{if(R&&P&&W&&L){this.getIntersectsObjectWithCamera(W,K,ee);for(var q,ie=H.length,Y=0;Y<ie;Y++)if(q=H[Y].object?H[Y].object.userData:void 0,q&&q.isMarkerCluster&&q.visible&&q.clusterIsVisible(H[Y].object.clusterIndex)&&q.zoomToCluster(H[Y].object.clusterIndex))return;L(H,K,ee)}};var j=(W,K,ee)=>{if(R&&P&&W&&N){if(this.getIntersectsObjectWithCamera(W,K,ee),D.setTime(Date.now()),H.length===0){if(k)return;k=!0}else k=!1;N(H,K,ee)}};this.move=(W,K,ee)=>{R&&P&&W&&N&&(P.displayMarkers?j(W,K,ee):(X.zincCamera=W,X.x=K,X.y=ee,!B&&(U=D?Date.now()-D.getTime():250,250<=U?j(W,K,ee):(B=!0,setTimeout(G(X),U)))))};var G=W=>function(){B=!1,j(W.zincCamera,W.x,W.y)}},b=function(S,w,A,I){var T=new c.Vector3,P=-w,C=I,R=S;this.stopOnCameraInput=A,this.requireUpdate=!0;var L=new c.Vector3,N=new c.Vector3,x=O=>{var B=Math.sqrt(O[0]*O[0]+O[1]*O[1]),D=4*Math.abs(O[0]),k=4*Math.abs(O[1]),U=.25*(D+k),H=-O[1]/B,X=O[0]/B,re=H*O[0]+X*-O[1];re>U?re=U:re<-U&&(re=-U);var j=Math.acos(re/U)-.5*Math.PI;T.copy(C.cameraObject.position).sub(C.cameraObject.target).normalize(),L.copy(C.cameraObject.up).normalize(),N.crossVectors(L,T).normalize().multiplyScalar(H),L.multiplyScalar(X),L.add(N).multiplyScalar(Math.cos(j)),T.multiplyScalar(Math.sin(j)).add(L)};this.update=O=>{this.enabled===!1||(this.requireUpdate&&(x(R),this.requireUpdate=!1),C.rotateAboutLookAtpoint(T,P*O/1e3))}},v=function(){this.type="StereoCamera",this.aspect=1,this.cameraL=new c.PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new c.PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1};Object.assign(v.prototype,{update:(()=>{var E,S,w,A,I,T,P=new c.Matrix4,C=new c.Matrix4;return function(L){var N=E!==L.focus||S!==L.fov||w!==L.aspect*this.aspect||A!==L.near||I!==L.far||T!==L.zoom;if(N){E=L.focus,S=L.fov,w=L.aspect*this.aspect,A=L.near,I=L.far,T=L.zoom;var x,O,B=L.projectionMatrix.clone(),D=.064/2,k=D*A/E,U=A*Math.tan(.5*(c.Math.DEG2RAD*S))/L.zoom;C.elements[12]=-D,P.elements[12]=D,x=-U*w+k,O=U*w+k,B.elements[0]=2*A/(O-x),B.elements[8]=(O+x)/(O-x),this.cameraL.projectionMatrix.copy(B),x=-U*w-k,O=U*w-k,B.elements[0]=2*A/(O-x),B.elements[8]=(O+x)/(O-x),this.cameraR.projectionMatrix.copy(B)}this.cameraL.matrixWorld.copy(L.matrixWorld).multiply(C),this.cameraR.matrixWorld.copy(L.matrixWorld).multiply(P)}})()});var g=function(S){var w=new v;w.aspect=.5,this.setSize=(A,I)=>{S.setSize(A,I)},this.render=(A,I)=>{A.updateMatrixWorld(),I.parent===null&&I.updateMatrixWorld(),w.update(I);var T=S.getSize();S.setScissorTest(!0),S.clear(),S.setScissor(0,0,T.width/2,T.height),S.setViewport(0,0,T.width/2,T.height),S.render(A,w.cameraL),S.setScissor(T.width/2,0,T.width/2,T.height),S.setViewport(T.width/2,0,T.width/2,T.height),S.render(A,w.cameraR),S.setScissorTest(!1)}},M=function(S){var w=this;this.object=S,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var A=P=>{w.deviceOrientation=P},I=()=>{typeof window<"u"&&(w.screenOrientation=window.orientation||0)},T=(()=>{var P=new c.Vector3(0,0,1),C=new c.Euler,R=new c.Quaternion,L=new c.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return(N,x,O,B,D)=>{var k=new c.Vector3(0,0,1);k.subVectors(N.target,N.position),C.set(O,x,-B,"YXZ");var U=new c.Quaternion;U.setFromEuler(C),U.multiply(L),U.multiply(R.setFromAxisAngle(P,-D)),k.applyQuaternion(U),k.addVectors(N.position,k),N.lookAt(k)}})();this.connect=()=>{I(),typeof window<"u"&&(window.addEventListener("orientationchange",I,!1),window.addEventListener("deviceorientation",A,!1)),w.enabled=!0},this.disconnect=()=>{typeof window<"u"&&(window.removeEventListener("orientationchange",I,!1),window.removeEventListener("deviceorientation",A,!1)),w.enabled=!1},this.update=()=>{if(w.enabled!==!1){var P=w.deviceOrientation.alpha?c.Math.degToRad(w.deviceOrientation.alpha):0,C=w.deviceOrientation.beta?c.Math.degToRad(w.deviceOrientation.beta):0,R=w.deviceOrientation.gamma?c.Math.degToRad(w.deviceOrientation.gamma):0,L=w.screenOrientation?c.Math.degToRad(w.screenOrientation):0;T(w.object,P,C,R,L)}},this.dispose=function(){this.disconnect()},this.connect()},_=function(){var S=void 0,w=void 0,A=void 0,I=new c.Vector3,T=new c.Vector3,P=new c.Vector3,C=new c.Vector3,R=void 0;this.setCurrentCameraSettings=(L,N)=>{S=L.clone(),w=L,A=N,S.near=A.nearPlane,A.farPlane&&(S.far=A.farPlane),A.eyePosition&&S.position.set(A.eyePosition[0],A.eyePosition[1],A.eyePosition[2]),A.upVector&&S.up.set(A.upVector[0],A.upVector[1],A.upVector[2]),A.targetPosition&&(S.target=new c.Vector3(A.targetPosition[0],A.targetPosition[1],A.targetPosition[2]),S.lookAt(S.target)),S.updateProjectionMatrix(),I.copy(S.position).project(S),T.copy(S.target).project(S)},this.getCurrentPosition=()=>(T.copy(w.target).project(S),[T.x,T.y]),this.zoom=L=>{var N=.002*L,x=Math.max(w.zoom-N,1);w.zoom=x,w.updateProjectionMatrix()},this.zoomToBox=(L,N)=>{L.getCenter(P),P.project(S),this.setCenterZoom([P.x,P.y],N)},this.getPanZoom=()=>({target:this.getCurrentPosition(),zoom:w.zoom}),this.setCenterZoom=(L,N)=>{P.set(L[0],L[1],T.z).unproject(S),C.copy(P).sub(w.target),w.target.copy(P),w.lookAt(w.target),w.position.add(C),w.zoom=N,w.updateProjectionMatrix()},this.setEventCallback=L=>{(L===void 0||typeof L=="function")&&(R=L)},this.triggerCallback=()=>{R!==void 0&&typeof R=="function"&&R()}};l.Viewport=h,l.CameraControls=p,l.SmoothCameraTransition=y,l.RotateCameraTransition=m,l.RayCaster=d,l.CameraAutoTumble=b,l.StereoEffect=g,l.NDCCameraControl=_},(o,l,u)=>{var{Group:c,Matrix4:f}=u(4),h=u(22).Pointset;u(24).Lines;var p=u(45).Lines2,y=u(3).Geometry,m=u(4),d=0,b=function(){return"re"+d++},v=function(g,M){var _=g,E=new c;E.matrixAutoUpdate=!1,E.userData=this;var S=[],w="",A=[],I=M,T=new f,P=3e3;T.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this.pickableUpdateRequired=!0,this.isRegion=!0,this.uuid=b(),this.hideAllPrimitives=()=>{S.forEach(C=>C.hideAllPrimitives()),A.forEach(C=>C.setVisibility(!1))},this.showAllPrimitives=()=>{S.forEach(C=>C.showAllPrimitives()),A.forEach(C=>C.setVisibility(!0))},this.setVisibility=C=>{C!=E.visible&&(E.visible=C,this.pickableUpdateRequired=!0)},this.getVisibility=()=>E.visible,this.getGroup=()=>E,this.setTransformation=C=>{T.set(...C),E.matrix.copy(T),E.updateMatrixWorld()},this.setName=C=>{C&&C!==""&&(w=C)},this.getName=()=>w,this.getParent=()=>_,this.getFullSeparatedPath=()=>{var C=[];if(w!==""){C.push(w);for(var R,L=_;L!==void 0;)R=L.getName(),R!==""&&C.unshift(R),L=L.getParent()}return C},this.getFullPath=()=>{var C=this.getFullSeparatedPath();if(0<C.length){var R=C.shift();return C.forEach(L=>{R=R.concat("/",L)}),R}return""},this.createChild=C=>{var R=new v(this,I);return R.setName(C),S.push(R),E.add(R.getGroup()),R},this.getChildWithName=C=>{if(C){for(var R=C.toLowerCase(),L=0;L<S.length;L++)if(S[L].getName().toLowerCase()===R)return S[L]}},this.findChildFromSeparatedPath=C=>{if(C&&0<C.length&&C[0]===""&&C.shift(),C&&0<C.length){var R=this.getChildWithName(C[0]);return R?(C.shift(),R.findChildFromSeparatedPath(C)):void 0}return this},this.findChildFromPath=C=>{var R=C.split("/");return this.findChildFromSeparatedPath(R)},this.createChildFromSeparatedPath=C=>{if(0<C.length&&C[0]===""&&C.shift(),0<C.length){var R=this.getChildWithName(C[0]);return R||(R=this.createChild(C[0])),C.shift(),R.createChildFromSeparatedPath(C)}return this},this.createChildFromPath=C=>{var R=C.split("/");return this.createChildFromSeparatedPath(R)},this.findOrCreateChildFromPath=C=>{var R=this.findChildFromPath(C);return R||(R=this.createChildFromPath(C)),R},this.addZincObject=C=>{C&&(C.setRegion(this),E.add(C.getGroup()),A.push(C),this.pickableUpdateRequired=!0,I&&I.triggerObjectAddedCallback(C))},this.removeZincObject=C=>{for(var R=0;R<A.length;R++)if(C===A[R])return E.remove(C.getGroup()),A.splice(R,1),I&&I.triggerObjectRemovedCallback(C),C.dispose(),void(this.pickableUpdateRequired=!0)},this.checkPickableUpdateRequred=C=>{if(this.pickableUpdateRequired)return!0;if(C){for(var R=!1,L=0;L<S.length;L++)if(R=S[L].checkPickableUpdateRequred(C),R)return!0}return!1},this.getPickableThreeJSObjects=(C,R)=>(E.visible&&(A.forEach(L=>{if(L.getGroup()&&L.getGroup().visible){var N=L.marker;N&&N.isEnabled()&&C.push(N.getMorph()),C.push(L.getGroup())}}),R&&S.forEach(L=>{L.getPickableThreeJSObjects(C,R)}),this.pickableUpdateRequired=!1),C),this.setDuration=C=>{P=C,A.forEach(R=>R.setDuration(C)),S.forEach(R=>R.setDuration(C))},this.getDuration=()=>P,this.getBoundingBox=C=>{var R,L;return A.forEach(N=>{L=N.getBoundingBox(),L&&(R==null?R=L.clone():R.union(L))}),C&&S.forEach(N=>{L=N.getBoundingBox(C),L&&(R==null?R=L.clone():R.union(L))}),R},this.clear=C=>{C&&S.forEach(R=>R.clear(C)),A.forEach(R=>{E.remove(R.getGroup()),R.dispose()}),S=[],A=[]},this.objectIsInRegion=(C,R)=>{for(var L=0;L<A.length;L++)if(C===A[L])return!0;if(R){for(var N=0;N<S.length;N++)if(S[N].objectIsInRegion(C,R))return!0}return!1},this.forEachGeometry=(C,R)=>{A.forEach(L=>{L.isGeometry&&C(L)}),R&&S.forEach(L=>L.forEachGeometry(C,R))},this.forEachGlyphset=(C,R)=>{A.forEach(L=>{L.isGlyphset&&C(L)}),R&&S.forEach(L=>L.forEachGlyphset(C,R))},this.forEachPointset=(C,R)=>{A.forEach(L=>{L.isPointset&&C(L)}),R&&S.forEach(L=>L.forEachPointset(C,R))},this.forEachLine=(C,R)=>{A.forEach(L=>{L.isLines&&C(L)}),R&&S.forEach(L=>L.forEachLine(C,R))},this.findObjectsWithAnatomicalId=(C,R)=>(A.forEach(L=>{L.anatomicalId===C&&objectsArray.push(L)}),R&&S.forEach(L=>{var N=L.findObjectsWithAnatomicalId(C,R);objectsArray.push(...N)}),objectsArray),this.findObjectsWithGroupName=(C,R)=>{var L=[];return A.forEach(N=>{var x=N.groupName?N.groupName.toLowerCase():N.groupName,O=C&&C.toLowerCase();x===O&&L.push(N)}),R&&S.forEach(N=>{var x=N.findObjectsWithGroupName(C,R);L.push(...x)}),L},this.findGeometriesWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isGeometry);return N},this.findPointsetsWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isPointset);return N},this.findGlyphsetsWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isGlyphset);return N},this.findLinesWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isLines);return N},this.getAllObjects=C=>{var R=[...A];return C&&S.forEach(L=>{var N=L.getAllObjects(C);R.push(...N)}),R},this.getChildRegions=C=>{var R=[...S];return C&&S.forEach(L=>{var N=L.getChildRegions(C);R.push(...N)}),R},this.getCurrentTime=()=>{if(A[0]!=null)return A[0].getCurrentTime();for(var C,R=0;R<S.length;R++)if(C=S[R].getCurrentTime(),C!==-1)return C;return-1},this.setMorphTime=(C,R)=>{A.forEach(L=>{L.setMorphTime(C)}),R&&S.forEach(L=>{L.setMorphTime(C)})},this.isTimeVarying=()=>{for(var C=0;C<A.length;C++)if(A[C].isTimeVarying())return!0;for(var R=0;R<S.length;R++)if(S[R].isTimeVarying())return!0;return!1},this.renderGeometries=(C,R,L,N,x,O)=>{var B,D=this.getAllObjects(O);D.forEach(k=>{k.render(C*R,L,N,x)}),x&&L===!1&&(B=x.markerCluster)!==null&&B!==void 0&&B.markerUpdateRequired&&x.markerCluster.calculate()},this.createPoints=(C,R,L,N)=>{var x=!1,O=this.findObjectsWithGroupName(C,!1),B=O.findIndex(k=>k.isPointset),D=-1<B?O[B]:new h;return D.addPoints(R,L,N),B===-1?(D.setName(C),this.addZincObject(D),x=!0):this.pickableUpdateRequired=!0,{zincObject:D,isNew:x}},this.createLines=(C,R,L)=>{var N=!1,x=this.findObjectsWithGroupName(C,!1),O=x.findIndex(D=>D.isLines),B=-1<O?x[O]:new p;return B.addLines(R,L),O===-1?(B.setName(C),this.addZincObject(B),N=!0):this.pickableUpdateRequired=!0,{zincObject:B,isNew:N}},this.createGeometryFromThreeJSGeometry=(C,R,L,N,x,O)=>{var B=new y,D=new m.MeshPhongMaterial({color:L,morphTargets:!1,morphNormals:!1,transparent:!0,opacity:N,side:m.DoubleSide});return B.createMesh(R,D,{localTimeEnabled:!1,localMorphColour:!1}),B.getMorph()?(B.setVisibility(!1),B.setName(C),B.setRenderOrder(O),this.addZincObject(B),B):void 0}};l.Region=v},(o,l,u)=>{u(4),u(5).toBufferGeometry;var c=u(46).LineSegments2,f=u(48).LineMaterial,h=u(47).LineSegmentsGeometry,p=function(){u(24).Lines.call(this),this.isLines2=!0;var y=Array(300);this.createLineSegment=(m,d,b)=>{if(m&&d){var v=new h;v.setPositions(m),v.colorsNeedUpdate=!0;var g=new c(v,d);g.scale.set(1,1,1),g.computeLineDistances(),this.setMesh(g,b.localTimeEnabled,b.localMorphColour)}},this.setWidth=m=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=m,this.morph.material.needsUpdate=!0)},this.addVertices=function(m){if(m&&m.length){var d=this.getMorph();d||(this.drawRange=0);var b=3*this.drawRange;if(m.forEach(v=>{y[b++]=v[0],y[b++]=v[1],y[b++]=v[2],this.drawRange++}),!d)for(;300>b;)y[b++]=m[0][0],y[b++]=m[0][1],y[b++]=m[0][2];d&&(d.geometry.setPositions(y),d.computeLineDistances(),this.boundingBoxUpdateRequired=!0)}return y},this.getVerticesByFaceIndex=function(m){var d=3*(2*m),b=this.getMorph();if(b&&3*this.drawRange>d){var v=b.geometry.getAttribute("instanceStart");return[[v.data.array[d],v.data.array[++d],v.data.array[++d]],[v.data.array[++d],v.data.array[++d],v.data.array[++d]]]}return[]},this.editVertices=function(m,d){if(m&&m.length){var b=this.getMorph(),v=d+m.length-1;if(!b||0>d||v>=this.drawRange)return;var g=3*d;for(m.forEach(M=>{y[g++]=M[0],y[g++]=M[1],y[g++]=M[2]}),g=3*this.drawRange;300>g;)y[g++]=m[0][0],y[g++]=m[0][1],y[g++]=m[0][2];b.geometry.setPositions(y),b.computeLineDistances(),this.boundingBoxUpdateRequired=!0}return y},this.addLines=(m,d)=>{if(m&&0<m.length){this.addVertices(m);var b=this.getMorph();if(!b){var v=new f({color:d,linewidth:1,vertexColors:!1,worldUnits:!1});v.resolution.set(window.innerWidth,window.innerHeight),this.createLineSegment(y,v,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}},this.render=()=>{var m=this.getMorph().material;m.resolution.set(window.innerWidth,window.innerHeight)}};p.prototype=Object.create(u(24).Lines.prototype),p.prototype.constructor=p,l.Lines2=p},(o,l,u)=>{u.r(l),u.d(l,{LineSegments2:()=>A});var c=u(4),f=u(47),h=u(48),p=new c.Vector3,y=new c.Vector3,m=new c.Vector4,d=new c.Vector4,b=new c.Vector4,v=new c.Vector3,g=new c.Matrix4,M=new c.Line3,_=new c.Vector3,E=new c.Box3,S=new c.Sphere,w=new c.Vector4;class A extends c.Mesh{constructor(){var T=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new f.LineSegmentsGeometry,P=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new h.LineMaterial({color:16777215*Math.random()});super(T,P),this.type="LineSegments2"}computeLineDistances(){for(var T=this.geometry,P=T.attributes.instanceStart,C=T.attributes.instanceEnd,R=new Float32Array(2*P.count),L=0,N=0,x=P.count;L<x;L++,N+=2)p.fromBufferAttribute(P,L),y.fromBufferAttribute(C,L),R[N]=N==0?0:R[N-1],R[N+1]=R[N]+p.distanceTo(y);var O=new c.InstancedInterleavedBuffer(R,2,1);return T.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(O,1,0)),T.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(O,1,1)),this}raycast(T,P){T.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var C=T.params.Line2===void 0?0:T.params.Line2.threshold||0,R=T.ray,L=T.camera,N=L.projectionMatrix,x=this.matrixWorld,O=this.geometry,B=this.material,D=B.resolution,k=B.linewidth+C,U=O.attributes.instanceStart,H=O.attributes.instanceEnd,X=-L.near,re=2*Math.max(k/D.width,k/D.height);O.boundingSphere===null&&O.computeBoundingSphere(),S.copy(O.boundingSphere).applyMatrix4(x);var j=Math.max(L.near,S.distanceToPoint(R.origin));w.set(0,0,-j,1).applyMatrix4(L.projectionMatrix),w.multiplyScalar(1/w.w),w.applyMatrix4(L.projectionMatrixInverse);var G=.5*Math.abs(re/w.w);if(S.radius+=G,T.ray.intersectsSphere(S)!==!1){O.boundingBox===null&&O.computeBoundingBox(),E.copy(O.boundingBox).applyMatrix4(x);var W=Math.max(L.near,E.distanceToPoint(R.origin));w.set(0,0,-W,1).applyMatrix4(L.projectionMatrix),w.multiplyScalar(1/w.w),w.applyMatrix4(L.projectionMatrixInverse);var K=.5*Math.abs(re/w.w);if(E.max.x+=K,E.max.y+=K,E.max.z+=K,E.min.x-=K,E.min.y-=K,E.min.z-=K,T.ray.intersectsBox(E)!==!1){R.at(1,b),b.w=1,b.applyMatrix4(L.matrixWorldInverse),b.applyMatrix4(N),b.multiplyScalar(1/b.w),b.x*=D.x/2,b.y*=D.y/2,b.z=0,v.copy(b),g.multiplyMatrices(L.matrixWorldInverse,x);for(var ee=0,q=U.count;ee<q;ee++){m.fromBufferAttribute(U,ee),d.fromBufferAttribute(H,ee),m.w=1,d.w=1,m.applyMatrix4(g),d.applyMatrix4(g);var ie=m.z>X&&d.z>X;if(!ie){if(m.z>X){var Y=m.z-d.z,te=(m.z-X)/Y;m.lerp(d,te)}else if(d.z>X){var F=d.z-m.z,$=(d.z-X)/F;d.lerp(m,$)}m.applyMatrix4(N),d.applyMatrix4(N),m.multiplyScalar(1/m.w),d.multiplyScalar(1/d.w),m.x*=D.x/2,m.y*=D.y/2,d.x*=D.x/2,d.y*=D.y/2,M.start.copy(m),M.start.z=0,M.end.copy(d),M.end.z=0;var Q=M.closestPointToPointParameter(v,!0);M.at(Q,_);var V=c.MathUtils.lerp(m.z,d.z,Q),z=-1<=V&&1>=V,oe=v.distanceTo(_)<.5*k;if(z&&oe){M.start.fromBufferAttribute(U,ee),M.end.fromBufferAttribute(H,ee),M.start.applyMatrix4(x),M.end.applyMatrix4(x);var ae=new c.Vector3,le=new c.Vector3;R.distanceSqToSegment(M.start,M.end,le,ae),P.push({point:le,pointOnLine:ae,distance:R.origin.distanceTo(le),object:this,face:null,faceIndex:ee,uv:null,uv2:null})}}}}}}}A.prototype.LineSegments2=!0},(o,l,u)=>{u.r(l),u.d(l,{LineSegmentsGeometry:()=>p});var c=u(4),f=new c.Box3,h=new c.Vector3;class p extends c.InstancedBufferGeometry{constructor(){super(),this.type="LineSegmentsGeometry",this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute("position",new c.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute("uv",new c.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(m){var d=this.attributes.instanceStart,b=this.attributes.instanceEnd;return d!==void 0&&(d.applyMatrix4(m),b.applyMatrix4(m),d.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(m){var d;m instanceof Float32Array?d=m:Array.isArray(m)&&(d=new Float32Array(m));var b=new c.InstancedInterleavedBuffer(d,6,1);return this.setAttribute("instanceStart",new c.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceEnd",new c.InterleavedBufferAttribute(b,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(m){var d;m instanceof Float32Array?d=m:Array.isArray(m)&&(d=new Float32Array(m));var b=new c.InstancedInterleavedBuffer(d,6,1);return this.setAttribute("instanceColorStart",new c.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceColorEnd",new c.InterleavedBufferAttribute(b,3,3)),this}fromWireframeGeometry(m){return this.setPositions(m.attributes.position.array),this}fromEdgesGeometry(m){return this.setPositions(m.attributes.position.array),this}fromMesh(m){return this.fromWireframeGeometry(new c.WireframeGeometry(m.geometry)),this}fromLineSegments(m){var d=m.geometry;return d.isGeometry?void console.error("THREE.LineSegmentsGeometry no longer supports Geometry. Use THREE.BufferGeometry instead."):(d.isBufferGeometry&&this.setPositions(d.attributes.position.array),this)}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);var m=this.attributes.instanceStart,d=this.attributes.instanceEnd;m!==void 0&&d!==void 0&&(this.boundingBox.setFromBufferAttribute(m),f.setFromBufferAttribute(d),this.boundingBox.union(f))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();var m=this.attributes.instanceStart,d=this.attributes.instanceEnd;if(m!==void 0&&d!==void 0){var b=this.boundingSphere.center;this.boundingBox.getCenter(b);for(var v=0,g=0,M=m.count;g<M;g++)h.fromBufferAttribute(m,g),v=Math.max(v,b.distanceToSquared(h)),h.fromBufferAttribute(d,g),v=Math.max(v,b.distanceToSquared(h));this.boundingSphere.radius=Math.sqrt(v),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(m){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(m)}}p.prototype.isLineSegmentsGeometry=!0},(o,l,u)=>{u.r(l),u.d(l,{LineMaterial:()=>f});var c=u(4);c.UniformsLib.line={linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1}},c.ShaderLib.line={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,c.UniformsLib.line]),vertexShader:`
3231
+ `),I="",T="",P=0,C=[],R=typeof"".trimLeft=="function",L=0,N=A.length;L<N;L++)if(I=A[L],I=R?I.trimLeft():I.trim(),P=I.length,P!==0&&(T=I.charAt(0),T!=="#"))if(T==="v"){var x=I.split(/\s+/);switch(x[0]){case"v":w.vertices.push(parseFloat(x[1]),parseFloat(x[2]),parseFloat(x[3])),7<=x.length?w.colors.push(parseFloat(x[4]),parseFloat(x[5]),parseFloat(x[6])):w.colors.push(void 0,void 0,void 0);break;case"vn":w.normals.push(parseFloat(x[1]),parseFloat(x[2]),parseFloat(x[3]));break;case"vt":w.uvs.push(parseFloat(x[1]),parseFloat(x[2]))}}else if(T==="f"){for(var O,B=I.substr(1).trim(),D=B.split(/\s+/),k=[],U=0,H=D.length;U<H;U++)if(O=D[U],0<O.length){var X=O.split("/");k.push(X)}for(var re=k[0],j=1,G=k.length-1;j<G;j++){var W=k[j],K=k[j+1];w.addFace(re[0],W[0],K[0],re[1],W[1],K[1],re[2],W[2],K[2])}}else if(T==="l"){var ee=I.substring(1).trim().split(" "),q=[],ie=[];if(I.indexOf("/")===-1)q=ee;else for(var Y,te=0,F=ee.length;te<F;te++)Y=ee[te].split("/"),Y[0]!==""&&q.push(Y[0]),Y[1]!==""&&ie.push(Y[1]);w.addLineGeometry(q,ie)}else if(T==="p"){var $=I.substr(1).trim(),Q=$.split(" ");w.addPointGeometry(Q)}else if((C=f.exec(I))!==null){var V=(" "+C[0].substr(1).trim()).substr(1);w.startObject(V)}else if(p.test(I))w.object.startMaterial(I.substring(7).trim(),w.materialLibraries);else if(h.test(I))w.materialLibraries.push(I.substring(7).trim());else if(y.test(I))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(T==="s"){if(C=I.split(" "),1<C.length){var z=C[1].trim().toLowerCase();w.object.smooth=z!=="0"&&z!=="off"}else w.object.smooth=!0;var oe=w.object.currentMaterial();oe&&(oe.smooth=w.object.smooth)}else{if(I==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+I+'"')}w.finalize();var ae=new c.Group;ae.materialLibraries=[].concat(w.materialLibraries);var le=w.objects.length!==1||w.objects[0].geometry.vertices.length!==0;if(le==!0)for(var fe=0,be=w.objects.length;fe<be;fe++){var ye=w.objects[fe],he=ye.geometry,ve=ye.materials,se=he.type==="Line",we=he.type==="Points",pe=!1;if(he.vertices.length!==0){var ge=new c.BufferGeometry;ge.setAttribute("position",new c.Float32BufferAttribute(he.vertices,3)),0<he.normals.length&&ge.setAttribute("normal",new c.Float32BufferAttribute(he.normals,3)),0<he.colors.length&&(pe=!0,ge.setAttribute("color",new c.Float32BufferAttribute(he.colors,3))),he.hasUVIndices===!0&&ge.setAttribute("uv",new c.Float32BufferAttribute(he.uvs,2));for(var Ee=[],He=0,tt=ve.length;He<tt;He++){var Ie=ve[He],ot=Ie.name+"_"+Ie.smooth+"_"+pe,Le=w.materials[ot];if(this.materials!==null){if(Le=this.materials.create(Ie.name),se&&Le&&!(Le instanceof c.LineBasicMaterial)){var Ye=new c.LineBasicMaterial;c.Material.prototype.copy.call(Ye,Le),Ye.color.copy(Le.color),Le=Ye}else if(we&&Le&&!(Le instanceof c.PointsMaterial)){var We=new c.PointsMaterial({size:10,sizeAttenuation:!1});c.Material.prototype.copy.call(We,Le),We.color.copy(Le.color),We.map=Le.map,Le=We}}Le===void 0&&(Le=se?new c.LineBasicMaterial:we?new c.PointsMaterial({size:1,sizeAttenuation:!1}):new c.MeshPhongMaterial,Le.name=Ie.name,Le.flatShading=!Ie.smooth,Le.vertexColors=pe,w.materials[ot]=Le),Ee.push(Le)}var it=void 0;if(1<Ee.length){for(var et,Mt=0,pt=ve.length;Mt<pt;Mt++)et=ve[Mt],ge.addGroup(et.groupStart,et.groupCount,Mt);it=se?new c.LineSegments(ge,Ee):we?new c.Points(ge,Ee):new c.Mesh(ge,Ee)}else it=se?new c.LineSegments(ge,Ee[0]):we?new c.Points(ge,Ee[0]):new c.Mesh(ge,Ee[0]);it.name=ye.name,ae.add(it)}}else if(0<w.vertices.length){var hn=new c.PointsMaterial({size:1,sizeAttenuation:!1}),Mn=new c.BufferGeometry;Mn.setAttribute("position",new c.Float32BufferAttribute(w.vertices,3)),0<w.colors.length&&w.colors[0]!==void 0&&(Mn.setAttribute("color",new c.Float32BufferAttribute(w.colors,3)),hn.vertexColors=!0);var jn=new c.Points(Mn,hn);ae.add(jn)}return ae}}},(o,l,u)=>{function c(_,E){var S=Object.keys(_);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(_);E&&(w=w.filter(function(A){return Object.getOwnPropertyDescriptor(_,A).enumerable})),S.push.apply(S,w)}return S}function f(_){for(var E,S=1;S<arguments.length;S++)E=arguments[S]==null?{}:arguments[S],S%2?c(Object(E),!0).forEach(function(w){h(_,w,E[w])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(E)):c(Object(E)).forEach(function(w){Object.defineProperty(_,w,Object.getOwnPropertyDescriptor(E,w))});return _}function h(_,E,S){return E=p(E),E in _?Object.defineProperty(_,E,{value:S,enumerable:!0,configurable:!0,writable:!0}):_[E]=S,_}function p(_){var E=y(_,"string");return typeof E=="symbol"?E:E+""}function y(_,E){if(typeof _!="object"||!_)return _;var S=_[Symbol.toPrimitive];if(S!==void 0){var w=S.call(_,E||"default");if(typeof w!="object")return w;throw new TypeError("@@toPrimitive must return a primitive value.")}return(E==="string"?String:Number)(_)}var m=u(19).JSONLoader,d=u(4),b=d.FileLoader,v=_=>{var E=(w,A)=>{w.merge(A)};if(_&&0<_.length){for(;1<_.length;){var S=_.splice(1,1);E(_[0],S[0])}return _[0]}},g=function(E,S,w){var A=new b,I=new m;A.crossOrigin=S;var T=E,P=w,C=void 0,R=!1,L=!1,N=void 0,x=[],O=U=>{var H=C[U.index];if(H){var X=I.parse(H);U.onLoad(X.geometry,X.materials)}else B(U)},B=U=>{U.onError&&(!N&&(N={responseURL:T}),U.onError(N))};this.downloadCompleted=U=>{try{C=JSON.parse(U[0]),R=!1,L=!0,Array.isArray(C)?x.forEach(H=>O(H)):x.forEach(H=>B(H))}catch{x.forEach(X=>B(X))}};var D=()=>U=>{N=U,L=!0,R=!1,x.forEach(H=>{B(H)})},k=()=>U=>{x.forEach(H=>{H.onProgress&&H.onProgress(U)})};this.load=(U,H,X,re)=>{var j={index:U,onLoad:H,onProgress:X,onError:re};L?C?O(j):B(N):R?x.push(j):(x.push(j),R=!0,A.load(T,P,k,D))}},M=function(E,S){var w=[],A=E,I=S,T=0;this.itemDownloaded=(P,C)=>{if(w[P]=C,T++,T==A){for(var R=w[0][1],L=w.map(O=>O[0]),N=v(L),x=1;x<A;x++)w[P][0].dispose(),w[P][1].forEach(O=>O.dispose());I(N,R)}}};l.PrimitivesLoader=function(){var _=0,E=20;this.crossOrigin="Anonymous";var S=new m,w=[],A={},I=(R,L,N,x,O)=>{var B=R.length,D=new M(B,L),k=0;R.forEach(U=>{var H=O?f({},O):{};H.msHandler=D,H.order=k,k++,P(U,L,N,x,H)})},T=(R,L,N,x,O)=>{var B=O?f({},O):{},D=A[R];if(!D)if(E>_){var k=new C(void 0,this,B);++_,D=new g(R,this.crossOrigin,k),A[R]=D}else w.push({url:R,onLoad:L,onProgress:N,onError:x,options:O});D&&(B.isHandler=D,D.load(O.index,L,N,x))},P=(R,L,N,x,O)=>{if(O&&O.index!==void 0)T(R,L,N,x,O);else if(E>_){++_;var B=new C(L,this,O),D=new C(x,this,O);S.crossOrigin=this.crossOrigin,S.load(R,B,N,D)}else w.push({url:R,onLoad:L,onProgress:N,onError:x,options:O})};this.load=(R,L,N,x,O)=>{Array.isArray(R)?I(R,L,N,x,O):P(R,L,N,x,O)},this.loadFromWaitingList=()=>{for(;E>_;){var R=w.shift();if(R)this.load(R.url,R.onLoad,R.onProgress,R.onError,R.options);else return}},this.itemRemainingCheck=()=>{if(w.length===0&&_==0)for(var R in A)A.hasOwnProperty(R)&&delete A[R]};var C=function(L,N,x){return function(){--_;for(var O=arguments.length,B=Array(O),D=0;D<O;D++)B[D]=arguments[D];x!=null&&x.msHandler?x.msHandler.itemDownloaded(x.order,B):x!=null&&x.isHandler?x.isHandler.downloadCompleted(B):L&&L(...B),N.loadFromWaitingList(),N.itemRemainingCheck()}};this.parse=R=>S.parse(R)}},(o,l,u)=>{u(4);var c=u(40).GLTFLoader,f=function(){var h=this;this.parseGLTFObjects=(p,y,m,d)=>{var b=y;if(m!==0){if(p.type!=="Object3D"){var v;if(p.type==="Mesh"?v=new(u(3)).Geometry:p.type==="LineSegments"?v=new(u(24)).Lines:p.type==="Points"&&(v=new(u(22)).Pointset),v){var g=!1,M=!1;p.geometry&&p.geometry.morphAttributes&&(g=!!p.geometry.morphAttributes.position,M=!!p.geometry.morphAttributes.color),v.setMesh(p.clone(),g,M);var _=v.getMorph();v.groupName=_.name,_.matrixAutoUpdate=!0,y.addZincObject(v),d!=null&&typeof d=="function"&&d(v)}}else if(p.name!==""&&(y&&(b=y.findOrCreateChildFromPath(p.name)),b)){var E=b.getGroup();E.position.copy(p.position),E.rotation.copy(p.rotation),E.quaternion.copy(p.quaternion),E.matrixAutoUpdate=!0}}m++,p.children.forEach(S=>{h.parseGLTFObjects(S,b,m,d)})},this.setCamera=p=>{p.viewAll();var y=p.getZincCameraControls(),m=y.getCurrentViewport();y.addViewport("default",m),y.setDefaultViewport("default")},this.load=(p,y,m,d,b)=>{var v=m.substring(0,m.lastIndexOf("/")+1),g=m.substring(m.lastIndexOf("/")+1,m.length),M=new c().setPath(v);M.load(g,function(_){console.log(_),h.parseGLTFObjects(_.scene,y,0,d),h.setCamera(p),b!=null&&typeof b=="function"&&b()})}};l.GLTFToZincJSLoader=f},o=>{o.exports=XB},(o,l,u)=>{var c=u(42).GLTFExporter,f=function(h){var p=h;this.exportGLTF=y=>{var m=p.getRootRegion(),d=m.getAllObjects(!0),b=[];d.forEach(M=>{M.animationClip&&b.push({clip:M.animationClip[0],mesh:M.getMorph()})});var v=new c,g={binary:y,animations:b};return new Promise(M=>{v.parse(p.getThreeJSScene(),function(_){M(_)},g)})}};l.SceneExporter=f},(o,l,u)=>{u.r(l),u.d(l,{GLTFExporter:()=>f});var c=u(4);class f{constructor(){this.pluginCallbacks=[],this.register(function(x){return new C(x)}),this.register(function(x){return new R(x)}),this.register(function(x){return new L(x)})}register(x){return this.pluginCallbacks.indexOf(x)===-1&&this.pluginCallbacks.push(x),this}unregister(x){return this.pluginCallbacks.indexOf(x)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(x),1),this}parse(x,O,B){for(var D=new P,k=[],U=0,H=this.pluginCallbacks.length;U<H;U++)k.push(this.pluginCallbacks[U](D));D.setPlugins(k),D.write(x,O,B)}}var h={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},p={};p[c.NearestFilter]=h.NEAREST,p[c.NearestMipmapNearestFilter]=h.NEAREST_MIPMAP_NEAREST,p[c.NearestMipmapLinearFilter]=h.NEAREST_MIPMAP_LINEAR,p[c.LinearFilter]=h.LINEAR,p[c.LinearMipmapNearestFilter]=h.LINEAR_MIPMAP_NEAREST,p[c.LinearMipmapLinearFilter]=h.LINEAR_MIPMAP_LINEAR,p[c.ClampToEdgeWrapping]=h.CLAMP_TO_EDGE,p[c.RepeatWrapping]=h.REPEAT,p[c.MirroredRepeatWrapping]=h.MIRRORED_REPEAT;var y={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},m=12,d=1179937895,b=2,v=8,g=1313821514,M=5130562;function _(N,x){return N.length===x.length&&N.every(function(O,B){return O===x[B]})}function E(N){if(window.TextEncoder!==void 0)return new TextEncoder().encode(N).buffer;for(var x,O=new Uint8Array(new ArrayBuffer(N.length)),B=0,D=N.length;B<D;B++)x=N.charCodeAt(B),O[B]=255<x?32:x;return O.buffer}function S(N){return _(N.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function w(N,x,O){for(var B={min:Array(N.itemSize).fill(Number.POSITIVE_INFINITY),max:Array(N.itemSize).fill(Number.NEGATIVE_INFINITY)},D=x;D<x+O;D++)for(var k,U=0;U<N.itemSize;U++)k=void 0,4<N.itemSize?k=N.array[D*N.itemSize+U]:U===0?k=N.getX(D):U===1?k=N.getY(D):U===2?k=N.getZ(D):U==3&&(k=N.getW(D)),B.min[U]=Math.min(B.min[U],k),B.max[U]=Math.max(B.max[U],k);return B}function A(N){return 4*Math.ceil(N/4)}function I(N){var x=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,O=A(N.byteLength);if(O!==N.byteLength){var B=new Uint8Array(O);if(B.set(new Uint8Array(N)),x!==0)for(var D=N.byteLength;D<O;D++)B[D]=x;return B.buffer}return N}var T=null;class P{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(x){this.plugins=x}write(x,O,B){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},B),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(x);var D=this;Promise.all(this.pending).then(function(){var k=D.buffers,U=D.json,H=D.options,X=D.extensionsUsed,re=new Blob(k,{type:"application/octet-stream"}),j=Object.keys(X);if(0<j.length&&(U.extensionsUsed=j),U.buffers&&0<U.buffers.length&&(U.buffers[0].byteLength=re.size),H.binary===!0){var G=new window.FileReader;G.readAsArrayBuffer(re),G.onloadend=function(){var K=I(G.result),ee=new DataView(new ArrayBuffer(v));ee.setUint32(0,K.byteLength,!0),ee.setUint32(4,M,!0);var q=I(E(JSON.stringify(U)),32),ie=new DataView(new ArrayBuffer(v));ie.setUint32(0,q.byteLength,!0),ie.setUint32(4,g,!0);var Y=new ArrayBuffer(m),te=new DataView(Y);te.setUint32(0,d,!0),te.setUint32(4,b,!0);var F=m+ie.byteLength+q.byteLength+ee.byteLength+K.byteLength;te.setUint32(8,F,!0);var $=new Blob([Y,ie,q,ee,K],{type:"application/octet-stream"}),Q=new window.FileReader;Q.readAsArrayBuffer($),Q.onloadend=function(){O(Q.result)}}}else if(U.buffers&&0<U.buffers.length){var W=new window.FileReader;W.readAsDataURL(re),W.onloadend=function(){var K=W.result;U.buffers[0].uri=K,O(U)}}else O(U)})}serializeUserData(x,O){if(!(x.userData&&x.userData.isZincObject)&&Object.keys(x.userData).length!==0){var B=this.options,D=this.extensionsUsed;try{var k=JSON.parse(JSON.stringify(x.userData));if(B.includeCustomExtensions&&k.gltfExtensions){for(var U in O.extensions===void 0&&(O.extensions={}),k.gltfExtensions)O.extensions[U]=k.gltfExtensions[U],D[U]=!0;delete k.gltfExtensions}0<Object.keys(k).length&&(O.extras=k)}catch(H){console.warn("THREE.GLTFExporter: userData of '"+x.name+"' won't be serialized because of JSON.stringify error - "+H.message)}}}getUID(x){return this.uids.has(x)||this.uids.set(x,this.uid++),this.uids.get(x)}isNormalizedNormalAttribute(x){var O=this.cache;if(O.attributesNormalized.has(x))return!1;for(var B=new c.Vector3,D=0,k=x.count;D<k;D++)if(5e-4<Math.abs(B.fromBufferAttribute(x,D).length()-1))return!1;return!0}createNormalizedNormalAttribute(x){var O=this.cache;if(O.attributesNormalized.has(x))return O.attributesNormalized.get(x);for(var B=x.clone(),D=new c.Vector3,k=0,U=B.count;k<U;k++)D.fromBufferAttribute(B,k),D.x===0&&D.y===0&&D.z===0?D.setX(1):D.normalize(),B.setXYZ(k,D.x,D.y,D.z);return O.attributesNormalized.set(x,B),B}applyTextureTransform(x,O){var B=!1,D={};(O.offset.x!==0||O.offset.y!==0)&&(D.offset=O.offset.toArray(),B=!0),O.rotation!==0&&(D.rotation=O.rotation,B=!0),(O.repeat.x!==1||O.repeat.y!==1)&&(D.scale=O.repeat.toArray(),B=!0),B&&(x.extensions=x.extensions||{},x.extensions.KHR_texture_transform=D,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(x){var O=this.json,B=this.buffers;return O.buffers||(O.buffers=[{byteLength:0}]),B.push(x),0}processBufferView(x,O,B,D,k){var U=this.json;U.bufferViews||(U.bufferViews=[]);for(var H=O===h.UNSIGNED_BYTE?1:O===h.UNSIGNED_SHORT?2:4,X=A(D*x.itemSize*H),re=new DataView(new ArrayBuffer(X)),j=0,G=B;G<B+D;G++)for(var W,K=0;K<x.itemSize;K++)W=void 0,4<x.itemSize?W=x.array[G*x.itemSize+K]:K===0?W=x.getX(G):K===1?W=x.getY(G):K===2?W=x.getZ(G):K==3&&(W=x.getW(G)),O===h.FLOAT?re.setFloat32(j,W,!0):O===h.UNSIGNED_INT?re.setUint32(j,W,!0):O===h.UNSIGNED_SHORT?re.setUint16(j,W,!0):O===h.UNSIGNED_BYTE&&re.setUint8(j,W),j+=H;var ee={buffer:this.processBuffer(re.buffer),byteOffset:this.byteOffset,byteLength:X};k!==void 0&&(ee.target=k),k===h.ARRAY_BUFFER&&(ee.byteStride=x.itemSize*H),this.byteOffset+=X,U.bufferViews.push(ee);var q={id:U.bufferViews.length-1,byteLength:0};return q}processBufferViewImage(x){var O=this,B=O.json;return B.bufferViews||(B.bufferViews=[]),new Promise(function(D){var k=new window.FileReader;k.readAsArrayBuffer(x),k.onloadend=function(){var U=I(k.result),H={buffer:O.processBuffer(U),byteOffset:O.byteOffset,byteLength:U.byteLength};O.byteOffset+=U.byteLength,D(B.bufferViews.push(H)-1)}})}processAccessor(x,O,B,D){var k,U=this.options,H=this.json;if(x.array.constructor===Float32Array)k=h.FLOAT;else if(x.array.constructor===Uint32Array)k=h.UNSIGNED_INT;else if(x.array.constructor===Uint16Array)k=h.UNSIGNED_SHORT;else if(x.array.constructor===Uint8Array)k=h.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(B===void 0&&(B=0),D===void 0&&(D=x.count),U.truncateDrawRange&&O!==void 0&&O.index===null){var X=B+D,re=O.drawRange.count===1/0?x.count:O.drawRange.start+O.drawRange.count;B=Math.max(B,O.drawRange.start),D=Math.min(X,re)-B,0>D&&(D=0)}if(D===0)return null;var j,G=w(x,B,D);O!==void 0&&(j=x===O.index?h.ELEMENT_ARRAY_BUFFER:h.ARRAY_BUFFER);var W=this.processBufferView(x,k,B,D,j),K={bufferView:W.id,byteOffset:W.byteOffset,componentType:k,count:D,max:G.max,min:G.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[x.itemSize]};return x.normalized===!0&&(K.normalized=!0),H.accessors||(H.accessors=[]),H.accessors.push(K)-1}processImage(x,O,B){var D=this,k=D.cache,U=D.json,H=D.options,X=D.pending;k.images.has(x)||k.images.set(x,{});var re=k.images.get(x),j=O===c.RGBAFormat?"image/png":"image/jpeg",G=j+":flipY/"+B.toString();if(re[G]!==void 0)return re[G];U.images||(U.images=[]);var W={mimeType:j};if(H.embedImages){var K=T=T||document.createElement("canvas");K.width=Math.min(x.width,H.maxTextureSize),K.height=Math.min(x.height,H.maxTextureSize);var ee=K.getContext("2d");if(B===!0&&(ee.translate(0,K.height),ee.scale(1,-1)),typeof HTMLImageElement<"u"&&x instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&x instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&x instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&x instanceof ImageBitmap)ee.drawImage(x,0,0,K.width,K.height);else{O!==c.RGBAFormat&&O!==c.RGBFormat&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(x.width>H.maxTextureSize||x.height>H.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",x);var q=new Uint8ClampedArray(4*(x.height*x.width));if(O===c.RGBAFormat)for(var ie=0;ie<q.length;ie+=4)q[ie+0]=x.data[ie+0],q[ie+1]=x.data[ie+1],q[ie+2]=x.data[ie+2],q[ie+3]=x.data[ie+3];else for(var Y=0,te=0;Y<q.length;Y+=4,te+=3)q[Y+0]=x.data[te+0],q[Y+1]=x.data[te+1],q[Y+2]=x.data[te+2],q[Y+3]=255;ee.putImageData(new ImageData(q,x.width,x.height),0,0)}H.binary===!0?X.push(new Promise(function($){K.toBlob(function(Q){D.processBufferViewImage(Q).then(function(V){W.bufferView=V,$()})},j)})):W.uri=K.toDataURL(j)}else W.uri=x.src;var F=U.images.push(W)-1;return re[G]=F,F}processSampler(x){var O=this.json;O.samplers||(O.samplers=[]);var B={magFilter:p[x.magFilter],minFilter:p[x.minFilter],wrapS:p[x.wrapS],wrapT:p[x.wrapT]};return O.samplers.push(B)-1}processTexture(x){var O=this.cache,B=this.json;if(O.textures.has(x))return O.textures.get(x);B.textures||(B.textures=[]);var D={sampler:this.processSampler(x),source:this.processImage(x.image,x.format,x.flipY)};x.name&&(D.name=x.name),this._invokeAll(function(U){U.writeTexture&&U.writeTexture(x,D)});var k=B.textures.push(D)-1;return O.textures.set(x,k),k}processMaterial(x){var O=this.cache,B=this.json;if(O.materials.has(x))return O.materials.get(x);if(x.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;B.materials||(B.materials=[]);var D={pbrMetallicRoughness:{}};x.isMeshStandardMaterial!==!0&&x.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");var k=x.color.toArray().concat([x.opacity]);if(_(k,[1,1,1,1])||(D.pbrMetallicRoughness.baseColorFactor=k),x.isMeshStandardMaterial?(D.pbrMetallicRoughness.metallicFactor=x.metalness,D.pbrMetallicRoughness.roughnessFactor=x.roughness):(D.pbrMetallicRoughness.metallicFactor=.5,D.pbrMetallicRoughness.roughnessFactor=.5),x.metalnessMap||x.roughnessMap)if(x.metalnessMap===x.roughnessMap){var U={index:this.processTexture(x.metalnessMap)};this.applyTextureTransform(U,x.metalnessMap),D.pbrMetallicRoughness.metallicRoughnessTexture=U}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(x.map){var H={index:this.processTexture(x.map)};this.applyTextureTransform(H,x.map),D.pbrMetallicRoughness.baseColorTexture=H}if(x.emissive){var X=x.emissive.clone().multiplyScalar(x.emissiveIntensity),re=Math.max(X.r,X.g,X.b);if(1<re&&(X.multiplyScalar(1/re),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),0<re&&(D.emissiveFactor=X.toArray()),x.emissiveMap){var j={index:this.processTexture(x.emissiveMap)};this.applyTextureTransform(j,x.emissiveMap),D.emissiveTexture=j}}if(x.normalMap){var G={index:this.processTexture(x.normalMap)};x.normalScale&&x.normalScale.x!==-1&&(x.normalScale.x!==x.normalScale.y&&console.warn("THREE.GLTFExporter: Normal scale components are different, ignoring Y and exporting X."),G.scale=x.normalScale.x),this.applyTextureTransform(G,x.normalMap),D.normalTexture=G}if(x.aoMap){var W={index:this.processTexture(x.aoMap),texCoord:1};x.aoMapIntensity!==1&&(W.strength=x.aoMapIntensity),this.applyTextureTransform(W,x.aoMap),D.occlusionTexture=W}x.transparent?D.alphaMode="BLEND":0<x.alphaTest&&(D.alphaMode="MASK",D.alphaCutoff=x.alphaTest),x.side===c.DoubleSide&&(D.doubleSided=!0),x.name!==""&&(D.name=x.name),this.serializeUserData(x,D),this._invokeAll(function(ee){ee.writeMaterial&&ee.writeMaterial(x,D)});var K=B.materials.push(D)-1;return O.materials.set(x,K),K}processMesh(x){var O=this.cache,B=this.json,D=[x.geometry.uuid];if(Array.isArray(x.material))for(var k=0,U=x.material.length;k<U;k++)D.push(x.material[k].uuid);else D.push(x.material.uuid);var H=D.join(":");if(O.meshes.has(H))return O.meshes.get(H);var X,re=x.geometry;if(X=x.isLineSegments?h.LINES:x.isLineLoop?h.LINE_LOOP:x.isLine?h.LINE_STRIP:x.isPoints?h.POINTS:x.material.wireframe?h.LINES:h.TRIANGLES,re.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");var j={},G={},W=[],K=[],ee={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},q=re.getAttribute("normal");q===void 0||this.isNormalizedNormalAttribute(q)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),re.setAttribute("normal",this.createNormalizedNormalAttribute(q)));var ie=null;for(var Y in re.attributes)if(Y.substr(0,5)!=="morph"){var te=re.attributes[Y];Y=ee[Y]||Y.toUpperCase();var F=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;if(F.test(Y)||(Y="_"+Y),O.attributes.has(this.getUID(te))){G[Y]=O.attributes.get(this.getUID(te));continue}ie=null;var $=te.array;Y!=="JOINTS_0"||$ instanceof Uint16Array||$ instanceof Uint8Array||(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),ie=new c.BufferAttribute(new Uint16Array($),te.itemSize,te.normalized));var Q=this.processAccessor(ie||te,re);Q!==null&&(G[Y]=Q,O.attributes.set(this.getUID(te),Q))}if(q!==void 0&&re.setAttribute("normal",q),Object.keys(G).length===0)return null;if(x.morphTargetInfluences!==void 0&&0<x.morphTargetInfluences.length){var V=[],z=[],oe={};if(x.morphTargetDictionary!==void 0)for(var ae in x.morphTargetDictionary)oe[x.morphTargetDictionary[ae]]=ae;for(var le=0;le<x.morphTargetInfluences.length;++le){var fe={},be=!1;for(var ye in re.morphAttributes){if(ye!="position"&&ye!=="normal"&&ye!=="color"){be||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),be=!0);continue}var he=re.morphAttributes[ye][le],ve=ye.toUpperCase();ee[ye]&&(ve=ee[ye]);var se=re.attributes[ye];if(O.attributes.has(this.getUID(he))){fe[ve]=O.attributes.get(this.getUID(he));continue}var we=se.clone();if(!re.morphTargetsRelative)if(se)for(var pe=0,ge=he.count;pe<ge;pe++)se.count>pe&&we.setXYZ(pe,he.getX(pe)-se.getX(pe),he.getY(pe)-se.getY(pe),he.getZ(pe)-se.getZ(pe));else for(var Ee=0,He=he.count;Ee<He;Ee++)we.setXYZ(Ee,0,0,0);fe[ve]=this.processAccessor(we,re),O.attributes.set(this.getUID(se),fe[ve])}K.push(fe),V.push(x.morphTargetInfluences[le]),x.morphTargetDictionary!==void 0&&z.push(oe[le])}j.weights=V,0<z.length&&(j.extras={},j.extras.targetNames=z)}var tt=Array.isArray(x.material);if(tt&&re.groups.length===0)return null;for(var Ie,ot=tt?x.material:[x.material],Le=tt?re.groups:[{materialIndex:0,start:void 0,count:void 0}],Ye=0,We=Le.length;Ye<We;Ye++){if(Ie={mode:X,attributes:G},this.serializeUserData(re,Ie),0<K.length&&(Ie.targets=K),re.index!==null){var it=this.getUID(re.index);(Le[Ye].start!==void 0||Le[Ye].count!==void 0)&&(it+=":"+Le[Ye].start+":"+Le[Ye].count),O.attributes.has(it)?Ie.indices=O.attributes.get(it):(Ie.indices=this.processAccessor(re.index,re,Le[Ye].start,Le[Ye].count),O.attributes.set(it,Ie.indices)),Ie.indices===null&&delete Ie.indices}var et=this.processMaterial(ot[Le[Ye].materialIndex]);et!==null&&(Ie.material=et),W.push(Ie)}j.primitives=W,B.meshes||(B.meshes=[]),this._invokeAll(function(pt){pt.writeMesh&&pt.writeMesh(x,j)});var Mt=B.meshes.push(j)-1;return O.meshes.set(H,Mt),Mt}processCamera(x){var O=this.json;O.cameras||(O.cameras=[]);var B=x.isOrthographicCamera,D={type:B?"orthographic":"perspective"};return B?D.orthographic={xmag:2*x.right,ymag:2*x.top,zfar:0>=x.far?.001:x.far,znear:0>x.near?0:x.near}:D.perspective={aspectRatio:x.aspect,yfov:c.MathUtils.degToRad(x.fov),zfar:0>=x.far?.001:x.far,znear:0>x.near?0:x.near},x.name!==""&&(D.name=x.type),O.cameras.push(D)-1}processAnimation(x,O){var B=this.json,D=this.nodeMap;B.animations||(B.animations=[]),x=f.Utils.mergeMorphTargetTracks(x.clone(),O);for(var k=x.tracks,U=[],H=[],X=0;X<k.length;++X){var re=k[X],j=c.PropertyBinding.parseTrackName(re.name),G=c.PropertyBinding.findNode(O,j.nodeName),W=y[j.propertyName];if(j.objectName==="bones"&&(G.isSkinnedMesh===!0?G=G.skeleton.getBoneByName(j.objectIndex):G=void 0),!G||!W)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',re.name),null;var K=1,ee=re.values.length/re.times.length;W===y.morphTargetInfluences&&(ee/=G.morphTargetInfluences.length);var q=void 0;re.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(q="CUBICSPLINE",ee/=3):re.getInterpolation()===c.InterpolateDiscrete?q="STEP":q="LINEAR",H.push({input:this.processAccessor(new c.BufferAttribute(re.times,K)),output:this.processAccessor(new c.BufferAttribute(re.values,ee)),interpolation:q}),U.push({sampler:H.length-1,target:{node:D.get(G),path:W}})}return B.animations.push({name:x.name||"clip_"+B.animations.length,samplers:H,channels:U}),B.animations.length-1}processSkin(x){var O=this.json,B=this.nodeMap,D=O.nodes[B.get(x)],k=x.skeleton;if(k===void 0)return null;var U=x.skeleton.bones[0];if(U===void 0)return null;for(var H=[],X=new Float32Array(16*k.bones.length),re=new c.Matrix4,j=0;j<k.bones.length;++j)H.push(B.get(k.bones[j])),re.copy(k.boneInverses[j]),re.multiply(x.bindMatrix).toArray(X,16*j);O.skins===void 0&&(O.skins=[]),O.skins.push({inverseBindMatrices:this.processAccessor(new c.BufferAttribute(X,16)),joints:H,skeleton:B.get(U)});var G=D.skin=O.skins.length-1;return G}processNode(x){var O=this.json,B=this.options,D=this.nodeMap;O.nodes||(O.nodes=[]);var k={};if(B.trs){var U=x.quaternion.toArray(),H=x.position.toArray(),X=x.scale.toArray();_(U,[0,0,0,1])||(k.rotation=U),_(H,[0,0,0])||(k.translation=H),_(X,[1,1,1])||(k.scale=X)}else x.matrixAutoUpdate&&x.updateMatrix(),S(x.matrix)===!1&&(k.matrix=x.matrix.elements);if(x.name!==""&&(k.name=x.name+""),this.serializeUserData(x,k),x.isMesh||x.isLine||x.isPoints){var re=this.processMesh(x);re!==null&&(k.mesh=re)}else x.isCamera&&(k.camera=this.processCamera(x));if(x.isSkinnedMesh&&this.skins.push(x),0<x.children.length){for(var j,G=[],W=0,K=x.children.length;W<K;W++)if(j=x.children[W],j.visible||B.onlyVisible===!1){var ee=this.processNode(j);ee!==null&&G.push(ee)}0<G.length&&(k.children=G)}this._invokeAll(function(ie){ie.writeNode&&ie.writeNode(x,k)});var q=O.nodes.push(k)-1;return D.set(x,q),q}processScene(x){var O=this.json,B=this.options;O.scenes||(O.scenes=[],O.scene=0);var D={};x.name!==""&&(D.name=x.name),O.scenes.push(D);for(var k,U=[],H=0,X=x.children.length;H<X;H++)if(k=x.children[H],k.visible||B.onlyVisible===!1){var re=this.processNode(k);re!==null&&U.push(re)}0<U.length&&(D.nodes=U),this.serializeUserData(x,D)}processObjects(x){var O=new c.Scene;O.name="AuxScene";for(var B=0;B<x.length;B++)O.children.push(x[B]);this.processScene(O)}processInput(x){var O=this.options;x=x instanceof Array?x:[x],this._invokeAll(function(H){H.beforeParse&&H.beforeParse(x)});for(var B=[],D=0;D<x.length;D++)x[D]instanceof c.Scene?this.processScene(x[D]):B.push(x[D]);0<B.length&&this.processObjects(B);for(var k=0;k<this.skins.length;++k)this.processSkin(this.skins[k]);for(var U=0;U<O.animations.length;++U)this.processAnimation(O.animations[U].clip,O.animations[U].mesh);this._invokeAll(function(H){H.afterParse&&H.afterParse(x)})}_invokeAll(x){for(var O=0,B=this.plugins.length;O<B;O++)x(this.plugins[O])}}class C{constructor(x){this.writer=x,this.name="KHR_lights_punctual"}writeNode(x,O){if(x.isLight){if(!x.isDirectionalLight&&!x.isPointLight&&!x.isSpotLight)return void console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",x);var B=this.writer,D=B.json,k=B.extensionsUsed,U={};x.name&&(U.name=x.name),U.color=x.color.toArray(),U.intensity=x.intensity,x.isDirectionalLight?U.type="directional":x.isPointLight?(U.type="point",0<x.distance&&(U.range=x.distance)):x.isSpotLight&&(U.type="spot",0<x.distance&&(U.range=x.distance),U.spot={},U.spot.innerConeAngle=-1*((x.penumbra-1)*x.angle),U.spot.outerConeAngle=x.angle),x.decay!==void 0&&x.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),x.target&&(x.target.parent!==x||x.target.position.x!==0||x.target.position.y!==0||x.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),k[this.name]||(D.extensions=D.extensions||{},D.extensions[this.name]={lights:[]},k[this.name]=!0);var H=D.extensions[this.name].lights;H.push(U),O.extensions=O.extensions||{},O.extensions[this.name]={light:H.length-1}}}}class R{constructor(x){this.writer=x,this.name="KHR_materials_unlit"}writeMaterial(x,O){if(x.isMeshBasicMaterial){var B=this.writer,D=B.extensionsUsed;O.extensions=O.extensions||{},O.extensions[this.name]={},D[this.name]=!0,O.pbrMetallicRoughness.metallicFactor=0,O.pbrMetallicRoughness.roughnessFactor=.9}}}class L{constructor(x){this.writer=x,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(x,O){if(x.isGLTFSpecularGlossinessMaterial){var B=this.writer,D=B.extensionsUsed,k={};O.pbrMetallicRoughness.baseColorFactor&&(k.diffuseFactor=O.pbrMetallicRoughness.baseColorFactor);var U=[1,1,1];if(x.specular.toArray(U,0),k.specularFactor=U,k.glossinessFactor=x.glossiness,O.pbrMetallicRoughness.baseColorTexture&&(k.diffuseTexture=O.pbrMetallicRoughness.baseColorTexture),x.specularMap){var H={index:B.processTexture(x.specularMap)};B.applyTextureTransform(H,x.specularMap),k.specularGlossinessTexture=H}O.extensions=O.extensions||{},O.extensions[this.name]=k,D[this.name]=!0}}}f.Utils={insertKeyframe:function(x,O){var B,D=.001,k=x.getValueSize(),U=new x.TimeBufferType(x.times.length+1),H=new x.ValueBufferType(x.values.length+k),X=x.createInterpolant(new x.ValueBufferType(k));if(x.times.length===0){U[0]=O;for(var re=0;re<k;re++)H[re]=0;B=0}else if(O<x.times[0]){if(Math.abs(x.times[0]-O)<D)return 0;U[0]=O,U.set(x.times,1),H.set(X.evaluate(O),0),H.set(x.values,k),B=0}else if(O>x.times[x.times.length-1]){if(Math.abs(x.times[x.times.length-1]-O)<D)return x.times.length-1;U[U.length-1]=O,U.set(x.times,0),H.set(x.values,0),H.set(X.evaluate(O),x.values.length),B=U.length-1}else for(var j=0;j<x.times.length;j++){if(Math.abs(x.times[j]-O)<D)return j;if(x.times[j]<O&&x.times[j+1]>O){U.set(x.times.slice(0,j+1),0),U[j+1]=O,U.set(x.times.slice(j+1),j+2),H.set(x.values.slice(0,(j+1)*k),0),H.set(X.evaluate(O),(j+1)*k),H.set(x.values.slice((j+1)*k),(j+2)*k),B=j+1;break}}return x.times=U,x.values=H,B},mergeMorphTargetTracks:function(x,O){for(var B=[],D={},k=x.tracks,U=0;U<k.length;++U){var H=k[U],X=c.PropertyBinding.parseTrackName(H.name),re=c.PropertyBinding.findNode(O,X.nodeName);if(X.propertyName!=="morphTargetInfluences"||X.propertyIndex===void 0){B.push(H);continue}if(H.createInterpolant!==H.InterpolantFactoryMethodDiscrete&&H.createInterpolant!==H.InterpolantFactoryMethodLinear){if(H.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),H=H.clone(),H.setInterpolation(c.InterpolateLinear)}var j=re.morphTargetInfluences.length,G=re.morphTargetDictionary[X.propertyIndex];if(G===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+X.propertyIndex);var W=void 0;if(D[re.uuid]===void 0){W=H.clone();for(var K=new W.ValueBufferType(j*W.times.length),ee=0;ee<W.times.length;ee++)K[ee*j+G]=W.values[ee];W.name=(X.nodeName||"")+".morphTargetInfluences",W.values=K,D[re.uuid]=W,B.push(W);continue}var q=H.createInterpolant(new H.ValueBufferType(1));W=D[re.uuid];for(var ie=0;ie<W.times.length;ie++)W.values[ie*j+G]=q.evaluate(W.times[ie]);for(var Y,te=0;te<H.times.length;te++)Y=this.insertKeyframe(W,H.times[te]),W.values[Y*j+G]=H.values[te]}return x.tracks=B,x}}},(o,l,u)=>{var c=u(4),f=u(5).resolveURL,h=function(){this.nearPlane=.168248,this.farPlane=6.82906,this.eyePosition=[.5,-2.86496,.5],this.targetPosition=[.5,.5,.5],this.upVector=[0,0,1];var E=this;this.setFromObject=S=>{var{nearPlane:w,farPlane:A,eyePosition:I,targetPosition:T,upVector:P}=S;E.nearPlane=w,E.farPlane=A,E.eyePosition=I,E.targetPosition=T,E.upVector=P}},p=function(E,S,w,A){var I={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},T={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6,KEYBOARD_ZOOM:7,KEYBOARD_ROTATE:8,KEYBOARD_PAN:9},P={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},C={ARROWLEFT:37,ARROWUP:38,ARROWRIGHT:39,ARROWDOWN:40,NUMPADADD:107,NUMPADSUBTRACT:109,EQUAL:187,MINUS:189},R={};R.MAIN=T.ROTATE,R.AUXILIARY=T.ZOOM,R.SECONDARY=T.PAN,this.cameraObject=E,this.domElement=S===void 0?document:S,this.renderer=w,this.scene=A,this.tumble_rate=1.5,this.pointer_x=0,this.pointer_y=0,this.pointer_x_start=0,this.pointer_y_start=0,this.previous_pointer_x=0,this.previous_pointer_y=0,this.near_plane_fly_debt=0,this.touchZoomDistanceStart=0,this.touchZoomDistanceEnd=0,this.directionalLight=0,this.zoomRate=50,this.rotateRate=50,this.panRate=100,this.pixelHeight=1;var L=6e3,N=!0,x=0,O=void 0,B=void 0,D=!1,k=500,U=void 0,H="default",X=I.DEFAULT,re=void 0,j=void 0,G=void 0,W=0,K=P.FREE;this._state=T.NONE;var ee;this.targetTouchId=-1;var q=void 0,ie=new c.Vector3,Y=new c.Vector3,te=new c.Vector3,F=new c.Vector3,$=new c.Vector3,Q=new c.Vector3,V=new c.Vector3,z=new c.Vector3,oe=new c.Sphere,ae=new c.Vector3,le=!1,fe=void 0,be=0,ye={default:new h};ye.default.nearPlane=.1,ye.default.farPlane=2e3,ye.default.eyePosition=[0,0,0],ye.default.targetPosition=[0,0,-1],ye.default.upVector=[0,1,0],this.cameraObject.target===void 0&&(this.cameraObject.target=new c.Vector3(...ye.default.targetPosition)),this.calculateMaxAllowedDistance=ne=>{var Me=ne.getBoundingBox();if(Me){Me.getBoundingSphere(oe),be=6*oe.radius;var Ce=0;this.cameraObject&&(Ce=this.cameraObject.position.distanceTo(oe.center)),be=Ce>be?1.5*Ce:be}else be=0},this.addViewport=(ne,Me)=>{ne&&Me&&(ye[ne]=Me)},this.setDefaultViewport=ne=>!!(ne&&ne in ye)&&(H=ne,!0),this.getDefaultViewport=()=>H,this.getViewportOfName=ne=>ye[ne],this.setCurrentViewport=ne=>ne in ye&&(this.setCurrentCameraSettings(ye[ne]),!0),this.setRotationMode=ne=>{switch(ne){case"none":K=P.NONE;break;case"horizontal":K=P.HORIZONTAL;break;case"vertical":K=P.VERTICAL;break;case"free":default:K=P.FREE}},this.onResize=()=>{q&&(q=void 0),fe&&fe.setCurrentCameraSettings(this.cameraObject,ye[H])},this.getVisibleHeightAtZDepth=ne=>{var Me=this.cameraObject.position.distanceTo(this.cameraObject.target);ne<Me?ne-=Me:ne+=Me;var Ce=this.cameraObject.fov*Math.PI/180;return 2*Math.tan(Ce/2)*Math.abs(ne)},this.calculateHeightPerPixelAtZeroDepth=ne=>{var Me=this.getVisibleHeightAtZDepth(0);return this.pixelHeight=Me/ne,this.pixelHeight},this.getNDCFromDocumentCoords=(ne,Me,Ce)=>{Le(!1);var Be=Ce||new c.Vector2,Je=2*((ne-q.left)/q.width)-1,Z=2*-((Me-q.top)/q.height)+1;return Be.set(Je,Z)},this.getRelativeCoordsFromNDC=(ne,Me,Ce)=>{Le(!1);var Be=Ce||new c.Vector2;return Be.x=(ne+1)*q.width/2,Be.y=(1-Me)*q.height/2,Be},this.setMouseButtonAction=(ne,Me)=>{R[ne]=T[Me]};var he=(ne,Me)=>{ne instanceof HTMLCanvasElement&&(ne.tabIndex=Me)},ve=()=>{if(0<be){var ne=ae.distanceTo(oe.center);return be>ne||this.cameraObject.position.distanceTo(oe.center)>ne}return!0},se=ne=>{ae.copy(this.cameraObject.position).add(ne),ve()&&(this.cameraObject.target.add(ne),this.cameraObject.position.add(ne),this.updateDirectionalLight())},we=ne=>{Le(!1);var Me;if(X===I.DEFAULT&&(Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne)),!Me)ne.button==0?ne.ctrlKey?this._state=R.AUXILIARY:ne.shiftKey?this._state=R.SECONDARY:this._state=R.MAIN:ne.button==1?(ne.preventDefault(),this._state=R.AUXILIARY):ne.button==2&&(this._state=R.SECONDARY),this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y;else{X=I.MINIMAP;var Ce=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);se(Ce)}},pe=ne=>{if(Le(!1),q)if(this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,X===I.MINIMAP){var Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne);if(Me){var Ce=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);se(Ce)}}else this._state===T.NONE&&ee!==void 0&&ee.move(this,ne.clientX,ne.clientY,this.renderer)},ge=ne=>{this._state=T.NONE,X==I.MINIMAP&&(X=I.DEFAULT),ee!==void 0&&this.pointer_x_start==ne.clientX-q.left&&this.pointer_y_start==ne.clientY-q.top&&ee.pick(this,ne.clientX,ne.clientY,this.renderer)},Ee=ne=>{this._state=T.NONE},He=ne=>{Le(!1);var Me=ne.touches.length;if(Me==1){var Ce,Be;this._state=T.TOUCH_ROTATE,this.pointer_x=ne.touches[0].clientX-((Ce=q)===null||Ce===void 0?void 0:Ce.left),this.pointer_y=ne.touches[0].clientY-((Be=q)===null||Be===void 0?void 0:Be.top),this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y}else if(Me==2){this._state=T.TOUCH_ZOOM;var Je=ne.touches[0].clientX-ne.touches[1].clientX,Z=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=this.touchZoomDistanceStart=Math.sqrt(Je*Je+Z*Z)}else if(Me==3){var de,ce;this._state=T.TOUCH_PAN,this.targetTouchId=ne.touches[0].identifier,this.pointer_x=ne.touches[0].clientX-((de=q)===null||de===void 0?void 0:de.left),this.pointer_y=ne.touches[0].clientY-((ce=q)===null||ce===void 0?void 0:ce.top),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y}},tt=ne=>{ne.preventDefault(),ne.stopPropagation();var Me=ne.touches.length;if(Me==1)this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top;else if(Me==2){if(this._state===T.TOUCH_ZOOM){var Ce=ne.touches[0].clientX-ne.touches[1].clientX,Be=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=Math.sqrt(Ce*Ce+Be*Be)}}else if(Me==3&&this._state===T.TOUCH_PAN)for(var Je=0;3>Je;Je++)ne.touches[Je].identifier==this.targetTouchId&&(this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top)},Ie=ne=>{var Me=ne.touches.length;this.touchZoomDistanceStart=this.touchZoomDistanceEnd=0,this.targetTouchId=-1,this._state=T.NONE,Me==1&&ee!==void 0&&this.pointer_x_start==ne.touches[0].clientX-q.left&&this.pointer_y_start==ne.touches[0].clientY-q.top&&ee.pick(this.cameraObject,ne.touches[0].clientX,ne.touches[0].clientY,this.renderer)},ot=()=>{Le(!0)},Le=ne=>{if(ne||q===void 0){var Me=new IntersectionObserver(Ce=>{for(var Be of Ce)q=Be.boundingClientRect;Me.disconnect()});Me.observe(this.domElement)}},Ye=ne=>{Le(!1),this._state=T.SCROLL;var Me=0;0<ne.deltaY?Me=this.zoomRate:0>ne.deltaY&&(Me=-1*this.zoomRate),W+=Me,ne.preventDefault(),ne.stopImmediatePropagation()},We=ne=>{Le(!1);var Me=0;if(ne.keyCode===C.EQUAL||ne.keyCode===C.MINUS||ne.keyCode===C.NUMPADADD||ne.keyCode===C.NUMPADSUBTRACT){this._state=T.KEYBOARD_ZOOM;var Ce=1;ne.shiftKey&&(Ce*=2),ne.keyCode===C.EQUAL||ne.keyCode===C.NUMPADADD?Me=-1*(this.zoomRate*Ce):(ne.keyCode===C.MINUS||ne.keyCode===C.NUMPADSUBTRACT)&&(Me=this.zoomRate*Ce),W+=Me}else(ne.keyCode===C.ARROWLEFT||ne.keyCode===C.ARROWUP||ne.keyCode===C.ARROWRIGHT||ne.keyCode===C.ARROWDOWN)&&(ne.shiftKey?(this._state=T.KEYBOARD_ROTATE,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,Me=this.rotateRate):(this._state=T.KEYBOARD_PAN,Me=this.panRate),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,ne.keyCode===C.ARROWLEFT?this.pointer_x-=Me:ne.keyCode===C.ARROWUP?this.pointer_y-=Me:ne.keyCode===C.ARROWRIGHT?this.pointer_x+=Me:ne.keyCode===C.ARROWDOWN&&(this.pointer_y+=Me));ne.preventDefault()},it=ne=>{this._state=T.NONE},et=()=>{if(typeof this.cameraObject<"u"){var ne=q.height,Me=this.cameraObject.position.distanceTo(this.cameraObject.target),Ce=0;this.cameraObject.far>this.cameraObject.near&&Me>=this.cameraObject.near&&Me<=this.cameraObject.far&&(Ce=(Me-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),Y.set(this.previous_pointer_x,ne-this.previous_pointer_y,0),te.set(this.previous_pointer_x,ne-this.previous_pointer_y,1),F.set(this.pointer_x,ne-this.pointer_y,0),$.set(this.pointer_x,ne-this.pointer_y,1),Y.unproject(this.cameraObject),te.unproject(this.cameraObject),F.unproject(this.cameraObject),$.unproject(this.cameraObject);var Be=-.002;F.sub(Y).multiplyScalar(1-Ce),$.sub(te).multiplyScalar(Ce),F.add($).multiplyScalar(Be),se(F)}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y};this.getVectorsFromRotateAboutLookAtPoints=(ne,Me)=>{ne.normalize(),V.copy(this.cameraObject.position).sub(this.cameraObject.target),z.copy(V),V.normalize(),.8<Math.abs(V.dot(ne))&&V.copy(this.cameraObject.up),Y.crossVectors(ne,V).normalize(),te.crossVectors(ne,Y);var Ce=ne.dot(z),Be=Y.dot(z),Je=te.dot(z),Z=ne.dot(this.cameraObject.up),de=Y.dot(this.cameraObject.up),ce=te.dot(this.cameraObject.up),me=Math.cos(Me),Se=Math.sin(Me);return F.set(me*Y.x+Se*te.x,me*Y.y+Se*te.y,me*Y.z+Se*te.z),$.set(me*te.x-Se*Y.x,me*te.y-Se*Y.y,me*te.z-Se*Y.z),V.copy(this.cameraObject.target),V.x=V.x+ne.x*Ce+F.x*Be+$.x*Je,V.y=V.y+ne.y*Ce+F.y*Be+$.y*Je,V.z=V.z+ne.z*Ce+F.z*Be+$.z*Je,ie.set(ne.x*Z+F.x*de+$.x*ce,ne.y*Z+F.y*de+$.y*ce,ne.z*Z+F.z*de+$.z*ce),{position:V,up:ie}},this.rotateAboutLookAtpoint=(ne,Me)=>{var Ce=this.getVectorsFromRotateAboutLookAtPoints(ne,Me);this.cameraObject.position.copy(Ce.position),this.updateDirectionalLight(),this.cameraObject.up.copy(Ce.up)};var Mt=()=>{if(typeof this.cameraObject<"u"){var ne,Me,Ce=(ne=q)===null||ne===void 0?void 0:ne.width,Be=(Me=q)===null||Me===void 0?void 0:Me.height;if(0<Ce&&0<Be){var Je=.25*(Ce+Be),Z=0,de=0;(K===P.FREE||K===P.HORIZONTAL)&&(Z=this.pointer_x-this.previous_pointer_x),(K===P.FREE||K===P.VERTICAL)&&(de=this.previous_pointer_y-this.pointer_y);var ce=Math.sqrt(Z*Z+de*de);if(0<ce){var me=1*-de/ce,Se=1*Z/ce,ue=0;K===P.FREE&&me*(this.pointer_x-.5*(Ce-1))+Se*(.5*(Be-1)-this.pointer_y);var xe=Math.acos(ue/Je)-.5*Math.PI,Te=this.tumble_rate*ce/Je;ie.copy(this.cameraObject.position).sub(this.cameraObject.target).normalize(),Y.copy(this.cameraObject.up).normalize(),te.copy(Y).cross(ie).normalize().multiplyScalar(me),Y.multiplyScalar(Se),Q.addVectors(te,Y).multiplyScalar(Math.cos(xe)),ie.multiplyScalar(Math.sin(xe)),Q.add(ie),this.rotateAboutLookAtpoint(Q,-Te)}}}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y},pt=()=>{var ne=0;return this._state===T.ZOOM?ne=this.previous_pointer_y-this.pointer_y:this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM?ne=W:(ne=-1*(this.touchZoomDistanceEnd-this.touchZoomDistanceStart),this.touchZoomDistanceStart=this.touchZoomDistanceEnd),ne};this.changeZoomByScrollRateUnit=ne=>{var Me=ne*this.zoomRate;this.changeZoomByValue(Me)},this.changeZoomByValue=ne=>{if(typeof this.cameraObject<"u"){var Me=q.height,Ce=this.cameraObject.position.clone();Ce.sub(this.cameraObject.target);var Be=Ce.length(),Je=1.5*ne/Me;if(.01<Be+Je*Be&&(Ce.normalize(),ae.copy(this.cameraObject.position),ae.x+=Ce.x*Je*Be,ae.y+=Ce.y*Je*Be,ae.z+=Ce.z*Je*Be,ve())){this.cameraObject.position.copy(ae),this.updateDirectionalLight();var Z=1e-5;if(Z*this.cameraObject.far<this.cameraObject.near+Je*Be+this.near_plane_fly_debt)this.near_plane_fly_debt!=0&&(this.near_plane_fly_debt+=Je*Be,0<this.near_plane_fly_debt?(this.cameraObject.near+=this.near_plane_fly_debt,this.cameraObject.far+=this.near_plane_fly_debt,this.near_plane_fly_debt=0):(this.cameraObject.near+=Je*Be,this.cameraObject.far+=Je*Be));else{if(this.near_plane_fly_debt==0){var de=this.cameraObject.near-Z*this.cameraObject.far;this.cameraObject.near=Z*this.cameraObject.far,this.cameraObject.far-=de,this.near_plane_fly_debt-=Z*this.cameraObject.far}this.near_plane_fly_debt+=Je*Be}le=!0}}};var hn=()=>{var ne=pt();this.changeZoomByValue(ne),this._state===T.ZOOM&&(this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y),(this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(W=0,this._state=T.NONE)};this.setDirectionalLight=ne=>{this.directionalLight=ne},this.updateDirectionalLight=()=>{this.directionalLight!=0&&this.directionalLight.position.set(this.cameraObject.position.x,this.cameraObject.position.y,this.cameraObject.position.z)},this.enable=function(){N=!0,this.domElement&&this.domElement.addEventListener&&(he(this.domElement,0),this.domElement.addEventListener("mousedown",we,!1),this.domElement.addEventListener("mousemove",pe,!1),this.domElement.addEventListener("mouseup",ge,!1),this.domElement.addEventListener("mouseleave",Ee,!1),this.domElement.addEventListener("touchstart",He,!1),this.domElement.addEventListener("touchmove",tt,!1),this.domElement.addEventListener("touchend",Ie,!1),this.domElement.addEventListener("wheel",Ye,!1),this.domElement.addEventListener("mouseenter",ot,!1),this.domElement.addEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.addEventListener("keydown",We,!1),this.domElement.addEventListener("keyup",it,!1))},this.disable=function(){N=!1,this.domElement&&this.domElement.removeEventListener&&(this.domElement.removeEventListener("mousedown",we,!1),this.domElement.removeEventListener("mousemove",pe,!1),this.domElement.removeEventListener("mouseup",ge,!1),this.domElement.removeEventListener("mouseleave",Ee,!1),this.domElement.removeEventListener("touchstart",He,!1),this.domElement.removeEventListener("touchmove",tt,!1),this.domElement.removeEventListener("touchend",Ie,!1),this.domElement.removeEventListener("wheel",Ye,!1),this.domElement.removeEventListener("mouseenter",ot,!1),this.domElement.removeEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.removeEventListener("keydown",We,!1),this.domElement.removeEventListener("keyup",it,!1),he(this.domElement,-1))},this.loadPath=ne=>{O=ne.CameraPath,B=ne.NumberOfPoints},this.loadPathURL=(ne,Me)=>{var Ce=new XMLHttpRequest;Ce.onreadystatechange=()=>{if(Ce.readyState==4&&Ce.status==200){var Je=JSON.parse(Ce.responseText);this.loadPath(Je),Me!=null&&typeof Me=="function"&&Me()}};var Be=f(ne);Ce.open("GET",Be,!0),Ce.send()},this.setPathDuration=ne=>{L=ne,re&&re.setDuration(L),j&&j.setDuration(L)},this.getPlayRate=()=>k,this.setPlayRate=ne=>{k=ne};var Mn=ne=>{var Me=x+ne;Me>L&&(Me-=L),x=Me};this.getTime=()=>x,this.setTime=ne=>{x=ne>L?L:0>ne?0:ne},this.getNumberOfTimeFrame=()=>B,this.getCurrentTimeFrame=()=>{if(2<B){var ne=x/L*(B-1),Me=Math.floor(ne),Ce=1-(ne-Me),Be=Math.ceil(ne);return Me==Be?Me==B-1?[Me-1,Be,0]:[Me,Be+1,1]:[Me,Be,Ce]}return B==1?[0,0,0]:void 0},this.setCurrentTimeFrame=ne=>{2<B&&(x=L*ne/(B-1),0>x&&(x=0),x>L&&(x=L))};var jn=ne=>{if(X===I.PATH&&(Mn(ne),O)){for(var Me=this.getCurrentTimeFrame(),Ce=Me[0],Be=Me[1],Je=Me[2],Z=[O[3*Ce],O[3*Ce+1],O[3*Ce+2]],de=[O[3*Be],O[3*Be+1],O[3*Be+2]],ce=[],me=0;me<Z.length;me++)ce.push(Je*Z[me]+(1-Je)*de[me]);this.cameraObject.position.set(ce[0],ce[1],ce[2]),this.cameraObject.target.set(de[0],de[1],de[2]),U&&this.cameraObject.lookAt(this.cameraObject.target),D&&(this.directionalLight.position.set(ce[0],ce[1],ce[2]),this.directionalLight.target.position.set(de[0],de[1],de[2]))}};this.calculatePathNow=()=>{jn(0)};var us=()=>{this._state===T.ROTATE||this._state===T.TOUCH_ROTATE||this._state===T.KEYBOARD_ROTATE?Mt():this._state===T.PAN||this._state===T.TOUCH_PAN||this._state===T.KEYBOARD_PAN?(et(),fe.triggerCallback()):(this._state===T.ZOOM||this._state===T.TOUCH_ZOOM||this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(fe.zoom(pt()),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,(this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&(this._state=T.NONE),W=0,fe.triggerCallback())};this.update=ne=>{var Me=ne*k,Ce=N,Be=!0;return X===I.PATH?jn(Me):X===I.SMOOTH_CAMERA_TRANSITION&&re?(re.update(Me),re.isTransitionCompleted()&&(X=I.DEFAULT),Ce=!1):X===I.ROTATE_CAMERA_TRANSITION&&j?(j.update(Me),j.isTransitionCompleted()&&(X=I.DEFAULT),Ce=!1):X===I.AUTO_TUMBLE&&G?G.update(Me):X===I.SYNC_CONTROL&&fe?(us(),Ce=!1):Be=!1,Ce&&(this._state!==T.NONE&&(Be=!0),this._state===T.ROTATE||this._state===T.TOUCH_ROTATE||this._state===T.KEYBOARD_ROTATE?Mt():this._state===T.PAN||this._state===T.TOUCH_PAN||this._state===T.KEYBOARD_PAN?et():(this._state===T.ZOOM||this._state===T.TOUCH_ZOOM||this._state===T.SCROLL||this._state===T.KEYBOARD_ZOOM)&&hn(),this._state!==T.NONE&&X===I.AUTO_TUMBLE&&G&&G.stopOnCameraInput,this._state===T.SCROLL&&(this._state=T.NONE)),U?(Be=!0,U.update()):this.cameraObject.lookAt(this.cameraObject.target),Be=Be||le,le=!1,Be},this.playPath=()=>{X=I.PATH},this.stopPath=()=>{X=I.DEFAULT},this.isPlayingPath=()=>X===I.PATH,this.enableDirectionalLightUpdateWithPath=ne=>{D=ne},this.enableDeviceOrientation=()=>{U||(U=new M(this.cameraObject))},this.disableDeviceOrientation=()=>{U&&(U.dispose(),U=void 0)},this.isDeviceOrientationEnabled=()=>!!U,this.resetView=()=>{var ne=ye[H];this.cameraObject.near=ne.nearPlane,this.cameraObject.far=ne.farPlane,this.cameraObject.position.set(ne.eyePosition[0],ne.eyePosition[1],ne.eyePosition[2]),this.cameraObject.target.set(ne.targetPosition[0],ne.targetPosition[1],ne.targetPosition[2]),this.cameraObject.up.set(ne.upVector[0],ne.upVector[1],ne.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.setCurrentCameraSettings=ne=>{ne.nearPlane&&(this.cameraObject.near=ne.nearPlane),ne.farPlane&&(this.cameraObject.far=ne.farPlane),ne.eyePosition&&this.cameraObject.position.set(ne.eyePosition[0],ne.eyePosition[1],ne.eyePosition[2]),ne.targetPosition&&this.cameraObject.target.set(ne.targetPosition[0],ne.targetPosition[1],ne.targetPosition[2]),ne.upVector&&this.cameraObject.up.set(ne.upVector[0],ne.upVector[1],ne.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight(),le=!0},this.getViewportFromCentreAndRadius=(ne,Me,Ce,Be,Je,Z)=>{var de=this.cameraObject.position.x-this.cameraObject.target.x,ce=this.cameraObject.position.y-this.cameraObject.target.y,me=this.cameraObject.position.z-this.cameraObject.target.z,Se=1/Math.sqrt(de*de+ce*ce+me*me);de*=Se,ce*=Se,me*=Se;var ue=[ne,Me,Ce],xe=Be/Math.tan(Je*Math.PI/360),Te=[ne+de*xe,Me+ce*xe,Ce+me*xe],Pe=xe+Z,Ne=0,ze=.95;Ne=Z>ze*xe?(1-ze)*xe:xe-Z;var Fe=new h;return Fe.nearPlane=Ne,Fe.farPlane=Pe,Fe.eyePosition=Te,Fe.targetPosition=ue,Fe.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],Fe},this.getViewportFromBoundingBox=(ne,Me)=>{var Ce=ne.min.distanceTo(ne.max)/2*Me,Be=(ne.min.x+ne.max.x)/2,Je=(ne.min.y+ne.max.y)/2,Z=(ne.min.z+ne.max.z)/2,de=4,ce=this.getViewportFromCentreAndRadius(Be,Je,Z,Ce,40,Ce*de);return ce},this.getCurrentViewport=()=>{var ne=new h;return ne.nearPlane=this.cameraObject.near,ne.farPlane=this.cameraObject.far,ne.eyePosition[0]=this.cameraObject.position.x,ne.eyePosition[1]=this.cameraObject.position.y,ne.eyePosition[2]=this.cameraObject.position.z,ne.targetPosition[0]=this.cameraObject.target.x,ne.targetPosition[1]=this.cameraObject.target.y,ne.targetPosition[2]=this.cameraObject.target.z,ne.upVector[0]=this.cameraObject.up.x,ne.upVector[1]=this.cameraObject.up.y,ne.upVector[2]=this.cameraObject.up.z,ne},this.getDefaultEyePosition=()=>eyePosition,this.getDefaultTargetPosition=()=>targetPosition,this.cameraTransition=(ne,Me,Ce)=>{j==null&&(re=new y(ne,Me,this,Ce))},this.rotateCameraTransition=(ne,Me,Ce)=>{re==null&&(j=new m(ne,Me,this,Ce))},this.enableCameraTransition=()=>{re&&(X=I.SMOOTH_CAMERA_TRANSITION),j&&(X=I.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{X=I.DEFAULT},this.stopCameraTransition=()=>{X=I.DEFAULT,re=void 0,j=void 0},this.isTransitioningCamera=()=>X===I.SMOOTH_CAMERA_TRANSITION||X===I.ROTATE_CAMERA_TRANSITION,this.autoTumble=(ne,Me,Ce)=>{G=new b(ne,Me,Ce,this)},this.enableAutoTumble=()=>{X=I.AUTO_TUMBLE},this.stopAutoTumble=()=>{X=I.DEFAULT,G=void 0},this.updateAutoTumble=()=>{G&&(G.requireUpdate=!0)},this.isAutoTumble=()=>X===I.AUTO_TUMBLE,this.enableRaycaster=(ne,Me,Ce)=>{ee==null&&(ee=new d(ne,this.scene,Me,Ce,this.renderer))},this.disableRaycaster=()=>{ee.disable(),ee=void 0},this.isSyncControl=()=>currentMpde===I.SYNC_CONTROL,this.enableSyncControl=()=>(X=I.SYNC_CONTROL,fe||(fe=new _),fe.setCurrentCameraSettings(this.cameraObject,ye[H]),fe),this.disableSyncControl=()=>{X=I.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},y=function(S,w,A,I){var T=S.eyePosition,P=S.targetPosition,C=S.upVector,R=w.eyePosition,L=w.targetPosition,N=w.upVector,x=A,O=I,B=0,D=!1;x.near=Math.min(S.nearPlane,w.nearPlane),x.far=Math.max(S.farPlane,w.farPlane),x.cameraObject.up.set(w.upVector[0],w.upVector[1],w.upVector[2]),this.setDuration=H=>{O=H};var k=H=>{var X=B+H;X>O&&(X=O),B=X},U=()=>{var H=B/O,X=[T[0]*(1-H)+R[0]*H,T[1]*(1-H)+R[1]*H,T[2]*(1-H)+R[2]*H],re=[P[0]*(1-H)+L[0]*H,P[1]*(1-H)+L[1]*H,P[2]*(1-H)+L[2]*H];C[0]*(1-H)+N[0]*H,C[1]*(1-H)+N[1]*H,C[2]*(1-H)+N[2]*H,x.cameraObject.position.set(X[0],X[1],X[2]),x.cameraObject.target.set(re[0],re[1],re[2])};this.update=H=>{this.enabled===!1||(k(H),U(),B==O&&(D=!0))},this.isTransitionCompleted=()=>D},m=function(S,w,A,I){var T=S,P=w,C=A,R=I,L=0,N=!1;this.setDuration=O=>{R=O};var x=O=>{var B=L,D=L+O;D>R&&(D=R),L=D;var k=L-B,U=k/R,H=U*P;C.rotateAboutLookAtpoint(T,H)};this.update=O=>{this.enabled===!1||(x(O),L==R&&(N=!0))},this.isTransitionCompleted=()=>N},d=function(S,w,A,I,T){var P=S,C=w,R=T,L=A,N=I,x=new c.Raycaster;x.params.Line.threshold=.1,x.params.Points.threshold=1;var O=new c.Vector2,B=!1,D=new Date,k=!1,U=0,H=[],X={zincCamera:void 0,x:-1,y:-1},re=void 0;this.enable=()=>{enable=!0},this.disable=()=>{enable=!1},this.getIntersectsObject=W=>{if(C!==P){var K=P.getThreeJSScene();R.render(K,W.cameraObject)}var ee=re||P.getPickableThreeJSObjects();return H.length=0,x.intersectObjects(ee,!0,H)},this.setPickableObjects=W=>{W===void 0?re=void 0:(re=[],W.forEach(K=>{K.getGroup()&&K.getGroup().visible&&re.push(K.getGroup())}))},this.getIntersectsObjectWithOrigin=(W,K,ee)=>(x.set(K,ee),this.getIntersectsObject(W)),this.getIntersectsObjectWithCamera=(W,K,ee)=>(W.getNDCFromDocumentCoords(K,ee,O),x.setFromCamera(O,W.cameraObject),this.getIntersectsObject(W)),this.pick=(W,K,ee)=>{if(R&&P&&W&&L){this.getIntersectsObjectWithCamera(W,K,ee);for(var q,ie=H.length,Y=0;Y<ie;Y++)if(q=H[Y].object?H[Y].object.userData:void 0,q&&q.isMarkerCluster&&q.visible&&q.clusterIsVisible(H[Y].object.clusterIndex)&&q.zoomToCluster(H[Y].object.clusterIndex))return;L(H,K,ee)}};var j=(W,K,ee)=>{if(R&&P&&W&&N){if(this.getIntersectsObjectWithCamera(W,K,ee),D.setTime(Date.now()),H.length===0){if(k)return;k=!0}else k=!1;N(H,K,ee)}};this.move=(W,K,ee)=>{R&&P&&W&&N&&(P.displayMarkers?j(W,K,ee):(X.zincCamera=W,X.x=K,X.y=ee,!B&&(U=D?Date.now()-D.getTime():250,250<=U?j(W,K,ee):(B=!0,setTimeout(G(X),U)))))};var G=W=>function(){B=!1,j(W.zincCamera,W.x,W.y)}},b=function(S,w,A,I){var T=new c.Vector3,P=-w,C=I,R=S;this.stopOnCameraInput=A,this.requireUpdate=!0;var L=new c.Vector3,N=new c.Vector3,x=O=>{var B=Math.sqrt(O[0]*O[0]+O[1]*O[1]),D=4*Math.abs(O[0]),k=4*Math.abs(O[1]),U=.25*(D+k),H=-O[1]/B,X=O[0]/B,re=H*O[0]+X*-O[1];re>U?re=U:re<-U&&(re=-U);var j=Math.acos(re/U)-.5*Math.PI;T.copy(C.cameraObject.position).sub(C.cameraObject.target).normalize(),L.copy(C.cameraObject.up).normalize(),N.crossVectors(L,T).normalize().multiplyScalar(H),L.multiplyScalar(X),L.add(N).multiplyScalar(Math.cos(j)),T.multiplyScalar(Math.sin(j)).add(L)};this.update=O=>{this.enabled===!1||(this.requireUpdate&&(x(R),this.requireUpdate=!1),C.rotateAboutLookAtpoint(T,P*O/1e3))}},v=function(){this.type="StereoCamera",this.aspect=1,this.cameraL=new c.PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new c.PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1};Object.assign(v.prototype,{update:(()=>{var E,S,w,A,I,T,P=new c.Matrix4,C=new c.Matrix4;return function(L){var N=E!==L.focus||S!==L.fov||w!==L.aspect*this.aspect||A!==L.near||I!==L.far||T!==L.zoom;if(N){E=L.focus,S=L.fov,w=L.aspect*this.aspect,A=L.near,I=L.far,T=L.zoom;var x,O,B=L.projectionMatrix.clone(),D=.064/2,k=D*A/E,U=A*Math.tan(.5*(c.Math.DEG2RAD*S))/L.zoom;C.elements[12]=-D,P.elements[12]=D,x=-U*w+k,O=U*w+k,B.elements[0]=2*A/(O-x),B.elements[8]=(O+x)/(O-x),this.cameraL.projectionMatrix.copy(B),x=-U*w-k,O=U*w-k,B.elements[0]=2*A/(O-x),B.elements[8]=(O+x)/(O-x),this.cameraR.projectionMatrix.copy(B)}this.cameraL.matrixWorld.copy(L.matrixWorld).multiply(C),this.cameraR.matrixWorld.copy(L.matrixWorld).multiply(P)}})()});var g=function(S){var w=new v;w.aspect=.5,this.setSize=(A,I)=>{S.setSize(A,I)},this.render=(A,I)=>{A.updateMatrixWorld(),I.parent===null&&I.updateMatrixWorld(),w.update(I);var T=S.getSize();S.setScissorTest(!0),S.clear(),S.setScissor(0,0,T.width/2,T.height),S.setViewport(0,0,T.width/2,T.height),S.render(A,w.cameraL),S.setScissor(T.width/2,0,T.width/2,T.height),S.setViewport(T.width/2,0,T.width/2,T.height),S.render(A,w.cameraR),S.setScissorTest(!1)}},M=function(S){var w=this;this.object=S,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var A=P=>{w.deviceOrientation=P},I=()=>{typeof window<"u"&&(w.screenOrientation=window.orientation||0)},T=(()=>{var P=new c.Vector3(0,0,1),C=new c.Euler,R=new c.Quaternion,L=new c.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return(N,x,O,B,D)=>{var k=new c.Vector3(0,0,1);k.subVectors(N.target,N.position),C.set(O,x,-B,"YXZ");var U=new c.Quaternion;U.setFromEuler(C),U.multiply(L),U.multiply(R.setFromAxisAngle(P,-D)),k.applyQuaternion(U),k.addVectors(N.position,k),N.lookAt(k)}})();this.connect=()=>{I(),typeof window<"u"&&(window.addEventListener("orientationchange",I,!1),window.addEventListener("deviceorientation",A,!1)),w.enabled=!0},this.disconnect=()=>{typeof window<"u"&&(window.removeEventListener("orientationchange",I,!1),window.removeEventListener("deviceorientation",A,!1)),w.enabled=!1},this.update=()=>{if(w.enabled!==!1){var P=w.deviceOrientation.alpha?c.Math.degToRad(w.deviceOrientation.alpha):0,C=w.deviceOrientation.beta?c.Math.degToRad(w.deviceOrientation.beta):0,R=w.deviceOrientation.gamma?c.Math.degToRad(w.deviceOrientation.gamma):0,L=w.screenOrientation?c.Math.degToRad(w.screenOrientation):0;T(w.object,P,C,R,L)}},this.dispose=function(){this.disconnect()},this.connect()},_=function(){var S=void 0,w=void 0,A=void 0,I=new c.Vector3,T=new c.Vector3,P=new c.Vector3,C=new c.Vector3,R=void 0;this.setCurrentCameraSettings=(L,N)=>{S=L.clone(),w=L,A=N,S.near=A.nearPlane,A.farPlane&&(S.far=A.farPlane),A.eyePosition&&S.position.set(A.eyePosition[0],A.eyePosition[1],A.eyePosition[2]),A.upVector&&S.up.set(A.upVector[0],A.upVector[1],A.upVector[2]),A.targetPosition&&(S.target=new c.Vector3(A.targetPosition[0],A.targetPosition[1],A.targetPosition[2]),S.lookAt(S.target)),S.updateProjectionMatrix(),I.copy(S.position).project(S),T.copy(S.target).project(S)},this.getCurrentPosition=()=>(T.copy(w.target).project(S),[T.x,T.y]),this.zoom=L=>{var N=.002*L,x=Math.max(w.zoom-N,1);w.zoom=x,w.updateProjectionMatrix()},this.zoomToBox=(L,N)=>{L.getCenter(P),P.project(S),this.setCenterZoom([P.x,P.y],N)},this.getPanZoom=()=>({target:this.getCurrentPosition(),zoom:w.zoom}),this.setCenterZoom=(L,N)=>{P.set(L[0],L[1],T.z).unproject(S),C.copy(P).sub(w.target),w.target.copy(P),w.lookAt(w.target),w.position.add(C),w.zoom=N,w.updateProjectionMatrix()},this.setEventCallback=L=>{(L===void 0||typeof L=="function")&&(R=L)},this.triggerCallback=()=>{R!==void 0&&typeof R=="function"&&R()}};l.Viewport=h,l.CameraControls=p,l.SmoothCameraTransition=y,l.RotateCameraTransition=m,l.RayCaster=d,l.CameraAutoTumble=b,l.StereoEffect=g,l.NDCCameraControl=_},(o,l,u)=>{var{Group:c,Matrix4:f}=u(4),h=u(22).Pointset;u(24).Lines;var p=u(45).Lines2,y=u(3).Geometry,m=u(4),d=0,b=function(){return"re"+d++},v=function(g,M){var _=g,E=new c;E.matrixAutoUpdate=!1,E.userData=this;var S=[],w="",A=[],I=M,T=new f,P=3e3;T.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this.pickableUpdateRequired=!0,this.isRegion=!0,this.uuid=b(),this.hideAllPrimitives=()=>{S.forEach(C=>C.hideAllPrimitives()),A.forEach(C=>C.setVisibility(!1))},this.showAllPrimitives=()=>{S.forEach(C=>C.showAllPrimitives()),A.forEach(C=>C.setVisibility(!0))},this.setVisibility=C=>{C!=E.visible&&(E.visible=C,this.pickableUpdateRequired=!0)},this.getVisibility=()=>E.visible,this.getGroup=()=>E,this.setTransformation=C=>{T.set(...C),E.matrix.copy(T),E.updateMatrixWorld()},this.setName=C=>{C&&C!==""&&(w=C)},this.getName=()=>w,this.getParent=()=>_,this.getFullSeparatedPath=()=>{var C=[];if(w!==""){C.push(w);for(var R,L=_;L!==void 0;)R=L.getName(),R!==""&&C.unshift(R),L=L.getParent()}return C},this.getFullPath=()=>{var C=this.getFullSeparatedPath();if(0<C.length){var R=C.shift();return C.forEach(L=>{R=R.concat("/",L)}),R}return""},this.createChild=C=>{var R=new v(this,I);return R.setName(C),S.push(R),E.add(R.getGroup()),R},this.getChildWithName=C=>{if(C){for(var R=C.toLowerCase(),L=0;L<S.length;L++)if(S[L].getName().toLowerCase()===R)return S[L]}},this.findChildFromSeparatedPath=C=>{if(C&&0<C.length&&C[0]===""&&C.shift(),C&&0<C.length){var R=this.getChildWithName(C[0]);return R?(C.shift(),R.findChildFromSeparatedPath(C)):void 0}return this},this.findChildFromPath=C=>{var R=C.split("/");return this.findChildFromSeparatedPath(R)},this.createChildFromSeparatedPath=C=>{if(0<C.length&&C[0]===""&&C.shift(),0<C.length){var R=this.getChildWithName(C[0]);return R||(R=this.createChild(C[0])),C.shift(),R.createChildFromSeparatedPath(C)}return this},this.createChildFromPath=C=>{var R=C.split("/");return this.createChildFromSeparatedPath(R)},this.findOrCreateChildFromPath=C=>{var R=this.findChildFromPath(C);return R||(R=this.createChildFromPath(C)),R},this.addZincObject=C=>{C&&(C.setRegion(this),E.add(C.getGroup()),A.push(C),this.pickableUpdateRequired=!0,I&&I.triggerObjectAddedCallback(C))},this.removeZincObject=C=>{for(var R=0;R<A.length;R++)if(C===A[R])return E.remove(C.getGroup()),A.splice(R,1),I&&I.triggerObjectRemovedCallback(C),C.dispose(),void(this.pickableUpdateRequired=!0)},this.checkPickableUpdateRequred=C=>{if(this.pickableUpdateRequired)return!0;if(C){for(var R=!1,L=0;L<S.length;L++)if(R=S[L].checkPickableUpdateRequred(C),R)return!0}return!1},this.getPickableThreeJSObjects=(C,R)=>(E.visible&&(A.forEach(L=>{if(L.getGroup()&&L.getGroup().visible){var N=L.marker;N&&N.isEnabled()&&C.push(N.getMorph()),C.push(L.getGroup())}}),R&&S.forEach(L=>{L.getPickableThreeJSObjects(C,R)}),this.pickableUpdateRequired=!1),C),this.setDuration=C=>{P=C,A.forEach(R=>R.setDuration(C)),S.forEach(R=>R.setDuration(C))},this.getDuration=()=>P,this.getBoundingBox=C=>{var R,L;return A.forEach(N=>{L=N.getBoundingBox(),L&&(R==null?R=L.clone():R.union(L))}),C&&S.forEach(N=>{L=N.getBoundingBox(C),L&&(R==null?R=L.clone():R.union(L))}),R},this.clear=C=>{C&&S.forEach(R=>R.clear(C)),A.forEach(R=>{E.remove(R.getGroup()),R.dispose()}),S=[],A=[]},this.objectIsInRegion=(C,R)=>{for(var L=0;L<A.length;L++)if(C===A[L])return!0;if(R){for(var N=0;N<S.length;N++)if(S[N].objectIsInRegion(C,R))return!0}return!1},this.forEachGeometry=(C,R)=>{A.forEach(L=>{L.isGeometry&&C(L)}),R&&S.forEach(L=>L.forEachGeometry(C,R))},this.forEachGlyphset=(C,R)=>{A.forEach(L=>{L.isGlyphset&&C(L)}),R&&S.forEach(L=>L.forEachGlyphset(C,R))},this.forEachPointset=(C,R)=>{A.forEach(L=>{L.isPointset&&C(L)}),R&&S.forEach(L=>L.forEachPointset(C,R))},this.forEachLine=(C,R)=>{A.forEach(L=>{L.isLines&&C(L)}),R&&S.forEach(L=>L.forEachLine(C,R))},this.findObjectsWithAnatomicalId=(C,R)=>(A.forEach(L=>{L.anatomicalId===C&&objectsArray.push(L)}),R&&S.forEach(L=>{var N=L.findObjectsWithAnatomicalId(C,R);objectsArray.push(...N)}),objectsArray),this.findObjectsWithGroupName=(C,R)=>{var L=[];return A.forEach(N=>{var x=N.groupName?N.groupName.toLowerCase():N.groupName,O=C&&C.toLowerCase();x===O&&L.push(N)}),R&&S.forEach(N=>{var x=N.findObjectsWithGroupName(C,R);L.push(...x)}),L},this.findGeometriesWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isGeometry);return N},this.findPointsetsWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isPointset);return N},this.findGlyphsetsWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isGlyphset);return N},this.findLinesWithGroupName=(C,R)=>{var L=this.findObjectsWithGroupName(C,R),N=L.filter(x=>x.isLines);return N},this.getAllObjects=C=>{var R=[...A];return C&&S.forEach(L=>{var N=L.getAllObjects(C);R.push(...N)}),R},this.getChildRegions=C=>{var R=[...S];return C&&S.forEach(L=>{var N=L.getChildRegions(C);R.push(...N)}),R},this.getCurrentTime=()=>{if(A[0]!=null)return A[0].getCurrentTime();for(var C,R=0;R<S.length;R++)if(C=S[R].getCurrentTime(),C!==-1)return C;return-1},this.setMorphTime=(C,R)=>{A.forEach(L=>{L.setMorphTime(C)}),R&&S.forEach(L=>{L.setMorphTime(C)})},this.isTimeVarying=()=>{for(var C=0;C<A.length;C++)if(A[C].isTimeVarying())return!0;for(var R=0;R<S.length;R++)if(S[R].isTimeVarying())return!0;return!1},this.renderGeometries=(C,R,L,N,x,O)=>{var B,D=this.getAllObjects(O);D.forEach(k=>{k.render(C*R,L,N,x)}),x&&L===!1&&(B=x.markerCluster)!==null&&B!==void 0&&B.markerUpdateRequired&&x.markerCluster.calculate()},this.createPoints=(C,R,L,N)=>{var x=!1,O=this.findObjectsWithGroupName(C,!1),B=O.findIndex(k=>k.isPointset),D=-1<B?O[B]:new h;return D.addPoints(R,L,N),B===-1?(D.setName(C),this.addZincObject(D),x=!0):this.pickableUpdateRequired=!0,{zincObject:D,isNew:x}},this.createLines=(C,R,L)=>{var N=!1,x=this.findObjectsWithGroupName(C,!1),O=x.findIndex(D=>D.isLines),B=-1<O?x[O]:new p;return B.addLines(R,L),O===-1?(B.setName(C),this.addZincObject(B),N=!0):this.pickableUpdateRequired=!0,{zincObject:B,isNew:N}},this.createGeometryFromThreeJSGeometry=(C,R,L,N,x,O)=>{var B=new y,D=new m.MeshPhongMaterial({color:L,morphTargets:!1,morphNormals:!1,transparent:!0,opacity:N,side:m.DoubleSide});return B.createMesh(R,D,{localTimeEnabled:!1,localMorphColour:!1}),B.getMorph()?(B.setVisibility(!1),B.setName(C),B.setRenderOrder(O),this.addZincObject(B),B):void 0}};l.Region=v},(o,l,u)=>{u(4),u(5).toBufferGeometry;var c=u(46).LineSegments2,f=u(48).LineMaterial,h=u(47).LineSegmentsGeometry,p=function(){u(24).Lines.call(this),this.isLines2=!0;var y=Array(300);this.createLineSegment=(m,d,b)=>{if(m&&d){var v=new h;v.setPositions(m),v.colorsNeedUpdate=!0;var g=new c(v,d);g.scale.set(1,1,1),g.computeLineDistances(),this.setMesh(g,b.localTimeEnabled,b.localMorphColour)}},this.setWidth=m=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=m,this.morph.material.needsUpdate=!0)},this.addVertices=function(m){if(m&&m.length){var d=this.getMorph();d||(this.drawRange=0);var b=3*this.drawRange;if(m.forEach(v=>{y[b++]=v[0],y[b++]=v[1],y[b++]=v[2],this.drawRange++}),!d)for(;300>b;)y[b++]=m[0][0],y[b++]=m[0][1],y[b++]=m[0][2];d&&(d.geometry.setPositions(y),d.computeLineDistances(),this.boundingBoxUpdateRequired=!0)}return y},this.getVerticesByFaceIndex=function(m){var d=3*(2*m),b=this.getMorph();if(b&&3*this.drawRange>d){var v=b.geometry.getAttribute("instanceStart");return[[v.data.array[d],v.data.array[++d],v.data.array[++d]],[v.data.array[++d],v.data.array[++d],v.data.array[++d]]]}return[]},this.editVertices=function(m,d){if(m&&m.length){var b=this.getMorph(),v=d+m.length-1;if(!b||0>d||v>=this.drawRange)return;var g=3*d;for(m.forEach(M=>{y[g++]=M[0],y[g++]=M[1],y[g++]=M[2]}),g=3*this.drawRange;300>g;)y[g++]=m[0][0],y[g++]=m[0][1],y[g++]=m[0][2];b.geometry.setPositions(y),b.computeLineDistances(),this.boundingBoxUpdateRequired=!0}return y},this.addLines=(m,d)=>{if(m&&0<m.length){this.addVertices(m);var b=this.getMorph();if(!b){var v=new f({color:d,linewidth:1,vertexColors:!1,worldUnits:!1});v.resolution.set(window.innerWidth,window.innerHeight),this.createLineSegment(y,v,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}},this.render=()=>{var m=this.getMorph().material;m.resolution.set(window.innerWidth,window.innerHeight)}};p.prototype=Object.create(u(24).Lines.prototype),p.prototype.constructor=p,l.Lines2=p},(o,l,u)=>{u.r(l),u.d(l,{LineSegments2:()=>A});var c=u(4),f=u(47),h=u(48),p=new c.Vector3,y=new c.Vector3,m=new c.Vector4,d=new c.Vector4,b=new c.Vector4,v=new c.Vector3,g=new c.Matrix4,M=new c.Line3,_=new c.Vector3,E=new c.Box3,S=new c.Sphere,w=new c.Vector4;class A extends c.Mesh{constructor(){var T=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new f.LineSegmentsGeometry,P=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new h.LineMaterial({color:16777215*Math.random()});super(T,P),this.type="LineSegments2"}computeLineDistances(){for(var T=this.geometry,P=T.attributes.instanceStart,C=T.attributes.instanceEnd,R=new Float32Array(2*P.count),L=0,N=0,x=P.count;L<x;L++,N+=2)p.fromBufferAttribute(P,L),y.fromBufferAttribute(C,L),R[N]=N==0?0:R[N-1],R[N+1]=R[N]+p.distanceTo(y);var O=new c.InstancedInterleavedBuffer(R,2,1);return T.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(O,1,0)),T.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(O,1,1)),this}raycast(T,P){T.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var C=T.params.Line2===void 0?0:T.params.Line2.threshold||0,R=T.ray,L=T.camera,N=L.projectionMatrix,x=this.matrixWorld,O=this.geometry,B=this.material,D=B.resolution,k=B.linewidth+C,U=O.attributes.instanceStart,H=O.attributes.instanceEnd,X=-L.near,re=2*Math.max(k/D.width,k/D.height);O.boundingSphere===null&&O.computeBoundingSphere(),S.copy(O.boundingSphere).applyMatrix4(x);var j=Math.max(L.near,S.distanceToPoint(R.origin));w.set(0,0,-j,1).applyMatrix4(L.projectionMatrix),w.multiplyScalar(1/w.w),w.applyMatrix4(L.projectionMatrixInverse);var G=.5*Math.abs(re/w.w);if(S.radius+=G,T.ray.intersectsSphere(S)!==!1){O.boundingBox===null&&O.computeBoundingBox(),E.copy(O.boundingBox).applyMatrix4(x);var W=Math.max(L.near,E.distanceToPoint(R.origin));w.set(0,0,-W,1).applyMatrix4(L.projectionMatrix),w.multiplyScalar(1/w.w),w.applyMatrix4(L.projectionMatrixInverse);var K=.5*Math.abs(re/w.w);if(E.max.x+=K,E.max.y+=K,E.max.z+=K,E.min.x-=K,E.min.y-=K,E.min.z-=K,T.ray.intersectsBox(E)!==!1){R.at(1,b),b.w=1,b.applyMatrix4(L.matrixWorldInverse),b.applyMatrix4(N),b.multiplyScalar(1/b.w),b.x*=D.x/2,b.y*=D.y/2,b.z=0,v.copy(b),g.multiplyMatrices(L.matrixWorldInverse,x);for(var ee=0,q=U.count;ee<q;ee++){m.fromBufferAttribute(U,ee),d.fromBufferAttribute(H,ee),m.w=1,d.w=1,m.applyMatrix4(g),d.applyMatrix4(g);var ie=m.z>X&&d.z>X;if(!ie){if(m.z>X){var Y=m.z-d.z,te=(m.z-X)/Y;m.lerp(d,te)}else if(d.z>X){var F=d.z-m.z,$=(d.z-X)/F;d.lerp(m,$)}m.applyMatrix4(N),d.applyMatrix4(N),m.multiplyScalar(1/m.w),d.multiplyScalar(1/d.w),m.x*=D.x/2,m.y*=D.y/2,d.x*=D.x/2,d.y*=D.y/2,M.start.copy(m),M.start.z=0,M.end.copy(d),M.end.z=0;var Q=M.closestPointToPointParameter(v,!0);M.at(Q,_);var V=c.MathUtils.lerp(m.z,d.z,Q),z=-1<=V&&1>=V,oe=v.distanceTo(_)<.5*k;if(z&&oe){M.start.fromBufferAttribute(U,ee),M.end.fromBufferAttribute(H,ee),M.start.applyMatrix4(x),M.end.applyMatrix4(x);var ae=new c.Vector3,le=new c.Vector3;R.distanceSqToSegment(M.start,M.end,le,ae),P.push({point:le,pointOnLine:ae,distance:R.origin.distanceTo(le),object:this,face:null,faceIndex:ee,uv:null,uv2:null})}}}}}}}A.prototype.LineSegments2=!0},(o,l,u)=>{u.r(l),u.d(l,{LineSegmentsGeometry:()=>p});var c=u(4),f=new c.Box3,h=new c.Vector3;class p extends c.InstancedBufferGeometry{constructor(){super(),this.type="LineSegmentsGeometry",this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute("position",new c.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute("uv",new c.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(m){var d=this.attributes.instanceStart,b=this.attributes.instanceEnd;return d!==void 0&&(d.applyMatrix4(m),b.applyMatrix4(m),d.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(m){var d;m instanceof Float32Array?d=m:Array.isArray(m)&&(d=new Float32Array(m));var b=new c.InstancedInterleavedBuffer(d,6,1);return this.setAttribute("instanceStart",new c.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceEnd",new c.InterleavedBufferAttribute(b,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(m){var d;m instanceof Float32Array?d=m:Array.isArray(m)&&(d=new Float32Array(m));var b=new c.InstancedInterleavedBuffer(d,6,1);return this.setAttribute("instanceColorStart",new c.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceColorEnd",new c.InterleavedBufferAttribute(b,3,3)),this}fromWireframeGeometry(m){return this.setPositions(m.attributes.position.array),this}fromEdgesGeometry(m){return this.setPositions(m.attributes.position.array),this}fromMesh(m){return this.fromWireframeGeometry(new c.WireframeGeometry(m.geometry)),this}fromLineSegments(m){var d=m.geometry;return d.isGeometry?void console.error("THREE.LineSegmentsGeometry no longer supports Geometry. Use THREE.BufferGeometry instead."):(d.isBufferGeometry&&this.setPositions(d.attributes.position.array),this)}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);var m=this.attributes.instanceStart,d=this.attributes.instanceEnd;m!==void 0&&d!==void 0&&(this.boundingBox.setFromBufferAttribute(m),f.setFromBufferAttribute(d),this.boundingBox.union(f))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();var m=this.attributes.instanceStart,d=this.attributes.instanceEnd;if(m!==void 0&&d!==void 0){var b=this.boundingSphere.center;this.boundingBox.getCenter(b);for(var v=0,g=0,M=m.count;g<M;g++)h.fromBufferAttribute(m,g),v=Math.max(v,b.distanceToSquared(h)),h.fromBufferAttribute(d,g),v=Math.max(v,b.distanceToSquared(h));this.boundingSphere.radius=Math.sqrt(v),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(m){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(m)}}p.prototype.isLineSegmentsGeometry=!0},(o,l,u)=>{u.r(l),u.d(l,{LineMaterial:()=>f});var c=u(4);c.UniformsLib.line={linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1}},c.ShaderLib.line={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,c.UniformsLib.line]),vertexShader:`
3232
3232
  #include <common>
3233
3233
  #include <color_pars_vertex>
3234
3234
  #include <fog_pars_vertex>