@splinetool/runtime 0.9.48 → 0.9.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/runtime.js +2 -2
  2. package/package.json +1 -1
package/build/runtime.js CHANGED
@@ -3923,7 +3923,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
3923
3923
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
3924
3924
  }
3925
3925
  `),h&&d.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
3926
- `)}return r}copy(t){return super.copy(t),t.color&&(this.color=t.color.clone()),this.roughness=t.roughness.clone(),this.metalness=t.metalness.clone(),t.position&&(this.position=t.position.clone()),t.afterColor&&(this.afterColor=t.afterColor.clone()),t.alpha&&(this.alpha=t.alpha.clone()),t.reflectivity&&(this.reflectivity=t.reflectivity.clone()),t.shadingAlpha&&(this.shadingAlpha=t.shadingAlpha.clone()),t.shadingBlend&&(this.shadingBlend=t.shadingBlend.clone()),this}};var Op=class extends Bn{constructor(t=new Np,r){super(t,t,r);this.type="StandardNodeMaterial",this.fragment=t}get color(){return this.fragment.color}set color(t){this.fragment.color=t}get afterColor(){return this.fragment.afterColor}set afterColor(t){this.fragment.afterColor=t}get alpha(){return this.fragment.alpha}set alpha(t){this.fragment.alpha=t}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(t){this.fragment.shadingAlpha=t}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(t){this.fragment.shadingBlend=t}get position(){return this.fragment.position}set position(t){this.fragment.position=t}get roughness(){return this.fragment.roughness}set roughness(t){this.fragment.roughness=t}get metalness(){return this.fragment.metalness}set metalness(t){this.fragment.metalness=t}get reflectivity(){return this.fragment.reflectivity}set reflectivity(t){this.fragment.reflectivity=t}};var Yl=class extends Op{constructor(e,t,r){super(t,e),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Zr){let t=e.userData.layers,r=e.fragment;super.copy(e);let n=r.clone();this.fragment=n,this.vertex=n;let s=t.clone(this);this.userData.layers=s,n.shadingAlpha.value=r.shadingAlpha.value,n.shadingBlend.value=r.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,r){let n=r.getNode(t.vertex),s=new Yl(void 0,n);return s.fromJSON(t,r),s}dispose(){super.dispose()}};function pr(i,e){let t;if(typeof i=="string"){let r=e==null?void 0:e.getColor(i);r?t=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Wr(0,0,0,0))}else return"a"in i?new Wr(i.r,i.g,i.b,i.a):new Wr(i.r,i.g,i.b,1);return t}function Fp(i,e){switch(i.data.type){case"light":return yi(i);case"fresnel":return MF(i,e);case"gradient":return AF(i);case"depth":return TF(i);case"normal":return EF(i);case"noise":return _F(i,e);case"texture":return CF(i,e);case"rainbow":return DF(i);case"transmission":return PF(i,e);case"matcap":return LF(i,e);case"displace":return IF(i);case"color":default:return SF(i,e)}}function R1(i){return{type:i.data.type}}function yi(i){let{alpha:e,mode:t}=i.data;return be(se({},R1(i)),{alpha:e,mode:t})}function SF(i,e){return be(se({},yi(i)),{color:pr(i.data.color,e)})}function MF(i,e){let{bias:t,scale:r,intensity:n,factor:s,color:o}=i.data;return be(se({},yi(i)),{color:pr(o,e),bias:t,scale:r,intensity:n,factor:s})}function AF(i){let{gradientType:e,smooth:t,colors:r,steps:n,angle:s,offset:o,morph:a}=i.data;return be(se({},yi(i)),{gradientType:e,smooth:t,colors:r.map(l=>new Je(l[0],l[1],l[2],l[3])),num:r.length,steps:n,offset:new B(...o),morph:new B(...a),angle:s})}function TF(i){let{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:o,direction:a,colors:l,steps:c,smooth:h,num:u}=i.data;return be(se({},yi(i)),{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:new M(...o),direction:a?new M(...a):new M(1,0,0),num:u,colors:l.map(f=>new Je(f[0],f[1],f[2],f[3])),steps:c,smooth:h})}function EF(i){let{cnormal:e}=i.data;return be(se({},yi(i)),{cnormal:new M(e[0],e[1],e[2])})}function _F(i,e){let{data:t}=i;return be(se({},yi(i)),{scale:t.scale,move:t.move,fA:new B(...t.fA),fB:new B(...t.fB),size:new M(...t.size),distortion:new B(...t.distortion),colorA:pr(t.colorA,e),colorB:pr(t.colorB,e),colorC:pr(t.colorC,e),colorD:pr(t.colorD,e),noiseType:t.noiseType})}function CF(i,e){let{projection:t,axis:r,side:n,crop:s,size:o}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,u=new Dt,f;if(typeof a=="string")f=e==null?void 0:e.getImage(a);else{let d=new Image;d.src=a.data,d.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad(a.data))},f=d}return u.image=f,u.repeat.set(c[0],c[1]),u.offset.set(h[0],h[1]),u.wrapS=u.wrapT=l,be(se({},yi(i)),{texture:u,mat:new Ft().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:s,projection:t,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(n),size:o})}function DF(i){let{data:e}=i;return be(se({},yi(i)),{filmThickness:e.filmThickness,movement:e.movement,wavelengths:new M(...e.wavelengths),noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,offset:new M(...e.offset)})}function PF(i,e){let{data:t}=i;return be(se({},yi(i)),{thickness:t.thickness,ior:t.ior,roughness:t.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap})}function LF(i,e){let t=new Dt,{image:r}=i.data.texture,n;if(typeof r=="string")n=e==null?void 0:e.getImage(r);else{let o=new Image;o.src=r.data,o.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad(r.data))},n=o}t.image=n;let s=16777215;return be(se({},yi(i)),{color:s,texture:t})}function IF(i){let{data:e}=i,t=be(se({},R1(i)),{intensity:e.intensity});if(e.displacementType==="noise")return be(se({},t),{offset:new M(...e.offset),scale:e.scale,movement:e.movement,noiseType:e.noiseType});{let r=new Dt,n=new Ft().setUvTransform(0,0,1,1,0,0,0);return be(se({},t),{texture:r,mat:n,crop:e.crop})}}function Up(i,e,t){if(t.type==="displace"&&(i==="intensity"||i==="visible")){let r=e.uniforms[`f${e.id}_intensity`];return r?(r.value=t.intensity*(t.visible?1:0),r):void 0}if(t.type!=="displace"&&(i==="alpha"||i==="visible")){let r=e.uniforms[`f${e.id}_alpha`];return r?(r.value=t.alpha*(t.visible?1:0),r):void 0}}var Xl;(e=>{function i(t){return new xe(t.x,t.y,t.z).getHex()}e.getHex=i})(Xl||(Xl={}));var B1;(e=>{function i(t){return new Je(t.r,t.g,t.b,t.a)}e.getThreeVector4=i})(B1||(B1={}));var N1;(t=>{function i(r,n){r.setRGB(n.r,n.g,n.b)}t.setThreeColor=i;function e(r){return new xe(r.r,r.g,r.b).getHex()}t.getHex=e})(N1||(N1={}));function gu(i,e){return typeof i=="string"?e.getMaterialOrDeletedPlaceholder(i):Lv(i,e)}function O1(i,e){return i.map(t=>gu(t,e))}function Lv(i,e){var o,a;let t=(o=i.layers)!=null?o:fi.defaultTwoLayerData("phong").layers,r=RF(t),n;switch(r.category){case"basic":n=new Yr;break;case"lambert":{n=new jl;break}case"toon":{n=new ql;break}case"physical":n=new Yl;break;case"phong":default:{n=new pn;break}}n.name=(a=i.name)!=null?a:"Untitled Material";let s=n.userData.layers;BF(s);for(let l=t.length-1;l>=0;l--)NF(s,t[l],e);switch(r.category){case"basic":break;case"lambert":{let h=n,f=pr(r.emissive,e);f instanceof xe?h.emissive.value=f:h.emissive.value.setHex(Xl.getHex(f));break}case"toon":{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof xe?h.specular.value=f:h.specular.value.setHex(Xl.getHex(f));break}case"physical":let l=n,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof xe?h.specular.value=f:h.specular.value.setHex(Xl.getHex(f));break}}return s.blendColors(),s.blendAfterColors(),s.blendPositions(),n}function RF(i){for(let e of i)if(e.data.type==="light")return e.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function BF(i){for(let e of i.getLayers())i.removeLayer(e.id)}function NF(i,e,t){let r=Fp(e,t);r.type==="transmission"&&(r.transmissionSamplerMap=t==null?void 0:t.transmissionSamplerMap,r.transmissionDepthMap=t==null?void 0:t.transmissionDepthMap);let n=i.addLayer(r);n.uuid=e.id;for(let s in e.data)Up(s,n,e.data)}var Zo=i=>"isEntity"in i,er=i=>"isAbstractMesh"in i,Ot=i=>i!==null&&i.isBooleanMesh,F1=i=>i.objectType==="CombinedCamera",U1=i=>Zo(i)&&(i.objectType==="LightDirectional"||i.objectType==="LightSpot"||i.objectType==="LightPoint");var gs=i=>"objectHelper"in i;function Iv(i,e){var r;let t=!1;e.position&&(i.position.fromArray(e.position),t=!0),e.rotation&&(i.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,i.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(t=!0,i.hiddenMatrix.fromArray((r=e.hiddenMatrix)!=null?r:Ii.identity)),t&&(i.updateMatrix(),Ot(i.parent)&&er(i)&&i.invalidateDownstreamBooleanData().recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=e.isUpVectorFlipped),i.updateUp())}function OF(i,e){Iv(i,e),e.name!==void 0&&(i.name=e.name),e.visible!==void 0&&(i.isEntity?i.visibility=e.visible:i.visible=e.visible)}function z1(i,e,t){OF(i,e),e.color!==void 0&&(i.color=pr(e.color,t)),e.intensity!==void 0&&(i.intensity=e.intensity),e.shadows!==void 0&&!(i instanceof Hs)&&(i.castShadow=e.shadows),i.shadow&&!(i instanceof Hs)&&e.depth!==void 0&&(i.shadow.camera.far=e.depth,i.shadow.needsUpdate=!0),e.helper!==void 0&&gs(i)&&(i.enableHelper=e.helper,i.gizmos.shadowmap.visible=e.helper)}function G1(i,e){i.shadow.camera.right=e/2,i.shadow.camera.left=-e/2,i.shadow.camera.top=e/2,i.shadow.camera.bottom=-e/2,i.shadow.needsUpdate=!0}var Ql=new Kt,Xr=new M,Ge=new M,wr=new Ae;function FF(i,e,t=0,r=e.count){let n=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=t;h<r;h++){let u=e.getX(h),f=e.getY(h),d=e.getZ(h);u<n&&(n=u),f<s&&(s=f),d<o&&(o=d),u>a&&(a=u),f>l&&(l=f),d>c&&(c=d)}return i.min.set(n,s,o),i.max.set(a,l,c),i}var k1=(i,e,t,r)=>{var n;if(er(i)){let s=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?Xr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(FF(Ql,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),Ql.getCenter(Xr)),i.forceComputeSize?Ql.getSize(Ge).multiplyScalar(.5):Ge.set(s.width,s.height,(n=s.depth)!=null?n:0).multiplyScalar(.5)}else if(gs(i)&&r===!0){let s=i.geometryHelper.getAttribute("position");Ql.setFromArray(s.array),Ql.getCenter(Xr),Ql.getSize(Ge).multiplyScalar(.5)}else Xr.setScalar(0),Ge.setScalar(0);wr.copy(e).multiply(i.matrixWorld),Ge.x===0&&Ge.y===0&&Ge.z===0?t.push(new M(Xr.x,Xr.y,Xr.z).applyMatrix4(wr)):t.push(new M(-Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr))},yu=class extends Kt{constructor(){super(...arguments);this.matrix=new Ae;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(r=>r.clone()),this.faces=t.faces.map(r=>r.clone()),this.edges=t.edges.map(r=>r.clone()),this.centerEdges=t.centerEdges.map(r=>r.clone()),this}setFromObjectSize(t,r=!1){t.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let n=new Ae().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,n,r)}expandByObjectSize(t,r,n=!1){let s=[];return n===!0?t.traverseEntity(o=>{o.visible&&k1(o,r,s,t.enableHelper===!0)}):k1(t,r,s,t.enableHelper===!0),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(wr.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Ge).multiplyScalar(.5),this.getCenter(Xr),wr.copy(this.matrix).setPosition(Xr),this.vertices=[new M(-Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).applyMatrix4(wr)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jr(this.vertices[0],this.vertices[3]),new Jr(this.vertices[1],this.vertices[2]),new Jr(this.vertices[5],this.vertices[6]),new Jr(this.vertices[4],this.vertices[7]),new Jr(this.vertices[0],this.vertices[1]),new Jr(this.vertices[3],this.vertices[2]),new Jr(this.vertices[7],this.vertices[6]),new Jr(this.vertices[4],this.vertices[5]),new Jr(this.vertices[0],this.vertices[4]),new Jr(this.vertices[1],this.vertices[5]),new Jr(this.vertices[2],this.vertices[6]),new Jr(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(t=>t.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function vu(i){let e=[];for(let t in i){let r=i[t];delete r.metadata,e.push(r)}return e}function UF(i){let e=[];for(let t in i)e.push(i[t]);return e}var zp=i=>class extends i{hasEntityChild(){return this.children.some(t=>Zo(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===t)return!0;r=r.parent}return!1}attach(t,r){this.updateWorldMatrix(!0,!1);let n=new Ae().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),n.multiply(t.parent.matrixWorld)),Zo(t)?t.hiddenMatrix.premultiply(n):t.applyMatrix4(n),t.updateWorldMatrix(!1,!1),this.add(t),r!==void 0&&(this.children.pop(),this.children.splice(r,0,t)),this}copy(t,r=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),r===!0)for(let n=0;n<t.children.length;n++){let s=t.children[n];this.add(s.clone())}return this}toJSON(t){let r=t===void 0,n={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},n.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Zo(o)||o instanceof bn)&&s.children.push(o.toJSON(t).object)}if(r){let o=vu(t.geometries),a=vu(t.materials),l=vu(t.textures),c=vu(t.images),h=vu(t.interactionStates),u=UF(t.nodes);o.length>0&&(n.geometries=o),a.length>0&&(n.materials=a),l.length>0&&(n.textures=l),c.length>0&&(n.images=c),h.length>0&&(n.interactionStates=h),u.length>0&&(n.nodes=u)}return n.object=s,n}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var Qn=i=>"isEntity"in i,V1=i=>"isAbstractMesh"in i,Jn=i=>class extends zp(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ae;this._singleBBox=new yu;this._recursiveBBox=new yu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let n of this.children)Qn(n)&&n.traverseEntity(s=>{gs(s)&&s.visible&&(s.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Qn(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let n of this.children)Qn(n)&&n.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let n of this.children)n.updateMatrixWorld(r)}updateWorldMatrix(r,n){let s=this.parent;if(r&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let o of this.children)o.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Qn(s)&&this.add(s.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Qn(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let r=new Ae,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(n);for(let s of this.children)Qn(s)&&s.hiddenMatrix.premultiply(r)}toJSON(r){let n=super.toJSON(r),s=n.object;return this.raycastLock===!0&&(s.raycastLock=!0),this.scaleLock===!0&&(s.scaleLock=!0),s.hiddenMatrix=this.hiddenMatrix.toArray(),n}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let n=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Ae}),this.copy(r),r.children=n,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let n={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return wl(n,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let n=se({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return wl(n,r)}fromState(r,n){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};var xu=class extends ot{constructor(t,r={}){super();this.object=t;let n=t.recursiveBBox.getSize(new M),s=.1;this.parameters=kd.defaultData(n.toArray(),s),Vo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let t of this.children)t.material=this.object.material}setHideBase(t){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(t){let r=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!t}else{if(this.children.length>0)if(this.object.material.visible=!0,t){let r=this.object.material.clone();for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!t}this.parameters.hideBase=t}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let r=0,n=t-this.children.length;r<n;++r){let s=this.object.shallowClone(!1);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,n=this.children.length-t;r<n;++r)this.remove(this.children[0])}_updateRadial(t){let r=t.radial,n=r.start*et.DEG2RAD,s=r.end*et.DEG2RAD,o=n-s,a=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD),l;switch(r.axis){case"z":l=new M(0,0,1);break;case"y":l=new M(0,1,0);break;default:case"x":l=new M(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let u=o/t.count*c-n;switch(r.axis){case"x":h.rotation.set(0,u,0);break;case"y":h.rotation.set(0,0,u);break;case"z":h.rotation.set(u,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let r=t.linear,n=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD);for(let[s,o]of this.children.entries())o.hiddenMatrix.identity(),o.scale.x=1+(r.scale[0]-1)*s,o.scale.y=1+(r.scale[1]-1)*s,o.scale.z=1+(r.scale[2]-1)*s,o.rotation.x=n.x*s,o.rotation.y=n.y*s,o.rotation.z=n.z*s,o.position.x=r.position[0]*s,o.position.y=r.position[1]*s,o.position.z=r.position[2]*s}_updateGrid(t){let r=0,n=t.grid;if(n.useCenter===!0){let s={x:n.count[0]%2===0?2:1,y:n.count[1]%2===0?2:1,z:n.count[2]%2===0?2:1},o=new M(n.size[0]*(n.count[0]-s.x)*.5,n.size[1]*(n.count[1]-s.y)*.5,n.size[2]*(n.count[2]-s.z)*.5);for(let a=0;a<n.count[0];a++)for(let l=0;l<n.count[1];l++)for(let c=0;c<n.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=n.size[0]*a-o.x,h.position.y=n.size[1]*l-o.y,h.position.z=n.size[2]*c-o.z}}else for(let s=0;s<n.count[0];s++)for(let o=0;o<n.count[1];o++)for(let a=0;a<n.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=n.size[0]*s,l.position.y=-n.size[1]*o,l.position.z=-n.size[2]*a}}fromJSON(t){return this}toJSON(){return{}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),Vo(this.parameters,t),this.update(),this}};var kt=class extends Jn(Vt){constructor(t,r){super(t,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ae;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}getSelectedMaterial(t){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),this.material[t!=null?t:this.selectedMaterial]):this.material}setSelectedMaterial(t,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=t):(this.material.dispose(),this.material=t)}updateGeometry(t){let r=this.geometry,n=Rv[r.userData.type],s=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,o=n.build(n.normalizeInputs(t,s)),a=r.uuid;if(this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(t,r,n){$h.resizeGeometry(this.geometry,{width:t,height:r,depth:n})}shallowClone(t){return new this.constructor(this.geometry,this.material).shallowCopy(this,t)}clone(t){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=bu(r),s=Array.isArray(this.material)?this.material.map(o=>o.clone()):this.material.clone();return new this.constructor(n,s).copy(this,t)}copy(t,r=!0){return super.copy(t,r),t.cloner&&(this.cloner=new xu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new xu(this)),this.cloner.fromClonerState(t))}fromState(t,r){var n,s,o;return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=(n=t.castShadow)!=null?n:!0,this.receiveShadow=(s=t.receiveShadow)!=null?s:!0,this.booleanExclude=(o=t.booleanExclude)!=null?o:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Kn.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ot(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)er(t)&&(t.freeBooleanPointer(),Ot(t)&&t.invalidateUpstreamBooleanData())}};var zF=new M(0,0,1),H1=new M,W1=new M,j1=new Ft,co=class extends kt{constructor(t=Hr.create({}),r=new Yr({side:or})){var n;super(t,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Yt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="VectorObject",r}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(t){var r,n;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=t,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),j1.getNormalMatrix(this.matrixWorld),H1.copy(zF).applyMatrix3(j1).normalize(),W1.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(H1,W1)}clone(t){let r=this.shape.clone(),n=this.material.clone(),s=this.geometry.userData,o=Hr.create(Object.assign({},s,{shape:r})),a=new co(o,n).copy(this,t);return a.shape=r,r.update(),a}raycast(t,r){kt.prototype.raycast.call(this,t,r)}};function Gp(i,e){return GF(i)}function GF(i){let e={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Tt.createFromState(i.shape,i.width,i.height);e.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var n;return r.materialIndex=Math.max((n=r.materialIndex)!=null?n:0,0)}),e.geometry=new Ws().parse(i));let t;try{t=bu(e)}catch(r){console.error(r)}if(!t){let r=Tt.createFromState(_l.defaultData(),100,100);e.shape=r,t=bu(e)}return t}var Ke;Mp.then(i=>{Ke=i});var q1=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Y1=new Uint32Array([0,1,2,3]),X1=new Uint8Array([4]),vi=class{static build(i,e,t,r){let n,s,o;if((i==null?void 0:i.positionWASM)!==void 0){e&&e!==0&&(Ke.free_bvh(e),Ke.free_subdivision_surface(e));try{n=vi.allocate(i,r)}catch(a){console.error(a,i),n=vi.allocate({positionWASM:q1,indexWASM:Y1,verticesPerFaceWASM:X1},r)}Ke.set_destination_refinement_level(n,0),s=vi.buildLevel(n,!0,t)}else n=e;if(i!==void 0&&i.subdivisions!==void 0){let a=kF(i.subdivisions,i.positionWASM.length);Ke.set_destination_refinement_level(n,a),a>0?o=vi.buildLevel(n,!1,t):o=null}return{subdivPointer:n,originalGeometry:s,subdividedGeometry:o}}static primitiveToQuads(i,e){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let t=i.shape!==void 0?e.geometry:Gp(i),r,n,s,o;return{positions:r,triIndices:o}=Fv(t.getAttribute("position"),t.getIndex()),{indices:n,verticesPerFace:s}=Uv(r,o,t),{positions:r,indices:n,verticesPerFace:s}}static allocate(i,e){var b;let t,r,n,s=[],o=[];i.positionWASM&&i.positionWASM.length>0?(t=i.positionWASM,r=i.indexWASM,n=i.verticesPerFaceWASM):(t=q1,r=Y1,n=X1);let a=t.length,l=r.length,c=n.length,h=t.length+s.length+o.length,u=r.length+n.length,f=h*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,p=Ke._malloc(f),g=new Float32Array(Ke.HEAPF32.buffer,p,h),x=new Uint32Array(Ke.HEAPU32.buffer,p+d,u);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),x.set(r,0),x.set(n,r.length);let y;(b=i==null?void 0:i.scaleBaked)!=null&&b.some(S=>S!==1)&&(y=new Ae().makeScale(...i.scaleBaked)),e&&(y?y.premultiply(e):y=e);let w=y?Ke.alloc_subdivision_surface2(p,a,p+d,l,p+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,y.elements):Ke.alloc_subdivision_surface(p,a,p+d,l,p+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return Ke._free(p),w}static buildLevel(i,e,t,r,n){let s=n?Ke.get_mesh_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t!=null?t:!e,n.elements):Ke.get_mesh_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t!=null?t:!e),o=8,a=Ke.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),c=0,h=Ke.HEAPU32[a[c]>>2],u=Ke.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=Ke.HEAPU32[a[c]>>2],d=Ke.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let m=Ke.HEAPU32[a[c]>>2],p=Ke.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let g=Ke.HEAPU32[a[c]>>2],x=Ke.HEAPU32.subarray(g>>2,(g>>2)+l[c]);if(c++,r===void 0){let y=new Le;if(y.setIndex(new Os(x,1)),y.setAttribute("position",new Ce(u,3)),y.setAttribute("normal",new Ce(d,3)),e){y.setAttribute("faceMap",new Os(p,1));let w=new Float32Array(d.length/3*4).fill(0);y.setAttribute("color",new Ve(w,4))}return Ke.free_mesh_data(s),y.userData.type="SubdivGeometry",y}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,Ke.free_mesh_data(s)}static buildControlCageWireframe(i,e,t){let r=Ke.get_wireframe_data_for_base_level(i),n=4,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+2),a=0,l=Ke.HEAPU32[s[a]>>2],c=Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=Ke.HEAPU32[s[a]>>2],u=Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]);if(e===void 0){let f=new Le;f.setAttribute("position",new Ce(c,3));let d=new Float32Array(c.length);for(let m=0,p=c.length;m<p;)d[m++]=t.r,d[m++]=t.g,d[m++]=t.b;return f.setAttribute("color",new Ve(d,3)),f.setIndex(new Os(u,1)),Ke.free_wireframe_data_for_base_level(r),f}e.getAttribute("position").copyArray(c),e.attributes.position.needsUpdate=!0,Ke.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,e,t){e||Ke.set_destination_refinement_level(i,1);let r=t?Ke.get_topological_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t.elements):Ke.get_topological_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED),n=6,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=Ke.HEAPU32[s[a]>>2],c=new Float32Array(Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=Ke.HEAPU32[s[a]>>2],u=new Uint32Array(Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=Ke.HEAPU32[s[a]>>2],d=new Uint8Array(Ke.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return Ke.free_topological_data(r),{positions:c,indices:u,verticesPerFace:d}}};function kF(i,e){let t=i;return t=Math.min(t,3-Math.ceil(Math.log(e/172e3)/Math.log(4))),Math.max(t,0)}var Q1=["getX","getY","getZ"];function Fv(i,e){let t={},r=e?e.count:i.count,n=0,s=[],o=[],a=1e4;for(let c=0;c<r;c++){let h=e?e.getX(c):c,u="";for(let f=0;f<3;f++)u+=`${~~(i[Q1[f]](h)*a)},`;if(u in t)s.push(t[u]);else{for(let f=0;f<3;f++)o.push(i[Q1[f]](h));t[u]=n,s.push(n),n++}}let l=[];for(let c=0;c<s.length;c+=3)s[c]===s[c+1]||s[c]===s[c+2]||s[c+1]===s[c+2]||l.push(s[c],s[c+1],s[c+2]);return{positions:o,triIndices:l}}var kp=new M,Bv=new M,Nv=new M,Ov=new M;function Uv(i,e,t){var s;let r=[],n=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<o.length;c+=2)a+=(o[c]-o[(c===0?o.length:c)-2])*(o[c+1]+o[(c===0?o.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<o.length;c+=2)i.push(o[c],o[c+1],0),r.push(l++);else for(let c=o.length-2;c>=0;c-=2)i.push(o[c],o[c+1],0),r.push(l++);return n.push(l),{indices:r,verticesPerFace:n}}for(let o=0,a=(s=t.capStartIndex)!=null?s:e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){kp.set(i[e[o]*3],i[e[o]*3+1],i[e[o]*3+2]),Bv.set(i[e[o+1]*3],i[e[o+1]*3+1],i[e[o+1]*3+2]),Nv.set(i[e[o+4]*3],i[e[o+4]*3+1],i[e[o+4]*3+2]),Ov.set(i[e[o+5]*3],i[e[o+5]*3+1],i[e[o+5]*3+2]),Bv.sub(kp).normalize(),Nv.sub(kp).normalize(),Ov.sub(kp).normalize();let l=Bv.cross(Nv).dot(Ov);Math.abs(l)>.005?(r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3):(r.push(e[o],e[o+1],e[o+4],e[o+5]),n.push(4),o+=6)}else r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(o.push(h),l++),i[c+2]===t.userData.parameters.depth&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),r.push(...o,...a),n.push(l,l)}return{indices:r,verticesPerFace:n}}var Kn={};Cx(Kn,{calcBoolean:()=>WF,calcBooleanTopological:()=>HF,freeMeshSet:()=>YF,getMeshSet:()=>jF,transformMeshSet:()=>qF});var K1,Z1=new Promise(i=>{K1=i}),J1=!1;async function $1(){if(J1)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.48/build",[t,r]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:r});K1(s),J1=!0}var yt,Jl;Z1.then(i=>yt=i);function VF(i,e){let t,{positions:r,triIndices:n}=Fv(i.getAttribute("position"),i.getIndex()),s;if(e||i.userData.shape!==void 0){let{indices:o,verticesPerFace:a}=Uv(r,n,i);s=a.length,t=[];for(let l=0,c=0;l<s;l++){t.push(a[l]);for(let h=0;h<a[l];h++)t.push(o[c++])}}else{let o=n.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=n[a++],t[l++]=n[a++],t[l++]=n[a++]}return{positions:r,faceIndices:t,nFaces:s}}function eA(i){let e=i.length,t=e*Uint32Array.BYTES_PER_ELEMENT,r=e*Float32Array.BYTES_PER_ELEMENT,n=Number.isInteger(i[0])?t:r,s=yt._malloc(n);return(Number.isInteger(i[0])?new Uint32Array(yt.HEAPU32.buffer,s,e):new Float32Array(yt.HEAPF32.buffer,s,e)).set(i,0),s}function tA(i){switch(i){case 0:return yt.OP.UNION;case 1:return yt.OP.INTERSECTION;case 2:return yt.OP.A_MINUS_B;case 3:return yt.OP.B_MINUS_A;case 4:return yt.OP.SYMMETRIC_DIFFERENCE;case 5:return yt.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function HF(i,e){Jl===void 0&&(Jl=yt.init_csg());let t=yt.csg_calc(Jl,eA(i),i.length,tA(e),!0),r=6,n=yt.HEAPU32.subarray(t>>2,(t>>2)+r),s=n.subarray(3,3+3),o=0,a=yt.HEAPU32[n[o]>>2],l=new Float32Array(yt.HEAPF32.subarray(a>>2,(a>>2)+s[o]));o++;let c=yt.HEAPU32[n[o]>>2],h=new Uint32Array(yt.HEAPU32.subarray(c>>2,(c>>2)+s[o]));o++;let u=yt.HEAPU32[n[o]>>2],f=new Uint8Array(yt.HEAPU32.subarray(u>>2,(u>>2)+s[o]));return yt.free_mesh_data(t),{positions:l,indices:h,verticesPerFace:f}}function WF(i,e,t){Jl===void 0&&(Jl=yt.init_csg());let r=yt.csg_calc(Jl,eA(i),i.length,tA(e),!1),n=5,s=yt.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+3),a=0,l=yt.HEAPU32[s[a]>>2],c=yt.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=yt.HEAPU32[s[a]>>2],u=yt.HEAPF32.subarray(h>>2,(h>>2)+o[a]);a++;let f=o[a];t.setAttribute("position",new Ce(c,3)),t.setAttribute("normal",new Ce(u,3));let d=yt.HEAPF32.subarray((r>>2)+5,(r>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Lr),t.boundingSphere.center.set(d[0],d[1],d[2]),t.boundingSphere.radius=(d[3]**2+d[4]**2+d[5]**2)**.5,t.userData.parameters={width:d[3]*2,height:d[4]*2,depth:d[5]*2},yt.free_mesh_data(r),f}function jF(i,e){if(yt===void 0)return-1;let t,r,n;if(e&&i.userData.positions!==void 0){let p=i.userData;n=p.verticesPerFace.length,t=p.positions,r=Array(p.verticesPerFace.reduce((g,x)=>g+x,0)+n);for(let g=0,x=0,y=0;g<p.verticesPerFace.length;g++){r[y++]=p.verticesPerFace[g];for(let w=0;w<p.verticesPerFace[g];w++)r[y++]=p.indices[x++]}}else({positions:t,faceIndices:r,nFaces:n}=VF(i,e));let s=t.length,o=r.length,a=t.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,u=l*Uint32Array.BYTES_PER_ELEMENT,f=yt._malloc(c),d=new Float32Array(yt.HEAPF32.buffer,f,a),m=new Uint32Array(yt.HEAPU32.buffer,f+h,l);return d.set(t,0),m.set(r,0),yt.get_csg_mesh(f,s,f+h,o,n)}function qF(i,e){yt.transform_csg_mesh(i,e.elements)}function YF(i){yt.free_csg_mesh(i)}var Rv={ConeGeometry:WM,CubeGeometry:jM,CylinderGeometry:HM,DodecahedronGeometry:qM,EllipseGeometry:u1,HelixGeometry:m1,IcosahedronGeometry:g1,LatheGeometry:y1,NonParametricGeometry:v1,PolygonGeometry:x1,PyramidGeometry:b1,RectangleGeometry:wp,SphereGeometry:w1,PlaneGeometry:S1,StarGeometry:M1,TextFrameGeometry:Sp,TorusGeometry:A1,TorusKnotGeometry:T1,TriangleGeometry:E1,VectorGeometry:Hr},bu=i=>Rv[i.type].create(i);var rA=i=>i.tagName==="VIDEO",$o=class{static resize(e,t,r){let n=e/t,s;if(!r.image)return;let o=r.image;rA(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(e,t,r){let n=e/t,s=r.image!==void 0?r.image.width/r.image.height:1,o;n>s?o={x:1,y:s/n}:n<s?o={x:n/s,y:1}:o={x:1,y:1},r.repeat.set(o.x,o.y),r.updateMatrix()}static resizeTextureLayers(e,t,r){let n=r.userData.layers,s=n.getLayers();for(let o=0;o<s.length;o++){let a=s[o];L1(a)&&($o.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),n.updateLayerUniform())}}static resizeComplex(e,t,r,n){let s=e/t,o,a=r.image;rA(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,n.geometry.type.includes("Shape")?(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t*o/s):r.repeat.set(1/e,1/t*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*s/o*-1,1/t):r.repeat.set(1/e*s/o,1/t)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t):r.repeat.set(1/e,1/t))):(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*o/s):r.repeat.set(1,1*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1*s/o*-1,1):r.repeat.set(1*s/o,1)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Kl=class extends kt{constructor(t,r=new Yr){super(t,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(t){super.updateGeometry(t),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(t,r){super.resizeGeometry(t,r,0),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh2D",r}clone(){let t=super.clone();return t.updateGeometry({}),t}static fromTexture(t){let r,n;if(t instanceof sh){let a=t.image;r=a.videoWidth*.5,n=a.videoHeight*.5}else{let a=t.image;r=a.width*.5,n=a.height*.5}let s=wp.create({parameters:{width:r,height:n}}),o=new Yr;return o.layersList.changeLayer(0,{type:"texture",texture:t}),o.layersList.moveLayer(0,1),o.dispose(),new Kl(s,o)}};var XF=new Ae;function zv(i){let e=!1;return i.scene.objects.traverse((t,r)=>{var n;((n=r.geometry)==null?void 0:n.type)==="BooleanGeometry"&&(e=!0)}),e}var Vp=class extends kt{constructor(t=new Le,r=new pn){super(t,r);this.booleanOp=2;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];Ot(s)&&s.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(V1(s)&&s.booleanExclude===!1&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Kn.getMeshSet(s.geometry,t===!0),s.booleanMeshSetAddress===-1)return;Kn.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else Ot(s)&&s.needsTransformForDownstream===!0?(Kn.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Kn.transformMeshSet(s.booleanMeshSetAddress,XF.multiplyMatrices(s.matrix,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Kn.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Le,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere,this.booleanMeshSetAddress=Kn.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry),this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}updateGeometry(t){this.booleanOp=t.parameters.operation,this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Vi=i=>{var e;return e=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new vn(30,30,30),e};var Hp=new ai,Gv=new Lr,nA=new Ae,Hi=(i,e,t,r,n=!1)=>{let s=e,o=i.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Gv.copy(s.boundingSphere),Gv.applyMatrix4(o),t.ray.intersectsSphere(Gv)===!1||(nA.copy(o).invert(),Hp.copy(t.ray).applyMatrix4(nA),s.boundingBox!==null&&Hp.intersectsBox(s.boundingBox)===!1))return;let a,l,c,h,u=s.index,f=s.attributes.position,d=s.drawRange,m,p;if(n===!1){let x=Math.max(0,d.start),y=Math.min(u.count,d.start+d.count);for(m=x,p=y;m<p;m+=3)if(l=u.getX(m),c=u.getX(m+1),h=u.getX(m+2),a=g(i,t,Hp,f,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let y=s.attributes.position,w=new M,b=new M,S=new M,T=new M,A=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),_=E*E,C=Math.max(0,d.start),I=Math.min(y.count,d.start+d.count);for(let N=C,R=I-1;N<R;N+=A){if(w.fromBufferAttribute(y,N),b.fromBufferAttribute(y,N+1),Hp.distanceSqToSegment(w,b,T,S)>_)continue;T.applyMatrix4(i.matrixWorld);let k=t.ray.origin.distanceTo(T);k<t.near||k>t.far||r.push({distance:k,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(x,y,w,b,S,T,A){let v=new M,E=new M,_=new M,C=new M,I=new M;if(v.fromBufferAttribute(b,S),E.fromBufferAttribute(b,T),_.fromBufferAttribute(b,A),w.intersectTriangle(v,E,_,!1,C)===null)return null;I.copy(C),I.applyMatrix4(x.matrixWorld);let R=y.ray.origin.distanceTo(I);return R<y.near||R>y.far?null:{faceIndex:1,distance:R,point:I.clone(),object:x}}};var Wp=new M,Zn=new kn,kv=class extends ci{constructor(t){let r=new Le,n=new kr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new xe(15711266),c=new xe(15711266),h=new xe(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",c),u("p","n2",c),u("p","n3",c),u("p","n4",c),u("u1","u2",h),u("u2","u3",h),u("u3","u1",h);function u(d,m,p){f(d,p),f(m,p)}function f(d,m){s.push(0,0,0),o.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(s.length/3-1)}r.setAttribute("position",new Ce(s,3)),r.setAttribute("color",new Ce(o,3));super(r,n);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,r=this.pointMap,n=!0;Zn.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=n?.8:1e-4;xi("n1",r,t,Zn,-s,-o,a),xi("n2",r,t,Zn,s,-o,a),xi("n3",r,t,Zn,-s,o,a),xi("n4",r,t,Zn,s,o,a);let l=a;xi("f1",r,t,Zn,-s,-o,l),xi("f2",r,t,Zn,s,-o,l),xi("f3",r,t,Zn,-s,o,l),xi("f4",r,t,Zn,s,o,l);let c=l,h=.5;xi("u1",r,t,Zn,s*.7*h,o*1.1,c),xi("u2",r,t,Zn,-s*.7*h,o*1.1,c),xi("u3",r,t,Zn,0,o*(1.1+.9*h),c),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function xi(i,e,t,r,n,s,o){Wp.set(n,s,o).unproject(r);let a=e[i];if(a!==void 0){let l=t.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],Wp.x,Wp.y,Wp.z)}}var jp=class extends Vi(kv){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,r){Hi(this.object,this.geometry,t,r,!0)}};var Zl=class extends Vi(Zf){constructor(t,r=15,n=10066329){super(t,r,n);this.object=t;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,Zl.geometryHelper,t,r)}};var $l=class extends Vi($f){constructor(t,r=15){super(r);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,r){Hi(this.object,$l.geometryHelper,t,r)}update(){}};var ec=class extends Vi(Kf){constructor(t,r=15,n=6710886){super(t,r,n);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,ec.geometryHelper,t,r)}};var qp=class extends Vi(Jf){constructor(t,r=6710886){super(t,r);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,qp.geometryHelper,t,r)}update(){if(this.object!==void 0){let t=qp._vector,r=this.object.distance?this.object.distance:1e3,n=r*Math.tan(this.object.angle);this.cone.scale.set(n,n,r),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},wu=qp;wu._vector=new M;var Wi=(i,e)=>class extends i{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let s of this.children)Qn(s)&&s.traverseEntity(o=>{gs(o)&&o.visible&&(o.objectHelper.visible=n)})}raycast(n,s){this.objectHelper.raycast(n,s)}copy(n,s=!0){return super.copy(n,s),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let s=super.toJSON(n),o=s.object;return o.enableHelper=this.enableHelper,s}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(n,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;n.color!==void 0&&(o.color=pr(n.color,s)),n.intensity!==void 0&&(o.intensity=n.intensity),n.depth!==void 0&&(o.shadow.camera.far=n.depth,o.shadow.needsUpdate=!0),n.shadows!==void 0&&(this.castShadow=n.shadows),n.helper!==void 0&&(this.enableHelper=n.helper,o.gizmos.shadowmap.visible=n.helper)}return this}};var tc=new M,Vv=new M,Nn=class extends Wi(Jn(kn),jp){constructor(t=window.innerWidth,r=window.innerHeight,n=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Wo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=r,this.orthoCamera=new Co(t*-.5,t*.5,r*.5,r*-.5,s!=null?s:-5e4,o),this.perspCamera=new sr(n,t/r,s!=null?s:50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(t,r){let n=new Nn().fromState(r);return n.enableHelper=!0,n.objectHelper.update(),n.uuid=t,n}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,r){t==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(t,r){r>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(tc),this.targetOffset=tc.distanceTo(t)}getTarget(t=new M){return this.getWorldDirection(Vv),this.getWorldPosition(tc),Vv.multiplyScalar(this.targetOffset),t.copy(tc).add(Vv),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(tc),tc.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new zt),r=new M(0,0,1).applyQuaternion(t),n=new M().copy(ot.DefaultUp);this.isUpVectorFlipped&&n.negate(),n.applyQuaternion(t);let s=new M().copy(ot.DefaultUp).projectOnPlane(r),o=new M().crossVectors(s,n).dot(r)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(n)*o}getViewFrontToObject(t){let r=t.getWorldPosition(new M),s=t.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().add(s),target:r}}getViewToObject(t){let r=t.getWorldPosition(new M),s=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().sub(s),target:r}}setViewplaneSize(t,r){this.left=-t*.5,this.right=t*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=t/r,this.updateProjectionMatrix()}toOrthographic(t){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}toPerspective(t){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,r,n,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,r,n,s,o,a):this.orthoCamera.setViewOffset(t,r,n,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(t){this._cameraType==="PerspectiveCamera"?this.toPerspective(t):this._cameraType==="OrthographicCamera"&&this.toOrthographic(t)}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,r){return super.copy(t,r),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(t){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(t),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,r}fromJSON(t){var r;if(super.fromJSON(t),this.cameraType=t.cameraType,t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.orbitControlsTarget!==void 0){let n=this.getWorldPosition(new M),s=new M().fromArray(t.orbitControlsTarget);this.targetOffset=s.distanceTo(n)}else t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=t.angleOffsetFromUp)!=null?r:0,t.left!==void 0&&(this.left=t.left),t.right!==void 0&&(this.right=t.right),t.top!==void 0&&(this.top=t.top),t.bottom!==void 0&&(this.bottom=t.bottom),t.view!==void 0&&(this.view=Object.assign({},t.view)),t.zoomOrtho!==void 0&&(this.orthoCamera.zoom=t.zoomOrtho),t.nearOrtho!==void 0&&(this.orthoCamera.near=t.nearOrtho),t.far!==void 0&&(this.far=t.far),t.aspect!==void 0&&(this.aspect=t.aspect),t.fov!==void 0&&(this.fov=t.fov),t.focus!==void 0&&(this.focus=t.focus),t.filmGauge!==void 0&&(this.filmGauge=t.filmGauge),t.filmOffset!==void 0&&(this.filmOffset=t.filmOffset),t.zoomPersp!==void 0&&(this.perspCamera.zoom=t.zoomPersp),t.nearPersp!==void 0&&(this.perspCamera.near=t.nearPersp),this.updateProjectionMatrix(),this}toCameraState(t=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return wl(r,t)}fromCameraState(t){let{orthographic:r,perspective:n}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),n!==void 0&&(n.near!==void 0&&(this.perspCamera.near=n.near),n.fov!==void 0&&(this.perspCamera.fov=n.fov),n.zoom!==void 0&&(this.perspCamera.zoom=n.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return be(se(se({},super.toState(t)),this.toCameraState(t)),{type:this.cameraType})}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var ys=class extends Wi(Jn(rs),$l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,r){let n=new ys().fromState(r);return n.uuid=t,n.enableHelper=!0,n.objectHelper.update(),n}toJSON(t){let r=super.toJSON(t);return r.object.objectType="EmptyObject",r}};var rc=class extends Wi(Jn(ph),Zl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let s=new Wn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new rc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.left=n.left,r.right=n.right,r.top=n.top,r.bottom=n.bottom,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromDirectionalLightState(t,r){let n=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,r),t.size!==void 0&&G1(this,t.size),n&&this.update(),this}fromState(t,r){return super.fromState(t),this.fromDirectionalLightState(t,r),this}};var nc=class extends Wi(Jn(dh),ec){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),a=new Kt(s,o),l=new Fo(a,new xe(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,r,n){let s=new nc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let r=this._gizmos[t];if(r instanceof Fo){let n=this.shadow.camera,s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);r.box.set(s,o),r.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s,o;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray((o=t.shadow.mapSize)!=null?o:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromPointLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,r){return super.fromState(t),this.fromPointLightState(t,r),this}};var iA=new M,sA=new M,oA=new zt,ic=class extends Wi(Jn(fh),wu){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=et.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let s=new Wn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new ic().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),sA.setFromMatrixPosition(this.matrixWorld),oA.setFromRotationMatrix(this.matrixWorld),iA.copy(this.up).applyQuaternion(oA).negate().multiplyScalar(this.distance),this.target.position.copy(sA).add(iA),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.decay=t.decay,this.penumbra=t.penumbra,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromSpotLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),this}fromState(t,r){return super.fromState(t),this.fromSpotLightState(t,r),this}};var sc=class extends kt{constructor(t,r=new pn){super(t,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}};var oc=class extends sc{constructor(t,r=new pn){super(t,r);this.objectType="NonParametric"}toJSON(t){let r=super.toJSON(t);return r.object.objectType="NonParametric",r}};var Yp=class extends cn{constructor(e){super(e)}load(e,t,r,n){let s=this,o=new ls(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){let l;try{l=JSON.parse(a)}catch{console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),l=JSON.parse(a.substring(65,a.length-2))}let c=s.parse(l);t&&t(c)},r,n)}parse(e){return new Xp(e)}},Xp=class{constructor(e){this.type="Font",this.data=e}generateShapes(e,t=100){let r=[],n=JF(e,t,this.data);for(let s=0,o=n.length;s<o;s++)Array.prototype.push.apply(r,n[s].toShapes());return r}};function JF(i,e,t){let r=Array.from(i),n=e/t.resolution,s=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*n,o=[],a=0,l=0;for(let c=0;c<r.length;c++){let h=r[c];if(h===`
3926
+ `)}return r}copy(t){return super.copy(t),t.color&&(this.color=t.color.clone()),this.roughness=t.roughness.clone(),this.metalness=t.metalness.clone(),t.position&&(this.position=t.position.clone()),t.afterColor&&(this.afterColor=t.afterColor.clone()),t.alpha&&(this.alpha=t.alpha.clone()),t.reflectivity&&(this.reflectivity=t.reflectivity.clone()),t.shadingAlpha&&(this.shadingAlpha=t.shadingAlpha.clone()),t.shadingBlend&&(this.shadingBlend=t.shadingBlend.clone()),this}};var Op=class extends Bn{constructor(t=new Np,r){super(t,t,r);this.type="StandardNodeMaterial",this.fragment=t}get color(){return this.fragment.color}set color(t){this.fragment.color=t}get afterColor(){return this.fragment.afterColor}set afterColor(t){this.fragment.afterColor=t}get alpha(){return this.fragment.alpha}set alpha(t){this.fragment.alpha=t}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(t){this.fragment.shadingAlpha=t}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(t){this.fragment.shadingBlend=t}get position(){return this.fragment.position}set position(t){this.fragment.position=t}get roughness(){return this.fragment.roughness}set roughness(t){this.fragment.roughness=t}get metalness(){return this.fragment.metalness}set metalness(t){this.fragment.metalness=t}get reflectivity(){return this.fragment.reflectivity}set reflectivity(t){this.fragment.reflectivity=t}};var Yl=class extends Op{constructor(e,t,r){super(t,e),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Zr){let t=e.userData.layers,r=e.fragment;super.copy(e);let n=r.clone();this.fragment=n,this.vertex=n;let s=t.clone(this);this.userData.layers=s,n.shadingAlpha.value=r.shadingAlpha.value,n.shadingBlend.value=r.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,r){let n=r.getNode(t.vertex),s=new Yl(void 0,n);return s.fromJSON(t,r),s}dispose(){super.dispose()}};function pr(i,e){let t;if(typeof i=="string"){let r=e==null?void 0:e.getColor(i);r?t=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Wr(0,0,0,0))}else return"a"in i?new Wr(i.r,i.g,i.b,i.a):new Wr(i.r,i.g,i.b,1);return t}function Fp(i,e){switch(i.data.type){case"light":return yi(i);case"fresnel":return MF(i,e);case"gradient":return AF(i);case"depth":return TF(i);case"normal":return EF(i);case"noise":return _F(i,e);case"texture":return CF(i,e);case"rainbow":return DF(i);case"transmission":return PF(i,e);case"matcap":return LF(i,e);case"displace":return IF(i);case"color":default:return SF(i,e)}}function R1(i){return{type:i.data.type}}function yi(i){let{alpha:e,mode:t}=i.data;return be(se({},R1(i)),{alpha:e,mode:t})}function SF(i,e){return be(se({},yi(i)),{color:pr(i.data.color,e)})}function MF(i,e){let{bias:t,scale:r,intensity:n,factor:s,color:o}=i.data;return be(se({},yi(i)),{color:pr(o,e),bias:t,scale:r,intensity:n,factor:s})}function AF(i){let{gradientType:e,smooth:t,colors:r,steps:n,angle:s,offset:o,morph:a}=i.data;return be(se({},yi(i)),{gradientType:e,smooth:t,colors:r.map(l=>new Je(l[0],l[1],l[2],l[3])),num:r.length,steps:n,offset:new B(...o),morph:new B(...a),angle:s})}function TF(i){let{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:o,direction:a,colors:l,steps:c,smooth:h,num:u}=i.data;return be(se({},yi(i)),{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:new M(...o),direction:a?new M(...a):new M(1,0,0),num:u,colors:l.map(f=>new Je(f[0],f[1],f[2],f[3])),steps:c,smooth:h})}function EF(i){let{cnormal:e}=i.data;return be(se({},yi(i)),{cnormal:new M(e[0],e[1],e[2])})}function _F(i,e){let{data:t}=i;return be(se({},yi(i)),{scale:t.scale,move:t.move,fA:new B(...t.fA),fB:new B(...t.fB),size:new M(...t.size),distortion:new B(...t.distortion),colorA:pr(t.colorA,e),colorB:pr(t.colorB,e),colorC:pr(t.colorC,e),colorD:pr(t.colorD,e),noiseType:t.noiseType})}function CF(i,e){let{projection:t,axis:r,side:n,crop:s,size:o}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,u=new Dt,f;if(typeof a=="string")f=e==null?void 0:e.getImage(a);else{let d=new Image;d.src=a.data,d.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad(a.data))},f=d}return u.image=f,u.repeat.set(c[0],c[1]),u.offset.set(h[0],h[1]),u.wrapS=u.wrapT=l,be(se({},yi(i)),{texture:u,mat:new Ft().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:s,projection:t,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(n),size:o})}function DF(i){let{data:e}=i;return be(se({},yi(i)),{filmThickness:e.filmThickness,movement:e.movement,wavelengths:new M(...e.wavelengths),noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,offset:new M(...e.offset)})}function PF(i,e){let{data:t}=i;return be(se({},yi(i)),{thickness:t.thickness,ior:t.ior,roughness:t.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap})}function LF(i,e){let t=new Dt,{image:r}=i.data.texture,n;if(typeof r=="string")n=e==null?void 0:e.getImage(r);else{let o=new Image;o.src=r.data,o.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad(r.data))},n=o}t.image=n;let s=16777215;return be(se({},yi(i)),{color:s,texture:t})}function IF(i){let{data:e}=i,t=be(se({},R1(i)),{intensity:e.intensity});if(e.displacementType==="noise")return be(se({},t),{offset:new M(...e.offset),scale:e.scale,movement:e.movement,noiseType:e.noiseType});{let r=new Dt,n=new Ft().setUvTransform(0,0,1,1,0,0,0);return be(se({},t),{texture:r,mat:n,crop:e.crop})}}function Up(i,e,t){if(t.type==="displace"&&(i==="intensity"||i==="visible")){let r=e.uniforms[`f${e.id}_intensity`];return r?(r.value=t.intensity*(t.visible?1:0),r):void 0}if(t.type!=="displace"&&(i==="alpha"||i==="visible")){let r=e.uniforms[`f${e.id}_alpha`];return r?(r.value=t.alpha*(t.visible?1:0),r):void 0}}var Xl;(e=>{function i(t){return new xe(t.x,t.y,t.z).getHex()}e.getHex=i})(Xl||(Xl={}));var B1;(e=>{function i(t){return new Je(t.r,t.g,t.b,t.a)}e.getThreeVector4=i})(B1||(B1={}));var N1;(t=>{function i(r,n){r.setRGB(n.r,n.g,n.b)}t.setThreeColor=i;function e(r){return new xe(r.r,r.g,r.b).getHex()}t.getHex=e})(N1||(N1={}));function gu(i,e){return typeof i=="string"?e.getMaterialOrDeletedPlaceholder(i):Lv(i,e)}function O1(i,e){return i.map(t=>gu(t,e))}function Lv(i,e){var o,a;let t=(o=i.layers)!=null?o:fi.defaultTwoLayerData("phong").layers,r=RF(t),n;switch(r.category){case"basic":n=new Yr;break;case"lambert":{n=new jl;break}case"toon":{n=new ql;break}case"physical":n=new Yl;break;case"phong":default:{n=new pn;break}}n.name=(a=i.name)!=null?a:"Untitled Material";let s=n.userData.layers;BF(s);for(let l=t.length-1;l>=0;l--)NF(s,t[l],e);switch(r.category){case"basic":break;case"lambert":{let h=n,f=pr(r.emissive,e);f instanceof xe?h.emissive.value=f:h.emissive.value.setHex(Xl.getHex(f));break}case"toon":{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof xe?h.specular.value=f:h.specular.value.setHex(Xl.getHex(f));break}case"physical":let l=n,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof xe?h.specular.value=f:h.specular.value.setHex(Xl.getHex(f));break}}return s.blendColors(),s.blendAfterColors(),s.blendPositions(),n}function RF(i){for(let e of i)if(e.data.type==="light")return e.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function BF(i){for(let e of i.getLayers())i.removeLayer(e.id)}function NF(i,e,t){let r=Fp(e,t);r.type==="transmission"&&(r.transmissionSamplerMap=t==null?void 0:t.transmissionSamplerMap,r.transmissionDepthMap=t==null?void 0:t.transmissionDepthMap);let n=i.addLayer(r);n.uuid=e.id;for(let s in e.data)Up(s,n,e.data)}var Zo=i=>"isEntity"in i,er=i=>"isAbstractMesh"in i,Ot=i=>i!==null&&i.isBooleanMesh,F1=i=>i.objectType==="CombinedCamera",U1=i=>Zo(i)&&(i.objectType==="LightDirectional"||i.objectType==="LightSpot"||i.objectType==="LightPoint");var gs=i=>"objectHelper"in i;function Iv(i,e){var r;let t=!1;e.position&&(i.position.fromArray(e.position),t=!0),e.rotation&&(i.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,i.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(t=!0,i.hiddenMatrix.fromArray((r=e.hiddenMatrix)!=null?r:Ii.identity)),t&&(i.updateMatrix(),Ot(i.parent)&&er(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=e.isUpVectorFlipped),i.updateUp())}function OF(i,e){Iv(i,e),e.name!==void 0&&(i.name=e.name),e.visible!==void 0&&(i.isEntity?i.visibility=e.visible:i.visible=e.visible)}function z1(i,e,t){OF(i,e),e.color!==void 0&&(i.color=pr(e.color,t)),e.intensity!==void 0&&(i.intensity=e.intensity),e.shadows!==void 0&&!(i instanceof Hs)&&(i.castShadow=e.shadows),i.shadow&&!(i instanceof Hs)&&e.depth!==void 0&&(i.shadow.camera.far=e.depth,i.shadow.needsUpdate=!0),e.helper!==void 0&&gs(i)&&(i.enableHelper=e.helper,i.gizmos.shadowmap.visible=e.helper)}function G1(i,e){i.shadow.camera.right=e/2,i.shadow.camera.left=-e/2,i.shadow.camera.top=e/2,i.shadow.camera.bottom=-e/2,i.shadow.needsUpdate=!0}var Ql=new Kt,Xr=new M,Ge=new M,wr=new Ae;function FF(i,e,t=0,r=e.count){let n=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=t;h<r;h++){let u=e.getX(h),f=e.getY(h),d=e.getZ(h);u<n&&(n=u),f<s&&(s=f),d<o&&(o=d),u>a&&(a=u),f>l&&(l=f),d>c&&(c=d)}return i.min.set(n,s,o),i.max.set(a,l,c),i}var k1=(i,e,t,r)=>{var n;if(er(i)){let s=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?Xr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(FF(Ql,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),Ql.getCenter(Xr)),i.forceComputeSize?Ql.getSize(Ge).multiplyScalar(.5):Ge.set(s.width,s.height,(n=s.depth)!=null?n:0).multiplyScalar(.5)}else if(gs(i)&&r===!0){let s=i.geometryHelper.getAttribute("position");Ql.setFromArray(s.array),Ql.getCenter(Xr),Ql.getSize(Ge).multiplyScalar(.5)}else Xr.setScalar(0),Ge.setScalar(0);wr.copy(e).multiply(i.matrixWorld),Ge.x===0&&Ge.y===0&&Ge.z===0?t.push(new M(Xr.x,Xr.y,Xr.z).applyMatrix4(wr)):t.push(new M(-Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr))},yu=class extends Kt{constructor(){super(...arguments);this.matrix=new Ae;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(r=>r.clone()),this.faces=t.faces.map(r=>r.clone()),this.edges=t.edges.map(r=>r.clone()),this.centerEdges=t.centerEdges.map(r=>r.clone()),this}setFromObjectSize(t,r=!1){t.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let n=new Ae().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,n,r)}expandByObjectSize(t,r,n=!1){let s=[];return n===!0?t.traverseEntity(o=>{o.visible&&k1(o,r,s,t.enableHelper===!0)}):k1(t,r,s,t.enableHelper===!0),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(wr.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Ge).multiplyScalar(.5),this.getCenter(Xr),wr.copy(this.matrix).setPosition(Xr),this.vertices=[new M(-Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).applyMatrix4(wr)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jr(this.vertices[0],this.vertices[3]),new Jr(this.vertices[1],this.vertices[2]),new Jr(this.vertices[5],this.vertices[6]),new Jr(this.vertices[4],this.vertices[7]),new Jr(this.vertices[0],this.vertices[1]),new Jr(this.vertices[3],this.vertices[2]),new Jr(this.vertices[7],this.vertices[6]),new Jr(this.vertices[4],this.vertices[5]),new Jr(this.vertices[0],this.vertices[4]),new Jr(this.vertices[1],this.vertices[5]),new Jr(this.vertices[2],this.vertices[6]),new Jr(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(t=>t.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function vu(i){let e=[];for(let t in i){let r=i[t];delete r.metadata,e.push(r)}return e}function UF(i){let e=[];for(let t in i)e.push(i[t]);return e}var zp=i=>class extends i{hasEntityChild(){return this.children.some(t=>Zo(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===t)return!0;r=r.parent}return!1}attach(t,r){this.updateWorldMatrix(!0,!1);let n=new Ae().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),n.multiply(t.parent.matrixWorld)),Zo(t)?t.hiddenMatrix.premultiply(n):t.applyMatrix4(n),t.updateWorldMatrix(!1,!1),this.add(t),r!==void 0&&(this.children.pop(),this.children.splice(r,0,t)),this}copy(t,r=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),r===!0)for(let n=0;n<t.children.length;n++){let s=t.children[n];this.add(s.clone())}return this}toJSON(t){let r=t===void 0,n={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},n.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Zo(o)||o instanceof bn)&&s.children.push(o.toJSON(t).object)}if(r){let o=vu(t.geometries),a=vu(t.materials),l=vu(t.textures),c=vu(t.images),h=vu(t.interactionStates),u=UF(t.nodes);o.length>0&&(n.geometries=o),a.length>0&&(n.materials=a),l.length>0&&(n.textures=l),c.length>0&&(n.images=c),h.length>0&&(n.interactionStates=h),u.length>0&&(n.nodes=u)}return n.object=s,n}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var Qn=i=>"isEntity"in i,V1=i=>"isAbstractMesh"in i,Jn=i=>class extends zp(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ae;this._singleBBox=new yu;this._recursiveBBox=new yu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let n of this.children)Qn(n)&&n.traverseEntity(s=>{gs(s)&&s.visible&&(s.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Qn(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let n of this.children)Qn(n)&&n.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let n of this.children)n.updateMatrixWorld(r)}updateWorldMatrix(r,n){let s=this.parent;if(r&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let o of this.children)o.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Qn(s)&&this.add(s.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Qn(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let r=new Ae,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(n);for(let s of this.children)Qn(s)&&s.hiddenMatrix.premultiply(r)}toJSON(r){let n=super.toJSON(r),s=n.object;return this.raycastLock===!0&&(s.raycastLock=!0),this.scaleLock===!0&&(s.scaleLock=!0),s.hiddenMatrix=this.hiddenMatrix.toArray(),n}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let n=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Ae}),this.copy(r),r.children=n,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let n={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return wl(n,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let n=se({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return wl(n,r)}fromState(r,n){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};var xu=class extends ot{constructor(t,r={}){super();this.object=t;let n=t.recursiveBBox.getSize(new M),s=.1;this.parameters=kd.defaultData(n.toArray(),s),Vo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let t of this.children)t.material=this.object.material}setHideBase(t){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(t){let r=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!t}else{if(this.children.length>0)if(this.object.material.visible=!0,t){let r=this.object.material.clone();for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!t}this.parameters.hideBase=t}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let r=0,n=t-this.children.length;r<n;++r){let s=this.object.shallowClone(!1);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,n=this.children.length-t;r<n;++r)this.remove(this.children[0])}_updateRadial(t){let r=t.radial,n=r.start*et.DEG2RAD,s=r.end*et.DEG2RAD,o=n-s,a=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD),l;switch(r.axis){case"z":l=new M(0,0,1);break;case"y":l=new M(0,1,0);break;default:case"x":l=new M(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let u=o/t.count*c-n;switch(r.axis){case"x":h.rotation.set(0,u,0);break;case"y":h.rotation.set(0,0,u);break;case"z":h.rotation.set(u,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let r=t.linear,n=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD);for(let[s,o]of this.children.entries())o.hiddenMatrix.identity(),o.scale.x=1+(r.scale[0]-1)*s,o.scale.y=1+(r.scale[1]-1)*s,o.scale.z=1+(r.scale[2]-1)*s,o.rotation.x=n.x*s,o.rotation.y=n.y*s,o.rotation.z=n.z*s,o.position.x=r.position[0]*s,o.position.y=r.position[1]*s,o.position.z=r.position[2]*s}_updateGrid(t){let r=0,n=t.grid;if(n.useCenter===!0){let s={x:n.count[0]%2===0?2:1,y:n.count[1]%2===0?2:1,z:n.count[2]%2===0?2:1},o=new M(n.size[0]*(n.count[0]-s.x)*.5,n.size[1]*(n.count[1]-s.y)*.5,n.size[2]*(n.count[2]-s.z)*.5);for(let a=0;a<n.count[0];a++)for(let l=0;l<n.count[1];l++)for(let c=0;c<n.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=n.size[0]*a-o.x,h.position.y=n.size[1]*l-o.y,h.position.z=n.size[2]*c-o.z}}else for(let s=0;s<n.count[0];s++)for(let o=0;o<n.count[1];o++)for(let a=0;a<n.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=n.size[0]*s,l.position.y=-n.size[1]*o,l.position.z=-n.size[2]*a}}fromJSON(t){return this}toJSON(){return{}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),Vo(this.parameters,t),this.update(),this}};var kt=class extends Jn(Vt){constructor(t,r){super(t,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ae;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}getSelectedMaterial(t){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),this.material[t!=null?t:this.selectedMaterial]):this.material}setSelectedMaterial(t,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=t):(this.material.dispose(),this.material=t)}updateGeometry(t){let r=this.geometry,n=Rv[r.userData.type],s=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,o=n.build(n.normalizeInputs(t,s)),a=r.uuid;if(this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(t,r,n){$h.resizeGeometry(this.geometry,{width:t,height:r,depth:n})}shallowClone(t){return new this.constructor(this.geometry,this.material).shallowCopy(this,t)}clone(t){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=bu(r),s=Array.isArray(this.material)?this.material.map(o=>o.clone()):this.material.clone();return new this.constructor(n,s).copy(this,t)}copy(t,r=!0){return super.copy(t,r),t.cloner&&(this.cloner=new xu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new xu(this)),this.cloner.fromClonerState(t))}fromState(t,r){var n,s,o;return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=(n=t.castShadow)!=null?n:!0,this.receiveShadow=(s=t.receiveShadow)!=null?s:!0,this.booleanExclude=(o=t.booleanExclude)!=null?o:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Kn.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ot(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)er(t)&&(t.freeBooleanPointer(),Ot(t)&&t.invalidateUpstreamBooleanData())}};var zF=new M(0,0,1),H1=new M,W1=new M,j1=new Ft,co=class extends kt{constructor(t=Hr.create({}),r=new Yr({side:or})){var n;super(t,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Yt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="VectorObject",r}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(t){var r,n;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=t,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),j1.getNormalMatrix(this.matrixWorld),H1.copy(zF).applyMatrix3(j1).normalize(),W1.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(H1,W1)}clone(t){let r=this.shape.clone(),n=this.material.clone(),s=this.geometry.userData,o=Hr.create(Object.assign({},s,{shape:r})),a=new co(o,n).copy(this,t);return a.shape=r,r.update(),a}raycast(t,r){kt.prototype.raycast.call(this,t,r)}};function Gp(i,e){return GF(i)}function GF(i){let e={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Tt.createFromState(i.shape,i.width,i.height);e.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var n;return r.materialIndex=Math.max((n=r.materialIndex)!=null?n:0,0)}),e.geometry=new Ws().parse(i));let t;try{t=bu(e)}catch(r){console.error(r)}if(!t){let r=Tt.createFromState(_l.defaultData(),100,100);e.shape=r,t=bu(e)}return t}var Ke;Mp.then(i=>{Ke=i});var q1=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Y1=new Uint32Array([0,1,2,3]),X1=new Uint8Array([4]),vi=class{static build(i,e,t,r){let n,s,o;if((i==null?void 0:i.positionWASM)!==void 0){e&&e!==0&&(Ke.free_bvh(e),Ke.free_subdivision_surface(e));try{n=vi.allocate(i,r)}catch(a){console.error(a,i),n=vi.allocate({positionWASM:q1,indexWASM:Y1,verticesPerFaceWASM:X1},r)}Ke.set_destination_refinement_level(n,0),s=vi.buildLevel(n,!0,t)}else n=e;if(i!==void 0&&i.subdivisions!==void 0){let a=kF(i.subdivisions,i.positionWASM.length);Ke.set_destination_refinement_level(n,a),a>0?o=vi.buildLevel(n,!1,t):o=null}return{subdivPointer:n,originalGeometry:s,subdividedGeometry:o}}static primitiveToQuads(i,e){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let t=i.shape!==void 0?e.geometry:Gp(i),r,n,s,o;return{positions:r,triIndices:o}=Fv(t.getAttribute("position"),t.getIndex()),{indices:n,verticesPerFace:s}=Uv(r,o,t),{positions:r,indices:n,verticesPerFace:s}}static allocate(i,e){var b;let t,r,n,s=[],o=[];i.positionWASM&&i.positionWASM.length>0?(t=i.positionWASM,r=i.indexWASM,n=i.verticesPerFaceWASM):(t=q1,r=Y1,n=X1);let a=t.length,l=r.length,c=n.length,h=t.length+s.length+o.length,u=r.length+n.length,f=h*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,p=Ke._malloc(f),g=new Float32Array(Ke.HEAPF32.buffer,p,h),x=new Uint32Array(Ke.HEAPU32.buffer,p+d,u);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),x.set(r,0),x.set(n,r.length);let y;(b=i==null?void 0:i.scaleBaked)!=null&&b.some(S=>S!==1)&&(y=new Ae().makeScale(...i.scaleBaked)),e&&(y?y.premultiply(e):y=e);let w=y?Ke.alloc_subdivision_surface2(p,a,p+d,l,p+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,y.elements):Ke.alloc_subdivision_surface(p,a,p+d,l,p+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return Ke._free(p),w}static buildLevel(i,e,t,r,n){let s=n?Ke.get_mesh_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t!=null?t:!e,n.elements):Ke.get_mesh_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t!=null?t:!e),o=8,a=Ke.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),c=0,h=Ke.HEAPU32[a[c]>>2],u=Ke.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=Ke.HEAPU32[a[c]>>2],d=Ke.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let m=Ke.HEAPU32[a[c]>>2],p=Ke.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let g=Ke.HEAPU32[a[c]>>2],x=Ke.HEAPU32.subarray(g>>2,(g>>2)+l[c]);if(c++,r===void 0){let y=new Le;if(y.setIndex(new Os(x,1)),y.setAttribute("position",new Ce(u,3)),y.setAttribute("normal",new Ce(d,3)),e){y.setAttribute("faceMap",new Os(p,1));let w=new Float32Array(d.length/3*4).fill(0);y.setAttribute("color",new Ve(w,4))}return Ke.free_mesh_data(s),y.userData.type="SubdivGeometry",y}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,Ke.free_mesh_data(s)}static buildControlCageWireframe(i,e,t){let r=Ke.get_wireframe_data_for_base_level(i),n=4,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+2),a=0,l=Ke.HEAPU32[s[a]>>2],c=Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=Ke.HEAPU32[s[a]>>2],u=Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]);if(e===void 0){let f=new Le;f.setAttribute("position",new Ce(c,3));let d=new Float32Array(c.length);for(let m=0,p=c.length;m<p;)d[m++]=t.r,d[m++]=t.g,d[m++]=t.b;return f.setAttribute("color",new Ve(d,3)),f.setIndex(new Os(u,1)),Ke.free_wireframe_data_for_base_level(r),f}e.getAttribute("position").copyArray(c),e.attributes.position.needsUpdate=!0,Ke.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,e,t){e||Ke.set_destination_refinement_level(i,1);let r=t?Ke.get_topological_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t.elements):Ke.get_topological_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED),n=6,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=Ke.HEAPU32[s[a]>>2],c=new Float32Array(Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=Ke.HEAPU32[s[a]>>2],u=new Uint32Array(Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=Ke.HEAPU32[s[a]>>2],d=new Uint8Array(Ke.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return Ke.free_topological_data(r),{positions:c,indices:u,verticesPerFace:d}}};function kF(i,e){let t=i;return t=Math.min(t,3-Math.ceil(Math.log(e/172e3)/Math.log(4))),Math.max(t,0)}var Q1=["getX","getY","getZ"];function Fv(i,e){let t={},r=e?e.count:i.count,n=0,s=[],o=[],a=1e4;for(let c=0;c<r;c++){let h=e?e.getX(c):c,u="";for(let f=0;f<3;f++)u+=`${~~(i[Q1[f]](h)*a)},`;if(u in t)s.push(t[u]);else{for(let f=0;f<3;f++)o.push(i[Q1[f]](h));t[u]=n,s.push(n),n++}}let l=[];for(let c=0;c<s.length;c+=3)s[c]===s[c+1]||s[c]===s[c+2]||s[c+1]===s[c+2]||l.push(s[c],s[c+1],s[c+2]);return{positions:o,triIndices:l}}var kp=new M,Bv=new M,Nv=new M,Ov=new M;function Uv(i,e,t){var s;let r=[],n=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<o.length;c+=2)a+=(o[c]-o[(c===0?o.length:c)-2])*(o[c+1]+o[(c===0?o.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<o.length;c+=2)i.push(o[c],o[c+1],0),r.push(l++);else for(let c=o.length-2;c>=0;c-=2)i.push(o[c],o[c+1],0),r.push(l++);return n.push(l),{indices:r,verticesPerFace:n}}for(let o=0,a=(s=t.capStartIndex)!=null?s:e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){kp.set(i[e[o]*3],i[e[o]*3+1],i[e[o]*3+2]),Bv.set(i[e[o+1]*3],i[e[o+1]*3+1],i[e[o+1]*3+2]),Nv.set(i[e[o+4]*3],i[e[o+4]*3+1],i[e[o+4]*3+2]),Ov.set(i[e[o+5]*3],i[e[o+5]*3+1],i[e[o+5]*3+2]),Bv.sub(kp).normalize(),Nv.sub(kp).normalize(),Ov.sub(kp).normalize();let l=Bv.cross(Nv).dot(Ov);Math.abs(l)>.005?(r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3):(r.push(e[o],e[o+1],e[o+4],e[o+5]),n.push(4),o+=6)}else r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(o.push(h),l++),i[c+2]===t.userData.parameters.depth&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),r.push(...o,...a),n.push(l,l)}return{indices:r,verticesPerFace:n}}var Kn={};Cx(Kn,{calcBoolean:()=>WF,calcBooleanTopological:()=>HF,freeMeshSet:()=>YF,getMeshSet:()=>jF,transformMeshSet:()=>qF});var K1,Z1=new Promise(i=>{K1=i}),J1=!1;async function $1(){if(J1)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.49/build",[t,r]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:r});K1(s),J1=!0}var yt,Jl;Z1.then(i=>yt=i);function VF(i,e){let t,{positions:r,triIndices:n}=Fv(i.getAttribute("position"),i.getIndex()),s;if(e||i.userData.shape!==void 0){let{indices:o,verticesPerFace:a}=Uv(r,n,i);s=a.length,t=[];for(let l=0,c=0;l<s;l++){t.push(a[l]);for(let h=0;h<a[l];h++)t.push(o[c++])}}else{let o=n.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=n[a++],t[l++]=n[a++],t[l++]=n[a++]}return{positions:r,faceIndices:t,nFaces:s}}function eA(i){let e=i.length,t=e*Uint32Array.BYTES_PER_ELEMENT,r=e*Float32Array.BYTES_PER_ELEMENT,n=Number.isInteger(i[0])?t:r,s=yt._malloc(n);return(Number.isInteger(i[0])?new Uint32Array(yt.HEAPU32.buffer,s,e):new Float32Array(yt.HEAPF32.buffer,s,e)).set(i,0),s}function tA(i){switch(i){case 0:return yt.OP.UNION;case 1:return yt.OP.INTERSECTION;case 2:return yt.OP.A_MINUS_B;case 3:return yt.OP.B_MINUS_A;case 4:return yt.OP.SYMMETRIC_DIFFERENCE;case 5:return yt.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function HF(i,e){Jl===void 0&&(Jl=yt.init_csg());let t=yt.csg_calc(Jl,eA(i),i.length,tA(e),!0),r=6,n=yt.HEAPU32.subarray(t>>2,(t>>2)+r),s=n.subarray(3,3+3),o=0,a=yt.HEAPU32[n[o]>>2],l=new Float32Array(yt.HEAPF32.subarray(a>>2,(a>>2)+s[o]));o++;let c=yt.HEAPU32[n[o]>>2],h=new Uint32Array(yt.HEAPU32.subarray(c>>2,(c>>2)+s[o]));o++;let u=yt.HEAPU32[n[o]>>2],f=new Uint8Array(yt.HEAPU32.subarray(u>>2,(u>>2)+s[o]));return yt.free_mesh_data(t),{positions:l,indices:h,verticesPerFace:f}}function WF(i,e,t){Jl===void 0&&(Jl=yt.init_csg());let r=yt.csg_calc(Jl,eA(i),i.length,tA(e),!1),n=5,s=yt.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+3),a=0,l=yt.HEAPU32[s[a]>>2],c=yt.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=yt.HEAPU32[s[a]>>2],u=yt.HEAPF32.subarray(h>>2,(h>>2)+o[a]);a++;let f=o[a];t.setAttribute("position",new Ce(c,3)),t.setAttribute("normal",new Ce(u,3));let d=yt.HEAPF32.subarray((r>>2)+5,(r>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Lr),t.boundingSphere.center.set(d[0],d[1],d[2]),t.boundingSphere.radius=(d[3]**2+d[4]**2+d[5]**2)**.5,t.userData.parameters={width:d[3]*2,height:d[4]*2,depth:d[5]*2},yt.free_mesh_data(r),f}function jF(i,e){if(yt===void 0)return-1;let t,r,n;if(e&&i.userData.positions!==void 0){let p=i.userData;n=p.verticesPerFace.length,t=p.positions,r=Array(p.verticesPerFace.reduce((g,x)=>g+x,0)+n);for(let g=0,x=0,y=0;g<p.verticesPerFace.length;g++){r[y++]=p.verticesPerFace[g];for(let w=0;w<p.verticesPerFace[g];w++)r[y++]=p.indices[x++]}}else({positions:t,faceIndices:r,nFaces:n}=VF(i,e));let s=t.length,o=r.length,a=t.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,u=l*Uint32Array.BYTES_PER_ELEMENT,f=yt._malloc(c),d=new Float32Array(yt.HEAPF32.buffer,f,a),m=new Uint32Array(yt.HEAPU32.buffer,f+h,l);return d.set(t,0),m.set(r,0),yt.get_csg_mesh(f,s,f+h,o,n)}function qF(i,e){yt.transform_csg_mesh(i,e.elements)}function YF(i){yt.free_csg_mesh(i)}var Rv={ConeGeometry:WM,CubeGeometry:jM,CylinderGeometry:HM,DodecahedronGeometry:qM,EllipseGeometry:u1,HelixGeometry:m1,IcosahedronGeometry:g1,LatheGeometry:y1,NonParametricGeometry:v1,PolygonGeometry:x1,PyramidGeometry:b1,RectangleGeometry:wp,SphereGeometry:w1,PlaneGeometry:S1,StarGeometry:M1,TextFrameGeometry:Sp,TorusGeometry:A1,TorusKnotGeometry:T1,TriangleGeometry:E1,VectorGeometry:Hr},bu=i=>Rv[i.type].create(i);var rA=i=>i.tagName==="VIDEO",$o=class{static resize(e,t,r){let n=e/t,s;if(!r.image)return;let o=r.image;rA(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(e,t,r){let n=e/t,s=r.image!==void 0?r.image.width/r.image.height:1,o;n>s?o={x:1,y:s/n}:n<s?o={x:n/s,y:1}:o={x:1,y:1},r.repeat.set(o.x,o.y),r.updateMatrix()}static resizeTextureLayers(e,t,r){let n=r.userData.layers,s=n.getLayers();for(let o=0;o<s.length;o++){let a=s[o];L1(a)&&($o.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),n.updateLayerUniform())}}static resizeComplex(e,t,r,n){let s=e/t,o,a=r.image;rA(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,n.geometry.type.includes("Shape")?(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t*o/s):r.repeat.set(1/e,1/t*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*s/o*-1,1/t):r.repeat.set(1/e*s/o,1/t)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t):r.repeat.set(1/e,1/t))):(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*o/s):r.repeat.set(1,1*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1*s/o*-1,1):r.repeat.set(1*s/o,1)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Kl=class extends kt{constructor(t,r=new Yr){super(t,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(t){super.updateGeometry(t),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(t,r){super.resizeGeometry(t,r,0),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh2D",r}clone(){let t=super.clone();return t.updateGeometry({}),t}static fromTexture(t){let r,n;if(t instanceof sh){let a=t.image;r=a.videoWidth*.5,n=a.videoHeight*.5}else{let a=t.image;r=a.width*.5,n=a.height*.5}let s=wp.create({parameters:{width:r,height:n}}),o=new Yr;return o.layersList.changeLayer(0,{type:"texture",texture:t}),o.layersList.moveLayer(0,1),o.dispose(),new Kl(s,o)}};var XF=new Ae;function zv(i){let e=!1;return i.scene.objects.traverse((t,r)=>{var n;((n=r.geometry)==null?void 0:n.type)==="BooleanGeometry"&&(e=!0)}),e}var Vp=class extends kt{constructor(t=new Le,r=new pn){super(t,r);this.booleanOp=2;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];Ot(s)&&s.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(V1(s)&&s.booleanExclude===!1&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Kn.getMeshSet(s.geometry,t===!0),s.booleanMeshSetAddress===-1)return;Kn.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else Ot(s)&&s.needsTransformForDownstream===!0?(Kn.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Kn.transformMeshSet(s.booleanMeshSetAddress,XF.multiplyMatrices(s.matrix,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Kn.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Le,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere,this.booleanMeshSetAddress=Kn.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry),this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}updateGeometry(t){this.booleanOp=t.parameters.operation,this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Vi=i=>{var e;return e=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new vn(30,30,30),e};var Hp=new ai,Gv=new Lr,nA=new Ae,Hi=(i,e,t,r,n=!1)=>{let s=e,o=i.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Gv.copy(s.boundingSphere),Gv.applyMatrix4(o),t.ray.intersectsSphere(Gv)===!1||(nA.copy(o).invert(),Hp.copy(t.ray).applyMatrix4(nA),s.boundingBox!==null&&Hp.intersectsBox(s.boundingBox)===!1))return;let a,l,c,h,u=s.index,f=s.attributes.position,d=s.drawRange,m,p;if(n===!1){let x=Math.max(0,d.start),y=Math.min(u.count,d.start+d.count);for(m=x,p=y;m<p;m+=3)if(l=u.getX(m),c=u.getX(m+1),h=u.getX(m+2),a=g(i,t,Hp,f,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let y=s.attributes.position,w=new M,b=new M,S=new M,T=new M,A=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),_=E*E,C=Math.max(0,d.start),I=Math.min(y.count,d.start+d.count);for(let N=C,R=I-1;N<R;N+=A){if(w.fromBufferAttribute(y,N),b.fromBufferAttribute(y,N+1),Hp.distanceSqToSegment(w,b,T,S)>_)continue;T.applyMatrix4(i.matrixWorld);let k=t.ray.origin.distanceTo(T);k<t.near||k>t.far||r.push({distance:k,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(x,y,w,b,S,T,A){let v=new M,E=new M,_=new M,C=new M,I=new M;if(v.fromBufferAttribute(b,S),E.fromBufferAttribute(b,T),_.fromBufferAttribute(b,A),w.intersectTriangle(v,E,_,!1,C)===null)return null;I.copy(C),I.applyMatrix4(x.matrixWorld);let R=y.ray.origin.distanceTo(I);return R<y.near||R>y.far?null:{faceIndex:1,distance:R,point:I.clone(),object:x}}};var Wp=new M,Zn=new kn,kv=class extends ci{constructor(t){let r=new Le,n=new kr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new xe(15711266),c=new xe(15711266),h=new xe(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",c),u("p","n2",c),u("p","n3",c),u("p","n4",c),u("u1","u2",h),u("u2","u3",h),u("u3","u1",h);function u(d,m,p){f(d,p),f(m,p)}function f(d,m){s.push(0,0,0),o.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(s.length/3-1)}r.setAttribute("position",new Ce(s,3)),r.setAttribute("color",new Ce(o,3));super(r,n);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,r=this.pointMap,n=!0;Zn.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=n?.8:1e-4;xi("n1",r,t,Zn,-s,-o,a),xi("n2",r,t,Zn,s,-o,a),xi("n3",r,t,Zn,-s,o,a),xi("n4",r,t,Zn,s,o,a);let l=a;xi("f1",r,t,Zn,-s,-o,l),xi("f2",r,t,Zn,s,-o,l),xi("f3",r,t,Zn,-s,o,l),xi("f4",r,t,Zn,s,o,l);let c=l,h=.5;xi("u1",r,t,Zn,s*.7*h,o*1.1,c),xi("u2",r,t,Zn,-s*.7*h,o*1.1,c),xi("u3",r,t,Zn,0,o*(1.1+.9*h),c),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function xi(i,e,t,r,n,s,o){Wp.set(n,s,o).unproject(r);let a=e[i];if(a!==void 0){let l=t.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],Wp.x,Wp.y,Wp.z)}}var jp=class extends Vi(kv){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,r){Hi(this.object,this.geometry,t,r,!0)}};var Zl=class extends Vi(Zf){constructor(t,r=15,n=10066329){super(t,r,n);this.object=t;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,Zl.geometryHelper,t,r)}};var $l=class extends Vi($f){constructor(t,r=15){super(r);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,r){Hi(this.object,$l.geometryHelper,t,r)}update(){}};var ec=class extends Vi(Kf){constructor(t,r=15,n=6710886){super(t,r,n);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,ec.geometryHelper,t,r)}};var qp=class extends Vi(Jf){constructor(t,r=6710886){super(t,r);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,r){Hi(this.object,qp.geometryHelper,t,r)}update(){if(this.object!==void 0){let t=qp._vector,r=this.object.distance?this.object.distance:1e3,n=r*Math.tan(this.object.angle);this.cone.scale.set(n,n,r),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},wu=qp;wu._vector=new M;var Wi=(i,e)=>class extends i{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let s of this.children)Qn(s)&&s.traverseEntity(o=>{gs(o)&&o.visible&&(o.objectHelper.visible=n)})}raycast(n,s){this.objectHelper.raycast(n,s)}copy(n,s=!0){return super.copy(n,s),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let s=super.toJSON(n),o=s.object;return o.enableHelper=this.enableHelper,s}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(n,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;n.color!==void 0&&(o.color=pr(n.color,s)),n.intensity!==void 0&&(o.intensity=n.intensity),n.depth!==void 0&&(o.shadow.camera.far=n.depth,o.shadow.needsUpdate=!0),n.shadows!==void 0&&(this.castShadow=n.shadows),n.helper!==void 0&&(this.enableHelper=n.helper,o.gizmos.shadowmap.visible=n.helper)}return this}};var tc=new M,Vv=new M,Nn=class extends Wi(Jn(kn),jp){constructor(t=window.innerWidth,r=window.innerHeight,n=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Wo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=r,this.orthoCamera=new Co(t*-.5,t*.5,r*.5,r*-.5,s!=null?s:-5e4,o),this.perspCamera=new sr(n,t/r,s!=null?s:50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(t,r){let n=new Nn().fromState(r);return n.enableHelper=!0,n.objectHelper.update(),n.uuid=t,n}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,r){t==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(t,r){r>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(tc),this.targetOffset=tc.distanceTo(t)}getTarget(t=new M){return this.getWorldDirection(Vv),this.getWorldPosition(tc),Vv.multiplyScalar(this.targetOffset),t.copy(tc).add(Vv),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(tc),tc.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new zt),r=new M(0,0,1).applyQuaternion(t),n=new M().copy(ot.DefaultUp);this.isUpVectorFlipped&&n.negate(),n.applyQuaternion(t);let s=new M().copy(ot.DefaultUp).projectOnPlane(r),o=new M().crossVectors(s,n).dot(r)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(n)*o}getViewFrontToObject(t){let r=t.getWorldPosition(new M),s=t.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().add(s),target:r}}getViewToObject(t){let r=t.getWorldPosition(new M),s=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().sub(s),target:r}}setViewplaneSize(t,r){this.left=-t*.5,this.right=t*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=t/r,this.updateProjectionMatrix()}toOrthographic(t){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}toPerspective(t){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,r,n,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,r,n,s,o,a):this.orthoCamera.setViewOffset(t,r,n,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(t){this._cameraType==="PerspectiveCamera"?this.toPerspective(t):this._cameraType==="OrthographicCamera"&&this.toOrthographic(t)}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,r){return super.copy(t,r),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(t){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(t),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,r}fromJSON(t){var r;if(super.fromJSON(t),this.cameraType=t.cameraType,t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.orbitControlsTarget!==void 0){let n=this.getWorldPosition(new M),s=new M().fromArray(t.orbitControlsTarget);this.targetOffset=s.distanceTo(n)}else t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=t.angleOffsetFromUp)!=null?r:0,t.left!==void 0&&(this.left=t.left),t.right!==void 0&&(this.right=t.right),t.top!==void 0&&(this.top=t.top),t.bottom!==void 0&&(this.bottom=t.bottom),t.view!==void 0&&(this.view=Object.assign({},t.view)),t.zoomOrtho!==void 0&&(this.orthoCamera.zoom=t.zoomOrtho),t.nearOrtho!==void 0&&(this.orthoCamera.near=t.nearOrtho),t.far!==void 0&&(this.far=t.far),t.aspect!==void 0&&(this.aspect=t.aspect),t.fov!==void 0&&(this.fov=t.fov),t.focus!==void 0&&(this.focus=t.focus),t.filmGauge!==void 0&&(this.filmGauge=t.filmGauge),t.filmOffset!==void 0&&(this.filmOffset=t.filmOffset),t.zoomPersp!==void 0&&(this.perspCamera.zoom=t.zoomPersp),t.nearPersp!==void 0&&(this.perspCamera.near=t.nearPersp),this.updateProjectionMatrix(),this}toCameraState(t=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return wl(r,t)}fromCameraState(t){let{orthographic:r,perspective:n}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),n!==void 0&&(n.near!==void 0&&(this.perspCamera.near=n.near),n.fov!==void 0&&(this.perspCamera.fov=n.fov),n.zoom!==void 0&&(this.perspCamera.zoom=n.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return be(se(se({},super.toState(t)),this.toCameraState(t)),{type:this.cameraType})}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var ys=class extends Wi(Jn(rs),$l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,r){let n=new ys().fromState(r);return n.uuid=t,n.enableHelper=!0,n.objectHelper.update(),n}toJSON(t){let r=super.toJSON(t);return r.object.objectType="EmptyObject",r}};var rc=class extends Wi(Jn(ph),Zl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let s=new Wn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new rc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.left=n.left,r.right=n.right,r.top=n.top,r.bottom=n.bottom,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromDirectionalLightState(t,r){let n=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,r),t.size!==void 0&&G1(this,t.size),n&&this.update(),this}fromState(t,r){return super.fromState(t),this.fromDirectionalLightState(t,r),this}};var nc=class extends Wi(Jn(dh),ec){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),a=new Kt(s,o),l=new Fo(a,new xe(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,r,n){let s=new nc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let r=this._gizmos[t];if(r instanceof Fo){let n=this.shadow.camera,s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);r.box.set(s,o),r.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s,o;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray((o=t.shadow.mapSize)!=null?o:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromPointLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,r){return super.fromState(t),this.fromPointLightState(t,r),this}};var iA=new M,sA=new M,oA=new zt,ic=class extends Wi(Jn(fh),wu){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=et.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let s=new Wn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new ic().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Wn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),sA.setFromMatrixPosition(this.matrixWorld),oA.setFromRotationMatrix(this.matrixWorld),iA.copy(this.up).applyQuaternion(oA).negate().multiplyScalar(this.distance),this.target.position.copy(sA).add(iA),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.decay=t.decay,this.penumbra=t.penumbra,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromSpotLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),this}fromState(t,r){return super.fromState(t),this.fromSpotLightState(t,r),this}};var sc=class extends kt{constructor(t,r=new pn){super(t,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}};var oc=class extends sc{constructor(t,r=new pn){super(t,r);this.objectType="NonParametric"}toJSON(t){let r=super.toJSON(t);return r.object.objectType="NonParametric",r}};var Yp=class extends cn{constructor(e){super(e)}load(e,t,r,n){let s=this,o=new ls(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){let l;try{l=JSON.parse(a)}catch{console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),l=JSON.parse(a.substring(65,a.length-2))}let c=s.parse(l);t&&t(c)},r,n)}parse(e){return new Xp(e)}},Xp=class{constructor(e){this.type="Font",this.data=e}generateShapes(e,t=100){let r=[],n=JF(e,t,this.data);for(let s=0,o=n.length;s<o;s++)Array.prototype.push.apply(r,n[s].toShapes());return r}};function JF(i,e,t){let r=Array.from(i),n=e/t.resolution,s=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*n,o=[],a=0,l=0;for(let c=0;c<r.length;c++){let h=r[c];if(h===`
3927
3927
  `)a=0,l-=s;else{let u=KF(h,n,a,l,t);a+=u.offsetX,o.push(u.path)}}return o}function KF(i,e,t,r,n){let s=n.glyphs[i]||n.glyphs["?"];if(!s){console.error('THREE.Font: character "'+i+'" does not exists in font family '+n.familyName+".");return}let o=new ed,a,l,c,h,u,f,d,m;if(s.o){let p=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let g=0,x=p.length;g<x;)switch(p[g++]){case"m":a=p[g++]*e+t,l=p[g++]*e+r,o.moveTo(a,l);break;case"l":a=p[g++]*e+t,l=p[g++]*e+r,o.lineTo(a,l);break;case"q":c=p[g++]*e+t,h=p[g++]*e+r,u=p[g++]*e+t,f=p[g++]*e+r,o.quadraticCurveTo(u,f,c,h);break;case"b":c=p[g++]*e+t,h=p[g++]*e+r,u=p[g++]*e+t,f=p[g++]*e+r,d=p[g++]*e+t,m=p[g++]*e+r,o.bezierCurveTo(u,f,d,m,c,h);break}}return{offsetX:s.ha*e,path:o}}Xp.prototype.isFont=!0;var mr=class extends Vt{constructor({char:t,originalChar:r,fontFamily:n,letterSpacing:s,fontSize:o,LOD:a=16},l=new Gn({color:0,opacity:1,visible:!0,transparent:!0,side:or})){let c=mr.loadChar(t,n,a);super(c.geometry,l);this.char=t,this.originalChar=r!=null?r:t,this.fontFamily=n,this.letterSpacing=s,this.fontSize=o,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new B,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return mr._fontPath}static set FONTS_PATH(t){mr._fontPath=t}updatePosition(t,r){this.localPosition.copy(t);let n=new M(this.localPosition.x,-this.localPosition.y,0);this.position.copy(n).add(r)}updateFontSize(t){let r=t/this.resolution;this.fontSize=t,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(t){if(this.fontFamily===t)return;this.fontFamily=t;let r=mr.loadChar(this.char,t,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(t){if(this.char===t)return;this.char=t;let r=mr.loadChar(t,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(t){this.letterSpacing!==t&&(this.letterSpacing=t,this.updateFontSize(this.fontSize))}updateLOD(t){if(this.LOD===t)return;this.LOD=t;let r=mr.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let t={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new mr(t).copy(this)}static loadFont(t){return new Promise(function(r,n){mr.fontCache[t]?r(mr.fontCache[t]):new Yp().load(mr.FONTS_PATH+t+".json",o=>{mr.fontCache[t]=o,r(o)},void 0,n)})}static loadChar(t,r,n){if(mr.charCache[t]){if(mr.charCache[t][n]&&mr.charCache[t][n].fontFamily===r)return mr.charCache[t][n]}else mr.charCache[t]={};let s=mr.fontCache[r],o=s.generateShapes(t,1);return mr.charCache[t][n]={geometry:new Io(o,n),fontFamily:r,resolution:s.data.resolution,glyphsHa:s.data.glyphs[t].ha},mr.charCache[t][n]}},mn=mr;mn.charCache={},mn.fontCache={},mn._fontPath="/_assets/_fonts/";var Qp=new B,ho=class{constructor(e,t,r){this.message=[];this.endLine=!0;this.yLinePos=e,this.lineHeight=t,this.maxCharSize=r,this.nextChar3DPos=new B(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(e,t,r=this.message.length){this.message.splice(r,0,e),e.fontSize>this.maxCharSize?(this.maxCharSize=e.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(t)):(e.updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=e.charSize)}deleteChar3D(e=this.message.length-1){let t=this.message[e];if(t)return this.message.splice(e,1),this.nextChar3DPos.x-=t.charSize,t}isEndLine(e){this.endLine=e}fullUpdate(e,t=0){this.nextChar3DPos.x=0;for(let r=t,n=this.message.length;r<n;r+=1)this.message[r].updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(e){let t,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){t=this.message[r];break}r-=1}return!!(r>=0&&t&&t.localPosition.x+t.charSize>e)}containSpaceOverFlow(e=this.message.length-1){for(let t=e;t>=0;t-=1)if(this.message[t].char===" ")return!0;return!1}containSpace(e=this.message.length-1){if(this.endLine)return!0;for(let t=e;t>=0;t-=1)if(this.message[t].char===" ")return!0;return!1}popWord(e=this.message.length-1){let t=[],r=!0,n;for(n=e;n>=0;n-=1)if(this.message[n].char===" "){r=!1,t.length===0&&(n-=1,t.splice(0,0,this.message[n]));break}else t.splice(0,0,this.message[n]);return r?t=[]:this.message.splice(n+1,t.length),t}getWord(e=0,t=1){let r=[],n=e;for(n=e;;n+=t){if(!this.message[n]||this.message[n].char===" "){r.length===0&&this.message[n]&&(r.push(this.message[n]),this.message.splice(n,1));break}t>0?(r.push(this.message[n]),this.message.splice(n,1),n-=t):(r.splice(0,0,this.message[n]),this.message.splice(n,1))}return r}getWordAtIndex(e){let t=[];for(let r=e;r<this.message.length&&this.message[r].char!==" ";r++)t.push(this.message[r]);for(let r=e-1;r>=0&&this.message[r].char!==" ";r--)t.splice(0,0,this.message[r]);return t}wordSize(e=0,t=-1){let r=0,n=e;for(;n>=0&&n<this.message.length;){if(this.message[n].char===" "){r===0&&(r=this.message[n].charSize);break}r+=this.message[n].charSize,n+=t}return(n<0||n>=this.message.length)&&!this.endLine?this.message[e]?this.message[e].charSize:999999999:r===0?999999999:r}spaceLeft(e){return e-this.nextChar3DPos.x}popChar(e=this.message.length-1){return this.nextChar3DPos.x-=this.message[e].charSize,this.message.splice(e,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(e){this.yLinePos=e,this.updateNextCharPosY()}updatelineHeight(e){this.lineHeight=e,this.updateNextCharPosY()}updateFontSize(e,t=0,r=this.message.length-1){for(let n=t;n<=r;n+=1)this.message[n].updateFontSize(e);this.maxCharSize=e,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let e=0;for(let t=0;t<this.message.length;t++)this.message[t].char===" "&&(e+=1);return e}alignText(e,t,r,n,s){switch(r){case 1:this.leftAlign(e,s);break;case 3:this.centerAlign(this.spaceLeft(t),e,s);break;case 2:this.rightAlign(this.spaceLeft(t),e,s);break;case 4:this.justifyAlign(this.spaceLeft(t),e,s);break}}offsetCharacters(e,t,r){Qp.set(t,r);let n=this.message.length;for(let s=0;s<n;s++)this.message[s].updatePosition(this.message[s].localPosition.add(Qp),e)}leftAlign(e,t){this.align=1,this.offsetCharacters(e,0,t)}centerAlign(e,t,r){this.align=3,this.offsetCharacters(t,e/2,r)}rightAlign(e,t,r){this.align=2,this.offsetCharacters(t,e,r)}justifyAlign(e,t,r){if(this.align=4,this.endLine){this.offsetCharacters(t,0,r);return}let n=this.countSpaces();if(n===0){this.offsetCharacters(t,0,r);return}let s=e/n,o=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(o+=s),Qp.set(o,r),this.message[a].updatePosition(this.message[a].localPosition.add(Qp),t)}clone(){let e=new ho(this.yLinePos,this.lineHeight,this.maxCharSize);e.nextChar3DPos=this.nextChar3DPos.clone(),e.align=this.align,e.endLine=this.endLine;for(let t=0;t<this.message.length;t++)e.message.push(this.message[t].clone());return e}};var Hv=class extends kt{constructor(t,r=new Yr({transparent:!0,opacity:1,visible:!1,side:or})){super(t,r);this.objectType="TextFrame";this.charContainer=new ot,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=t.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new M(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(t,r,n){let s=Sp.create({parameters:{width:r.width,height:r.height}}),o=new Hv(s).fromState(r,n);return o.uuid=t,o}async updateText(t){this.clearText();let r=this.userData.textFrame,n=r.fontFamily;await mn.loadFont(n),r.text=t;let s=r.textOrigin,o=new Gn({visible:r.visible,transparent:!0,side:or}),a=t.split(`
3928
3928
  `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let u=new ho(l,r.lineHeight,r.fontSize);return u.message=c.split("").map(f=>{let d={char:f,fontFamily:n,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=o.clone();m.color=r.hexColor,m.opacity=r.opacity;let p=new mn(d,m);return u.addChar3D(p,s),this.charContainer.add(p),p}),l+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let t=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;t.length;)t.pop()}raycast(t,r){let n=[];if(super.raycast(t,n),n.length>0){r.push(n[0]);return}let s=[];for(let o=0,a=this.charContainer.children.length;o<a;++o)if(this.charContainer.children[o]instanceof mn&&(t.intersectObject(this.charContainer.children[o],!1,s),s.length>0)){s[0].object=this,r.push(s[0]);return}}updateGeometry(t){var h,u,f,d;let r=this.userData,n=this.geometry.userData,s=n.parameters.width,o=n.parameters.height,a=(u=(h=t.parameters)==null?void 0:h.width)!=null?u:s,l=(d=(f=t.parameters)==null?void 0:f.height)!=null?d:o,c=r.textFrame;super.updateGeometry(t),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==o?(this.checkOverFlow(),this.checkCapacity()):a!==s&&(s<a?this.checkCapacity():s>a&&this.checkOverFlow())}checkOverFlow(t=0){let r=this.userData,n=r.textFrame.textOrigin,s=r.textFrame.textLines;for(let o=t;o<s.length;o++){s[o].updateYLinePos(this.getNewLinePosition(o)),s[o].fullUpdate(n);let a=[];for(;s[o].checkOverFlow(r.textFrame.maxLineSize);)s[o].containSpaceOverFlow()?a.unshift(s[o].getWord(s[o].message.length-1,-1)):a.unshift(s[o].popChar());if(a.length>0){s[o+1]===void 0?(s[o].isEndLine(!1),this.createTextLine()):s[o].endLine&&(this.createTextLine(o+1),s[o].isEndLine(!1),s[o+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)s[o+1].addChar3D(a[c][h],n,l),l+=1;s[o+1].fullUpdate(n)}s[o].fullUpdate(n)}this.textFullUpdate(t)}checkCapacity(t=0){let r=this.userData,n=r.textFrame.textOrigin,s=r.textFrame.maxLineSize,o=r.textFrame.textLines;for(let a=t;a<o.length;a+=1)if(o[a].updateYLinePos(this.getNewLinePosition(a)),o[a].fullUpdate(n),!!o[a-1])for(;!o[a-1].endLine;){let l,c=o[a-1].spaceLeft(s);if(o[a].wordSize(0,1)<=c){o[a].containSpace()?l=o[a].getWord(0,1):l=o[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&o[a-1].addChar3D(l[h],n)}else{o[a].isEmpty()?(o[a].endLine&&o[a-1].isEndLine(!0),o.splice(a,1),a-=1):(o[a].updateYLinePos(this.getNewLinePosition(a)),o[a].fullUpdate(n));break}}this.textFullUpdate(t)}createTextLine(t=this.userData.textFrame.textLines.length){let n=this.userData.textFrame;n.textLines.splice(t,0,new ho(this.getNewLinePosition(t),n.lineHeight,n.fontSize))}textFullUpdate(t=0){let n=this.userData.textFrame,s=n.textLines,o=this.getVerticalAlignmentOffSet();for(let a=t;a<s.length;a++)s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(n.textOrigin),s[a].alignText(n.textOrigin,n.maxLineSize,n.horizontalAlignment,n.verticalAlignment,o)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(t){let n=this.userData.textFrame.textLines,s=0;for(let o=0;o<t;o+=1)s+=n[o].maxCharSize*n[o].lineHeight;return s}updateColor(t){var s;let r=this.userData;r.textFrame.hexColor=t;let n=r.textFrame.textLines;for(let o=0;o<n.length;o++){let a=n[o].message;for(let l=0;l<a.length;l++){let c=a[l].material;(s=c.color)!=null&&s.isColor&&(c.color=t)}}}updateOpacity(t){let r=this.userData;r.textFrame.opacity=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++){let l=o[a].material;l.opacity=t}}}updateVisible(t){let r=this.userData;r.textFrame.visible=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++){let l=o[a].material;l.visible=t}}}async updateFontFamily(t){await mn.loadFont(t);let n=this.userData.textFrame,s=n.textLines;n.fontFamily=t;for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(t)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(t){let n=this.userData.textFrame,s=n.textLines,o=n.fontSize;n.fontSize=t;for(let a=0;a<s.length;a++)s[a].updateFontSize(t);this.textFullUpdate(),t>o?this.checkOverFlow():t<o&&this.checkCapacity()}async updateTextTransform(t){let n=this.userData.textFrame;await mn.loadFont(n.fontFamily);let s=n.textLines;switch(n.textTransform=t,t){case 2:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(t){let r=this.userData,n=r.textFrame.textLines;r.textFrame.letterSpacing=t;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++)o[a].updateLetterSpacing(t)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(t){let r=this.userData;r.textFrame.LOD=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(t){let r=this.userData,n=r.textFrame.textLines;r.textFrame.lineHeight=t;for(let s=0;s<n.length;s++)n[s].updatelineHeight(t);this.textFullUpdate()}updateVerticalAlignment(t){let r=this.userData;r.textFrame.verticalAlignment=t,this.textFullUpdate()}updateHorizontalAlignment(t){let r=this.userData;r.textFrame.horizontalAlignment=t,this.textFullUpdate()}toJSON(t){let r=super.toJSON(t),n=r.object;n.objectType="TextFrame";let o=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return n.userData.textFrame.textLinesData=o,r}async fromJSONasync(t){if(super.fromJSON(t),t.userData!==void 0){let r=t.userData.textFrame;await mn.loadFont(r.fontFamily),r.textOrigin=new M(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let n=new Gn({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:or});r.textLinesData&&(r.textLines=r.textLinesData.map((s,o)=>{let a=new ho(Number(s.yLinePos),Number(s.lineHeight),Number(s.maxCharSize)),l=s.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[o].message[h];if("geometries"in d){let m=d.geometries[0].userData.parameters;Object.assign(c,{LOD:m.lod,char:m.char,fontFamily:m.fontFamily,fontSize:m.fontSize,letterSpacing:m.letterSpacing,originalChar:m.char})}}let u={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},f=new mn(u,n.clone());return a.addChar3D(f,r.textOrigin),this.charContainer.add(f),f});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(t,r){if(t.color!==void 0){let n=pr(t.color,r);this.updateColor(n),this.updateOpacity(n.a)}t.alpha!==void 0&&this.updateOpacity(t.alpha),t.font!==void 0&&this.updateFontFamily(t.font),t.horizontalAlign!==void 0&&this.updateHorizontalAlignment(t.horizontalAlign),t.verticalAlign!==void 0&&this.updateVerticalAlignment(t.verticalAlign),t.textTransform!==void 0&&this.updateTextTransform(t.textTransform),t.fontSize!==void 0&&this.updateFontSize(t.fontSize),t.lineHeight!==void 0&&this.updateLineHeight(t.lineHeight),t.letterSpacing!==void 0&&this.updateLetterSpacing(t.letterSpacing),t.text!==void 0&&t.text!==""&&this.updateText(t.text),(t.width!==void 0||t.height!==void 0)&&this.updateGeometry({parameters:{width:t.width,height:t.height}})}fromState(t,r){return super.fromState(t),this.fromTextFrameData(t,r),this}convertToVector(){let{fontFamily:t,hexColor:r}=this.userData.textFrame,n=new ys;n.name="Text Shape";let s=mn.fontCache[t];for(let o of this.charContainer.children)o instanceof mn&&s.generateShapes(o.char,1).forEach(a=>{let l=new Tt().fromShape(a);l.applyScale(o.scale.x,o.scale.y);let c=Hr.create({shape:l}),h=new Yr({side:or});h.color=r;let u=new co(c,h);u.name=o.char,u.position.copy(o.position),u.rotation.copy(o.rotation),n.attach(u)});return n}},ea=Hv;ea.VerticalAlign=Yy,ea.HorizontalAlign=qy,ea.TextTransform=Xy;var hA=OT(lA());var Wv;Mp.then(i=>{Wv=i});var uA=new Ae,ZF=new Ae,$F=new Ae,bi=new Kt,uo=new M,eU=new Ae,tU=new Ae,fo=class extends kt{constructor(t,r,n,s=new pn){super(n!=null?n:r,s);this.subdivPointer=t;this.originalGeometry=r;this.subdividedGeometry=n;this.objectType="SubdivObject";this.hiddenMatrixOld=new Ae;this.smoothShading=!0;this.matrixWorldRigid=new Ae;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(t,r,n){let{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}=vi.build(r.geometry,void 0,!r.flatShading),l=gu(r.material,n),c=new fo(s,o,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=t,c.fromState(r),c}shallowClone(t){return new oc(this.geometry,this.material).shallowCopy(this,t)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="SubdivObject",r}buildFromStore(t){var o,a,l;let{originalGeometry:r,subdividedGeometry:n,subdivPointer:s}=vi.build(t,this.subdivPointer,this.smoothShading,this.shearScale);if(this.subdivPointer=s,r!==void 0&&((o=this.originalGeometry)==null||o.dispose(),this.originalGeometry=r),n!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=n!=null?n:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;t.width&&(this.geometry.userData.parameters={width:t.width,height:t.height,depth:t.depth})}updateMesh(t=!1){vi.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,t?this.shearScaleInv:void 0),this.subdividedGeometry&&vi.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,t?this.shearScaleInv:void 0)}updateTopology(){var t;this.originalGeometry.dispose(),this.originalGeometry=vi.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=vi.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(t=this.subdividedGeometry)!=null?t:this.originalGeometry}raycast(t,r){var n;this.geometry=this.originalGeometry,kt.prototype.raycast.call(this,t,r),this.geometry=(n=this.subdividedGeometry)!=null?n:this.originalGeometry}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,r=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:n,v:s,q:o}=(0,hA.SVD)(r),a=uA.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),l=ZF.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),c=$F.copy(l).transpose();this.shearScale=eU.makeScale(o[0],o[1],o[2]).multiply(c).premultiply(l),this.shearScaleInv=tU.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),o.every(h=>Math.abs(o[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let t=this.originalGeometry;t.boundingSphere===null&&(t.boundingSphere=new Lr);let r=t.attributes.position,n=t.boundingSphere.center;bi.setFromBufferAttribute(r),bi.getCenter(n),t.boundingSphere.radius=n.distanceTo(bi.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),bi.getSize(uo);let s={width:uo.x,height:uo.y,depth:uo.z};return this.geometry.userData.parameters=s,s}updateBoundingBox(t){let r=this.originalGeometry;bi.min.set(t[0],t[2],t[4]),bi.max.set(t[1],t[3],t[5]),this.shearScaleInv&&(bi.min.applyMatrix4(this.shearScaleInv),bi.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Lr);let n=r.boundingSphere.center;bi.getCenter(n),r.boundingSphere.radius=n.distanceTo(bi.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),bi.getSize(uo);let s={width:uo.x,height:uo.y,depth:uo.z};return this.geometry.userData.parameters=s,s}freeSubdivPointer(){this.subdivPointer&&(Wv.free_bvh(this.subdivPointer),Wv.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(t){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:t.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:t.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:t.parameters.depth/this.geometry.userData.parameters.depth,cA(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(cA(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=se({},t.parameters)}};function cA(i,e,t,r){let n=i.position.array,s=i.normal.array,o=uA.makeScale(e,t,r).invert().elements,a,l,c;for(var h=0,u=n.length;h<u;h+=3)n[h]*=e,n[h+1]*=t,n[h+2]*=r,a=s[h],l=s[h+1],c=s[h+2],s[h]=o[0]*a+o[4]*l+o[8]*c,s[h+1]=o[1]*a+o[5]*l+o[9]*c,s[h+2]=o[2]*a+o[6]*l+o[10]*c}function fA(i,e){e.flatShading!==void 0&&(i.flatShading=e.flatShading,i.needsUpdate=!0),e.wireframe!==void 0&&(i.wireframe=e.wireframe),e.side!==void 0&&(e.side===0?i.side=oi:e.side===1?i.side=Pr:i.side=or)}function rU(i,e){if(Array.isArray(i.material))for(let t of i.material)fA(t,e);else{let t=i.material;fA(t,e)}i.objectType==="SubdivObject"&&e.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!e.flatShading,i.updateMesh())}function dA(i,e,t){let r;if(e.geometry.type==="SubdivGeometry")r=fo.createFromState(i,e,t);else{let n=e.geometry.type==="BooleanGeometry"?new Le:Gp(e.geometry,t),s="materials"in e?O1(e.materials,t):gu(e.material,t);cp.is2DParametricMesh(n.userData.type)?r=new Kl(n,s):(n==null?void 0:n.userData.type)==="VectorGeometry"?r=new co(n,s):e.geometry.type==="NonParametricGeometry"?r=new oc(n,s):e.geometry.type==="BooleanGeometry"?(r=new Vp(void 0,s),r.booleanOp=e.geometry.operation):r=new sc(n,s),r.uuid=i,r.fromState(e)}return rU(r,e),r}function pA(i,e,t){return e.type==="Mesh"?dA(i,e,t):e.type==="TextFrame"?ea.createFromState(i,e,t):e.type==="Empty"?ys.createFromState(i,e):e.type==="PointLight"?nc.createFromState(i,e,t):e.type==="SpotLight"?ic.createFromState(i,e,t):e.type==="DirectionalLight"?rc.createFromState(i,e,t):eo.is(e.type)?Nn.createFromState(i,e):(console.error(e),new ys)}function nU(i,e){e.uniforms[`f${e.id}_transmissionSamplerMap`].value=i.texture,e.uniforms[`f${e.id}_transmissionDepthMap`].value=i.depthTexture}function mA(i,e,t){if(!t.userData.layers)return!1;let r=!1,n=t.userData.layers.getLayersOfType("transmission");return n.length>0?(e.layers.set(3),r=!0,i!==void 0&&n.forEach(s=>nU(i,s))):e.layers.set(0),r}function gA(i,e){let t=!1;return e.traverseEntity(r=>{if(r instanceof kt)if(Array.isArray(r.material))for(let n=0;n<r.material.length;n++)mA(i,r,r.material[n])&&(t=!0);else mA(i,r,r.material)&&(t=!0)}),t}function yA(i,e){"material"in i&&iU(i.material,e),"geometry"in i&&i.geometry.dispose()}function iU(i,e){eM(i).forEach(t=>{e.isSharedMaterial(t)||t.dispose()})}var vA=new M,jv=class extends zp(on){constructor(t,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Do(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new xe(1,0,0);this.bgColor=new xe(1,1,1);this.entityByUuid={};this.ambientLight=new Hs(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(t,r)}needsTransmission(t){return this.needsTransmissionDirty&&(this._needsTransmission=gA(t,this),t!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(t){if(t===""||t===void 0)return;let r=this.entityByUuid[t];return r===void 0?this.getObjectByProperty("uuid",t):r}get color(){return this._color}set color(t){this.fogUseBGColor===!0&&this.backupFog.color.copy(t),this._color.copy(t)}get enableFog(){return this.fog!==null}set enableFog(t){this.fog=t===!0?this.backupFog:null}init(t,r){if(this.createChildrenObjects(t.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(pr(t.backgroundColor,r)),this.updateFog(t.fog,r),this.updateAmbientLight(t.environment.ambientLight,r),this.activeCamera=this.personalCamera,t.publish.playCamera!==null){let n=this.find(t.publish.playCamera);n instanceof Nn&&this.switchActiveCamera(n)}}clearScene(t){this.traverseEntity(r=>{yA(r,t)});for(let r of this.children)Qn(r)&&r.removeFromParent()}resetAfterClear(t,r){this.init(t,r)}createPersonalCamera(){let t=Nn.createFromState(jv.PERSONAL_CAMERA_ID,be(se({},up.defaultData),{name:"Personal Camera"}));return t.enableHelper=!1,t.objectHelper.visible=!1,delete t.isEntity,this.registerObjectCreatedInLegacy(t),t}raycast(t){let r=[],n=s=>{for(let o of s.children)Qn(o)&&!o.raycastLock&&o.visible&&((er(o)||gs(o)&&o.enableHelper&&o.objectHelper.parent)&&t.intersectObject(o,!1,r),n(o))};return n(this),r}traverseEntity(t){for(let r of this.children)Qn(r)&&r.traverseEntity(t)}updateFog(t,r){this.enableFog=t.enabled,this.fogUseBGColor=t.useBackgroundColor,t.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=pr(t.color,r),this.backupFog.near=t.near,this.backupFog.far=t.far}toJSON(t){return{}}fromJSON(t){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(t,r){z1(this.ambientLight,t,r),t.groundColor!==void 0&&(this.ambientLight.groundColor=pr(t.groundColor,r)),t.enabled!==void 0&&(this.ambientLight.visible=t.enabled)}switchActiveCamera(t){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=t,t.enableHelper=!1}setBackgroundColor(t){this.bgColor=t,this.alpha=t.a}createChildrenObjects(t,r,n){for(let s of t)this.createChildObject(s.id,s.data,s.children,r,n)}registerObjectCreatedInLegacy(t){this.entityByUuid[t.uuid]=t}unregisterObject(t){delete this.entityByUuid[t.uuid];for(let r of t.children)this.unregisterObject(r)}createChildObject(t,r,n,s,o){let a=pA(t,r,o);return a&&(this.entityByUuid[t]=a,s.add(a),Ot(s)&&er(a)&&(a.prevBooleanObjectParent=s),this.createChildrenObjects(n,a,o)),a}getCenter(t){let r=[];for(let s=0,o=t.length;s<o;++s){let{id:a,recursive:l}=t[s],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let n=new Kt;return n.setFromPoints(r),n.getCenter(vA),vA}copyMatrixWorld(t,r){if(t===null){r.identity();return}let n=this.find(t);n?r.copy(n.matrixWorld):r.identity()}copyParentMatrixWorld(t,r){var s;if(t===null){r.identity();return}let n=(s=this.find(t))==null?void 0:s.parent;n?r.copy(n.matrixWorld):r.identity()}traverseMaterial(t){this.traverseEntity(r=>{if(r instanceof kt)if(Array.isArray(r.material))for(let n=0;n<r.material.length;n++)t(r.material[n]);else t(r.material)})}updateCanvasSize(t,r){this.activeCamera.setViewplaneSize(t,r);let n,s;t>=r?(n=r/t,s=1):(n=1,s=t/r),this.traverseMaterial(o=>{o.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=n,l.uniforms[`f${l.id}_aspectRatio`].value.y=s})})}},Su=jv;Su.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var TA={RED:0,GREEN:1,BLUE:2,ALPHA:3};var Mu="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}";var sU=`#ifdef FRAMEBUFFER_PRECISION_HIGH
3929
3929
  uniform mediump sampler2D inputBuffer;
@@ -4202,4 +4202,4 @@ float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offse
4202
4202
  vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));
4203
4203
  #endif
4204
4204
  outputColor=vec4(color,inputColor.a);}`,Zp={DEFAULT:0,ESKIL:1},UA=class extends qi{constructor({blendFunction:i=vt.NORMAL,technique:e=Zp.DEFAULT,eskil:t=!1,offset:r=.5,darkness:n=.5}={}){super("VignetteEffect",hz,{blendFunction:i,defines:new Map([["VIGNETTE_TECHNIQUE",e.toFixed(0)]]),uniforms:new Map([["offset",new _e(r)],["darkness",new _e(n)]])})}get technique(){return Number(this.defines.get("VIGNETTE_TECHNIQUE"))}set technique(i){this.technique!==i&&(this.defines.set("VIGNETTE_TECHNIQUE",i.toFixed(0)),this.setChanged())}get eskil(){return this.technique===Zp.ESKIL}set eskil(i){this.technique=i?Zp.ESKIL:Zp.DEFAULT}getTechnique(){return this.technique}setTechnique(i){this.technique=i}get offset(){return this.uniforms.get("offset").value}set offset(i){this.uniforms.get("offset").value=i}getOffset(){return this.offset}setOffset(i){this.offset=i}get darkness(){return this.uniforms.get("darkness").value}set darkness(i){this.uniforms.get("darkness").value=i}getDarkness(){return this.darkness}setDarkness(i){this.darkness=i}},yae=[new Float32Array(3),new Float32Array(3)],vae=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],xae=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];var bae=[new Float32Array(2),new Float32Array(2)];var wae=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),Sae=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],Mae=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],Aae=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];var Tae=new Map([[$r(0,0,0,0),new Float32Array([0,0,0,0])],[$r(0,0,0,1),new Float32Array([0,0,0,1])],[$r(0,0,1,0),new Float32Array([0,0,1,0])],[$r(0,0,1,1),new Float32Array([0,0,1,1])],[$r(0,1,0,0),new Float32Array([0,1,0,0])],[$r(0,1,0,1),new Float32Array([0,1,0,1])],[$r(0,1,1,0),new Float32Array([0,1,1,0])],[$r(0,1,1,1),new Float32Array([0,1,1,1])],[$r(1,0,0,0),new Float32Array([1,0,0,0])],[$r(1,0,0,1),new Float32Array([1,0,0,1])],[$r(1,0,1,0),new Float32Array([1,0,1,0])],[$r(1,0,1,1),new Float32Array([1,0,1,1])],[$r(1,1,0,0),new Float32Array([1,1,0,0])],[$r(1,1,0,1),new Float32Array([1,1,0,1])],[$r(1,1,1,0),new Float32Array([1,1,1,0])],[$r(1,1,1,1),new Float32Array([1,1,1,1])]]);function Qv(i,e,t){return i+(e-i)*t}function $r(i,e,t,r){let n=Qv(i,e,.75),s=Qv(t,r,1-.25);return Qv(n,s,1-.125)}var gr=class{constructor(e,t){this.enabled=!1;this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(r){this.effect.blendMode.opacity.value=r},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(r){this.effect.blendMode.setBlendFunction(Number(r))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=vt.NORMAL}toJSON(){let e=["constructor","effect","subscriptions"],t=se({},this),r=Object.getPrototypeOf(this),n=Object.getOwnPropertyNames(r);for(let s of n){let o=Object.getOwnPropertyDescriptor(r,s);o&&typeof o.get=="function"&&(t[s]=this[s])}return e.forEach(s=>delete t[s]),t}};var ac=class extends gr{constructor(){super(DA),this.blendFunction=vt.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}};var lc=class extends gr{constructor(){super(PA)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}};var cc=class extends gr{constructor(){super(IA),this.effect.offset=new B(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[this.effect.offset.x*1e3,this.effect.offset.y*1e3]}};var hc=class extends gr{constructor(){super(LA)}};var uc=class extends gr{constructor(){super(BA);this._hue=0}set hue(t){this._hue=t,this.effect.setHue(t)}get hue(){return this._hue}set saturation(t){this.effect.uniforms.get("saturation").value=t}get saturation(){return this.effect.uniforms.get("saturation").value}};var fc=class extends gr{constructor(){super(NA),this.blendFunction=vt.OVERLAY}};var dc=class extends gr{constructor(){super(UA)}get eskil(){return this.effect.eskil}set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}};var pc=class extends gr{constructor(e){super(RA,e)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=e}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}};var mc=class extends gr{constructor(){super(OA)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}};function zA(i,e){return e&&e.enabled&&i.push(e.effect),i}var Au=class extends Yt{constructor(){super();this._scene=new on;this._camera=new Nn;this.effects=new Map;this.loadingManager=new No;this.renderPass=new tx;this._renderToScreen=!0;this._hasSmaa=!1;this.clock=new Xf,this.enabled=!1,this.debug=!1,this.effects.set("bloom",new ac),this.effects.set("chromaticAberration",new cc),this.effects.set("vignette",new dc),this.effects.set("noise",new fc),this.effects.set("colorAverage",new hc),this.effects.set("hueSaturation",new uc),this.effects.set("brightnessContrast",new lc),this.effects.set("depthOfField",new pc),this.effects.set("pixelation",new mc)}get scene(){return this._scene}set scene(t){this._scene=t}get camera(){return this._camera}set camera(t){this._camera=t}_initSmaa(){if(!this.effectComposer)return;let t=this.effectComposer.passes.length,r=new FA({preset:ta.ULTRA,edgeDetectionMode:$p.COLOR}),n=()=>{r.removeEventListener("load",n),this.dispatchEvent({type:"smaaloaded"})};r.addEventListener("load",n),r.edgeDetectionMaterial.setPredicationMode(Zv.DEPTH),r.edgeDetectionMaterial.setEdgeDetectionThreshold(.05),r.edgeDetectionMaterial.setPredicationThreshold(.002),r.edgeDetectionMaterial.setPredicationScale(1),this.effectComposer.addPass(new em(this.camera,r),t),this._hasSmaa=!0}_initPasses(){if(!this.effectComposer||!this.renderer)return;let t;if(this.effectComposer.removeAllPasses(),this._hasSmaa=!1,this.renderPass=new tx(this.scene,this.camera),this.enabled){this.effectComposer.addPass(this.renderPass),this._initSmaa();let r=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(zA,[]),n=[this.effects.get("pixelation")].reduce(zA,[]);n.length>0&&this.effectComposer.addPass(new em(this.camera,...n)),this.effectComposer.addPass(new em(this.camera,...r))}else this.effectComposer.addPass(this.renderPass),($S||Ho)&&this._initSmaa();if(t)return t}reinit(){if(!this.renderer)return Promise.all([]);this.effectComposer=new CA(this.renderer),this._initPasses()}init({renderer:t,camera:r,scene:n}){this.renderer=t,this.scene=n,this.camera=r,this._initCopyPass(),this.reinit()}_initCopyPass(){if(this._savePass)return;let t=new B;this.renderer.getDrawingBufferSize(t),this._rt=new mt(t.x,t.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:Ia,wrapT:Ia}),this._rt.samples=this.renderer.capabilities.isWebGL2?4:0,this._savePass=new $v(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(t){var n,s;let r=this.effectComposer;!r||(t===!0?((n=this.renderer)!=null&&n.capabilities.isWebGL2&&(r.multisampling=0),r.removePass(this._savePass),r.passes[r.passes.length-1].renderToScreen=!0,r.autoRenderToScreen=!0):(((s=this.renderer)==null?void 0:s.capabilities.isWebGL2)&&!this._hasSmaa&&(r.multisampling=4),r.autoRenderToScreen=!1,r.passes[r.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.enabled||(this._savePass.needsDepthTexture=!0),r.addPass(this._savePass)),this._renderToScreen=t)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}fromJSON(t){t&&(Object.keys(t).forEach(r=>{let n=t[r],s=this.effects.get(r);Object.keys(n).forEach(o=>{s[o]=n[o]})}),this.enabled=t.enabled)}toJSON(){let t={};return this.effects.forEach((r,n)=>{t[n]=r.toJSON()},t),se({enabled:this.enabled},t)}render(){var t;(t=this.effectComposer)==null||t.render(this.clock.getDelta())}setScissor(t,r,n,s){if(!this.effectComposer||!this.renderer)return;t instanceof Je?(this.effectComposer.inputBuffer.scissor.set(t.x,t.y,t.z,t.w),this.effectComposer.outputBuffer.scissor.set(t.x,t.y,t.z,t.w)):(this.effectComposer.inputBuffer.scissor.set(t,r,n,s),this.effectComposer.outputBuffer.scissor.set(t,r,n,s));let o=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(o),this.effectComposer.outputBuffer.scissor.multiplyScalar(o),this.renderer.setScissor(t,r,n,s)}setScissorTest(t){!this.effectComposer||!this.renderer||(this.effectComposer.inputBuffer.scissorTest=t,this.effectComposer.outputBuffer.scissorTest=t,this.renderer.setScissorTest(t))}setViewport(t,r,n,s){!this.effectComposer||(t instanceof Je?(this.effectComposer.inputBuffer.viewport.copy(t),this.effectComposer.outputBuffer.viewport.copy(t)):(this.effectComposer.inputBuffer.viewport.set(t,r,n,s),this.effectComposer.outputBuffer.viewport.set(t,r,n,s)))}resize(t,r,n){var s,o;if((s=this.effectComposer)==null||s.setSize(t,r,n),this._rt){let a=((o=this.renderer)==null?void 0:o.getPixelRatio())||window.devicePixelRatio;this._rt.setSize(t*a,r*a)}}dispose(){var t;this._listeners=void 0,(t=this.effectComposer)==null||t.dispose()}};var tm=class extends Su{constructor(t,r){super(t,r);this.postprocessing=new Au;this.initPostprocessing(t.postprocessing)}resetAfterClear(t,r){super.resetAfterClear(t,r),this.initPostprocessing(t.postprocessing)}initPostprocessing(t){let s=t,{enabled:r}=s,n=_x(s,["enabled"]);for(let o of Object.entries(n)){let a=o[1],l=this.postprocessing.effects.get(o[0]);if(l){l.enabled=a.enabled;for(let[c,h]of Object.entries(a))l[c]=h}}this.postprocessing.enabled=r,this.postprocessing.reinit()}dispose(){super.dispose(),this.postprocessing.dispose()}switchActiveCamera(t){super.switchActiveCamera(t),this.postprocessing&&(this.postprocessing.camera=t)}};var nx=new WeakMap,rm=class extends cn{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let s=new ls(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,o=>{let a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(o,a).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let s={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){for(let l in t.attributeTypes){let c=t.attributeTypes[l];c.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=c.name)}let r=JSON.stringify(t);if(nx.has(e)){let l=nx.get(e);if(l.key===r)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n,s=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(s,o).then(l=>(n=l,new Promise((c,h)=>{n._callbacks[s]={resolve:c,reject:h},n.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{n&&s&&this._releaseTask(n,s)}),nx.set(e,{key:r,promise:a}),a}_createGeometry(e){let t=new Le;e.index&&t.setIndex(new Ve(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],s=n.name,o=n.array,a=n.itemSize;t.setAttribute(s,new Ve(o,a))}return t}_loadLibrary(e,t){let r=new ls(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((n,s)=>{r.load(e,n,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(r=>{let n=r[0];e||(this.decoderConfig.wasmBinary=r[1]);let s=fz.toString(),o=["/* draco decoder */",n,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
4205
- `);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(s){let o=s.data;switch(o.type){case"decode":n._callbacks[o.id].resolve(o);break;case"error":n._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,s){return n._taskLoad>s._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}};function fz(){let i,e;onmessage=function(o){let a=o.data;switch(a.type){case"init":i=a.decoderConfig,e=new Promise(function(h){i.onModuleLoaded=function(u){h({draco:u})},DracoDecoderModule(i)});break;case"decode":let l=a.buffer,c=a.taskConfig;e.then(h=>{let u=h.draco,f=new u.Decoder,d=new u.DecoderBuffer;d.Init(new Int8Array(l),l.byteLength);try{let m=t(u,f,d,c),p=m.attributes.map(g=>g.array.buffer);m.index&&p.push(m.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:m},p)}catch(m){console.error(m),self.postMessage({type:"error",id:a.id,error:m.message})}finally{u.destroy(d),u.destroy(f)}});break}};function t(o,a,l,c){let h=c.attributeIDs,u=c.attributeTypes,f,d,m=a.GetEncodedGeometryType(l);if(m===o.TRIANGULAR_MESH)f=new o.Mesh,d=a.DecodeBufferToMesh(l,f);else if(m===o.POINT_CLOUD)f=new o.PointCloud,d=a.DecodeBufferToPointCloud(l,f);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||f.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());let p={index:null,attributes:[]};for(let g in h){let x=self[u[g]],y,w;if(c.useUniqueIDs)w=h[g],y=a.GetAttributeByUniqueId(f,w);else{if(w=a.GetAttributeId(f,o[h[g]]),w===-1)continue;y=a.GetAttribute(f,w)}p.attributes.push(n(o,a,f,g,x,y))}return m===o.TRIANGULAR_MESH&&(p.index=r(o,a,f)),o.destroy(f),p}function r(o,a,l){let h=l.num_faces()*3,u=h*4,f=o._malloc(u);a.GetTrianglesUInt32Array(l,u,f);let d=new Uint32Array(o.HEAPF32.buffer,f,h).slice();return o._free(f),{array:d,itemSize:1}}function n(o,a,l,c,h,u){let f=u.num_components(),m=l.num_points()*f,p=m*h.BYTES_PER_ELEMENT,g=s(o,h),x=o._malloc(p);a.GetAttributeDataArrayForAllPoints(l,u,g,p,x);let y=new h(o.HEAPF32.buffer,x,m).slice();return o._free(x),{name:c,array:y,itemSize:f}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}var yo;function dz(){return yo||(yo=new rm,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function pz(i){if(yo){let e={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},t;try{t=await yo.decodeGeometry(new Int8Array(i).buffer,e)}catch(r){console.error(r)}if(t)return{index:t.index?{array:t.index.array}:void 0,attributes:Object.entries(t.attributes).map(([r,n])=>({name:r,itemSize:n.itemSize,array:n.array}))}}return null}async function GA(i){let[e,t]=Py(ip.deserialize(new Uint8Array(i))),r=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&r.push(s)}),r.length&&await dz();for(let n of r){let s=await pz(Iy(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};s.attributes.forEach(({name:a,array:l,itemSize:c})=>{o[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=o,n.geometry.data.draco=void 0}}return t.result().data}var qA={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},ax={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},mz=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],im={CSS:{},springs:{}};function Yi(i,e,t){return Math.min(Math.max(i,e),t)}function Tu(i,e){return i.indexOf(e)>-1}function ix(i,e){return i.apply(null,e)}var Xe={arr:function(i){return Array.isArray(i)},obj:function(i){return Tu(Object.prototype.toString.call(i),"Object")},pth:function(i){return Xe.obj(i)&&i.hasOwnProperty("totalLength")},svg:function(i){return i instanceof SVGElement},inp:function(i){return i instanceof HTMLInputElement},dom:function(i){return!("isNode"in i)&&(i.nodeType||Xe.svg(i))},str:function(i){return typeof i=="string"},fnc:function(i){return typeof i=="function"},und:function(i){return typeof i>"u"},hex:function(i){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(i)},rgb:function(i){return/^rgb/.test(i)},hsl:function(i){return/^hsl/.test(i)},col:function(i){return Xe.hex(i)||Xe.rgb(i)||Xe.hsl(i)},key:function(i){return!qA.hasOwnProperty(i)&&!ax.hasOwnProperty(i)&&i!=="targets"&&i!=="keyframes"}};function YA(i){var e=/\(([^)]+)\)/.exec(i);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function XA(i,e){var t=YA(i),r=Yi(Xe.und(t[0])?1:t[0],.1,100),n=Yi(Xe.und(t[1])?100:t[1],.1,100),s=Yi(Xe.und(t[2])?10:t[2],.1,100),o=Yi(Xe.und(t[3])?0:t[3],.1,100),a=Math.sqrt(n/r),l=s/(2*Math.sqrt(n*r)),c=l<1?a*Math.sqrt(1-l*l):0,h=1,u=l<1?(l*a+-o)/c:-o+a;function f(m){var p=e?e*m/1e3:m;return l<1?p=Math.exp(-p*l*a)*(h*Math.cos(c*p)+u*Math.sin(c*p)):p=(h+u*p)*Math.exp(-p*a),m===0||m===1?m:1-p}function d(){var m=im.springs[i];if(m)return m;for(var p=1/6,g=0,x=0;;)if(g+=p,f(g)===1){if(x++,x>=16)break}else x=0;var y=g*p*1e3;return im.springs[i]=y,y}return e?f:d}function gz(i){return i===void 0&&(i=10),function(e){return Math.ceil(Yi(e,1e-6,1)*i)*(1/i)}}var yz=function(){var i=11,e=1/(i-1);function t(h,u){return 1-3*u+3*h}function r(h,u){return 3*u-6*h}function n(h){return 3*h}function s(h,u,f){return((t(u,f)*h+r(u,f))*h+n(u))*h}function o(h,u,f){return 3*t(u,f)*h*h+2*r(u,f)*h+n(u)}function a(h,u,f,d,m){var p,g,x=0;do g=u+(f-u)/2,p=s(g,d,m)-h,p>0?f=g:u=g;while(Math.abs(p)>1e-7&&++x<10);return g}function l(h,u,f,d){for(var m=0;m<4;++m){var p=o(u,f,d);if(p===0)return u;var g=s(u,f,d)-h;u-=g/p}return u}function c(h,u,f,d){if(!(0<=h&&h<=1&&0<=f&&f<=1))return;var m=new Float32Array(i);if(h!==u||f!==d)for(var p=0;p<i;++p)m[p]=s(p*e,h,f);function g(x){for(var y=0,w=1,b=i-1;w!==b&&m[w]<=x;++w)y+=e;--w;var S=(x-m[w])/(m[w+1]-m[w]),T=y+S*e,A=o(T,h,f);return A>=.001?l(x,T,h,f):A===0?T:a(x,y,y+e,h,f)}return function(x){return h===u&&f===d||x===0||x===1?x:s(g(x),u,d)}}return c}(),QA=function(){var i={linear:function(){return function(r){return r}}},e={Sine:function(){return function(r){return 1-Math.cos(r*Math.PI/2)}},Circ:function(){return function(r){return 1-Math.sqrt(1-r*r)}},Back:function(){return function(r){return r*r*(3*r-2)}},Bounce:function(){return function(r){for(var n,s=4;r<((n=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((n*3-2)/22-r,2)}},Elastic:function(r,n){r===void 0&&(r=1),n===void 0&&(n=.5);var s=Yi(r,1,10),o=Yi(n,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(r,n){e[r]=function(){return function(s){return Math.pow(s,n+2)}}}),Object.keys(e).forEach(function(r){var n=e[r];i["easeIn"+r]=n,i["easeOut"+r]=function(s,o){return function(a){return 1-n(s,o)(1-a)}},i["easeInOut"+r]=function(s,o){return function(a){return a<.5?n(s,o)(a*2)/2:1-n(s,o)(a*-2+2)/2}}}),i}();function lx(i,e){if(Xe.fnc(i))return i;var t=i.split("(")[0],r=QA[t],n=YA(i);switch(t){case"spring":return XA(i,e);case"cubicBezier":return ix(yz,n);case"steps":return ix(gz,n);default:return ix(r,n)}}function JA(i){try{var e=document.querySelectorAll(i);return e}catch{return}}function sm(i,e){for(var t=i.length,r=arguments.length>=2?arguments[1]:void 0,n=[],s=0;s<t;s++)if(s in i){var o=i[s];e.call(r,o,s,i)&&n.push(o)}return n}function om(i){return i.reduce(function(e,t){return e.concat(Xe.arr(t)?om(t):t)},[])}function kA(i){return Xe.arr(i)?i:(Xe.str(i)&&(i=JA(i)||i),i instanceof NodeList||i instanceof HTMLCollection?[].slice.call(i):[i])}function cx(i,e){return i.some(function(t){return t===e})}function hx(i){var e={};for(var t in i)e[t]=i[t];return e}function sx(i,e){var t=hx(i);for(var r in i)t[r]=e.hasOwnProperty(r)?e[r]:i[r];return t}function am(i,e){var t=hx(i);for(var r in e)t[r]=Xe.und(i[r])?e[r]:i[r];return t}function vz(i){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(i);return e?"rgba("+e[1]+",1)":i}function xz(i){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=i.replace(e,function(a,l,c,h){return l+l+c+c+h+h}),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),n=parseInt(r[1],16),s=parseInt(r[2],16),o=parseInt(r[3],16);return"rgba("+n+","+s+","+o+",1)"}function bz(i){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(i)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(i),t=parseInt(e[1],10)/360,r=parseInt(e[2],10)/100,n=parseInt(e[3],10)/100,s=e[4]||1;function o(f,d,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?f+(d-f)*6*m:m<1/2?d:m<2/3?f+(d-f)*(2/3-m)*6:f}var a,l,c;if(r==0)a=l=c=n;else{var h=n<.5?n*(1+r):n+r-n*r,u=2*n-h;a=o(u,h,t+1/3),l=o(u,h,t),c=o(u,h,t-1/3)}return"rgba("+a*255+","+l*255+","+c*255+","+s+")"}function wz(i){if(Xe.rgb(i))return vz(i);if(Xe.hex(i))return xz(i);if(Xe.hsl(i))return bz(i)}function xs(i){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(i);if(e)return e[1]}function Sz(i){if(Tu(i,"translate")||i==="perspective")return"px";if(Tu(i,"rotate")||Tu(i,"skew"))return"deg"}function ox(i,e){return Xe.fnc(i)?i(e.target,e.id,e.total):i}function Xi(i,e){return i.getAttribute(e)}function ux(i,e,t){var r=xs(e);if(cx([t,"deg","rad","turn"],r))return e;var n=im.CSS[e+t];if(!Xe.und(n))return n;var s=100,o=document.createElement(i.tagName),a=i.parentNode&&i.parentNode!==document?i.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var c=l*parseFloat(e);return im.CSS[e+t]=c,c}function KA(i,e,t){if(e in i.style){var r=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),n=i.style[e]||getComputedStyle(i).getPropertyValue(r)||"0";return t?ux(i,n,t):n}}function fx(i,e){if(Xe.dom(i)&&!Xe.inp(i)&&(Xi(i,e)||Xe.svg(i)&&i[e]))return"attribute";if(Xe.dom(i)&&cx(mz,e))return"transform";if(Xe.dom(i)&&e!=="transform"&&KA(i,e))return"css";if(i[e]!=null)return"object"}function ZA(i){if(!!Xe.dom(i)){for(var e=i.style.transform||"",t=/(\w+)\(([^)]*)\)/g,r=new Map,n;n=t.exec(e);)r.set(n[1],n[2]);return r}}function Mz(i,e,t,r){var n=Tu(e,"scale")?1:0+Sz(e),s=ZA(i).get(e)||n;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),r?ux(i,s,r):s}function dx(i,e,t,r){switch(fx(i,e)){case"transform":return Mz(i,e,r,t);case"css":return KA(i,e,t);case"attribute":return Xi(i,e);default:return i[e]||0}}function px(i,e){var t=/^(\*=|\+=|-=)/.exec(i);if(!t)return i;var r=xs(i)||0,n=parseFloat(e),s=parseFloat(i.replace(t[0],""));switch(t[0][0]){case"+":return n+s+r;case"-":return n-s+r;case"*":return n*s+r}}function $A(i,e){if(Xe.col(i))return wz(i);if(/\s/g.test(i))return i;var t=xs(i),r=t?i.substr(0,i.length-t.length):i;return e?r+e:r}function mx(i,e){return Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2))}function Az(i){return Math.PI*2*Xi(i,"r")}function Tz(i){return Xi(i,"width")*2+Xi(i,"height")*2}function Ez(i){return mx({x:Xi(i,"x1"),y:Xi(i,"y1")},{x:Xi(i,"x2"),y:Xi(i,"y2")})}function eT(i){for(var e=i.points,t=0,r,n=0;n<e.numberOfItems;n++){var s=e.getItem(n);n>0&&(t+=mx(r,s)),r=s}return t}function _z(i){var e=i.points;return eT(i)+mx(e.getItem(e.numberOfItems-1),e.getItem(0))}function tT(i){if(i.getTotalLength)return i.getTotalLength();switch(i.tagName.toLowerCase()){case"circle":return Az(i);case"rect":return Tz(i);case"line":return Ez(i);case"polyline":return eT(i);case"polygon":return _z(i)}}function Cz(i){var e=tT(i);return i.setAttribute("stroke-dasharray",e),e}function Dz(i){for(var e=i.parentNode;Xe.svg(e)&&Xe.svg(e.parentNode);)e=e.parentNode;return e}function rT(i,e){var t=e||{},r=t.el||Dz(i),n=r.getBoundingClientRect(),s=Xi(r,"viewBox"),o=n.width,a=n.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function Pz(i,e){var t=Xe.str(i)?JA(i)[0]:i,r=e||100;return function(n){return{property:n,el:t,svg:rT(t),totalLength:tT(t)*(r/100)}}}function Lz(i,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return i.el.getPointAtLength(l)}var r=rT(i.el,i.svg),n=t(),s=t(-1),o=t(1);switch(i.property){case"x":return(n.x-r.x)*r.w;case"y":return(n.y-r.y)*r.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function VA(i,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=$A(Xe.pth(i)?i.totalLength:i,e)+"";return{original:r,numbers:r.match(t)?r.match(t).map(Number):[0],strings:Xe.str(i)||e?r.split(t):[]}}function nT(i){var e=i?om(Xe.arr(i)?i.map(kA):kA(i)):[];return sm(e,function(t,r,n){return n.indexOf(t)===r})}function iT(i){var e=nT(i);return e.map(function(t,r){return{target:t,id:r,total:e.length,transforms:{list:ZA(t)}}})}function Iz(i,e){var t=hx(e);if(/^spring/.test(t.easing)&&(t.duration=XA(t.easing)),Xe.arr(i)){var r=i.length,n=r===2&&!Xe.obj(i[0]);n?i={value:i}:Xe.fnc(e.duration)||(t.duration=e.duration/r)}var s=Xe.arr(i)?i:[i];return s.map(function(o,a){var l=Xe.obj(o)&&!Xe.pth(o)?o:{value:o};return Xe.und(l.delay)&&(l.delay=a?0:e.delay),Xe.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return am(o,t)})}function Rz(i){for(var e=sm(om(i.map(function(s){return Object.keys(s)})),function(s){return Xe.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},r=function(s){var o=e[s];t[o]=i.map(function(a){var l={};for(var c in a)Xe.key(c)?c==o&&(l.value=a[c]):l[c]=a[c];return l})},n=0;n<e.length;n++)r(n);return t}function Bz(i,e){var t=[],r=e.keyframes;r&&(e=am(Rz(r),e));for(var n in e)Xe.key(n)&&t.push({name:n,tweens:Iz(e[n],i)});return t}function Nz(i,e){var t={};for(var r in i){var n=ox(i[r],e);Xe.arr(n)&&(n=n.map(function(s){return ox(s,e)}),n.length===1&&(n=n[0])),t[r]=n}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function Oz(i,e){var t;return i.tweens.map(function(r){var n=Nz(r,e),s=n.value,o=Xe.arr(s)?s[1]:s,a=xs(o),l=dx(e.target,i.name,a,e),c=t?t.to.original:l,h=Xe.arr(s)?s[0]:c,u=xs(h)||xs(l),f=a||u;return Xe.und(o)&&(o=c),n.from=VA(h,f),n.to=VA(px(o,h),f),n.start=t?t.end:0,n.end=n.start+n.delay+n.duration+n.endDelay,n.easing=lx(n.easing,n.duration),n.isPath=Xe.pth(s),n.isColor=Xe.col(n.from.original),n.isColor&&(n.round=1),t=n,n})}var sT={css:function(i,e,t){return i.style[e]=t},attribute:function(i,e,t){return i.setAttribute(e,t)},object:function(i,e,t){return i[e]=t},transform:function(i,e,t,r,n){if(r.list.set(e,t),e===r.last||n){var s="";r.list.forEach(function(o,a){s+=a+"("+o+") "}),i.style.transform=s}}};function oT(i,e){var t=iT(i);t.forEach(function(r){for(var n in e){var s=ox(e[n],r),o=r.target,a=xs(s),l=dx(o,n,a,r),c=a||xs(l),h=px($A(s,c),l),u=fx(o,n);sT[u](o,n,h,r.transforms,!0)}})}function Fz(i,e){var t=fx(i.target,e.name);if(t){var r=Oz(e,i),n=r[r.length-1];return{type:t,property:e.name,animatable:i,tweens:r,duration:n.end,delay:r[0].delay,endDelay:n.endDelay}}}function Uz(i,e){return sm(om(i.map(function(t){return e.map(function(r){return Fz(t,r)})})),function(t){return!Xe.und(t)})}function aT(i,e){var t=i.length,r=function(s){return s.timelineOffset?s.timelineOffset:0},n={};return n.duration=t?Math.max.apply(Math,i.map(function(s){return r(s)+s.duration})):e.duration,n.delay=t?Math.min.apply(Math,i.map(function(s){return r(s)+s.delay})):e.delay,n.endDelay=t?n.duration-Math.max.apply(Math,i.map(function(s){return r(s)+s.duration-s.endDelay})):e.endDelay,n}var HA=0;function zz(i){var e=sx(qA,i),t=sx(ax,i),r=Bz(t,i),n=iT(i.targets),s=Uz(n,r),o=aT(s,t),a=HA;return HA++,am(e,{id:a,children:[],animatables:n,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var Tn=[],WA=[],nm,Gz=function(){function i(){nm=requestAnimationFrame(e)}function e(t){var r=Tn.length;if(r){for(var n=0;n<r;){var s=Tn[n];if(!s.paused)s.tick(t);else{var o=Tn.indexOf(s);o>-1&&(Tn.splice(o,1),r=Tn.length)}n++}i()}else nm=cancelAnimationFrame(nm)}return i}();function kz(){document.hidden?(Tn.forEach(function(i){return i.pause()}),WA=Tn.slice(0),Sr.running=Tn=[]):WA.forEach(function(i){return i.play()})}typeof document<"u"&&document.addEventListener("visibilitychange",kz);function Sr(i){i===void 0&&(i={});var e=0,t=0,r=0,n,s=0,o=null;function a(w){var b=window.Promise&&new Promise(function(S){return o=S});return w.finished=b,b}var l=zz(i),c=a(l);function h(){var w=l.direction;w!=="alternate"&&(l.direction=w!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,n.forEach(function(b){return b.reversed=l.reversed})}function u(w){return l.reversed?l.duration-w:w}function f(){e=0,t=u(l.currentTime)*(1/Sr.speed)}function d(w,b){b&&b.seek(w-b.timelineOffset)}function m(w){if(l.reversePlayback)for(var S=s;S--;)d(w,n[S]);else for(var b=0;b<s;b++)d(w,n[b])}function p(w){var b=0,S=l.animations,T=S.length;for(l.reversePlayback===!0&&l.rewind===!1&&(w=l.duration-w);b<T;){var A=S[b],v=A.animatable,E=A.tweens,_=E.length-1,C=E[_];_&&(C=sm(E,function(oe){return w<oe.end})[0]||C);for(var I=Yi(w-C.start-C.delay,0,C.duration)/C.duration,N=isNaN(I)?1:C.easing(I),R=C.to.strings,z=C.round,k=[],Q=C.to.numbers.length,J=void 0,Y=0;Y<Q;Y++){var F=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var G=C.to.numbers[Y],O=C.from.numbers[Y]||0;else var O=C.to.numbers[Y],G=C.from.numbers[Y]||0;C.isPath?F=Lz(C.value,N*O):F=G+N*(O-G),z&&(C.isColor&&Y>2||(F=Math.round(F*z)/z)),k.push(F)}var j=R.length;if(!j)J=k[0];else{J=R[0];for(var q=0;q<j;q++){var K=R[q],W=R[q+1],ge=k[q];isNaN(ge)||(W?J+=ge+W:J+=ge+" ")}}sT[A.type](v.target,A.property,J,v.transforms),A.currentValue=J,b++}}function g(w){l[w]&&!l.passThrough&&l[w](l)}function x(){l.remaining&&l.remaining!==!0&&l.remaining--}function y(w){var b=l.duration,S=l.delay,T=b-l.endDelay,A=u(w);l.progress=Yi(A/b*100,0,100),l.reversePlayback=A<l.currentTime,n&&m(A),!l.began&&l.currentTime>=0&&(l.began=!0,g("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,g("loopBegin")),A<=S&&l.currentTime!==0&&p(0),(A>=T&&l.currentTime!==b||!b)&&p(b),A>S&&A<T?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,g("changeBegin")),g("change"),p(A)):l.changeBegan?(l.changeCompleted=!0,l.changeBegan=!1,g("change"),g("changeComplete")):l.began&&A>T&&(g("change"),g("changeComplete")),l.currentTime=Yi(A,0,b),l.began&&g("update"),w>=b&&(t=0,x(),l.remaining?(e=r,g("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&h()):(l.paused=!0,l.completed||(l.completed=!0,g("loopComplete"),g("complete"),!l.passThrough&&"Promise"in window&&(o(),c=a(l)))))}return l.reset=function(){var w=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=w==="reverse",l.remaining=l.loop,n=l.children,s=n.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||w==="alternate"&&l.loop===1)&&l.remaining++,p(l.reversed?l.duration:0)},l.set=function(w,b){return oT(w,b),l},l.tick=function(w){r=w,e||(e=r),y((r+(t-e))*Sr.speed)},l.seek=function(w){y(u(w))},l.pause=function(){l.paused=!0,f()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,Tn.push(l),f(),nm||Gz())},l.reverse=function(){h(),l.completed=!l.reversed,f()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function jA(i,e){for(var t=e.length;t--;)cx(i,e[t].animatable.target)&&e.splice(t,1)}function Vz(i){for(var e=nT(i),t=Tn.length;t--;){var r=Tn[t],n=r.animations,s=r.children;jA(e,n);for(var o=s.length;o--;){var a=s[o],l=a.animations;jA(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!n.length&&!s.length&&r.pause()}}function Hz(i,e){e===void 0&&(e={});var t=e.direction||"normal",r=e.easing?lx(e.easing):null,n=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",c=o==="last",h=Xe.arr(i),u=parseFloat(h?i[0]:i),f=h?parseFloat(i[1]):0,d=xs(h?i[1]:i)||0,m=e.start||0+(h?u:0),p=[],g=0;return function(x,y,w){if(a&&(o=0),l&&(o=(w-1)/2),c&&(o=w-1),!p.length){for(var b=0;b<w;b++){if(!n)p.push(Math.abs(o-b));else{var S=l?(n[0]-1)/2:o%n[0],T=l?(n[1]-1)/2:Math.floor(o/n[0]),A=b%n[0],v=Math.floor(b/n[0]),E=S-A,_=T-v,C=Math.sqrt(E*E+_*_);s==="x"&&(C=-E),s==="y"&&(C=-_),p.push(C)}g=Math.max.apply(Math,p)}r&&(p=p.map(function(N){return r(N/g)*g})),t==="reverse"&&(p=p.map(function(N){return s?N<0?N*-1:-N:Math.abs(g-N)}))}var I=h?(f-u)/g:u;return m+I*(Math.round(p[y]*100)/100)+d}}function Wz(i){i===void 0&&(i={});var e=Sr(i);return e.duration=0,e.add=function(t,r){var n=Tn.indexOf(e),s=e.children;n>-1&&Tn.splice(n,1);function o(f){f.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=am(t,sx(ax,i));l.targets=l.targets||i.targets;var c=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=Xe.und(r)?c:px(r,c),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var h=Sr(l);o(h),s.push(h);var u=aT(s,i);return e.delay=u.delay,e.endDelay=u.endDelay,e.duration=u.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}Sr.version="3.2.0";Sr.speed=1;Sr.running=Tn;Sr.remove=Vz;Sr.get=dx;Sr.set=oT;Sr.convertPx=ux;Sr.path=Pz;Sr.setDashoffset=Cz;Sr.stagger=Hz;Sr.timeline=Wz;Sr.easing=lx;Sr.penner=QA;Sr.random=function(i,e){return Math.floor(Math.random()*(e-i+1))+i};var Eu=Sr;function lT(i,e,t){var n,s;let r=i.cameraType==="OrthographicCamera"?(n=e.orthographic)==null?void 0:n.zoom:(s=e.perspective)==null?void 0:s.zoom;if(r!==void 0){let o=i.zoom;o!==r&&t.push({change:a=>{i.zoom=et.lerp(o,r,a),i.updateProjectionMatrix()}})}if(e.targetOffset!==void 0){let o=i.targetOffset,a=e.targetOffset;o!==a&&t.push({change:l=>{i.targetOffset=et.lerp(o,a,l)}})}}function cT(i,e,t){if(e.width!==void 0&&e.height!==void 0&&e.depth!==void 0){let{width:r,height:n,depth:s}=i.geometry.userData.parameters,o=[r,n,s],a=[e.width,e.height,e.depth];!br.isEqual(o,a)&&!Ot(i)&&t.push({change:l=>{let[c,h,u]=br.lerp(o,a,l);i.updateGeometry({parameters:{width:c,height:h,depth:u}}),i.invalidateDownstreamBooleanData()}})}}function hT(i,e,t,r){if(e.intensity!==void 0){let n=i.intensity,s=e.intensity;n!==s&&t.push({change:o=>{i.intensity=et.lerp(n,s,o)}})}if(e.color!==void 0){let n=i.color.clone(),s=typeof e.color=="string"?r.getColor(e.color):e.color;if(!Ar.equals(n,s)){let o=n.clone();i.color=o,t.push({change:a=>{let{r:l,g:c,b:h}=Ar.lerp(n,s,a);o.setRGB(l,c,h)}})}}}function uT(i,e,t,r){var s,o;let n=i.layersList.head;for(;n;){let a=e.layers.data(n.uuid);if(a&&((s=n.visible)!=null?s:!0)&&((o=a.visible)!=null?o:!0)){let l=n.getNames().filter(c=>!DM.some(h=>c.includes(h)));for(let c of l)try{let h=n.getValue(c);if(c==="steps")Jz(n,a,c,t);else if(c==="colors")Kz(n,a,c,t);else if(typeof h=="number")jz(n,a,c,t);else{if(typeof h=="boolean")continue;"isVector2"in h?qz(n,a,c,t):"isVector3"in h?Yz(n,a,c,t):"isColorA"in h?Qz(n,a,c,t,r):"isColor"in h?Xz(n,a,c,t,r):"isTexture"in h&&Zz(n,a,c,t)}}catch(h){console.error(`animateMaterial: unexpected material layer for ${c}`,h)}}n=n.next}}function jz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=e[t];n!==s&&r.push({change:o=>{i.setValue(t,et.lerp(n,s,o))}})}function qz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=n.toArray(),o=e[t];fs.isEqual(s,o)||r.push({change:a=>{n.fromArray(fs.lerp(s,o,a))}})}function Yz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=n.toArray(),o=e[t];br.isEqual(s,o)||r.push({change:a=>{n.fromArray(br.lerp(s,o,a))}})}function Xz(i,e,t,r,n){if(!i.hasValue(t)||!(t in e))return;let s=i.getValue(t).clone(),o=e[t],a=typeof o=="string"?n.getColor(o):o;if(Ar.equals(s,a))return;let l=s.clone();i.setValue(t,l),r.push({change:c=>{let{r:h,g:u,b:f}=Ar.lerp(s,a,c);l.setRGB(h,u,f)}})}function Qz(i,e,t,r,n){if(!i.hasValue(t)||!(t in e))return;let s=i.getValue(t).clone(),o=e[t],a=typeof o=="string"?n.getColor(o):o;if(In.equals(s,a))return;let l=s.clone();i.setValue(t,l),r.push({change:c=>{let{r:h,g:u,b:f,a:d}=In.lerp(s,a,c);l.setRGBA(h,u,f,d)}})}function Jz(i,e,t="steps",r){if(!i.hasValue(t)||!(t in e))return;let n=[...i.getValue(t)],s=e[t];for(let o=0;o<n.length;++o){let a=n[o],l=s[o];a!==l&&r.push({change:c=>{n[o]=et.lerp(a,l,c),i.setValue("steps",n)}})}}function Kz(i,e,t="colors",r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=e[t];for(let o=0;o<n.length;++o){let a=n[o].toArray(),l=s[o];Rh.isEqual(a,l)||r.push({change:c=>{n[o].fromArray(Rh.lerp(a,l,c))}})}}function Zz(i,e,t="texture",r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue("texture"),s=e[t],o=n.repeat.toArray(),a=n.offset.toArray(),l=s.repeat,c=s.offset;(!fs.isEqual(o,l)||!fs.isEqual(a,c))&&r.push({change:h=>{n.repeat.fromArray(fs.lerp(o,l,h)),n.offset.fromArray(fs.lerp(a,c,h)),n.updateMatrix(),n.needsUpdate=!0}})}function fT(i,e,t,r){if(r===0)return t.copy(i);if(r===1)return t.copy(e);let n=i.w*e.w+i.x*e.x+i.y*e.y+i.z*e.z;if(n>=1)return t.copy(i);let s=1-n*n;if(s<=Number.EPSILON){let h=1-r;return t.w=h*i.w+r*e.w,t.x=h*i.x+r*e.x,t.y=h*i.y+r*e.y,t.z=h*i.z+r*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,n),l=Math.sin((1-r)*a)/o,c=Math.sin(r*a)/o;return t.w=i.w*l+e.w*c,t.x=i.x*l+e.x*c,t.y=i.y*l+e.y*c,t.z=i.z*l+e.z*c,t}function dT(i,e,t=0){let r=Array.isArray(i.material)?i.material[t]:i.material,n;return"materials"in e?n=e.materials[t]:"material"in e&&(n=e.material),[r,n]}var gx=new M,yx=new M,pT=new zt,$z=new yn,eG=new Ae;function mT(i,e,t,r){if(t.position!==void 0){let n=i.position.toArray(),s=t.position;br.isEqual(n,s)||r.push({change:o=>{i.position.fromArray(br.lerp(n,s,o)),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}if(t.scale!==void 0){let n=i.scale.toArray(),s=t.scale;br.isEqual(n,s)||r.push({change:o=>{i.scale.fromArray(br.lerp(n,s,o)),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}tG(i,e,t,r),rG(i,t,r)}function tG(i,e,t,r){if(t.rotation===void 0)return;let n=gx.setFromEuler(i.rotation).toArray(),s=t.rotation;if(br.isEqual(n,s))return;if(br.sub(t.rotation,e?e.rotation:i.rotation).every(a=>Math.abs(a)<2*Math.PI)){let a=i.quaternion.clone(),l=new zt().setFromEuler($z.set(t.rotation[0],t.rotation[1],t.rotation[2]));r.push({change:c=>{fT(a,l,i.quaternion,c),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}else r.push({change:a=>{i.rotation.setFromVector3(yx.fromArray(br.lerp(n,s,a))),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}function rG(i,e,t){if(e.hiddenMatrix!==void 0&&!Ii.isEqual(i.hiddenMatrix.toArray(),e.hiddenMatrix)){let r=new M,n=new zt,s=new M;i.hiddenMatrix.decompose(r,n,s);let o=new M,a=new zt,l=new M;eG.fromArray(e.hiddenMatrix).decompose(o,a,l),t.push({change:c=>{pT.slerpQuaternions(n,a,c),gx.lerpVectors(r,o,c),yx.lerpVectors(s,l,c),i.hiddenMatrix.compose(gx,pT,yx),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}}function gT(i,e,t,r){let n=[];if((i.visible||Ot(i.parent))&&mT(i,e==null?void 0:e.objectState,t.objectState,n),er(i)){if((i.visible||Ot(i.parent))&&"geometry"in t.objectState&&cT(i,t.objectState.geometry,n),i.visible&&("material"in t.objectState||"materials"in t.objectState)){let[s,o]=dT(i,t.objectState,i.selectedMaterial);s&&o&&typeof o!="string"&&uT(s,o,n,r)}}else i.visible&&U1(i)?hT(i,t.objectState,n,r):F1(i)&&lT(i,t.objectState,n);return n.length?{change:s=>{n.forEach(o=>{o.change&&o.change(s)})}}:void 0}function lm(i,e,t){switch(i){case 0:return"cubicBezier( 0, 0, 1, 1 )";case 1:return"cubicBezier( .25, .1, .25, 1 )";case 2:return"cubicBezier( .42, 0, 1, 1 )";case 3:return"cubicBezier( 0, 0, .58, 1 )";case 4:return"cubicBezier( .42, 0, .58, 1 )";case 5:let{control1:r,control2:n}=e;return`cubicBezier( ${r[0]}, ${r[1]}, ${n[0]}, ${n[1]} )`;case 6:let{mass:s,stiffness:o,damping:a,velocity:l}=t;return`spring( ${s}, ${o}, ${a}, ${l} )`}}var cm=class{constructor(e,t){this.object=e;this.sharedAssets=t;this.uuid=et.generateUUID();this.states=[];this.events={};this._scrollCounter=null}get animation(){return this._animation}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._scrollCounter=null),this.states.length>1&&(this.states[0].execute(this.object,this.sharedAssets),this._currentState=this.states[0],this._prevState=void 0)}end(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0),this.states.length>1&&this.states[0].execute(this.object,this.sharedAssets),this._currentState=void 0,this._prevState=void 0}play(e,t){e.state!==void 0&&this.animate(e.state,e,!0,t)}reverse(e,t){this._prevState!==void 0&&this.animate(this._prevState,e,!0,t)}seek(e,t,r,n){var s;this._scrollCounter===null&&(e.state!==void 0&&this.animate(e.state,e,!1,n),this._scrollCounter=0),this._scrollCounter+=t,this._scrollCounter=Math.min(Math.max(this._scrollCounter,0),r),(s=this._animation)==null||s.seek(this._scrollCounter/r*e.duration)}animate(e,t,r=!0,n){var s,o,a,l,c,h;if(this._currentState===e){if((s=this._animation)!=null&&s.reversed){let u=(a=(o=this._animation)==null?void 0:o.currentTime)!=null?a:0;(l=this._animation)==null||l.reset(),(c=this._animation)==null||c.seek(u),(h=this._animation)==null||h.play()}}else{this._prevState=this._currentState,this._currentState=e,this._animation!==void 0&&this._animation.pause(),t.cycle===!0&&t.repeat===!0?this._animation=Eu.timeline({duration:t.duration,delay:t.delay/2,endDelay:t.delay/2,direction:"alternate",loop:!0,rewind:t.rewind,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):t.cycle===!0&&t.repeat===!1?this._animation=Eu.timeline({duration:t.duration,delay:t.delay,endDelay:t.delay/2,direction:"alternate",rewind:t.rewind,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):t.cycle===!1&&t.repeat===!0?this._animation=Eu.timeline({duration:t.duration,delay:t.delay,direction:"normal",loop:!0,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):this._animation=Eu.timeline({duration:t.duration,delay:t.delay,direction:"normal",easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}),r&&this._animation.finished.then(()=>{this._animation=void 0});let u=gT(this.object,this._prevState,this._currentState,this.sharedAssets);if(u){let f={t:0};this._animation.add({targets:f,t:1,change:()=>{var d;u.change&&(u.change(f.t),(d=n==null?void 0:n.change)==null||d.call(this,f.t))}},0)}}}emitEvent(e){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let t=this.events[e];if(t)for(let r of t)r.targets.forEach(n=>this.play(n))}}emitEventReverse(e){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let t=this.events[e];if(t)for(let r of t)r.targets.forEach(n=>this.reverse(n))}}};var gc=class{constructor(e){this.targetState=e}static create(e,t){var n;let r=new gc(e);if(e.object){let s=t.find(e.object);if(r.object=s,s!=null&&s.interaction){let o=s.interaction.states;r.state=e.state&&(n=o.find(a=>a.uuid===e.state))!=null?n:o[0]}}return r}get cubicControls(){let e=this.targetState;return e.easing===5?{control1:e.control1,control2:e.control2}:se({},Gd.defaultData)}get springParameters(){let e=this.targetState;return e.easing===6?e:se({},zd.defaultData)}get easing(){return this.targetState.easing}get duration(){return this.targetState.duration}get delay(){return this.targetState.delay}get repeat(){return this.targetState.repeat}get cycle(){return this.targetState.cycle}get rewind(){return this.targetState.rewind}};var yT=new Yr,ra=class extends Wr{},hm=class{constructor(e){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new mt(2048,2048,{generateMipmaps:!0,minFilter:js,magFilter:ct,wrapS:Dr,wrapT:Dr}),this.transmissionRenderTarget.depthTexture=new li(2048,2048),this.reset(e)}reset(e){for(let[t,r]of Object.entries(e.images))this.addImage(t,r.data);for(let[t,r]of Object.entries(e.colors))this.addColor(t,r);for(let[t,r]of Object.entries(e.materials))this.addMaterial(t,Lv(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(e,t){t.uuid=e,this.materials[e]=t}deleteMaterial(e){this.materials[e]&&(this.materials[e].dispose(),delete this.materials[e])}isSharedMaterial(e){return e.uuid in this.materials||e===yT}getMaterial(e){let t=this.materials[e];return t}getMaterialOrDeletedPlaceholder(e){var t;return(t=this.materials[e])!=null?t:yT}getMaterials(){return this.materials}addImage(e,t){if(this.images[e])return this.images[e].onload=()=>{this.onImageLoad&&this.onImageLoad(e)},this.images[e].src=t,!0;{let r=new Image;return r.src=t,r.onload=()=>{this.onImageLoad&&this.onImageLoad(e)},this.images[e]=r,!1}}deleteImage(e){this.images[e]&&delete this.images[e]}getDefaultImage(){return this.images.image_0}getImage(e){return this.images[e]}getImages(){return this.images}addColor(e,t){return this.colors[e]?("a"in t?this.colors[e].setRGBA(t.r,t.g,t.b,t.a):this.colors[e].setRGBA(t.r,t.g,t.b,1),!0):("a"in t?this.colors[e]=new ra(t.r,t.g,t.b,t.a):this.colors[e]=new ra(t.r,t.g,t.b,1),!1)}updateColor(e,t){var r,n,s,o;if(this.colors[e]){let a=this.colors[e];return this.colors[e].r=(r=t.r)!=null?r:a.r,this.colors[e].g=(n=t.g)!=null?n:a.g,this.colors[e].b=(s=t.b)!=null?s:a.b,this.colors[e].a=(o=t.a)!=null?o:a.a,!0}return!1}deleteColor(e){this.colors[e]&&delete this.colors[e]}getColor(e){return this.colors[e]}dispose(){Object.keys(this.materials).forEach(t=>this.deleteMaterial(t)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};function nG(i,e){switch(i.type){case"noise":return e==="noiseType";case"texture":return e==="projection"||e==="axis"||e==="side";case"displace":return e==="noiseType";case"depth":return e==="num"||e==="smooth"||e==="isWorldSpace"||e==="gradientType";default:return!1}}function vx(i,e,t,r,n){var o;let s=!1;for(let[a,l]of Object.entries(i)){if(!a||l===void 0||Up(a,t,n))continue;t.visible=n.visible;let c=t.uniforms[`f${t.id}_${a}`];if(!!c)switch(c.constructor){case Nt:if(typeof l=="string"){let h=e.getColor(l);h&&(c.value=h);break}else{let h=l;c.value instanceof ra?c.value=new Wr(h.r,h.g,h.b,h.a):c.setRGBA(h);break}case pi:if(typeof l=="string"){let h=e.getColor(l);h&&(c.value=h);break}else{let h=l;c.value instanceof ra?c.value=new Wr(h.r,h.g,h.b,h.a):c.value.setRGBA(h.r,h.g,h.b,h.a);break}case Nr:{let h=l;c.value.setX(h[0]),c.value.setY(h[1]);break}case Or:{let h=l;c.value.setX(h[0]),c.value.setY(h[1]),c.value.setZ(h[2]);break}case jr:{let h=l;if("image"in h){let u=e.getImage(h.image);if(u)c.value.image=u;else{let f=new Image;f.src=h.image.data,c.value.image=f}}"wrapping"in h&&(c.value.wrapS=c.value.wrapT=h.wrapping),"repeat"in h&&c.value.repeat.fromArray(h.repeat),"offset"in h&&c.value.offset.fromArray(h.offset),c.value.needsUpdate=!0;break}case ms:{l.forEach((h,u)=>{c.value[u].setX(h[0]),c.value[u].setY(h[1]),c.value[u].setZ(h[2]),c.value[u].setW(h[3])});break}default:{s=s||nG(t,a),c.value=l;break}}}if(s&&n){let a=Fp({id:"0",fi:0,data:n},e);(o=r.userData.layers)==null||o.changeLayer(t.id,se({},a)),r.dispose(),r.needsUpdate=!0}}var xx=new M,vT=new Gr,xT=new Ae,vc={type:"follow",normal:new M,raycaster:new io},yc;(t=>{function i(r){if(r.type===10)return{type:"follow"}}t.create=i;function e({target:r,normal:n,raycaster:s,begin:o,change:a}){!r||!r.interaction||!n||!s||(o&&o("follow",r.uuid),vT.setFromNormalAndCoplanarPoint(n,r.getWorldPosition(xx)),s.ray.intersectPlane(vT,xx),r.position.copy(xx),r.parent!==null&&r.position.applyMatrix4(xT.copy(r.parent.matrixWorld).invert()),r.position.applyMatrix4(xT.copy(r.hiddenMatrix).invert()),r.updateMatrix(),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0),a&&a())}t.listener=e})(yc||(yc={}));var um={type:"keyDown"},fm={type:"keyUp"},xc;(t=>{function i(r){if(r.type===5&&r.key)return{type:"keyDown",targets:[],key:r.key}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.keyDown;if(!(a!=null&&a.length))return;let l=!1;for(let c of a)c.key===o.key&&(c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.play(h,{change:s})}),l=!0);l&&n&&n("keyDown",r.uuid)}t.listener=e})(xc||(xc={}));var bc;(t=>{function i(r){if(!(r.type!==6||!r.key))return{type:"keyUp",targets:[],key:r.key}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.keyUp;if(!(a!=null&&a.length))return;let l=!1;for(let c of a)c.key===o.key&&(c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.play(h,{change:s})}),l=!0);l&&n&&n("keyUp",r.uuid)}t.listener=e})(bc||(bc={}));var bx=new M,bT=new Gr,Sc={type:"lookAt",normal:new M,raycaster:new io},wc;(t=>{function i(r){if(r.type===9&&r.distance)return{type:"lookAt",distance:r.distance}}t.create=i;function e({target:r,normal:n,raycaster:s,begin:o,change:a}){var h;if(!r||!r.interaction||!n||!s)return;let l=r.interaction.events.lookAt;if(!(l!=null&&l.length))return;o&&o("lookAt",r.uuid);let c=l[0].distance;bT.set(n,-c),s.ray.intersectPlane(bT,bx),r.lookAt(bx),r.updateMatrix(),(h=r.interaction.animation)==null||h.finished.then(()=>{r.lookAt(bx),r.updateMatrix(),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0)}),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0),a&&a()}t.listener=e})(wc||(wc={}));var dm={type:"mouseDown"},pm={type:"mouseUp"},Mc;(t=>{function i(r){if(r.type===0)return{type:"mouseDown",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.mouseDown;!(o!=null&&o.length)||(n&&n("mouseDown",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Mc||(Mc={}));var Ac;(t=>{function i(r){if(r.type===1)return{type:"mouseUp",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.mouseUp;!(o!=null&&o.length)||(n&&n("mouseUp",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Ac||(Ac={}));var wx={type:"start"},Tc;(t=>{function i(r){if(r.type===7)return{type:"start",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.start;!(o!=null&&o.length)||(n&&n("start",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Tc||(Tc={}));var En={type:"link"},Ec;(t=>{function i(r){let n;if(r.type===0)n={type:"mousedown"};else if(r.type===1)n={type:"mouseup"};else if(r.type===5){if(!r.key)return;n={type:"keydown",key:r.key}}else if(r.type===6){if(!r.key)return;n={type:"keyup",key:r.key}}else return;if(r.url)return{type:"link",subEvent:n,url:r.url}}t.create=i;function e({target:r,begin:n,domEvent:s,subType:o}){var c;if(!r||!r.interaction||!o||!s)return;let a=r.interaction.events.link;if(!a)return;let l;if(o==="keydown"||o==="keyup"){let h=s.key;l=(c=a[o])==null?void 0:c.filter(u=>u.subEvent.type===o&&u.subEvent.key===h)}else l=a[o];if(!!(l!=null&&l.length)){n&&n("link",r.uuid);for(let h of l)Ho?window.location.assign(h.url):window.open(h.url,"_blank")}}t.listener=e})(Ec||(Ec={}));var mm={type:"scroll"},_c;(t=>{function i(r){if(!(r.type!==11||r.steps===void 0))return{type:"scroll",targets:[],steps:r.steps}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.scroll;if(!(a!=null&&a.length))return;n&&n("scroll",r.uuid);let l=o.deltaY>0?1:-1;a.forEach(c=>{c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.seek(h,l,c.steps,{change:s})})})}t.listener=e})(_c||(_c={}));var vo={type:"mouseHover"},Cc;(t=>{function i(r){if(r.type===2)return{type:"mouseHover",targets:[]}}t.create=i;function e({target:r,begin:n,change:s,enter:o}){if(!r||!r.interaction||o===void 0)return;let a=r.interaction.events.mouseHover;!(a!=null&&a.length)||(n&&n("mouseHover",r.uuid),o?a.forEach(l=>{l.targets.forEach(c=>{var h,u;return(u=(h=c.object)==null?void 0:h.interaction)==null?void 0:u.play(c,{change:s})})}):a.forEach(l=>{l.targets.forEach(c=>{var h,u;return(u=(h=c.object)==null?void 0:h.interaction)==null?void 0:u.reverse(c,{change:s})})}))}t.listener=e})(Cc||(Cc={}));function iG(i){let e,{type:t}=i;return t===10?e=yc.create(i):t===5?e=xc.create(i):t===6?e=bc.create(i):t===9?e=wc.create(i):t===0?e=Mc.create(i):t===1?e=Ac.create(i):t===2?e=Cc.create(i):t===11?e=_c.create(i):t===7&&(e=Tc.create(i)),e}function wT(i,e,t){let r=[];i.objects.traverse((n,s)=>{var h;let o=e.find(n);if(delete o.interaction,!s.visible&&!Ot(o.parent)||s.states===void 0)return;let a=new cm(o,t),l=a.states;l.push(na.create(n,s));for(let u of s.states){let f=kh.patch(s,u.data);l.push(na.create(u.id,f))}let c=a.events;if(s.events)for(let{data:u}of s.events){let f=iG(u);if(!f)continue;let d=f.type;c[d]?(h=c[d])==null||h.push(f):c[d]=[f],"targets"in u&&r.push([u,f]);let m=Ec.create(u);if(m){c.link||(c.link={});let p=m.subEvent.type;c.link[p]?c.link[p].push(m):c.link[p]=[m]}}(l.length>0||Object.keys(c).length>0)&&(o.interaction=a,Sx(o,s,null,t))});for(let[n,s]of r)if("targets"in n&&"targets"in s)for(let{data:o}of n.targets){let a=gc.create(o,e);s.targets.push(a)}}function Sx(i,e,t,r,n=!1){if(!n&&e.states.length===0)return;let s=t===null?e:kh.patch(e,e.states.data(t));if(Iv(i,s),i instanceof kt&&s.type==="Mesh"){if(i instanceof fo?i.buildFromStore(s.geometry):i.updateGeometry({parameters:s.geometry}),i.freeBooleanPointer(),Ot(i.parent)&&i.parent.invalidateDownstreamBooleanData().recomputeBoolean(),"material"in s){if(i.material instanceof Array)return;if(typeof s.material!="string"){let a=s.material.layers;for(let l of a){let c=i.material.userData.layers.getLayerByUuid(l.id);vx(l.data,r,c,i.material,l.data)}}}else if("materials"in s){if(!(i.material instanceof Array))return;var o=0;for(let a of s.materials){if(typeof a!="string"){let l=a.layers;for(let c of l){let h=i.material[o].userData.layers.getLayerByUuid(c.id);vx(c.data,r,h,i.material[o],c.data)}}o++}}}else if(s.type==="DirectionalLight")i.fromDirectionalLightState(s,r);else if(s.type==="PointLight")i.fromPointLightState(s,r);else if(s.type==="SpotLight")i.fromSpotLightState(s,r);else if(i instanceof Nn&&eo.is(s.type)){let a=s;i.setZoom("PerspectiveCamera",a.perspective.zoom),i.setZoom("OrthographicCamera",a.orthographic.zoom)}}var na=class{constructor(e){this.objectState=e;this.uuid=et.generateUUID()}static create(e,t){let r=new na(t);return r.uuid=e,r}execute(e,t){Sx(e,this.objectState,null,t,!0)}};var $n=new io,ei=new M,Mx={follow:yc.listener,keyDown:xc.listener,keyUp:bc.listener,link:Ec.listener,lookAt:wc.listener,mouseDown:Mc.listener,mouseUp:Ac.listener,mouseHover:Cc.listener,scroll:_c.listener,start:Tc.listener},ST={follow:vc,keyDown:um,keyUp:fm,link:En,lookAt:Sc,mouseDown:dm,mouseUp:pm,mouseHover:vo,scroll:mm,start:wx};function sG(i){if(i.style.transform!==""){let e=getComputedStyle(i).getPropertyValue("transform");if(e!=="none"){let t=e.replace("matrix(","").split(",");return{x:parseFloat(t[0]),y:parseFloat(t[3])}}}return{x:1,y:1}}function MT(i){let e=i.getViewport(new Je),t=sG(i.domElement);return{left:e.x*t.x,top:e.y*t.y,width:e.z*t.x,height:e.w*t.y}}function _u(i,e){if(er(e)){if(!e.raycastLock&&e.visible){let t=i.intersectObject(e,!1);return t.length?t[0]:void 0}}else if(e.objectType==="EmptyObject")return AT(i,e)}function AT(i,e){if(er(e)&&!e.raycastLock&&e.visible){let t=i.intersectObject(e,!1);if(t.length)return t[0]}for(let t of e.children)if(Zo(t)){let r=AT(i,t);if(r)return r}}var gm=class{constructor(e,t,r,n){this.isEnable=!1;this.splineEvents={};this._map={};this._prevObjects=[];this._onMouseDown=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseDownEvent(e)};this._onMouseUp=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseUpEvent(e)};this._onMouseMove=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e)};this._onTouchStart=e=>{e.touches.length===1&&($n.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseDownEvent(e),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e))};this._onTouchEnd=e=>{this._handleMouseUpEvent(e),this._handleMouseHoverEvent(e,!0)};this._onTouchMove=e=>{e.touches.length===1&&($n.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e))};this._onWheel=e=>{this._handleWheelEvent(e)};this._onKeyDown=e=>{this._handleKeyDownEvent(e)};this._onKeyUp=e=>{this._handleKeyUpEvent(e)};this._renderer=e,this._domElement=e.domElement,this._camera=r,this._scene=t,this._app=n,this._domRect=this._domElement.getBoundingClientRect(),this._viewRect=MT(e)}activate(){var e,t,r,n,s,o,a,l,c,h,u,f,d,m,p,g,x,y,w,b,S,T,A,v,E,_,C,I,N,R;this.isEnable=!0,this._map={},this._scene.traverseEntity(z=>{z.interaction!==void 0&&(z.interaction.start(),Object.keys(z.interaction.events).forEach(k=>{let Q=k;this._addDOMCustomEvent(Q,z),(z.visible||Q!=="mouseDown"&&Q!=="mouseUp"&&Q!=="mouseHover")&&this._addSPEEvent(Q,Mx[Q],z)}))}),Fd?((((e=this._map.mouseDown)==null?void 0:e.length)||((r=(t=this._map.link)==null?void 0:t.mousedown)==null?void 0:r.length)||((n=this._map.mouseHover)==null?void 0:n.length)||((s=this._map.lookAt)==null?void 0:s.length)||((o=this._map.follow)==null?void 0:o.length))&&this._domElement.addEventListener("touchstart",this._onTouchStart),(((a=this._map.mouseUp)==null?void 0:a.length)||((c=(l=this._map.link)==null?void 0:l.mouseup)==null?void 0:c.length)||((h=this._map.mouseHover)==null?void 0:h.length))&&this._domElement.addEventListener("touchend",this._onTouchEnd),(((u=this._map.mouseHover)==null?void 0:u.length)||((f=this._map.lookAt)==null?void 0:f.length)||((d=this._map.follow)==null?void 0:d.length))&&this._domElement.addEventListener("touchmove",this._onTouchMove)):((((m=this._map.mouseDown)==null?void 0:m.length)||((g=(p=this._map.link)==null?void 0:p.mousedown)==null?void 0:g.length))&&this._domElement.addEventListener("pointerdown",this._onMouseDown),(((x=this._map.mouseUp)==null?void 0:x.length)||((w=(y=this._map.link)==null?void 0:y.mouseup)==null?void 0:w.length))&&this._domElement.addEventListener("pointerup",this._onMouseUp),(((b=this._map.mouseHover)==null?void 0:b.length)||((S=this._map.lookAt)==null?void 0:S.length)||((T=this._map.follow)==null?void 0:T.length))&&this._domElement.addEventListener("pointermove",this._onMouseMove)),(A=this._map.scroll)!=null&&A.length&&this._domElement.addEventListener("wheel",this._onWheel),(((v=this._map.keyDown)==null?void 0:v.length)||((_=(E=this._map.link)==null?void 0:E.keydown)==null?void 0:_.length))&&document.addEventListener("keydown",this._onKeyDown),(((C=this._map.keyUp)==null?void 0:C.length)||((N=(I=this._map.link)==null?void 0:I.keyup)==null?void 0:N.length))&&document.addEventListener("keyup",this._onKeyUp),(R=this._map.start)!=null&&R.length&&this._handleStartEvent(),this.resize()}deactivate(){this._scene.traverseEntity(e=>{if(!e.interaction)return;e.interaction.end();let t=e;Object.keys(Mx).forEach(r=>{let n=r;t.removeEventListener(n,Mx[n])})}),this._domElement.removeEventListener("pointerdown",this._onMouseDown),this._domElement.removeEventListener("pointerup",this._onMouseUp),this._domElement.removeEventListener("pointermove",this._onMouseMove),this._domElement.removeEventListener("touchstart",this._onTouchStart),this._domElement.removeEventListener("touchend",this._onTouchEnd),this._domElement.removeEventListener("touchmove",this._onTouchMove),this._domElement.removeEventListener("wheel",this._onWheel),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),this._map={},this.isEnable=!1}reset(){this._scene.traverseEntity(e=>{var t;(t=e.interaction)==null||t.start()}),this._handleStartEvent()}resize(){this._domRect=this._domElement.getBoundingClientRect(),this._viewRect=MT(this._renderer)}_getPointer(e,t){let r=this._domRect,n=this._viewRect,s=r.height-n.height,o=(e-n.left-r.left)*(r.width/n.width),a=(t-s+n.top-r.top)*(r.height/n.height);return{x:o/r.width*2-1,y:-(a/r.height)*2+1}}_handleStartEvent(){var e;(e=this._map.start)==null||e.forEach(t=>t.dispatchEvent(wx))}_handleWheelEvent(e){var t;(t=this._map.scroll)!=null&&t.length&&(mm.domEvent=e,this._map.scroll.forEach(r=>r.dispatchEvent(mm)))}_handleMouseDownEvent(e){var t,r,n;(t=this._map.mouseDown)==null||t.forEach(s=>{_u($n,s)&&(dm.domEvent=e,s.dispatchEvent(dm))}),(n=(r=this._map.link)==null?void 0:r.mousedown)==null||n.forEach(s=>{_u($n,s)&&(En.domEvent=e,En.subType="mousedown",s.dispatchEvent(En))})}_handleMouseUpEvent(e){var t,r,n;(t=this._map.mouseUp)==null||t.forEach(s=>{_u($n,s)&&(pm.domEvent=e,s.dispatchEvent(pm))}),(n=(r=this._map.link)==null?void 0:r.mouseup)==null||n.forEach(s=>{_u($n,s)&&(En.domEvent=e,En.subType="mouseup",s.dispatchEvent(En))})}_handleMouseHoverEvent(e,t=!1){var n;let r=[];t||(n=this._map.mouseHover)==null||n.forEach(s=>{_u($n,s)&&r.push(s)}),this._prevObjects.length&&(vo.domEvent=e,vo.enter=!1,this._prevObjects.forEach(s=>{r.includes(s)||s.dispatchEvent(vo)})),r.length&&(vo.domEvent=e,vo.enter=!0,r.forEach(s=>s.dispatchEvent(vo))),this._prevObjects=r}_handleLookAtEvent(e){var t;(t=this._map.lookAt)!=null&&t.length&&(Sc.domEvent=e,Sc.normal=ei,Sc.raycaster=$n,this._map.lookAt.forEach(r=>r.dispatchEvent(Sc)))}_handleFollowEvent(e){this._map.follow&&(vc.domEvent=e,vc.normal=ei,vc.raycaster=$n,this._map.follow.forEach(t=>t.dispatchEvent(vc)))}_handleKeyDownEvent(e){var t,r,n;(t=this._map.keyDown)!=null&&t.length&&(um.domEvent=e,this._map.keyDown.forEach(s=>s.dispatchEvent(um))),(n=(r=this._map.link)==null?void 0:r.keydown)!=null&&n.length&&(En.domEvent=e,En.subType="keydown",this._map.link.keydown.forEach(s=>s.dispatchEvent(En)))}_handleKeyUpEvent(e){var t,r,n;(t=this._map.keyUp)!=null&&t.length&&(fm.domEvent=e,this._map.keyUp.forEach(s=>s.dispatchEvent(fm))),(n=(r=this._map.link)==null?void 0:r.keyup)!=null&&n.length&&(En.domEvent=e,En.subType="keyup",this._map.link.keyup.forEach(s=>s.dispatchEvent(En)))}_addSPEEvent(e,t,r){var n;if(!!r.interaction)if(ST[e].begin=this._dispatchDOMCustomEvent.bind(this),ST[e].change=this._app.requestRender.bind(this),e==="link"){let s=r.interaction.events[e];if(s){let o=!1;Object.keys(s).forEach(a=>{let l=a;this._map[e]===void 0&&(this._map[e]={});let c=this._map[e];c[l]===void 0?c[l]=[r]:c[l].push(r),o=!0}),o&&r.addEventListener(e,t)}}else(n=r.interaction.events[e])!=null&&n.length&&(r.addEventListener(e,t),this._map[e]===void 0?this._map[e]=[r]:this._map[e].push(r))}_addDOMCustomEvent(e,t){if(e){let r=new CustomEvent(e,{bubbles:!0});Object.defineProperty(r,"target",{writable:!1,value:{id:t.uuid,name:t.name}}),this.splineEvents[e]?this.splineEvents[e][t.uuid]=r:this.splineEvents[e]={[t.uuid]:r}}}_dispatchDOMCustomEvent(e,t){var n;let r=(n=this.splineEvents[e])==null?void 0:n[t];r&&this._domElement.dispatchEvent(r)}};var ym=class{constructor(e,t,r,n,s){this._aspect=1;this._renderer=e,this._camera=t,this._frameSize=new B().copy(r),this._editorSize=new B().copy(n),this._aspect=t.aspect,this._fov=s!=null?s:t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){!this._renderer||this._renderer.setSize(this._frameSize.x,this._frameSize.y,!1)}updateViewportForImageExport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,r=this._editorSize.x,n=this._editorSize.y;this._aspect=e/t,this._camera.zoom*=Math.min(r/e,n/t),this._renderer.setViewport(0,0,e,t)}updateViewport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,r=this._editorSize.x,n=this._editorSize.y,s=0,o=0,a=e,l=t;e<r&&(s=(r-e)*.5,s=-s,a=r),t<n&&(o=(n-t)*.5,o=-o,l=n),this._aspect=a/l,this._renderer.setViewport(s,o,a,l)}updateCamera(){if(!!this._camera)if(this._camera.cameraType==="PerspectiveCamera"){let e=this._frameSize.y,t=this._editorSize.y,r=this._fov;if(e>t){let n=oG(e,1080,2160,1,15)/100;r*=e/t,r*=1-n}this._camera.aspect=this._aspect,this._camera.fov=r,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y)}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t,!1)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t),this._camera.updateProjectionMatrix())}};function oG(i,e,t,r,n){return(i-e)/(t-e)*(n-r)+r}var vm=class{constructor(e){this.sharedAssets=new hm(e.shared),this.scene=new tm(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(this.sharedAssets),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose()}};var xm=class{constructor({x:e=10,y:t=10}){this._startTime=0;let r=document.getElementById("spe-perfs");r?this.element=r:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){var e;(e=this.element.parentElement)==null||e.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let t=performance.now()-this._startTime;this.element.innerHTML=t.toFixed(3)+" ms"}};function aG(i){let e;if(!!i.index)for(let t=0;t<i.index.array.length;t+=3)e=i.index.array[t],i.index.array[t]=i.index.array[t+2],i.index.array[t+2]=e}function Ax(i){return i==="SubdivObject"||i==="NonParametric"?i:"Mesh"}function lG(i,e){let t={};return i.traverseEntity(r=>{var c;if(r.type!=="Mesh"||!("material"in r)||!r.visible||!(r instanceof kt)||Array.isArray(r.material)||r&&r.interaction&&r.interaction.states.length>0)return;let n=r.parent;for(;n;){if(n instanceof kt&&n.interaction&&n.interaction.states.length>1)return;n=n.parent}let s=r.material.uuid,o=e.shared.materials[s];if(o){if(!fi.isMergable(o))return}else{let h=(c=e.scene.objects.get(r.uuid))==null?void 0:c.data;if(h&&"material"in h&&typeof h.material!="string"){if(!fi.isMergable(h.material))return;s=fi.getHash(h.material)}}t[s]||(t[s]={});let l=t[s][Ax(r.objectType)];if(l){if(l.push(r),r.cloner)for(let h of r.cloner.children)l.push(h)}else if(t[s][Ax(r.objectType)]=[r],r.cloner)for(let h of r.cloner.children)t[s][Ax(r.objectType)].push(h)}),t}function cG(i){let e=0;return Object.values(i).forEach(t=>{Object.values(t).forEach(r=>{let n=r.length;n>e&&(e=n)})}),e}function TT(i,e){let t=lG(e,i),r=cG(t),n=new Array(r),s=0,o=new Array(r),a=0,l=new Array(r),c=0,h=new Array(r),u=0;for(let f of Object.values(t))for(let d of Object.values(f)){if(a=0,c=0,d.forEach(p=>{p instanceof kt&&(o[a++]=p.geometry.clone(),l[c++]=p)}),c<2)continue;for(let p=0;p<c;p++)l[p].updateWorldMatrix(!0,!1),o[p].applyMatrix4(l[p].matrixWorld),l[p].matrixWorld.determinant()<0&&aG(o[p]);let m=NM(o.slice(0,a),!1);if(m){let p;switch(d[0].objectType){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),p=new Vt(m,l[0].material);break}default:{p=new Vt(m,l[0].material);break}}p.castShadow=l[0].castShadow,p.receiveShadow=l[0].receiveShadow,e.add(p);let g=x=>{u=0;for(let y of x)y.children&&g(y.children),y instanceof kt&&(Array.isArray(y.material)||t[y.material.uuid]&&t[y.material.uuid][y.objectType]&&t[y.material.uuid][y.objectType].length>1||(h[u++]=y));for(let y=0;y<u;y++)e.attach(h[y])};for(let x=0;x<c;x++){let y=l[x];g(y.children),n[s++]=y}}}for(let f=0;f<s;f++)n[f].removeFromParent()}var hG=new B,ET="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.",_T=class{constructor(e,{autoRender:t=!1}={}){this._viewportMode=1;this._viewportWidth=window.innerWidth;this._viewportHeight=window.innerHeight;this._proxyObjectCache=new Map;this._skipRender=!0;this.autoRender=!1;this.disposed=!1;this.requestRender=()=>{this._skipRender=!1};this.render=()=>{var e,t,r;!this._renderer||(this._rafId=requestAnimationFrame(this.render),(e=this._perfs)==null||e.start(),!(!this.autoRender&&this._skipRender)&&(this._controls&&(this._controls.enableDamping||this._controls.autoRotate)?this._skipRender=!this._controls.update():this._skipRender=!0,this._playmode&&!this._playmode.isEnable&&this._playmode.activate(),this._scene&&this._camera&&(this._renderer.autoClear=!1,this._transmissionRenderTarget&&(this._renderer.setRenderTarget(this._transmissionRenderTarget),this._renderer.clear(),this._camera.layers.enable(0),this._camera.layers.disable(3),this._renderer.render(this._scene,this._camera),this._renderer.setRenderTarget(null),this._camera.layers.enable(3)),(t=this._scene.postprocessing)!=null&&t.enabled?(this._renderer.autoClear=!1,this._scene.postprocessing.render()):(this._renderer.autoClear=!0,this._renderer.render(this._scene,this._camera))),(r=this._perfs)==null||r.end()))};this.resize=Ch(()=>{var e,t,r,n,s;!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=hG.set(this._viewportWidth,this._viewportHeight)),(e=this._frameView)==null||e.updateRenderer(),(t=this._scene)!=null&&t.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&((r=this._frameView)==null||r.updateViewport()),this._camera&&((n=this._frameView)==null||n.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),(s=this._playmode)==null||s.resize(),this.requestRender())},10);this.canvas=e,this.autoRender=t,window.location.search.includes("perfs")&&(this._perfs=new xm({x:10,y:10}))}async load(e){e.endsWith(".spline")?console.warn(ET+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(ET);let r=await(await fetch(e)).arrayBuffer();await this.start(r)}async start(e){var o;if(this.disposed)return;let t=await GA(e);this._publishData=t.scene.publish,zv(t)&&await $1();let r=new vm(t);if(window.location.search.includes("merge-geometries")){let a=performance.now();TT(t,r.scene);let l=performance.now();console.log("Merged geometries in ",l-a," ms")}this._scene=r.scene,zv(t)&&this._scene.traverse(a=>{Ot(a)&&a.recomputeBoolean()}),this._sharedAssetsManager=r.sharedAssets,this._sharedAssetsManager.onImageLoad=()=>{this.requestRender()},wT(t.scene,this._scene,this._sharedAssetsManager),this._camera=this._scene.activeCamera;let n=Object.values(t.frames)[0];if(n)if(n.preset==="fullscreen"){this._viewportMode=1;let{width:a,height:l}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(a==="300px"||a==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth,this.canvas.style.width="100%"):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(l==="150px"||l==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight,this.canvas.style.height="100%"):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=n.size[0],this._viewportHeight=n.size[1];(o=this._scene.postprocessing)!=null&&o.enabled?(this._renderer=new Pt({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._scene.postprocessing.init({renderer:this._renderer,camera:this._camera,scene:this._scene}),this._scene.postprocessing.addEventListener("smaaloaded",this.requestRender)):this._renderer=new Pt({canvas:this.canvas,antialias:!0,alpha:!0,stencil:!0,depth:!0,powerPreference:"high-performance"}),this._scene.needsTransmission(void 0)&&(this._transmissionRenderTarget=new mt(2048,2048,{generateMipmaps:!0,minFilter:js,magFilter:ct,wrapS:Dr,wrapT:Dr}),this._transmissionRenderTarget.depthTexture=new li(2048,2048),this._scene.needsTransmission(this._transmissionRenderTarget)),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._scene.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=iy,this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._frameView=new ym(this._renderer,this._camera,new B(this._viewportWidth,this._viewportHeight),new B(window.innerWidth,window.innerHeight)),!0&&(this._controls=new fp(this._camera,this._renderer.domElement),this._publishData&&(this._controls.fromJSON(this._publishData.orbitControls),this._controls.useKeyEvents=!1),this._controls.addEventListener("change",this.requestRender),this._controls.addEventListener("start",this.requestRender)),this._playmode=new gm(this._renderer,this._scene,this._camera,this),this.resize(),this.render(),this.canvas.parentElement&&(this._resizeObserver=new ResizeObserver(()=>{this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this.resize()}),this._resizeObserver.observe(this.canvas.parentElement))}findObjectById(e){var r;let t=(r=this._scene)==null?void 0:r.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){var r;let t=(r=this._scene)==null?void 0:r.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){var e;return(e=this._playmode)==null?void 0:e.splineEvents}emitEvent(e,t){let r=this.findObjectById(t);r==null||r.emitEvent(e)}emitEventReverse(e,t){let r=this.findObjectById(t);r==null||r.emitEventReverse(e)}addEventListener(e,t){var r;(r=this._renderer)==null||r.domElement.addEventListener(e,t)}removeEventListener(e,t){var r;(r=this._renderer)==null||r.domElement.removeEventListener(e,t)}setZoom(e){var t;(t=this._controls)==null||t.zoomOut(e)}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this.resize()}dispose(){var e,t,r,n,s,o,a;this.disposed=!0,(e=this._playmode)==null||e.deactivate(),(t=this._scene)==null||t.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(l=>{by.unsubscribe(l)}),(r=this._renderer)==null||r.dispose(),(n=this._transmissionRenderTarget)==null||n.dispose(),(o=(s=this._transmissionRenderTarget)==null?void 0:s.depthTexture)==null||o.dispose(),(a=this._sharedAssetsManager)==null||a.dispose(),this._resizeObserver&&this._resizeObserver.disconnect()}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(n){var s;(s=e.interaction)==null||s.emitEvent(n)},emitEventReverse(n){var s;(s=e.interaction)==null||s.emitEventReverse(n)}},r=by(t,(n,s)=>{var a;typeof e[n]!="object"&&((a=Object.getOwnPropertyDescriptor(e,n))==null?void 0:a.writable)&&(e[n]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,r),r}};export{_T as Application};
4205
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(s){let o=s.data;switch(o.type){case"decode":n._callbacks[o.id].resolve(o);break;case"error":n._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,s){return n._taskLoad>s._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}};function fz(){let i,e;onmessage=function(o){let a=o.data;switch(a.type){case"init":i=a.decoderConfig,e=new Promise(function(h){i.onModuleLoaded=function(u){h({draco:u})},DracoDecoderModule(i)});break;case"decode":let l=a.buffer,c=a.taskConfig;e.then(h=>{let u=h.draco,f=new u.Decoder,d=new u.DecoderBuffer;d.Init(new Int8Array(l),l.byteLength);try{let m=t(u,f,d,c),p=m.attributes.map(g=>g.array.buffer);m.index&&p.push(m.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:m},p)}catch(m){console.error(m),self.postMessage({type:"error",id:a.id,error:m.message})}finally{u.destroy(d),u.destroy(f)}});break}};function t(o,a,l,c){let h=c.attributeIDs,u=c.attributeTypes,f,d,m=a.GetEncodedGeometryType(l);if(m===o.TRIANGULAR_MESH)f=new o.Mesh,d=a.DecodeBufferToMesh(l,f);else if(m===o.POINT_CLOUD)f=new o.PointCloud,d=a.DecodeBufferToPointCloud(l,f);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||f.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());let p={index:null,attributes:[]};for(let g in h){let x=self[u[g]],y,w;if(c.useUniqueIDs)w=h[g],y=a.GetAttributeByUniqueId(f,w);else{if(w=a.GetAttributeId(f,o[h[g]]),w===-1)continue;y=a.GetAttribute(f,w)}p.attributes.push(n(o,a,f,g,x,y))}return m===o.TRIANGULAR_MESH&&(p.index=r(o,a,f)),o.destroy(f),p}function r(o,a,l){let h=l.num_faces()*3,u=h*4,f=o._malloc(u);a.GetTrianglesUInt32Array(l,u,f);let d=new Uint32Array(o.HEAPF32.buffer,f,h).slice();return o._free(f),{array:d,itemSize:1}}function n(o,a,l,c,h,u){let f=u.num_components(),m=l.num_points()*f,p=m*h.BYTES_PER_ELEMENT,g=s(o,h),x=o._malloc(p);a.GetAttributeDataArrayForAllPoints(l,u,g,p,x);let y=new h(o.HEAPF32.buffer,x,m).slice();return o._free(x),{name:c,array:y,itemSize:f}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}var yo;function dz(){return yo||(yo=new rm,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function pz(i){if(yo){let e={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},t;try{t=await yo.decodeGeometry(new Int8Array(i).buffer,e)}catch(r){console.error(r)}if(t)return{index:t.index?{array:t.index.array}:void 0,attributes:Object.entries(t.attributes).map(([r,n])=>({name:r,itemSize:n.itemSize,array:n.array}))}}return null}async function GA(i){let[e,t]=Py(ip.deserialize(new Uint8Array(i))),r=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&r.push(s)}),r.length&&await dz();for(let n of r){let s=await pz(Iy(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};s.attributes.forEach(({name:a,array:l,itemSize:c})=>{o[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=o,n.geometry.data.draco=void 0}}return t.result().data}var qA={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},ax={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},mz=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],im={CSS:{},springs:{}};function Yi(i,e,t){return Math.min(Math.max(i,e),t)}function Tu(i,e){return i.indexOf(e)>-1}function ix(i,e){return i.apply(null,e)}var Xe={arr:function(i){return Array.isArray(i)},obj:function(i){return Tu(Object.prototype.toString.call(i),"Object")},pth:function(i){return Xe.obj(i)&&i.hasOwnProperty("totalLength")},svg:function(i){return i instanceof SVGElement},inp:function(i){return i instanceof HTMLInputElement},dom:function(i){return!("isNode"in i)&&(i.nodeType||Xe.svg(i))},str:function(i){return typeof i=="string"},fnc:function(i){return typeof i=="function"},und:function(i){return typeof i>"u"},hex:function(i){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(i)},rgb:function(i){return/^rgb/.test(i)},hsl:function(i){return/^hsl/.test(i)},col:function(i){return Xe.hex(i)||Xe.rgb(i)||Xe.hsl(i)},key:function(i){return!qA.hasOwnProperty(i)&&!ax.hasOwnProperty(i)&&i!=="targets"&&i!=="keyframes"}};function YA(i){var e=/\(([^)]+)\)/.exec(i);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function XA(i,e){var t=YA(i),r=Yi(Xe.und(t[0])?1:t[0],.1,100),n=Yi(Xe.und(t[1])?100:t[1],.1,100),s=Yi(Xe.und(t[2])?10:t[2],.1,100),o=Yi(Xe.und(t[3])?0:t[3],.1,100),a=Math.sqrt(n/r),l=s/(2*Math.sqrt(n*r)),c=l<1?a*Math.sqrt(1-l*l):0,h=1,u=l<1?(l*a+-o)/c:-o+a;function f(m){var p=e?e*m/1e3:m;return l<1?p=Math.exp(-p*l*a)*(h*Math.cos(c*p)+u*Math.sin(c*p)):p=(h+u*p)*Math.exp(-p*a),m===0||m===1?m:1-p}function d(){var m=im.springs[i];if(m)return m;for(var p=1/6,g=0,x=0;;)if(g+=p,f(g)===1){if(x++,x>=16)break}else x=0;var y=g*p*1e3;return im.springs[i]=y,y}return e?f:d}function gz(i){return i===void 0&&(i=10),function(e){return Math.ceil(Yi(e,1e-6,1)*i)*(1/i)}}var yz=function(){var i=11,e=1/(i-1);function t(h,u){return 1-3*u+3*h}function r(h,u){return 3*u-6*h}function n(h){return 3*h}function s(h,u,f){return((t(u,f)*h+r(u,f))*h+n(u))*h}function o(h,u,f){return 3*t(u,f)*h*h+2*r(u,f)*h+n(u)}function a(h,u,f,d,m){var p,g,x=0;do g=u+(f-u)/2,p=s(g,d,m)-h,p>0?f=g:u=g;while(Math.abs(p)>1e-7&&++x<10);return g}function l(h,u,f,d){for(var m=0;m<4;++m){var p=o(u,f,d);if(p===0)return u;var g=s(u,f,d)-h;u-=g/p}return u}function c(h,u,f,d){if(!(0<=h&&h<=1&&0<=f&&f<=1))return;var m=new Float32Array(i);if(h!==u||f!==d)for(var p=0;p<i;++p)m[p]=s(p*e,h,f);function g(x){for(var y=0,w=1,b=i-1;w!==b&&m[w]<=x;++w)y+=e;--w;var S=(x-m[w])/(m[w+1]-m[w]),T=y+S*e,A=o(T,h,f);return A>=.001?l(x,T,h,f):A===0?T:a(x,y,y+e,h,f)}return function(x){return h===u&&f===d||x===0||x===1?x:s(g(x),u,d)}}return c}(),QA=function(){var i={linear:function(){return function(r){return r}}},e={Sine:function(){return function(r){return 1-Math.cos(r*Math.PI/2)}},Circ:function(){return function(r){return 1-Math.sqrt(1-r*r)}},Back:function(){return function(r){return r*r*(3*r-2)}},Bounce:function(){return function(r){for(var n,s=4;r<((n=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((n*3-2)/22-r,2)}},Elastic:function(r,n){r===void 0&&(r=1),n===void 0&&(n=.5);var s=Yi(r,1,10),o=Yi(n,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(r,n){e[r]=function(){return function(s){return Math.pow(s,n+2)}}}),Object.keys(e).forEach(function(r){var n=e[r];i["easeIn"+r]=n,i["easeOut"+r]=function(s,o){return function(a){return 1-n(s,o)(1-a)}},i["easeInOut"+r]=function(s,o){return function(a){return a<.5?n(s,o)(a*2)/2:1-n(s,o)(a*-2+2)/2}}}),i}();function lx(i,e){if(Xe.fnc(i))return i;var t=i.split("(")[0],r=QA[t],n=YA(i);switch(t){case"spring":return XA(i,e);case"cubicBezier":return ix(yz,n);case"steps":return ix(gz,n);default:return ix(r,n)}}function JA(i){try{var e=document.querySelectorAll(i);return e}catch{return}}function sm(i,e){for(var t=i.length,r=arguments.length>=2?arguments[1]:void 0,n=[],s=0;s<t;s++)if(s in i){var o=i[s];e.call(r,o,s,i)&&n.push(o)}return n}function om(i){return i.reduce(function(e,t){return e.concat(Xe.arr(t)?om(t):t)},[])}function kA(i){return Xe.arr(i)?i:(Xe.str(i)&&(i=JA(i)||i),i instanceof NodeList||i instanceof HTMLCollection?[].slice.call(i):[i])}function cx(i,e){return i.some(function(t){return t===e})}function hx(i){var e={};for(var t in i)e[t]=i[t];return e}function sx(i,e){var t=hx(i);for(var r in i)t[r]=e.hasOwnProperty(r)?e[r]:i[r];return t}function am(i,e){var t=hx(i);for(var r in e)t[r]=Xe.und(i[r])?e[r]:i[r];return t}function vz(i){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(i);return e?"rgba("+e[1]+",1)":i}function xz(i){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=i.replace(e,function(a,l,c,h){return l+l+c+c+h+h}),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),n=parseInt(r[1],16),s=parseInt(r[2],16),o=parseInt(r[3],16);return"rgba("+n+","+s+","+o+",1)"}function bz(i){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(i)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(i),t=parseInt(e[1],10)/360,r=parseInt(e[2],10)/100,n=parseInt(e[3],10)/100,s=e[4]||1;function o(f,d,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?f+(d-f)*6*m:m<1/2?d:m<2/3?f+(d-f)*(2/3-m)*6:f}var a,l,c;if(r==0)a=l=c=n;else{var h=n<.5?n*(1+r):n+r-n*r,u=2*n-h;a=o(u,h,t+1/3),l=o(u,h,t),c=o(u,h,t-1/3)}return"rgba("+a*255+","+l*255+","+c*255+","+s+")"}function wz(i){if(Xe.rgb(i))return vz(i);if(Xe.hex(i))return xz(i);if(Xe.hsl(i))return bz(i)}function xs(i){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(i);if(e)return e[1]}function Sz(i){if(Tu(i,"translate")||i==="perspective")return"px";if(Tu(i,"rotate")||Tu(i,"skew"))return"deg"}function ox(i,e){return Xe.fnc(i)?i(e.target,e.id,e.total):i}function Xi(i,e){return i.getAttribute(e)}function ux(i,e,t){var r=xs(e);if(cx([t,"deg","rad","turn"],r))return e;var n=im.CSS[e+t];if(!Xe.und(n))return n;var s=100,o=document.createElement(i.tagName),a=i.parentNode&&i.parentNode!==document?i.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var c=l*parseFloat(e);return im.CSS[e+t]=c,c}function KA(i,e,t){if(e in i.style){var r=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),n=i.style[e]||getComputedStyle(i).getPropertyValue(r)||"0";return t?ux(i,n,t):n}}function fx(i,e){if(Xe.dom(i)&&!Xe.inp(i)&&(Xi(i,e)||Xe.svg(i)&&i[e]))return"attribute";if(Xe.dom(i)&&cx(mz,e))return"transform";if(Xe.dom(i)&&e!=="transform"&&KA(i,e))return"css";if(i[e]!=null)return"object"}function ZA(i){if(!!Xe.dom(i)){for(var e=i.style.transform||"",t=/(\w+)\(([^)]*)\)/g,r=new Map,n;n=t.exec(e);)r.set(n[1],n[2]);return r}}function Mz(i,e,t,r){var n=Tu(e,"scale")?1:0+Sz(e),s=ZA(i).get(e)||n;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),r?ux(i,s,r):s}function dx(i,e,t,r){switch(fx(i,e)){case"transform":return Mz(i,e,r,t);case"css":return KA(i,e,t);case"attribute":return Xi(i,e);default:return i[e]||0}}function px(i,e){var t=/^(\*=|\+=|-=)/.exec(i);if(!t)return i;var r=xs(i)||0,n=parseFloat(e),s=parseFloat(i.replace(t[0],""));switch(t[0][0]){case"+":return n+s+r;case"-":return n-s+r;case"*":return n*s+r}}function $A(i,e){if(Xe.col(i))return wz(i);if(/\s/g.test(i))return i;var t=xs(i),r=t?i.substr(0,i.length-t.length):i;return e?r+e:r}function mx(i,e){return Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2))}function Az(i){return Math.PI*2*Xi(i,"r")}function Tz(i){return Xi(i,"width")*2+Xi(i,"height")*2}function Ez(i){return mx({x:Xi(i,"x1"),y:Xi(i,"y1")},{x:Xi(i,"x2"),y:Xi(i,"y2")})}function eT(i){for(var e=i.points,t=0,r,n=0;n<e.numberOfItems;n++){var s=e.getItem(n);n>0&&(t+=mx(r,s)),r=s}return t}function _z(i){var e=i.points;return eT(i)+mx(e.getItem(e.numberOfItems-1),e.getItem(0))}function tT(i){if(i.getTotalLength)return i.getTotalLength();switch(i.tagName.toLowerCase()){case"circle":return Az(i);case"rect":return Tz(i);case"line":return Ez(i);case"polyline":return eT(i);case"polygon":return _z(i)}}function Cz(i){var e=tT(i);return i.setAttribute("stroke-dasharray",e),e}function Dz(i){for(var e=i.parentNode;Xe.svg(e)&&Xe.svg(e.parentNode);)e=e.parentNode;return e}function rT(i,e){var t=e||{},r=t.el||Dz(i),n=r.getBoundingClientRect(),s=Xi(r,"viewBox"),o=n.width,a=n.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function Pz(i,e){var t=Xe.str(i)?JA(i)[0]:i,r=e||100;return function(n){return{property:n,el:t,svg:rT(t),totalLength:tT(t)*(r/100)}}}function Lz(i,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return i.el.getPointAtLength(l)}var r=rT(i.el,i.svg),n=t(),s=t(-1),o=t(1);switch(i.property){case"x":return(n.x-r.x)*r.w;case"y":return(n.y-r.y)*r.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function VA(i,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=$A(Xe.pth(i)?i.totalLength:i,e)+"";return{original:r,numbers:r.match(t)?r.match(t).map(Number):[0],strings:Xe.str(i)||e?r.split(t):[]}}function nT(i){var e=i?om(Xe.arr(i)?i.map(kA):kA(i)):[];return sm(e,function(t,r,n){return n.indexOf(t)===r})}function iT(i){var e=nT(i);return e.map(function(t,r){return{target:t,id:r,total:e.length,transforms:{list:ZA(t)}}})}function Iz(i,e){var t=hx(e);if(/^spring/.test(t.easing)&&(t.duration=XA(t.easing)),Xe.arr(i)){var r=i.length,n=r===2&&!Xe.obj(i[0]);n?i={value:i}:Xe.fnc(e.duration)||(t.duration=e.duration/r)}var s=Xe.arr(i)?i:[i];return s.map(function(o,a){var l=Xe.obj(o)&&!Xe.pth(o)?o:{value:o};return Xe.und(l.delay)&&(l.delay=a?0:e.delay),Xe.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return am(o,t)})}function Rz(i){for(var e=sm(om(i.map(function(s){return Object.keys(s)})),function(s){return Xe.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},r=function(s){var o=e[s];t[o]=i.map(function(a){var l={};for(var c in a)Xe.key(c)?c==o&&(l.value=a[c]):l[c]=a[c];return l})},n=0;n<e.length;n++)r(n);return t}function Bz(i,e){var t=[],r=e.keyframes;r&&(e=am(Rz(r),e));for(var n in e)Xe.key(n)&&t.push({name:n,tweens:Iz(e[n],i)});return t}function Nz(i,e){var t={};for(var r in i){var n=ox(i[r],e);Xe.arr(n)&&(n=n.map(function(s){return ox(s,e)}),n.length===1&&(n=n[0])),t[r]=n}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function Oz(i,e){var t;return i.tweens.map(function(r){var n=Nz(r,e),s=n.value,o=Xe.arr(s)?s[1]:s,a=xs(o),l=dx(e.target,i.name,a,e),c=t?t.to.original:l,h=Xe.arr(s)?s[0]:c,u=xs(h)||xs(l),f=a||u;return Xe.und(o)&&(o=c),n.from=VA(h,f),n.to=VA(px(o,h),f),n.start=t?t.end:0,n.end=n.start+n.delay+n.duration+n.endDelay,n.easing=lx(n.easing,n.duration),n.isPath=Xe.pth(s),n.isColor=Xe.col(n.from.original),n.isColor&&(n.round=1),t=n,n})}var sT={css:function(i,e,t){return i.style[e]=t},attribute:function(i,e,t){return i.setAttribute(e,t)},object:function(i,e,t){return i[e]=t},transform:function(i,e,t,r,n){if(r.list.set(e,t),e===r.last||n){var s="";r.list.forEach(function(o,a){s+=a+"("+o+") "}),i.style.transform=s}}};function oT(i,e){var t=iT(i);t.forEach(function(r){for(var n in e){var s=ox(e[n],r),o=r.target,a=xs(s),l=dx(o,n,a,r),c=a||xs(l),h=px($A(s,c),l),u=fx(o,n);sT[u](o,n,h,r.transforms,!0)}})}function Fz(i,e){var t=fx(i.target,e.name);if(t){var r=Oz(e,i),n=r[r.length-1];return{type:t,property:e.name,animatable:i,tweens:r,duration:n.end,delay:r[0].delay,endDelay:n.endDelay}}}function Uz(i,e){return sm(om(i.map(function(t){return e.map(function(r){return Fz(t,r)})})),function(t){return!Xe.und(t)})}function aT(i,e){var t=i.length,r=function(s){return s.timelineOffset?s.timelineOffset:0},n={};return n.duration=t?Math.max.apply(Math,i.map(function(s){return r(s)+s.duration})):e.duration,n.delay=t?Math.min.apply(Math,i.map(function(s){return r(s)+s.delay})):e.delay,n.endDelay=t?n.duration-Math.max.apply(Math,i.map(function(s){return r(s)+s.duration-s.endDelay})):e.endDelay,n}var HA=0;function zz(i){var e=sx(qA,i),t=sx(ax,i),r=Bz(t,i),n=iT(i.targets),s=Uz(n,r),o=aT(s,t),a=HA;return HA++,am(e,{id:a,children:[],animatables:n,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var Tn=[],WA=[],nm,Gz=function(){function i(){nm=requestAnimationFrame(e)}function e(t){var r=Tn.length;if(r){for(var n=0;n<r;){var s=Tn[n];if(!s.paused)s.tick(t);else{var o=Tn.indexOf(s);o>-1&&(Tn.splice(o,1),r=Tn.length)}n++}i()}else nm=cancelAnimationFrame(nm)}return i}();function kz(){document.hidden?(Tn.forEach(function(i){return i.pause()}),WA=Tn.slice(0),Sr.running=Tn=[]):WA.forEach(function(i){return i.play()})}typeof document<"u"&&document.addEventListener("visibilitychange",kz);function Sr(i){i===void 0&&(i={});var e=0,t=0,r=0,n,s=0,o=null;function a(w){var b=window.Promise&&new Promise(function(S){return o=S});return w.finished=b,b}var l=zz(i),c=a(l);function h(){var w=l.direction;w!=="alternate"&&(l.direction=w!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,n.forEach(function(b){return b.reversed=l.reversed})}function u(w){return l.reversed?l.duration-w:w}function f(){e=0,t=u(l.currentTime)*(1/Sr.speed)}function d(w,b){b&&b.seek(w-b.timelineOffset)}function m(w){if(l.reversePlayback)for(var S=s;S--;)d(w,n[S]);else for(var b=0;b<s;b++)d(w,n[b])}function p(w){var b=0,S=l.animations,T=S.length;for(l.reversePlayback===!0&&l.rewind===!1&&(w=l.duration-w);b<T;){var A=S[b],v=A.animatable,E=A.tweens,_=E.length-1,C=E[_];_&&(C=sm(E,function(oe){return w<oe.end})[0]||C);for(var I=Yi(w-C.start-C.delay,0,C.duration)/C.duration,N=isNaN(I)?1:C.easing(I),R=C.to.strings,z=C.round,k=[],Q=C.to.numbers.length,J=void 0,Y=0;Y<Q;Y++){var F=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var G=C.to.numbers[Y],O=C.from.numbers[Y]||0;else var O=C.to.numbers[Y],G=C.from.numbers[Y]||0;C.isPath?F=Lz(C.value,N*O):F=G+N*(O-G),z&&(C.isColor&&Y>2||(F=Math.round(F*z)/z)),k.push(F)}var j=R.length;if(!j)J=k[0];else{J=R[0];for(var q=0;q<j;q++){var K=R[q],W=R[q+1],ge=k[q];isNaN(ge)||(W?J+=ge+W:J+=ge+" ")}}sT[A.type](v.target,A.property,J,v.transforms),A.currentValue=J,b++}}function g(w){l[w]&&!l.passThrough&&l[w](l)}function x(){l.remaining&&l.remaining!==!0&&l.remaining--}function y(w){var b=l.duration,S=l.delay,T=b-l.endDelay,A=u(w);l.progress=Yi(A/b*100,0,100),l.reversePlayback=A<l.currentTime,n&&m(A),!l.began&&l.currentTime>=0&&(l.began=!0,g("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,g("loopBegin")),A<=S&&l.currentTime!==0&&p(0),(A>=T&&l.currentTime!==b||!b)&&p(b),A>S&&A<T?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,g("changeBegin")),g("change"),p(A)):l.changeBegan?(l.changeCompleted=!0,l.changeBegan=!1,g("change"),g("changeComplete")):l.began&&A>T&&(g("change"),g("changeComplete")),l.currentTime=Yi(A,0,b),l.began&&g("update"),w>=b&&(t=0,x(),l.remaining?(e=r,g("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&h()):(l.paused=!0,l.completed||(l.completed=!0,g("loopComplete"),g("complete"),!l.passThrough&&"Promise"in window&&(o(),c=a(l)))))}return l.reset=function(){var w=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=w==="reverse",l.remaining=l.loop,n=l.children,s=n.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||w==="alternate"&&l.loop===1)&&l.remaining++,p(l.reversed?l.duration:0)},l.set=function(w,b){return oT(w,b),l},l.tick=function(w){r=w,e||(e=r),y((r+(t-e))*Sr.speed)},l.seek=function(w){y(u(w))},l.pause=function(){l.paused=!0,f()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,Tn.push(l),f(),nm||Gz())},l.reverse=function(){h(),l.completed=!l.reversed,f()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function jA(i,e){for(var t=e.length;t--;)cx(i,e[t].animatable.target)&&e.splice(t,1)}function Vz(i){for(var e=nT(i),t=Tn.length;t--;){var r=Tn[t],n=r.animations,s=r.children;jA(e,n);for(var o=s.length;o--;){var a=s[o],l=a.animations;jA(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!n.length&&!s.length&&r.pause()}}function Hz(i,e){e===void 0&&(e={});var t=e.direction||"normal",r=e.easing?lx(e.easing):null,n=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",c=o==="last",h=Xe.arr(i),u=parseFloat(h?i[0]:i),f=h?parseFloat(i[1]):0,d=xs(h?i[1]:i)||0,m=e.start||0+(h?u:0),p=[],g=0;return function(x,y,w){if(a&&(o=0),l&&(o=(w-1)/2),c&&(o=w-1),!p.length){for(var b=0;b<w;b++){if(!n)p.push(Math.abs(o-b));else{var S=l?(n[0]-1)/2:o%n[0],T=l?(n[1]-1)/2:Math.floor(o/n[0]),A=b%n[0],v=Math.floor(b/n[0]),E=S-A,_=T-v,C=Math.sqrt(E*E+_*_);s==="x"&&(C=-E),s==="y"&&(C=-_),p.push(C)}g=Math.max.apply(Math,p)}r&&(p=p.map(function(N){return r(N/g)*g})),t==="reverse"&&(p=p.map(function(N){return s?N<0?N*-1:-N:Math.abs(g-N)}))}var I=h?(f-u)/g:u;return m+I*(Math.round(p[y]*100)/100)+d}}function Wz(i){i===void 0&&(i={});var e=Sr(i);return e.duration=0,e.add=function(t,r){var n=Tn.indexOf(e),s=e.children;n>-1&&Tn.splice(n,1);function o(f){f.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=am(t,sx(ax,i));l.targets=l.targets||i.targets;var c=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=Xe.und(r)?c:px(r,c),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var h=Sr(l);o(h),s.push(h);var u=aT(s,i);return e.delay=u.delay,e.endDelay=u.endDelay,e.duration=u.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}Sr.version="3.2.0";Sr.speed=1;Sr.running=Tn;Sr.remove=Vz;Sr.get=dx;Sr.set=oT;Sr.convertPx=ux;Sr.path=Pz;Sr.setDashoffset=Cz;Sr.stagger=Hz;Sr.timeline=Wz;Sr.easing=lx;Sr.penner=QA;Sr.random=function(i,e){return Math.floor(Math.random()*(e-i+1))+i};var Eu=Sr;function lT(i,e,t){var n,s;let r=i.cameraType==="OrthographicCamera"?(n=e.orthographic)==null?void 0:n.zoom:(s=e.perspective)==null?void 0:s.zoom;if(r!==void 0){let o=i.zoom;o!==r&&t.push({change:a=>{i.zoom=et.lerp(o,r,a),i.updateProjectionMatrix()}})}if(e.targetOffset!==void 0){let o=i.targetOffset,a=e.targetOffset;o!==a&&t.push({change:l=>{i.targetOffset=et.lerp(o,a,l)}})}}function cT(i,e,t){if(e.width!==void 0&&e.height!==void 0&&e.depth!==void 0){let{width:r,height:n,depth:s}=i.geometry.userData.parameters,o=[r,n,s],a=[e.width,e.height,e.depth];!br.isEqual(o,a)&&!Ot(i)&&t.push({change:l=>{let[c,h,u]=br.lerp(o,a,l);i.updateGeometry({parameters:{width:c,height:h,depth:u}}),i.invalidateDownstreamBooleanData()}})}}function hT(i,e,t,r){if(e.intensity!==void 0){let n=i.intensity,s=e.intensity;n!==s&&t.push({change:o=>{i.intensity=et.lerp(n,s,o)}})}if(e.color!==void 0){let n=i.color.clone(),s=typeof e.color=="string"?r.getColor(e.color):e.color;if(!Ar.equals(n,s)){let o=n.clone();i.color=o,t.push({change:a=>{let{r:l,g:c,b:h}=Ar.lerp(n,s,a);o.setRGB(l,c,h)}})}}}function uT(i,e,t,r){var s,o;let n=i.layersList.head;for(;n;){let a=e.layers.data(n.uuid);if(a&&((s=n.visible)!=null?s:!0)&&((o=a.visible)!=null?o:!0)){let l=n.getNames().filter(c=>!DM.some(h=>c.includes(h)));for(let c of l)try{let h=n.getValue(c);if(c==="steps")Jz(n,a,c,t);else if(c==="colors")Kz(n,a,c,t);else if(typeof h=="number")jz(n,a,c,t);else{if(typeof h=="boolean")continue;"isVector2"in h?qz(n,a,c,t):"isVector3"in h?Yz(n,a,c,t):"isColorA"in h?Qz(n,a,c,t,r):"isColor"in h?Xz(n,a,c,t,r):"isTexture"in h&&Zz(n,a,c,t)}}catch(h){console.error(`animateMaterial: unexpected material layer for ${c}`,h)}}n=n.next}}function jz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=e[t];n!==s&&r.push({change:o=>{i.setValue(t,et.lerp(n,s,o))}})}function qz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=n.toArray(),o=e[t];fs.isEqual(s,o)||r.push({change:a=>{n.fromArray(fs.lerp(s,o,a))}})}function Yz(i,e,t,r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=n.toArray(),o=e[t];br.isEqual(s,o)||r.push({change:a=>{n.fromArray(br.lerp(s,o,a))}})}function Xz(i,e,t,r,n){if(!i.hasValue(t)||!(t in e))return;let s=i.getValue(t).clone(),o=e[t],a=typeof o=="string"?n.getColor(o):o;if(Ar.equals(s,a))return;let l=s.clone();i.setValue(t,l),r.push({change:c=>{let{r:h,g:u,b:f}=Ar.lerp(s,a,c);l.setRGB(h,u,f)}})}function Qz(i,e,t,r,n){if(!i.hasValue(t)||!(t in e))return;let s=i.getValue(t).clone(),o=e[t],a=typeof o=="string"?n.getColor(o):o;if(In.equals(s,a))return;let l=s.clone();i.setValue(t,l),r.push({change:c=>{let{r:h,g:u,b:f,a:d}=In.lerp(s,a,c);l.setRGBA(h,u,f,d)}})}function Jz(i,e,t="steps",r){if(!i.hasValue(t)||!(t in e))return;let n=[...i.getValue(t)],s=e[t];for(let o=0;o<n.length;++o){let a=n[o],l=s[o];a!==l&&r.push({change:c=>{n[o]=et.lerp(a,l,c),i.setValue("steps",n)}})}}function Kz(i,e,t="colors",r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue(t),s=e[t];for(let o=0;o<n.length;++o){let a=n[o].toArray(),l=s[o];Rh.isEqual(a,l)||r.push({change:c=>{n[o].fromArray(Rh.lerp(a,l,c))}})}}function Zz(i,e,t="texture",r){if(!i.hasValue(t)||!(t in e))return;let n=i.getValue("texture"),s=e[t],o=n.repeat.toArray(),a=n.offset.toArray(),l=s.repeat,c=s.offset;(!fs.isEqual(o,l)||!fs.isEqual(a,c))&&r.push({change:h=>{n.repeat.fromArray(fs.lerp(o,l,h)),n.offset.fromArray(fs.lerp(a,c,h)),n.updateMatrix(),n.needsUpdate=!0}})}function fT(i,e,t,r){if(r===0)return t.copy(i);if(r===1)return t.copy(e);let n=i.w*e.w+i.x*e.x+i.y*e.y+i.z*e.z;if(n>=1)return t.copy(i);let s=1-n*n;if(s<=Number.EPSILON){let h=1-r;return t.w=h*i.w+r*e.w,t.x=h*i.x+r*e.x,t.y=h*i.y+r*e.y,t.z=h*i.z+r*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,n),l=Math.sin((1-r)*a)/o,c=Math.sin(r*a)/o;return t.w=i.w*l+e.w*c,t.x=i.x*l+e.x*c,t.y=i.y*l+e.y*c,t.z=i.z*l+e.z*c,t}function dT(i,e,t=0){let r=Array.isArray(i.material)?i.material[t]:i.material,n;return"materials"in e?n=e.materials[t]:"material"in e&&(n=e.material),[r,n]}var gx=new M,yx=new M,pT=new zt,$z=new yn,eG=new Ae;function mT(i,e,t,r){if(t.position!==void 0){let n=i.position.toArray(),s=t.position;br.isEqual(n,s)||r.push({change:o=>{i.position.fromArray(br.lerp(n,s,o)),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}if(t.scale!==void 0){let n=i.scale.toArray(),s=t.scale;br.isEqual(n,s)||r.push({change:o=>{i.scale.fromArray(br.lerp(n,s,o)),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}tG(i,e,t,r),rG(i,t,r)}function tG(i,e,t,r){if(t.rotation===void 0)return;let n=gx.setFromEuler(i.rotation).toArray(),s=t.rotation;if(br.isEqual(n,s))return;if(br.sub(t.rotation,e?e.rotation:i.rotation).every(a=>Math.abs(a)<2*Math.PI)){let a=i.quaternion.clone(),l=new zt().setFromEuler($z.set(t.rotation[0],t.rotation[1],t.rotation[2]));r.push({change:c=>{fT(a,l,i.quaternion,c),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}else r.push({change:a=>{i.rotation.setFromVector3(yx.fromArray(br.lerp(n,s,a))),i.updateMatrix(),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}function rG(i,e,t){if(e.hiddenMatrix!==void 0&&!Ii.isEqual(i.hiddenMatrix.toArray(),e.hiddenMatrix)){let r=new M,n=new zt,s=new M;i.hiddenMatrix.decompose(r,n,s);let o=new M,a=new zt,l=new M;eG.fromArray(e.hiddenMatrix).decompose(o,a,l),t.push({change:c=>{pT.slerpQuaternions(n,a,c),gx.lerpVectors(r,o,c),yx.lerpVectors(s,l,c),i.hiddenMatrix.compose(gx,pT,yx),er(i)&&Ot(i.parent)&&i.invalidateDownstreamBooleanData(!0)}})}}function gT(i,e,t,r){let n=[];if((i.visible||Ot(i.parent))&&mT(i,e==null?void 0:e.objectState,t.objectState,n),er(i)){if((i.visible||Ot(i.parent))&&"geometry"in t.objectState&&cT(i,t.objectState.geometry,n),i.visible&&("material"in t.objectState||"materials"in t.objectState)){let[s,o]=dT(i,t.objectState,i.selectedMaterial);s&&o&&typeof o!="string"&&uT(s,o,n,r)}}else i.visible&&U1(i)?hT(i,t.objectState,n,r):F1(i)&&lT(i,t.objectState,n);return n.length?{change:s=>{n.forEach(o=>{o.change&&o.change(s)})}}:void 0}function lm(i,e,t){switch(i){case 0:return"cubicBezier( 0, 0, 1, 1 )";case 1:return"cubicBezier( .25, .1, .25, 1 )";case 2:return"cubicBezier( .42, 0, 1, 1 )";case 3:return"cubicBezier( 0, 0, .58, 1 )";case 4:return"cubicBezier( .42, 0, .58, 1 )";case 5:let{control1:r,control2:n}=e;return`cubicBezier( ${r[0]}, ${r[1]}, ${n[0]}, ${n[1]} )`;case 6:let{mass:s,stiffness:o,damping:a,velocity:l}=t;return`spring( ${s}, ${o}, ${a}, ${l} )`}}var cm=class{constructor(e,t){this.object=e;this.sharedAssets=t;this.uuid=et.generateUUID();this.states=[];this.events={};this._scrollCounter=null}get animation(){return this._animation}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._scrollCounter=null),this.states.length>1&&(this.states[0].execute(this.object,this.sharedAssets),this._currentState=this.states[0],this._prevState=void 0)}end(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0),this.states.length>1&&this.states[0].execute(this.object,this.sharedAssets),this._currentState=void 0,this._prevState=void 0}play(e,t){e.state!==void 0&&this.animate(e.state,e,!0,t)}reverse(e,t){this._prevState!==void 0&&this.animate(this._prevState,e,!0,t)}seek(e,t,r,n){var s;this._scrollCounter===null&&(e.state!==void 0&&this.animate(e.state,e,!1,n),this._scrollCounter=0),this._scrollCounter+=t,this._scrollCounter=Math.min(Math.max(this._scrollCounter,0),r),(s=this._animation)==null||s.seek(this._scrollCounter/r*e.duration)}animate(e,t,r=!0,n){var s,o,a,l,c,h;if(this._currentState===e){if((s=this._animation)!=null&&s.reversed){let u=(a=(o=this._animation)==null?void 0:o.currentTime)!=null?a:0;(l=this._animation)==null||l.reset(),(c=this._animation)==null||c.seek(u),(h=this._animation)==null||h.play()}}else{this._prevState=this._currentState,this._currentState=e,this._animation!==void 0&&this._animation.pause(),t.cycle===!0&&t.repeat===!0?this._animation=Eu.timeline({duration:t.duration,delay:t.delay/2,endDelay:t.delay/2,direction:"alternate",loop:!0,rewind:t.rewind,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):t.cycle===!0&&t.repeat===!1?this._animation=Eu.timeline({duration:t.duration,delay:t.delay,endDelay:t.delay/2,direction:"alternate",rewind:t.rewind,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):t.cycle===!1&&t.repeat===!0?this._animation=Eu.timeline({duration:t.duration,delay:t.delay,direction:"normal",loop:!0,easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}):this._animation=Eu.timeline({duration:t.duration,delay:t.delay,direction:"normal",easing:lm(t.easing,t.cubicControls,t.springParameters),autoplay:r}),r&&this._animation.finished.then(()=>{this._animation=void 0});let u=gT(this.object,this._prevState,this._currentState,this.sharedAssets);if(u){let f={t:0};this._animation.add({targets:f,t:1,change:()=>{var d;u.change&&(u.change(f.t),(d=n==null?void 0:n.change)==null||d.call(this,f.t))}},0)}}}emitEvent(e){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let t=this.events[e];if(t)for(let r of t)r.targets.forEach(n=>this.play(n))}}emitEventReverse(e){if(e==="keyDown"||e==="keyUp"||e==="mouseDown"||e==="mouseUp"||e==="mouseHover"||e==="scroll"||e==="start"){let t=this.events[e];if(t)for(let r of t)r.targets.forEach(n=>this.reverse(n))}}};var gc=class{constructor(e){this.targetState=e}static create(e,t){var n;let r=new gc(e);if(e.object){let s=t.find(e.object);if(r.object=s,s!=null&&s.interaction){let o=s.interaction.states;r.state=e.state&&(n=o.find(a=>a.uuid===e.state))!=null?n:o[0]}}return r}get cubicControls(){let e=this.targetState;return e.easing===5?{control1:e.control1,control2:e.control2}:se({},Gd.defaultData)}get springParameters(){let e=this.targetState;return e.easing===6?e:se({},zd.defaultData)}get easing(){return this.targetState.easing}get duration(){return this.targetState.duration}get delay(){return this.targetState.delay}get repeat(){return this.targetState.repeat}get cycle(){return this.targetState.cycle}get rewind(){return this.targetState.rewind}};var yT=new Yr,ra=class extends Wr{},hm=class{constructor(e){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new mt(2048,2048,{generateMipmaps:!0,minFilter:js,magFilter:ct,wrapS:Dr,wrapT:Dr}),this.transmissionRenderTarget.depthTexture=new li(2048,2048),this.reset(e)}reset(e){for(let[t,r]of Object.entries(e.images))this.addImage(t,r.data);for(let[t,r]of Object.entries(e.colors))this.addColor(t,r);for(let[t,r]of Object.entries(e.materials))this.addMaterial(t,Lv(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(e,t){t.uuid=e,this.materials[e]=t}deleteMaterial(e){this.materials[e]&&(this.materials[e].dispose(),delete this.materials[e])}isSharedMaterial(e){return e.uuid in this.materials||e===yT}getMaterial(e){let t=this.materials[e];return t}getMaterialOrDeletedPlaceholder(e){var t;return(t=this.materials[e])!=null?t:yT}getMaterials(){return this.materials}addImage(e,t){if(this.images[e])return this.images[e].onload=()=>{this.onImageLoad&&this.onImageLoad(e)},this.images[e].src=t,!0;{let r=new Image;return r.src=t,r.onload=()=>{this.onImageLoad&&this.onImageLoad(e)},this.images[e]=r,!1}}deleteImage(e){this.images[e]&&delete this.images[e]}getDefaultImage(){return this.images.image_0}getImage(e){return this.images[e]}getImages(){return this.images}addColor(e,t){return this.colors[e]?("a"in t?this.colors[e].setRGBA(t.r,t.g,t.b,t.a):this.colors[e].setRGBA(t.r,t.g,t.b,1),!0):("a"in t?this.colors[e]=new ra(t.r,t.g,t.b,t.a):this.colors[e]=new ra(t.r,t.g,t.b,1),!1)}updateColor(e,t){var r,n,s,o;if(this.colors[e]){let a=this.colors[e];return this.colors[e].r=(r=t.r)!=null?r:a.r,this.colors[e].g=(n=t.g)!=null?n:a.g,this.colors[e].b=(s=t.b)!=null?s:a.b,this.colors[e].a=(o=t.a)!=null?o:a.a,!0}return!1}deleteColor(e){this.colors[e]&&delete this.colors[e]}getColor(e){return this.colors[e]}dispose(){Object.keys(this.materials).forEach(t=>this.deleteMaterial(t)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};function nG(i,e){switch(i.type){case"noise":return e==="noiseType";case"texture":return e==="projection"||e==="axis"||e==="side";case"displace":return e==="noiseType";case"depth":return e==="num"||e==="smooth"||e==="isWorldSpace"||e==="gradientType";default:return!1}}function vx(i,e,t,r,n){var o;let s=!1;for(let[a,l]of Object.entries(i)){if(!a||l===void 0||Up(a,t,n))continue;t.visible=n.visible;let c=t.uniforms[`f${t.id}_${a}`];if(!!c)switch(c.constructor){case Nt:if(typeof l=="string"){let h=e.getColor(l);h&&(c.value=h);break}else{let h=l;c.value instanceof ra?c.value=new Wr(h.r,h.g,h.b,h.a):c.setRGBA(h);break}case pi:if(typeof l=="string"){let h=e.getColor(l);h&&(c.value=h);break}else{let h=l;c.value instanceof ra?c.value=new Wr(h.r,h.g,h.b,h.a):c.value.setRGBA(h.r,h.g,h.b,h.a);break}case Nr:{let h=l;c.value.setX(h[0]),c.value.setY(h[1]);break}case Or:{let h=l;c.value.setX(h[0]),c.value.setY(h[1]),c.value.setZ(h[2]);break}case jr:{let h=l;if("image"in h){let u=e.getImage(h.image);if(u)c.value.image=u;else{let f=new Image;f.src=h.image.data,c.value.image=f}}"wrapping"in h&&(c.value.wrapS=c.value.wrapT=h.wrapping),"repeat"in h&&c.value.repeat.fromArray(h.repeat),"offset"in h&&c.value.offset.fromArray(h.offset),c.value.needsUpdate=!0;break}case ms:{l.forEach((h,u)=>{c.value[u].setX(h[0]),c.value[u].setY(h[1]),c.value[u].setZ(h[2]),c.value[u].setW(h[3])});break}default:{s=s||nG(t,a),c.value=l;break}}}if(s&&n){let a=Fp({id:"0",fi:0,data:n},e);(o=r.userData.layers)==null||o.changeLayer(t.id,se({},a)),r.dispose(),r.needsUpdate=!0}}var xx=new M,vT=new Gr,xT=new Ae,vc={type:"follow",normal:new M,raycaster:new io},yc;(t=>{function i(r){if(r.type===10)return{type:"follow"}}t.create=i;function e({target:r,normal:n,raycaster:s,begin:o,change:a}){!r||!r.interaction||!n||!s||(o&&o("follow",r.uuid),vT.setFromNormalAndCoplanarPoint(n,r.getWorldPosition(xx)),s.ray.intersectPlane(vT,xx),r.position.copy(xx),r.parent!==null&&r.position.applyMatrix4(xT.copy(r.parent.matrixWorld).invert()),r.position.applyMatrix4(xT.copy(r.hiddenMatrix).invert()),r.updateMatrix(),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0),a&&a())}t.listener=e})(yc||(yc={}));var um={type:"keyDown"},fm={type:"keyUp"},xc;(t=>{function i(r){if(r.type===5&&r.key)return{type:"keyDown",targets:[],key:r.key}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.keyDown;if(!(a!=null&&a.length))return;let l=!1;for(let c of a)c.key===o.key&&(c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.play(h,{change:s})}),l=!0);l&&n&&n("keyDown",r.uuid)}t.listener=e})(xc||(xc={}));var bc;(t=>{function i(r){if(!(r.type!==6||!r.key))return{type:"keyUp",targets:[],key:r.key}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.keyUp;if(!(a!=null&&a.length))return;let l=!1;for(let c of a)c.key===o.key&&(c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.play(h,{change:s})}),l=!0);l&&n&&n("keyUp",r.uuid)}t.listener=e})(bc||(bc={}));var bx=new M,bT=new Gr,Sc={type:"lookAt",normal:new M,raycaster:new io},wc;(t=>{function i(r){if(r.type===9&&r.distance)return{type:"lookAt",distance:r.distance}}t.create=i;function e({target:r,normal:n,raycaster:s,begin:o,change:a}){var h;if(!r||!r.interaction||!n||!s)return;let l=r.interaction.events.lookAt;if(!(l!=null&&l.length))return;o&&o("lookAt",r.uuid);let c=l[0].distance;bT.set(n,-c),s.ray.intersectPlane(bT,bx),r.lookAt(bx),r.updateMatrix(),(h=r.interaction.animation)==null||h.finished.then(()=>{r.lookAt(bx),r.updateMatrix(),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0)}),er(r)&&Ot(r.parent)&&r.invalidateDownstreamBooleanData(!0),a&&a()}t.listener=e})(wc||(wc={}));var dm={type:"mouseDown"},pm={type:"mouseUp"},Mc;(t=>{function i(r){if(r.type===0)return{type:"mouseDown",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.mouseDown;!(o!=null&&o.length)||(n&&n("mouseDown",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Mc||(Mc={}));var Ac;(t=>{function i(r){if(r.type===1)return{type:"mouseUp",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.mouseUp;!(o!=null&&o.length)||(n&&n("mouseUp",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Ac||(Ac={}));var wx={type:"start"},Tc;(t=>{function i(r){if(r.type===7)return{type:"start",targets:[]}}t.create=i;function e({target:r,begin:n,change:s}){if(!r||!r.interaction)return;let o=r.interaction.events.start;!(o!=null&&o.length)||(n&&n("start",r.uuid),o.forEach(a=>{a.targets.forEach(l=>{var c,h;return(h=(c=l.object)==null?void 0:c.interaction)==null?void 0:h.play(l,{change:s})})}))}t.listener=e})(Tc||(Tc={}));var En={type:"link"},Ec;(t=>{function i(r){let n;if(r.type===0)n={type:"mousedown"};else if(r.type===1)n={type:"mouseup"};else if(r.type===5){if(!r.key)return;n={type:"keydown",key:r.key}}else if(r.type===6){if(!r.key)return;n={type:"keyup",key:r.key}}else return;if(r.url)return{type:"link",subEvent:n,url:r.url}}t.create=i;function e({target:r,begin:n,domEvent:s,subType:o}){var c;if(!r||!r.interaction||!o||!s)return;let a=r.interaction.events.link;if(!a)return;let l;if(o==="keydown"||o==="keyup"){let h=s.key;l=(c=a[o])==null?void 0:c.filter(u=>u.subEvent.type===o&&u.subEvent.key===h)}else l=a[o];if(!!(l!=null&&l.length)){n&&n("link",r.uuid);for(let h of l)Ho?window.location.assign(h.url):window.open(h.url,"_blank")}}t.listener=e})(Ec||(Ec={}));var mm={type:"scroll"},_c;(t=>{function i(r){if(!(r.type!==11||r.steps===void 0))return{type:"scroll",targets:[],steps:r.steps}}t.create=i;function e({target:r,begin:n,change:s,domEvent:o}){if(!r||!r.interaction||!o)return;let a=r.interaction.events.scroll;if(!(a!=null&&a.length))return;n&&n("scroll",r.uuid);let l=o.deltaY>0?1:-1;a.forEach(c=>{c.targets.forEach(h=>{var u,f;return(f=(u=h.object)==null?void 0:u.interaction)==null?void 0:f.seek(h,l,c.steps,{change:s})})})}t.listener=e})(_c||(_c={}));var vo={type:"mouseHover"},Cc;(t=>{function i(r){if(r.type===2)return{type:"mouseHover",targets:[]}}t.create=i;function e({target:r,begin:n,change:s,enter:o}){if(!r||!r.interaction||o===void 0)return;let a=r.interaction.events.mouseHover;!(a!=null&&a.length)||(n&&n("mouseHover",r.uuid),o?a.forEach(l=>{l.targets.forEach(c=>{var h,u;return(u=(h=c.object)==null?void 0:h.interaction)==null?void 0:u.play(c,{change:s})})}):a.forEach(l=>{l.targets.forEach(c=>{var h,u;return(u=(h=c.object)==null?void 0:h.interaction)==null?void 0:u.reverse(c,{change:s})})}))}t.listener=e})(Cc||(Cc={}));function iG(i){let e,{type:t}=i;return t===10?e=yc.create(i):t===5?e=xc.create(i):t===6?e=bc.create(i):t===9?e=wc.create(i):t===0?e=Mc.create(i):t===1?e=Ac.create(i):t===2?e=Cc.create(i):t===11?e=_c.create(i):t===7&&(e=Tc.create(i)),e}function wT(i,e,t){let r=[];i.objects.traverse((n,s)=>{var h;let o=e.find(n);if(delete o.interaction,!s.visible&&!Ot(o.parent)||s.states===void 0)return;let a=new cm(o,t),l=a.states;l.push(na.create(n,s));for(let u of s.states){let f=kh.patch(s,u.data);l.push(na.create(u.id,f))}let c=a.events;if(s.events)for(let{data:u}of s.events){let f=iG(u);if(!f)continue;let d=f.type;c[d]?(h=c[d])==null||h.push(f):c[d]=[f],"targets"in u&&r.push([u,f]);let m=Ec.create(u);if(m){c.link||(c.link={});let p=m.subEvent.type;c.link[p]?c.link[p].push(m):c.link[p]=[m]}}(l.length>0||Object.keys(c).length>0)&&(o.interaction=a,Sx(o,s,null,t))});for(let[n,s]of r)if("targets"in n&&"targets"in s)for(let{data:o}of n.targets){let a=gc.create(o,e);s.targets.push(a)}}function Sx(i,e,t,r,n=!1){if(!n&&e.states.length===0)return;let s=t===null?e:kh.patch(e,e.states.data(t));if(Iv(i,s),i instanceof kt&&s.type==="Mesh"){if(i instanceof fo?i.buildFromStore(s.geometry):i.updateGeometry({parameters:s.geometry}),i.freeBooleanPointer(),Ot(i.parent)&&i.parent.invalidateDownstreamBooleanData().recomputeBoolean(),"material"in s){if(i.material instanceof Array)return;if(typeof s.material!="string"){let a=s.material.layers;for(let l of a){let c=i.material.userData.layers.getLayerByUuid(l.id);vx(l.data,r,c,i.material,l.data)}}}else if("materials"in s){if(!(i.material instanceof Array))return;var o=0;for(let a of s.materials){if(typeof a!="string"){let l=a.layers;for(let c of l){let h=i.material[o].userData.layers.getLayerByUuid(c.id);vx(c.data,r,h,i.material[o],c.data)}}o++}}}else if(s.type==="DirectionalLight")i.fromDirectionalLightState(s,r);else if(s.type==="PointLight")i.fromPointLightState(s,r);else if(s.type==="SpotLight")i.fromSpotLightState(s,r);else if(i instanceof Nn&&eo.is(s.type)){let a=s;i.setZoom("PerspectiveCamera",a.perspective.zoom),i.setZoom("OrthographicCamera",a.orthographic.zoom)}}var na=class{constructor(e){this.objectState=e;this.uuid=et.generateUUID()}static create(e,t){let r=new na(t);return r.uuid=e,r}execute(e,t){Sx(e,this.objectState,null,t,!0)}};var $n=new io,ei=new M,Mx={follow:yc.listener,keyDown:xc.listener,keyUp:bc.listener,link:Ec.listener,lookAt:wc.listener,mouseDown:Mc.listener,mouseUp:Ac.listener,mouseHover:Cc.listener,scroll:_c.listener,start:Tc.listener},ST={follow:vc,keyDown:um,keyUp:fm,link:En,lookAt:Sc,mouseDown:dm,mouseUp:pm,mouseHover:vo,scroll:mm,start:wx};function sG(i){if(i.style.transform!==""){let e=getComputedStyle(i).getPropertyValue("transform");if(e!=="none"){let t=e.replace("matrix(","").split(",");return{x:parseFloat(t[0]),y:parseFloat(t[3])}}}return{x:1,y:1}}function MT(i){let e=i.getViewport(new Je),t=sG(i.domElement);return{left:e.x*t.x,top:e.y*t.y,width:e.z*t.x,height:e.w*t.y}}function _u(i,e){if(er(e)){if(!e.raycastLock&&e.visible){let t=i.intersectObject(e,!1);return t.length?t[0]:void 0}}else if(e.objectType==="EmptyObject")return AT(i,e)}function AT(i,e){if(er(e)&&!e.raycastLock&&e.visible){let t=i.intersectObject(e,!1);if(t.length)return t[0]}for(let t of e.children)if(Zo(t)){let r=AT(i,t);if(r)return r}}var gm=class{constructor(e,t,r,n){this.isEnable=!1;this.splineEvents={};this._map={};this._prevObjects=[];this._onMouseDown=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseDownEvent(e)};this._onMouseUp=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseUpEvent(e)};this._onMouseMove=e=>{$n.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e)};this._onTouchStart=e=>{e.touches.length===1&&($n.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseDownEvent(e),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e))};this._onTouchEnd=e=>{this._handleMouseUpEvent(e),this._handleMouseHoverEvent(e,!0)};this._onTouchMove=e=>{e.touches.length===1&&($n.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(ei),ei.negate(),this._handleMouseHoverEvent(e),this._handleLookAtEvent(e),this._handleFollowEvent(e))};this._onWheel=e=>{this._handleWheelEvent(e)};this._onKeyDown=e=>{this._handleKeyDownEvent(e)};this._onKeyUp=e=>{this._handleKeyUpEvent(e)};this._renderer=e,this._domElement=e.domElement,this._camera=r,this._scene=t,this._app=n,this._domRect=this._domElement.getBoundingClientRect(),this._viewRect=MT(e)}activate(){var e,t,r,n,s,o,a,l,c,h,u,f,d,m,p,g,x,y,w,b,S,T,A,v,E,_,C,I,N,R;this.isEnable=!0,this._map={},this._scene.traverseEntity(z=>{z.interaction!==void 0&&(z.interaction.start(),Object.keys(z.interaction.events).forEach(k=>{let Q=k;this._addDOMCustomEvent(Q,z),(z.visible||Q!=="mouseDown"&&Q!=="mouseUp"&&Q!=="mouseHover")&&this._addSPEEvent(Q,Mx[Q],z)}))}),Fd?((((e=this._map.mouseDown)==null?void 0:e.length)||((r=(t=this._map.link)==null?void 0:t.mousedown)==null?void 0:r.length)||((n=this._map.mouseHover)==null?void 0:n.length)||((s=this._map.lookAt)==null?void 0:s.length)||((o=this._map.follow)==null?void 0:o.length))&&this._domElement.addEventListener("touchstart",this._onTouchStart),(((a=this._map.mouseUp)==null?void 0:a.length)||((c=(l=this._map.link)==null?void 0:l.mouseup)==null?void 0:c.length)||((h=this._map.mouseHover)==null?void 0:h.length))&&this._domElement.addEventListener("touchend",this._onTouchEnd),(((u=this._map.mouseHover)==null?void 0:u.length)||((f=this._map.lookAt)==null?void 0:f.length)||((d=this._map.follow)==null?void 0:d.length))&&this._domElement.addEventListener("touchmove",this._onTouchMove)):((((m=this._map.mouseDown)==null?void 0:m.length)||((g=(p=this._map.link)==null?void 0:p.mousedown)==null?void 0:g.length))&&this._domElement.addEventListener("pointerdown",this._onMouseDown),(((x=this._map.mouseUp)==null?void 0:x.length)||((w=(y=this._map.link)==null?void 0:y.mouseup)==null?void 0:w.length))&&this._domElement.addEventListener("pointerup",this._onMouseUp),(((b=this._map.mouseHover)==null?void 0:b.length)||((S=this._map.lookAt)==null?void 0:S.length)||((T=this._map.follow)==null?void 0:T.length))&&this._domElement.addEventListener("pointermove",this._onMouseMove)),(A=this._map.scroll)!=null&&A.length&&this._domElement.addEventListener("wheel",this._onWheel),(((v=this._map.keyDown)==null?void 0:v.length)||((_=(E=this._map.link)==null?void 0:E.keydown)==null?void 0:_.length))&&document.addEventListener("keydown",this._onKeyDown),(((C=this._map.keyUp)==null?void 0:C.length)||((N=(I=this._map.link)==null?void 0:I.keyup)==null?void 0:N.length))&&document.addEventListener("keyup",this._onKeyUp),(R=this._map.start)!=null&&R.length&&this._handleStartEvent(),this.resize()}deactivate(){this._scene.traverseEntity(e=>{if(!e.interaction)return;e.interaction.end();let t=e;Object.keys(Mx).forEach(r=>{let n=r;t.removeEventListener(n,Mx[n])})}),this._domElement.removeEventListener("pointerdown",this._onMouseDown),this._domElement.removeEventListener("pointerup",this._onMouseUp),this._domElement.removeEventListener("pointermove",this._onMouseMove),this._domElement.removeEventListener("touchstart",this._onTouchStart),this._domElement.removeEventListener("touchend",this._onTouchEnd),this._domElement.removeEventListener("touchmove",this._onTouchMove),this._domElement.removeEventListener("wheel",this._onWheel),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),this._map={},this.isEnable=!1}reset(){this._scene.traverseEntity(e=>{var t;(t=e.interaction)==null||t.start()}),this._handleStartEvent()}resize(){this._domRect=this._domElement.getBoundingClientRect(),this._viewRect=MT(this._renderer)}_getPointer(e,t){let r=this._domRect,n=this._viewRect,s=r.height-n.height,o=(e-n.left-r.left)*(r.width/n.width),a=(t-s+n.top-r.top)*(r.height/n.height);return{x:o/r.width*2-1,y:-(a/r.height)*2+1}}_handleStartEvent(){var e;(e=this._map.start)==null||e.forEach(t=>t.dispatchEvent(wx))}_handleWheelEvent(e){var t;(t=this._map.scroll)!=null&&t.length&&(mm.domEvent=e,this._map.scroll.forEach(r=>r.dispatchEvent(mm)))}_handleMouseDownEvent(e){var t,r,n;(t=this._map.mouseDown)==null||t.forEach(s=>{_u($n,s)&&(dm.domEvent=e,s.dispatchEvent(dm))}),(n=(r=this._map.link)==null?void 0:r.mousedown)==null||n.forEach(s=>{_u($n,s)&&(En.domEvent=e,En.subType="mousedown",s.dispatchEvent(En))})}_handleMouseUpEvent(e){var t,r,n;(t=this._map.mouseUp)==null||t.forEach(s=>{_u($n,s)&&(pm.domEvent=e,s.dispatchEvent(pm))}),(n=(r=this._map.link)==null?void 0:r.mouseup)==null||n.forEach(s=>{_u($n,s)&&(En.domEvent=e,En.subType="mouseup",s.dispatchEvent(En))})}_handleMouseHoverEvent(e,t=!1){var n;let r=[];t||(n=this._map.mouseHover)==null||n.forEach(s=>{_u($n,s)&&r.push(s)}),this._prevObjects.length&&(vo.domEvent=e,vo.enter=!1,this._prevObjects.forEach(s=>{r.includes(s)||s.dispatchEvent(vo)})),r.length&&(vo.domEvent=e,vo.enter=!0,r.forEach(s=>s.dispatchEvent(vo))),this._prevObjects=r}_handleLookAtEvent(e){var t;(t=this._map.lookAt)!=null&&t.length&&(Sc.domEvent=e,Sc.normal=ei,Sc.raycaster=$n,this._map.lookAt.forEach(r=>r.dispatchEvent(Sc)))}_handleFollowEvent(e){this._map.follow&&(vc.domEvent=e,vc.normal=ei,vc.raycaster=$n,this._map.follow.forEach(t=>t.dispatchEvent(vc)))}_handleKeyDownEvent(e){var t,r,n;(t=this._map.keyDown)!=null&&t.length&&(um.domEvent=e,this._map.keyDown.forEach(s=>s.dispatchEvent(um))),(n=(r=this._map.link)==null?void 0:r.keydown)!=null&&n.length&&(En.domEvent=e,En.subType="keydown",this._map.link.keydown.forEach(s=>s.dispatchEvent(En)))}_handleKeyUpEvent(e){var t,r,n;(t=this._map.keyUp)!=null&&t.length&&(fm.domEvent=e,this._map.keyUp.forEach(s=>s.dispatchEvent(fm))),(n=(r=this._map.link)==null?void 0:r.keyup)!=null&&n.length&&(En.domEvent=e,En.subType="keyup",this._map.link.keyup.forEach(s=>s.dispatchEvent(En)))}_addSPEEvent(e,t,r){var n;if(!!r.interaction)if(ST[e].begin=this._dispatchDOMCustomEvent.bind(this),ST[e].change=this._app.requestRender.bind(this),e==="link"){let s=r.interaction.events[e];if(s){let o=!1;Object.keys(s).forEach(a=>{let l=a;this._map[e]===void 0&&(this._map[e]={});let c=this._map[e];c[l]===void 0?c[l]=[r]:c[l].push(r),o=!0}),o&&r.addEventListener(e,t)}}else(n=r.interaction.events[e])!=null&&n.length&&(r.addEventListener(e,t),this._map[e]===void 0?this._map[e]=[r]:this._map[e].push(r))}_addDOMCustomEvent(e,t){if(e){let r=new CustomEvent(e,{bubbles:!0});Object.defineProperty(r,"target",{writable:!1,value:{id:t.uuid,name:t.name}}),this.splineEvents[e]?this.splineEvents[e][t.uuid]=r:this.splineEvents[e]={[t.uuid]:r}}}_dispatchDOMCustomEvent(e,t){var n;let r=(n=this.splineEvents[e])==null?void 0:n[t];r&&this._domElement.dispatchEvent(r)}};var ym=class{constructor(e,t,r,n,s){this._aspect=1;this._renderer=e,this._camera=t,this._frameSize=new B().copy(r),this._editorSize=new B().copy(n),this._aspect=t.aspect,this._fov=s!=null?s:t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){!this._renderer||this._renderer.setSize(this._frameSize.x,this._frameSize.y,!1)}updateViewportForImageExport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,r=this._editorSize.x,n=this._editorSize.y;this._aspect=e/t,this._camera.zoom*=Math.min(r/e,n/t),this._renderer.setViewport(0,0,e,t)}updateViewport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,r=this._editorSize.x,n=this._editorSize.y,s=0,o=0,a=e,l=t;e<r&&(s=(r-e)*.5,s=-s,a=r),t<n&&(o=(n-t)*.5,o=-o,l=n),this._aspect=a/l,this._renderer.setViewport(s,o,a,l)}updateCamera(){if(!!this._camera)if(this._camera.cameraType==="PerspectiveCamera"){let e=this._frameSize.y,t=this._editorSize.y,r=this._fov;if(e>t){let n=oG(e,1080,2160,1,15)/100;r*=e/t,r*=1-n}this._camera.aspect=this._aspect,this._camera.fov=r,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y)}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t,!1)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t),this._camera.updateProjectionMatrix())}};function oG(i,e,t,r,n){return(i-e)/(t-e)*(n-r)+r}var vm=class{constructor(e){this.sharedAssets=new hm(e.shared),this.scene=new tm(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(this.sharedAssets),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose()}};var xm=class{constructor({x:e=10,y:t=10}){this._startTime=0;let r=document.getElementById("spe-perfs");r?this.element=r:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){var e;(e=this.element.parentElement)==null||e.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let t=performance.now()-this._startTime;this.element.innerHTML=t.toFixed(3)+" ms"}};function aG(i){let e;if(!!i.index)for(let t=0;t<i.index.array.length;t+=3)e=i.index.array[t],i.index.array[t]=i.index.array[t+2],i.index.array[t+2]=e}function Ax(i){return i==="SubdivObject"||i==="NonParametric"?i:"Mesh"}function lG(i,e){let t={};return i.traverseEntity(r=>{var c;if(r.type!=="Mesh"||!("material"in r)||!r.visible||!(r instanceof kt)||Array.isArray(r.material)||r&&r.interaction&&r.interaction.states.length>0)return;let n=r.parent;for(;n;){if(n instanceof kt&&n.interaction&&n.interaction.states.length>1)return;n=n.parent}let s=r.material.uuid,o=e.shared.materials[s];if(o){if(!fi.isMergable(o))return}else{let h=(c=e.scene.objects.get(r.uuid))==null?void 0:c.data;if(h&&"material"in h&&typeof h.material!="string"){if(!fi.isMergable(h.material))return;s=fi.getHash(h.material)}}t[s]||(t[s]={});let l=t[s][Ax(r.objectType)];if(l){if(l.push(r),r.cloner)for(let h of r.cloner.children)l.push(h)}else if(t[s][Ax(r.objectType)]=[r],r.cloner)for(let h of r.cloner.children)t[s][Ax(r.objectType)].push(h)}),t}function cG(i){let e=0;return Object.values(i).forEach(t=>{Object.values(t).forEach(r=>{let n=r.length;n>e&&(e=n)})}),e}function TT(i,e){let t=lG(e,i),r=cG(t),n=new Array(r),s=0,o=new Array(r),a=0,l=new Array(r),c=0,h=new Array(r),u=0;for(let f of Object.values(t))for(let d of Object.values(f)){if(a=0,c=0,d.forEach(p=>{p instanceof kt&&(o[a++]=p.geometry.clone(),l[c++]=p)}),c<2)continue;for(let p=0;p<c;p++)l[p].updateWorldMatrix(!0,!1),o[p].applyMatrix4(l[p].matrixWorld),l[p].matrixWorld.determinant()<0&&aG(o[p]);let m=NM(o.slice(0,a),!1);if(m){let p;switch(d[0].objectType){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),p=new Vt(m,l[0].material);break}default:{p=new Vt(m,l[0].material);break}}p.castShadow=l[0].castShadow,p.receiveShadow=l[0].receiveShadow,e.add(p);let g=x=>{u=0;for(let y of x)y.children&&g(y.children),y instanceof kt&&(Array.isArray(y.material)||t[y.material.uuid]&&t[y.material.uuid][y.objectType]&&t[y.material.uuid][y.objectType].length>1||(h[u++]=y));for(let y=0;y<u;y++)e.attach(h[y])};for(let x=0;x<c;x++){let y=l[x];g(y.children),n[s++]=y}}}for(let f=0;f<s;f++)n[f].removeFromParent()}var hG=new B,ET="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.",_T=class{constructor(e,{autoRender:t=!1}={}){this._viewportMode=1;this._viewportWidth=window.innerWidth;this._viewportHeight=window.innerHeight;this._proxyObjectCache=new Map;this._skipRender=!0;this.autoRender=!1;this.disposed=!1;this.requestRender=()=>{this._skipRender=!1};this.render=()=>{var e,t,r;!this._renderer||(this._rafId=requestAnimationFrame(this.render),(e=this._perfs)==null||e.start(),!(!this.autoRender&&this._skipRender)&&(this._controls&&(this._controls.enableDamping||this._controls.autoRotate)?this._skipRender=!this._controls.update():this._skipRender=!0,this._playmode&&!this._playmode.isEnable&&this._playmode.activate(),this._scene&&this._camera&&(this._renderer.autoClear=!1,this._transmissionRenderTarget&&(this._renderer.setRenderTarget(this._transmissionRenderTarget),this._renderer.clear(),this._camera.layers.enable(0),this._camera.layers.disable(3),this._renderer.render(this._scene,this._camera),this._renderer.setRenderTarget(null),this._camera.layers.enable(3)),(t=this._scene.postprocessing)!=null&&t.enabled?(this._renderer.autoClear=!1,this._scene.postprocessing.render()):(this._renderer.autoClear=!0,this._renderer.render(this._scene,this._camera))),(r=this._perfs)==null||r.end()))};this.resize=Ch(()=>{var e,t,r,n,s;!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=hG.set(this._viewportWidth,this._viewportHeight)),(e=this._frameView)==null||e.updateRenderer(),(t=this._scene)!=null&&t.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&((r=this._frameView)==null||r.updateViewport()),this._camera&&((n=this._frameView)==null||n.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),(s=this._playmode)==null||s.resize(),this.requestRender())},10);this.canvas=e,this.autoRender=t,window.location.search.includes("perfs")&&(this._perfs=new xm({x:10,y:10}))}async load(e){e.endsWith(".spline")?console.warn(ET+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(ET);let r=await(await fetch(e)).arrayBuffer();await this.start(r)}async start(e){var l;if(this.disposed)return;let t=await GA(e);this._publishData=t.scene.publish,zv(t)&&await $1();let r=new vm(t);if(window.location.search.includes("merge-geometries")){let c=performance.now();TT(t,r.scene);let h=performance.now();console.log("Merged geometries in ",h-c," ms")}this._scene=r.scene,zv(t)&&this._scene.traverse(c=>{Ot(c)&&c.recomputeBoolean()}),this._sharedAssetsManager=r.sharedAssets,this._sharedAssetsManager.onImageLoad=()=>{this.requestRender()},wT(t.scene,this._scene,this._sharedAssetsManager),this._camera=this._scene.activeCamera;let n=Object.values(t.frames)[0],s,o;if(n)if(n.preset==="fullscreen"){this._viewportMode=1;let{width:c,height:h}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(c==="300px"||c==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth,this.canvas.style.width="100%",s=this.canvas.style.width):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(h==="150px"||h==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight,this.canvas.style.height="100%",o=this.canvas.style.height):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=n.size[0],this._viewportHeight=n.size[1];(l=this._scene.postprocessing)!=null&&l.enabled?(this._renderer=new Pt({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._scene.postprocessing.init({renderer:this._renderer,camera:this._camera,scene:this._scene}),this._scene.postprocessing.addEventListener("smaaloaded",this.requestRender),s&&(this.canvas.style.width=s),o&&(this.canvas.style.height=o)):this._renderer=new Pt({canvas:this.canvas,antialias:!0,alpha:!0,stencil:!0,depth:!0,powerPreference:"high-performance"}),this._scene.needsTransmission(void 0)&&(this._transmissionRenderTarget=new mt(2048,2048,{generateMipmaps:!0,minFilter:js,magFilter:ct,wrapS:Dr,wrapT:Dr}),this._transmissionRenderTarget.depthTexture=new li(2048,2048),this._scene.needsTransmission(this._transmissionRenderTarget)),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._scene.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight,!1),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=iy,this._renderer.setClearColor(this._scene.bgColor,this._scene.alpha),this._frameView=new ym(this._renderer,this._camera,new B(this._viewportWidth,this._viewportHeight),new B(window.innerWidth,window.innerHeight)),!0&&(this._controls=new fp(this._camera,this._renderer.domElement),this._publishData&&(this._controls.fromJSON(this._publishData.orbitControls),this._controls.useKeyEvents=!1),this._controls.addEventListener("change",this.requestRender),this._controls.addEventListener("start",this.requestRender)),this._playmode=new gm(this._renderer,this._scene,this._camera,this),this.resize(),this.render(),this.canvas.parentElement&&(this._resizeObserver=new ResizeObserver(()=>{this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this.resize()}),this._resizeObserver.observe(this.canvas.parentElement))}findObjectById(e){var r;let t=(r=this._scene)==null?void 0:r.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){var r;let t=(r=this._scene)==null?void 0:r.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){var e;return(e=this._playmode)==null?void 0:e.splineEvents}emitEvent(e,t){let r=this.findObjectById(t);r==null||r.emitEvent(e)}emitEventReverse(e,t){let r=this.findObjectById(t);r==null||r.emitEventReverse(e)}addEventListener(e,t){var r;(r=this._renderer)==null||r.domElement.addEventListener(e,t)}removeEventListener(e,t){var r;(r=this._renderer)==null||r.domElement.removeEventListener(e,t)}setZoom(e){var t;(t=this._controls)==null||t.zoomOut(e)}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this.resize()}dispose(){var e,t,r,n,s,o,a;this.disposed=!0,(e=this._playmode)==null||e.deactivate(),(t=this._scene)==null||t.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(l=>{by.unsubscribe(l)}),(r=this._renderer)==null||r.dispose(),(n=this._transmissionRenderTarget)==null||n.dispose(),(o=(s=this._transmissionRenderTarget)==null?void 0:s.depthTexture)==null||o.dispose(),(a=this._sharedAssetsManager)==null||a.dispose(),this._resizeObserver&&this._resizeObserver.disconnect()}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(n){var s;(s=e.interaction)==null||s.emitEvent(n)},emitEventReverse(n){var s;(s=e.interaction)==null||s.emitEventReverse(n)}},r=by(t,(n,s)=>{var a;typeof e[n]!="object"&&((a=Object.getOwnPropertyDescriptor(e,n))==null?void 0:a.writable)&&(e[n]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,r),r}};export{_T as Application};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splinetool/runtime",
3
- "version": "0.9.48",
3
+ "version": "0.9.49",
4
4
  "main": "build/runtime.js",
5
5
  "files": [
6
6
  "build",