@abi-software/scaffoldvuer 1.2.0 → 1.2.1

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.
@@ -33864,7 +33864,7 @@ const E4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
33864
33864
  /* 2 */
33865
33865
  /***/
33866
33866
  (o) => {
33867
- o.exports = /* @__PURE__ */ JSON.parse('{"name":"zincjs","version":"1.8.2","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"}}');
33867
+ o.exports = /* @__PURE__ */ JSON.parse('{"name":"zincjs","version":"1.8.3","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"}}');
33868
33868
  },
33869
33869
  /* 3 */
33870
33870
  /***/
@@ -36564,6 +36564,12 @@ void main() {
36564
36564
  }
36565
36565
  }, this.zoomToCluster = (M) => {
36566
36566
  M !== void 0 && -1 < M && (this._v1.set(...E[M].min), this._v2.set(...E[M].max), this._b1.set(this._v1, this._v2), _.translateBoundingBoxToCameraView(this._b1, 3, 300), this.markerUpdateRequired = !0);
36567
+ }, this.clusterIsVisible = (M) => {
36568
+ if (M !== void 0 && -1 < M && E[M]) {
36569
+ var T;
36570
+ return (T = E[M].group) === null || T === void 0 ? void 0 : T.visible;
36571
+ }
36572
+ return !1;
36567
36573
  };
36568
36574
  };
36569
36575
  S.prototype = Object.create(l(10).ZincObject.prototype), a.MarkerCluster = S;
@@ -38075,7 +38081,7 @@ void main() {
38075
38081
  }, this.onResize = () => {
38076
38082
  q && (q = void 0), ue && ue.setCurrentCameraSettings(this.cameraObject, ve[G]);
38077
38083
  }, this.getVisibleHeightAtZDepth = (ne) => {
38078
- var Re = this.cameraObject.position.z;
38084
+ var Re = this.cameraObject.position.distanceTo(this.cameraObject.target);
38079
38085
  ne < Re ? ne -= Re : ne += Re;
38080
38086
  var De = this.cameraObject.fov * Math.PI / 180;
38081
38087
  return 2 * Math.tan(De / 2) * Math.abs(ne);
@@ -38396,7 +38402,7 @@ void main() {
38396
38402
  if (I && L && W && R) {
38397
38403
  se(W, ee, q);
38398
38404
  for (var j, Y = H.length, K = 0; K < Y; K++)
38399
- if (j = H[K].object ? H[K].object.userData : void 0, j && j.isMarkerCluster && j.visible)
38405
+ if (j = H[K].object ? H[K].object.userData : void 0, j && j.isMarkerCluster && j.visible && j.clusterIsVisible(H[K].object.clusterIndex))
38400
38406
  return void j.zoomToCluster(H[K].object.clusterIndex);
38401
38407
  R(H, ee, q);
38402
38408
  }
@@ -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(c){for(const u in l)c.uniforms[u]=l[u];c.fragmentShader=c.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(c){l.specular.value=c}},specularMap:{get:function(){return l.specularMap.value},set:function(c){l.specularMap.value=c,c?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return l.glossiness.value},set:function(c){l.glossiness.value=c}},glossinessMap:{get:function(){return l.glossinessMap.value},set:function(c){l.glossinessMap.value=c,c?(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 OF{constructor(){this.name=st.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 Hf}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 Hf(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=sr,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 BF{constructor(){this.name=st.KHR_MESH_QUANTIZATION}}class ko extends ui{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}}ko.prototype.beforeStart_=ko.prototype.copySampleValue_,ko.prototype.afterEnd_=ko.prototype.copySampleValue_,ko.prototype.interpolate_=function(n,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=o*2,c=o*3,u=i-e,h=(t-e)/u,f=h*h,m=f*h,g=n*c,d=g-c,p=-2*m+3*f,b=m-f,y=1-p,v=b-f+h;for(let w=0;w!==o;w++){const E=s[d+w+o],_=s[d+w+l]*u,M=s[g+w+o],x=s[g+w]*u;r[w]=y*E+v*_+p*M+b*x}return r};const Hi={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},nl={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Kx={9728:Rt,9729:wt,9984:ma,9985:sc,9986:ga,9987:Ri},Jx={33071:$t,33648:Gs,10497:rr},qx={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Wf={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Sr={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},DF={CUBICSPLINE:void 0,LINEAR:Ur,STEP:js},jf={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Qx(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 kF(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new ts({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:tr})),n.DefaultMaterial}function il(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 hs(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 FF(n,e,t){let i=!1,r=!1;for(let l=0,c=e.length;l<c;l++){const u=e[l];if(u.POSITION!==void 0&&(i=!0),u.NORMAL!==void 0&&(r=!0),i&&r)break}if(!i&&!r)return Promise.resolve(n);const s=[],o=[];for(let l=0,c=e.length;l<c;l++){const u=e[l];if(i){const h=u.POSITION!==void 0?t.getDependency("accessor",u.POSITION):n.attributes.position;s.push(h)}if(r){const h=u.NORMAL!==void 0?t.getDependency("accessor",u.NORMAL):n.attributes.normal;o.push(h)}}return Promise.all([Promise.all(s),Promise.all(o)]).then(function(l){const c=l[0],u=l[1];return i&&(n.morphAttributes.position=c),r&&(n.morphAttributes.normal=u),n.morphTargetsRelative=!0,n})}function VF(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 zF(n){const e=n.extensions&&n.extensions[st.KHR_DRACO_MESH_COMPRESSION];let t;return e?t="draco:"+e.bufferView+":"+e.indices+":"+ew(e.attributes):t=n.indices+":"+ew(n.attributes)+":"+n.mode,t}function ew(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 $f(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 UF{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new SF,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 Cf(this.options.manager):this.textureLoader=new vf(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new En(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:{}};il(s,l,r),hs(l,r),Promise.all(i._invokeAll(function(c){return c.afterRoot&&c.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,c=o.length;l<c;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[st.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(s,o){i.load(Qx(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],c=qx[r.type],u=nl[r.componentType],h=u.BYTES_PER_ELEMENT,f=h*c,m=r.byteOffset||0,g=r.bufferView!==void 0?i.bufferViews[r.bufferView].byteStride:void 0,d=r.normalized===!0;let p,b;if(g&&g!==f){const y=Math.floor(m/g),v="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+y+":"+r.count;let w=t.cache.get(v);w||(p=new u(l,y*g,r.count*g/h),w=new gr(p,g/h),t.cache.add(v,w)),b=new Ui(w,c,m%g/h,d)}else l===null?p=new u(r.count*c):p=new u(l,m,r.count*c),b=new We(p,c,d);if(r.sparse!==void 0){const y=qx.SCALAR,v=nl[r.sparse.indices.componentType],w=r.sparse.indices.byteOffset||0,E=r.sparse.values.byteOffset||0,_=new v(o[1],w,r.sparse.count*y),M=new u(o[2],E,r.sparse.count*c);l!==null&&(b=new We(b.array.slice(),b.itemSize,b.normalized));for(let x=0,C=_.length;x<C;x++){const A=_[x];if(b.setX(A,M[x*c]),c>=2&&b.setY(A,M[x*c+1]),c>=3&&b.setZ(A,M[x*c+2]),c>=4&&b.setW(A,M[x*c+3]),c>=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],c=(t.uri||t.bufferView)+":"+l.sampler;if(this.textureCache[c])return this.textureCache[c];const u=self.URL||self.webkitURL;let h=t.uri||"",f=!1,m=!0;const g=h.search(/\.jpe?g($|\?)/i)>0||h.search(/^data\:image\/jpeg/)===0;if((t.mimeType==="image/jpeg"||g)&&(m=!1),t.bufferView!==void 0)h=r.getDependency("bufferView",t.bufferView).then(function(p){if(t.mimeType==="image/png"){const y=new DataView(p,25,1).getUint8(0,!1);m=y===6||y===4||y===3}f=!0;const b=new Blob([p],{type:t.mimeType});return h=u.createObjectURL(b),h});else if(t.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(h).then(function(p){return new Promise(function(b,y){let v=b;i.isImageBitmapLoader===!0&&(v=function(w){const E=new Nt(w);E.needsUpdate=!0,b(E)}),i.load(Qx(p,o.path),v,void 0,y)})}).then(function(p){f===!0&&u.revokeObjectURL(h),p.flipY=!1,l.name&&(p.name=l.name),m||(p.format=Pi);const y=(s.samplers||{})[l.sampler]||{};return p.magFilter=Kx[y.magFilter]||wt,p.minFilter=Kx[y.minFilter]||Ri,p.wrapS=Jx[y.wrapS]||rr,p.wrapT=Jx[y.wrapT]||rr,r.associations.set(p,{type:"textures",index:e}),p}).catch(function(){return console.error("THREE.GLTFLoader: Couldn't load texture",h),null});return this.textureCache[c]=d,d}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[st.KHR_TEXTURE_TRANSFORM]){const o=i.extensions!==void 0?i.extensions[st.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=r.associations.get(s);s=r.extensions[st.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,c=l&&t.morphAttributes.normal!==void 0;if(e.isPoints){const u="PointsMaterial:"+i.uuid;let h=this.cache.get(u);h||(h=new yr,zt.prototype.copy.call(h,i),h.color.copy(i.color),h.map=i.map,h.sizeAttenuation=!1,this.cache.add(u,h)),i=h}else if(e.isLine){const u="LineBasicMaterial:"+i.uuid;let h=this.cache.get(u);h||(h=new Ht,zt.prototype.copy.call(h,i),h.color.copy(i.color),this.cache.add(u,h)),i=h}if(r||s||o||l){let u="ClonedMaterial:"+i.uuid+":";i.isGLTFSpecularGlossinessMaterial&&(u+="specular-glossiness:"),r&&(u+="vertex-tangents:"),s&&(u+="vertex-colors:"),o&&(u+="flat-shading:"),l&&(u+="morph-targets:"),c&&(u+="morph-normals:");let h=this.cache.get(u);h||(h=i.clone(),s&&(h.vertexColors=!0),o&&(h.flatShading=!0),l&&(h.morphTargets=!0),c&&(h.morphNormals=!0),r&&(h.vertexTangents=!0,h.normalScale&&(h.normalScale.y*=-1),h.clearcoatNormalScale&&(h.clearcoatNormalScale.y*=-1)),this.cache.add(u,h),this.associations.set(h,this.associations.get(i))),i=h}i.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return ts}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const l={},c=s.extensions||{},u=[];if(c[st.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const f=r[st.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];o=f.getMaterialType(),u.push(f.extendParams(l,s,t))}else if(c[st.KHR_MATERIALS_UNLIT]){const f=r[st.KHR_MATERIALS_UNLIT];o=f.getMaterialType(),u.push(f.extendParams(l,s,t))}else{const f=s.pbrMetallicRoughness||{};if(l.color=new Ae(1,1,1),l.opacity=1,Array.isArray(f.baseColorFactor)){const m=f.baseColorFactor;l.color.fromArray(m),l.opacity=m[3]}f.baseColorTexture!==void 0&&u.push(t.assignTexture(l,"map",f.baseColorTexture)),l.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,l.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(u.push(t.assignTexture(l,"metalnessMap",f.metallicRoughnessTexture)),u.push(t.assignTexture(l,"roughnessMap",f.metallicRoughnessTexture))),o=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),u.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,l)})))}s.doubleSided===!0&&(l.side=nr);const h=s.alphaMode||jf.OPAQUE;return h===jf.BLEND?(l.transparent=!0,l.depthWrite=!1):(l.transparent=!1,h===jf.MASK&&(l.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==mn&&(u.push(t.assignTexture(l,"normalMap",s.normalTexture)),l.normalScale=new Se(1,-1),s.normalTexture.scale!==void 0&&l.normalScale.set(s.normalTexture.scale,-s.normalTexture.scale)),s.occlusionTexture!==void 0&&o!==mn&&(u.push(t.assignTexture(l,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(l.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==mn&&(l.emissive=new Ae().fromArray(s.emissiveFactor)),s.emissiveTexture!==void 0&&o!==mn&&u.push(t.assignTexture(l,"emissiveMap",s.emissiveTexture)),Promise.all(u).then(function(){let f;return o===Hf?f=r[st.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(l):f=new o(l),s.name&&(f.name=s.name),f.map&&(f.map.encoding=Wr),f.emissiveMap&&(f.emissiveMap.encoding=Wr),hs(f,s),t.associations.set(f,{type:"materials",index:e}),s.extensions&&il(r,f,s),f})}createUniqueName(e){const t=et.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[st.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(l,t).then(function(c){return nw(c,l,t)})}const o=[];for(let l=0,c=e.length;l<c;l++){const u=e[l],h=zF(u),f=r[h];if(f)o.push(f.promise);else{let m;u.extensions&&u.extensions[st.KHR_DRACO_MESH_COMPRESSION]?m=s(u):m=nw(new Ve,u,t),r[h]={primitive:u,promise:m},o.push(m)}}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 c=0,u=o.length;c<u;c++){const h=o[c].material===void 0?kF(this.cache):this.getDependency("material",o[c].material);l.push(h)}return l.push(t.loadGeometries(o)),Promise.all(l).then(function(c){const u=c.slice(0,c.length-1),h=c[c.length-1],f=[];for(let g=0,d=h.length;g<d;g++){const p=h[g],b=o[g];let y;const v=u[g];if(b.mode===Hi.TRIANGLES||b.mode===Hi.TRIANGLE_STRIP||b.mode===Hi.TRIANGLE_FAN||b.mode===void 0)y=s.isSkinnedMesh===!0?new ka(p,v):new It(p,v),y.isSkinnedMesh===!0&&!y.geometry.attributes.skinWeight.normalized&&y.normalizeSkinWeights(),b.mode===Hi.TRIANGLE_STRIP?y.geometry=iw(y.geometry,ov):b.mode===Hi.TRIANGLE_FAN&&(y.geometry=iw(y.geometry,ih));else if(b.mode===Hi.LINES)y=new dn(p,v);else if(b.mode===Hi.LINE_STRIP)y=new ai(p,v);else if(b.mode===Hi.LINE_LOOP)y=new Gc(p,v);else if(b.mode===Hi.POINTS)y=new go(p,v);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+b.mode);Object.keys(y.geometry.morphAttributes).length>0&&VF(y,s),y.name=t.createUniqueName(s.name||"mesh_"+e),hs(y,s),b.extensions&&il(r,y,b),t.assignFinalMaterial(y),f.push(y)}if(f.length===1)return f[0];const m=new oi;for(let g=0,d=f.length;g<d;g++)m.add(f[g]);return m})}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 Gt(uh.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):i.type==="orthographic"&&(t=new Po(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),hs(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=[],c=[];for(let u=0,h=i.channels.length;u<h;u++){const f=i.channels[u],m=i.samplers[f.sampler],g=f.target,d=g.node!==void 0?g.node:g.id,p=i.parameters!==void 0?i.parameters[m.input]:m.input,b=i.parameters!==void 0?i.parameters[m.output]:m.output;r.push(this.getDependency("node",d)),s.push(this.getDependency("accessor",p)),o.push(this.getDependency("accessor",b)),l.push(m),c.push(g)}return Promise.all([Promise.all(r),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(c)]).then(function(u){const h=u[0],f=u[1],m=u[2],g=u[3],d=u[4],p=[];for(let y=0,v=h.length;y<v;y++){const w=h[y],E=f[y],_=m[y],M=g[y],x=d[y];if(w===void 0)continue;w.updateMatrix(),w.matrixAutoUpdate=!0;let C;switch(Sr[x.path]){case Sr.weights:C=Lo;break;case Sr.rotation:C=is;break;case Sr.position:case Sr.scale:default:C=Ro;break}const A=w.name?w.name:w.uuid,L=M.interpolation!==void 0?DF[M.interpolation]:Ur,R=[];Sr[x.path]===Sr.weights?w.traverse(function(I){I.isMesh===!0&&I.morphTargetInfluences&&R.push(I.name?I.name:I.uuid)}):R.push(A);let P=_.array;if(_.normalized){const I=$f(P.constructor),N=new Float32Array(P.length);for(let O=0,S=P.length;O<S;O++)N[O]=P[O]*I;P=N}for(let I=0,N=R.length;I<N;I++){const O=new C(R[I]+"."+Sr[x.path],E.array,P,L);M.interpolation==="CUBICSPLINE"&&(O.createInterpolant=function(T){return new ko(this.times,this.values,this.getValueSize()/3,T)},O.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),p.push(O)}}const b=i.name?i.name:"animation_"+e;return new No(b,void 0,p)})}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 c=0,u=r.weights.length;c<u;c++)l.morphTargetInfluences[c]=r.weights[c]}),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=[],c=r._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(e)});return c&&l.push(c),s.camera!==void 0&&l.push(r.getDependency("camera",s.camera).then(function(u){return r._getNodeRef(r.cameraCache,s.camera,u)})),r._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(e)}).forEach(function(u){l.push(u)}),Promise.all(l)}().then(function(l){let c;if(s.isBone===!0?c=new Fa:l.length>1?c=new oi:l.length===1?c=l[0]:c=new je,c!==l[0])for(let u=0,h=l.length;u<h;u++)c.add(l[u]);if(s.name&&(c.userData.name=s.name,c.name=o),hs(c,s),s.extensions&&il(i,c,s),s.matrix!==void 0){const u=new Oe;u.fromArray(s.matrix),c.applyMatrix4(u)}else s.translation!==void 0&&c.position.fromArray(s.translation),s.rotation!==void 0&&c.quaternion.fromArray(s.rotation),s.scale!==void 0&&c.scale.fromArray(s.scale);return r.associations.set(c,{type:"nodes",index:e}),c})}loadScene(e){const t=this.json,i=this.extensions,r=this.json.scenes[e],s=this,o=new oi;r.name&&(o.name=s.createUniqueName(r.name)),hs(o,r),r.extensions&&il(i,o,r);const l=r.nodes||[],c=[];for(let u=0,h=l.length;u<h;u++)c.push(tw(l[u],o,t,s));return Promise.all(c).then(function(){return o})}}function tw(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 c=[];for(let u=0,h=o.joints.length;u<h;u++)c.push(i.getDependency("node",o.joints[u]));return Promise.all(c)}).then(function(l){return s.traverse(function(c){if(!c.isMesh)return;const u=[],h=[];for(let f=0,m=l.length;f<m;f++){const g=l[f];if(g){u.push(g);const d=new Oe;o.inverseBindMatrices!==void 0&&d.fromArray(o.inverseBindMatrices.array,f*16),h.push(d)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[f])}c.bind(new Va(u,h),c.matrixWorld)}),s})}).then(function(s){e.add(s);const o=[];if(r.children){const l=r.children;for(let c=0,u=l.length;c<u;c++){const h=l[c];o.push(tw(h,s,t,i))}}return Promise.all(o)})}function GF(n,e,t){const i=e.attributes,r=new pn;if(i.POSITION!==void 0){const l=t.json.accessors[i.POSITION],c=l.min,u=l.max;if(c!==void 0&&u!==void 0){if(r.set(new X(c[0],c[1],c[2]),new X(u[0],u[1],u[2])),l.normalized){const h=$f(nl[l.componentType]);r.min.multiplyScalar(h),r.max.multiplyScalar(h)}}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 X,c=new X;for(let u=0,h=s.length;u<h;u++){const f=s[u];if(f.POSITION!==void 0){const m=t.json.accessors[f.POSITION],g=m.min,d=m.max;if(g!==void 0&&d!==void 0){if(c.setX(Math.max(Math.abs(g[0]),Math.abs(d[0]))),c.setY(Math.max(Math.abs(g[1]),Math.abs(d[1]))),c.setZ(Math.max(Math.abs(g[2]),Math.abs(d[2]))),m.normalized){const p=$f(nl[m.componentType]);c.multiplyScalar(p)}l.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(l)}n.boundingBox=r;const o=new Oi;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,n.boundingSphere=o}function nw(n,e,t){const i=e.attributes,r=[];function s(o,l){return t.getDependency("accessor",o).then(function(c){n.setAttribute(l,c)})}for(const o in i){const l=Wf[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 hs(n,e),GF(n,e,t),Promise.all(r).then(function(){return e.targets!==void 0?FF(n,e.targets,t):n})}function iw(n,e){let t=n.getIndex();if(t===null){const o=[],l=n.getAttribute("position");if(l!==void 0){for(let c=0;c<l.count;c++)o.push(c);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===ih)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 HF=Wl(Object.freeze(Object.defineProperty({__proto__:null,GLTFLoader:MF},Symbol.toStringTag,{value:"Module"})));var Zf={exports:{}},rw;function WF(){return rw||(rw=1,function(n){function e(u){var h={};function f(g){if(h[g])return h[g].exports;var d=h[g]={i:g,l:!1,exports:{}};return u[g].call(d.exports,d,d.exports,f),d.l=!0,d.exports}f.m=u,f.c=h,f.i=function(g){return g},f.d=function(g,d,p){f.o(g,d)||Object.defineProperty(g,d,{configurable:!1,enumerable:!0,get:p})},f.r=function(g){Object.defineProperty(g,"__esModule",{value:!0})},f.n=function(g){var d=g&&g.__esModule?function(){return g.default}:function(){return g};return f.d(d,"a",d),d},f.o=function(g,d){return Object.prototype.hasOwnProperty.call(g,d)},f.p="/",f.oe=function(g){throw console.error(g),g};var m=f(f.s=ENTRY_MODULE);return m.default||m}var t="[\\.|\\-|\\+|\\w|/|@]+",i="\\(\\s*(/\\*.*?\\*/)?\\s*.*?("+t+").*?\\)";function r(u){return(u+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function s(u){return!isNaN(1*u)}function o(u,h,f){var m={};m[f]=[];var g=h.toString(),d=g.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!d)return m;for(var p=d[1],b=new RegExp("(\\\\n|\\W)"+r(p)+i,"g"),y;y=b.exec(g);)y[3]!=="dll-reference"&&m[f].push(y[3]);for(b=new RegExp("\\("+r(p)+'\\("(dll-reference\\s('+t+'))"\\)\\)'+i,"g");y=b.exec(g);)u[y[2]]||(m[f].push(y[1]),u[y[2]]=__webpack_require__(y[1]).m),m[y[2]]=m[y[2]]||[],m[y[2]].push(y[4]);for(var v=Object.keys(m),w=0;w<v.length;w++)for(var E=0;E<m[v[w]].length;E++)s(m[v[w]][E])&&(m[v[w]][E]=1*m[v[w]][E]);return m}function l(u){var h=Object.keys(u);return h.reduce(function(f,m){return f||u[m].length>0},!1)}function c(u,h){for(var f={main:[h]},m={main:[]},g={main:{}};l(f);)for(var d=Object.keys(f),p=0;p<d.length;p++){var b=d[p],y=f[b],v=y.pop();if(g[b]=g[b]||{},!(g[b][v]||!u[b][v])){g[b][v]=!0,m[b]=m[b]||[],m[b].push(v);for(var w=o(u,u[b][v],b),E=Object.keys(w),_=0;_<E.length;_++)f[E[_]]=f[E[_]]||[],f[E[_]]=f[E[_]].concat(w[E[_]])}}return m}n.exports=function(u,h){h=h||{};var f={main:__webpack_modules__},m=h.all?{main:Object.keys(f.main)}:c(f,u),g="";Object.keys(m).filter(function(v){return v!=="main"}).forEach(function(v){for(var w=0;m[v][w];)w++;m[v].push(w),f[v][w]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",g=g+"var "+v+" = ("+e.toString().replace("ENTRY_MODULE",JSON.stringify(w))+")({"+m[v].map(function(E){return""+JSON.stringify(E)+": "+f[v][E].toString()}).join(",")+`});
3182
- `}),g=g+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(u))+")({"+m.main.map(function(v){return""+JSON.stringify(v)+": "+f.main[v].toString()}).join(",")+"}))(self);";var d=new window.Blob([g],{type:"text/javascript"});if(h.bare)return d;var p=window.URL||window.webkitURL||window.mozURL||window.msURL,b=p.createObjectURL(d),y=new window.Worker(b);return y.objectURL=b,y}}(Zf)),Zf.exports}function jF(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 $F(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(c,u){if(u&&(typeof u=="object"||typeof u=="function")){var h=u.then;if(typeof h=="function"){h.call(u,function(f){o(c,f)},function(f){r[c]={status:"rejected",reason:f},--s===0&&t(r)});return}}r[c]={status:"fulfilled",value:u},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function sw(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}sw.prototype=Error.prototype;function ZF(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 sw(s,"All promises were rejected"))})}catch(l){i(l)}})}var XF=setTimeout;function ow(n){return!!(n&&typeof n.length<"u")}function YF(){}function KF(n,e){return function(){n.apply(e,arguments)}}function xt(n){if(!(this instanceof xt))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=[],lw(n,this)}function aw(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,xt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?Xf:rl)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){rl(e.promise,r);return}Xf(e.promise,i)})}function Xf(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 xt){n._state=3,n._value=e,Yf(n);return}else if(typeof t=="function"){lw(KF(t,e),n);return}}n._state=1,n._value=e,Yf(n)}catch(i){rl(n,i)}}function rl(n,e){n._state=2,n._value=e,Yf(n)}function Yf(n){n._state===2&&n._deferreds.length===0&&xt._immediateFn(function(){n._handled||xt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)aw(n,n._deferreds[e]);n._deferreds=null}function JF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function lw(n,e){var t=!1;try{n(function(i){t||(t=!0,Xf(e,i))},function(i){t||(t=!0,rl(e,i))})}catch(i){if(t)return;t=!0,rl(e,i)}}xt.prototype.catch=function(n){return this.then(null,n)},xt.prototype.then=function(n,e){var t=new this.constructor(YF);return aw(this,new JF(n,e,t)),t},xt.prototype.finally=jF,xt.all=function(n){return new xt(function(e,t){if(!ow(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,c){try{if(c&&(typeof c=="object"||typeof c=="function")){var u=c.then;if(typeof u=="function"){u.call(c,function(h){s(l,h)},t);return}}i[l]=c,--r===0&&e(i)}catch(h){t(h)}}for(var o=0;o<i.length;o++)s(o,i[o])})},xt.any=ZF,xt.allSettled=$F,xt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===xt?n:new xt(function(e){e(n)})},xt.reject=function(n){return new xt(function(e,t){t(n)})},xt.race=function(n){return new xt(function(e,t){if(!ow(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)xt.resolve(n[i]).then(e,t)})},xt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){XF(n,0)},xt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const qF=Wl(Object.freeze(Object.defineProperty({__proto__:null,default:xt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Qi,()=>(()=>{var t=[(o,l,c)=>{c(1);var u=c(2),h=u.version,f=function(){this.Revision=h,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=c(3).Geometry,this.Glyph=c(16).Glyph,this.Glyphset=c(18).Glyphset,this.Pointset=c(22).Pointset,this.Label=c(17).Label,this.Lines=c(24).Lines,this.TextureArray=c(25).TextureArray,this.TextureSlides=c(27).TextureSlides,this.Renderer=c(30).Renderer,this.Scene=c(32).Scene,this.GeometryCSG=c(50).GeometryCSG,this.GlyphsetCSG=c(56).GlyphsetCSG,this.Viewport=c(43).Viewport,this.CameraControls=c(43).CameraControls,this.SmoothCameraTransition=c(43).SmoothCameraTransition,this.RayCaster=c(43).RayCaster,this.CameraAutoTumble=c(43).CameraAutoTumble,this.StereoEffect=c(43).StereoEffect,this.loadExternalFile=c(5).loadExternalFile,this.loadExternalFiles=c(5).loadExternalFiles,this.THREE=c(4)};o.exports=new f},o=>{o.exports=jN()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.8.2","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,c){var u=c(4),h=c(5).toBufferGeometry,f=(g,d,p)=>{var b=h(g,p),y=!1;1>p.opacity&&(y=!0);var v;if(b._video===void 0){var w=p.localTimeEnabled||p.localMorphColour;d?(v=d,v.morphTargets=w,v.morphNormals=p.localTimeEnabled):b instanceof u.BufferGeometry&&b.attributes.color===void 0?v=new u.MeshPhongMaterial({color:p.colour,morphTargets:w,morphNormals:p.localTimeEnabled,transparent:y,opacity:p.opacity,side:u.DoubleSide}):v=new u.MeshPhongMaterial({color:p.colour,morphTargets:w,morphNormals:p.localTimeEnabled,vertexColors:u.VertexColors,transparent:y,opacity:p.opacity,side:u.DoubleSide}),p.localMorphColour&&b.morphAttributes.color&&(v.onBeforeCompile=c(9).augmentMorphColor())}else{var E=b._video.createCanvasVideoTexture();v=new u.MeshBasicMaterial({morphTargets:p.localTimeEnabled,color:new u.Color(1,1,1),transparent:y,opacity:p.opacity,map:E,side:u.DoubleSide}),this.videoHandler=b._video}return new u.Mesh(b,v)},m=function(){c(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(g,d,p)=>{if(!(this.morph&&this.morph.geometry&&g!=null)){var b=f(g,d,p);this.setMesh(b,p.localTimeEnabled,p.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var g=this.geometry.boundingBox.max,d=this.geometry.boundingBox.min,p=new u.Vector2(0-d.x,0-d.y),b=new u.Vector2(g.x-d.x,g.y-d.y);this.geometry.faceVertexUvs[0]=[];for(var y=0;y<this.geometry.faces.length;y++){var v=this.geometry.vertices[this.geometry.faces[y].a],w=this.geometry.vertices[this.geometry.faces[y].b],E=this.geometry.vertices[this.geometry.faces[y].c];geometry.faceVertexUvs[0].push([new u.Vector2((v.x+p.x)/b.x,(v.y+p.y)/b.y),new u.Vector2((w.x+p.x)/b.x,(w.y+p.y)/b.y),new u.Vector2((E.x+p.x)/b.x,(E.y+p.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=g=>{this.morph.material.wireframe=g},this.editVertices=function(g,d){if(g&&g.length){var p=this.getMorph(),b=p.geometry.getAttribute("position");if(!p||0>d)return;var y=3*d;g.forEach(v=>{b.array[y++]=v[0],b.array[y++]=v[1],b.array[y++]=v[2]}),b.needsUpdate=!0,p.geometry.computeBoundingBox(),p.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};m.prototype=Object.create(c(10).ZincObject.prototype),l.Geometry=m},o=>{o.exports=rF},(o,l,c)=>{function u(x){throw new TypeError('"'+x+'" is read-only')}var h=c(4),f=c(6).Geometry,m=c(7).default;function g(x){var C=x,A=c(0).modelPrefix;return A&&(A[A.length-1]!="/"&&u("prefix"),/^(?:[a-z]+:)?\/\//i.test(x)||(C=A+x)),C}function d(x,C){var A=new URL(x,C).href;if(x&&2>x.split("?").length){var L=C.split("?");L.length===2&&(A=A+"?"+L[1])}return A}function p(x,C,A,L,R){var P=x.morphTargetInfluences,I=void 0;x.geometry&&(I=x.geometry.morphAttributes);var N=!1;if(P&&I&&I.position){L.set(0,0,0),R.set(0,0,0);for(var O=0;O<P.length;O++)0<P[O]&&(N=!0,A.setFromArray(I.position[O].array),L.add(A.min.multiplyScalar(P[O])),R.add(A.max.multiplyScalar(P[O])));N&&C.set(L,R)}N||C.setFromBufferAttribute(x.geometry.attributes.position),x.updateWorldMatrix(!0,!0),C.applyMatrix4(x.matrixWorld)}function b(x,C,A,L){var R=new XMLHttpRequest;R.open("GET",g(x),!0),R.onreadystatechange=()=>{R.readyState==4&&(R.status==200?A(R.responseText,C):L(x))},R.send(null)}function y(x,C,A){function L(O,S){I[S]=O,P++,P==R&&C(I)}for(var R=x.length,P=0,I=[],N=0;N<R;N++)b(x[N],N,L,A)}l.getColorsRGB=(x,C)=>{var A=Math.floor(C/3),L=C%3,R=0;L==0?R=x[A].r:L==1?R=x[A].g:L==2&&(R=x[A].b);var P=new h.Color(R);return[P.r,P.g,P.b]},l.updateMorphColorAttribute=function(x,C){if(C&&x&&x.morphAttributes&&x.morphAttributes.color){var A=x.morphAttributes.color,L=C.morphTargetInfluences,R=L.length;x.deleteAttribute("morphColor0"),x.deleteAttribute("morphColor1");for(var P=0,I=[],N=0;1>P||N<R;N++)0<L[N]&&(P++,I.push([N,L[N]]));I.length==2?(x.setAttribute("morphColor0",A[I[0][0]]),x.setAttribute("morphColor1",A[I[1][0]])):I.length==1&&(x.setAttribute("morphColor0",A[I[0][0]]),x.setAttribute("morphColor1",A[I[0][0]]))}},l.toBufferGeometry=(x,C)=>{var A;return x instanceof f?(C.localTimeEnabled&&!x.morphNormalsReady&&(x.morphNormals==null||x.morphNormals.length==0)&&x.computeMorphNormals(),A=x.toIndexedBufferGeometry(),C.localMorphColour&&v(x,A)):x instanceof h.BufferGeometry&&(A=x.clone()),A.colorsNeedUpdate=!0,A.computeBoundingBox(),A.computeBoundingSphere(),x._video&&(A._video=x._video),A},l.copyMorphColorsToBufferGeometry=(x,C)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var A=[],L=x.morphColors,R=c(5).getColorsRGB,P=0,I=L.length;P<I;P++){for(var N=L[P],O=[],S=0;S<x.faces.length;S++){var T=x.faces[S],D=R(N.colors,T.a);O.push(D[0],D[1],D[2]),D=R(N.colors,T.b),O.push(D[0],D[1],D[2]),D=R(N.colors,T.c),O.push(D[0],D[1],D[2])}var B=new h.Float32BufferAttribute(3*(3*x.faces.length),3);B.name=N.name,A.push(B.copyArray(O))}C.morphAttributes.color=A}};var v=(x,C)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var A=[],L=x.morphColors,R=c(5).getColorsRGB,P=0,I=L.length;P<I;P++){for(var N,O=L[P],S=[],T=0;T<3*O.colors.length;T++)N=R(O.colors,T),S.push(N[0],N[1],N[2]);var D=new h.Float32BufferAttribute(S,3);D.name=O.name,A.push(D)}C.morphAttributes.color=A}};l.mergeVertices=function(x){var C=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;C=Math.max(C,Number.EPSILON);for(var A,L={},R=x.getIndex(),P=x.getAttribute("position"),I=R?R.count:P.count,N=0,O=Object.keys(x.attributes),S={},T={},le=[],D=["getX","getY","getZ","getW"],B=0,F=O.length;B<F;B++){A=O[B],S[A]=[];var G=x.morphAttributes[A];G&&(T[A]=Array(G.length).fill().map(()=>[]))}for(var H=Math.log10(1/C),te=Math.pow(10,H),B=0;B<I;B++){for(var se=R?R.getX(B):B,j="",z=0,F=O.length;z<F;z++)for(var A=O[z],W=x.getAttribute(A),ee=W.itemSize,q=0;q<ee;q++)j+="".concat(~~(W[D[q]](se)*te),",");if(j in L)le.push(L[j]);else{for(var z=0,F=O.length;z<F;z++)for(var $,A=O[z],W=x.getAttribute(A),G=x.morphAttributes[A],ee=W.itemSize,Y=S[A],K=T[A],q=0;q<ee;q++)if($=D[q],Y.push(W[$](se)),G)for(var ie=0,k=G.length;ie<k;ie++)K[ie].push(G[ie][$](se));L[j]=N,le.push(N),N++}}for(var Z=x.clone(),B=0,F=O.length;B<F;B++){var W,A=O[B],Q=x.getAttribute(A),V=new Q.array.constructor(S[A]);if(Q.isInterleavedBufferAttribute?W=new h.BufferAttribute(V,Q.itemSize,Q.itemSize):(W=x.getAttribute(A).clone(),W.setArray(V)),Z.setAttribute(A,W),A in T)for(var U,z=0;z<T[A].length;z++)U=x.morphAttributes[A][z].clone(),U.setArray(new U.array.constructor(T[A][z])),Z.morphAttributes[A][z]=U}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 R===null?le=new h.BufferAttribute(ae,1):(le=x.getIndex().clone(),le.setArray(ae)),Z.setIndex(le),Z};function w(x){if(x.isMeshPhongMaterial){var C=new h.MeshToonMaterial({color:x.color.clone(),morphTargets:x.morphTargets,morphNormals:x.morphNormals,vertexColors:x.vertexColors,transparent:x.transparent,opacity:x.opacity,side:x.side});return x.map&&(C.map=x.map),C}return x}function E(x,C){if(C&&x>=C.length){var A=new h.BufferGeometry,L=new Float32Array(3*x),R=0;return C.forEach(P=>{L[R++]=P[0],L[R++]=P[1],L[R++]=P[2]}),A.setAttribute("position",new h.BufferAttribute(L,3)),A.setDrawRange(0,C.length),A}}function _(){var x=new Image;x.src=c(8);var C=new h.Texture;return C.image=x,C.needsUpdate=!0,C}function M(x,C,A,L,R,P){var I=new m(x,C,A,L,R,P);return I.material.sizeAttenuation=!1,I.material.alphaTest=.5,I.material.transparent=!0,I.material.depthWrite=!1,I.material.depthTest=!1,I.center.set(.5,-1.2),I.renderOrder=1e4,I}l.getBoundingBox=p,l.createNewURL=d,l.createBufferGeometry=E,l.getCircularTexture=_,l.resolveURL=g,l.loadExternalFile=b,l.loadExternalFiles=y,l.PhongToToon=w,l.createNewSpriteText=M},(o,l,c)=>{c.r(l),c.d(l,{Face3:()=>p,Geometry:()=>g});var u=c(4),h=new u.Matrix4,f=new u.Object3D,m=new u.Vector3;function g(){this.uuid=u.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}g.prototype=Object.assign(Object.create(u.EventDispatcher.prototype),{constructor:g,isGeometry:!0,applyMatrix4:function(y){for(var v,w=new u.Matrix3().getNormalMatrix(y),E=0,_=this.vertices.length;E<_;E++)v=this.vertices[E],v.applyMatrix4(y);for(var M,x=0,C=this.faces.length;x<C;x++){M=this.faces[x],M.normal.applyMatrix3(w).normalize();for(var A=0,L=M.vertexNormals.length;A<L;A++)M.vertexNormals[A].applyMatrix3(w).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(y){return h.makeRotationX(y),this.applyMatrix4(h),this},rotateY:function(y){return h.makeRotationY(y),this.applyMatrix4(h),this},rotateZ:function(y){return h.makeRotationZ(y),this.applyMatrix4(h),this},translate:function(y,v,w){return h.makeTranslation(y,v,w),this.applyMatrix4(h),this},scale:function(y,v,w){return h.makeScale(y,v,w),this.applyMatrix4(h),this},lookAt:function(y){return f.lookAt(y),f.updateMatrix(),this.applyMatrix4(f.matrix),this},fromBufferGeometry:function(y){function v(G,H,te,se){var j=C===void 0?[]:[w.colors[G].clone(),w.colors[H].clone(),w.colors[te].clone()],z=x===void 0?[]:[new u.Vector3().fromBufferAttribute(x,G),new u.Vector3().fromBufferAttribute(x,H),new u.Vector3().fromBufferAttribute(x,te)],W=new p(G,H,te,z,j,se);w.faces.push(W),A!==void 0&&w.faceVertexUvs[0].push([new u.Vector2().fromBufferAttribute(A,G),new u.Vector2().fromBufferAttribute(A,H),new u.Vector2().fromBufferAttribute(A,te)]),L!==void 0&&w.faceVertexUvs[1].push([new u.Vector2().fromBufferAttribute(L,G),new u.Vector2().fromBufferAttribute(L,H),new u.Vector2().fromBufferAttribute(L,te)])}var w=this,E=y.index===null?void 0:y.index,_=y.attributes;if(_.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var M=_.position,x=_.normal,C=_.color,A=_.uv,L=_.uv2;L!==void 0&&(this.faceVertexUvs[1]=[]);for(var R=0;R<M.count;R++)w.vertices.push(new u.Vector3().fromBufferAttribute(M,R)),C!==void 0&&w.colors.push(new u.Color().fromBufferAttribute(C,R));var P=y.groups;if(0<P.length)for(var I=0;I<P.length;I++)for(var N=P[I],O=N.start,S=N.count,T=O,D=O+S;T<D;T+=3)E===void 0?v(T,T+1,T+2,N.materialIndex):v(E.getX(T),E.getX(T+1),E.getX(T+2),N.materialIndex);else if(E!==void 0)for(var B=0;B<E.count;B+=3)v(E.getX(B),E.getX(B+1),E.getX(B+2));else for(var F=0;F<M.count;F+=3)v(F,F+1,F+2);return this.computeFaceNormals(),y.boundingBox!==null&&(this.boundingBox=y.boundingBox.clone()),y.boundingSphere!==null&&(this.boundingSphere=y.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(m).negate(),this.translate(m.x,m.y,m.z),this},normalize:function(){this.computeBoundingSphere();var y=this.boundingSphere.center,v=this.boundingSphere.radius,w=v===0?1:1/v,E=new u.Matrix4;return E.set(w,0,0,-w*y.x,0,w,0,-w*y.y,0,0,w,-w*y.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var y=new u.Vector3,v=new u.Vector3,w=0,E=this.faces.length;w<E;w++){var _=this.faces[w],M=this.vertices[_.a],x=this.vertices[_.b],C=this.vertices[_.c];y.subVectors(C,x),v.subVectors(M,x),y.cross(v),y.normalize(),_.normal.copy(y)}},computeVertexNormals:function(){for(var y=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],v=Array(this.vertices.length),w=0,E=this.vertices.length;w<E;w++)v[w]=new u.Vector3;if(y)for(var _=new u.Vector3,M=new u.Vector3,x=0,C=this.faces.length;x<C;x++){var A=this.faces[x],L=this.vertices[A.a],R=this.vertices[A.b],P=this.vertices[A.c];_.subVectors(P,R),M.subVectors(L,R),_.cross(M),v[A.a].add(_),v[A.b].add(_),v[A.c].add(_)}else{this.computeFaceNormals();for(var I,N=0,O=this.faces.length;N<O;N++)I=this.faces[N],v[I.a].add(I.normal),v[I.b].add(I.normal),v[I.c].add(I.normal)}for(var S=0,T=this.vertices.length;S<T;S++)v[S].normalize();for(var D=0,B=this.faces.length;D<B;D++){var F=this.faces[D],G=F.vertexNormals;G.length===3?(G[0].copy(v[F.a]),G[1].copy(v[F.b]),G[2].copy(v[F.c])):(G[0]=v[F.a].clone(),G[1]=v[F.b].clone(),G[2]=v[F.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),v},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var y=0,v=this.faces.length;y<v;y++){var w=this.faces[y],E=w.vertexNormals;E.length===3?(E[0].copy(w.normal),E[1].copy(w.normal),E[2].copy(w.normal)):(E[0]=w.normal.clone(),E[1]=w.normal.clone(),E[2]=w.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var y,v=0,w=this.faces.length;v<w;v++){y=this.faces[v],y.__originalFaceNormal?y.__originalFaceNormal.copy(y.normal):y.__originalFaceNormal=y.normal.clone(),y.__originalVertexNormals||(y.__originalVertexNormals=[]);for(var E=0,_=y.vertexNormals.length;E<_;E++)y.__originalVertexNormals[E]?y.__originalVertexNormals[E].copy(y.vertexNormals[E]):y.__originalVertexNormals[E]=y.vertexNormals[E].clone()}var M=new g;M.faces=this.faces;for(var x=0,C=this.morphTargets.length;x<C;x++){if(!this.morphNormals[x]){this.morphNormals[x]={},this.morphNormals[x].faceNormals=[],this.morphNormals[x].vertexNormals=[];for(var A=this.morphNormals[x].faceNormals,L=this.morphNormals[x].vertexNormals,R=0,P=this.faces.length;R<P;R++){var I=new u.Vector3,N={a:new u.Vector3,b:new u.Vector3,c:new u.Vector3};A.push(I),L.push(N)}}var O=this.morphNormals[x];M.vertices=this.morphTargets[x].vertices,M.computeFaceNormals();var S=M.computeVertexNormals();if(S&&0<S.length){this.morphTargets[x].normals=Array(this.vertices.length);for(var T=0;T<S.length;T++)this.morphTargets[x].normals[T]=S[T].clone()}for(var D=0,B=this.faces.length;D<B;D++){var F=this.faces[D],G=O.faceNormals[D],H=O.vertexNormals[D];G.copy(F.normal),H.a.copy(F.vertexNormals[0]),H.b.copy(F.vertexNormals[1]),H.c.copy(F.vertexNormals[2])}}for(var te,se=0,j=this.faces.length;se<j;se++)te=this.faces[se],te.normal=te.__originalFaceNormal,te.vertexNormals=te.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new u.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new u.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(y,v){var w=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(y&&y.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",y);var E,_=this.vertices.length,M=this.vertices,x=y.vertices,C=this.faces,A=y.faces,L=this.colors,R=y.colors;v!==void 0&&(E=new u.Matrix3().getNormalMatrix(v));for(var P=0,I=x.length;P<I;P++){var N=x[P],O=N.clone();v!==void 0&&O.applyMatrix4(v),M.push(O)}for(var S=0,T=R.length;S<T;S++)L.push(R[S].clone());for(var D=0,B=A.length;D<B;D++){var F=A[D],G=void 0,H=void 0,te=F.vertexNormals,se=F.vertexColors,j=new p(F.a+_,F.b+_,F.c+_);j.normal.copy(F.normal),E!==void 0&&j.normal.applyMatrix3(E).normalize();for(var z=0,W=te.length;z<W;z++)G=te[z].clone(),E!==void 0&&G.applyMatrix3(E).normalize(),j.vertexNormals.push(G);j.color.copy(F.color);for(var ee=0,q=se.length;ee<q;ee++)H=se[ee],j.vertexColors.push(H.clone());j.materialIndex=F.materialIndex+w,C.push(j)}for(var $,Y=0,K=y.faceVertexUvs.length;Y<K;Y++){$=y.faceVertexUvs[Y],this.faceVertexUvs[Y]===void 0&&(this.faceVertexUvs[Y]=[]);for(var ie=0,k=$.length;ie<k;ie++){for(var Z=$[ie],Q=[],V=0,U=Z.length;V<U;V++)Q.push(Z[V].clone());this.faceVertexUvs[Y].push(Q)}}},mergeMesh:function(y){return y&&y.isMesh?(y.matrixAutoUpdate&&y.updateMatrix(),void this.merge(y.geometry,y.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",y)},mergeVertices:function(){for(var y=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,v={},w=[],E=[],_=Math.pow(10,y),M=0,x=this.vertices.length;M<x;M++){var C=this.vertices[M],A=Math.round(C.x*_)+"_"+Math.round(C.y*_)+"_"+Math.round(C.z*_);v[A]===void 0?(v[A]=M,w.push(this.vertices[M]),E[M]=w.length-1):E[M]=E[v[A]]}for(var L,R=[],P=0,I=this.faces.length;P<I;P++){L=this.faces[P],L.a=E[L.a],L.b=E[L.b],L.c=E[L.c];for(var N=[L.a,L.b,L.c],O=0;3>O;O++)if(N[O]===N[(O+1)%3]){R.push(P);break}}for(var S,T=R.length-1;0<=T;T--){S=R[T],this.faces.splice(S,1);for(var D=0,B=this.faceVertexUvs.length;D<B;D++)this.faceVertexUvs[D].splice(S,1)}var F=this.vertices.length-w.length;return this.vertices=w,F},setFromPoints:function(y){this.vertices=[];for(var v,w=0,E=y.length;w<E;w++)v=y[w],this.vertices.push(new u.Vector3(v.x,v.y,v.z||0));return this},sortFacesByMaterialIndex:function(){for(var y=this.faces,v=y.length,w=0;w<v;w++)y[w]._id=w;y.sort(function(L,R){return L.materialIndex-R.materialIndex});var E,_,M=this.faceVertexUvs[0],x=this.faceVertexUvs[1];M&&M.length===v&&(E=[]),x&&x.length===v&&(_=[]);for(var C,A=0;A<v;A++)C=y[A]._id,E&&E.push(M[C]),_&&_.push(x[C]);E&&(this.faceVertexUvs[0]=E),_&&(this.faceVertexUvs[1]=_)},toJSON:function(){function y(Y,K,ie){return ie?Y|1<<K:Y&~(1<<K)}function v(Y){var K=Y.x.toString()+Y.y.toString()+Y.z.toString();return I[K]===void 0&&(I[K]=P.length/3,P.push(Y.x,Y.y,Y.z)),I[K]}function w(Y){var K=Y.r.toString()+Y.g.toString()+Y.b.toString();return O[K]===void 0&&(O[K]=N.length,N.push(Y.getHex())),O[K]}function E(Y){var K=Y.x.toString()+Y.y.toString();return T[K]===void 0&&(T[K]=S.length/2,S.push(Y.x,Y.y)),T[K]}var _={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(_.uuid=this.uuid,_.type=this.type,this.name!==""&&(_.name=this.name),this.parameters!==void 0){var M=this.parameters;for(var x in M)M[x]!==void 0&&(_[x]=M[x]);return _}for(var C,A=[],L=0;L<this.vertices.length;L++)C=this.vertices[L],A.push(C.x,C.y,C.z);for(var R=[],P=[],I={},N=[],O={},S=[],T={},D=0;D<this.faces.length;D++){var B=this.faces[D],F=!0,G=!1,H=this.faceVertexUvs[0][D]!==void 0,te=0<B.normal.length(),se=0<B.vertexNormals.length,j=B.color.r!==1||B.color.g!==1||B.color.b!==1,z=0<B.vertexColors.length,W=0;if(W=y(W,0,0),W=y(W,1,F),W=y(W,2,G),W=y(W,3,H),W=y(W,4,te),W=y(W,5,se),W=y(W,6,j),W=y(W,7,z),R.push(W),R.push(B.a,B.b,B.c),R.push(B.materialIndex),H){var ee=this.faceVertexUvs[0][D];R.push(E(ee[0]),E(ee[1]),E(ee[2]))}if(te&&R.push(v(B.normal)),se){var q=B.vertexNormals;R.push(v(q[0]),v(q[1]),v(q[2]))}if(j&&R.push(w(B.color)),z){var $=B.vertexColors;R.push(w($[0]),w($[1]),w($[2]))}}return _.data={},_.data.vertices=A,_.data.normals=P,0<N.length&&(_.data.colors=N),0<S.length&&(_.data.uvs=[S]),_.data.faces=R,_},clone:function(){return new g().copy(this)},copy:function(y){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=y.name;for(var v=y.vertices,w=0,E=v.length;w<E;w++)this.vertices.push(v[w].clone());for(var _=y.colors,M=0,x=_.length;M<x;M++)this.colors.push(_[M].clone());for(var C=y.faces,A=0,L=C.length;A<L;A++)this.faces.push(C[A].clone());for(var R,P=0,I=y.faceVertexUvs.length;P<I;P++){R=y.faceVertexUvs[P],this.faceVertexUvs[P]===void 0&&(this.faceVertexUvs[P]=[]);for(var N=0,O=R.length;N<O;N++){for(var S,T=R[N],D=[],B=0,F=T.length;B<F;B++)S=T[B],D.push(S.clone());this.faceVertexUvs[P].push(D)}}for(var G,H=y.morphTargets,te=0,se=H.length;te<se;te++){if(G={},G.name=H[te].name,H[te].vertices!==void 0){G.vertices=[];for(var j=0,z=H[te].vertices.length;j<z;j++)G.vertices.push(H[te].vertices[j].clone())}if(H[te].normals!==void 0){G.normals=[];for(var W=0,ee=H[te].normals.length;W<ee;W++)G.normals.push(H[te].normals[W].clone())}this.morphTargets.push(G)}for(var q,$=y.morphNormals,Y=0,K=$.length;Y<K;Y++){if(q={},$[Y].vertexNormals!==void 0){q.vertexNormals=[];for(var ie=0,k=$[Y].vertexNormals.length;ie<k;ie++){var Z=$[Y].vertexNormals[ie],Q={};Q.a=Z.a.clone(),Q.b=Z.b.clone(),Q.c=Z.c.clone(),q.vertexNormals.push(Q)}}if($[Y].faceNormals!==void 0){q.faceNormals=[];for(var V=0,U=$[Y].faceNormals.length;V<U;V++)q.faceNormals.push($[Y].faceNormals[V].clone())}this.morphNormals.push(q)}for(var oe=y.skinWeights,ae=0,le=oe.length;ae<le;ae++)this.skinWeights.push(oe[ae].clone());for(var fe=y.skinIndices,be=0,we=fe.length;be<we;be++)this.skinIndices.push(fe[be].clone());for(var ue=y.lineDistances,ge=0,re=ue.length;ge<re;ge++)this.lineDistances.push(ue[ge]);var xe=y.boundingBox;xe!==null&&(this.boundingBox=xe.clone());var de=y.boundingSphere;return de!==null&&(this.boundingSphere=de.clone()),this.elementsNeedUpdate=y.elementsNeedUpdate,this.verticesNeedUpdate=y.verticesNeedUpdate,this.uvsNeedUpdate=y.uvsNeedUpdate,this.normalsNeedUpdate=y.normalsNeedUpdate,this.colorsNeedUpdate=y.colorsNeedUpdate,this.lineDistancesNeedUpdate=y.lineDistancesNeedUpdate,this.groupsNeedUpdate=y.groupsNeedUpdate,this},computeGroups(){var b,y,v=[],w=void 0,E=this.faces;for(y=0;y<E.length;y++){var _=E[y];_.materialIndex!==w&&(w=_.materialIndex,b!==void 0&&(b.count=3*y-b.start,v.push(b)),b={start:3*y,materialIndex:w})}return b!==void 0&&(b.count=3*y-b.start,v.push(b)),v},toBufferGeometry:function(){var y=new d().fromGeometry(this),v=new u.BufferGeometry,w=new Float32Array(3*y.vertices.length);if(v.setAttribute("position",new u.BufferAttribute(w,3).copyVector3sArray(y.vertices)),0<y.normals.length){var E=new Float32Array(3*y.normals.length);v.setAttribute("normal",new u.BufferAttribute(E,3).copyVector3sArray(y.normals))}if(0<y.colors.length){var _=new Float32Array(3*y.colors.length);v.setAttribute("color",new u.BufferAttribute(_,3).copyColorsArray(y.colors))}if(0<y.uvs.length){var M=new Float32Array(2*y.uvs.length);v.setAttribute("uv",new u.BufferAttribute(M,2).copyVector2sArray(y.uvs))}if(0<y.uvs2.length){var x=new Float32Array(2*y.uvs2.length);v.setAttribute("uv2",new u.BufferAttribute(x,2).copyVector2sArray(y.uvs2))}for(var C in v.groups=y.groups,y.morphTargets){for(var A=[],L=y.morphTargets[C],R=0,P=L.length;R<P;R++){var I=L[R],N=new u.Float32BufferAttribute(3*I.data.length,3);N.name=I.name,A.push(N.copyVector3sArray(I.data))}v.morphAttributes[C]=A}if(0<y.skinIndices.length){var O=new u.Float32BufferAttribute(4*y.skinIndices.length,4);v.setAttribute("skinIndex",O.copyVector4sArray(y.skinIndices))}if(0<y.skinWeights.length){var S=new u.Float32BufferAttribute(4*y.skinWeights.length,4);v.setAttribute("skinWeight",S.copyVector4sArray(y.skinWeights))}return y.boundingSphere!==null&&(v.boundingSphere=y.boundingSphere.clone()),y.boundingBox!==null&&(v.boundingBox=y.boundingBox.clone()),v},toIndexedBufferGeometry:function(){var y=new u.BufferGeometry,v=new Float32Array(3*this.vertices.length);if(y.setAttribute("position",new u.BufferAttribute(v,3).copyVector3sArray(this.vertices)),0<this.normals.length){var w=new Float32Array(this.normals.length),E=new u.BufferAttribute(w,3).copyArray(this.normals);y.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var _=new Float32Array(2*this.uvs[0].length);y.setAttribute("uv",new u.BufferAttribute(_,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var M=new Float32Array(2*this.uvs[1].length);y.setAttribute("uv2",new u.BufferAttribute(M,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var x=[],C=0;C<this.colors.length;C++)x.push(new u.Color(this.colors[C]));var A=new Float32Array(3*x.length);y.setAttribute("color",new u.BufferAttribute(A,3).copyColorsArray(x))}else{for(var L=new Float32Array(3*this.vertices.length),R=0;R<3*this.vertices.length;R++)L[R]=1;y.setAttribute("color",new u.BufferAttribute(L,3))}if(0<this.faces.length){for(var P=[],I=[],N=0;N<this.faces.length;N++){I.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var O=this.faces[N].vertexColors;if(O.length===3)P.push(O[0],O[1],O[2]);else{var S=this.faces[N].color;P.push(S,S,S)}}y.setIndex(I),y.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var T=[],D=[],B=0,F=this.morphTargets.length;B<F;B++){var G=this.morphTargets[B],H=new u.Float32BufferAttribute(3*G.vertices.length,3);if(H.name=G.name,T.push(H.copyVector3sArray(G.vertices)),G.normals){var te=new u.Float32BufferAttribute(3*G.normals.length,3);te.name=G.name,D.push(te.copyVector3sArray(G.normals))}}y.morphAttributes.position=T,y.morphAttributes.normal=D}if(0<this.skinIndices.length){var se=new u.Float32BufferAttribute(4*this.skinIndices.length,4);y.setAttribute("skinIndex",se.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var j=new u.Float32BufferAttribute(4*this.skinWeights.length,4);y.setAttribute("skinWeight",j.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(y.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(y.boundingBox=this.boundingBox.clone()),y},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(y){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(y)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),g.createBufferGeometryFromObject=function(b){var y=new u.BufferGeometry,v=b.geometry;if(b.isPoints||b.isLine){var w=new u.Float32BufferAttribute(3*v.vertices.length,3),E=new u.Float32BufferAttribute(3*v.colors.length,3);if(y.setAttribute("position",w.copyVector3sArray(v.vertices)),y.setAttribute("color",E.copyColorsArray(v.colors)),v.lineDistances&&v.lineDistances.length===v.vertices.length){var _=new u.Float32BufferAttribute(v.lineDistances.length,1);y.setAttribute("lineDistance",_.copyArray(v.lineDistances))}v.boundingSphere!==null&&(y.boundingSphere=v.boundingSphere.clone()),v.boundingBox!==null&&(y.boundingBox=v.boundingBox.clone())}else b.isMesh&&(y=v.toBufferGeometry());return y};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(y){var v,w,E=[],_=void 0,M=y.faces;for(w=0;w<M.length;w++){var x=M[w];x.materialIndex!==_&&(_=x.materialIndex,v!==void 0&&(v.count=3*w-v.start,E.push(v)),v={start:3*w,materialIndex:_})}v!==void 0&&(v.count=3*w-v.start,E.push(v)),this.groups=E}fromGeometry(y){var v,w=y.faces,E=y.vertices,_=y.faceVertexUvs,M=_[0]&&0<_[0].length,x=_[1]&&0<_[1].length,C=y.morphTargets,A=C.length;if(0<A){v=[];for(var L=0;L<A;L++)v[L]={name:C[L].name,data:[]};this.morphTargets.position=v}var R,P=y.morphNormals,I=P.length;if(0<I){R=[];for(var N=0;N<I;N++)R[N]={name:P[N].name,data:[]};this.morphTargets.normal=R}var O=y.skinIndices,S=y.skinWeights,T=O.length===E.length,D=S.length===E.length;0<E.length&&w.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var B,F=0;F<w.length;F++){B=w[F],this.vertices.push(E[B.a],E[B.b],E[B.c]);var G=B.vertexNormals;if(G.length===3)this.normals.push(G[0],G[1],G[2]);else{var H=B.normal;this.normals.push(H,H,H)}var te=B.vertexColors;if(te.length===3)this.colors.push(te[0],te[1],te[2]);else{var se=B.color;this.colors.push(se,se,se)}if(M===!0){var j=_[0][F];j===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",F),this.uvs.push(new u.Vector2,new u.Vector2,new u.Vector2)):this.uvs.push(j[0],j[1],j[2])}if(x===!0){var z=_[1][F];z===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",F),this.uvs2.push(new u.Vector2,new u.Vector2,new u.Vector2)):this.uvs2.push(z[0],z[1],z[2])}for(var W,ee=0;ee<A;ee++)W=C[ee].vertices,v[ee].data.push(W[B.a],W[B.b],W[B.c]);for(var q,$=0;$<I;$++)q=P[$].vertexNormals[F],R[$].data.push(q.a,q.b,q.c);T&&this.skinIndices.push(O[B.a],O[B.b],O[B.c]),D&&this.skinWeights.push(S[B.a],S[B.b],S[B.c])}return this.computeGroups(y),this.verticesNeedUpdate=y.verticesNeedUpdate,this.normalsNeedUpdate=y.normalsNeedUpdate,this.colorsNeedUpdate=y.colorsNeedUpdate,this.uvsNeedUpdate=y.uvsNeedUpdate,this.groupsNeedUpdate=y.groupsNeedUpdate,y.boundingSphere!==null&&(this.boundingSphere=y.boundingSphere.clone()),y.boundingBox!==null&&(this.boundingBox=y.boundingBox.clone()),this}}class p{constructor(y,v,w,E,_){var M=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=y,this.b=v,this.c=w,this.normal=E&&E.isVector3?E:new u.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=_&&_.isColor?_:new u.Color,this.vertexColors=Array.isArray(_)?_:[],this.materialIndex=M}clone(){return new this.constructor().copy(this)}copy(y){this.a=y.a,this.b=y.b,this.c=y.c,this.normal.copy(y.normal),this.color.copy(y.color),this.materialIndex=y.materialIndex;for(var v=0,w=y.vertexNormals.length;v<w;v++)this.vertexNormals[v]=y.vertexNormals[v].clone();for(var E=0,_=y.vertexColors.length;E<_;E++)this.vertexColors[E]=y.vertexColors[E].clone();return this}}},o=>{o.exports=xF},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(c){c.vertexShader=c.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3182
+ `}),g=g+"new (("+e.toString().replace("ENTRY_MODULE",JSON.stringify(u))+")({"+m.main.map(function(v){return""+JSON.stringify(v)+": "+f.main[v].toString()}).join(",")+"}))(self);";var d=new window.Blob([g],{type:"text/javascript"});if(h.bare)return d;var p=window.URL||window.webkitURL||window.mozURL||window.msURL,b=p.createObjectURL(d),y=new window.Worker(b);return y.objectURL=b,y}}(Zf)),Zf.exports}function jF(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 $F(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(c,u){if(u&&(typeof u=="object"||typeof u=="function")){var h=u.then;if(typeof h=="function"){h.call(u,function(f){o(c,f)},function(f){r[c]={status:"rejected",reason:f},--s===0&&t(r)});return}}r[c]={status:"fulfilled",value:u},--s===0&&t(r)}for(var l=0;l<r.length;l++)o(l,r[l])})}function sw(n,e){this.name="AggregateError",this.errors=n,this.message=e||""}sw.prototype=Error.prototype;function ZF(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 sw(s,"All promises were rejected"))})}catch(l){i(l)}})}var XF=setTimeout;function ow(n){return!!(n&&typeof n.length<"u")}function YF(){}function KF(n,e){return function(){n.apply(e,arguments)}}function xt(n){if(!(this instanceof xt))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=[],lw(n,this)}function aw(n,e){for(;n._state===3;)n=n._value;if(n._state===0){n._deferreds.push(e);return}n._handled=!0,xt._immediateFn(function(){var t=n._state===1?e.onFulfilled:e.onRejected;if(t===null){(n._state===1?Xf:rl)(e.promise,n._value);return}var i;try{i=t(n._value)}catch(r){rl(e.promise,r);return}Xf(e.promise,i)})}function Xf(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 xt){n._state=3,n._value=e,Yf(n);return}else if(typeof t=="function"){lw(KF(t,e),n);return}}n._state=1,n._value=e,Yf(n)}catch(i){rl(n,i)}}function rl(n,e){n._state=2,n._value=e,Yf(n)}function Yf(n){n._state===2&&n._deferreds.length===0&&xt._immediateFn(function(){n._handled||xt._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)aw(n,n._deferreds[e]);n._deferreds=null}function JF(n,e,t){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof e=="function"?e:null,this.promise=t}function lw(n,e){var t=!1;try{n(function(i){t||(t=!0,Xf(e,i))},function(i){t||(t=!0,rl(e,i))})}catch(i){if(t)return;t=!0,rl(e,i)}}xt.prototype.catch=function(n){return this.then(null,n)},xt.prototype.then=function(n,e){var t=new this.constructor(YF);return aw(this,new JF(n,e,t)),t},xt.prototype.finally=jF,xt.all=function(n){return new xt(function(e,t){if(!ow(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,c){try{if(c&&(typeof c=="object"||typeof c=="function")){var u=c.then;if(typeof u=="function"){u.call(c,function(h){s(l,h)},t);return}}i[l]=c,--r===0&&e(i)}catch(h){t(h)}}for(var o=0;o<i.length;o++)s(o,i[o])})},xt.any=ZF,xt.allSettled=$F,xt.resolve=function(n){return n&&typeof n=="object"&&n.constructor===xt?n:new xt(function(e){e(n)})},xt.reject=function(n){return new xt(function(e,t){t(n)})},xt.race=function(n){return new xt(function(e,t){if(!ow(n))return t(new TypeError("Promise.race accepts an array"));for(var i=0,r=n.length;i<r;i++)xt.resolve(n[i]).then(e,t)})},xt._immediateFn=typeof setImmediate=="function"&&function(n){setImmediate(n)}||function(n){XF(n,0)},xt._unhandledRejectionFn=function(e){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};const qF=Wl(Object.freeze(Object.defineProperty({__proto__:null,default:xt},Symbol.toStringTag,{value:"Module"})));(function(n,e){(function(i,r){n.exports=r()})(Qi,()=>(()=>{var t=[(o,l,c)=>{c(1);var u=c(2),h=u.version,f=function(){this.Revision=h,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=c(3).Geometry,this.Glyph=c(16).Glyph,this.Glyphset=c(18).Glyphset,this.Pointset=c(22).Pointset,this.Label=c(17).Label,this.Lines=c(24).Lines,this.TextureArray=c(25).TextureArray,this.TextureSlides=c(27).TextureSlides,this.Renderer=c(30).Renderer,this.Scene=c(32).Scene,this.GeometryCSG=c(50).GeometryCSG,this.GlyphsetCSG=c(56).GlyphsetCSG,this.Viewport=c(43).Viewport,this.CameraControls=c(43).CameraControls,this.SmoothCameraTransition=c(43).SmoothCameraTransition,this.RayCaster=c(43).RayCaster,this.CameraAutoTumble=c(43).CameraAutoTumble,this.StereoEffect=c(43).StereoEffect,this.loadExternalFile=c(5).loadExternalFile,this.loadExternalFiles=c(5).loadExternalFiles,this.THREE=c(4)};o.exports=new f},o=>{o.exports=jN()},o=>{o.exports=JSON.parse('{"name":"zincjs","version":"1.8.3","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,c){var u=c(4),h=c(5).toBufferGeometry,f=(g,d,p)=>{var b=h(g,p),y=!1;1>p.opacity&&(y=!0);var v;if(b._video===void 0){var w=p.localTimeEnabled||p.localMorphColour;d?(v=d,v.morphTargets=w,v.morphNormals=p.localTimeEnabled):b instanceof u.BufferGeometry&&b.attributes.color===void 0?v=new u.MeshPhongMaterial({color:p.colour,morphTargets:w,morphNormals:p.localTimeEnabled,transparent:y,opacity:p.opacity,side:u.DoubleSide}):v=new u.MeshPhongMaterial({color:p.colour,morphTargets:w,morphNormals:p.localTimeEnabled,vertexColors:u.VertexColors,transparent:y,opacity:p.opacity,side:u.DoubleSide}),p.localMorphColour&&b.morphAttributes.color&&(v.onBeforeCompile=c(9).augmentMorphColor())}else{var E=b._video.createCanvasVideoTexture();v=new u.MeshBasicMaterial({morphTargets:p.localTimeEnabled,color:new u.Color(1,1,1),transparent:y,opacity:p.opacity,map:E,side:u.DoubleSide}),this.videoHandler=b._video}return new u.Mesh(b,v)},m=function(){c(10).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(g,d,p)=>{if(!(this.morph&&this.morph.geometry&&g!=null)){var b=f(g,d,p);this.setMesh(b,p.localTimeEnabled,p.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var g=this.geometry.boundingBox.max,d=this.geometry.boundingBox.min,p=new u.Vector2(0-d.x,0-d.y),b=new u.Vector2(g.x-d.x,g.y-d.y);this.geometry.faceVertexUvs[0]=[];for(var y=0;y<this.geometry.faces.length;y++){var v=this.geometry.vertices[this.geometry.faces[y].a],w=this.geometry.vertices[this.geometry.faces[y].b],E=this.geometry.vertices[this.geometry.faces[y].c];geometry.faceVertexUvs[0].push([new u.Vector2((v.x+p.x)/b.x,(v.y+p.y)/b.y),new u.Vector2((w.x+p.x)/b.x,(w.y+p.y)/b.y),new u.Vector2((E.x+p.x)/b.x,(E.y+p.y)/b.y)])}geometry.uvsNeedUpdate=!0},this.checkTransparentMesh=function(){this._lod.checkTransparentMesh()},this.setWireframe=g=>{this.morph.material.wireframe=g},this.editVertices=function(g,d){if(g&&g.length){var p=this.getMorph(),b=p.geometry.getAttribute("position");if(!p||0>d)return;var y=3*d;g.forEach(v=>{b.array[y++]=v[0],b.array[y++]=v[1],b.array[y++]=v[2]}),b.needsUpdate=!0,p.geometry.computeBoundingBox(),p.geometry.computeBoundingSphere(),this.boundingBoxUpdateRequired=!0}}};m.prototype=Object.create(c(10).ZincObject.prototype),l.Geometry=m},o=>{o.exports=rF},(o,l,c)=>{function u(x){throw new TypeError('"'+x+'" is read-only')}var h=c(4),f=c(6).Geometry,m=c(7).default;function g(x){var C=x,A=c(0).modelPrefix;return A&&(A[A.length-1]!="/"&&u("prefix"),/^(?:[a-z]+:)?\/\//i.test(x)||(C=A+x)),C}function d(x,C){var A=new URL(x,C).href;if(x&&2>x.split("?").length){var L=C.split("?");L.length===2&&(A=A+"?"+L[1])}return A}function p(x,C,A,L,R){var P=x.morphTargetInfluences,I=void 0;x.geometry&&(I=x.geometry.morphAttributes);var N=!1;if(P&&I&&I.position){L.set(0,0,0),R.set(0,0,0);for(var O=0;O<P.length;O++)0<P[O]&&(N=!0,A.setFromArray(I.position[O].array),L.add(A.min.multiplyScalar(P[O])),R.add(A.max.multiplyScalar(P[O])));N&&C.set(L,R)}N||C.setFromBufferAttribute(x.geometry.attributes.position),x.updateWorldMatrix(!0,!0),C.applyMatrix4(x.matrixWorld)}function b(x,C,A,L){var R=new XMLHttpRequest;R.open("GET",g(x),!0),R.onreadystatechange=()=>{R.readyState==4&&(R.status==200?A(R.responseText,C):L(x))},R.send(null)}function y(x,C,A){function L(O,S){I[S]=O,P++,P==R&&C(I)}for(var R=x.length,P=0,I=[],N=0;N<R;N++)b(x[N],N,L,A)}l.getColorsRGB=(x,C)=>{var A=Math.floor(C/3),L=C%3,R=0;L==0?R=x[A].r:L==1?R=x[A].g:L==2&&(R=x[A].b);var P=new h.Color(R);return[P.r,P.g,P.b]},l.updateMorphColorAttribute=function(x,C){if(C&&x&&x.morphAttributes&&x.morphAttributes.color){var A=x.morphAttributes.color,L=C.morphTargetInfluences,R=L.length;x.deleteAttribute("morphColor0"),x.deleteAttribute("morphColor1");for(var P=0,I=[],N=0;1>P||N<R;N++)0<L[N]&&(P++,I.push([N,L[N]]));I.length==2?(x.setAttribute("morphColor0",A[I[0][0]]),x.setAttribute("morphColor1",A[I[1][0]])):I.length==1&&(x.setAttribute("morphColor0",A[I[0][0]]),x.setAttribute("morphColor1",A[I[0][0]]))}},l.toBufferGeometry=(x,C)=>{var A;return x instanceof f?(C.localTimeEnabled&&!x.morphNormalsReady&&(x.morphNormals==null||x.morphNormals.length==0)&&x.computeMorphNormals(),A=x.toIndexedBufferGeometry(),C.localMorphColour&&v(x,A)):x instanceof h.BufferGeometry&&(A=x.clone()),A.colorsNeedUpdate=!0,A.computeBoundingBox(),A.computeBoundingSphere(),x._video&&(A._video=x._video),A},l.copyMorphColorsToBufferGeometry=(x,C)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var A=[],L=x.morphColors,R=c(5).getColorsRGB,P=0,I=L.length;P<I;P++){for(var N=L[P],O=[],S=0;S<x.faces.length;S++){var T=x.faces[S],D=R(N.colors,T.a);O.push(D[0],D[1],D[2]),D=R(N.colors,T.b),O.push(D[0],D[1],D[2]),D=R(N.colors,T.c),O.push(D[0],D[1],D[2])}var B=new h.Float32BufferAttribute(3*(3*x.faces.length),3);B.name=N.name,A.push(B.copyArray(O))}C.morphAttributes.color=A}};var v=(x,C)=>{if(x&&x.morphColors&&0<x.morphColors.length){for(var A=[],L=x.morphColors,R=c(5).getColorsRGB,P=0,I=L.length;P<I;P++){for(var N,O=L[P],S=[],T=0;T<3*O.colors.length;T++)N=R(O.colors,T),S.push(N[0],N[1],N[2]);var D=new h.Float32BufferAttribute(S,3);D.name=O.name,A.push(D)}C.morphAttributes.color=A}};l.mergeVertices=function(x){var C=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1e-4;C=Math.max(C,Number.EPSILON);for(var A,L={},R=x.getIndex(),P=x.getAttribute("position"),I=R?R.count:P.count,N=0,O=Object.keys(x.attributes),S={},T={},le=[],D=["getX","getY","getZ","getW"],B=0,F=O.length;B<F;B++){A=O[B],S[A]=[];var G=x.morphAttributes[A];G&&(T[A]=Array(G.length).fill().map(()=>[]))}for(var H=Math.log10(1/C),te=Math.pow(10,H),B=0;B<I;B++){for(var se=R?R.getX(B):B,j="",z=0,F=O.length;z<F;z++)for(var A=O[z],W=x.getAttribute(A),ee=W.itemSize,q=0;q<ee;q++)j+="".concat(~~(W[D[q]](se)*te),",");if(j in L)le.push(L[j]);else{for(var z=0,F=O.length;z<F;z++)for(var $,A=O[z],W=x.getAttribute(A),G=x.morphAttributes[A],ee=W.itemSize,Y=S[A],K=T[A],q=0;q<ee;q++)if($=D[q],Y.push(W[$](se)),G)for(var ie=0,k=G.length;ie<k;ie++)K[ie].push(G[ie][$](se));L[j]=N,le.push(N),N++}}for(var Z=x.clone(),B=0,F=O.length;B<F;B++){var W,A=O[B],Q=x.getAttribute(A),V=new Q.array.constructor(S[A]);if(Q.isInterleavedBufferAttribute?W=new h.BufferAttribute(V,Q.itemSize,Q.itemSize):(W=x.getAttribute(A).clone(),W.setArray(V)),Z.setAttribute(A,W),A in T)for(var U,z=0;z<T[A].length;z++)U=x.morphAttributes[A][z].clone(),U.setArray(new U.array.constructor(T[A][z])),Z.morphAttributes[A][z]=U}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 R===null?le=new h.BufferAttribute(ae,1):(le=x.getIndex().clone(),le.setArray(ae)),Z.setIndex(le),Z};function w(x){if(x.isMeshPhongMaterial){var C=new h.MeshToonMaterial({color:x.color.clone(),morphTargets:x.morphTargets,morphNormals:x.morphNormals,vertexColors:x.vertexColors,transparent:x.transparent,opacity:x.opacity,side:x.side});return x.map&&(C.map=x.map),C}return x}function E(x,C){if(C&&x>=C.length){var A=new h.BufferGeometry,L=new Float32Array(3*x),R=0;return C.forEach(P=>{L[R++]=P[0],L[R++]=P[1],L[R++]=P[2]}),A.setAttribute("position",new h.BufferAttribute(L,3)),A.setDrawRange(0,C.length),A}}function _(){var x=new Image;x.src=c(8);var C=new h.Texture;return C.image=x,C.needsUpdate=!0,C}function M(x,C,A,L,R,P){var I=new m(x,C,A,L,R,P);return I.material.sizeAttenuation=!1,I.material.alphaTest=.5,I.material.transparent=!0,I.material.depthWrite=!1,I.material.depthTest=!1,I.center.set(.5,-1.2),I.renderOrder=1e4,I}l.getBoundingBox=p,l.createNewURL=d,l.createBufferGeometry=E,l.getCircularTexture=_,l.resolveURL=g,l.loadExternalFile=b,l.loadExternalFiles=y,l.PhongToToon=w,l.createNewSpriteText=M},(o,l,c)=>{c.r(l),c.d(l,{Face3:()=>p,Geometry:()=>g});var u=c(4),h=new u.Matrix4,f=new u.Object3D,m=new u.Vector3;function g(){this.uuid=u.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}g.prototype=Object.assign(Object.create(u.EventDispatcher.prototype),{constructor:g,isGeometry:!0,applyMatrix4:function(y){for(var v,w=new u.Matrix3().getNormalMatrix(y),E=0,_=this.vertices.length;E<_;E++)v=this.vertices[E],v.applyMatrix4(y);for(var M,x=0,C=this.faces.length;x<C;x++){M=this.faces[x],M.normal.applyMatrix3(w).normalize();for(var A=0,L=M.vertexNormals.length;A<L;A++)M.vertexNormals[A].applyMatrix3(w).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(y){return h.makeRotationX(y),this.applyMatrix4(h),this},rotateY:function(y){return h.makeRotationY(y),this.applyMatrix4(h),this},rotateZ:function(y){return h.makeRotationZ(y),this.applyMatrix4(h),this},translate:function(y,v,w){return h.makeTranslation(y,v,w),this.applyMatrix4(h),this},scale:function(y,v,w){return h.makeScale(y,v,w),this.applyMatrix4(h),this},lookAt:function(y){return f.lookAt(y),f.updateMatrix(),this.applyMatrix4(f.matrix),this},fromBufferGeometry:function(y){function v(G,H,te,se){var j=C===void 0?[]:[w.colors[G].clone(),w.colors[H].clone(),w.colors[te].clone()],z=x===void 0?[]:[new u.Vector3().fromBufferAttribute(x,G),new u.Vector3().fromBufferAttribute(x,H),new u.Vector3().fromBufferAttribute(x,te)],W=new p(G,H,te,z,j,se);w.faces.push(W),A!==void 0&&w.faceVertexUvs[0].push([new u.Vector2().fromBufferAttribute(A,G),new u.Vector2().fromBufferAttribute(A,H),new u.Vector2().fromBufferAttribute(A,te)]),L!==void 0&&w.faceVertexUvs[1].push([new u.Vector2().fromBufferAttribute(L,G),new u.Vector2().fromBufferAttribute(L,H),new u.Vector2().fromBufferAttribute(L,te)])}var w=this,E=y.index===null?void 0:y.index,_=y.attributes;if(_.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var M=_.position,x=_.normal,C=_.color,A=_.uv,L=_.uv2;L!==void 0&&(this.faceVertexUvs[1]=[]);for(var R=0;R<M.count;R++)w.vertices.push(new u.Vector3().fromBufferAttribute(M,R)),C!==void 0&&w.colors.push(new u.Color().fromBufferAttribute(C,R));var P=y.groups;if(0<P.length)for(var I=0;I<P.length;I++)for(var N=P[I],O=N.start,S=N.count,T=O,D=O+S;T<D;T+=3)E===void 0?v(T,T+1,T+2,N.materialIndex):v(E.getX(T),E.getX(T+1),E.getX(T+2),N.materialIndex);else if(E!==void 0)for(var B=0;B<E.count;B+=3)v(E.getX(B),E.getX(B+1),E.getX(B+2));else for(var F=0;F<M.count;F+=3)v(F,F+1,F+2);return this.computeFaceNormals(),y.boundingBox!==null&&(this.boundingBox=y.boundingBox.clone()),y.boundingSphere!==null&&(this.boundingSphere=y.boundingSphere.clone()),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(m).negate(),this.translate(m.x,m.y,m.z),this},normalize:function(){this.computeBoundingSphere();var y=this.boundingSphere.center,v=this.boundingSphere.radius,w=v===0?1:1/v,E=new u.Matrix4;return E.set(w,0,0,-w*y.x,0,w,0,-w*y.y,0,0,w,-w*y.z,0,0,0,1),this.applyMatrix4(E),this},computeFaceNormals:function(){for(var y=new u.Vector3,v=new u.Vector3,w=0,E=this.faces.length;w<E;w++){var _=this.faces[w],M=this.vertices[_.a],x=this.vertices[_.b],C=this.vertices[_.c];y.subVectors(C,x),v.subVectors(M,x),y.cross(v),y.normalize(),_.normal.copy(y)}},computeVertexNormals:function(){for(var y=!(0<arguments.length&&arguments[0]!==void 0)||arguments[0],v=Array(this.vertices.length),w=0,E=this.vertices.length;w<E;w++)v[w]=new u.Vector3;if(y)for(var _=new u.Vector3,M=new u.Vector3,x=0,C=this.faces.length;x<C;x++){var A=this.faces[x],L=this.vertices[A.a],R=this.vertices[A.b],P=this.vertices[A.c];_.subVectors(P,R),M.subVectors(L,R),_.cross(M),v[A.a].add(_),v[A.b].add(_),v[A.c].add(_)}else{this.computeFaceNormals();for(var I,N=0,O=this.faces.length;N<O;N++)I=this.faces[N],v[I.a].add(I.normal),v[I.b].add(I.normal),v[I.c].add(I.normal)}for(var S=0,T=this.vertices.length;S<T;S++)v[S].normalize();for(var D=0,B=this.faces.length;D<B;D++){var F=this.faces[D],G=F.vertexNormals;G.length===3?(G[0].copy(v[F.a]),G[1].copy(v[F.b]),G[2].copy(v[F.c])):(G[0]=v[F.a].clone(),G[1]=v[F.b].clone(),G[2]=v[F.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),v},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var y=0,v=this.faces.length;y<v;y++){var w=this.faces[y],E=w.vertexNormals;E.length===3?(E[0].copy(w.normal),E[1].copy(w.normal),E[2].copy(w.normal)):(E[0]=w.normal.clone(),E[1]=w.normal.clone(),E[2]=w.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var y,v=0,w=this.faces.length;v<w;v++){y=this.faces[v],y.__originalFaceNormal?y.__originalFaceNormal.copy(y.normal):y.__originalFaceNormal=y.normal.clone(),y.__originalVertexNormals||(y.__originalVertexNormals=[]);for(var E=0,_=y.vertexNormals.length;E<_;E++)y.__originalVertexNormals[E]?y.__originalVertexNormals[E].copy(y.vertexNormals[E]):y.__originalVertexNormals[E]=y.vertexNormals[E].clone()}var M=new g;M.faces=this.faces;for(var x=0,C=this.morphTargets.length;x<C;x++){if(!this.morphNormals[x]){this.morphNormals[x]={},this.morphNormals[x].faceNormals=[],this.morphNormals[x].vertexNormals=[];for(var A=this.morphNormals[x].faceNormals,L=this.morphNormals[x].vertexNormals,R=0,P=this.faces.length;R<P;R++){var I=new u.Vector3,N={a:new u.Vector3,b:new u.Vector3,c:new u.Vector3};A.push(I),L.push(N)}}var O=this.morphNormals[x];M.vertices=this.morphTargets[x].vertices,M.computeFaceNormals();var S=M.computeVertexNormals();if(S&&0<S.length){this.morphTargets[x].normals=Array(this.vertices.length);for(var T=0;T<S.length;T++)this.morphTargets[x].normals[T]=S[T].clone()}for(var D=0,B=this.faces.length;D<B;D++){var F=this.faces[D],G=O.faceNormals[D],H=O.vertexNormals[D];G.copy(F.normal),H.a.copy(F.vertexNormals[0]),H.b.copy(F.vertexNormals[1]),H.c.copy(F.vertexNormals[2])}}for(var te,se=0,j=this.faces.length;se<j;se++)te=this.faces[se],te.normal=te.__originalFaceNormal,te.vertexNormals=te.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new u.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){this.boundingSphere===null&&(this.boundingSphere=new u.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(y,v){var w=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(y&&y.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",y);var E,_=this.vertices.length,M=this.vertices,x=y.vertices,C=this.faces,A=y.faces,L=this.colors,R=y.colors;v!==void 0&&(E=new u.Matrix3().getNormalMatrix(v));for(var P=0,I=x.length;P<I;P++){var N=x[P],O=N.clone();v!==void 0&&O.applyMatrix4(v),M.push(O)}for(var S=0,T=R.length;S<T;S++)L.push(R[S].clone());for(var D=0,B=A.length;D<B;D++){var F=A[D],G=void 0,H=void 0,te=F.vertexNormals,se=F.vertexColors,j=new p(F.a+_,F.b+_,F.c+_);j.normal.copy(F.normal),E!==void 0&&j.normal.applyMatrix3(E).normalize();for(var z=0,W=te.length;z<W;z++)G=te[z].clone(),E!==void 0&&G.applyMatrix3(E).normalize(),j.vertexNormals.push(G);j.color.copy(F.color);for(var ee=0,q=se.length;ee<q;ee++)H=se[ee],j.vertexColors.push(H.clone());j.materialIndex=F.materialIndex+w,C.push(j)}for(var $,Y=0,K=y.faceVertexUvs.length;Y<K;Y++){$=y.faceVertexUvs[Y],this.faceVertexUvs[Y]===void 0&&(this.faceVertexUvs[Y]=[]);for(var ie=0,k=$.length;ie<k;ie++){for(var Z=$[ie],Q=[],V=0,U=Z.length;V<U;V++)Q.push(Z[V].clone());this.faceVertexUvs[Y].push(Q)}}},mergeMesh:function(y){return y&&y.isMesh?(y.matrixAutoUpdate&&y.updateMatrix(),void this.merge(y.geometry,y.matrix)):void console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",y)},mergeVertices:function(){for(var y=0<arguments.length&&arguments[0]!==void 0?arguments[0]:4,v={},w=[],E=[],_=Math.pow(10,y),M=0,x=this.vertices.length;M<x;M++){var C=this.vertices[M],A=Math.round(C.x*_)+"_"+Math.round(C.y*_)+"_"+Math.round(C.z*_);v[A]===void 0?(v[A]=M,w.push(this.vertices[M]),E[M]=w.length-1):E[M]=E[v[A]]}for(var L,R=[],P=0,I=this.faces.length;P<I;P++){L=this.faces[P],L.a=E[L.a],L.b=E[L.b],L.c=E[L.c];for(var N=[L.a,L.b,L.c],O=0;3>O;O++)if(N[O]===N[(O+1)%3]){R.push(P);break}}for(var S,T=R.length-1;0<=T;T--){S=R[T],this.faces.splice(S,1);for(var D=0,B=this.faceVertexUvs.length;D<B;D++)this.faceVertexUvs[D].splice(S,1)}var F=this.vertices.length-w.length;return this.vertices=w,F},setFromPoints:function(y){this.vertices=[];for(var v,w=0,E=y.length;w<E;w++)v=y[w],this.vertices.push(new u.Vector3(v.x,v.y,v.z||0));return this},sortFacesByMaterialIndex:function(){for(var y=this.faces,v=y.length,w=0;w<v;w++)y[w]._id=w;y.sort(function(L,R){return L.materialIndex-R.materialIndex});var E,_,M=this.faceVertexUvs[0],x=this.faceVertexUvs[1];M&&M.length===v&&(E=[]),x&&x.length===v&&(_=[]);for(var C,A=0;A<v;A++)C=y[A]._id,E&&E.push(M[C]),_&&_.push(x[C]);E&&(this.faceVertexUvs[0]=E),_&&(this.faceVertexUvs[1]=_)},toJSON:function(){function y(Y,K,ie){return ie?Y|1<<K:Y&~(1<<K)}function v(Y){var K=Y.x.toString()+Y.y.toString()+Y.z.toString();return I[K]===void 0&&(I[K]=P.length/3,P.push(Y.x,Y.y,Y.z)),I[K]}function w(Y){var K=Y.r.toString()+Y.g.toString()+Y.b.toString();return O[K]===void 0&&(O[K]=N.length,N.push(Y.getHex())),O[K]}function E(Y){var K=Y.x.toString()+Y.y.toString();return T[K]===void 0&&(T[K]=S.length/2,S.push(Y.x,Y.y)),T[K]}var _={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(_.uuid=this.uuid,_.type=this.type,this.name!==""&&(_.name=this.name),this.parameters!==void 0){var M=this.parameters;for(var x in M)M[x]!==void 0&&(_[x]=M[x]);return _}for(var C,A=[],L=0;L<this.vertices.length;L++)C=this.vertices[L],A.push(C.x,C.y,C.z);for(var R=[],P=[],I={},N=[],O={},S=[],T={},D=0;D<this.faces.length;D++){var B=this.faces[D],F=!0,G=!1,H=this.faceVertexUvs[0][D]!==void 0,te=0<B.normal.length(),se=0<B.vertexNormals.length,j=B.color.r!==1||B.color.g!==1||B.color.b!==1,z=0<B.vertexColors.length,W=0;if(W=y(W,0,0),W=y(W,1,F),W=y(W,2,G),W=y(W,3,H),W=y(W,4,te),W=y(W,5,se),W=y(W,6,j),W=y(W,7,z),R.push(W),R.push(B.a,B.b,B.c),R.push(B.materialIndex),H){var ee=this.faceVertexUvs[0][D];R.push(E(ee[0]),E(ee[1]),E(ee[2]))}if(te&&R.push(v(B.normal)),se){var q=B.vertexNormals;R.push(v(q[0]),v(q[1]),v(q[2]))}if(j&&R.push(w(B.color)),z){var $=B.vertexColors;R.push(w($[0]),w($[1]),w($[2]))}}return _.data={},_.data.vertices=A,_.data.normals=P,0<N.length&&(_.data.colors=N),0<S.length&&(_.data.uvs=[S]),_.data.faces=R,_},clone:function(){return new g().copy(this)},copy:function(y){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=y.name;for(var v=y.vertices,w=0,E=v.length;w<E;w++)this.vertices.push(v[w].clone());for(var _=y.colors,M=0,x=_.length;M<x;M++)this.colors.push(_[M].clone());for(var C=y.faces,A=0,L=C.length;A<L;A++)this.faces.push(C[A].clone());for(var R,P=0,I=y.faceVertexUvs.length;P<I;P++){R=y.faceVertexUvs[P],this.faceVertexUvs[P]===void 0&&(this.faceVertexUvs[P]=[]);for(var N=0,O=R.length;N<O;N++){for(var S,T=R[N],D=[],B=0,F=T.length;B<F;B++)S=T[B],D.push(S.clone());this.faceVertexUvs[P].push(D)}}for(var G,H=y.morphTargets,te=0,se=H.length;te<se;te++){if(G={},G.name=H[te].name,H[te].vertices!==void 0){G.vertices=[];for(var j=0,z=H[te].vertices.length;j<z;j++)G.vertices.push(H[te].vertices[j].clone())}if(H[te].normals!==void 0){G.normals=[];for(var W=0,ee=H[te].normals.length;W<ee;W++)G.normals.push(H[te].normals[W].clone())}this.morphTargets.push(G)}for(var q,$=y.morphNormals,Y=0,K=$.length;Y<K;Y++){if(q={},$[Y].vertexNormals!==void 0){q.vertexNormals=[];for(var ie=0,k=$[Y].vertexNormals.length;ie<k;ie++){var Z=$[Y].vertexNormals[ie],Q={};Q.a=Z.a.clone(),Q.b=Z.b.clone(),Q.c=Z.c.clone(),q.vertexNormals.push(Q)}}if($[Y].faceNormals!==void 0){q.faceNormals=[];for(var V=0,U=$[Y].faceNormals.length;V<U;V++)q.faceNormals.push($[Y].faceNormals[V].clone())}this.morphNormals.push(q)}for(var oe=y.skinWeights,ae=0,le=oe.length;ae<le;ae++)this.skinWeights.push(oe[ae].clone());for(var fe=y.skinIndices,be=0,we=fe.length;be<we;be++)this.skinIndices.push(fe[be].clone());for(var ue=y.lineDistances,ge=0,re=ue.length;ge<re;ge++)this.lineDistances.push(ue[ge]);var xe=y.boundingBox;xe!==null&&(this.boundingBox=xe.clone());var de=y.boundingSphere;return de!==null&&(this.boundingSphere=de.clone()),this.elementsNeedUpdate=y.elementsNeedUpdate,this.verticesNeedUpdate=y.verticesNeedUpdate,this.uvsNeedUpdate=y.uvsNeedUpdate,this.normalsNeedUpdate=y.normalsNeedUpdate,this.colorsNeedUpdate=y.colorsNeedUpdate,this.lineDistancesNeedUpdate=y.lineDistancesNeedUpdate,this.groupsNeedUpdate=y.groupsNeedUpdate,this},computeGroups(){var b,y,v=[],w=void 0,E=this.faces;for(y=0;y<E.length;y++){var _=E[y];_.materialIndex!==w&&(w=_.materialIndex,b!==void 0&&(b.count=3*y-b.start,v.push(b)),b={start:3*y,materialIndex:w})}return b!==void 0&&(b.count=3*y-b.start,v.push(b)),v},toBufferGeometry:function(){var y=new d().fromGeometry(this),v=new u.BufferGeometry,w=new Float32Array(3*y.vertices.length);if(v.setAttribute("position",new u.BufferAttribute(w,3).copyVector3sArray(y.vertices)),0<y.normals.length){var E=new Float32Array(3*y.normals.length);v.setAttribute("normal",new u.BufferAttribute(E,3).copyVector3sArray(y.normals))}if(0<y.colors.length){var _=new Float32Array(3*y.colors.length);v.setAttribute("color",new u.BufferAttribute(_,3).copyColorsArray(y.colors))}if(0<y.uvs.length){var M=new Float32Array(2*y.uvs.length);v.setAttribute("uv",new u.BufferAttribute(M,2).copyVector2sArray(y.uvs))}if(0<y.uvs2.length){var x=new Float32Array(2*y.uvs2.length);v.setAttribute("uv2",new u.BufferAttribute(x,2).copyVector2sArray(y.uvs2))}for(var C in v.groups=y.groups,y.morphTargets){for(var A=[],L=y.morphTargets[C],R=0,P=L.length;R<P;R++){var I=L[R],N=new u.Float32BufferAttribute(3*I.data.length,3);N.name=I.name,A.push(N.copyVector3sArray(I.data))}v.morphAttributes[C]=A}if(0<y.skinIndices.length){var O=new u.Float32BufferAttribute(4*y.skinIndices.length,4);v.setAttribute("skinIndex",O.copyVector4sArray(y.skinIndices))}if(0<y.skinWeights.length){var S=new u.Float32BufferAttribute(4*y.skinWeights.length,4);v.setAttribute("skinWeight",S.copyVector4sArray(y.skinWeights))}return y.boundingSphere!==null&&(v.boundingSphere=y.boundingSphere.clone()),y.boundingBox!==null&&(v.boundingBox=y.boundingBox.clone()),v},toIndexedBufferGeometry:function(){var y=new u.BufferGeometry,v=new Float32Array(3*this.vertices.length);if(y.setAttribute("position",new u.BufferAttribute(v,3).copyVector3sArray(this.vertices)),0<this.normals.length){var w=new Float32Array(this.normals.length),E=new u.BufferAttribute(w,3).copyArray(this.normals);y.setAttribute("normal",E)}if(0<this.uvs.length&&0<this.uvs[0].length){var _=new Float32Array(2*this.uvs[0].length);y.setAttribute("uv",new u.BufferAttribute(_,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var M=new Float32Array(2*this.uvs[1].length);y.setAttribute("uv2",new u.BufferAttribute(M,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var x=[],C=0;C<this.colors.length;C++)x.push(new u.Color(this.colors[C]));var A=new Float32Array(3*x.length);y.setAttribute("color",new u.BufferAttribute(A,3).copyColorsArray(x))}else{for(var L=new Float32Array(3*this.vertices.length),R=0;R<3*this.vertices.length;R++)L[R]=1;y.setAttribute("color",new u.BufferAttribute(L,3))}if(0<this.faces.length){for(var P=[],I=[],N=0;N<this.faces.length;N++){I.push(this.faces[N].a,this.faces[N].b,this.faces[N].c);var O=this.faces[N].vertexColors;if(O.length===3)P.push(O[0],O[1],O[2]);else{var S=this.faces[N].color;P.push(S,S,S)}}y.setIndex(I),y.groups=this.computeGroups()}if(0<this.morphTargets.length){for(var T=[],D=[],B=0,F=this.morphTargets.length;B<F;B++){var G=this.morphTargets[B],H=new u.Float32BufferAttribute(3*G.vertices.length,3);if(H.name=G.name,T.push(H.copyVector3sArray(G.vertices)),G.normals){var te=new u.Float32BufferAttribute(3*G.normals.length,3);te.name=G.name,D.push(te.copyVector3sArray(G.normals))}}y.morphAttributes.position=T,y.morphAttributes.normal=D}if(0<this.skinIndices.length){var se=new u.Float32BufferAttribute(4*this.skinIndices.length,4);y.setAttribute("skinIndex",se.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var j=new u.Float32BufferAttribute(4*this.skinWeights.length,4);y.setAttribute("skinWeight",j.copyVector4sArray(this.skinWeights))}return this.boundingSphere!==null&&(y.boundingSphere=this.boundingSphere.clone()),this.boundingBox!==null&&(y.boundingBox=this.boundingBox.clone()),y},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(y){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(y)},dispose:function(){this.dispatchEvent({type:"dispose"})}}),g.createBufferGeometryFromObject=function(b){var y=new u.BufferGeometry,v=b.geometry;if(b.isPoints||b.isLine){var w=new u.Float32BufferAttribute(3*v.vertices.length,3),E=new u.Float32BufferAttribute(3*v.colors.length,3);if(y.setAttribute("position",w.copyVector3sArray(v.vertices)),y.setAttribute("color",E.copyColorsArray(v.colors)),v.lineDistances&&v.lineDistances.length===v.vertices.length){var _=new u.Float32BufferAttribute(v.lineDistances.length,1);y.setAttribute("lineDistance",_.copyArray(v.lineDistances))}v.boundingSphere!==null&&(y.boundingSphere=v.boundingSphere.clone()),v.boundingBox!==null&&(y.boundingBox=v.boundingBox.clone())}else b.isMesh&&(y=v.toBufferGeometry());return y};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(y){var v,w,E=[],_=void 0,M=y.faces;for(w=0;w<M.length;w++){var x=M[w];x.materialIndex!==_&&(_=x.materialIndex,v!==void 0&&(v.count=3*w-v.start,E.push(v)),v={start:3*w,materialIndex:_})}v!==void 0&&(v.count=3*w-v.start,E.push(v)),this.groups=E}fromGeometry(y){var v,w=y.faces,E=y.vertices,_=y.faceVertexUvs,M=_[0]&&0<_[0].length,x=_[1]&&0<_[1].length,C=y.morphTargets,A=C.length;if(0<A){v=[];for(var L=0;L<A;L++)v[L]={name:C[L].name,data:[]};this.morphTargets.position=v}var R,P=y.morphNormals,I=P.length;if(0<I){R=[];for(var N=0;N<I;N++)R[N]={name:P[N].name,data:[]};this.morphTargets.normal=R}var O=y.skinIndices,S=y.skinWeights,T=O.length===E.length,D=S.length===E.length;0<E.length&&w.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var B,F=0;F<w.length;F++){B=w[F],this.vertices.push(E[B.a],E[B.b],E[B.c]);var G=B.vertexNormals;if(G.length===3)this.normals.push(G[0],G[1],G[2]);else{var H=B.normal;this.normals.push(H,H,H)}var te=B.vertexColors;if(te.length===3)this.colors.push(te[0],te[1],te[2]);else{var se=B.color;this.colors.push(se,se,se)}if(M===!0){var j=_[0][F];j===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",F),this.uvs.push(new u.Vector2,new u.Vector2,new u.Vector2)):this.uvs.push(j[0],j[1],j[2])}if(x===!0){var z=_[1][F];z===void 0?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",F),this.uvs2.push(new u.Vector2,new u.Vector2,new u.Vector2)):this.uvs2.push(z[0],z[1],z[2])}for(var W,ee=0;ee<A;ee++)W=C[ee].vertices,v[ee].data.push(W[B.a],W[B.b],W[B.c]);for(var q,$=0;$<I;$++)q=P[$].vertexNormals[F],R[$].data.push(q.a,q.b,q.c);T&&this.skinIndices.push(O[B.a],O[B.b],O[B.c]),D&&this.skinWeights.push(S[B.a],S[B.b],S[B.c])}return this.computeGroups(y),this.verticesNeedUpdate=y.verticesNeedUpdate,this.normalsNeedUpdate=y.normalsNeedUpdate,this.colorsNeedUpdate=y.colorsNeedUpdate,this.uvsNeedUpdate=y.uvsNeedUpdate,this.groupsNeedUpdate=y.groupsNeedUpdate,y.boundingSphere!==null&&(this.boundingSphere=y.boundingSphere.clone()),y.boundingBox!==null&&(this.boundingBox=y.boundingBox.clone()),this}}class p{constructor(y,v,w,E,_){var M=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=y,this.b=v,this.c=w,this.normal=E&&E.isVector3?E:new u.Vector3,this.vertexNormals=Array.isArray(E)?E:[],this.color=_&&_.isColor?_:new u.Color,this.vertexColors=Array.isArray(_)?_:[],this.materialIndex=M}clone(){return new this.constructor().copy(this)}copy(y){this.a=y.a,this.b=y.b,this.c=y.c,this.normal.copy(y.normal),this.color.copy(y.color),this.materialIndex=y.materialIndex;for(var v=0,w=y.vertexNormals.length;v<w;v++)this.vertexNormals[v]=y.vertexNormals[v].clone();for(var E=0,_=y.vertexColors.length;E<_;E++)this.vertexColors[E]=y.vertexColors[E].clone();return this}}},o=>{o.exports=xF},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(c){c.vertexShader=c.vertexShader.replace("#include <color_pars_vertex>",["varying vec3 vColor;","attribute vec3 morphColor0;","attribute vec3 morphColor1;"].join(`
3183
3183
  `)),c.vertexShader=c.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,c)=>{var u=c(4),h=c(5).createBufferGeometry,f=0,m=function(){return"pr"+f++},g=function(){this.isZincObject=!0,this.geometry=void 0,this.morph=void 0,this.group=new u.Group,this._lod=new(c(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 u.Box3,this.anatomicalId=void 0,this.region=void 0,this.animationClip=void 0,this.markerMode="inherited",this.uuid=m(),this._v1=new u.Vector3,this._v2=new u.Vector3,this._b1=new u.Box3,this.center=new u.Vector3,this.radius=0,this.visible=!0,this.drawRange=-1};g.prototype.setDuration=function(d){this.duration=d,this.clipAction&&this.clipAction.setDuration(this.duration)},g.prototype.getDuration=function(){return this.duration},g.prototype.setRegion=function(d){this.region=d},g.prototype.getRegion=function(){return this.region},g.prototype.getMorph=function(){var d=this._lod.getCurrentMorph();return d||this.morph},g.prototype.getGroup=function(){return this.group},g.prototype.setMorph=function(d){this.morph=d,this.group.add(this.morph);var p=this._lod.calculateDistance("far");this._lod.addLevel(d,p),this._lod.setMaterial(d.material)},g.prototype.checkTransparentMesh=function(){},g.prototype.setMesh=function(d,p,b){this.animationGroup=new u.AnimationObjectGroup(d),this.mixer=new u.AnimationMixer(this.animationGroup);var y=d.geometry;if(this.geometry=d.geometry,this.clipAction=void 0,y&&y.morphAttributes){var v=y.morphAttributes.position;v||(v=y.morphAttributes.color?y.morphAttributes.color:y.morphAttributes.normal),v&&(this.animationClip=u.AnimationClip.CreateClipsFromMorphTargetSequences(v,10,!0),this.animationClip&&this.animationClip[0]!=null&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=u.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=p,this.morphColour=b,d.userData=this,d.matrixAutoUpdate=!1,this.setMorph(d),this.checkTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(y.setAttribute("morphTarget0",y.getAttribute("position")),y.setAttribute("morphTarget1",y.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},g.prototype.setName=function(d){this.groupName=d,this._lod.setName(d)},g.prototype.getCurrentTime=function(){if(this.clipAction){var d=this.clipAction.time/this.clipAction._clip.duration;return this.duration*d}return this.inbuildTime},g.prototype.setMorphTime=function(d){var p=!1;if(this.clipAction){var b=d/this.duration,y=this.clipAction._clip.duration,v=b*y;v!=this.clipAction.time&&(this.clipAction.time=v,p=!0),p&&this.isTimeVarying()&&this.mixer.update(0)}else{var w=d;w=d>this.duration?this.duration:0>d?0:d,w!=this.inbuildTime&&(this.inbuildTime=w,p=!0)}p&&(this.boundingBoxUpdateRequired=!0,this._lod.updateMorphColorAttribute(!0),this.timeEnabled&&(this.markerUpdateRequired=!0))},g.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},g.prototype.getVisibility=function(){return this.visible},g.prototype.setVisibility=function(d){d!==this.visible&&(this.visible=d,this.group.visible=d,this.region&&(this.region.pickableUpdateRequired=!0))},g.prototype.setAlpha=function(d){var p=this._lod._material,b=!1;1>d&&(b=!0),p.opacity=d,p.transparent=b,this.checkTransparentMesh()},g.prototype.setFrustumCulled=function(d){this._lod.setFrustumCulled(d)},g.prototype.setVertexColors=function(d){this._lod.setVertexColors(d)},g.prototype.getColour=function(){return this._lod._material?this._lod._material.color:void 0},g.prototype.setColour=function(d){this._lod.setColour(d)},g.prototype.getColourHex=function(){return!this.morphColour&&this._lod._material&&this._lod._material.color?this._lod._material.color.getHexString():void 0},g.prototype.setColourHex=function(d){this._lod._material.color.setHex(d),this._lod._secondaryMaterial&&this._lod._secondaryMaterial.color.setHex(d)},g.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)},g.prototype.setMaterial=function(d){this._lod.setMaterial(d)},g.prototype.getClosestVertexIndex=function(){var d=-1,p=this.getMorph();if(p&&p.geoemtry){var b=p.geometry.attributes.position;if(this._b1.setFromBufferAttribute(b),this._b1.getCenter(this._v1),b)for(var y=-1,v=0,w=0;w<b.count;w++)this._v2.fromArray(b.array,3*w),v=this._v2.distanceTo(this._v1),y==-1?y=v:y>v&&(y=v,d=w)}return d},g.prototype.getClosestVertex=function(d){var p=new u.Vector3;this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex());var b=this.getMorph();if(b&&b.geometry&&0<=this.closestVertexIndex){var y=b.morphTargetInfluences,v=b.geometry.morphAttributes;if(y&&v&&v.position){for(var w=!1,E=0;E<y.length;E++)0<y[E]&&(w=!0,this._v1.fromArray(v.position[E].array,3*this.closestVertexIndex),p.add(this._v1.multiplyScalar(y[E])));if(w)return d?p.applyMatrix4(b.matrixWorld):p}else return p.fromArray(b.geometry.attributes.position.array,3*this.closestVertexIndex),d?p.applyMatrix4(b.matrixWorld):p}return this.getBoundingBox(),p.copy(this.center),d?p.applyMatrix4(this.morph.matrixWorld):p},g.prototype.getBoundingBox=function(){if(this.visible){var d=this._lod.getCurrentMorph();if(d&&d.visible)return this.boundingBoxUpdateRequired&&(c(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}},g.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},g.prototype.markerIsRequired=function(d){return!!(this.visible&&(this.markerMode==="on"||d&&d.displayMarkers&&this.markerMode==="inherited"))},g.prototype.updateMarker=function(d,p){if(d==!1&&this.markerIsRequired(p)){var b=p.ndcToBeUpdated;if(this.groupName){if(this.marker||(this.marker=new(c(14)).Marker(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var y=this.getClosestVertex(!1);y&&(this.marker.setPosition(y.x,y.y,y.z),this.markerUpdateRequired=!1)}this.marker.isEnabled()||(p.markersList&&!(this.marker.uuid in p.markersList)&&(b=!0,p.markersList[this.marker.uuid]=this.marker),this.marker.enable(),this.group.add(this.marker.morph)),this.marker.setNumber(this.markerNumber),p&&p.camera&&(b||p.markerCluster.markerUpdateRequired)&&(this.marker.updateNDC(p.camera.cameraObject),p.markerCluster.markerUpdateRequired=!0)}}else this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.group.remove(this.marker.morph),p.markersList&&this.marker.uuid in p.markersList&&(p.markerCluster.markerUpdateRequired=!0,delete p.markersList[this.marker.uuid])),this.markerUpdateRequired=!0},g.prototype.processMarkerVisual=function(d,p){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(d,p)},g.prototype.initiateMorphColor=function(){this.morphColour==1&&this._lod.updateMorphColorAttribute(!1)},g.prototype.setRenderOrder=function(d){this._lod.setRenderOrder(d)},g.prototype.getClosestVertexDOMElementCoords=function(d){if(d&&d.camera){var p=!0,b=this.getClosestVertex(!0);return b.project(d.camera),b.z=Math.min(Math.max(b.z,0),1),(1<b.x||-1>b.x||1<b.y||-1>b.y)&&(p=!1),d.getZincCameraControls().getRelativeCoordsFromNDC(b.x,b.y,b),{position:b,inView:p}}},g.prototype.setMarkerMode=function(d,p){d!==this.markerMode&&(this.markerMode=d==="on"||d==="off"?d:"inherited",this.region&&(this.region.pickableUpdateRequired=!0)),p&&(this.markerNumber=p.number)},g.prototype.render=function(d,p,b,y){if(this.visible&&!(this.timeEnabled&&p)&&this._lod.update(b,this.center),p==!0){if(this.clipAction&&this.isTimeVarying())this.mixer.update(d);else{var v=this.inbuildTime+d;v>this.duration&&(v-=this.duration),this.inbuildTime=v}this.visible&&d!=0&&(this.boundingBoxUpdateRequired=!0,this.morphColour==1&&this._lod.updateMorphColorAttribute(!0))}this.updateMarker(p,y)},g.prototype.addLOD=function(d,p,b,y){this._lod.addLevelFromURL(d,p,b,y)},g.prototype.addVertices=function(d){var p=this.getMorph(),b=void 0;if(!p)b=h(d.length+500,d),this.drawRange=d.length;else if(-1<this.drawRange){var y=p.geometry.getAttribute("position");d.forEach(v=>{y.setXYZ(this.drawRange,v[0],v[1],v[2]),++this.drawRange}),y.needsUpdate=!0,p.geometry.setDrawRange(0,this.drawRange),p.geometry.computeBoundingBox(),p.geometry.computeBoundingSphere(),b=p.geoemtry,this.boundingBoxUpdateRequired=!0}return b},g.prototype.setPosition=function(d,p,b){var y=this.getGroup();y&&(y.position.set(d,p,b),y.updateMatrix(),this.boundingBoxUpdateRequired=!0)},g.prototype.setScaleAll=function(d){var p=this.getGroup();p&&(p.scale.set(d,d,d),p.updateMatrix(),this.boundingBoxUpdateRequired=!0)},l.ZincObject=g},(o,l,c)=>{var u=c(4),h=c(5).updateMorphColorAttribute,f=c(5).toBufferGeometry,m=function(g){this.levels=[],this._currentLevel=0,this._renderOrder=1,this._material=void 0,this._secondaryMaterial=void 0,this._loader=void 0,this._parent=g,this.addLevel=(p,b)=>{if(p){var y,v=Math.abs(b);for(y=0;y<this.levels.length&&!(v<this.levels[y].distance);y++);this.levels.splice(y,0,{distance:v,morph:p,loaded:!0,loading:!1,url:""}),p.renderOrder=this._renderOrder}},this.levelLoaded=(p,b)=>{if(p){for(var y=Math.abs(b),v=0;v<this.levels.length;v++)if(y===this.levels[v].distance){this._parent.group.add(p),this.levels[v].morph=p,this.levels[v].loaded=!0,this.levels[v].loading=!1;break}this.checkTransparentMesh()}},this.addLevelFromURL=(p,b,y,v)=>{this._loader=p;var w,E=this.calculateDistance(b);for(w=0;w<this.levels.length&&!(E<this.levels[w].distance);w++);this.levels.splice(w,0,{distance:E,morph:void 0,loaded:!1,loading:!1,url:y}),v&&this.loadLevel(w)},this.loadLevel=p=>{var b=this.levels[p];return b.morph||b.loaded||b.loading||(b.loading=!0,this._loader.load(b.url,this.lodLoader(b.distance),void 0,void 0)),b.morph===void 0},this.calculateDistance=function(p){this._parent.getBoundingBox();var b=this._parent.radius,y=0;return p==="far"?y=4.5*b:p==="medium"?y=2.5*b:p=="close"&&(y=0),y},this.containsLevels=()=>!!(this.levels&&1<this.levels.length),this.checkTransparentMesh=()=>{var p=this.levels[this._currentLevel];this._material&&(this._material.transparent?(!this._secondaryMaterial&&(this._secondaryMaterial=this._material.clone(),this._secondaryMaterial.side=u.FrontSide),this._secondaryMaterial.opacity=this._material.opacity,this._secondaryMaterial.emissive&&this._secondaryMaterial.emissive.copy(this._material.emissive),this._secondaryMaterial.needsUpdate=!0,!p.secondaryMesh&&(p.secondaryMesh=new u.Mesh(p.morph.geometry,this._secondaryMaterial),p.secondaryMesh.renderOrder=p.morph.renderOrder+1,p.secondaryMesh.userData=p.morph.userData,p.secondaryMesh.name=p.morph.name),this._material.side=u.BackSide,this._material.needsUpdate=!0,!p.secondaryMesh.parent&&(p.morph.add(p.secondaryMesh),this._parent.animationGroup&&this._parent.animationGroup.add(p.secondaryMesh))):(p.secondaryMesh&&(p.morph.remove(p.secondaryMesh),this._parent.animationGroup&&(this._parent.animationGroup.uncache(p.secondaryMesh),this._parent.animationGroup.remove(p.secondaryMesh))),this._material.side=u.DoubleSide,this._material.needsUpdate=!0))},this.dispose=()=>{this.levels.forEach(p=>{p.morph&&p.morph.geometry&&p.morph.geometry.dispose()}),this._material&&this._material.dispose(),this._secondaryMaterial&&this._secondaryMaterial.dispose()},this.getCurrentLevel=()=>this._currentLevel,this.getCurrentMorph=()=>{var p=this.levels[this._currentLevel];return p&&p.morph?p.morph:this._parent.morph},this.lodLoader=function(p){return b=>{var y=this._material,v={localTimeEnabled:this._parent.timeEnabled,localMorphColour:this._parent.morphColour},w=f(b,v),E=void 0;this._parent.isGeometry?E=new u.Mesh(w,y):this._parent.isLines&&(E=new(c(12)).LineSegments(w,y)),E.userData=this._parent,E.renderOrder=this._renderOrder,b.dispose(),this.levelLoaded(E,p)}},this.updateMorphColorAttribute=p=>{if(this._material&&(this._material.vertexColors==u.VertexColors||this._material.vertexColors==!0))if(p){var b=this.getCurrentMorph();h(b.geometry,b)}else this.levels.forEach(y=>{y.morph&&y.morph.geometry&&h(y.morph.geometry,y.morph)})},this.setColour=p=>{this._material.color=p,this._secondaryMaterial&&(this._secondaryMaterial.color=p),d()},this.setFrustumCulled=p=>{this.levels.forEach(b=>{b.morph&&(b.morph.frustumCulled=p),b.secondaryMesh&&(b.secondaryMesh.frustumCulled=p)})},this.setMaterial=p=>{p&&(!this._material||this._material.id!==p.id)&&(this._material=p,this._secondaryMaterial&&this._secondaryMaterial.dispose(),this._secondaryMaterial=p.clone(),this._secondaryMaterial.side=u.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=p=>{this.levels.forEach(b=>{b.morph&&(b.morph.name=p),b.secondaryMesh&&(b.secondaryMesh.name=p)})},this.setRenderOrder=p=>{this._renderOrder=p,this.levels.forEach(b=>{b.morph&&(b.morph.renderOrder=p),b.secondaryMesh&&(b.secondaryMesh.renderOrder=p)})},this.setVertexColors=p=>{this._material.vertexColors=p,d(),this._secondaryMaterial&&(this._secondaryMaterial.vertexColors=p)},this.update=(p,b)=>{var y=this.levels;if(1<y.length){var v,w,E=p.cameraObject.position.distanceTo(b),_=-1,M=-1;for(v=0,w=y.length;v<w&&E>=y[v].distance;v++)y[v].morph?(-1<_&&y[_].morph&&(y[_].morph.visible=!1),_=v,y[v].morph.visible=!0,M=-1):M=v;for(-1<M&&this.loadLevel(M);v<w;v++)y[v].morph&&(-1<_?y[v].morph.visible=!1:(y[v].morph.visible=!0,_=v));this._currentLevel!=_&&(this._currentLevel=_,this.checkTransparentMesh())}},this.toggleMarker=(p,b)=>{this.levels.forEach(y=>{y.morph&&(b?y.morph.add(p):y.morph.remove(p))})};var d=()=>{this.levels.forEach(p=>{p.morph&&p.morph.geometry&&(p.morph.geometry.colorsNeedUpdate=!0)})}};l.LOD=m},(o,l,c)=>{c.r(l),c.d(l,{LineSegments:()=>g});var u=c(13),h=c(4),f=new h.Vector3,m=new h.Vector3;class g extends u.Line{constructor(p,b){super(p,b),this.type="LineSegments"}computeLineDistances(){var p=this.geometry;if(!p.isBufferGeometry)p.isGeometry&&console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(p.index===null){for(var b=p.attributes.position,y=[],v=0,w=b.count;v<w;v+=2)f.fromBufferAttribute(b,v),m.fromBufferAttribute(b,v+1),y[v]=v==0?0:y[v-1],y[v+1]=y[v]+f.distanceTo(m);p.setAttribute("lineDistance",new h.Float32BufferAttribute(y,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}g.prototype.isLineSegments=!0},(o,l,c)=>{c.r(l),c.d(l,{Line:()=>w});var u=c(4),h=new u.Vector3,f=new u.Vector3,m=new u.Matrix4,g=new u.Ray,d=new u.Sphere,p=new u.Vector3,b=new u.Vector3,y=new u.Vector3,v=new u.Vector3;class w extends u.Object3D{constructor(){var M=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new u.BufferGeometry,x=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new u.LineBasicMaterial;super(),this.type="Line",this.geometry=M,this.material=x,this.updateMorphTargets()}copy(M){return super.copy(M),this.material=M.material,this.geometry=M.geometry,this}computeLineDistances(){var M=this.geometry;if(!M.isBufferGeometry)M.isGeometry&&console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else if(M.index===null){for(var x=M.attributes.position,C=[0],A=1,L=x.count;A<L;A++)h.fromBufferAttribute(x,A-1),f.fromBufferAttribute(x,A),C[A]=C[A-1],C[A]+=h.distanceTo(f);M.setAttribute("lineDistance",new u.Float32BufferAttribute(C,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(M,x){var C=this.geometry,A=this.matrixWorld,L=M.params.Line.threshold,R=C.drawRange,P=C.morphAttributes.position;if(C.boundingSphere===null&&C.computeBoundingSphere(),d.copy(C.boundingSphere),d.applyMatrix4(A),d.radius+=L,M.ray.intersectsSphere(d)!==!1){m.copy(A).invert(),g.copy(M.ray).applyMatrix4(m);var I=L/((this.scale.x+this.scale.y+this.scale.z)/3),N=I*I,O=new u.Vector3,S=new u.Vector3,T=new u.Vector3,D=new u.Vector3,B=this.isLineSegments?2:1;if(C.isBufferGeometry){var F=C.index,G=C.attributes,H=G.position;if(F!==null)for(var te=Math.max(0,R.start),se=Math.min(F.count,R.start+R.count),j=te;j<se-1;j+=B){var z=F.getX(j),W=F.getX(j+1);E(O,S,this,H,P,z,W);var ee=g.distanceSqToSegment(O,S,D,T);if(!(ee>N)){D.applyMatrix4(this.matrixWorld);var q=M.ray.origin.distanceTo(D);q<M.near||q>M.far||x.push({distance:q,point:T.clone().applyMatrix4(this.matrixWorld),index:j,face:null,faceIndex:null,object:this})}}else for(var $=Math.max(0,R.start),Y=Math.min(H.count,R.start+R.count),K=$;K<Y-1;K+=B){E(O,S,this,H,P,K,K+1);var ie=g.distanceSqToSegment(O,S,D,T);if(!(ie>N)){D.applyMatrix4(this.matrixWorld);var k=M.ray.origin.distanceTo(D);k<M.near||k>M.far||x.push({distance:k,point:T.clone().applyMatrix4(this.matrixWorld),index:K,face:null,faceIndex:null,object:this})}}}else C.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var M=this.geometry;if(M.isBufferGeometry){var x=M.morphAttributes,C=Object.keys(x);if(0<C.length){var A=x[C[0]];if(A!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var L,R=0,P=A.length;R<P;R++)L=A[R].name||R+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[L]=R}}}else{var I=M.morphTargets;I!==void 0&&0<I.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function E(_,M,x,C,A,L,R){_.fromBufferAttribute(C,L),M.fromBufferAttribute(C,R);var P=x.morphTargetInfluences;if(x.material.morphTargets&&A&&P){p.set(0,0,0),b.set(0,0,0);for(var I=0,N=A.length;I<N;I++){var O=P[I],S=A[I];O!==0&&(y.fromBufferAttribute(S,L),v.fromBufferAttribute(S,R),p.addScaledVector(y.sub(_),O),b.addScaledVector(v.sub(M),O))}_.add(p),M.add(b)}}w.prototype.isLine=!0},(o,l,c)=>{var u=c(4),h=new Image(128,128);h.src=c(15);var f=new u.Texture;f.image=h,f.needsUpdate=!0;var m=[.02,.03,1],g=new u.SpriteMaterial({map:f,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),d=c(5).createNewSpriteText,p=function(b){c(10).ZincObject.call(this),this.texture=f;var y;this.morph=new u.Group,this.group=this.morph,this.parent=b,this.isMarker=!0;var v=!1;this.ndc=new u.Vector3;var w=void 0,E=void 0,_=()=>{y=new u.Sprite(g),y.center.set(.5,0),this.morph.add(y),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,y.scale.set(m[0],m[1],m[2]),y.userData=this};this.updateVisual=(M,x)=>{var C=1,A=0;M!==x&&(A=1-(this.ndc.z-M)/(x-M),C=.6+.4*A),this.setSpriteSize(C)},this.updateNDC=M=>(this.ndc.copy(this.morph.position),this.ndc.project(M),this.ndc.z=Math.min(Math.max(this.ndc.z,0),1),this.ndc),this.setPosition=(M,x,C)=>{this.morph.position.set(M,x,C)},this.setSpriteSize=M=>{y.scale.set(.015,.02,1),y.scale.multiplyScalar(M)},this.dispose=()=>{this.morph&&this.morph.clear(),y&&(y.clear(),y=void 0),E&&(E.material.map.dispose(),E.material.dispose(),E=void 0)},this.isEnabled=()=>v,this.setNumber=M=>{(!M||w!=M)&&E&&(this.morph.remove(E),E.material.map.dispose(),E.material.dispose(),E=void 0),!E&&M&&(E=d(M,.012,"black","Asap",50,500),this.morph.add(E)),w=M},this.getNumber=()=>w||1,this.setVisibility=function(M){M!==this.visible&&(this.visible=M,this.group.visible=M,this.parent.region&&(this.parent.region.pickableUpdateRequired=!0))},this.enable=()=>{v=!0,this.morph.visible=!0,this.visible=!0},this.disable=()=>{v=!1,this.morph.visible=!1,this.visible=!1},_()};p.prototype=Object.create(c(10).ZincObject.prototype),l.Marker=p},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgdmlld0JveD0iMCAwIDM2NSA1NjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4NCjxkZWZzPg0KPC9kZWZzPg0KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCAwKSIgaWQ9IjgwOGVkMjgzLTI1MjQtNDQwZi04OGFlLTNiZGI0N2JiNTc0OSIgID4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4NCjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItMTgyLjUiIHk9Ii0yODAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIC8+DQo8L2c+DQo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+DQo8ZyBzdHlsZT0iIiAgID4NCjwvZz4NCjwvZz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMCA5Ny41KSIgID4NCjxnIHN0eWxlPSIiICAgPg0KPC9nPg0KPC9nPg0KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC45OSAwIDAgMC45OSAxODIuNSAyODApIiAgPg0KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDApIiAgPg0KPHBhdGggc3R5bGU9InN0cm9rZTogcmdiKDAsMCwwKTsgc3Ryb2tlLXdpZHRoOiAwOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMCw4OSwxMTYpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB0cmFuc2Zvcm09IiB0cmFuc2xhdGUoLTE4Mi45LCAtMjc5Ljg1KSIgZD0iTSAxODIuOSA1NTEuNyBDIDE4Mi45IDU1MS44MDAwMDAwMDAwMDAxIDE4My4xIDU1MiAxODMuMSA1NTIgQyAxODMuMSA1NTIgMzU4LjMgMjgzIDM1OC4zIDE5NC42IEMgMzU4LjMgNjQuNSAyNjkuNSA3LjkwMDAwMDAwMDAwMDAwNiAxODIuOSA3LjY5OTk5OTk5OTk5OTk4OSBDIDk2LjMgNy45IDcuNSA2NC41IDcuNSAxOTQuNiBDIDcuNSAyODMgMTgyLjggNTUyIDE4Mi44IDU1MiBDIDE4Mi44IDU1MiAxODIuOSA1NTEuNyAxODIuOSA1NTEuNyB6IE0gMTIyLjIgMTg3LjIgQyAxMjIuMiAxNTMuNiAxNDkuNCAxMjYuMzk5OTk5OTk5OTk5OTkgMTgzIDEyNi4zOTk5OTk5OTk5OTk5OSBDIDIxNi42IDEyNi4zOTk5OTk5OTk5OTk5OSAyNDMuOCAxNTMuNiAyNDMuOCAxODcuMiBDIDI0My44IDIyMC43OTk5OTk5OTk5OTk5OCAyMTYuNSAyNDggMTgyLjkgMjQ4IEMgMTQ5LjQgMjQ4IDEyMi4yIDIyMC44IDEyMi4yIDE4Ny4yIHoiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4NCjwvZz4NCgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPg0KPGNpcmNsZSBzdHlsZT0ic3Ryb2tlOiByZ2IoMCwwLDApOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyNTUsMjU1LDI1NSk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIGN4PSIwIiBjeT0iMCIgcj0iMzUiIC8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4="},(o,l,c)=>{var u=c(4),h=function(f,m,g,d){c(10).ZincObject.call(this);var p;m&&(p=m.clone(),p.vertexColors=u.FaceColors),this.id=g;var b=void 0,y=void 0;this.isGlyph=!0,this.fromMesh=v=>!!(v&&v.isMesh)&&(this.morph=v.clone(),this.morph.userData=this,this.group.add(this.morph),!0),f&&p&&this.fromMesh(new u.Mesh(f,p)),this.getGlyphset=function(){return d},this.setLabel=v=>{v&&(typeof v=="string"||v instanceof String)&&(y=v,this.morph&&(this.morph.name=v)),b&&this.showLabel()},this.showLabel=v=>{if(b&&(position=b.getPosition(),this.group.remove(b.getSprite()),b.dispose(),b=void 0),y&&(typeof y=="string"||y instanceof String)){var w=[0,0,0];b=new(c(17)).Label(y,v),b.setPosition(w[0],w[1],w[2]),this.group.add(b.getSprite())}},this.getLabel=()=>y,this.getMesh=()=>this.morph,this.setTransformation=(v,w,E,_)=>{this.morph&&(this.morph.matrix.elements[0]=w[0],this.morph.matrix.elements[1]=w[1],this.morph.matrix.elements[2]=w[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=E[0],this.morph.matrix.elements[5]=E[1],this.morph.matrix.elements[6]=E[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=_[0],this.morph.matrix.elements[9]=_[1],this.morph.matrix.elements[10]=_[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=v[0],this.morph.matrix.elements[13]=v[1],this.morph.matrix.elements[14]=v[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),b&&b.setPosition(v[0],v[1],v[2])},this.setColour=v=>{b&&b.setColour(v),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}};h.prototype=Object.create(c(10).ZincObject.prototype),l.Glyph=h},(o,l,c)=>{var u=c(7).default;l.Label=function(h,f){var m=h,g=void 0;g=f?new u(m,.015,f.getStyle()):new u(m,.015),g.material.sizeAttenuation=!1,g.center.x=-.05,g.center.y=0,this.getPosition=()=>g?[g.position.x,g.position.y,g.position.z]:[0,0,0],this.setPosition=(d,p,b)=>{g&&g.position.set(d,p,b)},this.setColour=d=>{g.color=d.getStyle()},this.setScale=d=>{g&&0<d&&g.scale.set(d,d,1)},this.dispose=()=>{g.dispose()},this.getSprite=()=>g,this.getString=()=>m}},(o,l,c)=>{function u(g){throw new TypeError('"'+g+'" is read-only')}var h=c(4),f=c(19).JSONLoader,m=function(){c(10).ZincObject.call(this);var g=[],d=void 0,p=void 0,b=void 0,y=void 0,v=void 0,w=void 0,E=void 0,_=0,M=0,x=[0,0,0],C=[0,0,0],A=[0,0,0],L="NONE";this.ready=!1;var R=!1,P=!1;this.isGlyphset=!0;for(var I=new h.Matrix4,N=new h.Color,O=new h.Color,S=new h.Box3,T=new h.Box3,D=new h.Box3,B=[],F=[],G=[],H=[],te=[],se=[],j=[],z=[],W=0;8>W;W++)B[W]=new h.Vector3;this.load=(k,Z,Q,V,U)=>{d=k.axis1,p=k.axis2,b=k.axis3,y=k.positions,v=k.scale,w=k.colors,E=k.label,R=k.metadata.MorphColours,P=k.metadata.MorphVertices,_=k.metadata.number_of_time_steps,L=k.metadata.repeat_mode,M=k.metadata.number_of_vertices,L=="AXES_2D"||L=="MIRROR"?M*=2:L=="AXES_3D"&&(M*=3),x=k.metadata.base_size,C=k.metadata.offset,A=k.metadata.scale_factors;var oe=new f;this.geometry=new h.BufferGeometry;var ae=new h.InstancedMesh(this.geometry,void 0,M);if(this.setMorph(ae),V){var le=oe.parse(Z);ie(Q,U)(le.geometry,le.materials),le.geometry.dispose()}else oe.crossOrigin="Anonymous",oe.load(Z,ie(Q,U))};var ee=(k,Z,Q,V,U,oe)=>{if(L=="NONE"||L=="MIRROR"){for(var ae,le=[0,0,0],fe=[0,0,0],be=[0,0,0],we=[0,0,0],ue=[0,0,0],ge=[0,0,0],re=[0,0,0],xe=[0,0,0],de=[0,0,0],me=0;3>me;me++)ae=0>U[me]?-1:1,le[me]=ae*x[me]+U[me]*A[me];for(var me=0;3>me;me++)fe[me]=Z[me]*le[0],be[me]=Q[me]*le[1],we[me]=V[me]*le[2],ue[me]=k[me]+C[0]*fe[me]+C[1]*be[me]+C[2]*we[me],L=="MIRROR"&&(ge[me]=-fe[me],re[me]=-be[me],xe[me]=-we[me],de[me]=ue[me],0>U[0]&&(ue[me]-=fe[me],de[me]-=ge[me]));0>we[0]*(fe[1]*be[2]-fe[2]*be[1])+we[1]*(fe[2]*be[0]-fe[0]*be[2])+we[2]*(fe[0]*be[1]-fe[1]*be[0])&&(we[0]=-we[0],we[1]=-we[1],we[2]=-we[2]),oe[0]=[ue,fe,be,we],L=="MIRROR"&&(0>xe[0]*(ge[1]*re[2]-ge[2]*re[1])+xe[1]*(ge[2]*re[0]-ge[0]*re[2])+xe[2]*(ge[0]*re[1]-ge[1]*re[0])&&(xe[0]=-xe[0],xe[1]=-xe[1],xe[2]=-xe[2]),oe[1]=[de,ge,re,xe])}else if(L=="AXES_2D"||L=="AXES_3D"){for(var ae,_e=[0,0,0],He=[0,0,0],me=0;3>me;me++)ae=0>U[me]?-1:1,_e[me]=ae*x[0]+U[me]*A[0];for(var me=0;3>me;me++)He[me]=k[me]+C[0]*_e[0]*Z[me]+C[1]*_e[1]*Q[me]+C[2]*_e[2]*V[me];for(var Ze=glyph_repeat_mode=="AXES_2D"?2:3,Pe=0;Pe<Ze;Pe++){var ut=void 0,Re=void 0,Je=U[Pe],Xe=[0,0,0],lt=[0,0,0],tt=[0,0,0];Pe==0?(ut=Z,Re=Q):Pe==1?(ut=Q,Re=glyph_repeat_mode=="AXES_2D"?Z:V):(ut=V,Re=Z);var kt=x[0]+Je*A[0];Xe[0]=ut[0]*kt,Xe[1]=ut[1]*kt,Xe[2]=ut[2]*kt,tt[0]=Xe[1]*Re[2]-Re[1]*Xe[2],tt[1]=Xe[2]*Re[0]-Re[2]*Xe[0],tt[2]=Xe[0]*Re[1]-Xe[1]*Re[0];var ne=Math.sqrt(tt[0]*tt[0]+tt[1]*tt[1]+tt[2]*tt[2]);if(0<ne){var Me=(x[2]+Je*A[2])/ne;L=="AXES_2D"&&0<Pe&&(Me*=-1),tt[0]*=Me,tt[1]*=Me,tt[2]*=Me}if(lt[0]=tt[1]*Xe[2]-Xe[1]*tt[2],lt[1]=tt[2]*Xe[0]-Xe[2]*tt[0],lt[2]=tt[0]*Xe[1]-tt[1]*Xe[0],ne=Math.sqrt(lt[0]*lt[0]+lt[1]*lt[1]+lt[2]*lt[2]),0<ne){var Te=(x[1]+Je*A[1])/ne;lt[0]*=Te,lt[1]*=Te,lt[2]*=Te}oe[Pe]=[He,Xe,lt,tt]}}return oe},q=(k,Z,Q,V,U)=>{var oe=1;L=="AXES_2D"||L=="MIRROR"?oe=2:L=="AXES_3D"&&(oe=3);var ae=k.length/3,le=0;z.length=oe;for(var fe=0;fe<ae;fe++){var be=3*fe,we=[k[be],k[be+1],k[be+2]],ue=[Z[be],Z[be+1],Z[be+2]],ge=[Q[be],Q[be+1],Q[be+2]],re=[V[be],V[be+1],V[be+2]],xe=[U[be],U[be+1],U[be+2]],de=ee(we,ue,ge,re,xe,z);if(de.length==oe)for(var me=0;me<oe;me++){I.elements[0]=de[me][1][0],I.elements[1]=de[me][1][1],I.elements[2]=de[me][1][2],I.elements[3]=0,I.elements[4]=de[me][2][0],I.elements[5]=de[me][2][1],I.elements[6]=de[me][2][2],I.elements[7]=0,I.elements[8]=de[me][3][0],I.elements[9]=de[me][3][1],I.elements[10]=de[me][3][2],I.elements[11]=0,I.elements[12]=de[me][0][0],I.elements[13]=de[me][0][1],I.elements[14]=de[me][0][2],I.elements[15]=1,this.morph.setMatrixAt(le,I);var _e=g[le];_e&&_e.setTransformation(de[me][0],de[me][1],de[me][2],de[me][3]),le++}}this.morph.instanceMatrix.needsUpdate=!0},$=k=>{var Z=1;L=="AXES_2D"||L=="MIRROR"?Z=2:L=="AXES_3D"&&(Z=3);for(var Q,V=k.length,U=0,oe=0;oe<V;oe++){Q=k[oe];for(var ae=0;ae<Z;ae++){N.setHex(Q),this.morph.setColorAt(U,N);var le=g[U];le&&le.setColour(N),U++}}this.morph.instanceColor.needsUpdate=!0},Y=()=>{var k=F,Z=G,Q=H,V=te,U=se,oe=j,ae=this.inbuildTime/this.duration*(_-1),le=Math.floor(ae),fe=1-(ae-le),be=Math.ceil(ae);if(P){var we=y[le.toString()],ue=y[be.toString()],ge=d[le.toString()],re=d[be.toString()],xe=p[le.toString()],de=p[be.toString()],me=b[le.toString()],_e=b[be.toString()],He=v[le.toString()],Ze=v[be.toString()];F.length=we.length,G.length=we.length,H.length=we.length,te.length=we.length,se.length=we.length;for(var Pe=0;Pe<we.length;Pe++)k[Pe]=fe*we[Pe]+(1-fe)*ue[Pe],Z[Pe]=fe*ge[Pe]+(1-fe)*re[Pe],Q[Pe]=fe*xe[Pe]+(1-fe)*de[Pe],V[Pe]=fe*me[Pe]+(1-fe)*_e[Pe],U[Pe]=fe*He[Pe]+(1-fe)*Ze[Pe]}else y[0],u("current_positions"),d[0],u("current_axis1s"),p[0],u("current_axis2s"),b[0],u("current_axis3s"),v[0],u("current_scales");if(q(k,Z,Q,V,U),this.boundingBoxUpdateRequired=!0,w!=null){if(R){var ut=w[le.toString()],Re=w[be.toString()];oe.length=ut.length;for(var Je=0;Je<ut.length;Je++)N.setHex(ut[Je]),O.setHex(Re[Je]),N.setRGB(N.r*fe+O.r*(1-fe),N.g*fe+O.g*(1-fe),N.b*fe+O.b*(1-fe)),oe[Je]=N.getHex()}else w[0],u("current_colors");$(oe)}};this.showLabel=()=>{for(var k=0;k<g.length;k++)g[k].showLabel(this.morph.material?this.morph.material.color:void 0)};var K=k=>{if(E!=null&&k)for(var Z,Q=0;Q<M;Q++)Z=new(c(16)).Glyph(void 0,void 0,Q,this),E!=null&&E[Q]!=null&&Z.setLabel(E[Q]),0<_&&Z.setFrustumCulled(!1),g[Q]=Z,this.morph.add(Z.getGroup());E!=null&&k&&this.showLabel(this.morph.material?this.morph.material.color:void 0),q(y[0],d[0],p[0],b[0],v[0]),w!=null&&$(w[0]),this.ready=!0,this.boundingBoxUpdateRequired=!0};this.addCustomGlyph=k=>{k.isGlyph&&g.push(k),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(k,Z)=>{if(k.isMesh){var Q=new(c(16)).Glyph(void 0,void 0,Z,this);return Q.fromMesh(k),g.push(Q),this.morph.add(Q.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,Q}},this.forEachGlyph=k=>{for(var Z=0;Z<g.length;Z++)k(g[Z])};var ie=(k,Z)=>(Q,V)=>{var U=Q.toBufferGeometry();this.geometry.copy(U),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),U.dispose(),V&&V[0]&&(this.morph.material=V[0]),K(Z),this.morph.name=this.groupName,this.morph.userData=this,this.setMorph(this.morph),Q.dispose(),k!=null&&typeof k=="function"&&k(this)};this.getClosestVertexIndex=function(){var k=-1;if(this.morph&&this.ready){this.getBoundingBox().getCenter(this._v1);for(var Z,Q=y[0],V=Q.length/3,U=-1,oe=0,ae=0;ae<V;ae++)Z=3*ae,this._v2.set(Q[Z],Q[Z+1],Q[Z+2]),oe=this._v1.distanceTo(this._v2),(U==-1||U>oe)&&(U=oe,k=ae)}return k},this.getClosestVertex=function(){if(this.closestVertexIndex==-1&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex&&this.morph){var k=new h.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,I),k.setFromMatrixPosition(I),k}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){S.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var k=0;k<M;k++)this.morph.getMatrixAt(k,I),T.copy(S).applyMatrix4(I),k==0?D.copy(T):D.union(T);if(D)this.cachedBoundingBox.copy(D),this.morph.updateWorldMatrix(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=k=>{this.inbuildTime=k>this.duration?this.duration:0>k?0:k,(R||P)&&(Y(),P&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!((this.ready===!1||0<_)&&(R||P)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var k=g.length-1;0<=k;k--)g[k].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),d=void 0,p=void 0,b=void 0,y=void 0,v=void 0,w=void 0,this.ready=!1,this.groupName=void 0},this.render=(k,Z,Q)=>{if(Z==!0){var V=this.inbuildTime+k;V>this.duration&&(V-=this.duration),this.inbuildTime=V,(R||P)&&Y()}this.updateMarker(Z,Q)}};m.prototype=Object.create(c(10).ZincObject.prototype),l.Glyphset=m},(o,l,c)=>{c.r(l),c.d(l,{JSONLoader:()=>M});var u=c(4),h=c(20).Loader,f=u.LoaderUtils,m=u.AnimationClip,g=u.Vector3,d=u.Vector4,p=u.Color,b=u.Vector2,y=c(6).Face3,v=c(6).Geometry,w=u.FileLoader,E=u.DefaultLoadingManager,_=c(21).VideoHandler;function M(x){typeof x=="boolean"&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),x=void 0),this.manager=x===void 0?E:x,this.withCredentials=!1,this.paramsString=""}Object.assign(M.prototype,{load:function(C,A,L,R){var P=this,I=this.texturePath&&typeof this.texturePath=="string"?this.texturePath:f.extractUrlBase(C),N=new w(this.manager);C.split("?"),this.paramsString=C.length===2?paramsStrings[1]:"",N.setWithCredentials(this.withCredentials),N.load(C,function(O){var S=JSON.parse(O),T=S.metadata;if(T!==void 0){var D=T.type;if(D!==void 0&&D.toLowerCase()==="object")return void console.error("THREE.JSONLoader: "+C+" should be loaded with THREE.ObjectLoader instead.")}if(P&&P.parse){var B=P.parse(S,I);A(B.geometry,B.materials)}},L,R)},setTexturePath:function(C){this.texturePath=C},parse:function(){function x(R,P){function I(xe,de){return xe&1<<de}var N,O,S,T,D,B,F,G,H,te,se,j,z,W,ee,q,$,Y,K,ie,k,Z,Q,V,U,oe,ae,le=R.faces,fe=R.vertices,be=R.normals,we=R.colors,ue=R.scale,ge=0;if(R.uvs!==void 0){for(N=0;N<R.uvs.length;N++)R.uvs[N].length&&ge++;for(N=0;N<ge;N++)P.faceVertexUvs[N]=[]}for(T=0,D=fe.length;T<D;)Y=new g,Y.x=fe[T++]*ue,Y.y=fe[T++]*ue,Y.z=fe[T++]*ue,P.vertices.push(Y);if(T=0,D=le.length,R.uvs)for(N=0;N<R.uvs.length;N++){P.uvs[N]=[];for(var re=0;re<R.uvs[N].length;re++)P.uvs[N][re]=R.uvs[N][re]}if(be)for(N=0;N<be.length;N++)P.normals[N]=be[N];if(we)for(N=0;N<we.length;N++)P.colors[N]=we[N];for(;T<D;)if(te=le[T++],se=I(te,0),j=I(te,1),z=I(te,3),W=I(te,4),ee=I(te,5),q=I(te,6),$=I(te,7),se){if(ie=new y,ie.a=le[T],ie.b=le[T+1],ie.c=le[T+3],k=new y,k.a=le[T+1],k.b=le[T+2],k.c=le[T+3],T+=4,j&&(H=le[T++],ie.materialIndex=H,k.materialIndex=H),S=P.faces.length,z)for(N=0;N<ge;N++)for(V=R.uvs[N],P.faceVertexUvs[N][S]=[],P.faceVertexUvs[N][S+1]=[],O=0;4>O;O++)G=le[T++],oe=V[2*G],ae=V[2*G+1],U=new b(oe,ae),O!==2&&P.faceVertexUvs[N][S].push(U),O!==0&&P.faceVertexUvs[N][S+1].push(U);if(W&&(F=3*le[T++],ie.normal.set(be[F++],be[F++],be[F]),k.normal.copy(ie.normal)),ee)for(N=0;4>N;N++)F=3*le[T++],Q=new g(be[F++],be[F++],be[F]),N!==2&&ie.vertexNormals.push(Q),N!==0&&k.vertexNormals.push(Q);if(q&&(B=le[T++],Z=we[B],ie.color.setHex(Z),k.color.setHex(Z)),$)for(N=0;4>N;N++)B=le[T++],Z=we[B],N!==2&&ie.vertexColors.push(new p(Z)),N!==0&&k.vertexColors.push(new p(Z));P.faces.push(ie),P.faces.push(k)}else{if(K=new y,K.a=le[T++],K.b=le[T++],K.c=le[T++],j&&(H=le[T++],K.materialIndex=H),S=P.faces.length,z)for(N=0;N<ge;N++)for(V=R.uvs[N],P.faceVertexUvs[N][S]=[],O=0;3>O;O++)G=le[T++],oe=V[2*G],ae=V[2*G+1],U=new b(oe,ae),P.faceVertexUvs[N][S].push(U);if(W&&(F=3*le[T++],K.normal.set(be[F++],be[F++],be[F])),ee)for(N=0;3>N;N++)F=3*le[T++],Q=new g(be[F++],be[F++],be[F]),K.vertexNormals.push(Q);if(q&&(B=le[T++],K.color.setHex(we[B])),$)for(N=0;3>N;N++)B=le[T++],K.vertexColors.push(new p(we[B]));P.faces.push(K)}}function C(R,P){var I=R.influencesPerVertex===void 0?2:R.influencesPerVertex;if(R.skinWeights)for(var N=0,O=R.skinWeights.length;N<O;N+=I){var S=R.skinWeights[N],T=1<I?R.skinWeights[N+1]:0,D=2<I?R.skinWeights[N+2]:0,B=3<I?R.skinWeights[N+3]:0;P.skinWeights.push(new d(S,T,D,B))}if(R.skinIndices)for(var N=0,O=R.skinIndices.length;N<O;N+=I){var F=R.skinIndices[N],G=1<I?R.skinIndices[N+1]:0,H=2<I?R.skinIndices[N+2]:0,te=3<I?R.skinIndices[N+3]:0;P.skinIndices.push(new d(F,G,H,te))}P.bones=R.bones,P.bones&&0<P.bones.length&&(P.skinWeights.length!==P.skinIndices.length||P.skinIndices.length!==P.vertices.length)&&console.warn("When skinning, number of vertices ("+P.vertices.length+"), skinIndices ("+P.skinIndices.length+"), and skinWeights ("+P.skinWeights.length+") should match.")}function A(R,P){var I=R.scale;if(R.morphTargets!==void 0)for(var N=0,O=R.morphTargets.length;N<O;N++){P.morphTargets[N]={},P.morphTargets[N].name=R.morphTargets[N].name,P.morphTargets[N].vertices=[];for(var S,T=P.morphTargets[N].vertices,D=R.morphTargets[N].vertices,B=0,F=D.length;B<F;B+=3)S=new g,S.x=D[B]*I,S.y=D[B+1]*I,S.z=D[B+2]*I,T.push(S)}if(R.morphNormals!==void 0){for(var N=0,O=R.morphNormals.length;N<O;N++)if(P.morphTargets[N]){P.morphTargets[N].normals=[];for(var G,H=P.morphTargets[N].normals,te=R.morphNormals[N].normals,B=0,F=te.length;B<F;B+=3)G=new g,G.x=te[B],G.y=te[B+1],G.z=te[B+2],H.push(G);P.morphNormalsReady=!0}}if(R.morphColors!==void 0){var N,O,se,j,z,W,ee;for(N=0,O=R.morphColors.length;N<O;N++)for(P.morphColors[N]={},P.morphColors[N].name=R.morphColors[N].name,P.morphColors[N].colors=[],z=P.morphColors[N].colors,W=R.morphColors[N].colors,se=0,j=W.length;se<j;se+=3)ee=new u.Color(16755200),ee.setRGB(W[se],W[se+1],W[se+2]),z.push(ee)}}function L(R,P){var I=[],N=[];R.animation!==void 0&&N.push(R.animation),R.animations!==void 0&&(R.animations.length?N=N.concat(R.animations):N.push(R.animations));for(var O,S=0;S<N.length;S++)O=m.parseAnimation(N[S],P.bones),O&&I.push(O);if(P.morphTargets){var T=m.CreateClipsFromMorphTargetSequences(P.morphTargets,10);I=I.concat(T)}0<I.length&&(P.animations=I)}return function(R,P){R.data!==void 0&&(R=R.data),R.scale=R.scale===void 0?1:1/R.scale;var I=new v;if(I.morphColors=[],x(R,I),C(R,I),A(R,I),L(R,I),I.computeFaceNormals(),I.computeBoundingSphere(),R.materials===void 0||R.materials.length===0)return{geometry:I};var N=h.prototype.initMaterials(R.materials,P,"Anonymous");if(R.materials[0].video){var O=P+R.materials[0].video;this.paramsString&&(O+="?".concat(this.paramsString));var S=new _(O);I._video=S}return N&&0<N.length&&(N[0].side=R.materials[0].singleSided?u.FrontSide:R.materials[0].flipSided?u.BackSide:u.DoubleSide,R.materials[0].specularCoef&&(N[0].shininess=Math.floor(R.materials[0].specularCoef/3))),{geometry:I,materials:N}}}()})},(o,l,c)=>{c.r(l),c.d(l,{Loader:()=>h});var u=c(4);c(4);function h(){}h.Handlers={handlers:[],add:function(m,g){this.handlers.push(m,g)},get:function(m){for(var g=this.handlers,d=0,p=g.length;d<p;d+=2){var b=g[d],y=g[d+1];if(b.test(m))return y}return null}},Object.assign(h.prototype,{crossOrigin:"anonymous",onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(m,g,d){for(var p=[],b=0;b<m.length;++b)p[b]=this.createMaterial(m[b],g,d);return p},createMaterial:function(){var f={NoBlending:u.NoBlending,NormalBlending:u.NormalBlending,AdditiveBlending:u.AdditiveBlending,SubtractiveBlending:u.SubtractiveBlending,MultiplyBlending:u.MultiplyBlending,CustomBlending:u.CustomBlending},m=new u.Color,g=new u.TextureLoader,d=new u.MaterialLoader;return function(p,b,y){function v(x,C,A,L,R){var P,I=b+x,N=h.Handlers.get(I);N===null?(g.setCrossOrigin(y),P=g.load(I)):P=N.load(I),C!==void 0&&(P.repeat.fromArray(C),C[0]!==1&&(P.wrapS=u.RepeatWrapping),C[1]!==1&&(P.wrapT=u.RepeatWrapping)),A!==void 0&&P.offset.fromArray(A),L!==void 0&&(L[0]==="repeat"&&(P.wrapS=u.RepeatWrapping),L[0]==="mirror"&&(P.wrapS=u.MirroredRepeatWrapping),L[1]==="repeat"&&(P.wrapT=u.RepeatWrapping),L[1]==="mirror"&&(P.wrapT=u.MirroredRepeatWrapping)),R!==void 0&&(P.anisotropy=R);var O=u.MathUtils.generateUUID();return w[O]=P,O}var w={},E={uuid:u.MathUtils.generateUUID(),type:"MeshLambertMaterial"};for(var _ in p){var M=p[_];switch(_){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":E.name=M;break;case"blending":E.blending=f[M];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",_,"is no longer supported.");break;case"colorDiffuse":E.color=m.fromArray(M).getHex();break;case"colorSpecular":E.specular=m.fromArray(M).getHex();break;case"colorEmissive":E.emissive=m.fromArray(M).getHex();break;case"specularCoef":E.shininess=M;break;case"shading":M.toLowerCase()==="basic"&&(E.type="MeshBasicMaterial"),M.toLowerCase()==="phong"&&(E.type="MeshPhongMaterial"),M.toLowerCase()==="standard"&&(E.type="MeshStandardMaterial");break;case"mapDiffuse":E.map=v(M,p.mapDiffuseRepeat,p.mapDiffuseOffset,p.mapDiffuseWrap,p.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":E.emissiveMap=v(M,p.mapEmissiveRepeat,p.mapEmissiveOffset,p.mapEmissiveWrap,p.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":E.lightMap=v(M,p.mapLightRepeat,p.mapLightOffset,p.mapLightWrap,p.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":E.aoMap=v(M,p.mapAORepeat,p.mapAOOffset,p.mapAOWrap,p.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":E.bumpMap=v(M,p.mapBumpRepeat,p.mapBumpOffset,p.mapBumpWrap,p.mapBumpAnisotropy);break;case"mapBumpScale":E.bumpScale=M;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":E.normalMap=v(M,p.mapNormalRepeat,p.mapNormalOffset,p.mapNormalWrap,p.mapNormalAnisotropy);break;case"mapNormalFactor":E.normalScale=M;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":E.specularMap=v(M,p.mapSpecularRepeat,p.mapSpecularOffset,p.mapSpecularWrap,p.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":E.metalnessMap=v(M,p.mapMetalnessRepeat,p.mapMetalnessOffset,p.mapMetalnessWrap,p.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":E.roughnessMap=v(M,p.mapRoughnessRepeat,p.mapRoughnessOffset,p.mapRoughnessWrap,p.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":E.alphaMap=v(M,p.mapAlphaRepeat,p.mapAlphaOffset,p.mapAlphaWrap,p.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":E.side=u.BackSide;break;case"doubleSided":E.side=u.DoubleSide;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),E.opacity=M;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":E[_]=M;break;case"vertexColors":M===!0&&(E.vertexColors=u.VertexColors),M==="face"&&(E.vertexColors=u.FaceColors);break;default:console.error("THREE.Loader.createMaterial: Unsupported",_,M)}}return E.type==="MeshBasicMaterial"&&delete E.emissive,E.type!=="MeshPhongMaterial"&&delete E.specular,1>E.opacity&&(E.transparent=!0),d.setTextures(w),d.parse(E)}}()})},(o,l,c)=>{var u=c(4);l.VideoHandler=function(h){var f=this;this.video=void 0,this.videoTexture=void 0,this.setMorphTime=function(m,g){var d=m/g*f.video.duration;f.video.currentTime=d},this.getVideoDuration=function(){return f.video.duration},this.createCanvasVideoTexture=function(){return f.videoTexture=new u.VideoTexture(f.video),f.videoTexture.minFilter=u.LinearFilter,f.videoTexture.magFilter=u.LinearFilter,f.videoTexture.format=u.RGBFormat,f.video.currentTime=0,f.videoTexture},this.getCurrentTime=function(m){return f.video?m*(f.video.currentTime/f.video.duration):0},this.isReadyToPlay=function(){return!!(f.video&&3<=f.video.readyState)},function(){document&&(f.video=document.createElement("video"),f.video.crossOrigin="anonymous",f.video.src=h,f.video.load(),f.video.loop=!0)}()}},(o,l,c)=>{var u=c(4),h=c(23).Points,f=c(5).toBufferGeometry,m=c(5).getCircularTexture,g=function(){c(10).ZincObject.call(this),this.isPointset=!0,this.createMesh=(d,p,b)=>{if(d&&p){var y=f(d,b),v=m();p.map=v;var w=new h(y,p);this.setMesh(w,b.localTimeEnabled,b.localMorphColour)}},this.addPoints=(d,p,b)=>{if(d&&0<d.length){var y=this.addVertices(d),v=this.getMorph();if(!v){var w=new u.PointsMaterial({alphaTest:.5,size:10,color:b,sizeAttenuation:!1});y.colorsNeedUpdate=!0,this.createMesh(y,w,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}},this.setSize=d=>{this.morph&&this.morph.material&&(this.morph.material.size=d,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=d=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=d,this.morph.material.needsUpdate=!0)},this.render=(d,p,b,y)=>{this.morph&&(this.morph.sizePerPixel=b.pixelHeight),g.prototype.render.call(this,d,p,b,y)}};g.prototype=Object.create(c(10).ZincObject.prototype),l.Pointset=g},(o,l,c)=>{c.r(l),c.d(l,{Points:()=>b});var u=c(4),h=new u.Matrix4,f=new u.Ray,m=new u.Sphere,g=new u.Vector3,d=new u.Vector3,p=new u.Vector3;class b extends u.Object3D{constructor(){var E=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new u.BufferGeometry,_=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new u.PointsMaterial;super(),this.type="Points",this.geometry=E,this.material=_,this.sizePerPixel=1,this.updateMorphTargets()}copy(E){return super.copy(E),this.material=E.material,this.geometry=E.geometry,this}raycast(E,_){var M=this.geometry,x=this.matrixWorld,C=E.params.Points.threshold,A=M.drawRange;if(M.boundingSphere===null&&M.computeBoundingSphere(),m.copy(M.boundingSphere),m.applyMatrix4(x),m.radius+=C,E.ray.intersectsSphere(m)!==!1){h.copy(x).invert(),f.copy(E.ray).applyMatrix4(h);var L=C/((this.scale.x+this.scale.y+this.scale.z)/3)*this.material.size*this.sizePerPixel,R=L*L;if(M.isBufferGeometry){var P=M.index,I=M.attributes,N=I.position,O=M.morphAttributes.position;if(P!==null)for(var S,T=Math.max(0,A.start),D=Math.min(P.count,A.start+A.count),B=T;B<D;B++)S=P.getX(B),v(this,N,O,S),y(g,S,R,x,E,_,this);else for(var F=Math.max(0,A.start),G=Math.min(N.count,A.start+A.count),H=F;H<G;H++)v(this,N,O,H),y(g,H,R,x,E,_,this)}else console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}updateMorphTargets(){var E=this.geometry;if(E.isBufferGeometry){var _=E.morphAttributes,M=Object.keys(_);if(0<M.length){var x=_[M[0]];if(x!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var C,A=0,L=x.length;A<L;A++)C=x[A].name||A+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[C]=A}}}else{var R=E.morphTargets;R!==void 0&&0<R.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}b.prototype.isPoints=!0;function y(w,E,_,M,x,C,A){var L=f.distanceSqToPoint(w);if(L<_){var R=new u.Vector3;f.closestPointToPoint(w,R),R.applyMatrix4(M);var P=x.ray.origin.distanceTo(R);if(P<x.near||P>x.far)return;C.push({distance:P,distanceToRay:Math.sqrt(L),point:R,index:E,face:null,object:A})}}function v(w,E,_,M){g.fromBufferAttribute(E,M);var x=w.morphTargetInfluences;if(w.material.morphTargets&&_&&x){d.set(0,0,0);for(var C=0,A=_.length;C<A;C++){var L=x[C],R=_[C];L!==0&&(p.fromBufferAttribute(R,M),d.addScaledVector(p.sub(g),L))}g.add(d)}}},(o,l,c)=>{var u=c(4),h=c(5).toBufferGeometry,f=function(){c(10).ZincObject.call(this),this.isLines=!0,this.createLineSegment=(m,g,d)=>{if(m&&g){var p=h(m,d);d.localMorphColour&&p.morphAttributes.color&&(g.onBeforeCompile=c(9).augmentMorphColor());var b=new(c(12)).LineSegments(p,g);this.setMesh(b,d.localTimeEnabled,d.localMorphColour)}},this.setWidth=m=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=m,this.morph.material.needsUpdate=!0)},this.addLines=(m,g)=>{if(m&&0<m.length){var d=this.addVertices(m),p=this.getMorph();if(!p){var b=new u.LineBasicMaterial({color:g});d.colorsNeedUpdate=!0,this.createLineSegment(d,b,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}}};f.prototype=Object.create(c(10).ZincObject.prototype),l.Lines=f},(o,l,c)=>{function u(g,d,p,b,y,v,w){try{var E=g[v](w),_=E.value}catch(M){return void p(M)}E.done?d(_):Promise.resolve(_).then(b,y)}function h(g){return function(){var d=this,p=arguments;return new Promise(function(b,y){function v(_){u(E,b,y,v,w,"next",_)}function w(_){u(E,b,y,v,w,"throw",_)}var E=g.apply(d,p);v(void 0)})}}var f=c(4),m=function(){var g=this;c(26).Texture.call(this),this.isTextureArray=!0,this.loadFromImages=function(){var d=h(function*(p){var b=1,y=1,v=0;if(p&&p.length){g.isLoading=!0;var w=new Image;w.crossOrigin="Anonymous";for(var E,_=document.createElement("canvas"),M=0,x=Array(p.length),C=0;C<p.length;C++)E=yield g.imageToUint8Array(g,w,p[C],_),E&&E.array&&(b=E.width,y=E.height,x[v]=E.array,M+=x[v].length,v++);var A=new Uint8Array(M);M=0,x.forEach(L=>{A.set(L,M),M+=L.length}),g.impl=new f.DataTexture2DArray(A,b,y,v),g.size={width:b,height:y,depth:v},g.isLoading=!1,g.impl.needsUpdate=!0}});return function(){return d.apply(this,arguments)}}(),this.getMaterial=d=>{if(this.impl){var p;if(!d)p=new f.MeshBasicMaterial({color:new f.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:f.DoubleSide});else if(d.vs&&d.fs){var b=!0;d.transparent&&(b=d.transparent);var y=f.FrontSide;d.side&&(y=d.side),p=new f.ShaderMaterial({transparent:b,uniforms:d.uniforms,vertexShader:d.vs,fragmentShader:d.fs,side:y}),d.glslVersion&&(p.glslVersion=d.glslVersion)}if(p)return p.needsUpdate=!0,p}}};m.prototype=Object.create(c(26).Texture.prototype),l.TextureArray=m},(o,l,c)=>{function u(g,d,p,b,y,v,w){try{var E=g[v](w),_=E.value}catch(M){return void p(M)}E.done?d(_):Promise.resolve(_).then(b,y)}function h(g){return function(){var d=this,p=arguments;return new Promise(function(b,y){function v(_){u(E,b,y,v,w,"next",_)}function w(_){u(E,b,y,v,w,"throw",_)}var E=g.apply(d,p);v(void 0)})}}var f=c(4),m=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};m.prototype.loadImage=function(g,d){return new Promise((p,b)=>{g.onload=()=>p(g),g.onerror=b,g.src=d})},m.prototype.imageToUint8Array=function(){var g=h(function*(d,p,b,y){yield d.loadImage(p,b),y.width=p.width,y.height=p.height;var v=y.getContext("2d");return v.drawImage(p,0,0),{array:new Uint8Array(v.getImageData(0,0,y.width,y.height).data.buffer),width:y.width,height:y.height}});return function(){return g.apply(this,arguments)}}(),m.prototype.loadFromImages=function(){var g=h(function*(){});return function(){return g.apply(this,arguments)}}(),m.prototype.isReady=function(){return!(!this.impl||this.isLoading)},m.prototype.getMaterial=function(){if(this.impl)return new f.MeshBasicMaterial({color:new f.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:f.DoubleSide})},l.Texture=m},(o,l,c)=>{var u=c(4),h=c(28),f=function(m){c(29).TexturePrimitive.call(this,m),this.isTextureSlides=!0;var g=[],d={};this.morph=new u.Group,this.group=this.morph,this.morph.userData=this;var p=!0;this.createSlides=v=>{v.forEach(w=>this.createSlide(w))};var b=(v,w)=>{var E=v.material,_=E.uniforms;switch(w.direction){case"x":_.direction.value=1,_.slide.value.set(w.value,0,0);break;case"y":_.direction.value=2,_.slide.value.set(0,w.value,0);break;case"z":_.direction.value=3,_.slide.value.set(0,0,w.value);break}E.needsUpdate=!0,this.boundingBoxUpdateRequired=!0};this.modifySlideSettings=v=>{v&&v.id&&v.id in d&&d[v.id]&&b(d[v.id],v)},this.createSlide=v=>{if(this.texture&&this.texture.isTextureArray&&this.texture.isReady()&&v&&v.direction&&v.value!==void 0){var w=new u.PlaneGeometry(1,1);w.translate(.5,.5,0);var E=h.getUniforms();E.diffuse.value=this.texture.impl,E.depth.value=this.texture.size.depth,E.flipY.value=p;var _={fs:h.fs,vs:h.vs,uniforms:E,glslVersion:h.glslVersion,side:u.DoubleSide,transparent:!1},M=this.texture.getMaterial(_);M.needsUpdate=!0;var x=new u.Mesh(w,M),C={value:v.value,direction:v.direction,id:x.id};return g.push(C),b(x,C),d[x.id]=x,this.morph.add(x),this.boundingBoxUpdateRequired=!0,C}},this.getTextureSettings=()=>[...g],this.getSlides=()=>this.morph?[...this.morph.children]:[],this.removeSlide=v=>{v&&this.removeSlideWithId(v.id)},this.removeSlideWithId=v=>{if(this.morph&&v in d&&d[v]){if(this.morph.getObjectById(v)){var w=d[v];this.morph.remove(w),w.clear(),w.geometry&&w.geometry.dispose(),w.material&&w.material.dispose(),this.boundingBoxUpdateRequired=!0}var E=g.findIndex(_=>_.id===v);-1<E&&g.splice(E,1)}},this.dispose=()=>{this.morph.children.forEach(v=>{v.geometry&&v.geometry.dispose(),v.material&&v.material.dispose()}),c(29).TexturePrimitive.prototype.dispose.call(this),this.boundingBoxUpdateRequired=!0};var y=(v,w,E)=>{switch(w.direction.value){case 1:E.copy(w.slide.value),v.expandByPoint(E),E.setY(1),E.setZ(1),v.expandByPoint(E);break;case 2:E.copy(w.slide.value),v.expandByPoint(E),E.setX(1),E.setZ(1),v.expandByPoint(E);break;case 3:E.copy(w.slide.value),v.expandByPoint(E),E.setX(1),E.setY(1),v.expandByPoint(E);break}};this.getBoundingBox=()=>{if(this.morph&&this.morph.children&&this.morph.visible&&this.boundingBoxUpdateRequired){this.cachedBoundingBox.makeEmpty();var v=new u.Vector3(0,0,0);this.morph.children.forEach(w=>{y(this.cachedBoundingBox,w.material.uniforms,v)}),this.morph.updateMatrixWorld(!0,!0),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox},this.applyTransformation=(v,w,E)=>{var _=new u.Matrix4;_.set(v[0],v[1],v[2],0,v[3],v[4],v[5],0,v[6],v[7],v[8],0,0,0,0,0);var M=new u.Quaternion().setFromRotationMatrix(_);this.morph.position.set(...w),this.morph.quaternion.copy(M),this.morph.scale.set(...E),this.morph.updateMatrix(),this.boundingBoxUpdateRequired=!0},this.initialise=(v,w)=>{if(v){var E=v.locations;E&&0<E.length&&(this.applyTransformation(E[0].orientation,E[0].position,E[0].scale),"flipY"in E[0]&&(p=E[0].flipY)),this.createSlides(v.settings.slides),w!=null&&typeof w=="function"&&w(this)}}};f.prototype=Object.create(c(29).TexturePrimitive.prototype),f.prototype.constructor=f,l.TextureSlides=f},(o,l,c)=>{var u=c(4),h=u.GLSL3,f=`
3185
3185
  precision highp float;
@@ -3225,11 +3225,11 @@ void main() {
3225
3225
  vUw.xyz = vec3(slidePos.x, slidePos.y, slidePos.z * depth);
3226
3226
 
3227
3227
  }
3228
- `,g=function(){return{diffuse:{value:void 0},depth:{value:1},slide:{value:new u.Vector3(0,0,1)},direction:{value:1},flipY:{value:!0}}};l.fs=f,l.vs=m,l.glslVersion=h,l.getUniforms=g},(o,l,c)=>{c(4);var u=c(5).resolveURL,h=function(f){c(10).ZincObject.call(this),this.isTexturePrimitive=!0,this.texture=f,this.load=(m,g)=>{if(m&&m.images&&m.images.source){var d=new(c(25)).TextureArray,p=[];m.images.source.forEach(y=>{p.push(u(y))});var b=this;d.loadFromImages(p).then(()=>{b.texture=d,b.initialise(m,g)})}},this.initialise=(m,g)=>{g!=null&&typeof g=="function"&&g(this)}};h.prototype=Object.create(c(10).ZincObject.prototype),h.prototype.constructor=h,l.TexturePrimitive=h},(o,l,c)=>{var u=c(4),h=c(31);l.Renderer=function(f){var m=f,g=void 0,d=void 0,p=new u.Clock(!1);this.playAnimation=!0;var b=1e3,y=[],v=0,w=[],E=0,_=void 0,M=void 0,x=void 0,C=void 0,A=[],L=[],R=new u.Group,P=void 0,I=void 0,N=!1;this.getDrawingWidth=()=>m?m.clientWidth:P?typeof P.clientWidth>"u"?Math.round(P.width):Math.round(P.clientWidth):0,this.getDrawingHeight=()=>m?m.clientHeight:P?typeof P.clientHeight>"u"?Math.round(P.height):Math.round(P.clientHeight):0,this.onWindowResize=()=>{d.onWindowResize();var T=this.getDrawingWidth(),D=this.getDrawingHeight();if(g!=null){var B;m?(B=m.getBoundingClientRect(),g.setSize(T,D)):P&&(typeof P.getBoundingClientRect>"u"||(B=P.getBoundingClientRect(),P.width=T,P.height=D),g.setSize(T,D,!1)),B&&(B.left,B.top);var F=new u.Vector2;g.getSize(F),F.x,F.y}},this.initialiseVisualisation=T=>{if(T=T||{},T.antialias===void 0){var D=!1;try{/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(D=!0)}catch{D=!1}T.antialias=!D}T.canvas&&(m=void 0,P=T.canvas),g=new u.WebGLRenderer(T),m!==void 0&&m.appendChild(g.domElement),g.setClearColor(16777215,1),P&&P.style&&(P.style.height="100%",P.style.width="100%"),g.autoClear=!1;var B=this.createScene("default");this.setCurrentScene(B)},this.getCurrentScene=()=>d,this.setCurrentScene=T=>{if(T){this.removeActiveScene(T);var D=d;d=T,D&&D.setInteractiveControlEnable(!1),d.setInteractiveControlEnable(!0),d.setAdditionalScenesGroup(R),this.onWindowResize()}},this.getSceneByName=T=>A[T],this.createScene=T=>{if(A[T]==null){var D;return D=P?new(c(32)).Scene(P,g):new(c(32)).Scene(m,g),A[T]=D,D.sceneName=T,D}},this.resetView=()=>{d.resetView()},this.viewAll=()=>{if(d){var T=d.getBoundingBox();if(T){for(var D,B=0;B<L.length;B++)D=L[B].getBoundingBox(),D&&T.union(D);d.viewAllWithBoundingBox(T)}}},this.loadModelsURL=(T,D,B,F,G,H)=>{d.loadModelsURL(T,D,B,F,G,H)},this.loadViewURL=T=>{d.loadViewURL(T)},this.loadFromViewURL=(T,D)=>{d.loadFromViewURL(T,D)},this.updateDirectionalLight=()=>{d.updateDirectionalLight()};var O=()=>{N?(_=requestAnimationFrame(O),this.render()):(cancelAnimationFrame(_),_=void 0)};this.stopAnimate=()=>{N&&(p.stop(),N=!1)},this.animate=()=>{N||(p.start(),N=!0,O())},this.addPreRenderCallbackFunction=T=>(++v,y[v]=T,v),this.removePreRenderCallbackFunction=T=>{T in y&&delete y[T]},this.addPostRenderCallbackFunction=T=>(++E,w[E]=T,E),this.removePostRenderCallbackFunction=T=>{T in w&&delete w[T]},this.getPlayRate=()=>b,this.setPlayRate=T=>{b=T},this.getCurrentTime=()=>d.getCurrentTime(),this.setMorphsTime=T=>{d.setMorphsTime(T)},this.getZincGeometryByID=T=>d.getZincGeometryByID(T),this.addToScene=T=>{d.addObject(T)},this.addToOrthoScene=T=>{if(x==null&&(x=new u.Scene),M==null){var D=this.getDrawingWidth(),B=this.getDrawingHeight();M=new u.OrthographicCamera(-D/2,D/2,B/2,-B/2,1,10),M.position.z=10}x.add(T)};var S=T=>D=>{D.needsUpdate=!0;var B=new u.SpriteMaterial({map:D}),F=B.map.image.width,G=B.map.image.height;T.material=B,T.scale.set(F,G,1);var H=this.getDrawingWidth(),te=this.getDrawingHeight();T.position.set((H-F)/2,(-te+G)/2,1),this.addToOrthoScene(T)};this.addLogo=()=>{C=new u.Sprite,u.ImageUtils.loadTexture("images/abi_big_logo_transparent_small.png",void 0,S(C))},this.render=()=>{I||(m?0<m.clientWidth&&0<m.clientHeight&&(I=new h(m,this.onWindowResize)):P&&0<P.width&&0<P.height&&(I=new h(P,this.onWindowResize)));var T=p.getDelta();d.renderGeometries(b,T,this.playAnimation);for(var D,B=0;B<L.length;B++)D=L[B],D.renderGeometries(b,T,this.playAnimation);for(var F in M!=null&&x!=null&&(g.clearDepth(),g.render(x,M)),y)y.hasOwnProperty(F)&&y[F].call();for(var G in d.render(g),w)w.hasOwnProperty(G)&&w[G].call()},this.getThreeJSRenderer=()=>g,this.isSceneActive=T=>{if(d===T)return!0;for(var D,B=0;B<L.length;B++)if(D=L[B],D===T)return!0;return!1},this.addActiveScene=T=>{this.isSceneActive(T)||(L.push(T),R.add(T.getThreeJSScene()))},this.removeActiveScene=T=>{for(var D,B=0;B<L.length;B++)if(D=L[B],D===T)return L.splice(B,1),void R.remove(T.getThreeJSScene())},this.clearAllActiveScene=()=>{for(var T=0;T<L.length;T++)R.remove(L[T].getThreeJSScene());L.splice(0,L.length)},this.dispose=()=>{for(var T in N&&cancelAnimationFrame(_),A)A.hasOwnProperty(T)&&A[T].clearAll();A=[],L=[],R=new u.Group,this.stopAnimate(),y=[],v=0,M=void 0,x=void 0,C=void 0;var D=this.createScene("default");this.setCurrentScene(D),I=void 0},this.transitionScene=(T,D)=>{if(d){var B=d.getZincCameraControls(),F=T.getBoundingBox();if(F){var G=F.min.distanceTo(F.max)/2,H=(F.min.x+F.max.x)/2,te=(F.min.y+F.max.y)/2,se=(F.min.z+F.max.z)/2,j=B.getViewportFromCentreAndRadius(H,te,se,G,40,G*4),z=B.getCurrentViewport();B.cameraTransition(z,j,D),B.enableCameraTransition()}}},this.isWebGL2=()=>!!g&&g.capabilities.isWebGL2}},o=>{o.exports=wF()},(o,l,c)=>{var u=c(4),h=c(33).MarkerCluster,f=c(35).SceneLoader,m=c(41).SceneExporter,g=c(43).Viewport,d=c(5).createBufferGeometry,p=c(5).getCircularTexture,b=0,y=function(){return"sc"+b++},v=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},w=6e3;l.Scene=function(E,_){var M=this,x=E,C=void 0,A=new f(this),L=void 0,R={},P=0,I={},N=0,O=new u.Scene,S=new(c(44)).Region(void 0,this);O.add(S.getGroup());var T=new u.Group;O.add(T),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var D=6e3,B=void 0;this.sceneName=void 0;var F=!1,G=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var H={x:0,y:0},te=v(),se=new u.Vector2,j=[];this.forcePickableObjectsUpdate=!1,this.uuid=y();var z=new h(this);z.disable(),O.add(z.group);var W=()=>x?typeof x.clientWidth>"u"?x.width:x.clientWidth:0,ee=()=>x?typeof x.clientHeight>"u"?x.height:x.clientHeight:0;this.getDownloadProgress=()=>A.getDownloadProgress(),this.onWindowResize=()=>{var k=ee();this.camera.aspect=W()/k,this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,B.onResize(),B.calculateHeightPerPixelAtZeroDepth(k)},this.resetView=()=>{this.onWindowResize(),B.resetView()},this.changeZoomByScrollRateUnit=k=>{B.changeZoomByScrollRateUnit(k)};var q=()=>{this.camera=new u.PerspectiveCamera(40,W()/ee(),0,10),this.ambient=new u.AmbientLight(16777215,.2),O.add(this.ambient),this.directionalLight=new u.DirectionalLight(16777215,.8),O.add(this.directionalLight),B=new(c(43)).CameraControls(this.camera,_.domElement,_,this),B.setDirectionalLight(this.directionalLight),B.resetView(),L=new(c(49)).Minimap(this)};q(),this.loadView=k=>{var Z=new g;return Z.setFromObject(k),B.setCurrentCameraSettings(Z),!0},this.setupMultipleViews=(k,Z)=>{for(var[Q,V]of Object.entries(Z)){var U=new g;U.setFromObject(V),B.addViewport(Q,U)}B.setDefaultViewport(k)},this.getBoundingBox=()=>S.getBoundingBox(!0),this.viewAllWithBoundingBox=k=>{if(k){var Z=B.getViewportFromBoundingBox(k,1);B.setCurrentCameraSettings(Z),B.calculateHeightPerPixelAtZeroDepth(ee()),z.markerUpdateRequired=!0}},this.viewAll=()=>{var k=this.getBoundingBox();this.viewAllWithBoundingBox(k),z.markerUpdateRequired=!0},this.forEachGeometry=k=>{S.forEachGeometry(k,!0)},this.forEachGlyphset=k=>{S.forEachGlyphset(k,!0)},this.forEachPointset=k=>{S.forEachPointset(k,!0)},this.forEachLine=k=>{S.forEachLine(k,!0)},this.findGeometriesWithGroupName=k=>S.findGeometriesWithGroupName(k,!0),this.findPointsetsWithGroupName=k=>S.findPointsetsWithGroupName(k,!0),this.findGlyphsetsWithGroupName=k=>S.findGlyphsetsWithGroupName(k,!0),this.findLinesWithGroupName=k=>S.findLinesWithGroupName(k,!0),this.findObjectsWithGroupName=k=>S.findObjectsWithGroupName(k,!0),this.findObjectsWithAnatomicalId=k=>S.findObjectsWithAnatomicalId(k,!0),this.getBoundingBoxOfZincObjects=k=>{for(var Z,Q=void 0,V=0;V<k.length;V++)Z=k[V].getBoundingBox(),Z&&(Q?Q.union(Z):Q=Z);return Q},this.vectorToScreenXY=k=>{k.project(this.camera);var Z=W(),Q=ee(),V=Z/2,U=Q/2;return k.x=k.x*V+V,k.y=-(k.y*U)+U,k},this.getObjectsScreenXY=k=>{if(k&&0<k.length){var Z=this.getBoundingBoxOfZincObjects(k),Q=new u.Vector3;return Z.getCenter(Q),this.vectorToScreenXY(Q)}},this.getNamedObjectsScreenXY=k=>{var Z=this.findObjectsWithGroupName(k);return this.getObjectsScreenXY(Z)},this.addZincObject=k=>{k&&(S.addZincObject(k),B&&B.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(k,Z,Q,V)=>{A.loadGlyphsetURL(S,k,Z,Q,V)},this.loadPointsetURL=(k,Z,Q,V,U)=>{A.loadPointsetURL(S,k,Z,Q,V,U)},this.loadLinesURL=(k,Z,Q,V,U)=>{A.loadLinesURL(S,k,Z,Q,V,U)},this.loadSTL=(k,Z,Q)=>{A.loadSTL(S,k,Z,Q)},this.loadOBJ=(k,Z,Q)=>{A.loadOBJ(S,k,Z,Q)},this.loadMetadataURL=(k,Z,Q)=>{A.loadMetadataURL(S,k,Z,Q)},this.loadModelsURL=(k,Z,Q,V,U,oe)=>{A.loadModelsURL(S.urls,Z,Q,V,U,oe)},this.loadViewURL=k=>{A.loadViewURL(k)},this.loadFromViewURL=(k,Z)=>{A.loadFromViewURL(k,Z)},this.loadGLTF=(k,Z,Q,V)=>{A.loadGLTF(S,k,Z,Q,V)},this.updateDirectionalLight=()=>{B.updateDirectionalLight()},this.addObject=k=>{O.add(k)},this.removeObject=k=>{O.remove(k)},this.getCurrentTime=()=>{if(C!=null)return C.getCurrentTime(D);var k=S.getCurrentTime();return k===-1?0:k},this.setMorphsTime=k=>{C!=null&&C.setMorphTime(k,D),S.setMorphTime(k,!0)},this.isTimeVarying=()=>!!(C&&C.video&&!C.video.error)||S.isTimeVarying(),this.renderGeometries=(k,Z,Q)=>{var V={};if(V.camera=B,V.displayMarkers=this.displayMarkers,V.markerCluster=z,V.markersList=z.markers,V.ndcToBeUpdated=!1,Q&&(V.markerCluster.markerUpdateRequired=!0),!C)A.toBeDownloaded==0?(V.ndcToBeUpdated=B.update(Z),V.ndcToBeUpdated&&B.calculateHeightPerPixelAtZeroDepth(ee()),S.renderGeometries(k,Z,Q,B,V,!0)):B.update(0);else if(C.isReadyToPlay()){Q?C.video.play():C.video.pause();var U=C.video.currentTime/C.getVideoDuration()*D;A.toBeDownloaded==0?(B.setTime(U),V.ndcToBeUpdated=B.update(0),V.ndcToBeUpdated&&B.calculateHeightPerPixelAtZeroDepth(ee()),S.setMorphTime(U,!0),S.renderGeometries(0,0,Q,B,V,!0)):B.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>O,this.setVideoHandler=k=>{C||(C=k)},this.setAdditionalScenesGroup=k=>{O.add(k)};var $=(k,Z,Q,V,U,oe,ae)=>{var le=0,fe=0;return fe=k.includes("top")?ae-U-Q:k.includes("bottom")?Q:Math.floor((ae-U)/2),le=k.includes("left")?Z:k.includes("right")?oe-Z-V:Math.floor((oe-V)/2),{x:le,y:fe}},Y=k=>{this.displayMinimap===!0&&(k.setScissorTest(!0),k.getSize(se),this.minimapScissor.updateRequired&&(H=$(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,se.x,se.y),this.minimapScissor.updateRequired=!1),k.setScissor(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),k.setViewport(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),L.updateCamera(),O.add(L.mask),k.render(O,L.camera),O.remove(L.mask),k.setScissorTest(!1),k.setViewport(0,0,se.x,se.y))};this.render=k=>{this.autoClearFlag&&k.clear(),F&&G?G.render(O,this.camera):(k.render(O,this.camera),Y(k))},this.setInteractiveControlEnable=k=>{k==!0?B.enable():B.disable()},this.getZincCameraControls=()=>B,this.getThreeJSScene=()=>O,this.setDuration=k=>{S.setDuration(k),D=k,B.setPathDuration(k),A.duration=k},this.getDuration=()=>D,this.setStereoEffectEnable=k=>{k!=!0||G||(G=new c(43).StereoEffect(_)),_.setSize(W(),ee()),this.camera.updateProjectionMatrix(),F=k},this.objectIsInScene=k=>S.objectIsInRegion(k,!0),this.alignBoundingBoxToCameraView=(k,Z)=>{if(k){var Q=new u.Vector3;k.getCenter(Q);var V=this.getZincCameraControls().getCurrentViewport(),U=new u.Vector3(V.targetPosition[0],V.targetPosition[1],V.targetPosition[2]),oe=new u.Vector3(V.eyePosition[0],V.eyePosition[1],V.eyePosition[2]),ae=new u.Vector3,le=new u.Vector3;ae.subVectors(U,oe).normalize(),le.subVectors(U,Q).normalize();var fe=new u.Vector3;fe.crossVectors(ae,le);var be=ae.angleTo(le);0<Z?(this.getZincCameraControls().rotateCameraTransition(fe,be,Z),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(fe,be),z.markerUpdateRequired=!0}},this.translateBoundingBoxToCameraView=(k,Z,Q)=>{if(k){var V=this.getZincCameraControls().getCurrentViewport(),U=this.getZincCameraControls().getViewportFromBoundingBox(k,Z);0<Q&&(this.getZincCameraControls().cameraTransition(V,U,Q),this.getZincCameraControls().enableCameraTransition()),z.markerUpdateRequired=!0}},this.alignObjectToCameraView=(k,Z)=>{if(this.objectIsInScene(k)){var Q=k.getBoundingBox();this.alignBoundingBoxToCameraView(Q,Z)}},this.setCameraTargetToObject=k=>{if(this.objectIsInScene(k)){var Z=new u.Vector3,Q=k.getBoundingBox(),V=this.getZincCameraControls().getCurrentViewport();Q.getCenter(Z);var U=new u.Vector3(V.targetPosition[0],V.targetPosition[1],V.targetPosition[2]),oe=new u.Vector3(V.eyePosition[0],V.eyePosition[1],V.eyePosition[2]),ae=new u.Vector3,le=new u.Vector3;ae.subVectors(oe,U),le.addVectors(Z,ae),V.eyePosition[0]=le.x,V.eyePosition[1]=le.y,V.eyePosition[2]=le.z,V.targetPosition[0]=Z.x,V.targetPosition[1]=Z.y,V.targetPosition[2]=Z.z,this.getZincCameraControls().setCurrentCameraSettings(V),z.markerUpdateRequired=!0}},this.isStereoEffectEnable=()=>F,this.removeZincObject=k=>{S.removeZincObject(k),B&&B.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.updatePickableThreeJSObjects=()=>{j.length=0,z.isEnabled&&j.push(z.group),S.getPickableThreeJSObjects(j,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||S.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),j),this.getNormalisedMinimapCoordinates=(k,Z)=>{if(this.displayMinimap){var Q=new u.Vector2;k.getSize(Q);var V=Q.y-Z.clientY;if(H.x+this.minimapScissor.width>Z.clientX&&Z.clientX>H.x&&H.y+this.minimapScissor.height>V&&V>H.y){var U=2*((Z.clientX-H.x)/this.minimapScissor.width)-1,oe=2*((V-H.y)/this.minimapScissor.height)-1;return{x:U,y:oe}}}},this.getMinimapDiffFromNormalised=(k,Z)=>L?L.getDiffFromNormalised(k,Z):void 0,this.isWebGL2=()=>_.isWebGL2(),this.clearAll=()=>{z.clear(),S.clear(!0),this.clearZincObjectAddedCallbacks(),this.clearZincObjectRemovedCallbacks(),A.toBeDwonloaded=0,B&&B.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.addMetadataTimeStamp=(k,Z)=>{te.TimeStamps[k]=ie(Z)},this.getMetadataTag=k=>te[k],this.getMetadata=()=>te,this.setMetadataTag=(k,Z)=>{te[k]=Z},this.removeMetadataTag=k=>{delete te[k]},this.resetMetadata=()=>{te=v()},this.resetDuration=()=>{this.setDuration(w)};var K=k=>[...k.years?["".concat(k.years,"years")]:[],...k.months?["".concat(k.months,"months")]:[],...k.weeks?["".concat(k.weeks,"weeks")]:[],...k.days?["".concat(k.days,"days")]:[],...k.hours?["".concat(k.hours,"hours")]:[],...k.mins?["".concat(k.mins,"mins")]:[],...k.secs?["".concat(k.secs,"secs")]:[]].join(" "),ie=k=>k.years?31536e6*k.years:0+k.months?2592e6*k.months:0+k.weeks?6048e5*k.weeks:0+k.days?864e5*k.days:0+k.hours?36e5*k.hours:0+k.mins?6e4*k.mins:0+k.secs?1e3*k.secs:0;this.setDurationFromObject=k=>{var Z=K(k),Q=ie(k);this.setMetadataTag("Duration",Z),this.setDuration(Q)},this.setOriginalDurationFromObject=k=>{var Z=K(k);this.setMetadataTag("OriginalDuration",Z)},this.exportGLTF=k=>{var Z=new m(this);return Z.exportGLTF(k)},this.getRootRegion=()=>S,this.createLines=(k,Z,Q,V)=>{var U=S.findChildFromPath(k);return U===void 0&&(U=S.createChildFromPath(k)),U.createLines(Z,Q,V)},this.createPoints=(k,Z,Q,V,U)=>{var oe=S.findChildFromPath(k);return oe===void 0&&(oe=S.createChildFromPath(k)),oe.createPoints(Z,Q,V,U)},this.addZincObjectAddedCallbacks=k=>(++P,R[P]=k,P),this.addZincObjectRemovedCallbacks=k=>(++N,I[N]=k,N),this.removeZincObjectAddedCallbacks=k=>{k in P&&delete R[k]},this.removeZincObjectRemovedCallbacks=k=>{k in N&&delete I[k]},this.clearZincObjectAddedCallbacks=()=>{R={},P=0},this.clearZincObjectRemovedCallbacks=()=>{I={},N=0},this.triggerObjectAddedCallback=k=>{for(var Z in R)R.hasOwnProperty(Z)&&R[Z](k)},this.triggerObjectRemovedCallback=k=>{for(var Z in I)I.hasOwnProperty(Z)&&I[Z](k)},this.addTemporaryPoints=(k,Z)=>{var Q=d(k.length,k),V=new u.PointsMaterial({alphaTest:.5,size:15,color:Z,sizeAttenuation:!1}),U=p();V.map=U;var oe=new(c(23)).Points(Q,V);return T.add(oe),oe},this.addTemporaryLines=(k,Z)=>{var Q=d(k.length,k),V=new u.LineBasicMaterial({color:Z}),U=new(c(12)).LineSegments(Q,V);return T.add(U),U},this.removeTemporaryPrimitive=k=>{T.remove(k),k.geometry.dispose(),k.material.dispose()},this.clearTemporaryPrimitives=()=>{var k=T.children;k.forEach(Z=>{Z.geometry.dispose(),Z.material.dispose()}),T.clear()},this.addBoundingBoxPrimitive=function(k,Z,Q,V,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0,ae=S.findChildFromPath(k);ae===void 0&&(ae=S.createChildFromPath(k));var le=oe||M.getBoundingBox(),fe=new u.Vector3().subVectors(le.max,le.min),be=new u.BoxGeometry(fe.x,fe.y,fe.z);fe.addVectors(le.min,le.max).multiplyScalar(.5);var we=ae.createGeometryFromThreeJSGeometry(Z,be,Q,V,U,1e4);return we.setPosition(fe.x,fe.y,fe.z),we},this.enableMarkerCluster=k=>{k?(z.markerUpdateRequired=!0,z.enable()):(z.markerUpdateRequired=!1,z.disable()),this.forcePickableObjectsUpdate=!0}}},(o,l,c)=>{function u(_,M){var x=Object.keys(_);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(_);M&&(C=C.filter(function(A){return Object.getOwnPropertyDescriptor(_,A).enumerable})),x.push.apply(x,C)}return x}function h(_){for(var M,x=1;x<arguments.length;x++)M=arguments[x]==null?{}:arguments[x],x%2?u(Object(M),!0).forEach(function(C){f(_,C,M[C])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(M)):u(Object(M)).forEach(function(C){Object.defineProperty(_,C,Object.getOwnPropertyDescriptor(M,C))});return _}function f(_,M,x){return M=m(M),M in _?Object.defineProperty(_,M,{value:x,enumerable:!0,configurable:!0,writable:!0}):_[M]=x,_}function m(_){var M=g(_,"string");return typeof M=="symbol"?M:M+""}function g(_,M){if(typeof _!="object"||!_)return _;var x=_[Symbol.toPrimitive];if(x!==void 0){var C=x.call(_,M);if(typeof C!="object")return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(_)}var d=c(4),p=new Image(128,128);p.src=c(34);var b=new d.Texture;b.image=p,b.needsUpdate=!0;var y=[.02,.03,1],v=new d.SpriteMaterial({map:b,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),w=c(5).createNewSpriteText,E=function(_){c(10).ZincObject.call(this),this.texture=b;var M=void 0;this.morph=new d.Group,this.group=this.morph,this.isMarkerCluster=!0;var x=!0,C=[];this.markers={};var A=new d.Vector2,L=new d.Vector2,R=Date.now();this.setSpriteSize=S=>{M.scale.set(.015,.02,1),M.scale.multiplyScalar(S)},this.clear=()=>{this.group.clear(),this.markers={}},this.dispose=()=>{this.clear(),this.morph&&this.morph.clear()};var P=S=>{var T=new d.Group,D=new d.Sprite(v);return D.clusterIndex=S,D.center.set(.5,0),D.position.set(0,0,0),D.renderOrder=1e4,D.scale.set(y[0],y[1],y[2]),D.userData=this,T.add(D),this.group.add(T),{group:T,marker:D,label:void 0,number:0,min:[0,0,0],max:[1,1,1]}},I=(S,T,D)=>{S.group.visible=!0,S.group.position.set(T.coords[0],T.coords[1],T.coords[2]),(S.label===void 0||D!==S.number)&&(S.label&&(S.group.remove(S.label),S.label.material.map.dispose(),S.label.material.dispose()),S.label=w(D,.012,"black","Asap",50,500),S.number=D,S.group.add(S.label)),S.min=T.min,S.max=T.max},N=S=>{var T=0;for(S.forEach(D=>{var B=D.members.length,F=0;B===1?D.members[0].setVisibility(!0):(D.members.forEach(G=>{F+=G.getNumber(),G.setVisibility(!1)}),!C[T]&&C.push(P(T)),I(C[T],D,F),T++)}),T;T<C.length;T++)C[T].group.visible=!1},O=(S,T)=>{var D=!0,B={members:[],coords:[0,0,0],min:[0,0,0],max:[1,1,1]},F=0;for(var G in S)D?(A.set(S[G].ndc.x,S[G].ndc.y),this._b1.setFromPoints([S[G].morph.position]),D=!1,B.members.push(S[G]),B.coords=[S[G].morph.position.x,S[G].morph.position.y,S[G].morph.position.z],T.push(B),delete S[G]):(L.set(S[G].ndc.x,S[G].ndc.y),F=A.distanceTo(L),.1>F&&(B.members.push(S[G]),this._b1.expandByPoint(S[G].morph.position),delete S[G]));B.min=[this._b1.min.x,this._b1.min.y,this._b1.min.z],B.max=[this._b1.max.x,this._b1.max.y,this._b1.max.z],D!=!0&&O(S,T)};this.calculate=()=>{if(x){var S=Date.now();if(500<S-R){var T=[];O(h({},this.markers),T),N(T),R=Date.now(),this.markerUpdateRequired=!1}}},this.isEnabled=()=>x,this.enable=()=>{x=!0,this.morph.visible=!0},this.disable=()=>{for(var S in x=!1,this.morph.visible=!1,this.markers){var T;(T=this.markers[S])!==null&&T!==void 0&&T.isMarker&&this.markers[S].isEnabled()&&this.markers[S].setVisibility(!0)}},this.zoomToCluster=S=>{S!==void 0&&-1<S&&(this._v1.set(...C[S].min),this._v2.set(...C[S].max),this._b1.set(this._v1,this._v2),_.translateBoundingBoxToCameraView(this._b1,3,300),this.markerUpdateRequired=!0)}};E.prototype=Object.create(c(10).ZincObject.prototype),l.MarkerCluster=E},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIHZpZXdCb3g9IjAgMCAzNjUgNTYwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4KPGRlZnM+CjwvZGVmcz4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDApIiBpZD0iODA4ZWQyODMtMjUyNC00NDBmLTg4YWUtM2JkYjQ3YmI1NzQ5IiAgPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii0xODIuNSIgeT0iLTI4MCIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgLz4KPC9nPgo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+CjxnIHN0eWxlPSIiICAgPgo8L2c+CjwvZz4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDk3LjUpIiAgPgo8ZyBzdHlsZT0iIiAgID4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTkgMCAwIDAuOTkgMTgyLjUgMjgwKSIgID4KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItNTQwIiB5PSItNTQwIiByeD0iMCIgcnk9IjAiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIC8+CjwvZz4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxwYXRoIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwxNjUsMCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtMTgyLjksIC0yNzkuODUpIiBkPSJNIDE4Mi45IDU1MS43IEMgMTgyLjkgNTUxLjgwMDAwMDAwMDAwMDEgMTgzLjEgNTUyIDE4My4xIDU1MiBDIDE4My4xIDU1MiAzNTguMyAyODMgMzU4LjMgMTk0LjYgQyAzNTguMyA2NC41IDI2OS41IDcuOTAwMDAwMDAwMDAwMDA2IDE4Mi45IDcuNjk5OTk5OTk5OTk5OTg5IEMgOTYuMyA3LjkgNy41IDY0LjUgNy41IDE5NC42IEMgNy41IDI4MyAxODIuOCA1NTIgMTgyLjggNTUyIEMgMTgyLjggNTUyIDE4Mi45IDU1MS43IDE4Mi45IDU1MS43IHogTSAxMjIuMiAxODcuMiBDIDEyMi4yIDE1My42IDE0OS40IDEyNi4zOTk5OTk5OTk5OTk5OSAxODMgMTI2LjM5OTk5OTk5OTk5OTk5IEMgMjE2LjYgMTI2LjM5OTk5OTk5OTk5OTk5IDI0My44IDE1My42IDI0My44IDE4Ny4yIEMgMjQzLjggMjIwLjc5OTk5OTk5OTk5OTk4IDIxNi41IDI0OCAxODIuOSAyNDggQyAxNDkuNCAyNDggMTIyLjIgMjIwLjggMTIyLjIgMTg3LjIgeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgo8L2c+CgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPgo8Y2lyY2xlIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgY3g9IjAiIGN5PSIwIiByPSIzNSIgLz4KPC9nPgo8L2c+CjwvZz4KPC9zdmc+"},(o,l,c)=>{var u=c(4),h=c(5).resolveURL,f=c(5).createNewURL,m=c(36).STLLoader,g=c(37).OBJLoader,d=c(38).PrimitivesLoader;l.SceneLoader=function(p){var b=p;this.toBeDownloaded=0,this.progressMap={};var y=!1,v=!1,w=new d;this.getDownloadProgress=()=>{var j=0,z=0,W=!1;for(var ee in this.progressMap){var q=this.progressMap[ee];j+=q[1],z+=q[0],q[1]==0&&(W=!0)}return W&&(j=0),[j,z,v]},this.onProgress=j=>z=>{this.progressMap[j]=[z.loaded,z.total]},this.onError=j=>()=>{--this.toBeDownloaded,v=!0,j&&j()};var E=(j,z)=>{var W=z.Default;if(z.Inline)b.setupMultipleViews(W,z.Entries);else{var ee=[],q=function(ie){j&&(newURL=f(Y,j),ee.push(new Promise((k,Z)=>{fetch(newURL).then(Q=>Q.json()).then(Q=>k({key:ie,data:Q})).catch(Q=>Z(Q))})))};for(var[$,Y]of Object.entries(z.Entries))q($);Promise.all(ee).then(K=>{var ie={};K.forEach(Z=>{ie[Z.key]=Z.data}),b.setupMultipleViews(W,ie);var k=b.getZincCameraControls();k&&k.setCurrentViewport(W),y=!0})}};this.loadViewURL=(j,z)=>{this.toBeDownloaded+=1;var W=new XMLHttpRequest;W.onreadystatechange=()=>{if(W.readyState==4)if(W.status==200){var q=JSON.parse(W.responseText);b.setupMultipleViews("default",{default:q}),b.resetView(),y=!0,--this.toBeDownloaded,z!=null&&typeof z=="function"&&z()}else this.onError()};var ee=h(j);W.open("GET",ee,!0),W.send()},this.loadModelsURL=(j,z,W,ee,q,$,Y)=>{var K=z.length;this.toBeDownloaded+=K;for(var ie=0;ie<K;ie++){var k=z[ie],Z=c(0).defaultMaterialColor,Q=c(0).defaultOpacity;W!=null&&W[ie]!=null&&(Z=!!W[ie]),ee!=null&&ee[ie]!=null&&(Q=ee[ie]);var V=0;q!=null&&q[ie]!=null&&(V=!!q[ie]);var U=0;$!=null&&$[ie]!=null&&(U=!!$[ie]),w.load(h(k),N(j,Z,Q,V,U,void 0,void 0,void 0,void 0,Y),this.onProgress(k),this.onError(Y))}},this.loadFromViewURL=(j,z,W)=>{var ee=new XMLHttpRequest;ee.onreadystatechange=()=>{if(ee.readyState==4&&ee.status==200){var $=JSON.parse(ee.responseText);b.loadView($);for(var Y,K=[],ie=z+"_",k=0;k<$.numberOfResources;k++)Y=ie+(k+1)+".json",K.push(Y);this.loadModelsURL(j,K,$.colour,$.opacity,$.timeEnabled,$.morphColour,W)}};var q=h(z+"_view.json");ee.open("GET",q,!0),ee.send()};var _=(j,z,W,ee,q,$,Y,K)=>(ie,k)=>{var Z=new(c(24)).Lines,Q=void 0;k&&k[0]&&(Q=new u.LineBasicMaterial({color:k[0].color.clone()}),1>k[0].opacity&&(Q.transparent=!0),Q.opacity=k[0].opacity,Q.morphTargets=z,Q.vertexColors=k[0].vertexColors);var V={localTimeEnabled:z,localMorphColour:W};if(Z&&(Z.createLineSegment(ie,Q,V),Z.setName(ee),Z.anatomicalId=q,Z.setRenderOrder($),j.addZincObject(Z),Z.setDuration(b.getDuration()),Y&&Y.levels))for(var[U,oe]of Object.entries(Y.levels))Z.addLOD(w,U,oe.URL,Y.preload);--this.toBeDownloaded,ie.dispose(),K!=null&&typeof K=="function"&&K(Z)};this.loadLinesURL=(j,z,W,ee,q,$,Y)=>{var K=0;this.toBeDownloaded+=1;var ie=!!(Y&&Y.isInline)&&Y.isInline,k=Y&&Y.anatomicalId?Y.anatomicalId:void 0,Z=Y&&Y.renderOrder?Y.renderOrder:void 0;W!=null&&(K=!!W);var Q=0;if(ee!=null&&(Q=!!ee),ie){var V=w.parse(z);_(j,K,Q,q,k,Z,Y.lod,$)(V.geometry,V.materials)}else w.load(z,_(j,K,Q,q,k,Z,Y.lod,$),this.onProgress(z),this.onError($))};var M=(j,z,W,ee,q,$)=>{var Y=$&&$.isInline?$.isInline:void 0,K=$&&$.anatomicalId?$.anatomicalId:void 0,ie=$&&$.displayLabels?$.displayLabels:void 0,k=$&&$.renderOrder?$.renderOrder:void 0,Z=new(c(18)).Glyphset;Z.setDuration(b.getDuration()),Z.groupName=ee;var Q=()=>{--this.toBeDownloaded,q!=null&&typeof q=="function"&&q(Z)};++this.toBeDownloaded,Y?Z.load(z,W,Q,Y,ie):Z.load(z,h(W),Q,Y,ie),Z.anatomicalId=K,Z.setRenderOrder(k),j.addZincObject(Z)},x=(j,z,W,ee,q,$)=>()=>{if(z.readyState==4&&z.status==200){var Y=JSON.parse(z.responseText);M(j,Y,W,ee,q,$)}},C=(j,z,W,ee,q,$,Y)=>(K,ie)=>{var k=new(c(22)).Pointset,Z=new u.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});ie&&ie[0]&&(1>ie[0].opacity&&(Z.transparent=!0),Z.opacity=ie[0].opacity,Z.color=ie[0].color,Z.morphTargets=z,Z.vertexColors=ie[0].vertexColors);var Q={};Q.localTimeEnabled=z,Q.localMorphColour=W,k&&(k.createMesh(K,Z,Q),k.setName(ee),k.anatomicalId=q,j.addZincObject(k),k.setDuration(b.getDuration()),k.setRenderOrder($)),K.dispose(),--this.toBeDownloaded,Y!=null&&typeof Y=="function"&&Y(k)};this.loadSTL=(j,z,W,ee)=>{this.toBeDownloaded+=1;var q=c(0).defaultMaterialColor,$=c(0).defaultOpacity,Y=new m;Y.crossOrigin="Anonymous",Y.load(h(z),N(j,q,$,!1,!1,W,void 0,void 0,void 0,ee))},this.loadOBJ=(j,z,W,ee)=>{this.toBeDownloaded+=1;var q=c(0).defaultMaterialColor,$=c(0).defaultOpacity,Y=new g;Y.crossOrigin="Anonymous",Y.load(h(z),N(j,q,$,!1,!1,W,void 0,void 0,void 0,ee))};var A=(j,z,W,ee,q,$,Y)=>{this.toBeDownloaded+=1;var K=c(0).defaultMaterialColor,ie=c(0).defaultOpacity,k=0,Z=!!(Y&&Y.isInline)&&Y.isInline,Q=Y&&Y.fileFormat?Y.fileFormat:void 0,V=Y&&Y.anatomicalId?Y.anatomicalId:void 0,U=Y&&Y.renderOrder?Y.renderOrder:void 0;W!=null&&(k=!!W);var oe=0;ee!=null&&(oe=!!ee);var ae=w;if(Q!==void 0){if(Q=="STL")ae=new m;else if(Q=="OBJ")return ae=new g,ae.crossOrigin="Anonymous",void ae.load(z,objloader(j,K,ie,k,oe,q,V,$),this.onProgress(z),this.onError)}if(Z){var le=w.parse(z);N(j,K,ie,k,oe,q,V,U,Y,$)(le.geometry,le.materials)}else ae.crossOrigin="Anonymous",w.load(z,N(j,K,ie,k,oe,q,V,U,Y,$),this.onProgress(z),this.onError($))},L=function(z,W,ee){var q=0;return $=>{if(++q,$&&W!=null&&typeof W=="function"){W($);var Y=b.getZincCameraControls();Y&&Y.calculateMaxAllowedDistance(b)}q==z&&(y==!1&&b.viewAll(),ee!=null&&typeof ee=="function"&&ee())}};this.loadPointsetURL=(j,z,W,ee,q,$,Y)=>{var K=0;this.toBeDownloaded+=1,W!=null&&(K=!!W);var ie=0;ee!=null&&(ie=!!ee);var k=!!(Y&&Y.isInline)&&Y.isInline,Z=Y&&Y.anatomicalId?Y.anatomicalId:void 0,Q=Y&&Y.renderOrder?Y.renderOrder:void 0;if(k){var V=w.parse(z);C(j,K,ie,q,Z,Q,$)(V.geometry,V.materials)}else w.load(z,C(j,K,ie,q,Z,Q,$),this.onProgress(z),this.onError($))};var R=(j,z,W,ee,q,$)=>{var Y=$&&$.isInline?$.isInline:void 0,K=$&&$.anatomicalId?$.anatomicalId:void 0,ie=$&&$.renderOrder?$.renderOrder:void 0,k=void 0;if(W){if(z&&W.images&&W.images.source)for(var Z,Q=W.images.source,V=0;V<Q.length;V++)Z=f(Q[V],z),W.images.source[V]=Z;if(W.type==="slides"&&(k=new(c(27)).TextureSlides),k){k.groupName=ee;var U=()=>{--this.toBeDownloaded,q!=null&&typeof q=="function"&&q(k)};++this.toBeDownloaded,k.load(W,U,Y),k.anatomicalId=K,k.setRenderOrder(ie),j.addZincObject(k)}}},P=(j,z,W,ee,q)=>()=>{if(z.readyState==4&&z.status==200){var $=JSON.parse(z.responseText);R(j,z.responseURL,$,W,ee,q)}};this.loadTextureURL=(j,z,W,ee,q)=>{var $=!!(q&&q.isInline)&&q.isInline;if($)R(j,void 0,z,W,ee,q);else{var Y=new XMLHttpRequest;Y.onreadystatechange=P(j,Y,W,ee,q),Y.open("GET",h(z),!0),Y.send()}},this.loadGlyphsetURL=(j,z,W,ee,q,$)=>{var Y=!!($&&$.isInline)&&$.isInline;if(Y)M(j,z,W,ee,q,$);else{var K=new XMLHttpRequest;K.onreadystatechange=x(j,K,W,ee,q,$),K.open("GET",h(z),!0),K.send()}};var I=(j,z,W,ee,q,$,Y,K,ie)=>{var k={colour:W,opacity:ee,localTimeEnabled:q,localMorphColour:$},Z=new(c(3)).Geometry;return Z.createMesh(z,K,k),Z.getMorph()?(Z.setName(ie),j&&j.addZincObject(Z),Z.setDuration(b.getDuration()),Z.videoHandler&&b.setVideoHandler(Z.videoHandler),Z):void 0},N=(j,z,W,ee,q,$,Y,K,ie,k)=>(Z,Q)=>{var V;Q&&Q[0]&&(V=Q[0]);var U=I(j,Z,z,W,ee,q,void 0,V,$);if(U.anatomicalId=Y,U.setRenderOrder(K),ie.lod&&ie.lod.levels)for(var[oe,ae]of Object.entries(ie.lod.levels))U.addLOD(w,oe,ae.URL,ie.lod.preload);--this.toBeDownloaded,Z.dispose(),k!=null&&typeof k=="function"&&k(U)},O=j=>{var z=/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/,[,W,ee,q,$,Y,K,ie]=j.match(z);return{years:W,months:ee,weeks:q,days:$,hours:Y,mins:K,secs:ie}};this.loadSettings=j=>{if(j){if(j.Duration){var z=O(j.Duration);b.setDurationFromObject(z)}if(j.OriginalDuration){var W=O(j.OriginalDuration);b.setOriginalDurationFromObject(W)}if(j.TimeStamps)for(var ee in j.TimeStamps){var q=O(j.TimeStamps[ee]);b.addMetadataTimeStamp(ee,q)}}};var S=(j,z,W,ee,q)=>{if(W){var $=void 0,Y=!1;W.URL?($=W.URL,z&&($=f(W.URL,z))):W.Inline&&($=W.Inline.URL,Y=!0);var K={};if(W.LOD&&W.LOD.Levels){K.preload=!!W.LOD.Preload,K.levels={};for(var[ie,k]of Object.entries(W.LOD.Levels))K.levels[ie]={},K.levels[ie].URL=f(k.URL,z)}var Z=W.GroupName;(Z===void 0||Z==="")&&(Z="_Unnamed");var Q={isInline:Y,fileFormat:W.FileFormat,anatomicalId:W.AnatomicalId,compression:W.compression,lod:K,renderOrder:ee};switch(W.Type){case"Surfaces":A(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Glyph":var V;Y?V=W.Inline.GlyphGeometriesURL:(V=W.GlyphGeometriesURL,V=f(W.GlyphGeometriesURL,z)),W.DisplayLabels&&(Q.displayLabels=!0),this.loadGlyphsetURL(j,$,V,Z,q,Q);break;case"Points":this.loadPointsetURL(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Lines":this.loadLinesURL(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Texture":this.loadTextureURL(j,$,Z,q,Q);break}}},T=(j,z,W)=>{if(z){var ee=void 0,q=!1;switch(z.URL?(ee=z.URL,j&&(ee=f(z.URL,j))):z.Inline&&(ee=z.Inline.URL,q=!0),z.Type){case"View":q?(b.setupMultipleViews("default",{default:ee}),y=!0,W!=null&&typeof W=="function"&&W()):this.loadViewURL(ee,W);break;case"Settings":this.loadSettings(z);break}}};this.loadGLTF=(j,z,W,ee,q)=>{var $=new(c(39)).GLTFToZincJSLoader;$.load(b,j,z,W,ee,q)};var D=(j,z,W,ee)=>{if(W.Primitives&&W.Primitives.forEach(K=>{var ie=1;K.Order&&(ie=K.Order),S(j,z,K,ie,ee)}),W.Transformation&&j.setTransformation(W.Transformation),W.Children)for(var[q,$]of Object.entries(W.Children)){var Y=j.findOrCreateChildFromPath(q);Y&&D(Y,z,$,ee)}},B=(j,z)=>{if(Array.isArray(j)){for(var W=0,ee=0;ee<j.length;ee++)j[ee].Type&&(z&&j[ee].Type==="View"||j[ee].Type==="Surfaces"||j[ee].Type==="Glyph"||j[ee].Type==="Points"||j[ee].Type==="Lines"||j[ee].Type==="Texture")&&W++;return W}return 0},F=j=>{var z=j.Primitives?B(j.Primitives,!1):0;return j.Children&&Object.values(j.Children).forEach(W=>{z+=F(W)}),z},G=j=>Array.isArray(j)?B(j,!0):typeof j=="object"&&j!==null&&j.Version==="2.0"?F(j.Regions):void 0,H=(j,z,W,ee,q)=>{var $=j;W.RegionPath&&W.RegionPath!==""&&($=j.findOrCreateChildFromPath(W.RegionPath)),S($,z,W,2*ee,q)},te=(j,z,W,ee,q)=>{for(var $=G(z),Y=new L($,ee,q),K=0;K<z.length;K++)T(W,z[K],Y);for(var ie=0;ie<z.length;ie++)H(j,W,z[ie],ie,Y)},se=(j,z,W,ee,q)=>{var $=G(z),Y=new L($,ee,q);z.Settings&&this.loadSettings(z.Settings),z.Views&&E(W,z.Views),z.Regions&&D(j,W,z.Regions,Y)};this.loadMetadataURL=(j,z,W,ee)=>{var q=new XMLHttpRequest,$=h(z);q.onreadystatechange=()=>{if(q.readyState==4&&q.status==200){b.resetMetadata(),b.resetDuration(),y=!1;var Y=q.responseURL;Y===void 0&&(Y=new URL($).href);var K=JSON.parse(q.responseText);Array.isArray(K)?te(j,K,Y,W,ee):typeof K=="object"&&K!==null&&K.Version=="2.0"&&se(j,K,Y,W,ee)}},q.open("GET",$,!0),q.send()}}},(o,l,c)=>{c.r(l),c.d(l,{STLLoader:()=>h});var u=c(4);class h extends u.Loader{constructor(m){super(m)}load(m,g,d,p){var b=this,y=new u.FileLoader(this.manager);y.setPath(this.path),y.setResponseType("arraybuffer"),y.setRequestHeader(this.requestHeader),y.setWithCredentials(this.withCredentials),y.load(m,function(v){try{g(b.parse(v))}catch(w){p?p(w):console.error(w),b.manager.itemError(m)}},d,p)}parse(m){function g(p,b,y){for(var v=0,w=p.length;v<w;v++)if(p[v]!==b.getUint8(y+v,!1))return!1;return!0}var d=function(p){if(typeof p=="string"){for(var b=new Uint8Array(p.length),y=0;y<p.length;y++)b[y]=255&p.charCodeAt(y);return b.buffer||b}return p}(m);return function(p){var b=new DataView(p),y=b.getUint32(80,!0);if(84+y*50===b.byteLength)return!0;for(var v=[115,111,108,105,100],w=0;5>w;w++)if(g(v,b,w))return!1;return!0}(d)?function(p){for(var b,y,v,w,E,_,M,x,C=new DataView(p),A=C.getUint32(80,!0),L=!1,R=0;R<70;R++)C.getUint32(R,!1)==1129270351&&C.getUint8(R+4)==82&&C.getUint8(R+5)==61&&(L=!0,w=new Float32Array(3*(3*A)),E=C.getUint8(R+6)/255,_=C.getUint8(R+7)/255,M=C.getUint8(R+8)/255,x=C.getUint8(R+9)/255);for(var P=new u.BufferGeometry,I=new Float32Array(3*(3*A)),N=new Float32Array(3*(3*A)),O=0;O<A;O++){var S=84+O*50,T=C.getFloat32(S,!0),D=C.getFloat32(S+4,!0),B=C.getFloat32(S+8,!0);if(L){var F=C.getUint16(S+48,!0);32768&F?(b=E,y=_,v=M):(b=(31&F)/31,y=(31&F>>5)/31,v=(31&F>>10)/31)}for(var G=1;3>=G;G++){var H=S+12*G,te=3*(3*O)+3*(G-1);I[te]=C.getFloat32(H,!0),I[te+1]=C.getFloat32(H+4,!0),I[te+2]=C.getFloat32(H+8,!0),N[te]=T,N[te+1]=D,N[te+2]=B,L&&(w[te]=b,w[te+1]=y,w[te+2]=v)}}return P.setAttribute("position",new u.BufferAttribute(I,3)),P.setAttribute("normal",new u.BufferAttribute(N,3)),L&&(P.setAttribute("color",new u.BufferAttribute(w,3)),P.hasColors=!0,P.alpha=x),P}(d):function(p){for(var b,y=new u.BufferGeometry,v=/solid([\s\S]*?)endsolid/g,w=/facet([\s\S]*?)endfacet/g,E=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,M=new RegExp("vertex"+_+_+_,"g"),x=new RegExp("normal"+_+_+_,"g"),C=[],A=[],L=new u.Vector3,R=0,P=0,I=0;(b=v.exec(p))!==null;){P=I;for(var N=b[0];(b=w.exec(N))!==null;){for(var O=0,S=0,T=b[0];(b=x.exec(T))!==null;)L.x=parseFloat(b[1]),L.y=parseFloat(b[2]),L.z=parseFloat(b[3]),S++;for(;(b=M.exec(T))!==null;)C.push(parseFloat(b[1]),parseFloat(b[2]),parseFloat(b[3])),A.push(L.x,L.y,L.z),O++,I++;S!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+E),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+E),E++}var D=P,B=I-P;y.addGroup(D,B,R),R++}return y.setAttribute("position",new u.Float32BufferAttribute(C,3)),y.setAttribute("normal",new u.Float32BufferAttribute(A,3)),y}(function(p){return typeof p=="string"?p:u.LoaderUtils.decodeText(new Uint8Array(p))}(m))}}},(o,l,c)=>{c.r(l),c.d(l,{OBJLoader:()=>E});var u=c(4),h=/^[og]\s*(.+)?/,f=/^mtllib /,m=/^usemtl /,g=/^usemap /,d=new u.Vector3,p=new u.Vector3,b=new u.Vector3,y=new u.Vector3,v=new u.Vector3;function w(){var _={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(x,C){if(this.object&&this.object.fromDeclaration===!1)return this.object.name=x,void(this.object.fromDeclaration=C!==!1);var A=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:x||"",fromDeclaration:C!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(P,I){var N=this._finalize(!1);N&&(N.inherited||0>=N.groupCount)&&this.materials.splice(N.index,1);var O={index:this.materials.length,name:P||"",mtllib:Array.isArray(I)&&0<I.length?I[I.length-1]:"",smooth:N===void 0?this.smooth:N.smooth,groupStart:N===void 0?0:N.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(T){var D={index:typeof T=="number"?T:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return D.clone=this.clone.bind(D),D}};return this.materials.push(O),O},currentMaterial:function(){return 0<this.materials.length?this.materials[this.materials.length-1]:void 0},_finalize:function(P){var I=this.currentMaterial();if(I&&I.groupEnd===-1&&(I.groupEnd=this.geometry.vertices.length/3,I.groupCount=I.groupEnd-I.groupStart,I.inherited=!1),P&&1<this.materials.length)for(var N=this.materials.length-1;0<=N;N--)0>=this.materials[N].groupCount&&this.materials.splice(N,1);return P&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),I}},A&&A.name&&typeof A.clone=="function"){var L=A.clone(0);L.inherited=!0,this.object.materials.push(L)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(x,C){var A=parseInt(x,10);return 3*(0<=A?A-1:A+C/3)},parseNormalIndex:function(x,C){var A=parseInt(x,10);return 3*(0<=A?A-1:A+C/3)},parseUVIndex:function(x,C){var A=parseInt(x,10);return 2*(0<=A?A-1:A+C/2)},addVertex:function(x,C,A){var L=this.vertices,R=this.object.geometry.vertices;R.push(L[x+0],L[x+1],L[x+2]),R.push(L[C+0],L[C+1],L[C+2]),R.push(L[A+0],L[A+1],L[A+2])},addVertexPoint:function(x){var C=this.vertices,A=this.object.geometry.vertices;A.push(C[x+0],C[x+1],C[x+2])},addVertexLine:function(x){var C=this.vertices,A=this.object.geometry.vertices;A.push(C[x+0],C[x+1],C[x+2])},addNormal:function(x,C,A){var L=this.normals,R=this.object.geometry.normals;R.push(L[x+0],L[x+1],L[x+2]),R.push(L[C+0],L[C+1],L[C+2]),R.push(L[A+0],L[A+1],L[A+2])},addFaceNormal:function(x,C,A){var L=this.vertices,R=this.object.geometry.normals;d.fromArray(L,x),p.fromArray(L,C),b.fromArray(L,A),v.subVectors(b,p),y.subVectors(d,p),v.cross(y),v.normalize(),R.push(v.x,v.y,v.z),R.push(v.x,v.y,v.z),R.push(v.x,v.y,v.z)},addColor:function(x,C,A){var L=this.colors,R=this.object.geometry.colors;L[x]!==void 0&&R.push(L[x+0],L[x+1],L[x+2]),L[C]!==void 0&&R.push(L[C+0],L[C+1],L[C+2]),L[A]!==void 0&&R.push(L[A+0],L[A+1],L[A+2])},addUV:function(x,C,A){var L=this.uvs,R=this.object.geometry.uvs;R.push(L[x+0],L[x+1]),R.push(L[C+0],L[C+1]),R.push(L[A+0],L[A+1])},addDefaultUV:function(){var x=this.object.geometry.uvs;x.push(0,0),x.push(0,0),x.push(0,0)},addUVLine:function(x){var C=this.uvs,A=this.object.geometry.uvs;A.push(C[x+0],C[x+1])},addFace:function(x,C,A,L,R,P,I,N,O){var S=this.vertices.length,T=this.parseVertexIndex(x,S),D=this.parseVertexIndex(C,S),B=this.parseVertexIndex(A,S);if(this.addVertex(T,D,B),this.addColor(T,D,B),I!==void 0&&I!==""){var F=this.normals.length;T=this.parseNormalIndex(I,F),D=this.parseNormalIndex(N,F),B=this.parseNormalIndex(O,F),this.addNormal(T,D,B)}else this.addFaceNormal(T,D,B);if(L!==void 0&&L!==""){var G=this.uvs.length;T=this.parseUVIndex(L,G),D=this.parseUVIndex(R,G),B=this.parseUVIndex(P,G),this.addUV(T,D,B),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(x){this.object.geometry.type="Points";for(var C,A=this.vertices.length,L=0,R=x.length;L<R;L++)C=this.parseVertexIndex(x[L],A),this.addVertexPoint(C),this.addColor(C)},addLineGeometry:function(x,C){this.object.geometry.type="Line";for(var A=this.vertices.length,L=this.uvs.length,R=0,P=x.length;R<P;R++)this.addVertexLine(this.parseVertexIndex(x[R],A));for(var I=0,N=C.length;I<N;I++)this.addUVLine(this.parseUVIndex(C[I],L))}};return _.startObject("",!1),_}class E extends u.Loader{constructor(M){super(M),this.materials=null}load(M,x,C,A){var L=this,R=new u.FileLoader(this.manager);R.setPath(this.path),R.setRequestHeader(this.requestHeader),R.setWithCredentials(this.withCredentials),R.load(M,function(P){try{x(L.parse(P))}catch(I){A?A(I):console.error(I),L.manager.itemError(M)}},C,A)}setMaterials(M){return this.materials=M,this}parse(M){var x=new w;M.indexOf(`\r
3228
+ `,g=function(){return{diffuse:{value:void 0},depth:{value:1},slide:{value:new u.Vector3(0,0,1)},direction:{value:1},flipY:{value:!0}}};l.fs=f,l.vs=m,l.glslVersion=h,l.getUniforms=g},(o,l,c)=>{c(4);var u=c(5).resolveURL,h=function(f){c(10).ZincObject.call(this),this.isTexturePrimitive=!0,this.texture=f,this.load=(m,g)=>{if(m&&m.images&&m.images.source){var d=new(c(25)).TextureArray,p=[];m.images.source.forEach(y=>{p.push(u(y))});var b=this;d.loadFromImages(p).then(()=>{b.texture=d,b.initialise(m,g)})}},this.initialise=(m,g)=>{g!=null&&typeof g=="function"&&g(this)}};h.prototype=Object.create(c(10).ZincObject.prototype),h.prototype.constructor=h,l.TexturePrimitive=h},(o,l,c)=>{var u=c(4),h=c(31);l.Renderer=function(f){var m=f,g=void 0,d=void 0,p=new u.Clock(!1);this.playAnimation=!0;var b=1e3,y=[],v=0,w=[],E=0,_=void 0,M=void 0,x=void 0,C=void 0,A=[],L=[],R=new u.Group,P=void 0,I=void 0,N=!1;this.getDrawingWidth=()=>m?m.clientWidth:P?typeof P.clientWidth>"u"?Math.round(P.width):Math.round(P.clientWidth):0,this.getDrawingHeight=()=>m?m.clientHeight:P?typeof P.clientHeight>"u"?Math.round(P.height):Math.round(P.clientHeight):0,this.onWindowResize=()=>{d.onWindowResize();var T=this.getDrawingWidth(),D=this.getDrawingHeight();if(g!=null){var B;m?(B=m.getBoundingClientRect(),g.setSize(T,D)):P&&(typeof P.getBoundingClientRect>"u"||(B=P.getBoundingClientRect(),P.width=T,P.height=D),g.setSize(T,D,!1)),B&&(B.left,B.top);var F=new u.Vector2;g.getSize(F),F.x,F.y}},this.initialiseVisualisation=T=>{if(T=T||{},T.antialias===void 0){var D=!1;try{/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(D=!0)}catch{D=!1}T.antialias=!D}T.canvas&&(m=void 0,P=T.canvas),g=new u.WebGLRenderer(T),m!==void 0&&m.appendChild(g.domElement),g.setClearColor(16777215,1),P&&P.style&&(P.style.height="100%",P.style.width="100%"),g.autoClear=!1;var B=this.createScene("default");this.setCurrentScene(B)},this.getCurrentScene=()=>d,this.setCurrentScene=T=>{if(T){this.removeActiveScene(T);var D=d;d=T,D&&D.setInteractiveControlEnable(!1),d.setInteractiveControlEnable(!0),d.setAdditionalScenesGroup(R),this.onWindowResize()}},this.getSceneByName=T=>A[T],this.createScene=T=>{if(A[T]==null){var D;return D=P?new(c(32)).Scene(P,g):new(c(32)).Scene(m,g),A[T]=D,D.sceneName=T,D}},this.resetView=()=>{d.resetView()},this.viewAll=()=>{if(d){var T=d.getBoundingBox();if(T){for(var D,B=0;B<L.length;B++)D=L[B].getBoundingBox(),D&&T.union(D);d.viewAllWithBoundingBox(T)}}},this.loadModelsURL=(T,D,B,F,G,H)=>{d.loadModelsURL(T,D,B,F,G,H)},this.loadViewURL=T=>{d.loadViewURL(T)},this.loadFromViewURL=(T,D)=>{d.loadFromViewURL(T,D)},this.updateDirectionalLight=()=>{d.updateDirectionalLight()};var O=()=>{N?(_=requestAnimationFrame(O),this.render()):(cancelAnimationFrame(_),_=void 0)};this.stopAnimate=()=>{N&&(p.stop(),N=!1)},this.animate=()=>{N||(p.start(),N=!0,O())},this.addPreRenderCallbackFunction=T=>(++v,y[v]=T,v),this.removePreRenderCallbackFunction=T=>{T in y&&delete y[T]},this.addPostRenderCallbackFunction=T=>(++E,w[E]=T,E),this.removePostRenderCallbackFunction=T=>{T in w&&delete w[T]},this.getPlayRate=()=>b,this.setPlayRate=T=>{b=T},this.getCurrentTime=()=>d.getCurrentTime(),this.setMorphsTime=T=>{d.setMorphsTime(T)},this.getZincGeometryByID=T=>d.getZincGeometryByID(T),this.addToScene=T=>{d.addObject(T)},this.addToOrthoScene=T=>{if(x==null&&(x=new u.Scene),M==null){var D=this.getDrawingWidth(),B=this.getDrawingHeight();M=new u.OrthographicCamera(-D/2,D/2,B/2,-B/2,1,10),M.position.z=10}x.add(T)};var S=T=>D=>{D.needsUpdate=!0;var B=new u.SpriteMaterial({map:D}),F=B.map.image.width,G=B.map.image.height;T.material=B,T.scale.set(F,G,1);var H=this.getDrawingWidth(),te=this.getDrawingHeight();T.position.set((H-F)/2,(-te+G)/2,1),this.addToOrthoScene(T)};this.addLogo=()=>{C=new u.Sprite,u.ImageUtils.loadTexture("images/abi_big_logo_transparent_small.png",void 0,S(C))},this.render=()=>{I||(m?0<m.clientWidth&&0<m.clientHeight&&(I=new h(m,this.onWindowResize)):P&&0<P.width&&0<P.height&&(I=new h(P,this.onWindowResize)));var T=p.getDelta();d.renderGeometries(b,T,this.playAnimation);for(var D,B=0;B<L.length;B++)D=L[B],D.renderGeometries(b,T,this.playAnimation);for(var F in M!=null&&x!=null&&(g.clearDepth(),g.render(x,M)),y)y.hasOwnProperty(F)&&y[F].call();for(var G in d.render(g),w)w.hasOwnProperty(G)&&w[G].call()},this.getThreeJSRenderer=()=>g,this.isSceneActive=T=>{if(d===T)return!0;for(var D,B=0;B<L.length;B++)if(D=L[B],D===T)return!0;return!1},this.addActiveScene=T=>{this.isSceneActive(T)||(L.push(T),R.add(T.getThreeJSScene()))},this.removeActiveScene=T=>{for(var D,B=0;B<L.length;B++)if(D=L[B],D===T)return L.splice(B,1),void R.remove(T.getThreeJSScene())},this.clearAllActiveScene=()=>{for(var T=0;T<L.length;T++)R.remove(L[T].getThreeJSScene());L.splice(0,L.length)},this.dispose=()=>{for(var T in N&&cancelAnimationFrame(_),A)A.hasOwnProperty(T)&&A[T].clearAll();A=[],L=[],R=new u.Group,this.stopAnimate(),y=[],v=0,M=void 0,x=void 0,C=void 0;var D=this.createScene("default");this.setCurrentScene(D),I=void 0},this.transitionScene=(T,D)=>{if(d){var B=d.getZincCameraControls(),F=T.getBoundingBox();if(F){var G=F.min.distanceTo(F.max)/2,H=(F.min.x+F.max.x)/2,te=(F.min.y+F.max.y)/2,se=(F.min.z+F.max.z)/2,j=B.getViewportFromCentreAndRadius(H,te,se,G,40,G*4),z=B.getCurrentViewport();B.cameraTransition(z,j,D),B.enableCameraTransition()}}},this.isWebGL2=()=>!!g&&g.capabilities.isWebGL2}},o=>{o.exports=wF()},(o,l,c)=>{var u=c(4),h=c(33).MarkerCluster,f=c(35).SceneLoader,m=c(41).SceneExporter,g=c(43).Viewport,d=c(5).createBufferGeometry,p=c(5).getCircularTexture,b=0,y=function(){return"sc"+b++},v=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},w=6e3;l.Scene=function(E,_){var M=this,x=E,C=void 0,A=new f(this),L=void 0,R={},P=0,I={},N=0,O=new u.Scene,S=new(c(44)).Region(void 0,this);O.add(S.getGroup());var T=new u.Group;O.add(T),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var D=6e3,B=void 0;this.sceneName=void 0;var F=!1,G=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var H={x:0,y:0},te=v(),se=new u.Vector2,j=[];this.forcePickableObjectsUpdate=!1,this.uuid=y();var z=new h(this);z.disable(),O.add(z.group);var W=()=>x?typeof x.clientWidth>"u"?x.width:x.clientWidth:0,ee=()=>x?typeof x.clientHeight>"u"?x.height:x.clientHeight:0;this.getDownloadProgress=()=>A.getDownloadProgress(),this.onWindowResize=()=>{var k=ee();this.camera.aspect=W()/k,this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,B.onResize(),B.calculateHeightPerPixelAtZeroDepth(k)},this.resetView=()=>{this.onWindowResize(),B.resetView()},this.changeZoomByScrollRateUnit=k=>{B.changeZoomByScrollRateUnit(k)};var q=()=>{this.camera=new u.PerspectiveCamera(40,W()/ee(),0,10),this.ambient=new u.AmbientLight(16777215,.2),O.add(this.ambient),this.directionalLight=new u.DirectionalLight(16777215,.8),O.add(this.directionalLight),B=new(c(43)).CameraControls(this.camera,_.domElement,_,this),B.setDirectionalLight(this.directionalLight),B.resetView(),L=new(c(49)).Minimap(this)};q(),this.loadView=k=>{var Z=new g;return Z.setFromObject(k),B.setCurrentCameraSettings(Z),!0},this.setupMultipleViews=(k,Z)=>{for(var[Q,V]of Object.entries(Z)){var U=new g;U.setFromObject(V),B.addViewport(Q,U)}B.setDefaultViewport(k)},this.getBoundingBox=()=>S.getBoundingBox(!0),this.viewAllWithBoundingBox=k=>{if(k){var Z=B.getViewportFromBoundingBox(k,1);B.setCurrentCameraSettings(Z),B.calculateHeightPerPixelAtZeroDepth(ee()),z.markerUpdateRequired=!0}},this.viewAll=()=>{var k=this.getBoundingBox();this.viewAllWithBoundingBox(k),z.markerUpdateRequired=!0},this.forEachGeometry=k=>{S.forEachGeometry(k,!0)},this.forEachGlyphset=k=>{S.forEachGlyphset(k,!0)},this.forEachPointset=k=>{S.forEachPointset(k,!0)},this.forEachLine=k=>{S.forEachLine(k,!0)},this.findGeometriesWithGroupName=k=>S.findGeometriesWithGroupName(k,!0),this.findPointsetsWithGroupName=k=>S.findPointsetsWithGroupName(k,!0),this.findGlyphsetsWithGroupName=k=>S.findGlyphsetsWithGroupName(k,!0),this.findLinesWithGroupName=k=>S.findLinesWithGroupName(k,!0),this.findObjectsWithGroupName=k=>S.findObjectsWithGroupName(k,!0),this.findObjectsWithAnatomicalId=k=>S.findObjectsWithAnatomicalId(k,!0),this.getBoundingBoxOfZincObjects=k=>{for(var Z,Q=void 0,V=0;V<k.length;V++)Z=k[V].getBoundingBox(),Z&&(Q?Q.union(Z):Q=Z);return Q},this.vectorToScreenXY=k=>{k.project(this.camera);var Z=W(),Q=ee(),V=Z/2,U=Q/2;return k.x=k.x*V+V,k.y=-(k.y*U)+U,k},this.getObjectsScreenXY=k=>{if(k&&0<k.length){var Z=this.getBoundingBoxOfZincObjects(k),Q=new u.Vector3;return Z.getCenter(Q),this.vectorToScreenXY(Q)}},this.getNamedObjectsScreenXY=k=>{var Z=this.findObjectsWithGroupName(k);return this.getObjectsScreenXY(Z)},this.addZincObject=k=>{k&&(S.addZincObject(k),B&&B.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(k,Z,Q,V)=>{A.loadGlyphsetURL(S,k,Z,Q,V)},this.loadPointsetURL=(k,Z,Q,V,U)=>{A.loadPointsetURL(S,k,Z,Q,V,U)},this.loadLinesURL=(k,Z,Q,V,U)=>{A.loadLinesURL(S,k,Z,Q,V,U)},this.loadSTL=(k,Z,Q)=>{A.loadSTL(S,k,Z,Q)},this.loadOBJ=(k,Z,Q)=>{A.loadOBJ(S,k,Z,Q)},this.loadMetadataURL=(k,Z,Q)=>{A.loadMetadataURL(S,k,Z,Q)},this.loadModelsURL=(k,Z,Q,V,U,oe)=>{A.loadModelsURL(S.urls,Z,Q,V,U,oe)},this.loadViewURL=k=>{A.loadViewURL(k)},this.loadFromViewURL=(k,Z)=>{A.loadFromViewURL(k,Z)},this.loadGLTF=(k,Z,Q,V)=>{A.loadGLTF(S,k,Z,Q,V)},this.updateDirectionalLight=()=>{B.updateDirectionalLight()},this.addObject=k=>{O.add(k)},this.removeObject=k=>{O.remove(k)},this.getCurrentTime=()=>{if(C!=null)return C.getCurrentTime(D);var k=S.getCurrentTime();return k===-1?0:k},this.setMorphsTime=k=>{C!=null&&C.setMorphTime(k,D),S.setMorphTime(k,!0)},this.isTimeVarying=()=>!!(C&&C.video&&!C.video.error)||S.isTimeVarying(),this.renderGeometries=(k,Z,Q)=>{var V={};if(V.camera=B,V.displayMarkers=this.displayMarkers,V.markerCluster=z,V.markersList=z.markers,V.ndcToBeUpdated=!1,Q&&(V.markerCluster.markerUpdateRequired=!0),!C)A.toBeDownloaded==0?(V.ndcToBeUpdated=B.update(Z),V.ndcToBeUpdated&&B.calculateHeightPerPixelAtZeroDepth(ee()),S.renderGeometries(k,Z,Q,B,V,!0)):B.update(0);else if(C.isReadyToPlay()){Q?C.video.play():C.video.pause();var U=C.video.currentTime/C.getVideoDuration()*D;A.toBeDownloaded==0?(B.setTime(U),V.ndcToBeUpdated=B.update(0),V.ndcToBeUpdated&&B.calculateHeightPerPixelAtZeroDepth(ee()),S.setMorphTime(U,!0),S.renderGeometries(0,0,Q,B,V,!0)):B.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>O,this.setVideoHandler=k=>{C||(C=k)},this.setAdditionalScenesGroup=k=>{O.add(k)};var $=(k,Z,Q,V,U,oe,ae)=>{var le=0,fe=0;return fe=k.includes("top")?ae-U-Q:k.includes("bottom")?Q:Math.floor((ae-U)/2),le=k.includes("left")?Z:k.includes("right")?oe-Z-V:Math.floor((oe-V)/2),{x:le,y:fe}},Y=k=>{this.displayMinimap===!0&&(k.setScissorTest(!0),k.getSize(se),this.minimapScissor.updateRequired&&(H=$(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,se.x,se.y),this.minimapScissor.updateRequired=!1),k.setScissor(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),k.setViewport(H.x,H.y,this.minimapScissor.width,this.minimapScissor.height),L.updateCamera(),O.add(L.mask),k.render(O,L.camera),O.remove(L.mask),k.setScissorTest(!1),k.setViewport(0,0,se.x,se.y))};this.render=k=>{this.autoClearFlag&&k.clear(),F&&G?G.render(O,this.camera):(k.render(O,this.camera),Y(k))},this.setInteractiveControlEnable=k=>{k==!0?B.enable():B.disable()},this.getZincCameraControls=()=>B,this.getThreeJSScene=()=>O,this.setDuration=k=>{S.setDuration(k),D=k,B.setPathDuration(k),A.duration=k},this.getDuration=()=>D,this.setStereoEffectEnable=k=>{k!=!0||G||(G=new c(43).StereoEffect(_)),_.setSize(W(),ee()),this.camera.updateProjectionMatrix(),F=k},this.objectIsInScene=k=>S.objectIsInRegion(k,!0),this.alignBoundingBoxToCameraView=(k,Z)=>{if(k){var Q=new u.Vector3;k.getCenter(Q);var V=this.getZincCameraControls().getCurrentViewport(),U=new u.Vector3(V.targetPosition[0],V.targetPosition[1],V.targetPosition[2]),oe=new u.Vector3(V.eyePosition[0],V.eyePosition[1],V.eyePosition[2]),ae=new u.Vector3,le=new u.Vector3;ae.subVectors(U,oe).normalize(),le.subVectors(U,Q).normalize();var fe=new u.Vector3;fe.crossVectors(ae,le);var be=ae.angleTo(le);0<Z?(this.getZincCameraControls().rotateCameraTransition(fe,be,Z),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(fe,be),z.markerUpdateRequired=!0}},this.translateBoundingBoxToCameraView=(k,Z,Q)=>{if(k){var V=this.getZincCameraControls().getCurrentViewport(),U=this.getZincCameraControls().getViewportFromBoundingBox(k,Z);0<Q&&(this.getZincCameraControls().cameraTransition(V,U,Q),this.getZincCameraControls().enableCameraTransition()),z.markerUpdateRequired=!0}},this.alignObjectToCameraView=(k,Z)=>{if(this.objectIsInScene(k)){var Q=k.getBoundingBox();this.alignBoundingBoxToCameraView(Q,Z)}},this.setCameraTargetToObject=k=>{if(this.objectIsInScene(k)){var Z=new u.Vector3,Q=k.getBoundingBox(),V=this.getZincCameraControls().getCurrentViewport();Q.getCenter(Z);var U=new u.Vector3(V.targetPosition[0],V.targetPosition[1],V.targetPosition[2]),oe=new u.Vector3(V.eyePosition[0],V.eyePosition[1],V.eyePosition[2]),ae=new u.Vector3,le=new u.Vector3;ae.subVectors(oe,U),le.addVectors(Z,ae),V.eyePosition[0]=le.x,V.eyePosition[1]=le.y,V.eyePosition[2]=le.z,V.targetPosition[0]=Z.x,V.targetPosition[1]=Z.y,V.targetPosition[2]=Z.z,this.getZincCameraControls().setCurrentCameraSettings(V),z.markerUpdateRequired=!0}},this.isStereoEffectEnable=()=>F,this.removeZincObject=k=>{S.removeZincObject(k),B&&B.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.updatePickableThreeJSObjects=()=>{j.length=0,z.isEnabled&&j.push(z.group),S.getPickableThreeJSObjects(j,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||S.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),j),this.getNormalisedMinimapCoordinates=(k,Z)=>{if(this.displayMinimap){var Q=new u.Vector2;k.getSize(Q);var V=Q.y-Z.clientY;if(H.x+this.minimapScissor.width>Z.clientX&&Z.clientX>H.x&&H.y+this.minimapScissor.height>V&&V>H.y){var U=2*((Z.clientX-H.x)/this.minimapScissor.width)-1,oe=2*((V-H.y)/this.minimapScissor.height)-1;return{x:U,y:oe}}}},this.getMinimapDiffFromNormalised=(k,Z)=>L?L.getDiffFromNormalised(k,Z):void 0,this.isWebGL2=()=>_.isWebGL2(),this.clearAll=()=>{z.clear(),S.clear(!0),this.clearZincObjectAddedCallbacks(),this.clearZincObjectRemovedCallbacks(),A.toBeDwonloaded=0,B&&B.calculateMaxAllowedDistance(this),z.markerUpdateRequired=!0},this.addMetadataTimeStamp=(k,Z)=>{te.TimeStamps[k]=ie(Z)},this.getMetadataTag=k=>te[k],this.getMetadata=()=>te,this.setMetadataTag=(k,Z)=>{te[k]=Z},this.removeMetadataTag=k=>{delete te[k]},this.resetMetadata=()=>{te=v()},this.resetDuration=()=>{this.setDuration(w)};var K=k=>[...k.years?["".concat(k.years,"years")]:[],...k.months?["".concat(k.months,"months")]:[],...k.weeks?["".concat(k.weeks,"weeks")]:[],...k.days?["".concat(k.days,"days")]:[],...k.hours?["".concat(k.hours,"hours")]:[],...k.mins?["".concat(k.mins,"mins")]:[],...k.secs?["".concat(k.secs,"secs")]:[]].join(" "),ie=k=>k.years?31536e6*k.years:0+k.months?2592e6*k.months:0+k.weeks?6048e5*k.weeks:0+k.days?864e5*k.days:0+k.hours?36e5*k.hours:0+k.mins?6e4*k.mins:0+k.secs?1e3*k.secs:0;this.setDurationFromObject=k=>{var Z=K(k),Q=ie(k);this.setMetadataTag("Duration",Z),this.setDuration(Q)},this.setOriginalDurationFromObject=k=>{var Z=K(k);this.setMetadataTag("OriginalDuration",Z)},this.exportGLTF=k=>{var Z=new m(this);return Z.exportGLTF(k)},this.getRootRegion=()=>S,this.createLines=(k,Z,Q,V)=>{var U=S.findChildFromPath(k);return U===void 0&&(U=S.createChildFromPath(k)),U.createLines(Z,Q,V)},this.createPoints=(k,Z,Q,V,U)=>{var oe=S.findChildFromPath(k);return oe===void 0&&(oe=S.createChildFromPath(k)),oe.createPoints(Z,Q,V,U)},this.addZincObjectAddedCallbacks=k=>(++P,R[P]=k,P),this.addZincObjectRemovedCallbacks=k=>(++N,I[N]=k,N),this.removeZincObjectAddedCallbacks=k=>{k in P&&delete R[k]},this.removeZincObjectRemovedCallbacks=k=>{k in N&&delete I[k]},this.clearZincObjectAddedCallbacks=()=>{R={},P=0},this.clearZincObjectRemovedCallbacks=()=>{I={},N=0},this.triggerObjectAddedCallback=k=>{for(var Z in R)R.hasOwnProperty(Z)&&R[Z](k)},this.triggerObjectRemovedCallback=k=>{for(var Z in I)I.hasOwnProperty(Z)&&I[Z](k)},this.addTemporaryPoints=(k,Z)=>{var Q=d(k.length,k),V=new u.PointsMaterial({alphaTest:.5,size:15,color:Z,sizeAttenuation:!1}),U=p();V.map=U;var oe=new(c(23)).Points(Q,V);return T.add(oe),oe},this.addTemporaryLines=(k,Z)=>{var Q=d(k.length,k),V=new u.LineBasicMaterial({color:Z}),U=new(c(12)).LineSegments(Q,V);return T.add(U),U},this.removeTemporaryPrimitive=k=>{T.remove(k),k.geometry.dispose(),k.material.dispose()},this.clearTemporaryPrimitives=()=>{var k=T.children;k.forEach(Z=>{Z.geometry.dispose(),Z.material.dispose()}),T.clear()},this.addBoundingBoxPrimitive=function(k,Z,Q,V,U){var oe=5<arguments.length&&arguments[5]!==void 0?arguments[5]:void 0,ae=S.findChildFromPath(k);ae===void 0&&(ae=S.createChildFromPath(k));var le=oe||M.getBoundingBox(),fe=new u.Vector3().subVectors(le.max,le.min),be=new u.BoxGeometry(fe.x,fe.y,fe.z);fe.addVectors(le.min,le.max).multiplyScalar(.5);var we=ae.createGeometryFromThreeJSGeometry(Z,be,Q,V,U,1e4);return we.setPosition(fe.x,fe.y,fe.z),we},this.enableMarkerCluster=k=>{k?(z.markerUpdateRequired=!0,z.enable()):(z.markerUpdateRequired=!1,z.disable()),this.forcePickableObjectsUpdate=!0}}},(o,l,c)=>{function u(_,M){var x=Object.keys(_);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(_);M&&(C=C.filter(function(A){return Object.getOwnPropertyDescriptor(_,A).enumerable})),x.push.apply(x,C)}return x}function h(_){for(var M,x=1;x<arguments.length;x++)M=arguments[x]==null?{}:arguments[x],x%2?u(Object(M),!0).forEach(function(C){f(_,C,M[C])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(M)):u(Object(M)).forEach(function(C){Object.defineProperty(_,C,Object.getOwnPropertyDescriptor(M,C))});return _}function f(_,M,x){return M=m(M),M in _?Object.defineProperty(_,M,{value:x,enumerable:!0,configurable:!0,writable:!0}):_[M]=x,_}function m(_){var M=g(_,"string");return typeof M=="symbol"?M:M+""}function g(_,M){if(typeof _!="object"||!_)return _;var x=_[Symbol.toPrimitive];if(x!==void 0){var C=x.call(_,M);if(typeof C!="object")return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(_)}var d=c(4),p=new Image(128,128);p.src=c(34);var b=new d.Texture;b.image=p,b.needsUpdate=!0;var y=[.02,.03,1],v=new d.SpriteMaterial({map:b,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),w=c(5).createNewSpriteText,E=function(_){c(10).ZincObject.call(this),this.texture=b;var M=void 0;this.morph=new d.Group,this.group=this.morph,this.isMarkerCluster=!0;var x=!0,C=[];this.markers={};var A=new d.Vector2,L=new d.Vector2,R=Date.now();this.setSpriteSize=S=>{M.scale.set(.015,.02,1),M.scale.multiplyScalar(S)},this.clear=()=>{this.group.clear(),this.markers={}},this.dispose=()=>{this.clear(),this.morph&&this.morph.clear()};var P=S=>{var T=new d.Group,D=new d.Sprite(v);return D.clusterIndex=S,D.center.set(.5,0),D.position.set(0,0,0),D.renderOrder=1e4,D.scale.set(y[0],y[1],y[2]),D.userData=this,T.add(D),this.group.add(T),{group:T,marker:D,label:void 0,number:0,min:[0,0,0],max:[1,1,1]}},I=(S,T,D)=>{S.group.visible=!0,S.group.position.set(T.coords[0],T.coords[1],T.coords[2]),(S.label===void 0||D!==S.number)&&(S.label&&(S.group.remove(S.label),S.label.material.map.dispose(),S.label.material.dispose()),S.label=w(D,.012,"black","Asap",50,500),S.number=D,S.group.add(S.label)),S.min=T.min,S.max=T.max},N=S=>{var T=0;for(S.forEach(D=>{var B=D.members.length,F=0;B===1?D.members[0].setVisibility(!0):(D.members.forEach(G=>{F+=G.getNumber(),G.setVisibility(!1)}),!C[T]&&C.push(P(T)),I(C[T],D,F),T++)}),T;T<C.length;T++)C[T].group.visible=!1},O=(S,T)=>{var D=!0,B={members:[],coords:[0,0,0],min:[0,0,0],max:[1,1,1]},F=0;for(var G in S)D?(A.set(S[G].ndc.x,S[G].ndc.y),this._b1.setFromPoints([S[G].morph.position]),D=!1,B.members.push(S[G]),B.coords=[S[G].morph.position.x,S[G].morph.position.y,S[G].morph.position.z],T.push(B),delete S[G]):(L.set(S[G].ndc.x,S[G].ndc.y),F=A.distanceTo(L),.1>F&&(B.members.push(S[G]),this._b1.expandByPoint(S[G].morph.position),delete S[G]));B.min=[this._b1.min.x,this._b1.min.y,this._b1.min.z],B.max=[this._b1.max.x,this._b1.max.y,this._b1.max.z],D!=!0&&O(S,T)};this.calculate=()=>{if(x){var S=Date.now();if(500<S-R){var T=[];O(h({},this.markers),T),N(T),R=Date.now(),this.markerUpdateRequired=!1}}},this.isEnabled=()=>x,this.enable=()=>{x=!0,this.morph.visible=!0},this.disable=()=>{for(var S in x=!1,this.morph.visible=!1,this.markers){var T;(T=this.markers[S])!==null&&T!==void 0&&T.isMarker&&this.markers[S].isEnabled()&&this.markers[S].setVisibility(!0)}},this.zoomToCluster=S=>{S!==void 0&&-1<S&&(this._v1.set(...C[S].min),this._v2.set(...C[S].max),this._b1.set(this._v1,this._v2),_.translateBoundingBoxToCameraView(this._b1,3,300),this.markerUpdateRequired=!0)},this.clusterIsVisible=S=>{if(S!==void 0&&-1<S&&C[S]){var T;return(T=C[S].group)===null||T===void 0?void 0:T.visible}return!1}};E.prototype=Object.create(c(10).ZincObject.prototype),l.MarkerCluster=E},o=>{o.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2NSIgaGVpZ2h0PSI1NjAiIHZpZXdCb3g9IjAgMCAzNjUgNTYwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGRlc2M+Q3JlYXRlZCB3aXRoIEZhYnJpYy5qcyA1LjIuNDwvZGVzYz4KPGRlZnM+CjwvZGVmcz4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDApIiBpZD0iODA4ZWQyODMtMjUyNC00NDBmLTg4YWUtM2JkYjQ3YmI1NzQ5IiAgPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMTgyLjUgMjgwKSIgaWQ9ImRiMzA0MTNkLTViZmYtNGI5OC1hYjU5LTQ2NDQ5N2VlMTk5ZSIgID4KPHJlY3Qgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiA0OyBmaWxsOiByZ2IoMjU1LDI1NSwyNTUpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHg9Ii0xODIuNSIgeT0iLTI4MCIgcng9IjAiIHJ5PSIwIiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjU2MCIgLz4KPC9nPgo8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDAgOTcuNSkiICA+CjxnIHN0eWxlPSIiICAgPgo8L2c+CjwvZz4KPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAwIDAgMCAwIDk3LjUpIiAgPgo8ZyBzdHlsZT0iIiAgID4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTkgMCAwIDAuOTkgMTgyLjUgMjgwKSIgID4KPGcgc3R5bGU9IiIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgID4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiICB4PSItNTQwIiB5PSItNTQwIiByeD0iMCIgcnk9IjAiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIC8+CjwvZz4KCQk8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgMCkiICA+CjxwYXRoIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwxNjUsMCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtMTgyLjksIC0yNzkuODUpIiBkPSJNIDE4Mi45IDU1MS43IEMgMTgyLjkgNTUxLjgwMDAwMDAwMDAwMDEgMTgzLjEgNTUyIDE4My4xIDU1MiBDIDE4My4xIDU1MiAzNTguMyAyODMgMzU4LjMgMTk0LjYgQyAzNTguMyA2NC41IDI2OS41IDcuOTAwMDAwMDAwMDAwMDA2IDE4Mi45IDcuNjk5OTk5OTk5OTk5OTg5IEMgOTYuMyA3LjkgNy41IDY0LjUgNy41IDE5NC42IEMgNy41IDI4MyAxODIuOCA1NTIgMTgyLjggNTUyIEMgMTgyLjggNTUyIDE4Mi45IDU1MS43IDE4Mi45IDU1MS43IHogTSAxMjIuMiAxODcuMiBDIDEyMi4yIDE1My42IDE0OS40IDEyNi4zOTk5OTk5OTk5OTk5OSAxODMgMTI2LjM5OTk5OTk5OTk5OTk5IEMgMjE2LjYgMTI2LjM5OTk5OTk5OTk5OTk5IDI0My44IDE1My42IDI0My44IDE4Ny4yIEMgMjQzLjggMjIwLjc5OTk5OTk5OTk5OTk4IDIxNi41IDI0OCAxODIuOSAyNDggQyAxNDkuNCAyNDggMTIyLjIgMjIwLjggMTIyLjIgMTg3LjIgeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgo8L2c+CgkJPGcgdHJhbnNmb3JtPSJtYXRyaXgoMy44MiAwIDAgMy44MiAwIC0xMDAuNzcpIiAgPgo8Y2lyY2xlIHN0eWxlPSJzdHJva2U6IHJnYigwLDAsMCk7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiAgY3g9IjAiIGN5PSIwIiByPSIzNSIgLz4KPC9nPgo8L2c+CjwvZz4KPC9zdmc+"},(o,l,c)=>{var u=c(4),h=c(5).resolveURL,f=c(5).createNewURL,m=c(36).STLLoader,g=c(37).OBJLoader,d=c(38).PrimitivesLoader;l.SceneLoader=function(p){var b=p;this.toBeDownloaded=0,this.progressMap={};var y=!1,v=!1,w=new d;this.getDownloadProgress=()=>{var j=0,z=0,W=!1;for(var ee in this.progressMap){var q=this.progressMap[ee];j+=q[1],z+=q[0],q[1]==0&&(W=!0)}return W&&(j=0),[j,z,v]},this.onProgress=j=>z=>{this.progressMap[j]=[z.loaded,z.total]},this.onError=j=>()=>{--this.toBeDownloaded,v=!0,j&&j()};var E=(j,z)=>{var W=z.Default;if(z.Inline)b.setupMultipleViews(W,z.Entries);else{var ee=[],q=function(ie){j&&(newURL=f(Y,j),ee.push(new Promise((k,Z)=>{fetch(newURL).then(Q=>Q.json()).then(Q=>k({key:ie,data:Q})).catch(Q=>Z(Q))})))};for(var[$,Y]of Object.entries(z.Entries))q($);Promise.all(ee).then(K=>{var ie={};K.forEach(Z=>{ie[Z.key]=Z.data}),b.setupMultipleViews(W,ie);var k=b.getZincCameraControls();k&&k.setCurrentViewport(W),y=!0})}};this.loadViewURL=(j,z)=>{this.toBeDownloaded+=1;var W=new XMLHttpRequest;W.onreadystatechange=()=>{if(W.readyState==4)if(W.status==200){var q=JSON.parse(W.responseText);b.setupMultipleViews("default",{default:q}),b.resetView(),y=!0,--this.toBeDownloaded,z!=null&&typeof z=="function"&&z()}else this.onError()};var ee=h(j);W.open("GET",ee,!0),W.send()},this.loadModelsURL=(j,z,W,ee,q,$,Y)=>{var K=z.length;this.toBeDownloaded+=K;for(var ie=0;ie<K;ie++){var k=z[ie],Z=c(0).defaultMaterialColor,Q=c(0).defaultOpacity;W!=null&&W[ie]!=null&&(Z=!!W[ie]),ee!=null&&ee[ie]!=null&&(Q=ee[ie]);var V=0;q!=null&&q[ie]!=null&&(V=!!q[ie]);var U=0;$!=null&&$[ie]!=null&&(U=!!$[ie]),w.load(h(k),N(j,Z,Q,V,U,void 0,void 0,void 0,void 0,Y),this.onProgress(k),this.onError(Y))}},this.loadFromViewURL=(j,z,W)=>{var ee=new XMLHttpRequest;ee.onreadystatechange=()=>{if(ee.readyState==4&&ee.status==200){var $=JSON.parse(ee.responseText);b.loadView($);for(var Y,K=[],ie=z+"_",k=0;k<$.numberOfResources;k++)Y=ie+(k+1)+".json",K.push(Y);this.loadModelsURL(j,K,$.colour,$.opacity,$.timeEnabled,$.morphColour,W)}};var q=h(z+"_view.json");ee.open("GET",q,!0),ee.send()};var _=(j,z,W,ee,q,$,Y,K)=>(ie,k)=>{var Z=new(c(24)).Lines,Q=void 0;k&&k[0]&&(Q=new u.LineBasicMaterial({color:k[0].color.clone()}),1>k[0].opacity&&(Q.transparent=!0),Q.opacity=k[0].opacity,Q.morphTargets=z,Q.vertexColors=k[0].vertexColors);var V={localTimeEnabled:z,localMorphColour:W};if(Z&&(Z.createLineSegment(ie,Q,V),Z.setName(ee),Z.anatomicalId=q,Z.setRenderOrder($),j.addZincObject(Z),Z.setDuration(b.getDuration()),Y&&Y.levels))for(var[U,oe]of Object.entries(Y.levels))Z.addLOD(w,U,oe.URL,Y.preload);--this.toBeDownloaded,ie.dispose(),K!=null&&typeof K=="function"&&K(Z)};this.loadLinesURL=(j,z,W,ee,q,$,Y)=>{var K=0;this.toBeDownloaded+=1;var ie=!!(Y&&Y.isInline)&&Y.isInline,k=Y&&Y.anatomicalId?Y.anatomicalId:void 0,Z=Y&&Y.renderOrder?Y.renderOrder:void 0;W!=null&&(K=!!W);var Q=0;if(ee!=null&&(Q=!!ee),ie){var V=w.parse(z);_(j,K,Q,q,k,Z,Y.lod,$)(V.geometry,V.materials)}else w.load(z,_(j,K,Q,q,k,Z,Y.lod,$),this.onProgress(z),this.onError($))};var M=(j,z,W,ee,q,$)=>{var Y=$&&$.isInline?$.isInline:void 0,K=$&&$.anatomicalId?$.anatomicalId:void 0,ie=$&&$.displayLabels?$.displayLabels:void 0,k=$&&$.renderOrder?$.renderOrder:void 0,Z=new(c(18)).Glyphset;Z.setDuration(b.getDuration()),Z.groupName=ee;var Q=()=>{--this.toBeDownloaded,q!=null&&typeof q=="function"&&q(Z)};++this.toBeDownloaded,Y?Z.load(z,W,Q,Y,ie):Z.load(z,h(W),Q,Y,ie),Z.anatomicalId=K,Z.setRenderOrder(k),j.addZincObject(Z)},x=(j,z,W,ee,q,$)=>()=>{if(z.readyState==4&&z.status==200){var Y=JSON.parse(z.responseText);M(j,Y,W,ee,q,$)}},C=(j,z,W,ee,q,$,Y)=>(K,ie)=>{var k=new(c(22)).Pointset,Z=new u.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});ie&&ie[0]&&(1>ie[0].opacity&&(Z.transparent=!0),Z.opacity=ie[0].opacity,Z.color=ie[0].color,Z.morphTargets=z,Z.vertexColors=ie[0].vertexColors);var Q={};Q.localTimeEnabled=z,Q.localMorphColour=W,k&&(k.createMesh(K,Z,Q),k.setName(ee),k.anatomicalId=q,j.addZincObject(k),k.setDuration(b.getDuration()),k.setRenderOrder($)),K.dispose(),--this.toBeDownloaded,Y!=null&&typeof Y=="function"&&Y(k)};this.loadSTL=(j,z,W,ee)=>{this.toBeDownloaded+=1;var q=c(0).defaultMaterialColor,$=c(0).defaultOpacity,Y=new m;Y.crossOrigin="Anonymous",Y.load(h(z),N(j,q,$,!1,!1,W,void 0,void 0,void 0,ee))},this.loadOBJ=(j,z,W,ee)=>{this.toBeDownloaded+=1;var q=c(0).defaultMaterialColor,$=c(0).defaultOpacity,Y=new g;Y.crossOrigin="Anonymous",Y.load(h(z),N(j,q,$,!1,!1,W,void 0,void 0,void 0,ee))};var A=(j,z,W,ee,q,$,Y)=>{this.toBeDownloaded+=1;var K=c(0).defaultMaterialColor,ie=c(0).defaultOpacity,k=0,Z=!!(Y&&Y.isInline)&&Y.isInline,Q=Y&&Y.fileFormat?Y.fileFormat:void 0,V=Y&&Y.anatomicalId?Y.anatomicalId:void 0,U=Y&&Y.renderOrder?Y.renderOrder:void 0;W!=null&&(k=!!W);var oe=0;ee!=null&&(oe=!!ee);var ae=w;if(Q!==void 0){if(Q=="STL")ae=new m;else if(Q=="OBJ")return ae=new g,ae.crossOrigin="Anonymous",void ae.load(z,objloader(j,K,ie,k,oe,q,V,$),this.onProgress(z),this.onError)}if(Z){var le=w.parse(z);N(j,K,ie,k,oe,q,V,U,Y,$)(le.geometry,le.materials)}else ae.crossOrigin="Anonymous",w.load(z,N(j,K,ie,k,oe,q,V,U,Y,$),this.onProgress(z),this.onError($))},L=function(z,W,ee){var q=0;return $=>{if(++q,$&&W!=null&&typeof W=="function"){W($);var Y=b.getZincCameraControls();Y&&Y.calculateMaxAllowedDistance(b)}q==z&&(y==!1&&b.viewAll(),ee!=null&&typeof ee=="function"&&ee())}};this.loadPointsetURL=(j,z,W,ee,q,$,Y)=>{var K=0;this.toBeDownloaded+=1,W!=null&&(K=!!W);var ie=0;ee!=null&&(ie=!!ee);var k=!!(Y&&Y.isInline)&&Y.isInline,Z=Y&&Y.anatomicalId?Y.anatomicalId:void 0,Q=Y&&Y.renderOrder?Y.renderOrder:void 0;if(k){var V=w.parse(z);C(j,K,ie,q,Z,Q,$)(V.geometry,V.materials)}else w.load(z,C(j,K,ie,q,Z,Q,$),this.onProgress(z),this.onError($))};var R=(j,z,W,ee,q,$)=>{var Y=$&&$.isInline?$.isInline:void 0,K=$&&$.anatomicalId?$.anatomicalId:void 0,ie=$&&$.renderOrder?$.renderOrder:void 0,k=void 0;if(W){if(z&&W.images&&W.images.source)for(var Z,Q=W.images.source,V=0;V<Q.length;V++)Z=f(Q[V],z),W.images.source[V]=Z;if(W.type==="slides"&&(k=new(c(27)).TextureSlides),k){k.groupName=ee;var U=()=>{--this.toBeDownloaded,q!=null&&typeof q=="function"&&q(k)};++this.toBeDownloaded,k.load(W,U,Y),k.anatomicalId=K,k.setRenderOrder(ie),j.addZincObject(k)}}},P=(j,z,W,ee,q)=>()=>{if(z.readyState==4&&z.status==200){var $=JSON.parse(z.responseText);R(j,z.responseURL,$,W,ee,q)}};this.loadTextureURL=(j,z,W,ee,q)=>{var $=!!(q&&q.isInline)&&q.isInline;if($)R(j,void 0,z,W,ee,q);else{var Y=new XMLHttpRequest;Y.onreadystatechange=P(j,Y,W,ee,q),Y.open("GET",h(z),!0),Y.send()}},this.loadGlyphsetURL=(j,z,W,ee,q,$)=>{var Y=!!($&&$.isInline)&&$.isInline;if(Y)M(j,z,W,ee,q,$);else{var K=new XMLHttpRequest;K.onreadystatechange=x(j,K,W,ee,q,$),K.open("GET",h(z),!0),K.send()}};var I=(j,z,W,ee,q,$,Y,K,ie)=>{var k={colour:W,opacity:ee,localTimeEnabled:q,localMorphColour:$},Z=new(c(3)).Geometry;return Z.createMesh(z,K,k),Z.getMorph()?(Z.setName(ie),j&&j.addZincObject(Z),Z.setDuration(b.getDuration()),Z.videoHandler&&b.setVideoHandler(Z.videoHandler),Z):void 0},N=(j,z,W,ee,q,$,Y,K,ie,k)=>(Z,Q)=>{var V;Q&&Q[0]&&(V=Q[0]);var U=I(j,Z,z,W,ee,q,void 0,V,$);if(U.anatomicalId=Y,U.setRenderOrder(K),ie.lod&&ie.lod.levels)for(var[oe,ae]of Object.entries(ie.lod.levels))U.addLOD(w,oe,ae.URL,ie.lod.preload);--this.toBeDownloaded,Z.dispose(),k!=null&&typeof k=="function"&&k(U)},O=j=>{var z=/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/,[,W,ee,q,$,Y,K,ie]=j.match(z);return{years:W,months:ee,weeks:q,days:$,hours:Y,mins:K,secs:ie}};this.loadSettings=j=>{if(j){if(j.Duration){var z=O(j.Duration);b.setDurationFromObject(z)}if(j.OriginalDuration){var W=O(j.OriginalDuration);b.setOriginalDurationFromObject(W)}if(j.TimeStamps)for(var ee in j.TimeStamps){var q=O(j.TimeStamps[ee]);b.addMetadataTimeStamp(ee,q)}}};var S=(j,z,W,ee,q)=>{if(W){var $=void 0,Y=!1;W.URL?($=W.URL,z&&($=f(W.URL,z))):W.Inline&&($=W.Inline.URL,Y=!0);var K={};if(W.LOD&&W.LOD.Levels){K.preload=!!W.LOD.Preload,K.levels={};for(var[ie,k]of Object.entries(W.LOD.Levels))K.levels[ie]={},K.levels[ie].URL=f(k.URL,z)}var Z=W.GroupName;(Z===void 0||Z==="")&&(Z="_Unnamed");var Q={isInline:Y,fileFormat:W.FileFormat,anatomicalId:W.AnatomicalId,compression:W.compression,lod:K,renderOrder:ee};switch(W.Type){case"Surfaces":A(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Glyph":var V;Y?V=W.Inline.GlyphGeometriesURL:(V=W.GlyphGeometriesURL,V=f(W.GlyphGeometriesURL,z)),W.DisplayLabels&&(Q.displayLabels=!0),this.loadGlyphsetURL(j,$,V,Z,q,Q);break;case"Points":this.loadPointsetURL(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Lines":this.loadLinesURL(j,$,W.MorphVertices,W.MorphColours,Z,q,Q);break;case"Texture":this.loadTextureURL(j,$,Z,q,Q);break}}},T=(j,z,W)=>{if(z){var ee=void 0,q=!1;switch(z.URL?(ee=z.URL,j&&(ee=f(z.URL,j))):z.Inline&&(ee=z.Inline.URL,q=!0),z.Type){case"View":q?(b.setupMultipleViews("default",{default:ee}),y=!0,W!=null&&typeof W=="function"&&W()):this.loadViewURL(ee,W);break;case"Settings":this.loadSettings(z);break}}};this.loadGLTF=(j,z,W,ee,q)=>{var $=new(c(39)).GLTFToZincJSLoader;$.load(b,j,z,W,ee,q)};var D=(j,z,W,ee)=>{if(W.Primitives&&W.Primitives.forEach(K=>{var ie=1;K.Order&&(ie=K.Order),S(j,z,K,ie,ee)}),W.Transformation&&j.setTransformation(W.Transformation),W.Children)for(var[q,$]of Object.entries(W.Children)){var Y=j.findOrCreateChildFromPath(q);Y&&D(Y,z,$,ee)}},B=(j,z)=>{if(Array.isArray(j)){for(var W=0,ee=0;ee<j.length;ee++)j[ee].Type&&(z&&j[ee].Type==="View"||j[ee].Type==="Surfaces"||j[ee].Type==="Glyph"||j[ee].Type==="Points"||j[ee].Type==="Lines"||j[ee].Type==="Texture")&&W++;return W}return 0},F=j=>{var z=j.Primitives?B(j.Primitives,!1):0;return j.Children&&Object.values(j.Children).forEach(W=>{z+=F(W)}),z},G=j=>Array.isArray(j)?B(j,!0):typeof j=="object"&&j!==null&&j.Version==="2.0"?F(j.Regions):void 0,H=(j,z,W,ee,q)=>{var $=j;W.RegionPath&&W.RegionPath!==""&&($=j.findOrCreateChildFromPath(W.RegionPath)),S($,z,W,2*ee,q)},te=(j,z,W,ee,q)=>{for(var $=G(z),Y=new L($,ee,q),K=0;K<z.length;K++)T(W,z[K],Y);for(var ie=0;ie<z.length;ie++)H(j,W,z[ie],ie,Y)},se=(j,z,W,ee,q)=>{var $=G(z),Y=new L($,ee,q);z.Settings&&this.loadSettings(z.Settings),z.Views&&E(W,z.Views),z.Regions&&D(j,W,z.Regions,Y)};this.loadMetadataURL=(j,z,W,ee)=>{var q=new XMLHttpRequest,$=h(z);q.onreadystatechange=()=>{if(q.readyState==4&&q.status==200){b.resetMetadata(),b.resetDuration(),y=!1;var Y=q.responseURL;Y===void 0&&(Y=new URL($).href);var K=JSON.parse(q.responseText);Array.isArray(K)?te(j,K,Y,W,ee):typeof K=="object"&&K!==null&&K.Version=="2.0"&&se(j,K,Y,W,ee)}},q.open("GET",$,!0),q.send()}}},(o,l,c)=>{c.r(l),c.d(l,{STLLoader:()=>h});var u=c(4);class h extends u.Loader{constructor(m){super(m)}load(m,g,d,p){var b=this,y=new u.FileLoader(this.manager);y.setPath(this.path),y.setResponseType("arraybuffer"),y.setRequestHeader(this.requestHeader),y.setWithCredentials(this.withCredentials),y.load(m,function(v){try{g(b.parse(v))}catch(w){p?p(w):console.error(w),b.manager.itemError(m)}},d,p)}parse(m){function g(p,b,y){for(var v=0,w=p.length;v<w;v++)if(p[v]!==b.getUint8(y+v,!1))return!1;return!0}var d=function(p){if(typeof p=="string"){for(var b=new Uint8Array(p.length),y=0;y<p.length;y++)b[y]=255&p.charCodeAt(y);return b.buffer||b}return p}(m);return function(p){var b=new DataView(p),y=b.getUint32(80,!0);if(84+y*50===b.byteLength)return!0;for(var v=[115,111,108,105,100],w=0;5>w;w++)if(g(v,b,w))return!1;return!0}(d)?function(p){for(var b,y,v,w,E,_,M,x,C=new DataView(p),A=C.getUint32(80,!0),L=!1,R=0;R<70;R++)C.getUint32(R,!1)==1129270351&&C.getUint8(R+4)==82&&C.getUint8(R+5)==61&&(L=!0,w=new Float32Array(3*(3*A)),E=C.getUint8(R+6)/255,_=C.getUint8(R+7)/255,M=C.getUint8(R+8)/255,x=C.getUint8(R+9)/255);for(var P=new u.BufferGeometry,I=new Float32Array(3*(3*A)),N=new Float32Array(3*(3*A)),O=0;O<A;O++){var S=84+O*50,T=C.getFloat32(S,!0),D=C.getFloat32(S+4,!0),B=C.getFloat32(S+8,!0);if(L){var F=C.getUint16(S+48,!0);32768&F?(b=E,y=_,v=M):(b=(31&F)/31,y=(31&F>>5)/31,v=(31&F>>10)/31)}for(var G=1;3>=G;G++){var H=S+12*G,te=3*(3*O)+3*(G-1);I[te]=C.getFloat32(H,!0),I[te+1]=C.getFloat32(H+4,!0),I[te+2]=C.getFloat32(H+8,!0),N[te]=T,N[te+1]=D,N[te+2]=B,L&&(w[te]=b,w[te+1]=y,w[te+2]=v)}}return P.setAttribute("position",new u.BufferAttribute(I,3)),P.setAttribute("normal",new u.BufferAttribute(N,3)),L&&(P.setAttribute("color",new u.BufferAttribute(w,3)),P.hasColors=!0,P.alpha=x),P}(d):function(p){for(var b,y=new u.BufferGeometry,v=/solid([\s\S]*?)endsolid/g,w=/facet([\s\S]*?)endfacet/g,E=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,M=new RegExp("vertex"+_+_+_,"g"),x=new RegExp("normal"+_+_+_,"g"),C=[],A=[],L=new u.Vector3,R=0,P=0,I=0;(b=v.exec(p))!==null;){P=I;for(var N=b[0];(b=w.exec(N))!==null;){for(var O=0,S=0,T=b[0];(b=x.exec(T))!==null;)L.x=parseFloat(b[1]),L.y=parseFloat(b[2]),L.z=parseFloat(b[3]),S++;for(;(b=M.exec(T))!==null;)C.push(parseFloat(b[1]),parseFloat(b[2]),parseFloat(b[3])),A.push(L.x,L.y,L.z),O++,I++;S!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+E),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+E),E++}var D=P,B=I-P;y.addGroup(D,B,R),R++}return y.setAttribute("position",new u.Float32BufferAttribute(C,3)),y.setAttribute("normal",new u.Float32BufferAttribute(A,3)),y}(function(p){return typeof p=="string"?p:u.LoaderUtils.decodeText(new Uint8Array(p))}(m))}}},(o,l,c)=>{c.r(l),c.d(l,{OBJLoader:()=>E});var u=c(4),h=/^[og]\s*(.+)?/,f=/^mtllib /,m=/^usemtl /,g=/^usemap /,d=new u.Vector3,p=new u.Vector3,b=new u.Vector3,y=new u.Vector3,v=new u.Vector3;function w(){var _={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(x,C){if(this.object&&this.object.fromDeclaration===!1)return this.object.name=x,void(this.object.fromDeclaration=C!==!1);var A=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:x||"",fromDeclaration:C!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(P,I){var N=this._finalize(!1);N&&(N.inherited||0>=N.groupCount)&&this.materials.splice(N.index,1);var O={index:this.materials.length,name:P||"",mtllib:Array.isArray(I)&&0<I.length?I[I.length-1]:"",smooth:N===void 0?this.smooth:N.smooth,groupStart:N===void 0?0:N.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(T){var D={index:typeof T=="number"?T:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return D.clone=this.clone.bind(D),D}};return this.materials.push(O),O},currentMaterial:function(){return 0<this.materials.length?this.materials[this.materials.length-1]:void 0},_finalize:function(P){var I=this.currentMaterial();if(I&&I.groupEnd===-1&&(I.groupEnd=this.geometry.vertices.length/3,I.groupCount=I.groupEnd-I.groupStart,I.inherited=!1),P&&1<this.materials.length)for(var N=this.materials.length-1;0<=N;N--)0>=this.materials[N].groupCount&&this.materials.splice(N,1);return P&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),I}},A&&A.name&&typeof A.clone=="function"){var L=A.clone(0);L.inherited=!0,this.object.materials.push(L)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(x,C){var A=parseInt(x,10);return 3*(0<=A?A-1:A+C/3)},parseNormalIndex:function(x,C){var A=parseInt(x,10);return 3*(0<=A?A-1:A+C/3)},parseUVIndex:function(x,C){var A=parseInt(x,10);return 2*(0<=A?A-1:A+C/2)},addVertex:function(x,C,A){var L=this.vertices,R=this.object.geometry.vertices;R.push(L[x+0],L[x+1],L[x+2]),R.push(L[C+0],L[C+1],L[C+2]),R.push(L[A+0],L[A+1],L[A+2])},addVertexPoint:function(x){var C=this.vertices,A=this.object.geometry.vertices;A.push(C[x+0],C[x+1],C[x+2])},addVertexLine:function(x){var C=this.vertices,A=this.object.geometry.vertices;A.push(C[x+0],C[x+1],C[x+2])},addNormal:function(x,C,A){var L=this.normals,R=this.object.geometry.normals;R.push(L[x+0],L[x+1],L[x+2]),R.push(L[C+0],L[C+1],L[C+2]),R.push(L[A+0],L[A+1],L[A+2])},addFaceNormal:function(x,C,A){var L=this.vertices,R=this.object.geometry.normals;d.fromArray(L,x),p.fromArray(L,C),b.fromArray(L,A),v.subVectors(b,p),y.subVectors(d,p),v.cross(y),v.normalize(),R.push(v.x,v.y,v.z),R.push(v.x,v.y,v.z),R.push(v.x,v.y,v.z)},addColor:function(x,C,A){var L=this.colors,R=this.object.geometry.colors;L[x]!==void 0&&R.push(L[x+0],L[x+1],L[x+2]),L[C]!==void 0&&R.push(L[C+0],L[C+1],L[C+2]),L[A]!==void 0&&R.push(L[A+0],L[A+1],L[A+2])},addUV:function(x,C,A){var L=this.uvs,R=this.object.geometry.uvs;R.push(L[x+0],L[x+1]),R.push(L[C+0],L[C+1]),R.push(L[A+0],L[A+1])},addDefaultUV:function(){var x=this.object.geometry.uvs;x.push(0,0),x.push(0,0),x.push(0,0)},addUVLine:function(x){var C=this.uvs,A=this.object.geometry.uvs;A.push(C[x+0],C[x+1])},addFace:function(x,C,A,L,R,P,I,N,O){var S=this.vertices.length,T=this.parseVertexIndex(x,S),D=this.parseVertexIndex(C,S),B=this.parseVertexIndex(A,S);if(this.addVertex(T,D,B),this.addColor(T,D,B),I!==void 0&&I!==""){var F=this.normals.length;T=this.parseNormalIndex(I,F),D=this.parseNormalIndex(N,F),B=this.parseNormalIndex(O,F),this.addNormal(T,D,B)}else this.addFaceNormal(T,D,B);if(L!==void 0&&L!==""){var G=this.uvs.length;T=this.parseUVIndex(L,G),D=this.parseUVIndex(R,G),B=this.parseUVIndex(P,G),this.addUV(T,D,B),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(x){this.object.geometry.type="Points";for(var C,A=this.vertices.length,L=0,R=x.length;L<R;L++)C=this.parseVertexIndex(x[L],A),this.addVertexPoint(C),this.addColor(C)},addLineGeometry:function(x,C){this.object.geometry.type="Line";for(var A=this.vertices.length,L=this.uvs.length,R=0,P=x.length;R<P;R++)this.addVertexLine(this.parseVertexIndex(x[R],A));for(var I=0,N=C.length;I<N;I++)this.addUVLine(this.parseUVIndex(C[I],L))}};return _.startObject("",!1),_}class E extends u.Loader{constructor(M){super(M),this.materials=null}load(M,x,C,A){var L=this,R=new u.FileLoader(this.manager);R.setPath(this.path),R.setRequestHeader(this.requestHeader),R.setWithCredentials(this.withCredentials),R.load(M,function(P){try{x(L.parse(P))}catch(I){A?A(I):console.error(I),L.manager.itemError(M)}},C,A)}setMaterials(M){return this.materials=M,this}parse(M){var x=new w;M.indexOf(`\r
3229
3229
  `)!==-1&&(M=M.replace(/\r\n/g,`
3230
3230
  `)),M.indexOf(`\\
3231
3231
  `)!==-1&&(M=M.replace(/\\\n/g,""));for(var C=M.split(`
3232
- `),A="",L="",R=0,P=[],I=typeof"".trimLeft=="function",N=0,O=C.length;N<O;N++)if(A=C[N],A=I?A.trimLeft():A.trim(),R=A.length,R!==0&&(L=A.charAt(0),L!=="#"))if(L==="v"){var S=A.split(/\s+/);switch(S[0]){case"v":x.vertices.push(parseFloat(S[1]),parseFloat(S[2]),parseFloat(S[3])),7<=S.length?x.colors.push(parseFloat(S[4]),parseFloat(S[5]),parseFloat(S[6])):x.colors.push(void 0,void 0,void 0);break;case"vn":x.normals.push(parseFloat(S[1]),parseFloat(S[2]),parseFloat(S[3]));break;case"vt":x.uvs.push(parseFloat(S[1]),parseFloat(S[2]))}}else if(L==="f"){for(var T,D=A.substr(1).trim(),B=D.split(/\s+/),F=[],G=0,H=B.length;G<H;G++)if(T=B[G],0<T.length){var te=T.split("/");F.push(te)}for(var se=F[0],j=1,z=F.length-1;j<z;j++){var W=F[j],ee=F[j+1];x.addFace(se[0],W[0],ee[0],se[1],W[1],ee[1],se[2],W[2],ee[2])}}else if(L==="l"){var q=A.substring(1).trim().split(" "),$=[],Y=[];if(A.indexOf("/")===-1)$=q;else for(var K,ie=0,k=q.length;ie<k;ie++)K=q[ie].split("/"),K[0]!==""&&$.push(K[0]),K[1]!==""&&Y.push(K[1]);x.addLineGeometry($,Y)}else if(L==="p"){var Z=A.substr(1).trim(),Q=Z.split(" ");x.addPointGeometry(Q)}else if((P=h.exec(A))!==null){var V=(" "+P[0].substr(1).trim()).substr(1);x.startObject(V)}else if(m.test(A))x.object.startMaterial(A.substring(7).trim(),x.materialLibraries);else if(f.test(A))x.materialLibraries.push(A.substring(7).trim());else if(g.test(A))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(L==="s"){if(P=A.split(" "),1<P.length){var U=P[1].trim().toLowerCase();x.object.smooth=U!=="0"&&U!=="off"}else x.object.smooth=!0;var oe=x.object.currentMaterial();oe&&(oe.smooth=x.object.smooth)}else{if(A==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+A+'"')}x.finalize();var ae=new u.Group;ae.materialLibraries=[].concat(x.materialLibraries);var le=x.objects.length!==1||x.objects[0].geometry.vertices.length!==0;if(le==!0)for(var fe=0,be=x.objects.length;fe<be;fe++){var we=x.objects[fe],ue=we.geometry,ge=we.materials,re=ue.type==="Line",xe=ue.type==="Points",de=!1;if(ue.vertices.length!==0){var me=new u.BufferGeometry;me.setAttribute("position",new u.Float32BufferAttribute(ue.vertices,3)),0<ue.normals.length&&me.setAttribute("normal",new u.Float32BufferAttribute(ue.normals,3)),0<ue.colors.length&&(de=!0,me.setAttribute("color",new u.Float32BufferAttribute(ue.colors,3))),ue.hasUVIndices===!0&&me.setAttribute("uv",new u.Float32BufferAttribute(ue.uvs,2));for(var _e=[],He=0,Ze=ge.length;He<Ze;He++){var Pe=ge[He],ut=Pe.name+"_"+Pe.smooth+"_"+de,Re=x.materials[ut];if(this.materials!==null){if(Re=this.materials.create(Pe.name),re&&Re&&!(Re instanceof u.LineBasicMaterial)){var Je=new u.LineBasicMaterial;u.Material.prototype.copy.call(Je,Re),Je.color.copy(Re.color),Re=Je}else if(xe&&Re&&!(Re instanceof u.PointsMaterial)){var Xe=new u.PointsMaterial({size:10,sizeAttenuation:!1});u.Material.prototype.copy.call(Xe,Re),Xe.color.copy(Re.color),Xe.map=Re.map,Re=Xe}}Re===void 0&&(Re=re?new u.LineBasicMaterial:xe?new u.PointsMaterial({size:1,sizeAttenuation:!1}):new u.MeshPhongMaterial,Re.name=Pe.name,Re.flatShading=!Pe.smooth,Re.vertexColors=de,x.materials[ut]=Re),_e.push(Re)}var lt=void 0;if(1<_e.length){for(var tt,kt=0,ne=ge.length;kt<ne;kt++)tt=ge[kt],me.addGroup(tt.groupStart,tt.groupCount,kt);lt=re?new u.LineSegments(me,_e):xe?new u.Points(me,_e):new u.Mesh(me,_e)}else lt=re?new u.LineSegments(me,_e[0]):xe?new u.Points(me,_e[0]):new u.Mesh(me,_e[0]);lt.name=we.name,ae.add(lt)}}else if(0<x.vertices.length){var Me=new u.PointsMaterial({size:1,sizeAttenuation:!1}),Te=new u.BufferGeometry;Te.setAttribute("position",new u.Float32BufferAttribute(x.vertices,3)),0<x.colors.length&&x.colors[0]!==void 0&&(Te.setAttribute("color",new u.Float32BufferAttribute(x.colors,3)),Me.vertexColors=!0);var Ie=new u.Points(Te,Me);ae.add(Ie)}return ae}}},(o,l,c)=>{var u=c(19).JSONLoader;l.PrimitivesLoader=function(){var h=0;this.crossOrigin="Anonymous";var f=new u,m=[];this.load=(d,p,b,y)=>{if(20>h){++h,f.crossOrigin=this.crossOrigin;var v=new g(p,this),w=new g(y,this);f.load(d,v,b,w)}else m.push({url:d,onLoad:p,onProgress:b,onError:y})},this.loadFromWaitingList=()=>{var d=m.shift();d&&this.load(d.url,d.onLoad,d.onProgress,d.onError)};var g=function(d,p){return function(){--h,d&&d(...arguments),p.loadFromWaitingList()}};this.parse=d=>f.parse(d)}},(o,l,c)=>{c(4);var u=c(40).GLTFLoader,h=function(){var f=this;this.parseGLTFObjects=(m,g,d,p)=>{var b=g;if(d!==0){if(m.type!=="Object3D"){var y;if(m.type==="Mesh"?y=new(c(3)).Geometry:m.type==="LineSegments"?y=new(c(24)).Lines:m.type==="Points"&&(y=new(c(22)).Pointset),y){var v=!1,w=!1;m.geometry&&m.geometry.morphAttributes&&(v=!!m.geometry.morphAttributes.position,w=!!m.geometry.morphAttributes.color),y.setMesh(m.clone(),v,w);var E=y.getMorph();y.groupName=E.name,E.matrixAutoUpdate=!0,g.addZincObject(y),p!=null&&typeof p=="function"&&p(y)}}else if(m.name!==""&&(g&&(b=g.findOrCreateChildFromPath(m.name)),b)){var _=b.getGroup();_.position.copy(m.position),_.rotation.copy(m.rotation),_.quaternion.copy(m.quaternion),_.matrixAutoUpdate=!0}}d++,m.children.forEach(M=>{f.parseGLTFObjects(M,b,d,p)})},this.setCamera=m=>{m.viewAll();var g=m.getZincCameraControls(),d=g.getCurrentViewport();g.addViewport("default",d),g.setDefaultViewport("default")},this.load=(m,g,d,p,b)=>{var y=d.substring(0,d.lastIndexOf("/")+1),v=d.substring(d.lastIndexOf("/")+1,d.length),w=new u().setPath(y);w.load(v,function(E){console.log(E),f.parseGLTFObjects(E.scene,g,0,p),f.setCamera(m),b!=null&&typeof b=="function"&&b()})}};l.GLTFToZincJSLoader=h},o=>{o.exports=HF},(o,l,c)=>{var u=c(42).GLTFExporter,h=function(f){var m=f;this.exportGLTF=g=>{var d=m.getRootRegion(),p=d.getAllObjects(!0),b=[];p.forEach(w=>{w.animationClip&&b.push({clip:w.animationClip[0],mesh:w.getMorph()})});var y=new u,v={binary:g,animations:b};return new Promise(w=>{y.parse(m.getThreeJSScene(),function(E){w(E)},v)})}};l.SceneExporter=h},(o,l,c)=>{c.r(l),c.d(l,{GLTFExporter:()=>h});var u=c(4);class h{constructor(){this.pluginCallbacks=[],this.register(function(S){return new P(S)}),this.register(function(S){return new I(S)}),this.register(function(S){return new N(S)})}register(S){return this.pluginCallbacks.indexOf(S)===-1&&this.pluginCallbacks.push(S),this}unregister(S){return this.pluginCallbacks.indexOf(S)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(S),1),this}parse(S,T,D){for(var B=new R,F=[],G=0,H=this.pluginCallbacks.length;G<H;G++)F.push(this.pluginCallbacks[G](B));B.setPlugins(F),B.write(S,T,D)}}var f={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},m={};m[u.NearestFilter]=f.NEAREST,m[u.NearestMipmapNearestFilter]=f.NEAREST_MIPMAP_NEAREST,m[u.NearestMipmapLinearFilter]=f.NEAREST_MIPMAP_LINEAR,m[u.LinearFilter]=f.LINEAR,m[u.LinearMipmapNearestFilter]=f.LINEAR_MIPMAP_NEAREST,m[u.LinearMipmapLinearFilter]=f.LINEAR_MIPMAP_LINEAR,m[u.ClampToEdgeWrapping]=f.CLAMP_TO_EDGE,m[u.RepeatWrapping]=f.REPEAT,m[u.MirroredRepeatWrapping]=f.MIRRORED_REPEAT;var g={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},d=12,p=1179937895,b=2,y=8,v=1313821514,w=5130562;function E(O,S){return O.length===S.length&&O.every(function(T,D){return T===S[D]})}function _(O){if(window.TextEncoder!==void 0)return new TextEncoder().encode(O).buffer;for(var S,T=new Uint8Array(new ArrayBuffer(O.length)),D=0,B=O.length;D<B;D++)S=O.charCodeAt(D),T[D]=255<S?32:S;return T.buffer}function M(O){return E(O.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function x(O,S,T){for(var D={min:Array(O.itemSize).fill(Number.POSITIVE_INFINITY),max:Array(O.itemSize).fill(Number.NEGATIVE_INFINITY)},B=S;B<S+T;B++)for(var F,G=0;G<O.itemSize;G++)F=void 0,4<O.itemSize?F=O.array[B*O.itemSize+G]:G===0?F=O.getX(B):G===1?F=O.getY(B):G===2?F=O.getZ(B):G==3&&(F=O.getW(B)),D.min[G]=Math.min(D.min[G],F),D.max[G]=Math.max(D.max[G],F);return D}function C(O){return 4*Math.ceil(O/4)}function A(O){var S=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,T=C(O.byteLength);if(T!==O.byteLength){var D=new Uint8Array(T);if(D.set(new Uint8Array(O)),S!==0)for(var B=O.byteLength;B<T;B++)D[B]=S;return D.buffer}return O}var L=null;class R{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(S){this.plugins=S}write(S,T,D){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},D),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(S);var B=this;Promise.all(this.pending).then(function(){var F=B.buffers,G=B.json,H=B.options,te=B.extensionsUsed,se=new Blob(F,{type:"application/octet-stream"}),j=Object.keys(te);if(0<j.length&&(G.extensionsUsed=j),G.buffers&&0<G.buffers.length&&(G.buffers[0].byteLength=se.size),H.binary===!0){var z=new window.FileReader;z.readAsArrayBuffer(se),z.onloadend=function(){var ee=A(z.result),q=new DataView(new ArrayBuffer(y));q.setUint32(0,ee.byteLength,!0),q.setUint32(4,w,!0);var $=A(_(JSON.stringify(G)),32),Y=new DataView(new ArrayBuffer(y));Y.setUint32(0,$.byteLength,!0),Y.setUint32(4,v,!0);var K=new ArrayBuffer(d),ie=new DataView(K);ie.setUint32(0,p,!0),ie.setUint32(4,b,!0);var k=d+Y.byteLength+$.byteLength+q.byteLength+ee.byteLength;ie.setUint32(8,k,!0);var Z=new Blob([K,Y,$,q,ee],{type:"application/octet-stream"}),Q=new window.FileReader;Q.readAsArrayBuffer(Z),Q.onloadend=function(){T(Q.result)}}}else if(G.buffers&&0<G.buffers.length){var W=new window.FileReader;W.readAsDataURL(se),W.onloadend=function(){var ee=W.result;G.buffers[0].uri=ee,T(G)}}else T(G)})}serializeUserData(S,T){if(!(S.userData&&S.userData.isZincObject)&&Object.keys(S.userData).length!==0){var D=this.options,B=this.extensionsUsed;try{var F=JSON.parse(JSON.stringify(S.userData));if(D.includeCustomExtensions&&F.gltfExtensions){for(var G in T.extensions===void 0&&(T.extensions={}),F.gltfExtensions)T.extensions[G]=F.gltfExtensions[G],B[G]=!0;delete F.gltfExtensions}0<Object.keys(F).length&&(T.extras=F)}catch(H){console.warn("THREE.GLTFExporter: userData of '"+S.name+"' won't be serialized because of JSON.stringify error - "+H.message)}}}getUID(S){return this.uids.has(S)||this.uids.set(S,this.uid++),this.uids.get(S)}isNormalizedNormalAttribute(S){var T=this.cache;if(T.attributesNormalized.has(S))return!1;for(var D=new u.Vector3,B=0,F=S.count;B<F;B++)if(5e-4<Math.abs(D.fromBufferAttribute(S,B).length()-1))return!1;return!0}createNormalizedNormalAttribute(S){var T=this.cache;if(T.attributesNormalized.has(S))return T.attributesNormalized.get(S);for(var D=S.clone(),B=new u.Vector3,F=0,G=D.count;F<G;F++)B.fromBufferAttribute(D,F),B.x===0&&B.y===0&&B.z===0?B.setX(1):B.normalize(),D.setXYZ(F,B.x,B.y,B.z);return T.attributesNormalized.set(S,D),D}applyTextureTransform(S,T){var D=!1,B={};(T.offset.x!==0||T.offset.y!==0)&&(B.offset=T.offset.toArray(),D=!0),T.rotation!==0&&(B.rotation=T.rotation,D=!0),(T.repeat.x!==1||T.repeat.y!==1)&&(B.scale=T.repeat.toArray(),D=!0),D&&(S.extensions=S.extensions||{},S.extensions.KHR_texture_transform=B,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(S){var T=this.json,D=this.buffers;return T.buffers||(T.buffers=[{byteLength:0}]),D.push(S),0}processBufferView(S,T,D,B,F){var G=this.json;G.bufferViews||(G.bufferViews=[]);for(var H=T===f.UNSIGNED_BYTE?1:T===f.UNSIGNED_SHORT?2:4,te=C(B*S.itemSize*H),se=new DataView(new ArrayBuffer(te)),j=0,z=D;z<D+B;z++)for(var W,ee=0;ee<S.itemSize;ee++)W=void 0,4<S.itemSize?W=S.array[z*S.itemSize+ee]:ee===0?W=S.getX(z):ee===1?W=S.getY(z):ee===2?W=S.getZ(z):ee==3&&(W=S.getW(z)),T===f.FLOAT?se.setFloat32(j,W,!0):T===f.UNSIGNED_INT?se.setUint32(j,W,!0):T===f.UNSIGNED_SHORT?se.setUint16(j,W,!0):T===f.UNSIGNED_BYTE&&se.setUint8(j,W),j+=H;var q={buffer:this.processBuffer(se.buffer),byteOffset:this.byteOffset,byteLength:te};F!==void 0&&(q.target=F),F===f.ARRAY_BUFFER&&(q.byteStride=S.itemSize*H),this.byteOffset+=te,G.bufferViews.push(q);var $={id:G.bufferViews.length-1,byteLength:0};return $}processBufferViewImage(S){var T=this,D=T.json;return D.bufferViews||(D.bufferViews=[]),new Promise(function(B){var F=new window.FileReader;F.readAsArrayBuffer(S),F.onloadend=function(){var G=A(F.result),H={buffer:T.processBuffer(G),byteOffset:T.byteOffset,byteLength:G.byteLength};T.byteOffset+=G.byteLength,B(D.bufferViews.push(H)-1)}})}processAccessor(S,T,D,B){var F,G=this.options,H=this.json;if(S.array.constructor===Float32Array)F=f.FLOAT;else if(S.array.constructor===Uint32Array)F=f.UNSIGNED_INT;else if(S.array.constructor===Uint16Array)F=f.UNSIGNED_SHORT;else if(S.array.constructor===Uint8Array)F=f.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(D===void 0&&(D=0),B===void 0&&(B=S.count),G.truncateDrawRange&&T!==void 0&&T.index===null){var te=D+B,se=T.drawRange.count===1/0?S.count:T.drawRange.start+T.drawRange.count;D=Math.max(D,T.drawRange.start),B=Math.min(te,se)-D,0>B&&(B=0)}if(B===0)return null;var j,z=x(S,D,B);T!==void 0&&(j=S===T.index?f.ELEMENT_ARRAY_BUFFER:f.ARRAY_BUFFER);var W=this.processBufferView(S,F,D,B,j),ee={bufferView:W.id,byteOffset:W.byteOffset,componentType:F,count:B,max:z.max,min:z.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[S.itemSize]};return S.normalized===!0&&(ee.normalized=!0),H.accessors||(H.accessors=[]),H.accessors.push(ee)-1}processImage(S,T,D){var B=this,F=B.cache,G=B.json,H=B.options,te=B.pending;F.images.has(S)||F.images.set(S,{});var se=F.images.get(S),j=T===u.RGBAFormat?"image/png":"image/jpeg",z=j+":flipY/"+D.toString();if(se[z]!==void 0)return se[z];G.images||(G.images=[]);var W={mimeType:j};if(H.embedImages){var ee=L=L||document.createElement("canvas");ee.width=Math.min(S.width,H.maxTextureSize),ee.height=Math.min(S.height,H.maxTextureSize);var q=ee.getContext("2d");if(D===!0&&(q.translate(0,ee.height),q.scale(1,-1)),typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&S instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&S instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&S instanceof ImageBitmap)q.drawImage(S,0,0,ee.width,ee.height);else{T!==u.RGBAFormat&&T!==u.RGBFormat&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(S.width>H.maxTextureSize||S.height>H.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",S);var $=new Uint8ClampedArray(4*(S.height*S.width));if(T===u.RGBAFormat)for(var Y=0;Y<$.length;Y+=4)$[Y+0]=S.data[Y+0],$[Y+1]=S.data[Y+1],$[Y+2]=S.data[Y+2],$[Y+3]=S.data[Y+3];else for(var K=0,ie=0;K<$.length;K+=4,ie+=3)$[K+0]=S.data[ie+0],$[K+1]=S.data[ie+1],$[K+2]=S.data[ie+2],$[K+3]=255;q.putImageData(new ImageData($,S.width,S.height),0,0)}H.binary===!0?te.push(new Promise(function(Z){ee.toBlob(function(Q){B.processBufferViewImage(Q).then(function(V){W.bufferView=V,Z()})},j)})):W.uri=ee.toDataURL(j)}else W.uri=S.src;var k=G.images.push(W)-1;return se[z]=k,k}processSampler(S){var T=this.json;T.samplers||(T.samplers=[]);var D={magFilter:m[S.magFilter],minFilter:m[S.minFilter],wrapS:m[S.wrapS],wrapT:m[S.wrapT]};return T.samplers.push(D)-1}processTexture(S){var T=this.cache,D=this.json;if(T.textures.has(S))return T.textures.get(S);D.textures||(D.textures=[]);var B={sampler:this.processSampler(S),source:this.processImage(S.image,S.format,S.flipY)};S.name&&(B.name=S.name),this._invokeAll(function(G){G.writeTexture&&G.writeTexture(S,B)});var F=D.textures.push(B)-1;return T.textures.set(S,F),F}processMaterial(S){var T=this.cache,D=this.json;if(T.materials.has(S))return T.materials.get(S);if(S.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;D.materials||(D.materials=[]);var B={pbrMetallicRoughness:{}};S.isMeshStandardMaterial!==!0&&S.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");var F=S.color.toArray().concat([S.opacity]);if(E(F,[1,1,1,1])||(B.pbrMetallicRoughness.baseColorFactor=F),S.isMeshStandardMaterial?(B.pbrMetallicRoughness.metallicFactor=S.metalness,B.pbrMetallicRoughness.roughnessFactor=S.roughness):(B.pbrMetallicRoughness.metallicFactor=.5,B.pbrMetallicRoughness.roughnessFactor=.5),S.metalnessMap||S.roughnessMap)if(S.metalnessMap===S.roughnessMap){var G={index:this.processTexture(S.metalnessMap)};this.applyTextureTransform(G,S.metalnessMap),B.pbrMetallicRoughness.metallicRoughnessTexture=G}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(S.map){var H={index:this.processTexture(S.map)};this.applyTextureTransform(H,S.map),B.pbrMetallicRoughness.baseColorTexture=H}if(S.emissive){var te=S.emissive.clone().multiplyScalar(S.emissiveIntensity),se=Math.max(te.r,te.g,te.b);if(1<se&&(te.multiplyScalar(1/se),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),0<se&&(B.emissiveFactor=te.toArray()),S.emissiveMap){var j={index:this.processTexture(S.emissiveMap)};this.applyTextureTransform(j,S.emissiveMap),B.emissiveTexture=j}}if(S.normalMap){var z={index:this.processTexture(S.normalMap)};S.normalScale&&S.normalScale.x!==-1&&(S.normalScale.x!==S.normalScale.y&&console.warn("THREE.GLTFExporter: Normal scale components are different, ignoring Y and exporting X."),z.scale=S.normalScale.x),this.applyTextureTransform(z,S.normalMap),B.normalTexture=z}if(S.aoMap){var W={index:this.processTexture(S.aoMap),texCoord:1};S.aoMapIntensity!==1&&(W.strength=S.aoMapIntensity),this.applyTextureTransform(W,S.aoMap),B.occlusionTexture=W}S.transparent?B.alphaMode="BLEND":0<S.alphaTest&&(B.alphaMode="MASK",B.alphaCutoff=S.alphaTest),S.side===u.DoubleSide&&(B.doubleSided=!0),S.name!==""&&(B.name=S.name),this.serializeUserData(S,B),this._invokeAll(function(q){q.writeMaterial&&q.writeMaterial(S,B)});var ee=D.materials.push(B)-1;return T.materials.set(S,ee),ee}processMesh(S){var T=this.cache,D=this.json,B=[S.geometry.uuid];if(Array.isArray(S.material))for(var F=0,G=S.material.length;F<G;F++)B.push(S.material[F].uuid);else B.push(S.material.uuid);var H=B.join(":");if(T.meshes.has(H))return T.meshes.get(H);var te,se=S.geometry;if(te=S.isLineSegments?f.LINES:S.isLineLoop?f.LINE_LOOP:S.isLine?f.LINE_STRIP:S.isPoints?f.POINTS:S.material.wireframe?f.LINES:f.TRIANGLES,se.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");var j={},z={},W=[],ee=[],q={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},$=se.getAttribute("normal");$===void 0||this.isNormalizedNormalAttribute($)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),se.setAttribute("normal",this.createNormalizedNormalAttribute($)));var Y=null;for(var K in se.attributes)if(K.substr(0,5)!=="morph"){var ie=se.attributes[K];K=q[K]||K.toUpperCase();var k=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;if(k.test(K)||(K="_"+K),T.attributes.has(this.getUID(ie))){z[K]=T.attributes.get(this.getUID(ie));continue}Y=null;var Z=ie.array;K!=="JOINTS_0"||Z instanceof Uint16Array||Z instanceof Uint8Array||(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),Y=new u.BufferAttribute(new Uint16Array(Z),ie.itemSize,ie.normalized));var Q=this.processAccessor(Y||ie,se);Q!==null&&(z[K]=Q,T.attributes.set(this.getUID(ie),Q))}if($!==void 0&&se.setAttribute("normal",$),Object.keys(z).length===0)return null;if(S.morphTargetInfluences!==void 0&&0<S.morphTargetInfluences.length){var V=[],U=[],oe={};if(S.morphTargetDictionary!==void 0)for(var ae in S.morphTargetDictionary)oe[S.morphTargetDictionary[ae]]=ae;for(var le=0;le<S.morphTargetInfluences.length;++le){var fe={},be=!1;for(var we in se.morphAttributes){if(we!="position"&&we!=="normal"&&we!=="color"){be||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),be=!0);continue}var ue=se.morphAttributes[we][le],ge=we.toUpperCase();q[we]&&(ge=q[we]);var re=se.attributes[we];if(T.attributes.has(this.getUID(ue))){fe[ge]=T.attributes.get(this.getUID(ue));continue}var xe=re.clone();if(!se.morphTargetsRelative)if(re)for(var de=0,me=ue.count;de<me;de++)re.count>de&&xe.setXYZ(de,ue.getX(de)-re.getX(de),ue.getY(de)-re.getY(de),ue.getZ(de)-re.getZ(de));else for(var _e=0,He=ue.count;_e<He;_e++)xe.setXYZ(_e,0,0,0);fe[ge]=this.processAccessor(xe,se),T.attributes.set(this.getUID(re),fe[ge])}ee.push(fe),V.push(S.morphTargetInfluences[le]),S.morphTargetDictionary!==void 0&&U.push(oe[le])}j.weights=V,0<U.length&&(j.extras={},j.extras.targetNames=U)}var Ze=Array.isArray(S.material);if(Ze&&se.groups.length===0)return null;for(var Pe,ut=Ze?S.material:[S.material],Re=Ze?se.groups:[{materialIndex:0,start:void 0,count:void 0}],Je=0,Xe=Re.length;Je<Xe;Je++){if(Pe={mode:te,attributes:z},this.serializeUserData(se,Pe),0<ee.length&&(Pe.targets=ee),se.index!==null){var lt=this.getUID(se.index);(Re[Je].start!==void 0||Re[Je].count!==void 0)&&(lt+=":"+Re[Je].start+":"+Re[Je].count),T.attributes.has(lt)?Pe.indices=T.attributes.get(lt):(Pe.indices=this.processAccessor(se.index,se,Re[Je].start,Re[Je].count),T.attributes.set(lt,Pe.indices)),Pe.indices===null&&delete Pe.indices}var tt=this.processMaterial(ut[Re[Je].materialIndex]);tt!==null&&(Pe.material=tt),W.push(Pe)}j.primitives=W,D.meshes||(D.meshes=[]),this._invokeAll(function(ne){ne.writeMesh&&ne.writeMesh(S,j)});var kt=D.meshes.push(j)-1;return T.meshes.set(H,kt),kt}processCamera(S){var T=this.json;T.cameras||(T.cameras=[]);var D=S.isOrthographicCamera,B={type:D?"orthographic":"perspective"};return D?B.orthographic={xmag:2*S.right,ymag:2*S.top,zfar:0>=S.far?.001:S.far,znear:0>S.near?0:S.near}:B.perspective={aspectRatio:S.aspect,yfov:u.MathUtils.degToRad(S.fov),zfar:0>=S.far?.001:S.far,znear:0>S.near?0:S.near},S.name!==""&&(B.name=S.type),T.cameras.push(B)-1}processAnimation(S,T){var D=this.json,B=this.nodeMap;D.animations||(D.animations=[]),S=h.Utils.mergeMorphTargetTracks(S.clone(),T);for(var F=S.tracks,G=[],H=[],te=0;te<F.length;++te){var se=F[te],j=u.PropertyBinding.parseTrackName(se.name),z=u.PropertyBinding.findNode(T,j.nodeName),W=g[j.propertyName];if(j.objectName==="bones"&&(z.isSkinnedMesh===!0?z=z.skeleton.getBoneByName(j.objectIndex):z=void 0),!z||!W)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',se.name),null;var ee=1,q=se.values.length/se.times.length;W===g.morphTargetInfluences&&(q/=z.morphTargetInfluences.length);var $=void 0;se.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?($="CUBICSPLINE",q/=3):se.getInterpolation()===u.InterpolateDiscrete?$="STEP":$="LINEAR",H.push({input:this.processAccessor(new u.BufferAttribute(se.times,ee)),output:this.processAccessor(new u.BufferAttribute(se.values,q)),interpolation:$}),G.push({sampler:H.length-1,target:{node:B.get(z),path:W}})}return D.animations.push({name:S.name||"clip_"+D.animations.length,samplers:H,channels:G}),D.animations.length-1}processSkin(S){var T=this.json,D=this.nodeMap,B=T.nodes[D.get(S)],F=S.skeleton;if(F===void 0)return null;var G=S.skeleton.bones[0];if(G===void 0)return null;for(var H=[],te=new Float32Array(16*F.bones.length),se=new u.Matrix4,j=0;j<F.bones.length;++j)H.push(D.get(F.bones[j])),se.copy(F.boneInverses[j]),se.multiply(S.bindMatrix).toArray(te,16*j);T.skins===void 0&&(T.skins=[]),T.skins.push({inverseBindMatrices:this.processAccessor(new u.BufferAttribute(te,16)),joints:H,skeleton:D.get(G)});var z=B.skin=T.skins.length-1;return z}processNode(S){var T=this.json,D=this.options,B=this.nodeMap;T.nodes||(T.nodes=[]);var F={};if(D.trs){var G=S.quaternion.toArray(),H=S.position.toArray(),te=S.scale.toArray();E(G,[0,0,0,1])||(F.rotation=G),E(H,[0,0,0])||(F.translation=H),E(te,[1,1,1])||(F.scale=te)}else S.matrixAutoUpdate&&S.updateMatrix(),M(S.matrix)===!1&&(F.matrix=S.matrix.elements);if(S.name!==""&&(F.name=S.name+""),this.serializeUserData(S,F),S.isMesh||S.isLine||S.isPoints){var se=this.processMesh(S);se!==null&&(F.mesh=se)}else S.isCamera&&(F.camera=this.processCamera(S));if(S.isSkinnedMesh&&this.skins.push(S),0<S.children.length){for(var j,z=[],W=0,ee=S.children.length;W<ee;W++)if(j=S.children[W],j.visible||D.onlyVisible===!1){var q=this.processNode(j);q!==null&&z.push(q)}0<z.length&&(F.children=z)}this._invokeAll(function(Y){Y.writeNode&&Y.writeNode(S,F)});var $=T.nodes.push(F)-1;return B.set(S,$),$}processScene(S){var T=this.json,D=this.options;T.scenes||(T.scenes=[],T.scene=0);var B={};S.name!==""&&(B.name=S.name),T.scenes.push(B);for(var F,G=[],H=0,te=S.children.length;H<te;H++)if(F=S.children[H],F.visible||D.onlyVisible===!1){var se=this.processNode(F);se!==null&&G.push(se)}0<G.length&&(B.nodes=G),this.serializeUserData(S,B)}processObjects(S){var T=new u.Scene;T.name="AuxScene";for(var D=0;D<S.length;D++)T.children.push(S[D]);this.processScene(T)}processInput(S){var T=this.options;S=S instanceof Array?S:[S],this._invokeAll(function(H){H.beforeParse&&H.beforeParse(S)});for(var D=[],B=0;B<S.length;B++)S[B]instanceof u.Scene?this.processScene(S[B]):D.push(S[B]);0<D.length&&this.processObjects(D);for(var F=0;F<this.skins.length;++F)this.processSkin(this.skins[F]);for(var G=0;G<T.animations.length;++G)this.processAnimation(T.animations[G].clip,T.animations[G].mesh);this._invokeAll(function(H){H.afterParse&&H.afterParse(S)})}_invokeAll(S){for(var T=0,D=this.plugins.length;T<D;T++)S(this.plugins[T])}}class P{constructor(S){this.writer=S,this.name="KHR_lights_punctual"}writeNode(S,T){if(S.isLight){if(!S.isDirectionalLight&&!S.isPointLight&&!S.isSpotLight)return void console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",S);var D=this.writer,B=D.json,F=D.extensionsUsed,G={};S.name&&(G.name=S.name),G.color=S.color.toArray(),G.intensity=S.intensity,S.isDirectionalLight?G.type="directional":S.isPointLight?(G.type="point",0<S.distance&&(G.range=S.distance)):S.isSpotLight&&(G.type="spot",0<S.distance&&(G.range=S.distance),G.spot={},G.spot.innerConeAngle=-1*((S.penumbra-1)*S.angle),G.spot.outerConeAngle=S.angle),S.decay!==void 0&&S.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),S.target&&(S.target.parent!==S||S.target.position.x!==0||S.target.position.y!==0||S.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."),F[this.name]||(B.extensions=B.extensions||{},B.extensions[this.name]={lights:[]},F[this.name]=!0);var H=B.extensions[this.name].lights;H.push(G),T.extensions=T.extensions||{},T.extensions[this.name]={light:H.length-1}}}}class I{constructor(S){this.writer=S,this.name="KHR_materials_unlit"}writeMaterial(S,T){if(S.isMeshBasicMaterial){var D=this.writer,B=D.extensionsUsed;T.extensions=T.extensions||{},T.extensions[this.name]={},B[this.name]=!0,T.pbrMetallicRoughness.metallicFactor=0,T.pbrMetallicRoughness.roughnessFactor=.9}}}class N{constructor(S){this.writer=S,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(S,T){if(S.isGLTFSpecularGlossinessMaterial){var D=this.writer,B=D.extensionsUsed,F={};T.pbrMetallicRoughness.baseColorFactor&&(F.diffuseFactor=T.pbrMetallicRoughness.baseColorFactor);var G=[1,1,1];if(S.specular.toArray(G,0),F.specularFactor=G,F.glossinessFactor=S.glossiness,T.pbrMetallicRoughness.baseColorTexture&&(F.diffuseTexture=T.pbrMetallicRoughness.baseColorTexture),S.specularMap){var H={index:D.processTexture(S.specularMap)};D.applyTextureTransform(H,S.specularMap),F.specularGlossinessTexture=H}T.extensions=T.extensions||{},T.extensions[this.name]=F,B[this.name]=!0}}}h.Utils={insertKeyframe:function(S,T){var D,B=.001,F=S.getValueSize(),G=new S.TimeBufferType(S.times.length+1),H=new S.ValueBufferType(S.values.length+F),te=S.createInterpolant(new S.ValueBufferType(F));if(S.times.length===0){G[0]=T;for(var se=0;se<F;se++)H[se]=0;D=0}else if(T<S.times[0]){if(Math.abs(S.times[0]-T)<B)return 0;G[0]=T,G.set(S.times,1),H.set(te.evaluate(T),0),H.set(S.values,F),D=0}else if(T>S.times[S.times.length-1]){if(Math.abs(S.times[S.times.length-1]-T)<B)return S.times.length-1;G[G.length-1]=T,G.set(S.times,0),H.set(S.values,0),H.set(te.evaluate(T),S.values.length),D=G.length-1}else for(var j=0;j<S.times.length;j++){if(Math.abs(S.times[j]-T)<B)return j;if(S.times[j]<T&&S.times[j+1]>T){G.set(S.times.slice(0,j+1),0),G[j+1]=T,G.set(S.times.slice(j+1),j+2),H.set(S.values.slice(0,(j+1)*F),0),H.set(te.evaluate(T),(j+1)*F),H.set(S.values.slice((j+1)*F),(j+2)*F),D=j+1;break}}return S.times=G,S.values=H,D},mergeMorphTargetTracks:function(S,T){for(var D=[],B={},F=S.tracks,G=0;G<F.length;++G){var H=F[G],te=u.PropertyBinding.parseTrackName(H.name),se=u.PropertyBinding.findNode(T,te.nodeName);if(te.propertyName!=="morphTargetInfluences"||te.propertyIndex===void 0){D.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(u.InterpolateLinear)}var j=se.morphTargetInfluences.length,z=se.morphTargetDictionary[te.propertyIndex];if(z===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+te.propertyIndex);var W=void 0;if(B[se.uuid]===void 0){W=H.clone();for(var ee=new W.ValueBufferType(j*W.times.length),q=0;q<W.times.length;q++)ee[q*j+z]=W.values[q];W.name=(te.nodeName||"")+".morphTargetInfluences",W.values=ee,B[se.uuid]=W,D.push(W);continue}var $=H.createInterpolant(new H.ValueBufferType(1));W=B[se.uuid];for(var Y=0;Y<W.times.length;Y++)W.values[Y*j+z]=$.evaluate(W.times[Y]);for(var K,ie=0;ie<H.times.length;ie++)K=this.insertKeyframe(W,H.times[ie]),W.values[K*j+z]=H.values[ie]}return S.tracks=D,S}}},(o,l,c)=>{var u=c(4),h=c(5).resolveURL,f=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 _=this;this.setFromObject=M=>{var{nearPlane:x,farPlane:C,eyePosition:A,targetPosition:L,upVector:R}=M;_.nearPlane=x,_.farPlane=C,_.eyePosition=A,_.targetPosition=L,_.upVector=R}},m=function(_,M,x,C){var A={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},L={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6},R={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},P={};P.MAIN=L.ROTATE,P.AUXILIARY=L.ZOOM,P.SECONDARY=L.PAN,this.cameraObject=_,this.domElement=M===void 0?document:M,this.renderer=x,this.scene=C,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.scrollRate=50,this.pixelHeight=1;var I=6e3,N=!0,O=0,S=void 0,T=void 0,D=!1,B=500,F=void 0,G="default",H=A.DEFAULT,te=void 0,se=void 0,j=void 0,z=0,W=R.FREE;this._state=L.NONE;var ee;this.targetTouchId=-1;var q=void 0,$=new u.Vector3,Y=new u.Vector3,K=new u.Vector3,ie=new u.Vector3,k=new u.Vector3,Z=new u.Vector3,Q=new u.Vector3,V=new u.Vector3,U=new u.Sphere,oe=new u.Vector3,ae=void 0,le=0,fe={default:new f};fe.default.nearPlane=.1,fe.default.farPlane=2e3,fe.default.eyePosition=[0,0,0],fe.default.targetPosition=[0,0,-1],fe.default.upVector=[0,1,0],this.cameraObject.target===void 0&&(this.cameraObject.target=new u.Vector3(...fe.default.targetPosition)),this.calculateMaxAllowedDistance=ne=>{var Me=ne.getBoundingBox();if(Me){Me.getBoundingSphere(U),le=6*U.radius;var Te=0;this.cameraObject&&(Te=this.cameraObject.position.distanceTo(U.center)),le=Te>le?Te:le}else le=0},this.addViewport=(ne,Me)=>{ne&&Me&&(fe[ne]=Me)},this.setDefaultViewport=ne=>!!(ne&&ne in fe)&&(G=ne,!0),this.getDefaultViewport=()=>G,this.getViewportOfName=ne=>fe[ne],this.setCurrentViewport=ne=>ne in fe&&(this.setCurrentCameraSettings(fe[ne]),!0),this.setRotationMode=ne=>{switch(ne){case"none":W=R.NONE;break;case"horizontal":W=R.HORIZONTAL;break;case"vertical":W=R.VERTICAL;break;case"free":default:W=R.FREE}},this.onResize=()=>{q&&(q=void 0),ae&&ae.setCurrentCameraSettings(this.cameraObject,fe[G])},this.getVisibleHeightAtZDepth=ne=>{var Me=this.cameraObject.position.z;ne<Me?ne-=Me:ne+=Me;var Te=this.cameraObject.fov*Math.PI/180;return 2*Math.tan(Te/2)*Math.abs(ne)},this.calculateHeightPerPixelAtZeroDepth=ne=>{var Me=this.getVisibleHeightAtZDepth(0);return this.pixelHeight=Me/ne,this.pixelHeight},this.getNDCFromDocumentCoords=(ne,Me,Te)=>{Ze(!1);var Ie=Te||new u.Vector2,Ye=2*((ne-q.left)/q.width)-1,ot=2*-((Me-q.top)/q.height)+1;return Ie.set(Ye,ot)},this.getRelativeCoordsFromNDC=(ne,Me,Te)=>{Ze(!1);var Ie=Te||new u.Vector2;return Ie.x=(ne+1)*q.width/2,Ie.y=(1-Me)*q.height/2,Ie},this.setMouseButtonAction=(ne,Me)=>{P[ne]=L[Me]};var be=()=>{if(0<le){var ne=oe.distanceTo(U.center);return le>ne||this.cameraObject.position.distanceTo(U.center)>ne}return!0},we=ne=>{oe.copy(this.cameraObject.position).add(ne),be()&&(this.cameraObject.target.add(ne),this.cameraObject.position.add(ne),this.updateDirectionalLight())},ue=ne=>{Ze(!1);var Me;if(H===A.DEFAULT&&(Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne)),!Me)ne.button==0?ne.ctrlKey?this._state=P.AUXILIARY:ne.shiftKey?this._state=P.SECONDARY:this._state=P.MAIN:ne.button==1?(ne.preventDefault(),this._state=P.AUXILIARY):ne.button==2&&(this._state=P.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{H=A.MINIMAP;var Te=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);we(Te)}},ge=ne=>{if(Ze(!1),q)if(this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,H===A.MINIMAP){var Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne);if(Me){var Te=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);we(Te)}}else this._state===L.NONE&&ee!==void 0&&ee.move(this,ne.clientX,ne.clientY,this.renderer)},re=ne=>{this._state=L.NONE,H==A.MINIMAP&&(H=A.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)},xe=ne=>{this._state=L.NONE},de=ne=>{Ze(!1);var Me=ne.touches.length;if(Me==1)this._state=L.TOUCH_ROTATE,this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].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 if(Me==2){this._state=L.TOUCH_ZOOM;var Te=ne.touches[0].clientX-ne.touches[1].clientX,Ie=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=this.touchZoomDistanceStart=Math.sqrt(Te*Te+Ie*Ie)}else Me==3&&(this._state=L.TOUCH_PAN,this.targetTouchId=ne.touches[0].identifier,this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y)},me=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===L.TOUCH_ZOOM){var Te=ne.touches[0].clientX-ne.touches[1].clientX,Ie=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=Math.sqrt(Te*Te+Ie*Ie)}}else if(Me==3&&this._state===L.TOUCH_PAN)for(var Ye=0;3>Ye;Ye++)ne.touches[Ye].identifier==this.targetTouchId&&(this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top)},_e=ne=>{var Me=ne.touches.length;this.touchZoomDistanceStart=this.touchZoomDistanceEnd=0,this.targetTouchId=-1,this._state=L.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)},He=()=>{Ze(!0)},Ze=ne=>{if(ne||q===void 0){var Me=new IntersectionObserver(Te=>{for(var Ie of Te)q=Ie.boundingClientRect;Me.disconnect()});Me.observe(this.domElement)}},Pe=ne=>{Ze(!1),this._state=L.SCROLL;var Me=0;0<ne.deltaY?Me=this.scrollRate:0>ne.deltaY&&(Me=-1*this.scrollRate),z+=Me,ne.preventDefault(),ne.stopImmediatePropagation()},ut=()=>{if(typeof this.cameraObject<"u"){var ne=q.height,Me=this.cameraObject.position.distanceTo(this.cameraObject.target),Te=0;this.cameraObject.far>this.cameraObject.near&&Me>=this.cameraObject.near&&Me<=this.cameraObject.far&&(Te=(Me-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),Y.set(this.previous_pointer_x,ne-this.previous_pointer_y,0),K.set(this.previous_pointer_x,ne-this.previous_pointer_y,1),ie.set(this.pointer_x,ne-this.pointer_y,0),k.set(this.pointer_x,ne-this.pointer_y,1),Y.unproject(this.cameraObject),K.unproject(this.cameraObject),ie.unproject(this.cameraObject),k.unproject(this.cameraObject);var Ie=-.002;ie.sub(Y).multiplyScalar(1-Te),k.sub(K).multiplyScalar(Te),ie.add(k).multiplyScalar(Ie),we(ie)}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y};this.getVectorsFromRotateAboutLookAtPoints=(ne,Me)=>{ne.normalize(),Q.copy(this.cameraObject.position).sub(this.cameraObject.target),V.copy(Q),Q.normalize(),.8<Math.abs(Q.dot(ne))&&Q.copy(this.cameraObject.up),Y.crossVectors(ne,Q).normalize(),K.crossVectors(ne,Y);var Te=ne.dot(V),Ie=Y.dot(V),Ye=K.dot(V),ot=ne.dot(this.cameraObject.up),it=Y.dot(this.cameraObject.up),pt=K.dot(this.cameraObject.up),Et=Math.cos(Me),rn=Math.sin(Me);return ie.set(Et*Y.x+rn*K.x,Et*Y.y+rn*K.y,Et*Y.z+rn*K.z),k.set(Et*K.x-rn*Y.x,Et*K.y-rn*Y.y,Et*K.z-rn*Y.z),Q.copy(this.cameraObject.target),Q.x=Q.x+ne.x*Te+ie.x*Ie+k.x*Ye,Q.y=Q.y+ne.y*Te+ie.y*Ie+k.y*Ye,Q.z=Q.z+ne.z*Te+ie.z*Ie+k.z*Ye,$.set(ne.x*ot+ie.x*it+k.x*pt,ne.y*ot+ie.y*it+k.y*pt,ne.z*ot+ie.z*it+k.z*pt),{position:Q,up:$}},this.rotateAboutLookAtpoint=(ne,Me)=>{var Te=this.getVectorsFromRotateAboutLookAtPoints(ne,Me);this.cameraObject.position.copy(Te.position),this.updateDirectionalLight(),this.cameraObject.up.copy(Te.up)};var Re=()=>{if(typeof this.cameraObject<"u"){var ne=q.width,Me=q.height;if(0<ne&&0<Me){var Te=.25*(ne+Me),Ie=0,Ye=0;(W===R.FREE||W===R.HORIZONTAL)&&(Ie=this.pointer_x-this.previous_pointer_x),(W===R.FREE||W===R.VERTICAL)&&(Ye=this.previous_pointer_y-this.pointer_y);var ot=Math.sqrt(Ie*Ie+Ye*Ye);if(0<ot){var it=1*-Ye/ot,pt=1*Ie/ot,Et=0;W===R.FREE&&it*(this.pointer_x-.5*(ne-1))+pt*(.5*(Me-1)-this.pointer_y);var rn=Math.acos(Et/Te)-.5*Math.PI,J=this.tumble_rate*ot/Te;$.copy(this.cameraObject.position).sub(this.cameraObject.target).normalize(),Y.copy(this.cameraObject.up).normalize(),K.copy(Y).cross($).normalize().multiplyScalar(it),Y.multiplyScalar(pt),Z.addVectors(K,Y).multiplyScalar(Math.cos(rn)),$.multiplyScalar(Math.sin(rn)),Z.add($),this.rotateAboutLookAtpoint(Z,-J)}}}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y},Je=()=>{var ne=0;return this._state===L.ZOOM?ne=this.previous_pointer_y-this.pointer_y:this._state===L.SCROLL?ne=z:(ne=-1*(this.touchZoomDistanceEnd-this.touchZoomDistanceStart),this.touchZoomDistanceStart=this.touchZoomDistanceEnd),ne};this.changeZoomByScrollRateUnit=ne=>{var Me=ne*this.scrollRate;this.changeZoomByValue(Me)},this.changeZoomByValue=ne=>{if(typeof this.cameraObject<"u"){q.width;var Me=q.height,Te=this.cameraObject.position.clone();Te.sub(this.cameraObject.target);var Ie=Te.length(),Ye=1.5*ne/Me;if(.01<Ie+Ye*Ie&&(Te.normalize(),oe.copy(this.cameraObject.position),oe.x+=Te.x*Ye*Ie,oe.y+=Te.y*Ye*Ie,oe.z+=Te.z*Ye*Ie,be())){this.cameraObject.position.copy(oe),this.updateDirectionalLight();var ot=1e-5;if(ot*this.cameraObject.far<this.cameraObject.near+Ye*Ie+this.near_plane_fly_debt)this.near_plane_fly_debt!=0&&(this.near_plane_fly_debt+=Ye*Ie,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+=Ye*Ie,this.cameraObject.far+=Ye*Ie));else{if(this.near_plane_fly_debt==0){var it=this.cameraObject.near-ot*this.cameraObject.far;this.cameraObject.near=ot*this.cameraObject.far,this.cameraObject.far-=it,this.near_plane_fly_debt-=ot*this.cameraObject.far}this.near_plane_fly_debt+=Ye*Ie}}}};var Xe=()=>{var ne=Je();this.changeZoomByValue(ne),this._state===L.ZOOM&&(this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y),this._state===L.SCROLL&&(z=0,this._state=L.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&&(this.domElement.addEventListener("mousedown",ue,!1),this.domElement.addEventListener("mousemove",ge,!1),this.domElement.addEventListener("mouseup",re,!1),this.domElement.addEventListener("mouseleave",xe,!1),this.domElement.addEventListener("touchstart",de,!1),this.domElement.addEventListener("touchmove",me,!1),this.domElement.addEventListener("touchend",_e,!1),this.domElement.addEventListener("wheel",Pe,!1),this.domElement.addEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.addEventListener("mouseenter",He,!1))},this.disable=function(){N=!1,this.domElement&&this.domElement.removeEventListener&&(this.domElement.removeEventListener("mousedown",ue,!1),this.domElement.removeEventListener("mousemove",ge,!1),this.domElement.removeEventListener("mouseup",re,!1),this.domElement.removeEventListener("mouseleave",xe,!1),this.domElement.removeEventListener("touchstart",de,!1),this.domElement.removeEventListener("touchmove",me,!1),this.domElement.removeEventListener("touchend",_e,!1),this.domElement.removeEventListener("wheel",Pe,!1),this.domElement.removeEventListener("mouseenter",He,!1),this.domElement.removeEventListener("contextmenu",ne=>{ne.preventDefault()},!1))},this.loadPath=ne=>{S=ne.CameraPath,T=ne.NumberOfPoints},this.loadPathURL=(ne,Me)=>{var Te=new XMLHttpRequest;Te.onreadystatechange=()=>{if(Te.readyState==4&&Te.status==200){var Ye=JSON.parse(Te.responseText);this.loadPath(Ye),Me!=null&&typeof Me=="function"&&Me()}};var Ie=h(ne);Te.open("GET",Ie,!0),Te.send()},this.setPathDuration=ne=>{I=ne,te&&te.setDuration(I),se&&se.setDuration(I)},this.getPlayRate=()=>B,this.setPlayRate=ne=>{B=ne};var lt=ne=>{var Me=O+ne;Me>I&&(Me-=I),O=Me};this.getTime=()=>O,this.setTime=ne=>{O=ne>I?I:0>ne?0:ne},this.getNumberOfTimeFrame=()=>T,this.getCurrentTimeFrame=()=>{if(2<T){var ne=O/I*(T-1),Me=Math.floor(ne),Te=1-(ne-Me),Ie=Math.ceil(ne);return Me==Ie?Me==T-1?[Me-1,Ie,0]:[Me,Ie+1,1]:[Me,Ie,Te]}return T==1?[0,0,0]:void 0},this.setCurrentTimeFrame=ne=>{2<T&&(O=I*ne/(T-1),0>O&&(O=0),O>I&&(O=I))};var tt=ne=>{if(H===A.PATH&&(lt(ne),S)){for(var Me=this.getCurrentTimeFrame(),Te=Me[0],Ie=Me[1],Ye=Me[2],ot=[S[3*Te],S[3*Te+1],S[3*Te+2]],it=[S[3*Ie],S[3*Ie+1],S[3*Ie+2]],pt=[],Et=0;Et<ot.length;Et++)pt.push(Ye*ot[Et]+(1-Ye)*it[Et]);this.cameraObject.position.set(pt[0],pt[1],pt[2]),this.cameraObject.target.set(it[0],it[1],it[2]),F&&this.cameraObject.lookAt(this.cameraObject.target),D&&(this.directionalLight.position.set(pt[0],pt[1],pt[2]),this.directionalLight.target.position.set(it[0],it[1],it[2]))}};this.calculatePathNow=()=>{tt(0)};var kt=()=>{this._state===L.ROTATE||this._state===L.TOUCH_ROTATE?Re():this._state===L.PAN||this._state===L.TOUCH_PAN?(ut(),ae.triggerCallback()):(this._state===L.ZOOM||this._state===L.TOUCH_ZOOM||this._state===L.SCROLL)&&(ae.zoom(Je()),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,this._state===L.SCROLL&&(this._state=L.NONE),z=0,ae.triggerCallback())};this.update=ne=>{var Me=ne*B,Te=N,Ie=!0;return H===A.PATH?tt(Me):H===A.SMOOTH_CAMERA_TRANSITION&&te?(te.update(Me),te.isTransitionCompleted()&&(H=A.DEFAULT),Te=!1):H===A.ROTATE_CAMERA_TRANSITION&&se?(se.update(Me),se.isTransitionCompleted()&&(H=A.DEFAULT),Te=!1):H===A.AUTO_TUMBLE&&j?j.update(Me):H===A.SYNC_CONTROL&&ae?(kt(),Te=!1):Ie=!1,Te&&(this._state!==L.NONE&&(Ie=!0),this._state===L.ROTATE||this._state===L.TOUCH_ROTATE?Re():this._state===L.PAN||this._state===L.TOUCH_PAN?ut():(this._state===L.ZOOM||this._state===L.TOUCH_ZOOM||this._state===L.SCROLL)&&Xe(),this._state!==L.NONE&&H===A.AUTO_TUMBLE&&j&&j.stopOnCameraInput,this._state===L.SCROLL&&(this._state=L.NONE)),F?(Ie=!0,F.update()):this.cameraObject.lookAt(this.cameraObject.target),Ie},this.playPath=()=>{H=A.PATH},this.stopPath=()=>{H=A.DEFAULT},this.isPlayingPath=()=>H===A.PATH,this.enableDirectionalLightUpdateWithPath=ne=>{D=ne},this.enableDeviceOrientation=()=>{F||(F=new w(this.cameraObject))},this.disableDeviceOrientation=()=>{F&&(F.dispose(),F=void 0)},this.isDeviceOrientationEnabled=()=>!!F,this.resetView=()=>{var ne=fe[G];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()},this.getViewportFromCentreAndRadius=(ne,Me,Te,Ie,Ye,ot)=>{var it=this.cameraObject.position.x-this.cameraObject.target.x,pt=this.cameraObject.position.y-this.cameraObject.target.y,Et=this.cameraObject.position.z-this.cameraObject.target.z,rn=1/Math.sqrt(it*it+pt*pt+Et*Et);it*=rn,pt*=rn,Et*=rn;var J=[ne,Me,Te],pe=Ie/Math.tan(Ye*Math.PI/360),he=[ne+it*pe,Me+pt*pe,Te+Et*pe],ve=pe+ot,Ee=0,ce=.95;Ee=ot>ce*pe?(1-ce)*pe:pe-ot;var ye=new f;return ye.nearPlane=Ee,ye.farPlane=ve,ye.eyePosition=he,ye.targetPosition=J,ye.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],ye},this.getViewportFromBoundingBox=(ne,Me)=>{var Te=ne.min.distanceTo(ne.max)/2*Me,Ie=(ne.min.x+ne.max.x)/2,Ye=(ne.min.y+ne.max.y)/2,ot=(ne.min.z+ne.max.z)/2,it=4,pt=this.getViewportFromCentreAndRadius(Ie,Ye,ot,Te,40,Te*it);return pt},this.getCurrentViewport=()=>{var ne=new f;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,Te)=>{se==null&&(te=new g(ne,Me,this,Te))},this.rotateCameraTransition=(ne,Me,Te)=>{te==null&&(se=new d(ne,Me,this,Te))},this.enableCameraTransition=()=>{te&&(H=A.SMOOTH_CAMERA_TRANSITION),se&&(H=A.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{H=A.DEFAULT},this.stopCameraTransition=()=>{H=A.DEFAULT,te=void 0,se=void 0},this.isTransitioningCamera=()=>H===A.SMOOTH_CAMERA_TRANSITION||H===A.ROTATE_CAMERA_TRANSITION,this.autoTumble=(ne,Me,Te)=>{j=new b(ne,Me,Te,this)},this.enableAutoTumble=()=>{H=A.AUTO_TUMBLE},this.stopAutoTumble=()=>{H=A.DEFAULT,j=void 0},this.updateAutoTumble=()=>{j&&(j.requireUpdate=!0)},this.isAutoTumble=()=>H===A.AUTO_TUMBLE,this.enableRaycaster=(ne,Me,Te)=>{ee==null&&(ee=new p(ne,this.scene,Me,Te,this.renderer))},this.disableRaycaster=()=>{ee.disable(),ee=void 0},this.isSyncControl=()=>currentMpde===A.SYNC_CONTROL,this.enableSyncControl=()=>(H=A.SYNC_CONTROL,ae||(ae=new E),ae.setCurrentCameraSettings(this.cameraObject,fe[G]),ae),this.disableSyncControl=()=>{H=A.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},g=function(M,x,C,A){var L=M.eyePosition,R=M.targetPosition,P=M.upVector,I=x.eyePosition,N=x.targetPosition,O=x.upVector,S=C,T=A,D=0,B=!1;S.near=Math.min(M.nearPlane,x.nearPlane),S.far=Math.max(M.farPlane,x.farPlane),S.cameraObject.up.set(x.upVector[0],x.upVector[1],x.upVector[2]),this.setDuration=H=>{T=H};var F=H=>{var te=D+H;te>T&&(te=T),D=te},G=()=>{var H=D/T,te=[L[0]*(1-H)+I[0]*H,L[1]*(1-H)+I[1]*H,L[2]*(1-H)+I[2]*H],se=[R[0]*(1-H)+N[0]*H,R[1]*(1-H)+N[1]*H,R[2]*(1-H)+N[2]*H];P[0]*(1-H)+O[0]*H,P[1]*(1-H)+O[1]*H,P[2]*(1-H)+O[2]*H,S.cameraObject.position.set(te[0],te[1],te[2]),S.cameraObject.target.set(se[0],se[1],se[2])};this.update=H=>{this.enabled===!1||(F(H),G(),D==T&&(B=!0))},this.isTransitionCompleted=()=>B},d=function(M,x,C,A){var L=M,R=x,P=C,I=A,N=0,O=!1;this.setDuration=T=>{I=T};var S=T=>{var D=N,B=N+T;B>I&&(B=I),N=B;var F=N-D,G=F/I,H=G*R;P.rotateAboutLookAtpoint(L,H)};this.update=T=>{this.enabled===!1||(S(T),N==I&&(O=!0))},this.isTransitionCompleted=()=>O},p=function(M,x,C,A,L){var R=M,P=x,I=L,N=C,O=A,S=new u.Raycaster;S.params.Line.threshold=.1,S.params.Points.threshold=1;var T=new u.Vector2,D=!1,B=new Date,F=!1,G=0,H=[],te={zincCamera:void 0,x:-1,y:-1};this.enable=()=>{enable=!0},this.disable=()=>{enable=!1};var se=(W,ee,q)=>{if(W.getNDCFromDocumentCoords(ee,q,T),P!==R){var $=R.getThreeJSScene();I.render($,W.cameraObject)}S.setFromCamera(T,W.cameraObject);var Y=R.getPickableThreeJSObjects();return H.length=0,S.intersectObjects(Y,!0,H)};this.pick=(W,ee,q)=>{if(I&&R&&W&&N){se(W,ee,q);for(var $,Y=H.length,K=0;K<Y;K++)if($=H[K].object?H[K].object.userData:void 0,$&&$.isMarkerCluster&&$.visible)return void $.zoomToCluster(H[K].object.clusterIndex);N(H,ee,q)}};var j=(W,ee,q)=>{if(I&&R&&W&&O){if(se(W,ee,q),B.setTime(Date.now()),H.length===0){if(F)return;F=!0}else F=!1;O(H,ee,q)}};this.move=(W,ee,q)=>{I&&R&&W&&O&&(R.displayMarkers?j(W,ee,q):(te.zincCamera=W,te.x=ee,te.y=q,!D&&(G=B?Date.now()-B.getTime():250,250<=G?j(W,ee,q):(D=!0,setTimeout(z(te),G)))))};var z=W=>function(){D=!1,j(W.zincCamera,W.x,W.y)}},b=function(M,x,C,A){var L=new u.Vector3,R=-x,P=A,I=M;this.stopOnCameraInput=C,this.requireUpdate=!0;var N=new u.Vector3,O=new u.Vector3,S=T=>{var D=Math.sqrt(T[0]*T[0]+T[1]*T[1]),B=4*Math.abs(T[0]),F=4*Math.abs(T[1]),G=.25*(B+F),H=-T[1]/D,te=T[0]/D,se=H*T[0]+te*-T[1];se>G?se=G:se<-G&&(se=-G);var j=Math.acos(se/G)-.5*Math.PI;L.copy(P.cameraObject.position).sub(P.cameraObject.target).normalize(),N.copy(P.cameraObject.up).normalize(),O.crossVectors(N,L).normalize().multiplyScalar(H),N.multiplyScalar(te),N.add(O).multiplyScalar(Math.cos(j)),L.multiplyScalar(Math.sin(j)).add(N)};this.update=T=>{this.enabled===!1||(this.requireUpdate&&(S(I),this.requireUpdate=!1),P.rotateAboutLookAtpoint(L,R*T/1e3))}},y=function(){this.type="StereoCamera",this.aspect=1,this.cameraL=new u.PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new u.PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1};Object.assign(y.prototype,{update:(()=>{var _,M,x,C,A,L,R=new u.Matrix4,P=new u.Matrix4;return function(N){var O=_!==N.focus||M!==N.fov||x!==N.aspect*this.aspect||C!==N.near||A!==N.far||L!==N.zoom;if(O){_=N.focus,M=N.fov,x=N.aspect*this.aspect,C=N.near,A=N.far,L=N.zoom;var S,T,D=N.projectionMatrix.clone(),B=.064/2,F=B*C/_,G=C*Math.tan(.5*(u.Math.DEG2RAD*M))/N.zoom;P.elements[12]=-B,R.elements[12]=B,S=-G*x+F,T=G*x+F,D.elements[0]=2*C/(T-S),D.elements[8]=(T+S)/(T-S),this.cameraL.projectionMatrix.copy(D),S=-G*x-F,T=G*x-F,D.elements[0]=2*C/(T-S),D.elements[8]=(T+S)/(T-S),this.cameraR.projectionMatrix.copy(D)}this.cameraL.matrixWorld.copy(N.matrixWorld).multiply(P),this.cameraR.matrixWorld.copy(N.matrixWorld).multiply(R)}})()});var v=function(M){var x=new y;x.aspect=.5,this.setSize=(C,A)=>{M.setSize(C,A)},this.render=(C,A)=>{C.updateMatrixWorld(),A.parent===null&&A.updateMatrixWorld(),x.update(A);var L=M.getSize();M.setScissorTest(!0),M.clear(),M.setScissor(0,0,L.width/2,L.height),M.setViewport(0,0,L.width/2,L.height),M.render(C,x.cameraL),M.setScissor(L.width/2,0,L.width/2,L.height),M.setViewport(L.width/2,0,L.width/2,L.height),M.render(C,x.cameraR),M.setScissorTest(!1)}},w=function(M){var x=this;this.object=M,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var C=R=>{x.deviceOrientation=R},A=()=>{typeof window<"u"&&(x.screenOrientation=window.orientation||0)},L=(()=>{var R=new u.Vector3(0,0,1),P=new u.Euler,I=new u.Quaternion,N=new u.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return(O,S,T,D,B)=>{var F=new u.Vector3(0,0,1);F.subVectors(O.target,O.position),P.set(T,S,-D,"YXZ");var G=new u.Quaternion;G.setFromEuler(P),G.multiply(N),G.multiply(I.setFromAxisAngle(R,-B)),F.applyQuaternion(G),F.addVectors(O.position,F),O.lookAt(F)}})();this.connect=()=>{A(),typeof window<"u"&&(window.addEventListener("orientationchange",A,!1),window.addEventListener("deviceorientation",C,!1)),x.enabled=!0},this.disconnect=()=>{typeof window<"u"&&(window.removeEventListener("orientationchange",A,!1),window.removeEventListener("deviceorientation",C,!1)),x.enabled=!1},this.update=()=>{if(x.enabled!==!1){var R=x.deviceOrientation.alpha?u.Math.degToRad(x.deviceOrientation.alpha):0,P=x.deviceOrientation.beta?u.Math.degToRad(x.deviceOrientation.beta):0,I=x.deviceOrientation.gamma?u.Math.degToRad(x.deviceOrientation.gamma):0,N=x.screenOrientation?u.Math.degToRad(x.screenOrientation):0;L(x.object,R,P,I,N)}},this.dispose=function(){this.disconnect()},this.connect()},E=function(){var M=void 0,x=void 0,C=void 0,A=new u.Vector3,L=new u.Vector3,R=new u.Vector3,P=new u.Vector3,I=void 0;this.setCurrentCameraSettings=(N,O)=>{M=N.clone(),x=N,C=O,M.near=C.nearPlane,C.farPlane&&(M.far=C.farPlane),C.eyePosition&&M.position.set(C.eyePosition[0],C.eyePosition[1],C.eyePosition[2]),C.upVector&&M.up.set(C.upVector[0],C.upVector[1],C.upVector[2]),C.targetPosition&&(M.target=new u.Vector3(C.targetPosition[0],C.targetPosition[1],C.targetPosition[2]),M.lookAt(M.target)),M.updateProjectionMatrix(),A.copy(M.position).project(M),L.copy(M.target).project(M)},this.getCurrentPosition=()=>(L.copy(x.target).project(M),[L.x,L.y]),this.zoom=N=>{var O=.002*N,S=Math.max(x.zoom-O,1);x.zoom=S,x.updateProjectionMatrix()},this.zoomToBox=(N,O)=>{N.getCenter(R),R.project(M),this.setCenterZoom([R.x,R.y],O)},this.getPanZoom=()=>({target:this.getCurrentPosition(),zoom:x.zoom}),this.setCenterZoom=(N,O)=>{R.set(N[0],N[1],L.z).unproject(M),P.copy(R).sub(x.target),x.target.copy(R),x.lookAt(x.target),x.position.add(P),x.zoom=O,x.updateProjectionMatrix()},this.setEventCallback=N=>{(N===void 0||typeof N=="function")&&(I=N)},this.triggerCallback=()=>{I!==void 0&&typeof I=="function"&&I()}};l.Viewport=f,l.CameraControls=m,l.SmoothCameraTransition=g,l.RotateCameraTransition=d,l.RayCaster=p,l.CameraAutoTumble=b,l.StereoEffect=v,l.NDCCameraControl=E},(o,l,c)=>{var{Group:u,Matrix4:h}=c(4),f=c(22).Pointset;c(24).Lines;var m=c(45).Lines2,g=c(3).Geometry,d=c(4),p=0,b=function(){return"re"+p++},y=function(v,w){var E=v,_=new u;_.matrixAutoUpdate=!1,_.userData=this;var M=[],x="",C=[],A=w,L=new h,R=3e3;L.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=()=>{M.forEach(P=>P.hideAllPrimitives()),C.forEach(P=>P.setVisibility(!1))},this.showAllPrimitives=()=>{M.forEach(P=>P.showAllPrimitives()),C.forEach(P=>P.setVisibility(!0))},this.setVisibility=P=>{P!=_.visible&&(_.visible=P,this.pickableUpdateRequired=!0)},this.getVisibility=()=>_.visible,this.getGroup=()=>_,this.setTransformation=P=>{L.set(...P),_.matrix.copy(L),_.updateMatrixWorld()},this.setName=P=>{P&&P!==""&&(x=P)},this.getName=()=>x,this.getParent=()=>E,this.getFullSeparatedPath=()=>{var P=[];if(x!==""){P.push(x);for(var I,N=E;N!==void 0;)I=N.getName(),I!==""&&P.unshift(I),N=N.getParent()}return P},this.getFullPath=()=>{var P=this.getFullSeparatedPath();if(0<P.length){var I=P.shift();return P.forEach(N=>{I=I.concat("/",N)}),I}return""},this.createChild=P=>{var I=new y(this,A);return I.setName(P),M.push(I),_.add(I.getGroup()),I},this.getChildWithName=P=>{if(P){for(var I=P.toLowerCase(),N=0;N<M.length;N++)if(M[N].getName().toLowerCase()===I)return M[N]}},this.findChildFromSeparatedPath=P=>{if(P&&0<P.length&&P[0]===""&&P.shift(),P&&0<P.length){var I=this.getChildWithName(P[0]);return I?(P.shift(),I.findChildFromSeparatedPath(P)):void 0}return this},this.findChildFromPath=P=>{var I=P.split("/");return this.findChildFromSeparatedPath(I)},this.createChildFromSeparatedPath=P=>{if(0<P.length&&P[0]===""&&P.shift(),0<P.length){var I=this.getChildWithName(P[0]);return I||(I=this.createChild(P[0])),P.shift(),I.createChildFromSeparatedPath(P)}return this},this.createChildFromPath=P=>{var I=P.split("/");return this.createChildFromSeparatedPath(I)},this.findOrCreateChildFromPath=P=>{var I=this.findChildFromPath(P);return I||(I=this.createChildFromPath(P)),I},this.addZincObject=P=>{P&&(P.setRegion(this),_.add(P.getGroup()),C.push(P),this.pickableUpdateRequired=!0,A&&A.triggerObjectAddedCallback(P))},this.removeZincObject=P=>{for(var I=0;I<C.length;I++)if(P===C[I])return _.remove(P.getGroup()),C.splice(I,1),A&&A.triggerObjectRemovedCallback(P),P.dispose(),void(this.pickableUpdateRequired=!0)},this.checkPickableUpdateRequred=P=>{if(this.pickableUpdateRequired)return!0;if(P){for(var I=!1,N=0;N<M.length;N++)if(I=M[N].checkPickableUpdateRequred(P),I)return!0}return!1},this.getPickableThreeJSObjects=(P,I)=>(_.visible&&(C.forEach(N=>{if(N.getGroup()&&N.getGroup().visible){var O=N.marker;O&&O.isEnabled()&&P.push(O.getMorph()),P.push(N.getGroup())}}),I&&M.forEach(N=>{N.getPickableThreeJSObjects(P,I)}),this.pickableUpdateRequired=!1),P),this.setDuration=P=>{R=P,C.forEach(I=>I.setDuration(P)),M.forEach(I=>I.setDuration(P))},this.getDuration=()=>R,this.getBoundingBox=P=>{var I,N;return C.forEach(O=>{N=O.getBoundingBox(),N&&(I==null?I=N.clone():I.union(N))}),P&&M.forEach(O=>{N=O.getBoundingBox(P),N&&(I==null?I=N.clone():I.union(N))}),I},this.clear=P=>{P&&M.forEach(I=>I.clear(P)),C.forEach(I=>{_.remove(I.getGroup()),I.dispose()}),M=[],C=[]},this.objectIsInRegion=(P,I)=>{for(var N=0;N<C.length;N++)if(P===C[N])return!0;if(I){for(var O=0;O<M.length;O++)if(M[O].objectIsInRegion(P,I))return!0}return!1},this.forEachGeometry=(P,I)=>{C.forEach(N=>{N.isGeometry&&P(N)}),I&&M.forEach(N=>N.forEachGeometry(P,I))},this.forEachGlyphset=(P,I)=>{C.forEach(N=>{N.isGlyphset&&P(N)}),I&&M.forEach(N=>N.forEachGlyphset(P,I))},this.forEachPointset=(P,I)=>{C.forEach(N=>{N.isPointset&&P(N)}),I&&M.forEach(N=>N.forEachPointset(P,I))},this.forEachLine=(P,I)=>{C.forEach(N=>{N.isLines&&P(N)}),I&&M.forEach(N=>N.forEachLine(P,I))},this.findObjectsWithAnatomicalId=(P,I)=>(C.forEach(N=>{N.anatomicalId===P&&objectsArray.push(N)}),I&&M.forEach(N=>{var O=N.findObjectsWithAnatomicalId(P,I);objectsArray.push(...O)}),objectsArray),this.findObjectsWithGroupName=(P,I)=>{var N=[];return C.forEach(O=>{var S=O.groupName?O.groupName.toLowerCase():O.groupName,T=P&&P.toLowerCase();S===T&&N.push(O)}),I&&M.forEach(O=>{var S=O.findObjectsWithGroupName(P,I);N.push(...S)}),N},this.findGeometriesWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isGeometry);return O},this.findPointsetsWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isPointset);return O},this.findGlyphsetsWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isGlyphset);return O},this.findLinesWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isLines);return O},this.getAllObjects=P=>{var I=[...C];return P&&M.forEach(N=>{var O=N.getAllObjects(P);I.push(...O)}),I},this.getChildRegions=P=>{var I=[...M];return P&&M.forEach(N=>{var O=N.getChildRegions(P);I.push(...O)}),I},this.getCurrentTime=()=>{if(C[0]!=null)return C[0].getCurrentTime();for(var P,I=0;I<M.length;I++)if(P=M[I].getCurrentTime(),P!==-1)return P;return-1},this.setMorphTime=(P,I)=>{C.forEach(N=>{N.setMorphTime(P)}),I&&M.forEach(N=>{N.setMorphTime(P)})},this.isTimeVarying=()=>{for(var P=0;P<C.length;P++)if(C[P].isTimeVarying())return!0;for(var I=0;I<M.length;I++)if(M[I].isTimeVarying())return!0;return!1},this.renderGeometries=(P,I,N,O,S,T)=>{var D,B=this.getAllObjects(T);B.forEach(F=>{F.render(P*I,N,O,S)}),S&&N===!1&&(D=S.markerCluster)!==null&&D!==void 0&&D.markerUpdateRequired&&S.markerCluster.calculate()},this.createPoints=(P,I,N,O)=>{var S=!1,T=this.findObjectsWithGroupName(P,!1),D=T.findIndex(F=>F.isPointset),B=-1<D?T[D]:new f;return B.addPoints(I,N,O),D===-1?(B.setName(P),this.addZincObject(B),S=!0):this.pickableUpdateRequired=!0,{zincObject:B,isNew:S}},this.createLines=(P,I,N)=>{var O=!1,S=this.findObjectsWithGroupName(P,!1),T=S.findIndex(B=>B.isLines),D=-1<T?S[T]:new m;return D.addLines(I,N),T===-1?(D.setName(P),this.addZincObject(D),O=!0):this.pickableUpdateRequired=!0,{zincObject:D,isNew:O}},this.createGeometryFromThreeJSGeometry=(P,I,N,O,S,T)=>{var D=new g,B=new d.MeshPhongMaterial({color:N,morphTargets:!1,morphNormals:!1,transparent:!0,opacity:O,side:d.DoubleSide});return D.createMesh(I,B,{localTimeEnabled:!1,localMorphColour:!1}),D.getMorph()?(D.setVisibility(!1),D.setName(P),D.setRenderOrder(T),this.addZincObject(D),D):void 0}};l.Region=y},(o,l,c)=>{c(4),c(5).createBufferGeometry,c(5).toBufferGeometry;var u=c(46).LineSegments2,h=c(48).LineMaterial,f=c(47).LineSegmentsGeometry,m=function(){c(24).Lines.call(this),this.isLines2=!0;var g=Array(300);this.createLineSegment=(d,p,b)=>{if(d&&p){var y=new f;y.setPositions(d),y.colorsNeedUpdate=!0;var v=new u(y,p);v.scale.set(1,1,1),v.computeLineDistances(),this.setMesh(v,b.localTimeEnabled,b.localMorphColour)}},this.setWidth=d=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=d,this.morph.material.needsUpdate=!0)},this.addVertices=function(d){if(d&&d.length){var p=this.getMorph();p||(this.drawRange=0);var b=3*this.drawRange;if(d.forEach(y=>{g[b++]=y[0],g[b++]=y[1],g[b++]=y[2],this.drawRange++}),!p)for(;300>b;)g[b++]=d[0][0],g[b++]=d[0][1],g[b++]=d[0][2];p&&(p.geometry.setPositions(g),p.computeLineDistances(),this.boundingBoxUpdateRequired=!0)}return g},this.getVerticesByFaceIndex=function(d){var p=3*(2*d),b=this.getMorph();if(b&&3*this.drawRange>p){var y=b.geometry.getAttribute("instanceStart");return[[y.data.array[p],y.data.array[++p],y.data.array[++p]],[y.data.array[++p],y.data.array[++p],y.data.array[++p]]]}return[]},this.editVertice=function(d,p){if(d&&d.length){var b=this.getMorph(),y=p+d.length-1;if(!b||0>p||y>=this.drawRange)return;var v=3*p;for(d.forEach(w=>{g[v++]=w[0],g[v++]=w[1],g[v++]=w[2]}),v=3*this.drawRange;300>v;)g[v++]=d[0][0],g[v++]=d[0][1],g[v++]=d[0][2];b.geometry.setPositions(g),b.computeLineDistances(),this.boundingBoxUpdateRequired=!0}return g},this.addLines=(d,p)=>{if(d&&0<d.length){this.addVertices(d);var b=this.getMorph();if(!b){var y=new h({color:p,linewidth:1,vertexColors:!1,worldUnits:!1});y.resolution.set(window.innerWidth,window.innerHeight),this.createLineSegment(g,y,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}},this.render=()=>{var d=this.getMorph().material;d.resolution.set(window.innerWidth,window.innerHeight)}};m.prototype=Object.create(c(24).Lines.prototype),m.prototype.constructor=m,l.Lines2=m},(o,l,c)=>{c.r(l),c.d(l,{LineSegments2:()=>C});var u=c(4),h=c(47),f=c(48),m=new u.Vector3,g=new u.Vector3,d=new u.Vector4,p=new u.Vector4,b=new u.Vector4,y=new u.Vector3,v=new u.Matrix4,w=new u.Line3,E=new u.Vector3,_=new u.Box3,M=new u.Sphere,x=new u.Vector4;class C extends u.Mesh{constructor(){var L=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new h.LineSegmentsGeometry,R=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new f.LineMaterial({color:16777215*Math.random()});super(L,R),this.type="LineSegments2"}computeLineDistances(){for(var L=this.geometry,R=L.attributes.instanceStart,P=L.attributes.instanceEnd,I=new Float32Array(2*R.count),N=0,O=0,S=R.count;N<S;N++,O+=2)m.fromBufferAttribute(R,N),g.fromBufferAttribute(P,N),I[O]=O==0?0:I[O-1],I[O+1]=I[O]+m.distanceTo(g);var T=new u.InstancedInterleavedBuffer(I,2,1);return L.setAttribute("instanceDistanceStart",new u.InterleavedBufferAttribute(T,1,0)),L.setAttribute("instanceDistanceEnd",new u.InterleavedBufferAttribute(T,1,1)),this}raycast(L,R){L.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var P=L.params.Line2===void 0?0:L.params.Line2.threshold||0,I=L.ray,N=L.camera,O=N.projectionMatrix,S=this.matrixWorld,T=this.geometry,D=this.material,B=D.resolution,F=D.linewidth+P,G=T.attributes.instanceStart,H=T.attributes.instanceEnd,te=-N.near,se=2*Math.max(F/B.width,F/B.height);T.boundingSphere===null&&T.computeBoundingSphere(),M.copy(T.boundingSphere).applyMatrix4(S);var j=Math.max(N.near,M.distanceToPoint(I.origin));x.set(0,0,-j,1).applyMatrix4(N.projectionMatrix),x.multiplyScalar(1/x.w),x.applyMatrix4(N.projectionMatrixInverse);var z=.5*Math.abs(se/x.w);if(M.radius+=z,L.ray.intersectsSphere(M)!==!1){T.boundingBox===null&&T.computeBoundingBox(),_.copy(T.boundingBox).applyMatrix4(S);var W=Math.max(N.near,_.distanceToPoint(I.origin));x.set(0,0,-W,1).applyMatrix4(N.projectionMatrix),x.multiplyScalar(1/x.w),x.applyMatrix4(N.projectionMatrixInverse);var ee=.5*Math.abs(se/x.w);if(_.max.x+=ee,_.max.y+=ee,_.max.z+=ee,_.min.x-=ee,_.min.y-=ee,_.min.z-=ee,L.ray.intersectsBox(_)!==!1){I.at(1,b),b.w=1,b.applyMatrix4(N.matrixWorldInverse),b.applyMatrix4(O),b.multiplyScalar(1/b.w),b.x*=B.x/2,b.y*=B.y/2,b.z=0,y.copy(b),v.multiplyMatrices(N.matrixWorldInverse,S);for(var q=0,$=G.count;q<$;q++){d.fromBufferAttribute(G,q),p.fromBufferAttribute(H,q),d.w=1,p.w=1,d.applyMatrix4(v),p.applyMatrix4(v);var Y=d.z>te&&p.z>te;if(!Y){if(d.z>te){var K=d.z-p.z,ie=(d.z-te)/K;d.lerp(p,ie)}else if(p.z>te){var k=p.z-d.z,Z=(p.z-te)/k;p.lerp(d,Z)}d.applyMatrix4(O),p.applyMatrix4(O),d.multiplyScalar(1/d.w),p.multiplyScalar(1/p.w),d.x*=B.x/2,d.y*=B.y/2,p.x*=B.x/2,p.y*=B.y/2,w.start.copy(d),w.start.z=0,w.end.copy(p),w.end.z=0;var Q=w.closestPointToPointParameter(y,!0);w.at(Q,E);var V=u.MathUtils.lerp(d.z,p.z,Q),U=-1<=V&&1>=V,oe=y.distanceTo(E)<.5*F;if(U&&oe){w.start.fromBufferAttribute(G,q),w.end.fromBufferAttribute(H,q),w.start.applyMatrix4(S),w.end.applyMatrix4(S);var ae=new u.Vector3,le=new u.Vector3;I.distanceSqToSegment(w.start,w.end,le,ae),R.push({point:le,pointOnLine:ae,distance:I.origin.distanceTo(le),object:this,face:null,faceIndex:q,uv:null,uv2:null})}}}}}}}C.prototype.LineSegments2=!0},(o,l,c)=>{c.r(l),c.d(l,{LineSegmentsGeometry:()=>m});var u=c(4),h=new u.Box3,f=new u.Vector3;class m extends u.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 u.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 u.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(d){var p=this.attributes.instanceStart,b=this.attributes.instanceEnd;return p!==void 0&&(p.applyMatrix4(d),b.applyMatrix4(d),p.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(d){var p;d instanceof Float32Array?p=d:Array.isArray(d)&&(p=new Float32Array(d));var b=new u.InstancedInterleavedBuffer(p,6,1);return this.setAttribute("instanceStart",new u.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceEnd",new u.InterleavedBufferAttribute(b,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(d){var p;d instanceof Float32Array?p=d:Array.isArray(d)&&(p=new Float32Array(d));var b=new u.InstancedInterleavedBuffer(p,6,1);return this.setAttribute("instanceColorStart",new u.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceColorEnd",new u.InterleavedBufferAttribute(b,3,3)),this}fromWireframeGeometry(d){return this.setPositions(d.attributes.position.array),this}fromEdgesGeometry(d){return this.setPositions(d.attributes.position.array),this}fromMesh(d){return this.fromWireframeGeometry(new u.WireframeGeometry(d.geometry)),this}fromLineSegments(d){var p=d.geometry;return p.isGeometry?void console.error("THREE.LineSegmentsGeometry no longer supports Geometry. Use THREE.BufferGeometry instead."):(p.isBufferGeometry&&this.setPositions(p.attributes.position.array),this)}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new u.Box3);var d=this.attributes.instanceStart,p=this.attributes.instanceEnd;d!==void 0&&p!==void 0&&(this.boundingBox.setFromBufferAttribute(d),h.setFromBufferAttribute(p),this.boundingBox.union(h))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new u.Sphere),this.boundingBox===null&&this.computeBoundingBox();var d=this.attributes.instanceStart,p=this.attributes.instanceEnd;if(d!==void 0&&p!==void 0){var b=this.boundingSphere.center;this.boundingBox.getCenter(b);for(var y=0,v=0,w=d.count;v<w;v++)f.fromBufferAttribute(d,v),y=Math.max(y,b.distanceToSquared(f)),f.fromBufferAttribute(p,v),y=Math.max(y,b.distanceToSquared(f));this.boundingSphere.radius=Math.sqrt(y),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(d){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(d)}}m.prototype.isLineSegmentsGeometry=!0},(o,l,c)=>{c.r(l),c.d(l,{LineMaterial:()=>h});var u=c(4);u.UniformsLib.line={linewidth:{value:1},resolution:{value:new u.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1}},u.ShaderLib.line={uniforms:u.UniformsUtils.merge([u.UniformsLib.common,u.UniformsLib.fog,u.UniformsLib.line]),vertexShader:`
3232
+ `),A="",L="",R=0,P=[],I=typeof"".trimLeft=="function",N=0,O=C.length;N<O;N++)if(A=C[N],A=I?A.trimLeft():A.trim(),R=A.length,R!==0&&(L=A.charAt(0),L!=="#"))if(L==="v"){var S=A.split(/\s+/);switch(S[0]){case"v":x.vertices.push(parseFloat(S[1]),parseFloat(S[2]),parseFloat(S[3])),7<=S.length?x.colors.push(parseFloat(S[4]),parseFloat(S[5]),parseFloat(S[6])):x.colors.push(void 0,void 0,void 0);break;case"vn":x.normals.push(parseFloat(S[1]),parseFloat(S[2]),parseFloat(S[3]));break;case"vt":x.uvs.push(parseFloat(S[1]),parseFloat(S[2]))}}else if(L==="f"){for(var T,D=A.substr(1).trim(),B=D.split(/\s+/),F=[],G=0,H=B.length;G<H;G++)if(T=B[G],0<T.length){var te=T.split("/");F.push(te)}for(var se=F[0],j=1,z=F.length-1;j<z;j++){var W=F[j],ee=F[j+1];x.addFace(se[0],W[0],ee[0],se[1],W[1],ee[1],se[2],W[2],ee[2])}}else if(L==="l"){var q=A.substring(1).trim().split(" "),$=[],Y=[];if(A.indexOf("/")===-1)$=q;else for(var K,ie=0,k=q.length;ie<k;ie++)K=q[ie].split("/"),K[0]!==""&&$.push(K[0]),K[1]!==""&&Y.push(K[1]);x.addLineGeometry($,Y)}else if(L==="p"){var Z=A.substr(1).trim(),Q=Z.split(" ");x.addPointGeometry(Q)}else if((P=h.exec(A))!==null){var V=(" "+P[0].substr(1).trim()).substr(1);x.startObject(V)}else if(m.test(A))x.object.startMaterial(A.substring(7).trim(),x.materialLibraries);else if(f.test(A))x.materialLibraries.push(A.substring(7).trim());else if(g.test(A))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(L==="s"){if(P=A.split(" "),1<P.length){var U=P[1].trim().toLowerCase();x.object.smooth=U!=="0"&&U!=="off"}else x.object.smooth=!0;var oe=x.object.currentMaterial();oe&&(oe.smooth=x.object.smooth)}else{if(A==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+A+'"')}x.finalize();var ae=new u.Group;ae.materialLibraries=[].concat(x.materialLibraries);var le=x.objects.length!==1||x.objects[0].geometry.vertices.length!==0;if(le==!0)for(var fe=0,be=x.objects.length;fe<be;fe++){var we=x.objects[fe],ue=we.geometry,ge=we.materials,re=ue.type==="Line",xe=ue.type==="Points",de=!1;if(ue.vertices.length!==0){var me=new u.BufferGeometry;me.setAttribute("position",new u.Float32BufferAttribute(ue.vertices,3)),0<ue.normals.length&&me.setAttribute("normal",new u.Float32BufferAttribute(ue.normals,3)),0<ue.colors.length&&(de=!0,me.setAttribute("color",new u.Float32BufferAttribute(ue.colors,3))),ue.hasUVIndices===!0&&me.setAttribute("uv",new u.Float32BufferAttribute(ue.uvs,2));for(var _e=[],He=0,Ze=ge.length;He<Ze;He++){var Pe=ge[He],ut=Pe.name+"_"+Pe.smooth+"_"+de,Re=x.materials[ut];if(this.materials!==null){if(Re=this.materials.create(Pe.name),re&&Re&&!(Re instanceof u.LineBasicMaterial)){var Je=new u.LineBasicMaterial;u.Material.prototype.copy.call(Je,Re),Je.color.copy(Re.color),Re=Je}else if(xe&&Re&&!(Re instanceof u.PointsMaterial)){var Xe=new u.PointsMaterial({size:10,sizeAttenuation:!1});u.Material.prototype.copy.call(Xe,Re),Xe.color.copy(Re.color),Xe.map=Re.map,Re=Xe}}Re===void 0&&(Re=re?new u.LineBasicMaterial:xe?new u.PointsMaterial({size:1,sizeAttenuation:!1}):new u.MeshPhongMaterial,Re.name=Pe.name,Re.flatShading=!Pe.smooth,Re.vertexColors=de,x.materials[ut]=Re),_e.push(Re)}var lt=void 0;if(1<_e.length){for(var tt,kt=0,ne=ge.length;kt<ne;kt++)tt=ge[kt],me.addGroup(tt.groupStart,tt.groupCount,kt);lt=re?new u.LineSegments(me,_e):xe?new u.Points(me,_e):new u.Mesh(me,_e)}else lt=re?new u.LineSegments(me,_e[0]):xe?new u.Points(me,_e[0]):new u.Mesh(me,_e[0]);lt.name=we.name,ae.add(lt)}}else if(0<x.vertices.length){var Me=new u.PointsMaterial({size:1,sizeAttenuation:!1}),Te=new u.BufferGeometry;Te.setAttribute("position",new u.Float32BufferAttribute(x.vertices,3)),0<x.colors.length&&x.colors[0]!==void 0&&(Te.setAttribute("color",new u.Float32BufferAttribute(x.colors,3)),Me.vertexColors=!0);var Ie=new u.Points(Te,Me);ae.add(Ie)}return ae}}},(o,l,c)=>{var u=c(19).JSONLoader;l.PrimitivesLoader=function(){var h=0;this.crossOrigin="Anonymous";var f=new u,m=[];this.load=(d,p,b,y)=>{if(20>h){++h,f.crossOrigin=this.crossOrigin;var v=new g(p,this),w=new g(y,this);f.load(d,v,b,w)}else m.push({url:d,onLoad:p,onProgress:b,onError:y})},this.loadFromWaitingList=()=>{var d=m.shift();d&&this.load(d.url,d.onLoad,d.onProgress,d.onError)};var g=function(d,p){return function(){--h,d&&d(...arguments),p.loadFromWaitingList()}};this.parse=d=>f.parse(d)}},(o,l,c)=>{c(4);var u=c(40).GLTFLoader,h=function(){var f=this;this.parseGLTFObjects=(m,g,d,p)=>{var b=g;if(d!==0){if(m.type!=="Object3D"){var y;if(m.type==="Mesh"?y=new(c(3)).Geometry:m.type==="LineSegments"?y=new(c(24)).Lines:m.type==="Points"&&(y=new(c(22)).Pointset),y){var v=!1,w=!1;m.geometry&&m.geometry.morphAttributes&&(v=!!m.geometry.morphAttributes.position,w=!!m.geometry.morphAttributes.color),y.setMesh(m.clone(),v,w);var E=y.getMorph();y.groupName=E.name,E.matrixAutoUpdate=!0,g.addZincObject(y),p!=null&&typeof p=="function"&&p(y)}}else if(m.name!==""&&(g&&(b=g.findOrCreateChildFromPath(m.name)),b)){var _=b.getGroup();_.position.copy(m.position),_.rotation.copy(m.rotation),_.quaternion.copy(m.quaternion),_.matrixAutoUpdate=!0}}d++,m.children.forEach(M=>{f.parseGLTFObjects(M,b,d,p)})},this.setCamera=m=>{m.viewAll();var g=m.getZincCameraControls(),d=g.getCurrentViewport();g.addViewport("default",d),g.setDefaultViewport("default")},this.load=(m,g,d,p,b)=>{var y=d.substring(0,d.lastIndexOf("/")+1),v=d.substring(d.lastIndexOf("/")+1,d.length),w=new u().setPath(y);w.load(v,function(E){console.log(E),f.parseGLTFObjects(E.scene,g,0,p),f.setCamera(m),b!=null&&typeof b=="function"&&b()})}};l.GLTFToZincJSLoader=h},o=>{o.exports=HF},(o,l,c)=>{var u=c(42).GLTFExporter,h=function(f){var m=f;this.exportGLTF=g=>{var d=m.getRootRegion(),p=d.getAllObjects(!0),b=[];p.forEach(w=>{w.animationClip&&b.push({clip:w.animationClip[0],mesh:w.getMorph()})});var y=new u,v={binary:g,animations:b};return new Promise(w=>{y.parse(m.getThreeJSScene(),function(E){w(E)},v)})}};l.SceneExporter=h},(o,l,c)=>{c.r(l),c.d(l,{GLTFExporter:()=>h});var u=c(4);class h{constructor(){this.pluginCallbacks=[],this.register(function(S){return new P(S)}),this.register(function(S){return new I(S)}),this.register(function(S){return new N(S)})}register(S){return this.pluginCallbacks.indexOf(S)===-1&&this.pluginCallbacks.push(S),this}unregister(S){return this.pluginCallbacks.indexOf(S)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(S),1),this}parse(S,T,D){for(var B=new R,F=[],G=0,H=this.pluginCallbacks.length;G<H;G++)F.push(this.pluginCallbacks[G](B));B.setPlugins(F),B.write(S,T,D)}}var f={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},m={};m[u.NearestFilter]=f.NEAREST,m[u.NearestMipmapNearestFilter]=f.NEAREST_MIPMAP_NEAREST,m[u.NearestMipmapLinearFilter]=f.NEAREST_MIPMAP_LINEAR,m[u.LinearFilter]=f.LINEAR,m[u.LinearMipmapNearestFilter]=f.LINEAR_MIPMAP_NEAREST,m[u.LinearMipmapLinearFilter]=f.LINEAR_MIPMAP_LINEAR,m[u.ClampToEdgeWrapping]=f.CLAMP_TO_EDGE,m[u.RepeatWrapping]=f.REPEAT,m[u.MirroredRepeatWrapping]=f.MIRRORED_REPEAT;var g={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},d=12,p=1179937895,b=2,y=8,v=1313821514,w=5130562;function E(O,S){return O.length===S.length&&O.every(function(T,D){return T===S[D]})}function _(O){if(window.TextEncoder!==void 0)return new TextEncoder().encode(O).buffer;for(var S,T=new Uint8Array(new ArrayBuffer(O.length)),D=0,B=O.length;D<B;D++)S=O.charCodeAt(D),T[D]=255<S?32:S;return T.buffer}function M(O){return E(O.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function x(O,S,T){for(var D={min:Array(O.itemSize).fill(Number.POSITIVE_INFINITY),max:Array(O.itemSize).fill(Number.NEGATIVE_INFINITY)},B=S;B<S+T;B++)for(var F,G=0;G<O.itemSize;G++)F=void 0,4<O.itemSize?F=O.array[B*O.itemSize+G]:G===0?F=O.getX(B):G===1?F=O.getY(B):G===2?F=O.getZ(B):G==3&&(F=O.getW(B)),D.min[G]=Math.min(D.min[G],F),D.max[G]=Math.max(D.max[G],F);return D}function C(O){return 4*Math.ceil(O/4)}function A(O){var S=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,T=C(O.byteLength);if(T!==O.byteLength){var D=new Uint8Array(T);if(D.set(new Uint8Array(O)),S!==0)for(var B=O.byteLength;B<T;B++)D[B]=S;return D.buffer}return O}var L=null;class R{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(S){this.plugins=S}write(S,T,D){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},D),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(S);var B=this;Promise.all(this.pending).then(function(){var F=B.buffers,G=B.json,H=B.options,te=B.extensionsUsed,se=new Blob(F,{type:"application/octet-stream"}),j=Object.keys(te);if(0<j.length&&(G.extensionsUsed=j),G.buffers&&0<G.buffers.length&&(G.buffers[0].byteLength=se.size),H.binary===!0){var z=new window.FileReader;z.readAsArrayBuffer(se),z.onloadend=function(){var ee=A(z.result),q=new DataView(new ArrayBuffer(y));q.setUint32(0,ee.byteLength,!0),q.setUint32(4,w,!0);var $=A(_(JSON.stringify(G)),32),Y=new DataView(new ArrayBuffer(y));Y.setUint32(0,$.byteLength,!0),Y.setUint32(4,v,!0);var K=new ArrayBuffer(d),ie=new DataView(K);ie.setUint32(0,p,!0),ie.setUint32(4,b,!0);var k=d+Y.byteLength+$.byteLength+q.byteLength+ee.byteLength;ie.setUint32(8,k,!0);var Z=new Blob([K,Y,$,q,ee],{type:"application/octet-stream"}),Q=new window.FileReader;Q.readAsArrayBuffer(Z),Q.onloadend=function(){T(Q.result)}}}else if(G.buffers&&0<G.buffers.length){var W=new window.FileReader;W.readAsDataURL(se),W.onloadend=function(){var ee=W.result;G.buffers[0].uri=ee,T(G)}}else T(G)})}serializeUserData(S,T){if(!(S.userData&&S.userData.isZincObject)&&Object.keys(S.userData).length!==0){var D=this.options,B=this.extensionsUsed;try{var F=JSON.parse(JSON.stringify(S.userData));if(D.includeCustomExtensions&&F.gltfExtensions){for(var G in T.extensions===void 0&&(T.extensions={}),F.gltfExtensions)T.extensions[G]=F.gltfExtensions[G],B[G]=!0;delete F.gltfExtensions}0<Object.keys(F).length&&(T.extras=F)}catch(H){console.warn("THREE.GLTFExporter: userData of '"+S.name+"' won't be serialized because of JSON.stringify error - "+H.message)}}}getUID(S){return this.uids.has(S)||this.uids.set(S,this.uid++),this.uids.get(S)}isNormalizedNormalAttribute(S){var T=this.cache;if(T.attributesNormalized.has(S))return!1;for(var D=new u.Vector3,B=0,F=S.count;B<F;B++)if(5e-4<Math.abs(D.fromBufferAttribute(S,B).length()-1))return!1;return!0}createNormalizedNormalAttribute(S){var T=this.cache;if(T.attributesNormalized.has(S))return T.attributesNormalized.get(S);for(var D=S.clone(),B=new u.Vector3,F=0,G=D.count;F<G;F++)B.fromBufferAttribute(D,F),B.x===0&&B.y===0&&B.z===0?B.setX(1):B.normalize(),D.setXYZ(F,B.x,B.y,B.z);return T.attributesNormalized.set(S,D),D}applyTextureTransform(S,T){var D=!1,B={};(T.offset.x!==0||T.offset.y!==0)&&(B.offset=T.offset.toArray(),D=!0),T.rotation!==0&&(B.rotation=T.rotation,D=!0),(T.repeat.x!==1||T.repeat.y!==1)&&(B.scale=T.repeat.toArray(),D=!0),D&&(S.extensions=S.extensions||{},S.extensions.KHR_texture_transform=B,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(S){var T=this.json,D=this.buffers;return T.buffers||(T.buffers=[{byteLength:0}]),D.push(S),0}processBufferView(S,T,D,B,F){var G=this.json;G.bufferViews||(G.bufferViews=[]);for(var H=T===f.UNSIGNED_BYTE?1:T===f.UNSIGNED_SHORT?2:4,te=C(B*S.itemSize*H),se=new DataView(new ArrayBuffer(te)),j=0,z=D;z<D+B;z++)for(var W,ee=0;ee<S.itemSize;ee++)W=void 0,4<S.itemSize?W=S.array[z*S.itemSize+ee]:ee===0?W=S.getX(z):ee===1?W=S.getY(z):ee===2?W=S.getZ(z):ee==3&&(W=S.getW(z)),T===f.FLOAT?se.setFloat32(j,W,!0):T===f.UNSIGNED_INT?se.setUint32(j,W,!0):T===f.UNSIGNED_SHORT?se.setUint16(j,W,!0):T===f.UNSIGNED_BYTE&&se.setUint8(j,W),j+=H;var q={buffer:this.processBuffer(se.buffer),byteOffset:this.byteOffset,byteLength:te};F!==void 0&&(q.target=F),F===f.ARRAY_BUFFER&&(q.byteStride=S.itemSize*H),this.byteOffset+=te,G.bufferViews.push(q);var $={id:G.bufferViews.length-1,byteLength:0};return $}processBufferViewImage(S){var T=this,D=T.json;return D.bufferViews||(D.bufferViews=[]),new Promise(function(B){var F=new window.FileReader;F.readAsArrayBuffer(S),F.onloadend=function(){var G=A(F.result),H={buffer:T.processBuffer(G),byteOffset:T.byteOffset,byteLength:G.byteLength};T.byteOffset+=G.byteLength,B(D.bufferViews.push(H)-1)}})}processAccessor(S,T,D,B){var F,G=this.options,H=this.json;if(S.array.constructor===Float32Array)F=f.FLOAT;else if(S.array.constructor===Uint32Array)F=f.UNSIGNED_INT;else if(S.array.constructor===Uint16Array)F=f.UNSIGNED_SHORT;else if(S.array.constructor===Uint8Array)F=f.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(D===void 0&&(D=0),B===void 0&&(B=S.count),G.truncateDrawRange&&T!==void 0&&T.index===null){var te=D+B,se=T.drawRange.count===1/0?S.count:T.drawRange.start+T.drawRange.count;D=Math.max(D,T.drawRange.start),B=Math.min(te,se)-D,0>B&&(B=0)}if(B===0)return null;var j,z=x(S,D,B);T!==void 0&&(j=S===T.index?f.ELEMENT_ARRAY_BUFFER:f.ARRAY_BUFFER);var W=this.processBufferView(S,F,D,B,j),ee={bufferView:W.id,byteOffset:W.byteOffset,componentType:F,count:B,max:z.max,min:z.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[S.itemSize]};return S.normalized===!0&&(ee.normalized=!0),H.accessors||(H.accessors=[]),H.accessors.push(ee)-1}processImage(S,T,D){var B=this,F=B.cache,G=B.json,H=B.options,te=B.pending;F.images.has(S)||F.images.set(S,{});var se=F.images.get(S),j=T===u.RGBAFormat?"image/png":"image/jpeg",z=j+":flipY/"+D.toString();if(se[z]!==void 0)return se[z];G.images||(G.images=[]);var W={mimeType:j};if(H.embedImages){var ee=L=L||document.createElement("canvas");ee.width=Math.min(S.width,H.maxTextureSize),ee.height=Math.min(S.height,H.maxTextureSize);var q=ee.getContext("2d");if(D===!0&&(q.translate(0,ee.height),q.scale(1,-1)),typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&S instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&S instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&S instanceof ImageBitmap)q.drawImage(S,0,0,ee.width,ee.height);else{T!==u.RGBAFormat&&T!==u.RGBFormat&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(S.width>H.maxTextureSize||S.height>H.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",S);var $=new Uint8ClampedArray(4*(S.height*S.width));if(T===u.RGBAFormat)for(var Y=0;Y<$.length;Y+=4)$[Y+0]=S.data[Y+0],$[Y+1]=S.data[Y+1],$[Y+2]=S.data[Y+2],$[Y+3]=S.data[Y+3];else for(var K=0,ie=0;K<$.length;K+=4,ie+=3)$[K+0]=S.data[ie+0],$[K+1]=S.data[ie+1],$[K+2]=S.data[ie+2],$[K+3]=255;q.putImageData(new ImageData($,S.width,S.height),0,0)}H.binary===!0?te.push(new Promise(function(Z){ee.toBlob(function(Q){B.processBufferViewImage(Q).then(function(V){W.bufferView=V,Z()})},j)})):W.uri=ee.toDataURL(j)}else W.uri=S.src;var k=G.images.push(W)-1;return se[z]=k,k}processSampler(S){var T=this.json;T.samplers||(T.samplers=[]);var D={magFilter:m[S.magFilter],minFilter:m[S.minFilter],wrapS:m[S.wrapS],wrapT:m[S.wrapT]};return T.samplers.push(D)-1}processTexture(S){var T=this.cache,D=this.json;if(T.textures.has(S))return T.textures.get(S);D.textures||(D.textures=[]);var B={sampler:this.processSampler(S),source:this.processImage(S.image,S.format,S.flipY)};S.name&&(B.name=S.name),this._invokeAll(function(G){G.writeTexture&&G.writeTexture(S,B)});var F=D.textures.push(B)-1;return T.textures.set(S,F),F}processMaterial(S){var T=this.cache,D=this.json;if(T.materials.has(S))return T.materials.get(S);if(S.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;D.materials||(D.materials=[]);var B={pbrMetallicRoughness:{}};S.isMeshStandardMaterial!==!0&&S.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");var F=S.color.toArray().concat([S.opacity]);if(E(F,[1,1,1,1])||(B.pbrMetallicRoughness.baseColorFactor=F),S.isMeshStandardMaterial?(B.pbrMetallicRoughness.metallicFactor=S.metalness,B.pbrMetallicRoughness.roughnessFactor=S.roughness):(B.pbrMetallicRoughness.metallicFactor=.5,B.pbrMetallicRoughness.roughnessFactor=.5),S.metalnessMap||S.roughnessMap)if(S.metalnessMap===S.roughnessMap){var G={index:this.processTexture(S.metalnessMap)};this.applyTextureTransform(G,S.metalnessMap),B.pbrMetallicRoughness.metallicRoughnessTexture=G}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(S.map){var H={index:this.processTexture(S.map)};this.applyTextureTransform(H,S.map),B.pbrMetallicRoughness.baseColorTexture=H}if(S.emissive){var te=S.emissive.clone().multiplyScalar(S.emissiveIntensity),se=Math.max(te.r,te.g,te.b);if(1<se&&(te.multiplyScalar(1/se),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),0<se&&(B.emissiveFactor=te.toArray()),S.emissiveMap){var j={index:this.processTexture(S.emissiveMap)};this.applyTextureTransform(j,S.emissiveMap),B.emissiveTexture=j}}if(S.normalMap){var z={index:this.processTexture(S.normalMap)};S.normalScale&&S.normalScale.x!==-1&&(S.normalScale.x!==S.normalScale.y&&console.warn("THREE.GLTFExporter: Normal scale components are different, ignoring Y and exporting X."),z.scale=S.normalScale.x),this.applyTextureTransform(z,S.normalMap),B.normalTexture=z}if(S.aoMap){var W={index:this.processTexture(S.aoMap),texCoord:1};S.aoMapIntensity!==1&&(W.strength=S.aoMapIntensity),this.applyTextureTransform(W,S.aoMap),B.occlusionTexture=W}S.transparent?B.alphaMode="BLEND":0<S.alphaTest&&(B.alphaMode="MASK",B.alphaCutoff=S.alphaTest),S.side===u.DoubleSide&&(B.doubleSided=!0),S.name!==""&&(B.name=S.name),this.serializeUserData(S,B),this._invokeAll(function(q){q.writeMaterial&&q.writeMaterial(S,B)});var ee=D.materials.push(B)-1;return T.materials.set(S,ee),ee}processMesh(S){var T=this.cache,D=this.json,B=[S.geometry.uuid];if(Array.isArray(S.material))for(var F=0,G=S.material.length;F<G;F++)B.push(S.material[F].uuid);else B.push(S.material.uuid);var H=B.join(":");if(T.meshes.has(H))return T.meshes.get(H);var te,se=S.geometry;if(te=S.isLineSegments?f.LINES:S.isLineLoop?f.LINE_LOOP:S.isLine?f.LINE_STRIP:S.isPoints?f.POINTS:S.material.wireframe?f.LINES:f.TRIANGLES,se.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");var j={},z={},W=[],ee=[],q={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},$=se.getAttribute("normal");$===void 0||this.isNormalizedNormalAttribute($)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),se.setAttribute("normal",this.createNormalizedNormalAttribute($)));var Y=null;for(var K in se.attributes)if(K.substr(0,5)!=="morph"){var ie=se.attributes[K];K=q[K]||K.toUpperCase();var k=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;if(k.test(K)||(K="_"+K),T.attributes.has(this.getUID(ie))){z[K]=T.attributes.get(this.getUID(ie));continue}Y=null;var Z=ie.array;K!=="JOINTS_0"||Z instanceof Uint16Array||Z instanceof Uint8Array||(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),Y=new u.BufferAttribute(new Uint16Array(Z),ie.itemSize,ie.normalized));var Q=this.processAccessor(Y||ie,se);Q!==null&&(z[K]=Q,T.attributes.set(this.getUID(ie),Q))}if($!==void 0&&se.setAttribute("normal",$),Object.keys(z).length===0)return null;if(S.morphTargetInfluences!==void 0&&0<S.morphTargetInfluences.length){var V=[],U=[],oe={};if(S.morphTargetDictionary!==void 0)for(var ae in S.morphTargetDictionary)oe[S.morphTargetDictionary[ae]]=ae;for(var le=0;le<S.morphTargetInfluences.length;++le){var fe={},be=!1;for(var we in se.morphAttributes){if(we!="position"&&we!=="normal"&&we!=="color"){be||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),be=!0);continue}var ue=se.morphAttributes[we][le],ge=we.toUpperCase();q[we]&&(ge=q[we]);var re=se.attributes[we];if(T.attributes.has(this.getUID(ue))){fe[ge]=T.attributes.get(this.getUID(ue));continue}var xe=re.clone();if(!se.morphTargetsRelative)if(re)for(var de=0,me=ue.count;de<me;de++)re.count>de&&xe.setXYZ(de,ue.getX(de)-re.getX(de),ue.getY(de)-re.getY(de),ue.getZ(de)-re.getZ(de));else for(var _e=0,He=ue.count;_e<He;_e++)xe.setXYZ(_e,0,0,0);fe[ge]=this.processAccessor(xe,se),T.attributes.set(this.getUID(re),fe[ge])}ee.push(fe),V.push(S.morphTargetInfluences[le]),S.morphTargetDictionary!==void 0&&U.push(oe[le])}j.weights=V,0<U.length&&(j.extras={},j.extras.targetNames=U)}var Ze=Array.isArray(S.material);if(Ze&&se.groups.length===0)return null;for(var Pe,ut=Ze?S.material:[S.material],Re=Ze?se.groups:[{materialIndex:0,start:void 0,count:void 0}],Je=0,Xe=Re.length;Je<Xe;Je++){if(Pe={mode:te,attributes:z},this.serializeUserData(se,Pe),0<ee.length&&(Pe.targets=ee),se.index!==null){var lt=this.getUID(se.index);(Re[Je].start!==void 0||Re[Je].count!==void 0)&&(lt+=":"+Re[Je].start+":"+Re[Je].count),T.attributes.has(lt)?Pe.indices=T.attributes.get(lt):(Pe.indices=this.processAccessor(se.index,se,Re[Je].start,Re[Je].count),T.attributes.set(lt,Pe.indices)),Pe.indices===null&&delete Pe.indices}var tt=this.processMaterial(ut[Re[Je].materialIndex]);tt!==null&&(Pe.material=tt),W.push(Pe)}j.primitives=W,D.meshes||(D.meshes=[]),this._invokeAll(function(ne){ne.writeMesh&&ne.writeMesh(S,j)});var kt=D.meshes.push(j)-1;return T.meshes.set(H,kt),kt}processCamera(S){var T=this.json;T.cameras||(T.cameras=[]);var D=S.isOrthographicCamera,B={type:D?"orthographic":"perspective"};return D?B.orthographic={xmag:2*S.right,ymag:2*S.top,zfar:0>=S.far?.001:S.far,znear:0>S.near?0:S.near}:B.perspective={aspectRatio:S.aspect,yfov:u.MathUtils.degToRad(S.fov),zfar:0>=S.far?.001:S.far,znear:0>S.near?0:S.near},S.name!==""&&(B.name=S.type),T.cameras.push(B)-1}processAnimation(S,T){var D=this.json,B=this.nodeMap;D.animations||(D.animations=[]),S=h.Utils.mergeMorphTargetTracks(S.clone(),T);for(var F=S.tracks,G=[],H=[],te=0;te<F.length;++te){var se=F[te],j=u.PropertyBinding.parseTrackName(se.name),z=u.PropertyBinding.findNode(T,j.nodeName),W=g[j.propertyName];if(j.objectName==="bones"&&(z.isSkinnedMesh===!0?z=z.skeleton.getBoneByName(j.objectIndex):z=void 0),!z||!W)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',se.name),null;var ee=1,q=se.values.length/se.times.length;W===g.morphTargetInfluences&&(q/=z.morphTargetInfluences.length);var $=void 0;se.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?($="CUBICSPLINE",q/=3):se.getInterpolation()===u.InterpolateDiscrete?$="STEP":$="LINEAR",H.push({input:this.processAccessor(new u.BufferAttribute(se.times,ee)),output:this.processAccessor(new u.BufferAttribute(se.values,q)),interpolation:$}),G.push({sampler:H.length-1,target:{node:B.get(z),path:W}})}return D.animations.push({name:S.name||"clip_"+D.animations.length,samplers:H,channels:G}),D.animations.length-1}processSkin(S){var T=this.json,D=this.nodeMap,B=T.nodes[D.get(S)],F=S.skeleton;if(F===void 0)return null;var G=S.skeleton.bones[0];if(G===void 0)return null;for(var H=[],te=new Float32Array(16*F.bones.length),se=new u.Matrix4,j=0;j<F.bones.length;++j)H.push(D.get(F.bones[j])),se.copy(F.boneInverses[j]),se.multiply(S.bindMatrix).toArray(te,16*j);T.skins===void 0&&(T.skins=[]),T.skins.push({inverseBindMatrices:this.processAccessor(new u.BufferAttribute(te,16)),joints:H,skeleton:D.get(G)});var z=B.skin=T.skins.length-1;return z}processNode(S){var T=this.json,D=this.options,B=this.nodeMap;T.nodes||(T.nodes=[]);var F={};if(D.trs){var G=S.quaternion.toArray(),H=S.position.toArray(),te=S.scale.toArray();E(G,[0,0,0,1])||(F.rotation=G),E(H,[0,0,0])||(F.translation=H),E(te,[1,1,1])||(F.scale=te)}else S.matrixAutoUpdate&&S.updateMatrix(),M(S.matrix)===!1&&(F.matrix=S.matrix.elements);if(S.name!==""&&(F.name=S.name+""),this.serializeUserData(S,F),S.isMesh||S.isLine||S.isPoints){var se=this.processMesh(S);se!==null&&(F.mesh=se)}else S.isCamera&&(F.camera=this.processCamera(S));if(S.isSkinnedMesh&&this.skins.push(S),0<S.children.length){for(var j,z=[],W=0,ee=S.children.length;W<ee;W++)if(j=S.children[W],j.visible||D.onlyVisible===!1){var q=this.processNode(j);q!==null&&z.push(q)}0<z.length&&(F.children=z)}this._invokeAll(function(Y){Y.writeNode&&Y.writeNode(S,F)});var $=T.nodes.push(F)-1;return B.set(S,$),$}processScene(S){var T=this.json,D=this.options;T.scenes||(T.scenes=[],T.scene=0);var B={};S.name!==""&&(B.name=S.name),T.scenes.push(B);for(var F,G=[],H=0,te=S.children.length;H<te;H++)if(F=S.children[H],F.visible||D.onlyVisible===!1){var se=this.processNode(F);se!==null&&G.push(se)}0<G.length&&(B.nodes=G),this.serializeUserData(S,B)}processObjects(S){var T=new u.Scene;T.name="AuxScene";for(var D=0;D<S.length;D++)T.children.push(S[D]);this.processScene(T)}processInput(S){var T=this.options;S=S instanceof Array?S:[S],this._invokeAll(function(H){H.beforeParse&&H.beforeParse(S)});for(var D=[],B=0;B<S.length;B++)S[B]instanceof u.Scene?this.processScene(S[B]):D.push(S[B]);0<D.length&&this.processObjects(D);for(var F=0;F<this.skins.length;++F)this.processSkin(this.skins[F]);for(var G=0;G<T.animations.length;++G)this.processAnimation(T.animations[G].clip,T.animations[G].mesh);this._invokeAll(function(H){H.afterParse&&H.afterParse(S)})}_invokeAll(S){for(var T=0,D=this.plugins.length;T<D;T++)S(this.plugins[T])}}class P{constructor(S){this.writer=S,this.name="KHR_lights_punctual"}writeNode(S,T){if(S.isLight){if(!S.isDirectionalLight&&!S.isPointLight&&!S.isSpotLight)return void console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",S);var D=this.writer,B=D.json,F=D.extensionsUsed,G={};S.name&&(G.name=S.name),G.color=S.color.toArray(),G.intensity=S.intensity,S.isDirectionalLight?G.type="directional":S.isPointLight?(G.type="point",0<S.distance&&(G.range=S.distance)):S.isSpotLight&&(G.type="spot",0<S.distance&&(G.range=S.distance),G.spot={},G.spot.innerConeAngle=-1*((S.penumbra-1)*S.angle),G.spot.outerConeAngle=S.angle),S.decay!==void 0&&S.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),S.target&&(S.target.parent!==S||S.target.position.x!==0||S.target.position.y!==0||S.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."),F[this.name]||(B.extensions=B.extensions||{},B.extensions[this.name]={lights:[]},F[this.name]=!0);var H=B.extensions[this.name].lights;H.push(G),T.extensions=T.extensions||{},T.extensions[this.name]={light:H.length-1}}}}class I{constructor(S){this.writer=S,this.name="KHR_materials_unlit"}writeMaterial(S,T){if(S.isMeshBasicMaterial){var D=this.writer,B=D.extensionsUsed;T.extensions=T.extensions||{},T.extensions[this.name]={},B[this.name]=!0,T.pbrMetallicRoughness.metallicFactor=0,T.pbrMetallicRoughness.roughnessFactor=.9}}}class N{constructor(S){this.writer=S,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(S,T){if(S.isGLTFSpecularGlossinessMaterial){var D=this.writer,B=D.extensionsUsed,F={};T.pbrMetallicRoughness.baseColorFactor&&(F.diffuseFactor=T.pbrMetallicRoughness.baseColorFactor);var G=[1,1,1];if(S.specular.toArray(G,0),F.specularFactor=G,F.glossinessFactor=S.glossiness,T.pbrMetallicRoughness.baseColorTexture&&(F.diffuseTexture=T.pbrMetallicRoughness.baseColorTexture),S.specularMap){var H={index:D.processTexture(S.specularMap)};D.applyTextureTransform(H,S.specularMap),F.specularGlossinessTexture=H}T.extensions=T.extensions||{},T.extensions[this.name]=F,B[this.name]=!0}}}h.Utils={insertKeyframe:function(S,T){var D,B=.001,F=S.getValueSize(),G=new S.TimeBufferType(S.times.length+1),H=new S.ValueBufferType(S.values.length+F),te=S.createInterpolant(new S.ValueBufferType(F));if(S.times.length===0){G[0]=T;for(var se=0;se<F;se++)H[se]=0;D=0}else if(T<S.times[0]){if(Math.abs(S.times[0]-T)<B)return 0;G[0]=T,G.set(S.times,1),H.set(te.evaluate(T),0),H.set(S.values,F),D=0}else if(T>S.times[S.times.length-1]){if(Math.abs(S.times[S.times.length-1]-T)<B)return S.times.length-1;G[G.length-1]=T,G.set(S.times,0),H.set(S.values,0),H.set(te.evaluate(T),S.values.length),D=G.length-1}else for(var j=0;j<S.times.length;j++){if(Math.abs(S.times[j]-T)<B)return j;if(S.times[j]<T&&S.times[j+1]>T){G.set(S.times.slice(0,j+1),0),G[j+1]=T,G.set(S.times.slice(j+1),j+2),H.set(S.values.slice(0,(j+1)*F),0),H.set(te.evaluate(T),(j+1)*F),H.set(S.values.slice((j+1)*F),(j+2)*F),D=j+1;break}}return S.times=G,S.values=H,D},mergeMorphTargetTracks:function(S,T){for(var D=[],B={},F=S.tracks,G=0;G<F.length;++G){var H=F[G],te=u.PropertyBinding.parseTrackName(H.name),se=u.PropertyBinding.findNode(T,te.nodeName);if(te.propertyName!=="morphTargetInfluences"||te.propertyIndex===void 0){D.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(u.InterpolateLinear)}var j=se.morphTargetInfluences.length,z=se.morphTargetDictionary[te.propertyIndex];if(z===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+te.propertyIndex);var W=void 0;if(B[se.uuid]===void 0){W=H.clone();for(var ee=new W.ValueBufferType(j*W.times.length),q=0;q<W.times.length;q++)ee[q*j+z]=W.values[q];W.name=(te.nodeName||"")+".morphTargetInfluences",W.values=ee,B[se.uuid]=W,D.push(W);continue}var $=H.createInterpolant(new H.ValueBufferType(1));W=B[se.uuid];for(var Y=0;Y<W.times.length;Y++)W.values[Y*j+z]=$.evaluate(W.times[Y]);for(var K,ie=0;ie<H.times.length;ie++)K=this.insertKeyframe(W,H.times[ie]),W.values[K*j+z]=H.values[ie]}return S.tracks=D,S}}},(o,l,c)=>{var u=c(4),h=c(5).resolveURL,f=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 _=this;this.setFromObject=M=>{var{nearPlane:x,farPlane:C,eyePosition:A,targetPosition:L,upVector:R}=M;_.nearPlane=x,_.farPlane=C,_.eyePosition=A,_.targetPosition=L,_.upVector=R}},m=function(_,M,x,C){var A={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},L={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6},R={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},P={};P.MAIN=L.ROTATE,P.AUXILIARY=L.ZOOM,P.SECONDARY=L.PAN,this.cameraObject=_,this.domElement=M===void 0?document:M,this.renderer=x,this.scene=C,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.scrollRate=50,this.pixelHeight=1;var I=6e3,N=!0,O=0,S=void 0,T=void 0,D=!1,B=500,F=void 0,G="default",H=A.DEFAULT,te=void 0,se=void 0,j=void 0,z=0,W=R.FREE;this._state=L.NONE;var ee;this.targetTouchId=-1;var q=void 0,$=new u.Vector3,Y=new u.Vector3,K=new u.Vector3,ie=new u.Vector3,k=new u.Vector3,Z=new u.Vector3,Q=new u.Vector3,V=new u.Vector3,U=new u.Sphere,oe=new u.Vector3,ae=void 0,le=0,fe={default:new f};fe.default.nearPlane=.1,fe.default.farPlane=2e3,fe.default.eyePosition=[0,0,0],fe.default.targetPosition=[0,0,-1],fe.default.upVector=[0,1,0],this.cameraObject.target===void 0&&(this.cameraObject.target=new u.Vector3(...fe.default.targetPosition)),this.calculateMaxAllowedDistance=ne=>{var Me=ne.getBoundingBox();if(Me){Me.getBoundingSphere(U),le=6*U.radius;var Te=0;this.cameraObject&&(Te=this.cameraObject.position.distanceTo(U.center)),le=Te>le?Te:le}else le=0},this.addViewport=(ne,Me)=>{ne&&Me&&(fe[ne]=Me)},this.setDefaultViewport=ne=>!!(ne&&ne in fe)&&(G=ne,!0),this.getDefaultViewport=()=>G,this.getViewportOfName=ne=>fe[ne],this.setCurrentViewport=ne=>ne in fe&&(this.setCurrentCameraSettings(fe[ne]),!0),this.setRotationMode=ne=>{switch(ne){case"none":W=R.NONE;break;case"horizontal":W=R.HORIZONTAL;break;case"vertical":W=R.VERTICAL;break;case"free":default:W=R.FREE}},this.onResize=()=>{q&&(q=void 0),ae&&ae.setCurrentCameraSettings(this.cameraObject,fe[G])},this.getVisibleHeightAtZDepth=ne=>{var Me=this.cameraObject.position.distanceTo(this.cameraObject.target);ne<Me?ne-=Me:ne+=Me;var Te=this.cameraObject.fov*Math.PI/180;return 2*Math.tan(Te/2)*Math.abs(ne)},this.calculateHeightPerPixelAtZeroDepth=ne=>{var Me=this.getVisibleHeightAtZDepth(0);return this.pixelHeight=Me/ne,this.pixelHeight},this.getNDCFromDocumentCoords=(ne,Me,Te)=>{Ze(!1);var Ie=Te||new u.Vector2,Ye=2*((ne-q.left)/q.width)-1,ot=2*-((Me-q.top)/q.height)+1;return Ie.set(Ye,ot)},this.getRelativeCoordsFromNDC=(ne,Me,Te)=>{Ze(!1);var Ie=Te||new u.Vector2;return Ie.x=(ne+1)*q.width/2,Ie.y=(1-Me)*q.height/2,Ie},this.setMouseButtonAction=(ne,Me)=>{P[ne]=L[Me]};var be=()=>{if(0<le){var ne=oe.distanceTo(U.center);return le>ne||this.cameraObject.position.distanceTo(U.center)>ne}return!0},we=ne=>{oe.copy(this.cameraObject.position).add(ne),be()&&(this.cameraObject.target.add(ne),this.cameraObject.position.add(ne),this.updateDirectionalLight())},ue=ne=>{Ze(!1);var Me;if(H===A.DEFAULT&&(Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne)),!Me)ne.button==0?ne.ctrlKey?this._state=P.AUXILIARY:ne.shiftKey?this._state=P.SECONDARY:this._state=P.MAIN:ne.button==1?(ne.preventDefault(),this._state=P.AUXILIARY):ne.button==2&&(this._state=P.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{H=A.MINIMAP;var Te=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);we(Te)}},ge=ne=>{if(Ze(!1),q)if(this.pointer_x=ne.clientX-q.left,this.pointer_y=ne.clientY-q.top,H===A.MINIMAP){var Me=this.scene.getNormalisedMinimapCoordinates(this.renderer,ne);if(Me){var Te=this.scene.getMinimapDiffFromNormalised(Me.x,Me.y);we(Te)}}else this._state===L.NONE&&ee!==void 0&&ee.move(this,ne.clientX,ne.clientY,this.renderer)},re=ne=>{this._state=L.NONE,H==A.MINIMAP&&(H=A.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)},xe=ne=>{this._state=L.NONE},de=ne=>{Ze(!1);var Me=ne.touches.length;if(Me==1)this._state=L.TOUCH_ROTATE,this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].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 if(Me==2){this._state=L.TOUCH_ZOOM;var Te=ne.touches[0].clientX-ne.touches[1].clientX,Ie=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=this.touchZoomDistanceStart=Math.sqrt(Te*Te+Ie*Ie)}else Me==3&&(this._state=L.TOUCH_PAN,this.targetTouchId=ne.touches[0].identifier,this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y)},me=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===L.TOUCH_ZOOM){var Te=ne.touches[0].clientX-ne.touches[1].clientX,Ie=ne.touches[0].clientY-ne.touches[1].clientY;this.touchZoomDistanceEnd=Math.sqrt(Te*Te+Ie*Ie)}}else if(Me==3&&this._state===L.TOUCH_PAN)for(var Ye=0;3>Ye;Ye++)ne.touches[Ye].identifier==this.targetTouchId&&(this.pointer_x=ne.touches[0].clientX-q.left,this.pointer_y=ne.touches[0].clientY-q.top)},_e=ne=>{var Me=ne.touches.length;this.touchZoomDistanceStart=this.touchZoomDistanceEnd=0,this.targetTouchId=-1,this._state=L.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)},He=()=>{Ze(!0)},Ze=ne=>{if(ne||q===void 0){var Me=new IntersectionObserver(Te=>{for(var Ie of Te)q=Ie.boundingClientRect;Me.disconnect()});Me.observe(this.domElement)}},Pe=ne=>{Ze(!1),this._state=L.SCROLL;var Me=0;0<ne.deltaY?Me=this.scrollRate:0>ne.deltaY&&(Me=-1*this.scrollRate),z+=Me,ne.preventDefault(),ne.stopImmediatePropagation()},ut=()=>{if(typeof this.cameraObject<"u"){var ne=q.height,Me=this.cameraObject.position.distanceTo(this.cameraObject.target),Te=0;this.cameraObject.far>this.cameraObject.near&&Me>=this.cameraObject.near&&Me<=this.cameraObject.far&&(Te=(Me-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),Y.set(this.previous_pointer_x,ne-this.previous_pointer_y,0),K.set(this.previous_pointer_x,ne-this.previous_pointer_y,1),ie.set(this.pointer_x,ne-this.pointer_y,0),k.set(this.pointer_x,ne-this.pointer_y,1),Y.unproject(this.cameraObject),K.unproject(this.cameraObject),ie.unproject(this.cameraObject),k.unproject(this.cameraObject);var Ie=-.002;ie.sub(Y).multiplyScalar(1-Te),k.sub(K).multiplyScalar(Te),ie.add(k).multiplyScalar(Ie),we(ie)}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y};this.getVectorsFromRotateAboutLookAtPoints=(ne,Me)=>{ne.normalize(),Q.copy(this.cameraObject.position).sub(this.cameraObject.target),V.copy(Q),Q.normalize(),.8<Math.abs(Q.dot(ne))&&Q.copy(this.cameraObject.up),Y.crossVectors(ne,Q).normalize(),K.crossVectors(ne,Y);var Te=ne.dot(V),Ie=Y.dot(V),Ye=K.dot(V),ot=ne.dot(this.cameraObject.up),it=Y.dot(this.cameraObject.up),pt=K.dot(this.cameraObject.up),Et=Math.cos(Me),rn=Math.sin(Me);return ie.set(Et*Y.x+rn*K.x,Et*Y.y+rn*K.y,Et*Y.z+rn*K.z),k.set(Et*K.x-rn*Y.x,Et*K.y-rn*Y.y,Et*K.z-rn*Y.z),Q.copy(this.cameraObject.target),Q.x=Q.x+ne.x*Te+ie.x*Ie+k.x*Ye,Q.y=Q.y+ne.y*Te+ie.y*Ie+k.y*Ye,Q.z=Q.z+ne.z*Te+ie.z*Ie+k.z*Ye,$.set(ne.x*ot+ie.x*it+k.x*pt,ne.y*ot+ie.y*it+k.y*pt,ne.z*ot+ie.z*it+k.z*pt),{position:Q,up:$}},this.rotateAboutLookAtpoint=(ne,Me)=>{var Te=this.getVectorsFromRotateAboutLookAtPoints(ne,Me);this.cameraObject.position.copy(Te.position),this.updateDirectionalLight(),this.cameraObject.up.copy(Te.up)};var Re=()=>{if(typeof this.cameraObject<"u"){var ne=q.width,Me=q.height;if(0<ne&&0<Me){var Te=.25*(ne+Me),Ie=0,Ye=0;(W===R.FREE||W===R.HORIZONTAL)&&(Ie=this.pointer_x-this.previous_pointer_x),(W===R.FREE||W===R.VERTICAL)&&(Ye=this.previous_pointer_y-this.pointer_y);var ot=Math.sqrt(Ie*Ie+Ye*Ye);if(0<ot){var it=1*-Ye/ot,pt=1*Ie/ot,Et=0;W===R.FREE&&it*(this.pointer_x-.5*(ne-1))+pt*(.5*(Me-1)-this.pointer_y);var rn=Math.acos(Et/Te)-.5*Math.PI,J=this.tumble_rate*ot/Te;$.copy(this.cameraObject.position).sub(this.cameraObject.target).normalize(),Y.copy(this.cameraObject.up).normalize(),K.copy(Y).cross($).normalize().multiplyScalar(it),Y.multiplyScalar(pt),Z.addVectors(K,Y).multiplyScalar(Math.cos(rn)),$.multiplyScalar(Math.sin(rn)),Z.add($),this.rotateAboutLookAtpoint(Z,-J)}}}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y},Je=()=>{var ne=0;return this._state===L.ZOOM?ne=this.previous_pointer_y-this.pointer_y:this._state===L.SCROLL?ne=z:(ne=-1*(this.touchZoomDistanceEnd-this.touchZoomDistanceStart),this.touchZoomDistanceStart=this.touchZoomDistanceEnd),ne};this.changeZoomByScrollRateUnit=ne=>{var Me=ne*this.scrollRate;this.changeZoomByValue(Me)},this.changeZoomByValue=ne=>{if(typeof this.cameraObject<"u"){q.width;var Me=q.height,Te=this.cameraObject.position.clone();Te.sub(this.cameraObject.target);var Ie=Te.length(),Ye=1.5*ne/Me;if(.01<Ie+Ye*Ie&&(Te.normalize(),oe.copy(this.cameraObject.position),oe.x+=Te.x*Ye*Ie,oe.y+=Te.y*Ye*Ie,oe.z+=Te.z*Ye*Ie,be())){this.cameraObject.position.copy(oe),this.updateDirectionalLight();var ot=1e-5;if(ot*this.cameraObject.far<this.cameraObject.near+Ye*Ie+this.near_plane_fly_debt)this.near_plane_fly_debt!=0&&(this.near_plane_fly_debt+=Ye*Ie,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+=Ye*Ie,this.cameraObject.far+=Ye*Ie));else{if(this.near_plane_fly_debt==0){var it=this.cameraObject.near-ot*this.cameraObject.far;this.cameraObject.near=ot*this.cameraObject.far,this.cameraObject.far-=it,this.near_plane_fly_debt-=ot*this.cameraObject.far}this.near_plane_fly_debt+=Ye*Ie}}}};var Xe=()=>{var ne=Je();this.changeZoomByValue(ne),this._state===L.ZOOM&&(this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y),this._state===L.SCROLL&&(z=0,this._state=L.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&&(this.domElement.addEventListener("mousedown",ue,!1),this.domElement.addEventListener("mousemove",ge,!1),this.domElement.addEventListener("mouseup",re,!1),this.domElement.addEventListener("mouseleave",xe,!1),this.domElement.addEventListener("touchstart",de,!1),this.domElement.addEventListener("touchmove",me,!1),this.domElement.addEventListener("touchend",_e,!1),this.domElement.addEventListener("wheel",Pe,!1),this.domElement.addEventListener("contextmenu",ne=>{ne.preventDefault()},!1),this.domElement.addEventListener("mouseenter",He,!1))},this.disable=function(){N=!1,this.domElement&&this.domElement.removeEventListener&&(this.domElement.removeEventListener("mousedown",ue,!1),this.domElement.removeEventListener("mousemove",ge,!1),this.domElement.removeEventListener("mouseup",re,!1),this.domElement.removeEventListener("mouseleave",xe,!1),this.domElement.removeEventListener("touchstart",de,!1),this.domElement.removeEventListener("touchmove",me,!1),this.domElement.removeEventListener("touchend",_e,!1),this.domElement.removeEventListener("wheel",Pe,!1),this.domElement.removeEventListener("mouseenter",He,!1),this.domElement.removeEventListener("contextmenu",ne=>{ne.preventDefault()},!1))},this.loadPath=ne=>{S=ne.CameraPath,T=ne.NumberOfPoints},this.loadPathURL=(ne,Me)=>{var Te=new XMLHttpRequest;Te.onreadystatechange=()=>{if(Te.readyState==4&&Te.status==200){var Ye=JSON.parse(Te.responseText);this.loadPath(Ye),Me!=null&&typeof Me=="function"&&Me()}};var Ie=h(ne);Te.open("GET",Ie,!0),Te.send()},this.setPathDuration=ne=>{I=ne,te&&te.setDuration(I),se&&se.setDuration(I)},this.getPlayRate=()=>B,this.setPlayRate=ne=>{B=ne};var lt=ne=>{var Me=O+ne;Me>I&&(Me-=I),O=Me};this.getTime=()=>O,this.setTime=ne=>{O=ne>I?I:0>ne?0:ne},this.getNumberOfTimeFrame=()=>T,this.getCurrentTimeFrame=()=>{if(2<T){var ne=O/I*(T-1),Me=Math.floor(ne),Te=1-(ne-Me),Ie=Math.ceil(ne);return Me==Ie?Me==T-1?[Me-1,Ie,0]:[Me,Ie+1,1]:[Me,Ie,Te]}return T==1?[0,0,0]:void 0},this.setCurrentTimeFrame=ne=>{2<T&&(O=I*ne/(T-1),0>O&&(O=0),O>I&&(O=I))};var tt=ne=>{if(H===A.PATH&&(lt(ne),S)){for(var Me=this.getCurrentTimeFrame(),Te=Me[0],Ie=Me[1],Ye=Me[2],ot=[S[3*Te],S[3*Te+1],S[3*Te+2]],it=[S[3*Ie],S[3*Ie+1],S[3*Ie+2]],pt=[],Et=0;Et<ot.length;Et++)pt.push(Ye*ot[Et]+(1-Ye)*it[Et]);this.cameraObject.position.set(pt[0],pt[1],pt[2]),this.cameraObject.target.set(it[0],it[1],it[2]),F&&this.cameraObject.lookAt(this.cameraObject.target),D&&(this.directionalLight.position.set(pt[0],pt[1],pt[2]),this.directionalLight.target.position.set(it[0],it[1],it[2]))}};this.calculatePathNow=()=>{tt(0)};var kt=()=>{this._state===L.ROTATE||this._state===L.TOUCH_ROTATE?Re():this._state===L.PAN||this._state===L.TOUCH_PAN?(ut(),ae.triggerCallback()):(this._state===L.ZOOM||this._state===L.TOUCH_ZOOM||this._state===L.SCROLL)&&(ae.zoom(Je()),this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y,this._state===L.SCROLL&&(this._state=L.NONE),z=0,ae.triggerCallback())};this.update=ne=>{var Me=ne*B,Te=N,Ie=!0;return H===A.PATH?tt(Me):H===A.SMOOTH_CAMERA_TRANSITION&&te?(te.update(Me),te.isTransitionCompleted()&&(H=A.DEFAULT),Te=!1):H===A.ROTATE_CAMERA_TRANSITION&&se?(se.update(Me),se.isTransitionCompleted()&&(H=A.DEFAULT),Te=!1):H===A.AUTO_TUMBLE&&j?j.update(Me):H===A.SYNC_CONTROL&&ae?(kt(),Te=!1):Ie=!1,Te&&(this._state!==L.NONE&&(Ie=!0),this._state===L.ROTATE||this._state===L.TOUCH_ROTATE?Re():this._state===L.PAN||this._state===L.TOUCH_PAN?ut():(this._state===L.ZOOM||this._state===L.TOUCH_ZOOM||this._state===L.SCROLL)&&Xe(),this._state!==L.NONE&&H===A.AUTO_TUMBLE&&j&&j.stopOnCameraInput,this._state===L.SCROLL&&(this._state=L.NONE)),F?(Ie=!0,F.update()):this.cameraObject.lookAt(this.cameraObject.target),Ie},this.playPath=()=>{H=A.PATH},this.stopPath=()=>{H=A.DEFAULT},this.isPlayingPath=()=>H===A.PATH,this.enableDirectionalLightUpdateWithPath=ne=>{D=ne},this.enableDeviceOrientation=()=>{F||(F=new w(this.cameraObject))},this.disableDeviceOrientation=()=>{F&&(F.dispose(),F=void 0)},this.isDeviceOrientationEnabled=()=>!!F,this.resetView=()=>{var ne=fe[G];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()},this.getViewportFromCentreAndRadius=(ne,Me,Te,Ie,Ye,ot)=>{var it=this.cameraObject.position.x-this.cameraObject.target.x,pt=this.cameraObject.position.y-this.cameraObject.target.y,Et=this.cameraObject.position.z-this.cameraObject.target.z,rn=1/Math.sqrt(it*it+pt*pt+Et*Et);it*=rn,pt*=rn,Et*=rn;var J=[ne,Me,Te],pe=Ie/Math.tan(Ye*Math.PI/360),he=[ne+it*pe,Me+pt*pe,Te+Et*pe],ve=pe+ot,Ee=0,ce=.95;Ee=ot>ce*pe?(1-ce)*pe:pe-ot;var ye=new f;return ye.nearPlane=Ee,ye.farPlane=ve,ye.eyePosition=he,ye.targetPosition=J,ye.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],ye},this.getViewportFromBoundingBox=(ne,Me)=>{var Te=ne.min.distanceTo(ne.max)/2*Me,Ie=(ne.min.x+ne.max.x)/2,Ye=(ne.min.y+ne.max.y)/2,ot=(ne.min.z+ne.max.z)/2,it=4,pt=this.getViewportFromCentreAndRadius(Ie,Ye,ot,Te,40,Te*it);return pt},this.getCurrentViewport=()=>{var ne=new f;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,Te)=>{se==null&&(te=new g(ne,Me,this,Te))},this.rotateCameraTransition=(ne,Me,Te)=>{te==null&&(se=new d(ne,Me,this,Te))},this.enableCameraTransition=()=>{te&&(H=A.SMOOTH_CAMERA_TRANSITION),se&&(H=A.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{H=A.DEFAULT},this.stopCameraTransition=()=>{H=A.DEFAULT,te=void 0,se=void 0},this.isTransitioningCamera=()=>H===A.SMOOTH_CAMERA_TRANSITION||H===A.ROTATE_CAMERA_TRANSITION,this.autoTumble=(ne,Me,Te)=>{j=new b(ne,Me,Te,this)},this.enableAutoTumble=()=>{H=A.AUTO_TUMBLE},this.stopAutoTumble=()=>{H=A.DEFAULT,j=void 0},this.updateAutoTumble=()=>{j&&(j.requireUpdate=!0)},this.isAutoTumble=()=>H===A.AUTO_TUMBLE,this.enableRaycaster=(ne,Me,Te)=>{ee==null&&(ee=new p(ne,this.scene,Me,Te,this.renderer))},this.disableRaycaster=()=>{ee.disable(),ee=void 0},this.isSyncControl=()=>currentMpde===A.SYNC_CONTROL,this.enableSyncControl=()=>(H=A.SYNC_CONTROL,ae||(ae=new E),ae.setCurrentCameraSettings(this.cameraObject,fe[G]),ae),this.disableSyncControl=()=>{H=A.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},g=function(M,x,C,A){var L=M.eyePosition,R=M.targetPosition,P=M.upVector,I=x.eyePosition,N=x.targetPosition,O=x.upVector,S=C,T=A,D=0,B=!1;S.near=Math.min(M.nearPlane,x.nearPlane),S.far=Math.max(M.farPlane,x.farPlane),S.cameraObject.up.set(x.upVector[0],x.upVector[1],x.upVector[2]),this.setDuration=H=>{T=H};var F=H=>{var te=D+H;te>T&&(te=T),D=te},G=()=>{var H=D/T,te=[L[0]*(1-H)+I[0]*H,L[1]*(1-H)+I[1]*H,L[2]*(1-H)+I[2]*H],se=[R[0]*(1-H)+N[0]*H,R[1]*(1-H)+N[1]*H,R[2]*(1-H)+N[2]*H];P[0]*(1-H)+O[0]*H,P[1]*(1-H)+O[1]*H,P[2]*(1-H)+O[2]*H,S.cameraObject.position.set(te[0],te[1],te[2]),S.cameraObject.target.set(se[0],se[1],se[2])};this.update=H=>{this.enabled===!1||(F(H),G(),D==T&&(B=!0))},this.isTransitionCompleted=()=>B},d=function(M,x,C,A){var L=M,R=x,P=C,I=A,N=0,O=!1;this.setDuration=T=>{I=T};var S=T=>{var D=N,B=N+T;B>I&&(B=I),N=B;var F=N-D,G=F/I,H=G*R;P.rotateAboutLookAtpoint(L,H)};this.update=T=>{this.enabled===!1||(S(T),N==I&&(O=!0))},this.isTransitionCompleted=()=>O},p=function(M,x,C,A,L){var R=M,P=x,I=L,N=C,O=A,S=new u.Raycaster;S.params.Line.threshold=.1,S.params.Points.threshold=1;var T=new u.Vector2,D=!1,B=new Date,F=!1,G=0,H=[],te={zincCamera:void 0,x:-1,y:-1};this.enable=()=>{enable=!0},this.disable=()=>{enable=!1};var se=(W,ee,q)=>{if(W.getNDCFromDocumentCoords(ee,q,T),P!==R){var $=R.getThreeJSScene();I.render($,W.cameraObject)}S.setFromCamera(T,W.cameraObject);var Y=R.getPickableThreeJSObjects();return H.length=0,S.intersectObjects(Y,!0,H)};this.pick=(W,ee,q)=>{if(I&&R&&W&&N){se(W,ee,q);for(var $,Y=H.length,K=0;K<Y;K++)if($=H[K].object?H[K].object.userData:void 0,$&&$.isMarkerCluster&&$.visible&&$.clusterIsVisible(H[K].object.clusterIndex))return void $.zoomToCluster(H[K].object.clusterIndex);N(H,ee,q)}};var j=(W,ee,q)=>{if(I&&R&&W&&O){if(se(W,ee,q),B.setTime(Date.now()),H.length===0){if(F)return;F=!0}else F=!1;O(H,ee,q)}};this.move=(W,ee,q)=>{I&&R&&W&&O&&(R.displayMarkers?j(W,ee,q):(te.zincCamera=W,te.x=ee,te.y=q,!D&&(G=B?Date.now()-B.getTime():250,250<=G?j(W,ee,q):(D=!0,setTimeout(z(te),G)))))};var z=W=>function(){D=!1,j(W.zincCamera,W.x,W.y)}},b=function(M,x,C,A){var L=new u.Vector3,R=-x,P=A,I=M;this.stopOnCameraInput=C,this.requireUpdate=!0;var N=new u.Vector3,O=new u.Vector3,S=T=>{var D=Math.sqrt(T[0]*T[0]+T[1]*T[1]),B=4*Math.abs(T[0]),F=4*Math.abs(T[1]),G=.25*(B+F),H=-T[1]/D,te=T[0]/D,se=H*T[0]+te*-T[1];se>G?se=G:se<-G&&(se=-G);var j=Math.acos(se/G)-.5*Math.PI;L.copy(P.cameraObject.position).sub(P.cameraObject.target).normalize(),N.copy(P.cameraObject.up).normalize(),O.crossVectors(N,L).normalize().multiplyScalar(H),N.multiplyScalar(te),N.add(O).multiplyScalar(Math.cos(j)),L.multiplyScalar(Math.sin(j)).add(N)};this.update=T=>{this.enabled===!1||(this.requireUpdate&&(S(I),this.requireUpdate=!1),P.rotateAboutLookAtpoint(L,R*T/1e3))}},y=function(){this.type="StereoCamera",this.aspect=1,this.cameraL=new u.PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new u.PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1};Object.assign(y.prototype,{update:(()=>{var _,M,x,C,A,L,R=new u.Matrix4,P=new u.Matrix4;return function(N){var O=_!==N.focus||M!==N.fov||x!==N.aspect*this.aspect||C!==N.near||A!==N.far||L!==N.zoom;if(O){_=N.focus,M=N.fov,x=N.aspect*this.aspect,C=N.near,A=N.far,L=N.zoom;var S,T,D=N.projectionMatrix.clone(),B=.064/2,F=B*C/_,G=C*Math.tan(.5*(u.Math.DEG2RAD*M))/N.zoom;P.elements[12]=-B,R.elements[12]=B,S=-G*x+F,T=G*x+F,D.elements[0]=2*C/(T-S),D.elements[8]=(T+S)/(T-S),this.cameraL.projectionMatrix.copy(D),S=-G*x-F,T=G*x-F,D.elements[0]=2*C/(T-S),D.elements[8]=(T+S)/(T-S),this.cameraR.projectionMatrix.copy(D)}this.cameraL.matrixWorld.copy(N.matrixWorld).multiply(P),this.cameraR.matrixWorld.copy(N.matrixWorld).multiply(R)}})()});var v=function(M){var x=new y;x.aspect=.5,this.setSize=(C,A)=>{M.setSize(C,A)},this.render=(C,A)=>{C.updateMatrixWorld(),A.parent===null&&A.updateMatrixWorld(),x.update(A);var L=M.getSize();M.setScissorTest(!0),M.clear(),M.setScissor(0,0,L.width/2,L.height),M.setViewport(0,0,L.width/2,L.height),M.render(C,x.cameraL),M.setScissor(L.width/2,0,L.width/2,L.height),M.setViewport(L.width/2,0,L.width/2,L.height),M.render(C,x.cameraR),M.setScissorTest(!1)}},w=function(M){var x=this;this.object=M,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var C=R=>{x.deviceOrientation=R},A=()=>{typeof window<"u"&&(x.screenOrientation=window.orientation||0)},L=(()=>{var R=new u.Vector3(0,0,1),P=new u.Euler,I=new u.Quaternion,N=new u.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return(O,S,T,D,B)=>{var F=new u.Vector3(0,0,1);F.subVectors(O.target,O.position),P.set(T,S,-D,"YXZ");var G=new u.Quaternion;G.setFromEuler(P),G.multiply(N),G.multiply(I.setFromAxisAngle(R,-B)),F.applyQuaternion(G),F.addVectors(O.position,F),O.lookAt(F)}})();this.connect=()=>{A(),typeof window<"u"&&(window.addEventListener("orientationchange",A,!1),window.addEventListener("deviceorientation",C,!1)),x.enabled=!0},this.disconnect=()=>{typeof window<"u"&&(window.removeEventListener("orientationchange",A,!1),window.removeEventListener("deviceorientation",C,!1)),x.enabled=!1},this.update=()=>{if(x.enabled!==!1){var R=x.deviceOrientation.alpha?u.Math.degToRad(x.deviceOrientation.alpha):0,P=x.deviceOrientation.beta?u.Math.degToRad(x.deviceOrientation.beta):0,I=x.deviceOrientation.gamma?u.Math.degToRad(x.deviceOrientation.gamma):0,N=x.screenOrientation?u.Math.degToRad(x.screenOrientation):0;L(x.object,R,P,I,N)}},this.dispose=function(){this.disconnect()},this.connect()},E=function(){var M=void 0,x=void 0,C=void 0,A=new u.Vector3,L=new u.Vector3,R=new u.Vector3,P=new u.Vector3,I=void 0;this.setCurrentCameraSettings=(N,O)=>{M=N.clone(),x=N,C=O,M.near=C.nearPlane,C.farPlane&&(M.far=C.farPlane),C.eyePosition&&M.position.set(C.eyePosition[0],C.eyePosition[1],C.eyePosition[2]),C.upVector&&M.up.set(C.upVector[0],C.upVector[1],C.upVector[2]),C.targetPosition&&(M.target=new u.Vector3(C.targetPosition[0],C.targetPosition[1],C.targetPosition[2]),M.lookAt(M.target)),M.updateProjectionMatrix(),A.copy(M.position).project(M),L.copy(M.target).project(M)},this.getCurrentPosition=()=>(L.copy(x.target).project(M),[L.x,L.y]),this.zoom=N=>{var O=.002*N,S=Math.max(x.zoom-O,1);x.zoom=S,x.updateProjectionMatrix()},this.zoomToBox=(N,O)=>{N.getCenter(R),R.project(M),this.setCenterZoom([R.x,R.y],O)},this.getPanZoom=()=>({target:this.getCurrentPosition(),zoom:x.zoom}),this.setCenterZoom=(N,O)=>{R.set(N[0],N[1],L.z).unproject(M),P.copy(R).sub(x.target),x.target.copy(R),x.lookAt(x.target),x.position.add(P),x.zoom=O,x.updateProjectionMatrix()},this.setEventCallback=N=>{(N===void 0||typeof N=="function")&&(I=N)},this.triggerCallback=()=>{I!==void 0&&typeof I=="function"&&I()}};l.Viewport=f,l.CameraControls=m,l.SmoothCameraTransition=g,l.RotateCameraTransition=d,l.RayCaster=p,l.CameraAutoTumble=b,l.StereoEffect=v,l.NDCCameraControl=E},(o,l,c)=>{var{Group:u,Matrix4:h}=c(4),f=c(22).Pointset;c(24).Lines;var m=c(45).Lines2,g=c(3).Geometry,d=c(4),p=0,b=function(){return"re"+p++},y=function(v,w){var E=v,_=new u;_.matrixAutoUpdate=!1,_.userData=this;var M=[],x="",C=[],A=w,L=new h,R=3e3;L.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=()=>{M.forEach(P=>P.hideAllPrimitives()),C.forEach(P=>P.setVisibility(!1))},this.showAllPrimitives=()=>{M.forEach(P=>P.showAllPrimitives()),C.forEach(P=>P.setVisibility(!0))},this.setVisibility=P=>{P!=_.visible&&(_.visible=P,this.pickableUpdateRequired=!0)},this.getVisibility=()=>_.visible,this.getGroup=()=>_,this.setTransformation=P=>{L.set(...P),_.matrix.copy(L),_.updateMatrixWorld()},this.setName=P=>{P&&P!==""&&(x=P)},this.getName=()=>x,this.getParent=()=>E,this.getFullSeparatedPath=()=>{var P=[];if(x!==""){P.push(x);for(var I,N=E;N!==void 0;)I=N.getName(),I!==""&&P.unshift(I),N=N.getParent()}return P},this.getFullPath=()=>{var P=this.getFullSeparatedPath();if(0<P.length){var I=P.shift();return P.forEach(N=>{I=I.concat("/",N)}),I}return""},this.createChild=P=>{var I=new y(this,A);return I.setName(P),M.push(I),_.add(I.getGroup()),I},this.getChildWithName=P=>{if(P){for(var I=P.toLowerCase(),N=0;N<M.length;N++)if(M[N].getName().toLowerCase()===I)return M[N]}},this.findChildFromSeparatedPath=P=>{if(P&&0<P.length&&P[0]===""&&P.shift(),P&&0<P.length){var I=this.getChildWithName(P[0]);return I?(P.shift(),I.findChildFromSeparatedPath(P)):void 0}return this},this.findChildFromPath=P=>{var I=P.split("/");return this.findChildFromSeparatedPath(I)},this.createChildFromSeparatedPath=P=>{if(0<P.length&&P[0]===""&&P.shift(),0<P.length){var I=this.getChildWithName(P[0]);return I||(I=this.createChild(P[0])),P.shift(),I.createChildFromSeparatedPath(P)}return this},this.createChildFromPath=P=>{var I=P.split("/");return this.createChildFromSeparatedPath(I)},this.findOrCreateChildFromPath=P=>{var I=this.findChildFromPath(P);return I||(I=this.createChildFromPath(P)),I},this.addZincObject=P=>{P&&(P.setRegion(this),_.add(P.getGroup()),C.push(P),this.pickableUpdateRequired=!0,A&&A.triggerObjectAddedCallback(P))},this.removeZincObject=P=>{for(var I=0;I<C.length;I++)if(P===C[I])return _.remove(P.getGroup()),C.splice(I,1),A&&A.triggerObjectRemovedCallback(P),P.dispose(),void(this.pickableUpdateRequired=!0)},this.checkPickableUpdateRequred=P=>{if(this.pickableUpdateRequired)return!0;if(P){for(var I=!1,N=0;N<M.length;N++)if(I=M[N].checkPickableUpdateRequred(P),I)return!0}return!1},this.getPickableThreeJSObjects=(P,I)=>(_.visible&&(C.forEach(N=>{if(N.getGroup()&&N.getGroup().visible){var O=N.marker;O&&O.isEnabled()&&P.push(O.getMorph()),P.push(N.getGroup())}}),I&&M.forEach(N=>{N.getPickableThreeJSObjects(P,I)}),this.pickableUpdateRequired=!1),P),this.setDuration=P=>{R=P,C.forEach(I=>I.setDuration(P)),M.forEach(I=>I.setDuration(P))},this.getDuration=()=>R,this.getBoundingBox=P=>{var I,N;return C.forEach(O=>{N=O.getBoundingBox(),N&&(I==null?I=N.clone():I.union(N))}),P&&M.forEach(O=>{N=O.getBoundingBox(P),N&&(I==null?I=N.clone():I.union(N))}),I},this.clear=P=>{P&&M.forEach(I=>I.clear(P)),C.forEach(I=>{_.remove(I.getGroup()),I.dispose()}),M=[],C=[]},this.objectIsInRegion=(P,I)=>{for(var N=0;N<C.length;N++)if(P===C[N])return!0;if(I){for(var O=0;O<M.length;O++)if(M[O].objectIsInRegion(P,I))return!0}return!1},this.forEachGeometry=(P,I)=>{C.forEach(N=>{N.isGeometry&&P(N)}),I&&M.forEach(N=>N.forEachGeometry(P,I))},this.forEachGlyphset=(P,I)=>{C.forEach(N=>{N.isGlyphset&&P(N)}),I&&M.forEach(N=>N.forEachGlyphset(P,I))},this.forEachPointset=(P,I)=>{C.forEach(N=>{N.isPointset&&P(N)}),I&&M.forEach(N=>N.forEachPointset(P,I))},this.forEachLine=(P,I)=>{C.forEach(N=>{N.isLines&&P(N)}),I&&M.forEach(N=>N.forEachLine(P,I))},this.findObjectsWithAnatomicalId=(P,I)=>(C.forEach(N=>{N.anatomicalId===P&&objectsArray.push(N)}),I&&M.forEach(N=>{var O=N.findObjectsWithAnatomicalId(P,I);objectsArray.push(...O)}),objectsArray),this.findObjectsWithGroupName=(P,I)=>{var N=[];return C.forEach(O=>{var S=O.groupName?O.groupName.toLowerCase():O.groupName,T=P&&P.toLowerCase();S===T&&N.push(O)}),I&&M.forEach(O=>{var S=O.findObjectsWithGroupName(P,I);N.push(...S)}),N},this.findGeometriesWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isGeometry);return O},this.findPointsetsWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isPointset);return O},this.findGlyphsetsWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isGlyphset);return O},this.findLinesWithGroupName=(P,I)=>{var N=this.findObjectsWithGroupName(P,I),O=N.filter(S=>S.isLines);return O},this.getAllObjects=P=>{var I=[...C];return P&&M.forEach(N=>{var O=N.getAllObjects(P);I.push(...O)}),I},this.getChildRegions=P=>{var I=[...M];return P&&M.forEach(N=>{var O=N.getChildRegions(P);I.push(...O)}),I},this.getCurrentTime=()=>{if(C[0]!=null)return C[0].getCurrentTime();for(var P,I=0;I<M.length;I++)if(P=M[I].getCurrentTime(),P!==-1)return P;return-1},this.setMorphTime=(P,I)=>{C.forEach(N=>{N.setMorphTime(P)}),I&&M.forEach(N=>{N.setMorphTime(P)})},this.isTimeVarying=()=>{for(var P=0;P<C.length;P++)if(C[P].isTimeVarying())return!0;for(var I=0;I<M.length;I++)if(M[I].isTimeVarying())return!0;return!1},this.renderGeometries=(P,I,N,O,S,T)=>{var D,B=this.getAllObjects(T);B.forEach(F=>{F.render(P*I,N,O,S)}),S&&N===!1&&(D=S.markerCluster)!==null&&D!==void 0&&D.markerUpdateRequired&&S.markerCluster.calculate()},this.createPoints=(P,I,N,O)=>{var S=!1,T=this.findObjectsWithGroupName(P,!1),D=T.findIndex(F=>F.isPointset),B=-1<D?T[D]:new f;return B.addPoints(I,N,O),D===-1?(B.setName(P),this.addZincObject(B),S=!0):this.pickableUpdateRequired=!0,{zincObject:B,isNew:S}},this.createLines=(P,I,N)=>{var O=!1,S=this.findObjectsWithGroupName(P,!1),T=S.findIndex(B=>B.isLines),D=-1<T?S[T]:new m;return D.addLines(I,N),T===-1?(D.setName(P),this.addZincObject(D),O=!0):this.pickableUpdateRequired=!0,{zincObject:D,isNew:O}},this.createGeometryFromThreeJSGeometry=(P,I,N,O,S,T)=>{var D=new g,B=new d.MeshPhongMaterial({color:N,morphTargets:!1,morphNormals:!1,transparent:!0,opacity:O,side:d.DoubleSide});return D.createMesh(I,B,{localTimeEnabled:!1,localMorphColour:!1}),D.getMorph()?(D.setVisibility(!1),D.setName(P),D.setRenderOrder(T),this.addZincObject(D),D):void 0}};l.Region=y},(o,l,c)=>{c(4),c(5).createBufferGeometry,c(5).toBufferGeometry;var u=c(46).LineSegments2,h=c(48).LineMaterial,f=c(47).LineSegmentsGeometry,m=function(){c(24).Lines.call(this),this.isLines2=!0;var g=Array(300);this.createLineSegment=(d,p,b)=>{if(d&&p){var y=new f;y.setPositions(d),y.colorsNeedUpdate=!0;var v=new u(y,p);v.scale.set(1,1,1),v.computeLineDistances(),this.setMesh(v,b.localTimeEnabled,b.localMorphColour)}},this.setWidth=d=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=d,this.morph.material.needsUpdate=!0)},this.addVertices=function(d){if(d&&d.length){var p=this.getMorph();p||(this.drawRange=0);var b=3*this.drawRange;if(d.forEach(y=>{g[b++]=y[0],g[b++]=y[1],g[b++]=y[2],this.drawRange++}),!p)for(;300>b;)g[b++]=d[0][0],g[b++]=d[0][1],g[b++]=d[0][2];p&&(p.geometry.setPositions(g),p.computeLineDistances(),this.boundingBoxUpdateRequired=!0)}return g},this.getVerticesByFaceIndex=function(d){var p=3*(2*d),b=this.getMorph();if(b&&3*this.drawRange>p){var y=b.geometry.getAttribute("instanceStart");return[[y.data.array[p],y.data.array[++p],y.data.array[++p]],[y.data.array[++p],y.data.array[++p],y.data.array[++p]]]}return[]},this.editVertice=function(d,p){if(d&&d.length){var b=this.getMorph(),y=p+d.length-1;if(!b||0>p||y>=this.drawRange)return;var v=3*p;for(d.forEach(w=>{g[v++]=w[0],g[v++]=w[1],g[v++]=w[2]}),v=3*this.drawRange;300>v;)g[v++]=d[0][0],g[v++]=d[0][1],g[v++]=d[0][2];b.geometry.setPositions(g),b.computeLineDistances(),this.boundingBoxUpdateRequired=!0}return g},this.addLines=(d,p)=>{if(d&&0<d.length){this.addVertices(d);var b=this.getMorph();if(!b){var y=new h({color:p,linewidth:1,vertexColors:!1,worldUnits:!1});y.resolution.set(window.innerWidth,window.innerHeight),this.createLineSegment(g,y,{localTimeEnabled:!1,localMorphColour:!1})}this.region&&(this.region.pickableUpdateRequired=!0)}},this.render=()=>{var d=this.getMorph().material;d.resolution.set(window.innerWidth,window.innerHeight)}};m.prototype=Object.create(c(24).Lines.prototype),m.prototype.constructor=m,l.Lines2=m},(o,l,c)=>{c.r(l),c.d(l,{LineSegments2:()=>C});var u=c(4),h=c(47),f=c(48),m=new u.Vector3,g=new u.Vector3,d=new u.Vector4,p=new u.Vector4,b=new u.Vector4,y=new u.Vector3,v=new u.Matrix4,w=new u.Line3,E=new u.Vector3,_=new u.Box3,M=new u.Sphere,x=new u.Vector4;class C extends u.Mesh{constructor(){var L=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new h.LineSegmentsGeometry,R=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new f.LineMaterial({color:16777215*Math.random()});super(L,R),this.type="LineSegments2"}computeLineDistances(){for(var L=this.geometry,R=L.attributes.instanceStart,P=L.attributes.instanceEnd,I=new Float32Array(2*R.count),N=0,O=0,S=R.count;N<S;N++,O+=2)m.fromBufferAttribute(R,N),g.fromBufferAttribute(P,N),I[O]=O==0?0:I[O-1],I[O+1]=I[O]+m.distanceTo(g);var T=new u.InstancedInterleavedBuffer(I,2,1);return L.setAttribute("instanceDistanceStart",new u.InterleavedBufferAttribute(T,1,0)),L.setAttribute("instanceDistanceEnd",new u.InterleavedBufferAttribute(T,1,1)),this}raycast(L,R){L.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var P=L.params.Line2===void 0?0:L.params.Line2.threshold||0,I=L.ray,N=L.camera,O=N.projectionMatrix,S=this.matrixWorld,T=this.geometry,D=this.material,B=D.resolution,F=D.linewidth+P,G=T.attributes.instanceStart,H=T.attributes.instanceEnd,te=-N.near,se=2*Math.max(F/B.width,F/B.height);T.boundingSphere===null&&T.computeBoundingSphere(),M.copy(T.boundingSphere).applyMatrix4(S);var j=Math.max(N.near,M.distanceToPoint(I.origin));x.set(0,0,-j,1).applyMatrix4(N.projectionMatrix),x.multiplyScalar(1/x.w),x.applyMatrix4(N.projectionMatrixInverse);var z=.5*Math.abs(se/x.w);if(M.radius+=z,L.ray.intersectsSphere(M)!==!1){T.boundingBox===null&&T.computeBoundingBox(),_.copy(T.boundingBox).applyMatrix4(S);var W=Math.max(N.near,_.distanceToPoint(I.origin));x.set(0,0,-W,1).applyMatrix4(N.projectionMatrix),x.multiplyScalar(1/x.w),x.applyMatrix4(N.projectionMatrixInverse);var ee=.5*Math.abs(se/x.w);if(_.max.x+=ee,_.max.y+=ee,_.max.z+=ee,_.min.x-=ee,_.min.y-=ee,_.min.z-=ee,L.ray.intersectsBox(_)!==!1){I.at(1,b),b.w=1,b.applyMatrix4(N.matrixWorldInverse),b.applyMatrix4(O),b.multiplyScalar(1/b.w),b.x*=B.x/2,b.y*=B.y/2,b.z=0,y.copy(b),v.multiplyMatrices(N.matrixWorldInverse,S);for(var q=0,$=G.count;q<$;q++){d.fromBufferAttribute(G,q),p.fromBufferAttribute(H,q),d.w=1,p.w=1,d.applyMatrix4(v),p.applyMatrix4(v);var Y=d.z>te&&p.z>te;if(!Y){if(d.z>te){var K=d.z-p.z,ie=(d.z-te)/K;d.lerp(p,ie)}else if(p.z>te){var k=p.z-d.z,Z=(p.z-te)/k;p.lerp(d,Z)}d.applyMatrix4(O),p.applyMatrix4(O),d.multiplyScalar(1/d.w),p.multiplyScalar(1/p.w),d.x*=B.x/2,d.y*=B.y/2,p.x*=B.x/2,p.y*=B.y/2,w.start.copy(d),w.start.z=0,w.end.copy(p),w.end.z=0;var Q=w.closestPointToPointParameter(y,!0);w.at(Q,E);var V=u.MathUtils.lerp(d.z,p.z,Q),U=-1<=V&&1>=V,oe=y.distanceTo(E)<.5*F;if(U&&oe){w.start.fromBufferAttribute(G,q),w.end.fromBufferAttribute(H,q),w.start.applyMatrix4(S),w.end.applyMatrix4(S);var ae=new u.Vector3,le=new u.Vector3;I.distanceSqToSegment(w.start,w.end,le,ae),R.push({point:le,pointOnLine:ae,distance:I.origin.distanceTo(le),object:this,face:null,faceIndex:q,uv:null,uv2:null})}}}}}}}C.prototype.LineSegments2=!0},(o,l,c)=>{c.r(l),c.d(l,{LineSegmentsGeometry:()=>m});var u=c(4),h=new u.Box3,f=new u.Vector3;class m extends u.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 u.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 u.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(d){var p=this.attributes.instanceStart,b=this.attributes.instanceEnd;return p!==void 0&&(p.applyMatrix4(d),b.applyMatrix4(d),p.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(d){var p;d instanceof Float32Array?p=d:Array.isArray(d)&&(p=new Float32Array(d));var b=new u.InstancedInterleavedBuffer(p,6,1);return this.setAttribute("instanceStart",new u.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceEnd",new u.InterleavedBufferAttribute(b,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(d){var p;d instanceof Float32Array?p=d:Array.isArray(d)&&(p=new Float32Array(d));var b=new u.InstancedInterleavedBuffer(p,6,1);return this.setAttribute("instanceColorStart",new u.InterleavedBufferAttribute(b,3,0)),this.setAttribute("instanceColorEnd",new u.InterleavedBufferAttribute(b,3,3)),this}fromWireframeGeometry(d){return this.setPositions(d.attributes.position.array),this}fromEdgesGeometry(d){return this.setPositions(d.attributes.position.array),this}fromMesh(d){return this.fromWireframeGeometry(new u.WireframeGeometry(d.geometry)),this}fromLineSegments(d){var p=d.geometry;return p.isGeometry?void console.error("THREE.LineSegmentsGeometry no longer supports Geometry. Use THREE.BufferGeometry instead."):(p.isBufferGeometry&&this.setPositions(p.attributes.position.array),this)}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new u.Box3);var d=this.attributes.instanceStart,p=this.attributes.instanceEnd;d!==void 0&&p!==void 0&&(this.boundingBox.setFromBufferAttribute(d),h.setFromBufferAttribute(p),this.boundingBox.union(h))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new u.Sphere),this.boundingBox===null&&this.computeBoundingBox();var d=this.attributes.instanceStart,p=this.attributes.instanceEnd;if(d!==void 0&&p!==void 0){var b=this.boundingSphere.center;this.boundingBox.getCenter(b);for(var y=0,v=0,w=d.count;v<w;v++)f.fromBufferAttribute(d,v),y=Math.max(y,b.distanceToSquared(f)),f.fromBufferAttribute(p,v),y=Math.max(y,b.distanceToSquared(f));this.boundingSphere.radius=Math.sqrt(y),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(d){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(d)}}m.prototype.isLineSegmentsGeometry=!0},(o,l,c)=>{c.r(l),c.d(l,{LineMaterial:()=>h});var u=c(4);u.UniformsLib.line={linewidth:{value:1},resolution:{value:new u.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1}},u.ShaderLib.line={uniforms:u.UniformsUtils.merge([u.UniformsLib.common,u.UniformsLib.fog,u.UniformsLib.line]),vertexShader:`
3233
3233
  #include <common>
3234
3234
  #include <color_pars_vertex>
3235
3235
  #include <fog_pars_vertex>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/scaffoldvuer",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -55,7 +55,7 @@
55
55
  "vue": "^3.4.15",
56
56
  "vue-router": "^4.2.5",
57
57
  "vue3-component-svg-sprite": "^0.0.1",
58
- "zincjs": "^1.8.2"
58
+ "zincjs": "^1.8.3"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@vitejs/plugin-vue": "^4.6.2",