a3js 0.0.44 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a3js.cjs.js +3 -3
- package/dist/a3js.cjs.js.map +1 -1
- package/dist/a3js.es.js +5 -4
- package/dist/a3js.es.js.map +1 -1
- package/package.json +1 -1
package/dist/a3js.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Ir=Object.create;var vn=Object.defineProperty;var br=Object.getOwnPropertyDescriptor;var Cr=Object.getOwnPropertyNames;var yr=Object.getPrototypeOf,Br=Object.prototype.hasOwnProperty;var Tr=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Cr(e))!Br.call(i,r)&&r!==t&&vn(i,r,{get:()=>e[r],enumerable:!(n=br(e,r))||n.enumerable});return i};var wr=(i,e,t)=>(t=i!=null?Ir(yr(i)):{},Tr(e||!i||!i.__esModule?vn(t,"default",{value:i,enumerable:!0}):t,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("three"),Kn=require("fflate");function Rr(i){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>i[t]})}}return e.default=i,Object.freeze(e)}const oe=Rr(E);class Ae{x=0;y=0;z=0;constructor(e,t,n){typeof e=="number"?(this.x=e,this.y=t,this.z=n):typeof e>"u"?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new Ae(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t):console.warn("Vec3.normalize."),this}negate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}set(e,t,n){return typeof e=="number"?(this.x=e,this.y=t,this.z=n):(this.x=e.x,this.y=e.y,this.z=e.z),this}add(e,t,n){return typeof e=="number"?(this.x+=e,this.y+=t,this.z+=n):(this.x+=e.x,this.y+=e.y,this.z+=e.z),this}sub(e,t,n){return typeof e=="number"?(this.x-=e,this.y-=t,this.z-=n):(this.x-=e.x,this.y-=e.y,this.z-=e.z),this}scale(e){return this.x*=e,this.y*=e,this.z*=e,this}cross(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}apply(e,t,n,r){let o,s,c,A;typeof e=="number"?(o=e,s=t,c=n,A=r):(o=e.x,s=e.y,c=e.z,A=e.w);const a=2*(s*this.z-c*this.y),d=2*(c*this.x-o*this.z),u=2*(o*this.y-s*this.x);return this.x+=A*a+s*u-c*d,this.y+=A*d+c*a-o*u,this.z+=A*u+o*d-s*a,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z}}class Me{x=0;y=0;z=0;w=1;constructor(e,t,n,r){typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):typeof e>"u"?(this.x=this.y=this.z=0,this.w=1):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w)}clone(){return new Me(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t,this.w/=t):console.warn("Quat.normalize."),this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}set(e,t,n,r){return typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w),this}mul(e,t,n,r){const o=this.x,s=this.y,c=this.z,A=this.w;let a,d,u,m;return typeof e=="number"?(a=e,d=t,u=n,m=r):(a=e.x,d=e.y,u=e.z,m=e.w),this.x=A*a+o*m+s*u-c*d,this.y=A*d-o*u+s*m+c*a,this.z=A*u+o*d-s*a+c*m,this.w=A*m-o*a-s*d-c*u,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z,this.w=(1-n)*e.w+n*t.w}slerp(e,t,n){if(n<0||n>1){console.warn("Quat.slerp(): t must be in [0,1]");return}let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(Xe.set(t),r<0&&(r*=-1,Xe.set(-Xe.x,-Xe.y,-Xe.z,-Xe.w)),r>.9995){this.x=(1-n)*e.x+n*Xe.x,this.y=(1-n)*e.y+n*Xe.y,this.z=(1-n)*e.z+n*Xe.z,this.w=(1-n)*e.w+n*Xe.w;const o=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);o<1e-4?(console.warn("Quat.slerp(); ???!"),this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w):(this.x*=1/o,this.y*=1/o,this.z*=1/o,this.w*=1/o)}else{const o=Math.acos(r),s=Math.sin((1-n)*o)/Math.sin(o),c=Math.sin(n*o)/Math.sin(o);this.x=s*e.x+c*Xe.x,this.y=s*e.y+c*Xe.y,this.z=s*e.z+c*Xe.z,this.w=s*e.w+c*Xe.w}}}const Xe=new Me;function At(i,e,t,n){t.normalize();const r=i.clone().sub(e).normalize(),o=new Ae().cross(r,t).normalize(),s=new Ae().cross(o,r),c=o.x,A=s.x,a=-r.x,d=o.y,u=s.y,m=-r.y,p=o.z,I=s.z,g=-r.z;let l,h,f,C;const b=c+u+g;if(b>0){const R=Math.sqrt(b+1)*2;l=(I-m)/R,h=(a-p)/R,f=(d-A)/R,C=.25*R}else if(c>u&&c>g){const R=Math.sqrt(1+c-u-g)*2;l=.25*R,h=(A+d)/R,f=(a+p)/R,C=(I-m)/R}else if(u>g){const R=Math.sqrt(1+u-c-g)*2;l=(A+d)/R,h=.25*R,f=(m+I)/R,C=(a-p)/R}else{const R=Math.sqrt(1+g-c-u)*2;l=(a+p)/R,h=(m+I)/R,f=.25*R,C=(d-A)/R}const y=n??new Me;return y.set(l,h,f,C),y}function ht(i,e="ZXY",t){const n=t!==void 0?t.set(0,0,0,1):new Me(0,0,0,1);for(let r=0;r<3;r++)switch(e.charAt(r)){case"X":n.mul(Math.sin(i.x),0,0,Math.cos(i.x));break;case"Y":n.mul(0,Math.sin(i.y),0,Math.cos(i.y));break;case"Z":n.mul(0,0,Math.sin(i.z),Math.cos(i.z));break}return n}function vr(i){const e=[[],[],[]],t=i.x+i.x,n=i.y+i.y,r=i.z+i.z,o=i.x*t,s=i.x*n,c=i.x*r,A=i.y*n,a=i.y*r,d=i.z*r,u=i.w*t,m=i.w*n,p=i.w*r;return e[0][0]=1-(A+d),e[0][1]=s-p,e[0][2]=c+m,e[1][0]=s+p,e[1][1]=1-(o+d),e[1][2]=a-u,e[2][0]=c-m,e[2][1]=a+u,e[2][2]=1-(o+A),e}const gt=i=>Math.max(-1,Math.min(1,i));function Qn(i,e="ZXY",t){const n=vr(i),r=t??new Ae;let o=0,s=0,c=0;switch(e){case"XYZ":s=Math.asin(gt(n[0][2])),Math.abs(n[0][2])<.9999999?(o=Math.atan2(-n[1][2],n[2][2]),c=Math.atan2(-n[0][1],n[0][0])):(o=Math.atan2(n[2][1],n[1][1]),c=0);break;case"YXZ":o=Math.asin(-gt(n[1][2])),Math.abs(n[1][2])<.9999999?(s=Math.atan2(n[0][2],n[2][2]),c=Math.atan2(n[1][0],n[1][1])):(s=Math.atan2(-n[2][0],n[0][0]),c=0);break;case"ZXY":o=Math.asin(gt(n[2][1])),Math.abs(n[2][1])<.9999999?(s=Math.atan2(-n[2][0],n[2][2]),c=Math.atan2(-n[0][1],n[1][1])):(s=0,c=Math.atan2(n[1][0],n[0][0]));break;case"ZYX":s=Math.asin(-gt(n[2][0])),Math.abs(n[2][0])<.9999999?(o=Math.atan2(n[2][1],n[2][2]),c=Math.atan2(n[1][0],n[0][0])):(o=0,c=Math.atan2(-n[0][1],n[1][1]));break;case"YZX":c=Math.asin(gt(n[1][0])),Math.abs(n[1][0])<.9999999?(o=Math.atan2(-n[1][2],n[1][1]),s=Math.atan2(-n[2][0],n[0][0])):(o=0,s=Math.atan2(n[0][2],n[2][2]));break;case"XZY":c=Math.asin(-gt(n[0][1])),Math.abs(n[0][1])<.9999999?(o=Math.atan2(n[2][1],n[1][1]),s=Math.atan2(n[0][2],n[0][0])):(o=Math.atan2(-n[1][2],n[2][2]),s=0);break}return r.set(o,s,c),r}class ze{loc;quat;scale;constructor(){this.loc=new Ae,this.quat=new Me,this.scale=new Ae(1,1,1)}set(e){return e instanceof ze?(this.loc.set(e.loc),this.quat.set(e.quat),this.scale.set(e.scale)):(e.getPosition(this.loc),e.getQuat(this.quat),e.getScale(this.scale)),this}write(e){e instanceof Oe?(e.object3D.position.set(this.loc.x,this.loc.y,this.loc.z),e.object3D.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.object3D.scale.set(this.scale.x,this.scale.y,this.scale.z)):(e.position.set(this.loc.x,this.loc.y,this.loc.z),e.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.scale.set(this.scale.x,this.scale.y,this.scale.z))}blend(e,t){return this.loc.lerp(this.loc,e.loc,t),this.quat.slerp(this.quat,e.quat,t),this.scale.lerp(this.scale,e.scale,t),this}clone(){const e=new ze;return e.set(this),e}}class Rt{transform;constructor(){this.transform=new ze}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.transform.loc.set(e)}setPositionNow(e){this.transform.loc.set(e)}setQuat(e){this.transform.quat.set(e)}setQuatNow(e){this.transform.quat.set(e)}setScale(e){this.transform.scale.set(e)}setScaleNow(e){this.transform.scale.set(e)}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class Wn{transform;constructor(){this.transform=new ze}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class fn{startTransform;transform;endTransform;currentTime;duration;constructor(){this.startTransform=new ze,this.transform=new ze,this.endTransform=new ze,this.currentTime=0,this.duration=1}init(e,t){this.startTransform.set(e),this.transform.set(e),this.endTransform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.startTransform.set(this.transform),this.endTransform.loc.set(e),this.currentTime=0}setPositionNow(e){this.setPosition(e),this.currentTime=1}setQuat(e){this.startTransform.set(this.transform),this.endTransform.quat.set(e),this.currentTime=0}setQuatNow(e){this.setQuat(e),this.currentTime=1}setScale(e){this.startTransform.set(this.transform),this.endTransform.scale.set(e),this.currentTime=0}setScaleNow(e){this.setScale(e),this.currentTime=1}setLinearVelocity(e){}getLinearVelocity(e){e||(e=new Ae);const t=this.endTransform.loc.x-this.startTransform.loc.x,n=this.endTransform.loc.y-this.startTransform.loc.y,r=this.endTransform.loc.z-this.startTransform.loc.z;e.set(t,n,r);const o=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*o*o+6*o)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||(e=new Ae),Qn(this.startTransform.quat,"ZXY",_t),Qn(this.endTransform.quat,"ZXY",Dt),e.set(Dt.x-_t.x,Dt.y-_t.y,Dt.z-_t.z);const t=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*t*t+6*t)/this.duration),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}smoothstep(e){return e*e*(3-2*e)}update(e){this.currentTime+=e,this.currentTime>this.duration&&(this.currentTime=this.duration);const t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}}const ot=new Ae,yt=new Ae,ft=new Me,Lt=new ze,_t=new Ae,Dt=new Ae,Qr={up:new Ae(0,1,0)};class Yn extends Rt{up;target;constructor(e){super();const t={...Qr,...e};this.target=t.target,this.up=t.up}setTarget(e){this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Oe.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),this.transform.quat.set(ft)}}const kr={up:new Ae(0,1,0)};class Jn extends fn{up;target;constructor(e){super();const t={...kr,...e};this.target=t.target,this.up=t.up}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Oe.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),this.transform.quat.set(ft)}}const Xn={lookFrom:{x:0,y:5,z:-10},smoothness:.9};class Zn extends Wn{target;lookFrom;up;smoothness;constructor(e){super();const t={...Xn,...e};this.target=t.target,this.lookFrom=new Ae(t.lookFrom),this.target.upVector?this.up=this.target.upVector:this.up=Oe.defaultUpVector,this.smoothness=t.smoothness}init(e,t){super.init(e,t)}update(e){super.update(e),ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),ft.mul(0,1,0,0),Lt.quat.set(ft),ot.set(this.lookFrom),ot.apply(this.target.getQuat()),ot.add(this.target.getPosition()),Lt.loc.set(ot),this.transform.loc.lerp(this.transform.loc,Lt.loc,1-this.smoothness),this.transform.quat.slerp(this.transform.quat,Lt.quat,1-this.smoothness)}}const $n={rigidBody:"dynamic",collider:"solid",meshCollider:"convex_hull",mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1};function ei(i){return typeof i=="string"}function pn(i){return i.isMesh===!0}function Sr(i){return i.type==="RoundedBoxGeometry"}function xr(i){return i.type==="BoxGeometry"}function Lr(i){return i.type==="SphereGeometry"}function _r(i){return i.type==="IcosahedronGeometry"}function Dr(i){return i.type==="CylinderGeometry"}function Nr(i){return i.type==="CapsuleGeometry"}function Fr(i){return i.isBone===!0}function Or(i){return i.isPerspectiveCamera===!0}let je;const it=new Map;class vt{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!vt.RAPIER){const e=await import("@dimforge/rapier3d-compat");await e.init(),vt.RAPIER=e,je=e,this.isInitialized=!0}}createWorld(e){let t=.016666666666666666;this.isRapierWorldOptions(e)&&(t=e.timestep);const n=new je.World(e.gravity);return new gn(n,t)}isRapierWorldOptions(e){return"timestep"in e}}class gn{world;timestep;collisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new je.EventQueue(!0),this.world.integrationParameters.dt=this.timestep}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){const t=Math.ceil(e/this.timestep);for(let n=0;n<t;n++)this.world.step(this.collisionEventQueue)}getCollisions(){const e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{const o=it.get(t),s=it.get(n);o&&s&&e.push({objectA:o,partOfA:t,objectB:s,partOfB:n,started:r})}),e}}class kn{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...$n,...e},this.transform=new ze,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case"dynamic":e=je.RigidBodyDesc.dynamic();break;case"kinematic":e=je.RigidBodyDesc.kinematicPositionBased();break;case"fixed":e=je.RigidBodyDesc.fixed();break}return e.setTranslation(this.transform.loc.x,this.transform.loc.y,this.transform.loc.z),e.setRotation({x:this.transform.quat.x,y:this.transform.quat.y,z:this.transform.quat.z,w:this.transform.quat.w}),e}configColliderDescs(){if(!this.objectA3)return;const e=this.completeOptions,t=[];this.objectA3.object3D.traverse(r=>{if(pn(r)){const o=Gr(r.geometry),s=e.membership<<16|e.filter;if(o)o.colliderDesc.setCollisionGroups(s),e.collisionDetection&&o.colliderDesc.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(o.colliderDesc),o.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(o.volume);else{let c,A;switch(e.meshCollider){case"tri_mesh":c=Mr(r),A=Sn(r.geometry);break;case"convex_hull":c=Pr(r),A=Sn(r.geometry);break}c&&(c.setCollisionGroups(s),e.collisionDetection&&c.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(c),t.push(A))}}});let n=t.reduce((r,o)=>r+o,0);for(let r=0;r<this.colliderDescs.length;r++)this.colliderDescs[r].setRestitution(e.restitution),this.colliderDescs[r].setFriction(e.friction),this.colliderDescs[r].setMass(e.mass*(t[r]/n))}init(e,t){this.transform.set(e),this.objectA3=t,this.colliderDescs=[],this.colliders=[],this.bodyDesc=this.makeBodyDesc(),this.configColliderDescs(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat)}addOneselfToPhysics(e){this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.colliderDescs.forEach(t=>{const n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&it.set(n.handle,this.objectA3)}),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0))}removeOneselfFromPhysics(e){this.colliders.forEach(t=>{e.world.removeCollider(t,!0),it.delete(t.handle)}),this.body&&e.world.removeRigidBody(this.body)}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e)}setQuat(e){}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}update(e){if(this.body){const t=this.body.translation();this.transform.loc.set(t.x,t.y,t.z);const n=this.body.rotation();this.transform.quat.set(n.x,n.y,n.z,n.w)}}}function Mr(i){let e=null;if(pn(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;let o=n.index?n.index.array:null;if(o)o instanceof Uint32Array||(o=new Uint32Array(o));else{const s=n.attributes.position.count;o=new Uint32Array(s);for(let c=0;c<s;c++)o[c]=c}r instanceof Float32Array&&(e=je.ColliderDesc.trimesh(r,o))}return e}function Pr(i){let e=null;if(pn(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;r instanceof Float32Array&&(e=je.ColliderDesc.convexHull(r))}return e}function Sn(i){const e=i.attributes.position;if(!e)throw new Error("position attribute not found");const t=i.index,n=e.array;let r=0;const o=new oe.Vector3,s=new oe.Vector3,c=new oe.Vector3;if(t){const A=t.array;for(let a=0;a<A.length;a+=3){const d=A[a]*3,u=A[a+1]*3,m=A[a+2]*3;o.set(n[d],n[d+1],n[d+2]),s.set(n[u],n[u+1],n[u+2]),c.set(n[m],n[m+1],n[m+2]),r+=o.dot(s.clone().cross(c))}}else for(let A=0;A<n.length;A+=9)o.set(n[A],n[A+1],n[A+2]),s.set(n[A+3],n[A+4],n[A+5]),c.set(n[A+6],n[A+7],n[A+8]),r+=o.dot(s.clone().cross(c));return Math.abs(r)/6}function Gr(i){if(Sr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5,o=.1;return{colliderDesc:je.ColliderDesc.roundCuboid(t-o,n-o,r-o,o),volume:2*t*2*n*2*r}}else if(xr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5;return{colliderDesc:je.ColliderDesc.cuboid(t,n,r),volume:2*t*2*n*2*r}}else if(Lr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(_r(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Dr(i)){const e=i.parameters,t=typeof e?.radiusBottom=="number"?e.radiusBottom:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.cylinder(n/2,t),volume:Math.PI*t*t*n}}else if(Nr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.capsule(n/2,t),volume:4/3*Math.PI*t*t*t+Math.PI*t*t*n}}return null}const on=new vt;async function Ur(){await on.init()}const _={v0:new Ae,v1:new Ae,v2:new Ae,v3:new Ae,v4:new Ae,q0:new Me,q1:new Me,q2:new Me,q3:new Me,q4:new Me,t0:new ze,t1:new ze,t2:new ze,t3:new ze,t4:new ze};function jr(i){return new Promise(e=>{setTimeout(()=>{e()},i)})}async function ti(i){const t=await(await fetch(i)).arrayBuffer(),n=await new Promise((r,o)=>{Kn.unzip(new Uint8Array(t),(s,c)=>{s?o(s):r(c)})});return{zipUrl:i,unzipped:n}}function Nt(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e])return Kn.strFromU8(i.unzipped[e]);throw new Error(`readStringFromUnzippedA3(): no file at ${e}`)}function sn(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e]){const t=qr(e);return new Blob([new Uint8Array(i.unzipped[e])],{type:t})}else throw new Error(`readBlobFromUnzippedA3(): no file at ${e}`)}const Hr={"image/png":/\.png$/i,"image/jpeg":/\.(jpg|jpeg)$/i,"image/gif":/\.gif$/i,"model/vrml":/\.wrl$/i,"application/xml":/\.xml$/i,"application/octet-stream":/\.bvh/i,"audio/x-wav":/\.wav/i,"audio/mpeg":/\.mp3/i,"audio/ogg":/\.ogg/i,"text/plain":/\.(txt|text)$/i,"model/gltf+json":/\.gltf$/i,"model/gltf-binary":/\.glb$/i};function qr(i){for(const[e,t]of Object.entries(Hr))if(t.test(i))return e;return"application/octet-stream"}function Ot(i,e){if(!e)return i;const t={...i};for(const n in e)typeof i[n]=="object"&&typeof e[n]=="object"?t[n]=Ot(i[n],e[n]):t[n]=e[n];return t}const ni={offset:.01,auto:!0,height:1.5,radius:.3};class ii{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;constructor(e={}){this.completeOptions={...ni,...e},this.transform=new ze,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Me}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);o.remove(t.object3D),s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.colliderDesc.setRotation({x:e.quat.x,y:e.quat.y,z:e.quat.z,w:e.quat.w})}addOneselfToPhysics(e){this.controller=e.world.createCharacterController(this.completeOptions.offset),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&it.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!1),it.delete(this.collider.handle))}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.collider&&this.collider.setTranslation(this.tmpV1),this.transform.loc.set(e),this.nextLocation.set(this.tmpV1)}setQuat(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){return this.controller?this.controller.computedGrounded():!1}update(e){if(!this.controller||!this.collider)return;this.transform.quat.set(this.collider.rotation()),this.tmpV1.set(this.collider.translation()),this.tmpV2.set(this.nextLocation),this.tmpV2.sub(this.tmpV1),this.controller.computeColliderMovement(this.collider,this.tmpV2);const t=this.controller.computedMovement();this.tmpV1.add(t),this.collider.setTranslation(this.tmpV1),this.tmpV1.sub(this.capsuleCenter),this.transform.loc.set(this.tmpV1),this.nextLocation.set(this.tmpV1)}}const ri={auto:!0,height:1.5,radius:.3};class oi{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...ri,...e},this.transform=new ze,this.capsuleCenter=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Me}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.bodyDesc=je.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius)}addOneselfToPhysics(e){this.physicsWorld=e,this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.body.setEnabledRotations(!1,!1,!1,!0),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0)),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc,this.body)),this.collider&&this.objectA3&&it.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!0),it.delete(this.collider.handle)),this.body&&e.world.removeRigidBody(this.body),this.physicsWorld=void 0}setPosition(e){}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.body?this.body.setTranslation(this.tmpV1,!0):this.bodyDesc?.setTranslation(this.tmpV1.x,this.tmpV1.y,this.tmpV1.z),this.transform.loc.set(e)}setQuat(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}isGrounded(){if(this.body&&this.physicsWorld){const e=this.body.translation(),t=new je.Ray(e,{x:0,y:-1,z:0}),n=1.1*(this.completeOptions.height+this.completeOptions.radius);return this.physicsWorld.world.castRay(t,n,!0,void 0,void 0,this.collider)!==null}else return this.transform.loc.y<=0}update(e){if(!this.body)return;const t=new Ae(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}}const zr=new oe.SphereGeometry,Vr=new oe.MeshStandardMaterial({color:16711680});let Kr=new oe.Mesh(zr,Vr);class Oe{static defaultRotationOrder="ZXY";static defaultUpVector=new Ae(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;constructor(e){this.transformer=this.initTransformer(e),this.object3D=new oe.Object3D;const t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(n=>{n.userData.a3js={objectA3:this}})}initObject(e){return Kr.clone()}initTransformer(e){return new Rt}setTransformer(e){_.t0.set(this.transformer.transform),e.init(_.t0,this),this.transformer=e}getTransformer(){return this.transformer}setTransformMode(e,t){e==="Default"?this.setTransformer(new Rt):e==="Smooth"?this.setTransformer(new fn):e==="Follow"?this.setTransformer(new Zn(t)):e==="Billboard"?this.setTransformer(new Yn(t)):e==="SmoothBillboard"?this.setTransformer(new Jn(t)):e==="SimplePhysics"?this.setTransformer(new kn(t)):e==="KinematicCharacter"?this.setTransformer(new ii(t)):e==="DynamicCharacter"&&this.setTransformer(new oi(t))}initSimplePhysics(e){const t={...$n,...e};this.setTransformer(new kn(t))}update(e){this.transformer.update(e),this.transformer.transform.write(this),this.children.forEach(t=>{t.update(e)})}add(e){if(e.scene){console.warn("ObjectA3.add(obj) is ignored.");return}if(e.parent){console.warn("ObjectA3.add(obj) is ignored.");return}this.children.push(e),e.parent=this,this.object3D.add(e.object3D)}remove(e){if(e.parent!==this){console.warn("ObjectA3.remove(obj) is ignored.");return}const t=this.children.indexOf(e);this.children.splice(t,1),e.parent=void 0,this.object3D.remove(e.object3D)}setSpeechBubble(e){this.balloon?this.balloon.message=e:this.balloon=new Wr(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setPosition(_.v0)}setPositionNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setPositionNow(_.v0)}getQuat(e){return e?(e.set(this.transformer.transform.quat),e):this.transformer.transform.quat.clone()}setQuat(e,t,n,r){typeof e=="number"?_.q0.set(e,t,n,r):_.q0.set(e),this.transformer.setQuat(_.q0)}setQuatNow(e,t,n,r){typeof e=="number"?_.q0.set(e,t,n,r):_.q0.set(e),this.transformer.setQuatNow(_.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setScale(_.v0)}setScaleNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setScaleNow(_.v0)}setRotation(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.setQuat(_.q1)}setRotationNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q0),this.setQuatNow(_.q0)}lookAt(e,t,n){typeof e=="number"?_.v1.set(e,t,n):e instanceof Oe?_.v1.set(e.transformer.transform.loc):_.v1.set(e);const r=this.upVector?this.upVector:Oe.defaultUpVector;At(this.transformer.transform.loc,_.v1,r,_.q1),this.setQuat(_.q1)}lookAtNow(e,t,n){typeof e=="number"?_.v1.set(e,t,n):e instanceof Oe?_.v1.set(e.transformer.transform.loc):_.v1.set(e);const r=this.upVector?this.upVector:Oe.defaultUpVector;At(this.transformer.transform.loc,_.v1,r,_.q1),this.setQuatNow(_.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new Ae(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new Ae(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new Ae(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){_.v1.set(this.transformer.transform.loc),typeof e=="number"?_.v1.add(e,t,n):_.v1.add(e),this.setPosition(_.v1)}translateNow(e,t,n){_.v1.set(this.transformer.transform.loc),typeof e=="number"?_.v1.add(e,t,n):_.v1.add(e),this.setPositionNow(_.v1)}mulQuat(e,t,n,r){_.q1.set(this.transformer.transform.quat),typeof e=="number"?_.q1.mul(e,t,n,r):_.q1.mul(e),this.setQuat(_.q1)}mulQuatNow(e,t,n,r){_.q1.set(this.transformer.transform.quat),typeof e=="number"?_.q1.mul(e,t,n,r):_.q1.mul(e),this.setQuatNow(_.q1)}mulRotation(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.getQuat(_.q0),_.q0.mul(_.q1),this.setQuat(_.q0)}mulRotationNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.getQuat(_.q0),_.q0.mul(_.q1),this.setQuatNow(_.q0)}scaleBy(e,t,n){this.getScale(_.v0),typeof e=="number"?_.v0.set(_.v0.x*e,_.v0.y*t,_.v0.z*n):_.v0.set(_.v0.x*e.x,_.v0.y*e.y,_.v0.z*e.z),this.setScale(_.v0)}mulScaleNow(e,t,n){this.getScale(_.v0),typeof e=="number"?_.v0.set(_.v0.x*e,_.v0.y*t,_.v0.z*n):_.v0.set(_.v0.x*e.x,_.v0.y*e.y,_.v0.z*e.z),this.setScaleNow(_.v0)}moveForward(e){this.getUnitVecZ(_.v0),_.v0.scale(e),this.translate(_.v0)}moveForwardNow(e){this.getUnitVecZ(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveBackward(e){this.getUnitVecZ(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveBackwardNow(e){this.getUnitVecZ(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}moveRight(e){this.getUnitVecX(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveRightNow(e){this.getUnitVecX(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}moveLeft(e){this.getUnitVecX(_.v0),_.v0.scale(e),this.translate(_.v0)}moveLeftNow(e){this.getUnitVecX(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveUp(e){this.getUnitVecY(_.v0),_.v0.scale(e),this.translate(_.v0)}moveUpNow(e){this.getUnitVecY(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveDown(e){this.getUnitVecY(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveDownNow(e){this.getUnitVecY(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}turnUp(e){this.mulRotation(-e,0,0)}turnUpNow(e){this.mulRotationNow(-e,0,0)}turnDown(e){this.mulRotation(e,0,0)}turnDownNow(e){this.mulRotationNow(e,0,0)}turnRight(e){this.mulRotation(0,-e,0)}turnRightNow(e){this.mulRotationNow(0,-e,0)}turnLeft(e){this.mulRotation(0,e,0)}turnLeftNow(e){this.mulRotationNow(0,e,0)}rollRight(e){this.mulRotation(0,0,e)}rollRightNow(e){this.mulRotationNow(0,0,e)}rollLeft(e){this.mulRotation(0,0,-e)}rollLeftNow(e){this.mulRotationNow(0,0,-e)}setLinearVelocity(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setLinearVelocity(_.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setAngularVelocity(_.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.addForce(_.v0)}addForceAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")_.v0.set(e,t,n),_.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else _.v0.set(e),_.v1.set(t);this.transformer.addForceAtPoint(_.v0,_.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.addTorque(_.v0)}applyImpulse(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.applyImpulse(_.v0)}applyImpulseAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")_.v0.set(e,t,n),_.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else _.v0.set(e),_.v1.set(t);this.transformer.applyImpulseAtPoint(_.v0,_.v1)}applyTorqueImpulse(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.applyTorqueImpulse(_.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}}class Wr{message;dir;offsetTop;offsetRight;offsetLeft;offsetBottom;constructor(e){this.message=e,this.dir="RIGHT",this.offsetTop={x:0,y:2},this.offsetRight={x:1,y:1},this.offsetLeft={x:-1,y:1},this.offsetBottom={x:0,y:0}}}class mn{shape;motion;constructor(e,t){this.shape=e,this.motion=t}enable(e,t){this.motion.playCount=0,this.motion.time=0,e.add(this.shape.root)}disable(e,t){e.remove(this.shape.root)}}class bt extends Oe{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e)}syncInit(e,t,n={}){this.actions=t,this.stateAction=this.actions[e],this.currentAction=this.stateAction,this.object3D.clear(),this.morphs=n,this.stateAction?.enable(this.object3D,this.scene)}setActions(e){this.actions=e}getAction(e){return this.actions[e]}addAction(e,t){this.actions[e]=t}removeAction(e){const t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.stateAction=t)}setEmote(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.emoteAction=t)}setMorphsOverwrite(e){this.overwriteMorphs=e}setMorph(e,t){if(e in this.morphs){const{array:n,idx:r}=this.morphs[e];n[r]=t}}getMorphNames(){return Object.keys(this.morphs)}pose={};update(e){super.update(e);let t;if(this.emoteAction&&this.emoteAction.motion.playCount<=0?(t=this.emoteAction.motion.update(e),this.emoteAction.motion.playCount>0&&(this.emoteAction.disable(this.object3D,this.scene),this.emoteAction=void 0,this.stateAction&&(this.stateAction.enable(this.object3D,this.scene),this.currentAction=this.stateAction))):this.stateAction&&(t=this.stateAction.motion.update(e)),t&&this.currentAction&&this.currentAction.shape.bones)for(const[n,r]of Object.entries(t)){const o=this.currentAction.shape.bones[n];if(o&&(r.loc&&o.position.set(r.loc.x,r.loc.y,r.loc.z),r.quat&&o.quaternion.set(r.quat.x,r.quat.y,r.quat.z,r.quat.w),r.scale&&o.scale.set(r.scale.x,r.scale.y,r.scale.z)),!this.overwriteMorphs&&r.morphs){for(const s of r.morphs)for(const c of Object.keys(this.morphs))if(c.startsWith(s.name)){const{array:A}=this.morphs[c];for(let a=0;a<A.length;a++)A[a]=s.vals[a];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update()}}class xn{name;playCount;time;finishListener;constructor(){this.name="dummy",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){return{}}}var Re=(i,e)=>()=>(e||(e={exports:{}},i(e.exports,e)),e.exports),si=Re(i=>{Object.defineProperty(i,"__esModule",{value:!0}),i.VERSION=void 0,i.VERSION="9.0.1"}),Ne=Re((i,e)=>{var t=i&&i.__spreadArray||function(O,X){for(var z=0,re=X.length,fe=O.length;z<re;z++,fe++)O[fe]=X[z];return O};Object.defineProperty(i,"__esModule",{value:!0}),i.toFastProperties=i.timer=i.peek=i.isES2015MapSupported=i.PRINT_WARNING=i.PRINT_ERROR=i.packArray=i.IDENTITY=i.NOOP=i.merge=i.groupBy=i.defaults=i.assignNoOverwrite=i.assign=i.zipObject=i.sortBy=i.indexOf=i.some=i.difference=i.every=i.isObject=i.isRegExp=i.isArray=i.partial=i.uniq=i.compact=i.reduce=i.findAll=i.find=i.cloneObj=i.cloneArr=i.contains=i.has=i.pick=i.reject=i.filter=i.dropRight=i.drop=i.isFunction=i.isUndefined=i.isString=i.forEach=i.last=i.first=i.flatten=i.map=i.mapValues=i.values=i.keys=i.isEmpty=void 0;function n(O){return O&&O.length===0}i.isEmpty=n;function r(O){return O==null?[]:Object.keys(O)}i.keys=r;function o(O){for(var X=[],z=Object.keys(O),re=0;re<z.length;re++)X.push(O[z[re]]);return X}i.values=o;function s(O,X){for(var z=[],re=r(O),fe=0;fe<re.length;fe++){var Qe=re[fe];z.push(X.call(null,O[Qe],Qe))}return z}i.mapValues=s;function c(O,X){for(var z=[],re=0;re<O.length;re++)z.push(X.call(null,O[re],re));return z}i.map=c;function A(O){for(var X=[],z=0;z<O.length;z++){var re=O[z];Array.isArray(re)?X=X.concat(A(re)):X.push(re)}return X}i.flatten=A;function a(O){return n(O)?void 0:O[0]}i.first=a;function d(O){var X=O&&O.length;return X?O[X-1]:void 0}i.last=d;function u(O,X){if(Array.isArray(O))for(var z=0;z<O.length;z++)X.call(null,O[z],z);else if($(O))for(var re=r(O),z=0;z<re.length;z++){var fe=re[z],Qe=O[fe];X.call(null,Qe,fe)}else throw Error("non exhaustive match")}i.forEach=u;function m(O){return typeof O=="string"}i.isString=m;function p(O){return O===void 0}i.isUndefined=p;function I(O){return O instanceof Function}i.isFunction=I;function g(O,X){return X===void 0&&(X=1),O.slice(X,O.length)}i.drop=g;function l(O,X){return X===void 0&&(X=1),O.slice(0,O.length-X)}i.dropRight=l;function h(O,X){var z=[];if(Array.isArray(O))for(var re=0;re<O.length;re++){var fe=O[re];X.call(null,fe)&&z.push(fe)}return z}i.filter=h;function f(O,X){return h(O,function(z){return!X(z)})}i.reject=f;function C(O,X){for(var z=Object.keys(O),re={},fe=0;fe<z.length;fe++){var Qe=z[fe],ye=O[Qe];X(ye)&&(re[Qe]=ye)}return re}i.pick=C;function b(O,X){return $(O)?O.hasOwnProperty(X):!1}i.has=b;function y(O,X){return q(O,function(z){return z===X})!==void 0}i.contains=y;function R(O){for(var X=[],z=0;z<O.length;z++)X.push(O[z]);return X}i.cloneArr=R;function x(O){var X={};for(var z in O)Object.prototype.hasOwnProperty.call(O,z)&&(X[z]=O[z]);return X}i.cloneObj=x;function q(O,X){for(var z=0;z<O.length;z++){var re=O[z];if(X.call(null,re))return re}}i.find=q;function v(O,X){for(var z=[],re=0;re<O.length;re++){var fe=O[re];X.call(null,fe)&&z.push(fe)}return z}i.findAll=v;function G(O,X,z){for(var re=Array.isArray(O),fe=re?O:o(O),Qe=re?[]:r(O),ye=z,le=0;le<fe.length;le++)ye=X.call(null,ye,fe[le],re?le:Qe[le]);return ye}i.reduce=G;function D(O){return f(O,function(X){return X==null})}i.compact=D;function Q(O,X){X===void 0&&(X=function(re){return re});var z=[];return G(O,function(re,fe){var Qe=X(fe);return y(z,Qe)?re:(z.push(Qe),re.concat(fe))},[])}i.uniq=Q;function F(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];var re=[null],fe=re.concat(X);return Function.bind.apply(O,fe)}i.partial=F;function L(O){return Array.isArray(O)}i.isArray=L;function J(O){return O instanceof RegExp}i.isRegExp=J;function $(O){return O instanceof Object}i.isObject=$;function j(O,X){for(var z=0;z<O.length;z++)if(!X(O[z],z))return!1;return!0}i.every=j;function ee(O,X){return f(O,function(z){return y(X,z)})}i.difference=ee;function ne(O,X){for(var z=0;z<O.length;z++)if(X(O[z]))return!0;return!1}i.some=ne;function ue(O,X){for(var z=0;z<O.length;z++)if(O[z]===X)return z;return-1}i.indexOf=ue;function ie(O,X){var z=R(O);return z.sort(function(re,fe){return X(re)-X(fe)}),z}i.sortBy=ie;function Z(O,X){if(O.length!==X.length)throw Error("can't zipObject with different number of keys and values!");for(var z={},re=0;re<O.length;re++)z[O[re]]=X[re];return z}i.zipObject=Z;function se(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];for(var re=0;re<X.length;re++)for(var fe=X[re],Qe=r(fe),ye=0;ye<Qe.length;ye++){var le=Qe[ye];O[le]=fe[le]}return O}i.assign=se;function de(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];for(var re=0;re<X.length;re++)for(var fe=X[re],Qe=r(fe),ye=0;ye<Qe.length;ye++){var le=Qe[ye];b(O,le)||(O[le]=fe[le])}return O}i.assignNoOverwrite=de;function P(){for(var O=[],X=0;X<arguments.length;X++)O[X]=arguments[X];return de.apply(void 0,t([{}],O))}i.defaults=P;function H(O,X){var z={};return u(O,function(re){var fe=X(re),Qe=z[fe];Qe?Qe.push(re):z[fe]=[re]}),z}i.groupBy=H;function Y(O,X){for(var z=x(O),re=r(X),fe=0;fe<re.length;fe++){var Qe=re[fe],ye=X[Qe];z[Qe]=ye}return z}i.merge=Y;function V(){}i.NOOP=V;function K(O){return O}i.IDENTITY=K;function ce(O){for(var X=[],z=0;z<O.length;z++){var re=O[z];X.push(re!==void 0?re:void 0)}return X}i.packArray=ce;function Be(O){console&&console.error&&console.error("Error: "+O)}i.PRINT_ERROR=Be;function Te(O){console&&console.warn&&console.warn("Warning: "+O)}i.PRINT_WARNING=Te;function De(){return typeof Map=="function"}i.isES2015MapSupported=De;function Ve(O){return O[O.length-1]}i.peek=Ve;function Je(O){var X=new Date().getTime(),z=O(),re=new Date().getTime(),fe=re-X;return{time:fe,value:z}}i.timer=Je;function qe(O){function X(){}X.prototype=O;var z=new X;function re(){return typeof z.bar}return re(),re(),O}i.toFastProperties=qe}),En=Re((i,e)=>{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:i,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(l){this.idx=l.idx,this.input=l.input,this.groupIdx=l.groupIdx},t.prototype.pattern=function(l){this.idx=0,this.input=l,this.groupIdx=0,this.consumeChar("/");var h=this.disjunction();this.consumeChar("/");for(var f={type:"Flags",loc:{begin:this.idx,end:l.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":A(f,"global");break;case"i":A(f,"ignoreCase");break;case"m":A(f,"multiLine");break;case"u":A(f,"unicode");break;case"y":A(f,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:f,value:h,loc:this.loc(0)}},t.prototype.disjunction=function(){var l=[],h=this.idx;for(l.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),l.push(this.alternative());return{type:"Disjunction",value:l,loc:this.loc(h)}},t.prototype.alternative=function(){for(var l=[],h=this.idx;this.isTerm();)l.push(this.term());return{type:"Alternative",value:l,loc:this.loc(h)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var l=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(l)};case"$":return{type:"EndAnchor",loc:this.loc(l)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(l)};case"B":return{type:"NonWordBoundary",loc:this.loc(l)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var h;switch(this.popChar()){case"=":h="Lookahead";break;case"!":h="NegativeLookahead";break}a(h);var f=this.disjunction();return this.consumeChar(")"),{type:h,value:f,loc:this.loc(l)}}d()},t.prototype.quantifier=function(l){var h,f=this.idx;switch(this.popChar()){case"*":h={atLeast:0,atMost:1/0};break;case"+":h={atLeast:1,atMost:1/0};break;case"?":h={atLeast:0,atMost:1};break;case"{":var C=this.integerIncludingZero();switch(this.popChar()){case"}":h={atLeast:C,atMost:C};break;case",":var b;this.isDigit()?(b=this.integerIncludingZero(),h={atLeast:C,atMost:b}):h={atLeast:C,atMost:1/0},this.consumeChar("}");break}if(l===!0&&h===void 0)return;a(h);break}if(!(l===!0&&h===void 0))return a(h),this.peekChar(0)==="?"?(this.consumeChar("?"),h.greedy=!1):h.greedy=!0,h.type="Quantifier",h.loc=this.loc(f),h},t.prototype.atom=function(){var l,h=this.idx;switch(this.peekChar()){case".":l=this.dotAll();break;case"\\":l=this.atomEscape();break;case"[":l=this.characterClass();break;case"(":l=this.group();break}return l===void 0&&this.isPatternCharacter()&&(l=this.patternCharacter()),a(l),l.loc=this.loc(h),this.isQuantifier()&&(l.quantifier=this.quantifier()),l},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[s(`
|
|
1
|
+
"use strict";var Ir=Object.create;var vn=Object.defineProperty;var br=Object.getOwnPropertyDescriptor;var Cr=Object.getOwnPropertyNames;var yr=Object.getPrototypeOf,Br=Object.prototype.hasOwnProperty;var Tr=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Cr(e))!Br.call(i,r)&&r!==t&&vn(i,r,{get:()=>e[r],enumerable:!(n=br(e,r))||n.enumerable});return i};var wr=(i,e,t)=>(t=i!=null?Ir(yr(i)):{},Tr(e||!i||!i.__esModule?vn(t,"default",{value:i,enumerable:!0}):t,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("three"),Kn=require("fflate");function Rr(i){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>i[t]})}}return e.default=i,Object.freeze(e)}const oe=Rr(E);class Ae{x=0;y=0;z=0;constructor(e,t,n){typeof e=="number"?(this.x=e,this.y=t,this.z=n):typeof e>"u"?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new Ae(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t):console.warn("Vec3.normalize."),this}negate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}set(e,t,n){return typeof e=="number"?(this.x=e,this.y=t,this.z=n):(this.x=e.x,this.y=e.y,this.z=e.z),this}add(e,t,n){return typeof e=="number"?(this.x+=e,this.y+=t,this.z+=n):(this.x+=e.x,this.y+=e.y,this.z+=e.z),this}sub(e,t,n){return typeof e=="number"?(this.x-=e,this.y-=t,this.z-=n):(this.x-=e.x,this.y-=e.y,this.z-=e.z),this}scale(e){return this.x*=e,this.y*=e,this.z*=e,this}cross(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}apply(e,t,n,r){let o,s,c,A;typeof e=="number"?(o=e,s=t,c=n,A=r):(o=e.x,s=e.y,c=e.z,A=e.w);const a=2*(s*this.z-c*this.y),d=2*(c*this.x-o*this.z),u=2*(o*this.y-s*this.x);return this.x+=A*a+s*u-c*d,this.y+=A*d+c*a-o*u,this.z+=A*u+o*d-s*a,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z}}class Me{x=0;y=0;z=0;w=1;constructor(e,t,n,r){typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):typeof e>"u"?(this.x=this.y=this.z=0,this.w=1):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w)}clone(){return new Me(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t,this.w/=t):console.warn("Quat.normalize."),this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}set(e,t,n,r){return typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w),this}mul(e,t,n,r){const o=this.x,s=this.y,c=this.z,A=this.w;let a,d,u,m;return typeof e=="number"?(a=e,d=t,u=n,m=r):(a=e.x,d=e.y,u=e.z,m=e.w),this.x=A*a+o*m+s*u-c*d,this.y=A*d-o*u+s*m+c*a,this.z=A*u+o*d-s*a+c*m,this.w=A*m-o*a-s*d-c*u,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z,this.w=(1-n)*e.w+n*t.w}slerp(e,t,n){if(n<0||n>1){console.warn("Quat.slerp(): t must be in [0,1]");return}let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(Xe.set(t),r<0&&(r*=-1,Xe.set(-Xe.x,-Xe.y,-Xe.z,-Xe.w)),r>.9995){this.x=(1-n)*e.x+n*Xe.x,this.y=(1-n)*e.y+n*Xe.y,this.z=(1-n)*e.z+n*Xe.z,this.w=(1-n)*e.w+n*Xe.w;const o=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);o<1e-4?(console.warn("Quat.slerp(); ???!"),this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w):(this.x*=1/o,this.y*=1/o,this.z*=1/o,this.w*=1/o)}else{const o=Math.acos(r),s=Math.sin((1-n)*o)/Math.sin(o),c=Math.sin(n*o)/Math.sin(o);this.x=s*e.x+c*Xe.x,this.y=s*e.y+c*Xe.y,this.z=s*e.z+c*Xe.z,this.w=s*e.w+c*Xe.w}}}const Xe=new Me;function At(i,e,t,n){t.normalize();const r=i.clone().sub(e).normalize(),o=new Ae().cross(r,t).normalize(),s=new Ae().cross(o,r),c=o.x,A=s.x,a=-r.x,d=o.y,u=s.y,m=-r.y,p=o.z,I=s.z,g=-r.z;let l,h,f,C;const b=c+u+g;if(b>0){const R=Math.sqrt(b+1)*2;l=(I-m)/R,h=(a-p)/R,f=(d-A)/R,C=.25*R}else if(c>u&&c>g){const R=Math.sqrt(1+c-u-g)*2;l=.25*R,h=(A+d)/R,f=(a+p)/R,C=(I-m)/R}else if(u>g){const R=Math.sqrt(1+u-c-g)*2;l=(A+d)/R,h=.25*R,f=(m+I)/R,C=(a-p)/R}else{const R=Math.sqrt(1+g-c-u)*2;l=(a+p)/R,h=(m+I)/R,f=.25*R,C=(d-A)/R}const y=n??new Me;return y.set(l,h,f,C),y}function ht(i,e="ZXY",t){const n=t!==void 0?t.set(0,0,0,1):new Me(0,0,0,1);for(let r=0;r<3;r++)switch(e.charAt(r)){case"X":n.mul(Math.sin(i.x),0,0,Math.cos(i.x));break;case"Y":n.mul(0,Math.sin(i.y),0,Math.cos(i.y));break;case"Z":n.mul(0,0,Math.sin(i.z),Math.cos(i.z));break}return n}function vr(i){const e=[[],[],[]],t=i.x+i.x,n=i.y+i.y,r=i.z+i.z,o=i.x*t,s=i.x*n,c=i.x*r,A=i.y*n,a=i.y*r,d=i.z*r,u=i.w*t,m=i.w*n,p=i.w*r;return e[0][0]=1-(A+d),e[0][1]=s-p,e[0][2]=c+m,e[1][0]=s+p,e[1][1]=1-(o+d),e[1][2]=a-u,e[2][0]=c-m,e[2][1]=a+u,e[2][2]=1-(o+A),e}const gt=i=>Math.max(-1,Math.min(1,i));function Qn(i,e="ZXY",t){const n=vr(i),r=t??new Ae;let o=0,s=0,c=0;switch(e){case"XYZ":s=Math.asin(gt(n[0][2])),Math.abs(n[0][2])<.9999999?(o=Math.atan2(-n[1][2],n[2][2]),c=Math.atan2(-n[0][1],n[0][0])):(o=Math.atan2(n[2][1],n[1][1]),c=0);break;case"YXZ":o=Math.asin(-gt(n[1][2])),Math.abs(n[1][2])<.9999999?(s=Math.atan2(n[0][2],n[2][2]),c=Math.atan2(n[1][0],n[1][1])):(s=Math.atan2(-n[2][0],n[0][0]),c=0);break;case"ZXY":o=Math.asin(gt(n[2][1])),Math.abs(n[2][1])<.9999999?(s=Math.atan2(-n[2][0],n[2][2]),c=Math.atan2(-n[0][1],n[1][1])):(s=0,c=Math.atan2(n[1][0],n[0][0]));break;case"ZYX":s=Math.asin(-gt(n[2][0])),Math.abs(n[2][0])<.9999999?(o=Math.atan2(n[2][1],n[2][2]),c=Math.atan2(n[1][0],n[0][0])):(o=0,c=Math.atan2(-n[0][1],n[1][1]));break;case"YZX":c=Math.asin(gt(n[1][0])),Math.abs(n[1][0])<.9999999?(o=Math.atan2(-n[1][2],n[1][1]),s=Math.atan2(-n[2][0],n[0][0])):(o=0,s=Math.atan2(n[0][2],n[2][2]));break;case"XZY":c=Math.asin(-gt(n[0][1])),Math.abs(n[0][1])<.9999999?(o=Math.atan2(n[2][1],n[1][1]),s=Math.atan2(n[0][2],n[0][0])):(o=Math.atan2(-n[1][2],n[2][2]),s=0);break}return r.set(o,s,c),r}class ze{loc;quat;scale;constructor(){this.loc=new Ae,this.quat=new Me,this.scale=new Ae(1,1,1)}set(e){return e instanceof ze?(this.loc.set(e.loc),this.quat.set(e.quat),this.scale.set(e.scale)):(e.getPosition(this.loc),e.getQuat(this.quat),e.getScale(this.scale)),this}write(e){e instanceof Oe?(e.object3D.position.set(this.loc.x,this.loc.y,this.loc.z),e.object3D.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.object3D.scale.set(this.scale.x,this.scale.y,this.scale.z)):(e.position.set(this.loc.x,this.loc.y,this.loc.z),e.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.scale.set(this.scale.x,this.scale.y,this.scale.z))}blend(e,t){return this.loc.lerp(this.loc,e.loc,t),this.quat.slerp(this.quat,e.quat,t),this.scale.lerp(this.scale,e.scale,t),this}clone(){const e=new ze;return e.set(this),e}}class Rt{transform;constructor(){this.transform=new ze}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.transform.loc.set(e)}setPositionNow(e){this.transform.loc.set(e)}setQuat(e){this.transform.quat.set(e)}setQuatNow(e){this.transform.quat.set(e)}setScale(e){this.transform.scale.set(e)}setScaleNow(e){this.transform.scale.set(e)}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class Wn{transform;constructor(){this.transform=new ze}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class fn{startTransform;transform;endTransform;currentTime;duration;constructor(){this.startTransform=new ze,this.transform=new ze,this.endTransform=new ze,this.currentTime=0,this.duration=1}init(e,t){this.startTransform.set(e),this.transform.set(e),this.endTransform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.startTransform.set(this.transform),this.endTransform.loc.set(e),this.currentTime=0}setPositionNow(e){this.setPosition(e),this.currentTime=1}setQuat(e){this.startTransform.set(this.transform),this.endTransform.quat.set(e),this.currentTime=0}setQuatNow(e){this.setQuat(e),this.currentTime=1}setScale(e){this.startTransform.set(this.transform),this.endTransform.scale.set(e),this.currentTime=0}setScaleNow(e){this.setScale(e),this.currentTime=1}setLinearVelocity(e){}getLinearVelocity(e){e||(e=new Ae);const t=this.endTransform.loc.x-this.startTransform.loc.x,n=this.endTransform.loc.y-this.startTransform.loc.y,r=this.endTransform.loc.z-this.startTransform.loc.z;e.set(t,n,r);const o=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*o*o+6*o)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||(e=new Ae),Qn(this.startTransform.quat,"ZXY",_t),Qn(this.endTransform.quat,"ZXY",Dt),e.set(Dt.x-_t.x,Dt.y-_t.y,Dt.z-_t.z);const t=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*t*t+6*t)/this.duration),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}smoothstep(e){return e*e*(3-2*e)}update(e){this.currentTime+=e,this.currentTime>this.duration&&(this.currentTime=this.duration);const t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}}const ot=new Ae,yt=new Ae,ft=new Me,Lt=new ze,_t=new Ae,Dt=new Ae,Qr={up:new Ae(0,1,0)};class Yn extends Rt{up;target;constructor(e){super();const t={...Qr,...e};this.target=t.target,this.up=t.up}setTarget(e){this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Oe.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),this.transform.quat.set(ft)}}const kr={up:new Ae(0,1,0)};class Jn extends fn{up;target;constructor(e){super();const t={...kr,...e};this.target=t.target,this.up=t.up}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Oe.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),this.transform.quat.set(ft)}}const Xn={lookFrom:{x:0,y:5,z:-10},smoothness:.9};class Zn extends Wn{target;lookFrom;up;smoothness;constructor(e){super();const t={...Xn,...e};this.target=t.target,this.lookFrom=new Ae(t.lookFrom),this.target.upVector?this.up=this.target.upVector:this.up=Oe.defaultUpVector,this.smoothness=t.smoothness}init(e,t){super.init(e,t)}update(e){super.update(e),ot.set(this.transform.loc),this.target.getPosition(yt),At(ot,yt,this.up,ft),ft.mul(0,1,0,0),Lt.quat.set(ft),ot.set(this.lookFrom),ot.apply(this.target.getQuat()),ot.add(this.target.getPosition()),Lt.loc.set(ot),this.transform.loc.lerp(this.transform.loc,Lt.loc,1-this.smoothness),this.transform.quat.slerp(this.transform.quat,Lt.quat,1-this.smoothness)}}const $n={rigidBody:"dynamic",collider:"solid",meshCollider:"convex_hull",mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1};function ei(i){return typeof i=="string"}function pn(i){return i.isMesh===!0}function Sr(i){return i.type==="RoundedBoxGeometry"}function xr(i){return i.type==="BoxGeometry"}function Lr(i){return i.type==="SphereGeometry"}function _r(i){return i.type==="IcosahedronGeometry"}function Dr(i){return i.type==="CylinderGeometry"}function Nr(i){return i.type==="CapsuleGeometry"}function Fr(i){return i.isBone===!0}function Or(i){return i.isPerspectiveCamera===!0}let je;const it=new Map;class vt{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!vt.RAPIER){const e=await import("@dimforge/rapier3d-compat");await e.init(),vt.RAPIER=e,je=e,this.isInitialized=!0}}createWorld(e){let t=.016666666666666666;this.isRapierWorldOptions(e)&&(t=e.timestep);const n=new je.World(e.gravity);return new gn(n,t)}isRapierWorldOptions(e){return"timestep"in e}}class gn{world;timestep;collisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new je.EventQueue(!0),this.world.integrationParameters.dt=this.timestep}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){const t=Math.ceil(e/this.timestep);for(let n=0;n<t;n++)this.world.step(this.collisionEventQueue)}getCollisions(){const e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{const o=it.get(t),s=it.get(n);o&&s&&e.push({objectA:o,partOfA:t,objectB:s,partOfB:n,started:r})}),e}}class kn{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...$n,...e},this.transform=new ze,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case"dynamic":e=je.RigidBodyDesc.dynamic();break;case"kinematic":e=je.RigidBodyDesc.kinematicPositionBased();break;case"fixed":e=je.RigidBodyDesc.fixed();break}return e.setTranslation(this.transform.loc.x,this.transform.loc.y,this.transform.loc.z),e.setRotation({x:this.transform.quat.x,y:this.transform.quat.y,z:this.transform.quat.z,w:this.transform.quat.w}),e}configColliderDescs(){if(!this.objectA3)return;const e=this.completeOptions,t=[];this.objectA3.object3D.traverse(r=>{if(pn(r)){const o=Gr(r.geometry),s=e.membership<<16|e.filter;if(o)o.colliderDesc.setCollisionGroups(s),e.collisionDetection&&o.colliderDesc.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(o.colliderDesc),o.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(o.volume);else{let c,A;switch(e.meshCollider){case"tri_mesh":c=Mr(r),A=Sn(r.geometry);break;case"convex_hull":c=Pr(r),A=Sn(r.geometry);break}c&&(c.setCollisionGroups(s),e.collisionDetection&&c.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(c),t.push(A))}}});let n=t.reduce((r,o)=>r+o,0);for(let r=0;r<this.colliderDescs.length;r++)this.colliderDescs[r].setRestitution(e.restitution),this.colliderDescs[r].setFriction(e.friction),this.colliderDescs[r].setMass(e.mass*(t[r]/n))}init(e,t){this.transform.set(e),this.objectA3=t,this.colliderDescs=[],this.colliders=[],this.bodyDesc=this.makeBodyDesc(),this.configColliderDescs(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat)}addOneselfToPhysics(e){this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.colliderDescs.forEach(t=>{const n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&it.set(n.handle,this.objectA3)}),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0))}removeOneselfFromPhysics(e){this.colliders.forEach(t=>{e.world.removeCollider(t,!0),it.delete(t.handle)}),this.colliders.length=0,this.body&&(e.world.removeRigidBody(this.body),this.body=void 0)}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e)}setQuat(e){}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}update(e){if(this.body){const t=this.body.translation();this.transform.loc.set(t.x,t.y,t.z);const n=this.body.rotation();this.transform.quat.set(n.x,n.y,n.z,n.w)}}}function Mr(i){let e=null;if(pn(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;let o=n.index?n.index.array:null;if(o)o instanceof Uint32Array||(o=new Uint32Array(o));else{const s=n.attributes.position.count;o=new Uint32Array(s);for(let c=0;c<s;c++)o[c]=c}r instanceof Float32Array&&(e=je.ColliderDesc.trimesh(r,o))}return e}function Pr(i){let e=null;if(pn(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;r instanceof Float32Array&&(e=je.ColliderDesc.convexHull(r))}return e}function Sn(i){const e=i.attributes.position;if(!e)throw new Error("position attribute not found");const t=i.index,n=e.array;let r=0;const o=new oe.Vector3,s=new oe.Vector3,c=new oe.Vector3;if(t){const A=t.array;for(let a=0;a<A.length;a+=3){const d=A[a]*3,u=A[a+1]*3,m=A[a+2]*3;o.set(n[d],n[d+1],n[d+2]),s.set(n[u],n[u+1],n[u+2]),c.set(n[m],n[m+1],n[m+2]),r+=o.dot(s.clone().cross(c))}}else for(let A=0;A<n.length;A+=9)o.set(n[A],n[A+1],n[A+2]),s.set(n[A+3],n[A+4],n[A+5]),c.set(n[A+6],n[A+7],n[A+8]),r+=o.dot(s.clone().cross(c));return Math.abs(r)/6}function Gr(i){if(Sr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5,o=.1;return{colliderDesc:je.ColliderDesc.roundCuboid(t-o,n-o,r-o,o),volume:2*t*2*n*2*r}}else if(xr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5;return{colliderDesc:je.ColliderDesc.cuboid(t,n,r),volume:2*t*2*n*2*r}}else if(Lr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(_r(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Dr(i)){const e=i.parameters,t=typeof e?.radiusBottom=="number"?e.radiusBottom:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.cylinder(n/2,t),volume:Math.PI*t*t*n}}else if(Nr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.capsule(n/2,t),volume:4/3*Math.PI*t*t*t+Math.PI*t*t*n}}return null}const on=new vt;async function Ur(){await on.init()}const _={v0:new Ae,v1:new Ae,v2:new Ae,v3:new Ae,v4:new Ae,q0:new Me,q1:new Me,q2:new Me,q3:new Me,q4:new Me,t0:new ze,t1:new ze,t2:new ze,t3:new ze,t4:new ze};function jr(i){return new Promise(e=>{setTimeout(()=>{e()},i)})}async function ti(i){const t=await(await fetch(i)).arrayBuffer(),n=await new Promise((r,o)=>{Kn.unzip(new Uint8Array(t),(s,c)=>{s?o(s):r(c)})});return{zipUrl:i,unzipped:n}}function Nt(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e])return Kn.strFromU8(i.unzipped[e]);throw new Error(`readStringFromUnzippedA3(): no file at ${e}`)}function sn(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e]){const t=qr(e);return new Blob([new Uint8Array(i.unzipped[e])],{type:t})}else throw new Error(`readBlobFromUnzippedA3(): no file at ${e}`)}const Hr={"image/png":/\.png$/i,"image/jpeg":/\.(jpg|jpeg)$/i,"image/gif":/\.gif$/i,"model/vrml":/\.wrl$/i,"application/xml":/\.xml$/i,"application/octet-stream":/\.bvh/i,"audio/x-wav":/\.wav/i,"audio/mpeg":/\.mp3/i,"audio/ogg":/\.ogg/i,"text/plain":/\.(txt|text)$/i,"model/gltf+json":/\.gltf$/i,"model/gltf-binary":/\.glb$/i};function qr(i){for(const[e,t]of Object.entries(Hr))if(t.test(i))return e;return"application/octet-stream"}function Ot(i,e){if(!e)return i;const t={...i};for(const n in e)typeof i[n]=="object"&&typeof e[n]=="object"?t[n]=Ot(i[n],e[n]):t[n]=e[n];return t}const ni={offset:.01,auto:!0,height:1.5,radius:.3};class ii{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;constructor(e={}){this.completeOptions={...ni,...e},this.transform=new ze,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Me}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);o.remove(t.object3D),s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.colliderDesc.setRotation({x:e.quat.x,y:e.quat.y,z:e.quat.z,w:e.quat.w})}addOneselfToPhysics(e){this.controller=e.world.createCharacterController(this.completeOptions.offset),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&it.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!1),it.delete(this.collider.handle),this.collider=void 0)}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.collider&&this.collider.setTranslation(this.tmpV1),this.transform.loc.set(e),this.nextLocation.set(this.tmpV1)}setQuat(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){return this.controller?this.controller.computedGrounded():!1}update(e){if(!this.controller||!this.collider)return;this.transform.quat.set(this.collider.rotation()),this.tmpV1.set(this.collider.translation()),this.tmpV2.set(this.nextLocation),this.tmpV2.sub(this.tmpV1),this.controller.computeColliderMovement(this.collider,this.tmpV2);const t=this.controller.computedMovement();this.tmpV1.add(t),this.collider.setTranslation(this.tmpV1),this.tmpV1.sub(this.capsuleCenter),this.transform.loc.set(this.tmpV1),this.nextLocation.set(this.tmpV1)}}const ri={auto:!0,height:1.5,radius:.3};class oi{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...ri,...e},this.transform=new ze,this.capsuleCenter=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Me}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.bodyDesc=je.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius)}addOneselfToPhysics(e){this.physicsWorld=e,this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.body.setEnabledRotations(!1,!1,!1,!0),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0)),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc,this.body)),this.collider&&this.objectA3&&it.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!0),it.delete(this.collider.handle),this.collider=void 0),this.body&&(e.world.removeRigidBody(this.body),this.body=void 0),this.physicsWorld=void 0}setPosition(e){}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.body?this.body.setTranslation(this.tmpV1,!0):this.bodyDesc?.setTranslation(this.tmpV1.x,this.tmpV1.y,this.tmpV1.z),this.transform.loc.set(e)}setQuat(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}isGrounded(){if(this.body&&this.physicsWorld){const e=this.body.translation(),t=new je.Ray(e,{x:0,y:-1,z:0}),n=1.1*(this.completeOptions.height+this.completeOptions.radius);return this.physicsWorld.world.castRay(t,n,!0,void 0,void 0,this.collider)!==null}else return this.transform.loc.y<=0}update(e){if(!this.body)return;const t=new Ae(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}}const zr=new oe.SphereGeometry,Vr=new oe.MeshStandardMaterial({color:16711680});let Kr=new oe.Mesh(zr,Vr);class Oe{static defaultRotationOrder="ZXY";static defaultUpVector=new Ae(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;constructor(e){this.transformer=this.initTransformer(e),this.object3D=new oe.Object3D;const t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(n=>{n.userData.a3js={objectA3:this}})}initObject(e){return Kr.clone()}initTransformer(e){return new Rt}setTransformer(e){_.t0.set(this.transformer.transform),e.init(_.t0,this),this.transformer=e}getTransformer(){return this.transformer}setTransformMode(e,t){e==="Default"?this.setTransformer(new Rt):e==="Smooth"?this.setTransformer(new fn):e==="Follow"?this.setTransformer(new Zn(t)):e==="Billboard"?this.setTransformer(new Yn(t)):e==="SmoothBillboard"?this.setTransformer(new Jn(t)):e==="SimplePhysics"?this.setTransformer(new kn(t)):e==="KinematicCharacter"?this.setTransformer(new ii(t)):e==="DynamicCharacter"&&this.setTransformer(new oi(t))}initSimplePhysics(e){const t={...$n,...e};this.setTransformer(new kn(t))}update(e){this.transformer.update(e),this.transformer.transform.write(this),this.children.forEach(t=>{t.update(e)})}add(e){if(e.scene){console.warn("ObjectA3.add(obj) is ignored.");return}if(e.parent){console.warn("ObjectA3.add(obj) is ignored.");return}this.children.push(e),e.parent=this,this.object3D.add(e.object3D)}remove(e){if(e.parent!==this){console.warn("ObjectA3.remove(obj) is ignored.");return}const t=this.children.indexOf(e);this.children.splice(t,1),e.parent=void 0,this.object3D.remove(e.object3D)}setSpeechBubble(e){this.balloon?this.balloon.message=e:this.balloon=new Wr(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setPosition(_.v0)}setPositionNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setPositionNow(_.v0)}getQuat(e){return e?(e.set(this.transformer.transform.quat),e):this.transformer.transform.quat.clone()}setQuat(e,t,n,r){typeof e=="number"?_.q0.set(e,t,n,r):_.q0.set(e),this.transformer.setQuat(_.q0)}setQuatNow(e,t,n,r){typeof e=="number"?_.q0.set(e,t,n,r):_.q0.set(e),this.transformer.setQuatNow(_.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setScale(_.v0)}setScaleNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setScaleNow(_.v0)}setRotation(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.setQuat(_.q1)}setRotationNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q0),this.setQuatNow(_.q0)}lookAt(e,t,n){typeof e=="number"?_.v1.set(e,t,n):e instanceof Oe?_.v1.set(e.transformer.transform.loc):_.v1.set(e);const r=this.upVector?this.upVector:Oe.defaultUpVector;At(this.transformer.transform.loc,_.v1,r,_.q1),this.setQuat(_.q1)}lookAtNow(e,t,n){typeof e=="number"?_.v1.set(e,t,n):e instanceof Oe?_.v1.set(e.transformer.transform.loc):_.v1.set(e);const r=this.upVector?this.upVector:Oe.defaultUpVector;At(this.transformer.transform.loc,_.v1,r,_.q1),this.setQuatNow(_.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new Ae(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new Ae(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new Ae(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){_.v1.set(this.transformer.transform.loc),typeof e=="number"?_.v1.add(e,t,n):_.v1.add(e),this.setPosition(_.v1)}translateNow(e,t,n){_.v1.set(this.transformer.transform.loc),typeof e=="number"?_.v1.add(e,t,n):_.v1.add(e),this.setPositionNow(_.v1)}mulQuat(e,t,n,r){_.q1.set(this.transformer.transform.quat),typeof e=="number"?_.q1.mul(e,t,n,r):_.q1.mul(e),this.setQuat(_.q1)}mulQuatNow(e,t,n,r){_.q1.set(this.transformer.transform.quat),typeof e=="number"?_.q1.mul(e,t,n,r):_.q1.mul(e),this.setQuatNow(_.q1)}mulRotation(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.getQuat(_.q0),_.q0.mul(_.q1),this.setQuat(_.q0)}mulRotationNow(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),_.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Oe.defaultRotationOrder;ht(_.v0,r,_.q1),this.getQuat(_.q0),_.q0.mul(_.q1),this.setQuatNow(_.q0)}scaleBy(e,t,n){this.getScale(_.v0),typeof e=="number"?_.v0.set(_.v0.x*e,_.v0.y*t,_.v0.z*n):_.v0.set(_.v0.x*e.x,_.v0.y*e.y,_.v0.z*e.z),this.setScale(_.v0)}mulScaleNow(e,t,n){this.getScale(_.v0),typeof e=="number"?_.v0.set(_.v0.x*e,_.v0.y*t,_.v0.z*n):_.v0.set(_.v0.x*e.x,_.v0.y*e.y,_.v0.z*e.z),this.setScaleNow(_.v0)}moveForward(e){this.getUnitVecZ(_.v0),_.v0.scale(e),this.translate(_.v0)}moveForwardNow(e){this.getUnitVecZ(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveBackward(e){this.getUnitVecZ(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveBackwardNow(e){this.getUnitVecZ(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}moveRight(e){this.getUnitVecX(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveRightNow(e){this.getUnitVecX(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}moveLeft(e){this.getUnitVecX(_.v0),_.v0.scale(e),this.translate(_.v0)}moveLeftNow(e){this.getUnitVecX(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveUp(e){this.getUnitVecY(_.v0),_.v0.scale(e),this.translate(_.v0)}moveUpNow(e){this.getUnitVecY(_.v0),_.v0.scale(e),this.translateNow(_.v0)}moveDown(e){this.getUnitVecY(_.v0),_.v0.scale(-e),this.translate(_.v0)}moveDownNow(e){this.getUnitVecY(_.v0),_.v0.scale(-e),this.translateNow(_.v0)}turnUp(e){this.mulRotation(-e,0,0)}turnUpNow(e){this.mulRotationNow(-e,0,0)}turnDown(e){this.mulRotation(e,0,0)}turnDownNow(e){this.mulRotationNow(e,0,0)}turnRight(e){this.mulRotation(0,-e,0)}turnRightNow(e){this.mulRotationNow(0,-e,0)}turnLeft(e){this.mulRotation(0,e,0)}turnLeftNow(e){this.mulRotationNow(0,e,0)}rollRight(e){this.mulRotation(0,0,e)}rollRightNow(e){this.mulRotationNow(0,0,e)}rollLeft(e){this.mulRotation(0,0,-e)}rollLeftNow(e){this.mulRotationNow(0,0,-e)}setLinearVelocity(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setLinearVelocity(_.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.setAngularVelocity(_.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.addForce(_.v0)}addForceAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")_.v0.set(e,t,n),_.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else _.v0.set(e),_.v1.set(t);this.transformer.addForceAtPoint(_.v0,_.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.addTorque(_.v0)}applyImpulse(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.applyImpulse(_.v0)}applyImpulseAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")_.v0.set(e,t,n),_.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else _.v0.set(e),_.v1.set(t);this.transformer.applyImpulseAtPoint(_.v0,_.v1)}applyTorqueImpulse(e,t,n){typeof e=="number"?_.v0.set(e,t,n):_.v0.set(e),this.transformer.applyTorqueImpulse(_.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}}class Wr{message;dir;offsetTop;offsetRight;offsetLeft;offsetBottom;constructor(e){this.message=e,this.dir="RIGHT",this.offsetTop={x:0,y:2},this.offsetRight={x:1,y:1},this.offsetLeft={x:-1,y:1},this.offsetBottom={x:0,y:0}}}class mn{shape;motion;constructor(e,t){this.shape=e,this.motion=t}enable(e,t){this.motion.playCount=0,this.motion.time=0,e.add(this.shape.root)}disable(e,t){e.remove(this.shape.root)}}class bt extends Oe{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e)}syncInit(e,t,n={}){this.actions=t,this.stateAction=this.actions[e],this.currentAction=this.stateAction,this.object3D.clear(),this.morphs=n,this.stateAction?.enable(this.object3D,this.scene)}setActions(e){this.actions=e}getAction(e){return this.actions[e]}addAction(e,t){this.actions[e]=t}removeAction(e){const t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.stateAction=t)}setEmote(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.emoteAction=t)}setMorphsOverwrite(e){this.overwriteMorphs=e}setMorph(e,t){if(e in this.morphs){const{array:n,idx:r}=this.morphs[e];n[r]=t}}getMorphNames(){return Object.keys(this.morphs)}pose={};update(e){super.update(e);let t;if(this.emoteAction&&this.emoteAction.motion.playCount<=0?(t=this.emoteAction.motion.update(e),this.emoteAction.motion.playCount>0&&(this.emoteAction.disable(this.object3D,this.scene),this.emoteAction=void 0,this.stateAction&&(this.stateAction.enable(this.object3D,this.scene),this.currentAction=this.stateAction))):this.stateAction&&(t=this.stateAction.motion.update(e)),t&&this.currentAction&&this.currentAction.shape.bones)for(const[n,r]of Object.entries(t)){const o=this.currentAction.shape.bones[n];if(o&&(r.loc&&o.position.set(r.loc.x,r.loc.y,r.loc.z),r.quat&&o.quaternion.set(r.quat.x,r.quat.y,r.quat.z,r.quat.w),r.scale&&o.scale.set(r.scale.x,r.scale.y,r.scale.z)),!this.overwriteMorphs&&r.morphs){for(const s of r.morphs)for(const c of Object.keys(this.morphs))if(c.startsWith(s.name)){const{array:A}=this.morphs[c];for(let a=0;a<A.length;a++)A[a]=s.vals[a];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update()}}class xn{name;playCount;time;finishListener;constructor(){this.name="dummy",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){return{}}}var Re=(i,e)=>()=>(e||(e={exports:{}},i(e.exports,e)),e.exports),si=Re(i=>{Object.defineProperty(i,"__esModule",{value:!0}),i.VERSION=void 0,i.VERSION="9.0.1"}),Ne=Re((i,e)=>{var t=i&&i.__spreadArray||function(O,X){for(var z=0,re=X.length,fe=O.length;z<re;z++,fe++)O[fe]=X[z];return O};Object.defineProperty(i,"__esModule",{value:!0}),i.toFastProperties=i.timer=i.peek=i.isES2015MapSupported=i.PRINT_WARNING=i.PRINT_ERROR=i.packArray=i.IDENTITY=i.NOOP=i.merge=i.groupBy=i.defaults=i.assignNoOverwrite=i.assign=i.zipObject=i.sortBy=i.indexOf=i.some=i.difference=i.every=i.isObject=i.isRegExp=i.isArray=i.partial=i.uniq=i.compact=i.reduce=i.findAll=i.find=i.cloneObj=i.cloneArr=i.contains=i.has=i.pick=i.reject=i.filter=i.dropRight=i.drop=i.isFunction=i.isUndefined=i.isString=i.forEach=i.last=i.first=i.flatten=i.map=i.mapValues=i.values=i.keys=i.isEmpty=void 0;function n(O){return O&&O.length===0}i.isEmpty=n;function r(O){return O==null?[]:Object.keys(O)}i.keys=r;function o(O){for(var X=[],z=Object.keys(O),re=0;re<z.length;re++)X.push(O[z[re]]);return X}i.values=o;function s(O,X){for(var z=[],re=r(O),fe=0;fe<re.length;fe++){var Qe=re[fe];z.push(X.call(null,O[Qe],Qe))}return z}i.mapValues=s;function c(O,X){for(var z=[],re=0;re<O.length;re++)z.push(X.call(null,O[re],re));return z}i.map=c;function A(O){for(var X=[],z=0;z<O.length;z++){var re=O[z];Array.isArray(re)?X=X.concat(A(re)):X.push(re)}return X}i.flatten=A;function a(O){return n(O)?void 0:O[0]}i.first=a;function d(O){var X=O&&O.length;return X?O[X-1]:void 0}i.last=d;function u(O,X){if(Array.isArray(O))for(var z=0;z<O.length;z++)X.call(null,O[z],z);else if($(O))for(var re=r(O),z=0;z<re.length;z++){var fe=re[z],Qe=O[fe];X.call(null,Qe,fe)}else throw Error("non exhaustive match")}i.forEach=u;function m(O){return typeof O=="string"}i.isString=m;function p(O){return O===void 0}i.isUndefined=p;function I(O){return O instanceof Function}i.isFunction=I;function g(O,X){return X===void 0&&(X=1),O.slice(X,O.length)}i.drop=g;function l(O,X){return X===void 0&&(X=1),O.slice(0,O.length-X)}i.dropRight=l;function h(O,X){var z=[];if(Array.isArray(O))for(var re=0;re<O.length;re++){var fe=O[re];X.call(null,fe)&&z.push(fe)}return z}i.filter=h;function f(O,X){return h(O,function(z){return!X(z)})}i.reject=f;function C(O,X){for(var z=Object.keys(O),re={},fe=0;fe<z.length;fe++){var Qe=z[fe],ye=O[Qe];X(ye)&&(re[Qe]=ye)}return re}i.pick=C;function b(O,X){return $(O)?O.hasOwnProperty(X):!1}i.has=b;function y(O,X){return q(O,function(z){return z===X})!==void 0}i.contains=y;function R(O){for(var X=[],z=0;z<O.length;z++)X.push(O[z]);return X}i.cloneArr=R;function x(O){var X={};for(var z in O)Object.prototype.hasOwnProperty.call(O,z)&&(X[z]=O[z]);return X}i.cloneObj=x;function q(O,X){for(var z=0;z<O.length;z++){var re=O[z];if(X.call(null,re))return re}}i.find=q;function v(O,X){for(var z=[],re=0;re<O.length;re++){var fe=O[re];X.call(null,fe)&&z.push(fe)}return z}i.findAll=v;function G(O,X,z){for(var re=Array.isArray(O),fe=re?O:o(O),Qe=re?[]:r(O),ye=z,le=0;le<fe.length;le++)ye=X.call(null,ye,fe[le],re?le:Qe[le]);return ye}i.reduce=G;function D(O){return f(O,function(X){return X==null})}i.compact=D;function Q(O,X){X===void 0&&(X=function(re){return re});var z=[];return G(O,function(re,fe){var Qe=X(fe);return y(z,Qe)?re:(z.push(Qe),re.concat(fe))},[])}i.uniq=Q;function F(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];var re=[null],fe=re.concat(X);return Function.bind.apply(O,fe)}i.partial=F;function L(O){return Array.isArray(O)}i.isArray=L;function J(O){return O instanceof RegExp}i.isRegExp=J;function $(O){return O instanceof Object}i.isObject=$;function j(O,X){for(var z=0;z<O.length;z++)if(!X(O[z],z))return!1;return!0}i.every=j;function ee(O,X){return f(O,function(z){return y(X,z)})}i.difference=ee;function ne(O,X){for(var z=0;z<O.length;z++)if(X(O[z]))return!0;return!1}i.some=ne;function ue(O,X){for(var z=0;z<O.length;z++)if(O[z]===X)return z;return-1}i.indexOf=ue;function ie(O,X){var z=R(O);return z.sort(function(re,fe){return X(re)-X(fe)}),z}i.sortBy=ie;function Z(O,X){if(O.length!==X.length)throw Error("can't zipObject with different number of keys and values!");for(var z={},re=0;re<O.length;re++)z[O[re]]=X[re];return z}i.zipObject=Z;function se(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];for(var re=0;re<X.length;re++)for(var fe=X[re],Qe=r(fe),ye=0;ye<Qe.length;ye++){var le=Qe[ye];O[le]=fe[le]}return O}i.assign=se;function de(O){for(var X=[],z=1;z<arguments.length;z++)X[z-1]=arguments[z];for(var re=0;re<X.length;re++)for(var fe=X[re],Qe=r(fe),ye=0;ye<Qe.length;ye++){var le=Qe[ye];b(O,le)||(O[le]=fe[le])}return O}i.assignNoOverwrite=de;function P(){for(var O=[],X=0;X<arguments.length;X++)O[X]=arguments[X];return de.apply(void 0,t([{}],O))}i.defaults=P;function H(O,X){var z={};return u(O,function(re){var fe=X(re),Qe=z[fe];Qe?Qe.push(re):z[fe]=[re]}),z}i.groupBy=H;function Y(O,X){for(var z=x(O),re=r(X),fe=0;fe<re.length;fe++){var Qe=re[fe],ye=X[Qe];z[Qe]=ye}return z}i.merge=Y;function V(){}i.NOOP=V;function K(O){return O}i.IDENTITY=K;function ce(O){for(var X=[],z=0;z<O.length;z++){var re=O[z];X.push(re!==void 0?re:void 0)}return X}i.packArray=ce;function Be(O){console&&console.error&&console.error("Error: "+O)}i.PRINT_ERROR=Be;function Te(O){console&&console.warn&&console.warn("Warning: "+O)}i.PRINT_WARNING=Te;function De(){return typeof Map=="function"}i.isES2015MapSupported=De;function Ve(O){return O[O.length-1]}i.peek=Ve;function Je(O){var X=new Date().getTime(),z=O(),re=new Date().getTime(),fe=re-X;return{time:fe,value:z}}i.timer=Je;function qe(O){function X(){}X.prototype=O;var z=new X;function re(){return typeof z.bar}return re(),re(),O}i.toFastProperties=qe}),En=Re((i,e)=>{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:i,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(l){this.idx=l.idx,this.input=l.input,this.groupIdx=l.groupIdx},t.prototype.pattern=function(l){this.idx=0,this.input=l,this.groupIdx=0,this.consumeChar("/");var h=this.disjunction();this.consumeChar("/");for(var f={type:"Flags",loc:{begin:this.idx,end:l.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":A(f,"global");break;case"i":A(f,"ignoreCase");break;case"m":A(f,"multiLine");break;case"u":A(f,"unicode");break;case"y":A(f,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:f,value:h,loc:this.loc(0)}},t.prototype.disjunction=function(){var l=[],h=this.idx;for(l.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),l.push(this.alternative());return{type:"Disjunction",value:l,loc:this.loc(h)}},t.prototype.alternative=function(){for(var l=[],h=this.idx;this.isTerm();)l.push(this.term());return{type:"Alternative",value:l,loc:this.loc(h)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var l=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(l)};case"$":return{type:"EndAnchor",loc:this.loc(l)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(l)};case"B":return{type:"NonWordBoundary",loc:this.loc(l)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var h;switch(this.popChar()){case"=":h="Lookahead";break;case"!":h="NegativeLookahead";break}a(h);var f=this.disjunction();return this.consumeChar(")"),{type:h,value:f,loc:this.loc(l)}}d()},t.prototype.quantifier=function(l){var h,f=this.idx;switch(this.popChar()){case"*":h={atLeast:0,atMost:1/0};break;case"+":h={atLeast:1,atMost:1/0};break;case"?":h={atLeast:0,atMost:1};break;case"{":var C=this.integerIncludingZero();switch(this.popChar()){case"}":h={atLeast:C,atMost:C};break;case",":var b;this.isDigit()?(b=this.integerIncludingZero(),h={atLeast:C,atMost:b}):h={atLeast:C,atMost:1/0},this.consumeChar("}");break}if(l===!0&&h===void 0)return;a(h);break}if(!(l===!0&&h===void 0))return a(h),this.peekChar(0)==="?"?(this.consumeChar("?"),h.greedy=!1):h.greedy=!0,h.type="Quantifier",h.loc=this.loc(f),h},t.prototype.atom=function(){var l,h=this.idx;switch(this.peekChar()){case".":l=this.dotAll();break;case"\\":l=this.atomEscape();break;case"[":l=this.characterClass();break;case"(":l=this.group();break}return l===void 0&&this.isPatternCharacter()&&(l=this.patternCharacter()),a(l),l.loc=this.loc(h),this.isQuantifier()&&(l.quantifier=this.quantifier()),l},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[s(`
|
|
2
2
|
`),s("\r"),s("\u2028"),s("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var l=this.positiveInteger();return{type:"GroupBackReference",value:l}},t.prototype.characterClassEscape=function(){var l,h=!1;switch(this.popChar()){case"d":l=m;break;case"D":l=m,h=!0;break;case"s":l=I;break;case"S":l=I,h=!0;break;case"w":l=p;break;case"W":l=p,h=!0;break}return a(l),{type:"Set",value:l,complement:h}},t.prototype.controlEscapeAtom=function(){var l;switch(this.popChar()){case"f":l=s("\f");break;case"n":l=s(`
|
|
3
3
|
`);break;case"r":l=s("\r");break;case"t":l=s(" ");break;case"v":l=s("\v");break}return a(l),{type:"Character",value:l}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var l=this.popChar();if(/[a-zA-Z]/.test(l)===!1)throw Error("Invalid ");var h=l.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:h}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:s("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var l=this.popChar();return{type:"Character",value:s(l)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`
|
|
4
4
|
`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var l=this.popChar();return{type:"Character",value:s(l)}}},t.prototype.characterClass=function(){var l=[],h=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),h=!0);this.isClassAtom();){var f=this.classAtom(),C=f.type==="Character";if(C&&this.isRangeDash()){this.consumeChar("-");var b=this.classAtom(),y=b.type==="Character";if(y){if(b.value<f.value)throw Error("Range out of order in character class");l.push({from:f.value,to:b.value})}else c(f.value,l),l.push(s("-")),c(b.value,l)}else c(f.value,l)}return this.consumeChar("]"),{type:"Set",complement:h,value:l}},t.prototype.classAtom=function(){switch(this.peekChar()){case"]":case`
|
|
@@ -139,7 +139,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
|
|
|
139
139
|
Please avoid using it as it will be completely removed in the future`)}i.clearCache=u;var m=uo();Object.defineProperty(i,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return m.createSyntaxDiagramsCode}});var p=(function(){function I(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.
|
|
140
140
|
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return I})();i.Parser=p});const wt=ho();class fo extends E.Loader{backgroundTexture;fog;constructor(e){super(e)}load(e,t,n,r){this.backgroundTexture=void 0,this.fog=void 0;const o=this,s=o.path===""?E.LoaderUtils.extractUrlBase(e):o.path,c=new E.FileLoader(o.manager);c.setPath(o.path),c.setRequestHeader(o.requestHeader),c.setWithCredentials(o.withCredentials),c.load(e,function(A){try{t(o.parse(A,s))}catch(a){r?r(a):console.error(a),o.manager.itemError(e)}},n,r)}parse(e,t){const n={};function r(k){const w=o(),B=new po(w.tokens),S=new mo(w.tokenVocabulary),T=s(S.getBaseCstVisitorConstructor()),N=B.lex(k);S.input=N.tokens;const M=S.vrml();if(S.errors.length>0)throw console.error(S.errors),Error("THREE.VRMLLoader2: Parsing errors detected.");return T.visit(M)}function o(){const k=wt.createToken,w=k({name:"RouteIdentifier",pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*[\.][^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*/}),B=k({name:"Identifier",pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]([^\0-\x20\x22\x27\x23\x2b\x2c\x2e\x5b\x5d\x5c\x7b\x7d])*/,longer_alt:w}),S=["Anchor","Billboard","Collision","Group","Transform","Inline","LOD","Switch","AudioClip","DirectionalLight","PointLight","Script","Shape","Sound","SpotLight","WorldInfo","CylinderSensor","PlaneSensor","ProximitySensor","SphereSensor","TimeSensor","TouchSensor","VisibilitySensor","Box","Cone","Cylinder","ElevationGrid","Extrusion","IndexedFaceSet","IndexedLineSet","PointSet","Sphere","Color","Coordinate","Normal","TextureCoordinate","Appearance","FontStyle","ImageTexture","Material","MovieTexture","PixelTexture","TextureTransform","ColorInterpolator","CoordinateInterpolator","NormalInterpolator","OrientationInterpolator","PositionInterpolator","ScalarInterpolator","Background","Fog","NavigationInfo","Viewpoint","Text"],T=k({name:"Version",pattern:/#VRML.*/,longer_alt:B}),N=k({name:"NodeName",pattern:new RegExp(S.join("|")),longer_alt:B}),M=k({name:"DEF",pattern:/DEF/,longer_alt:B}),U=k({name:"USE",pattern:/USE/,longer_alt:B}),W=k({name:"ROUTE",pattern:/ROUTE/,longer_alt:B}),te=k({name:"TO",pattern:/TO/,longer_alt:B}),ae=k({name:"StringLiteral",pattern:/"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/}),me=k({name:"HexLiteral",pattern:/0[xX][0-9a-fA-F]+/}),xe=k({name:"NumberLiteral",pattern:/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/}),ke=k({name:"TrueLiteral",pattern:/TRUE/}),be=k({name:"FalseLiteral",pattern:/FALSE/}),we=k({name:"NullLiteral",pattern:/NULL/}),pe=k({name:"LSquare",pattern:/\[/}),ve=k({name:"RSquare",pattern:/]/}),Pe=k({name:"LCurly",pattern:/{/}),Fe=k({name:"RCurly",pattern:/}/}),Le=k({name:"Comment",pattern:/#.*/,group:wt.Lexer.SKIPPED}),Ke=[k({name:"WhiteSpace",pattern:/[ ,\s]/,group:wt.Lexer.SKIPPED}),N,M,U,W,te,ke,be,we,T,B,w,ae,me,xe,pe,ve,Pe,Fe,Le],We={};for(let _e=0,ge=Ke.length;_e<ge;_e++){const Ee=Ke[_e];We[Ee.name]=Ee}return{tokens:Ke,tokenVocabulary:We}}function s(k){class w extends k{constructor(){super(),this.validateVisitor()}vrml(T){const N={version:this.visit(T.version),nodes:[],routes:[]};for(let M=0,U=T.node.length;M<U;M++){const W=T.node[M];N.nodes.push(this.visit(W))}if(T.route)for(let M=0,U=T.route.length;M<U;M++){const W=T.route[M];N.routes.push(this.visit(W))}return N}version(T){return T.Version[0].image}node(T){const N={name:T.NodeName[0].image,fields:[]};if(T.field)for(let M=0,U=T.field.length;M<U;M++){const W=T.field[M];N.fields.push(this.visit(W))}return T.def&&(N.DEF=this.visit(T.def[0])),N}field(T){const N={name:T.Identifier[0].image,type:null,values:null};let M;return T.singleFieldValue&&(M=this.visit(T.singleFieldValue[0])),T.multiFieldValue&&(M=this.visit(T.multiFieldValue[0])),N.type=M.type,N.values=M.values,N}def(T){return(T.Identifier||T.NodeName)[0].image}use(T){return{USE:(T.Identifier||T.NodeName)[0].image}}singleFieldValue(T){return B(this,T)}multiFieldValue(T){return B(this,T)}route(T){return{FROM:T.RouteIdentifier[0].image,TO:T.RouteIdentifier[1].image}}}function B(S,T){const N={type:null,values:[]};if(T.node){N.type="node";for(let M=0,U=T.node.length;M<U;M++){const W=T.node[M];N.values.push(S.visit(W))}}if(T.use){N.type="use";for(let M=0,U=T.use.length;M<U;M++){const W=T.use[M];N.values.push(S.visit(W))}}if(T.StringLiteral){N.type="string";for(let M=0,U=T.StringLiteral.length;M<U;M++){const W=T.StringLiteral[M];N.values.push(W.image.replace(/'|"/g,""))}}if(T.NumberLiteral){N.type="number";for(let M=0,U=T.NumberLiteral.length;M<U;M++){const W=T.NumberLiteral[M];N.values.push(parseFloat(W.image))}}if(T.HexLiteral){N.type="hex";for(let M=0,U=T.HexLiteral.length;M<U;M++){const W=T.HexLiteral[M];N.values.push(W.image)}}if(T.TrueLiteral){N.type="boolean";for(let M=0,U=T.TrueLiteral.length;M<U;M++)T.TrueLiteral[M].image==="TRUE"&&N.values.push(!0)}if(T.FalseLiteral){N.type="boolean";for(let M=0,U=T.FalseLiteral.length;M<U;M++)T.FalseLiteral[M].image==="FALSE"&&N.values.push(!1)}return T.NullLiteral&&(N.type="null",T.NullLiteral.forEach(function(){N.values.push(null)})),N}return new w}function c(k){const w=k.nodes,B=new E.Scene;for(let S=0,T=w.length;S<T;S++){const N=w[S];A(N)}for(let S=0,T=w.length;S<T;S++){const N=w[S],M=a(N);M instanceof E.Object3D&&B.add(M),N.name==="WorldInfo"&&(B.userData.worldInfo=M)}return B}function A(k){k.DEF&&(n[k.DEF]=k);const w=k.fields;for(let B=0,S=w.length;B<S;B++){const T=w[B];if(T.type==="node"){const N=T.values;for(let M=0,U=N.length;M<U;M++)A(N[M])}}}function a(k){return k.USE?ie(k.USE):(k.build!==void 0||(k.build=d(k)),k.build)}function d(k){const w=k.name;let B;switch(w){case"Anchor":case"Group":case"Transform":case"Collision":B=u(k);break;case"Background":B=p(k);break;case"Shape":B=I(k);break;case"Appearance":B=g(k);break;case"Material":B=l(k);break;case"ImageTexture":B=b(k);break;case"PixelTexture":B=C(k);break;case"TextureTransform":B=y(k);break;case"IndexedFaceSet":B=Q(k);break;case"IndexedLineSet":B=F(k);break;case"PointSet":B=L(k);break;case"Box":B=J(k);break;case"Cone":B=$(k);break;case"Cylinder":B=j(k);break;case"Sphere":B=ee(k);break;case"ElevationGrid":B=ne(k);break;case"Extrusion":B=ue(k);break;case"Color":case"Coordinate":case"Normal":case"TextureCoordinate":B=R(k);break;case"WorldInfo":B=x(k);break;case"DirectionalLight":B=q(k);break;case"PointLight":B=v(k);break;case"SpotLight":B=G(k);break;case"Fog":B=D(k);break;case"Billboard":case"Inline":case"LOD":case"Switch":case"AudioClip":case"Script":case"Sound":case"CylinderSensor":case"PlaneSensor":case"ProximitySensor":case"SphereSensor":case"TimeSensor":case"TouchSensor":case"VisibilitySensor":case"Text":case"FontStyle":case"MovieTexture":case"ColorInterpolator":case"CoordinateInterpolator":case"NormalInterpolator":case"OrientationInterpolator":case"PositionInterpolator":case"ScalarInterpolator":case"NavigationInfo":case"Viewpoint":break;default:console.warn("THREE.VRMLLoader2: Unknown node:",w);break}return B!==void 0&&k.DEF!==void 0&&B.hasOwnProperty("name")===!0&&(B.name=k.DEF),B}function u(k){const w=new E.Group,B=k.fields;for(let S=0,T=B.length;S<T;S++){const N=B[S],M=N.name,U=N.values;switch(M){case"bboxCenter":break;case"bboxSize":break;case"center":break;case"children":Z(U,w);break;case"description":break;case"collide":break;case"parameter":break;case"rotation":const W=new E.Vector3(U[0],U[1],U[2]).normalize(),te=U[3];w.quaternion.setFromAxisAngle(W,te);break;case"scale":w.scale.set(U[0],U[1],U[2]);break;case"scaleOrientation":break;case"translation":w.position.set(U[0],U[1],U[2]);break;case"proxy":break;case"url":break;default:console.warn("THREE.VRMLLoader2: Unknown field:",M);break}}return w}const m=this;function p(k){const w=new E.Group;let B,S,T,N,M,U,W,te,ae,me;const xe=k.fields;for(let ke=0,be=xe.length;ke<be;ke++){const we=xe[ke],pe=we.name,ve=we.values;switch(pe){case"groundAngle":B=ve;break;case"groundColor":S=ve;break;case"backUrl":M=ve;break;case"bottomUrl":U=ve;break;case"frontUrl":W=ve;break;case"leftUrl":te=ve;break;case"rightUrl":ae=ve;break;case"topUrl":me=ve;break;case"skyAngle":T=ve;break;case"skyColor":N=ve;break;default:console.warn("THREE.VRMLLoader2: Unknown field:",pe);break}}if(M&&U&&W&&te&&ae&&me){const ke=new E.CubeTextureLoader(m.manager);m.backgroundTexture=ke.load([ae[0],te[0],me[0],U[0],W[0],M[0]])}else{if(N){const ke=[];for(let be=0;be<N.length;be+=3)ke.push([N[be],N[be+1],N[be+2]]);N=ke}if(S){const ke=[];for(let be=0;be<S.length;be+=3)ke.push([S[be],S[be+1],S[be+2]]);S=ke}this.backgroundTexture=new Io({skyColor:N,skyAngle:T,groundColor:S,groundAngle:B}).buildTexture()}return w}function I(k){const w=k.fields;let B=new E.MeshBasicMaterial({name:E.Loader.DEFAULT_MATERIAL_NAME,color:0}),S;for(let N=0,M=w.length;N<M;N++){const U=w[N],W=U.name,te=U.values;switch(W){case"appearance":te[0]!==null&&(B=a(te[0]));break;case"geometry":te[0]!==null&&(S=a(te[0]));break;default:console.warn("THREE.VRMLLoader2: Unknown field:",W);break}}let T;if(S&&S.attributes.position){const N=S._type;if(N==="points"){const M=new E.PointsMaterial({name:E.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:B.opacity,transparent:B.transparent});S.attributes.color!==void 0?M.vertexColors=!0:B.isMeshPhongMaterial&&M.color.copy(B.emissive),T=new E.Points(S,M)}else if(N==="line"){const M=new E.LineBasicMaterial({name:E.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:B.opacity,transparent:B.transparent});S.attributes.color!==void 0?M.vertexColors=!0:B.isMeshPhongMaterial&&M.color.copy(B.emissive),T=new E.LineSegments(S,M)}else S._solid!==void 0&&(B.side=S._solid?E.FrontSide:E.DoubleSide),S.attributes.color!==void 0&&(B.vertexColors=!0),T=new E.Mesh(S,B)}else T=new E.Object3D,T.visible=!1;return T}function g(k){let w=new E.MeshPhongMaterial,B;const S=k.fields;for(let T=0,N=S.length;T<N;T++){const M=S[T],U=M.name,W=M.values;switch(U){case"material":if(W[0]!==null){const ae=a(W[0]);ae.diffuseColor&&w.color.copy(ae.diffuseColor),ae.emissiveColor&&w.emissive.copy(ae.emissiveColor),ae.shininess&&(w.shininess=ae.shininess),ae.specularColor&&w.specular.copy(ae.specularColor),ae.transparency&&(w.opacity=1-ae.transparency),ae.transparency>0&&(w.transparent=!0)}else w=new E.MeshBasicMaterial({name:E.Loader.DEFAULT_MATERIAL_NAME,color:0});break;case"texture":const te=W[0];te!==null&&(te.name==="ImageTexture"||te.name==="PixelTexture"||te.USE)&&(w.map=a(te));break;case"textureTransform":W[0]!==null&&(B=a(W[0]));break;default:console.warn("THREE.VRMLLoader2: Unknown field:",U);break}}if(w.map){if(w.map.__type){switch(w.map.__type){case nt.INTENSITY_ALPHA:w.opacity=1;break;case nt.RGB:w.color.set(16777215);break;case nt.RGBA:w.color.set(16777215),w.opacity=1;break}delete w.map.__type}B&&(w.map.center.copy(B.center),w.map.rotation=B.rotation,w.map.repeat.copy(B.scale),w.map.offset.copy(B.translation))}return w.map&&w.map.fookHolder&&w.map.fookHolder.fooks.push(async T=>{const N=await bo(T.source.data);w.transparent=N,w.needsUpdate=N}),w}function l(k){const w={},B=k.fields;for(let S=0,T=B.length;S<T;S++){const N=B[S],M=N.name,U=N.values;switch(M){case"ambientIntensity":break;case"diffuseColor":w.diffuseColor=new E.Color().setRGB(U[0],U[1],U[2],E.SRGBColorSpace);break;case"emissiveColor":w.emissiveColor=new E.Color().setRGB(U[0],U[1],U[2],E.SRGBColorSpace);break;case"shininess":w.shininess=U[0];break;case"specularColor":w.specularColor=new E.Color().setRGB(U[0],U[1],U[2],E.SRGBColorSpace);break;case"transparency":w.transparency=U[0];break;default:console.warn("THREE.VRMLLoader2: Unknown field:",M);break}}return w}function h(k,w,B){let S;switch(w){case nt.INTENSITY:S=parseInt(k),B.r=S,B.g=S,B.b=S,B.a=1;break;case nt.INTENSITY_ALPHA:S=parseInt("0x"+k.substring(2,4)),B.r=S,B.g=S,B.b=S,B.a=parseInt("0x"+k.substring(4,6));break;case nt.RGB:B.r=parseInt("0x"+k.substring(2,4)),B.g=parseInt("0x"+k.substring(4,6)),B.b=parseInt("0x"+k.substring(6,8)),B.a=1;break;case nt.RGBA:B.r=parseInt("0x"+k.substring(2,4)),B.g=parseInt("0x"+k.substring(4,6)),B.b=parseInt("0x"+k.substring(6,8)),B.a=parseInt("0x"+k.substring(8,10));break}}function f(k){let w;switch(k){case 1:w=nt.INTENSITY;break;case 2:w=nt.INTENSITY_ALPHA;break;case 3:w=nt.RGB;break;case 4:w=nt.RGBA;break}return w}function C(k){let w,B=E.RepeatWrapping,S=E.RepeatWrapping;const T=k.fields;for(let N=0,M=T.length;N<M;N++){const U=T[N],W=U.name,te=U.values;switch(W){case"image":const ae=te[0],me=te[1],xe=te[2],ke=f(xe),be=new Uint8Array(4*ae*me),we={r:0,g:0,b:0,a:0};for(let pe=3,ve=0,Pe=te.length;pe<Pe;pe++,ve++){h(te[pe],ke,we);const Fe=ve*4;be[Fe+0]=we.r,be[Fe+1]=we.g,be[Fe+2]=we.b,be[Fe+3]=we.a}w=new E.DataTexture(be,ae,me),w.colorSpace=E.SRGBColorSpace,w.needsUpdate=!0,w.__type=ke;break;case"repeatS":te[0]===!1&&(B=E.ClampToEdgeWrapping);break;case"repeatT":te[0]===!1&&(S=E.ClampToEdgeWrapping);break;default:console.warn("THREE.VRMLLoader2: Unknown field:",W);break}}return w&&(w.wrapS=B,w.wrapT=S),w}function b(k){let w,B=E.RepeatWrapping,S=E.RepeatWrapping;const T=k.fields;for(let N=0,M=T.length;N<M;N++){const U=T[N],W=U.name,te=U.values;switch(W){case"url":const ae=te[0],me={fooks:[]},xe=ke=>{me.fooks&&me.fooks.map(be=>be(ke))};ae&&(w=ye.load(ae,xe)),w&&(w.fookHolder=me);break;case"repeatS":te[0]===!1&&(B=E.ClampToEdgeWrapping);break;case"repeatT":te[0]===!1&&(S=E.ClampToEdgeWrapping);break;default:console.warn("THREE.VRMLLoader2: Unknown field:",W);break}}return w&&(w.wrapS=B,w.wrapT=S,w.colorSpace=E.SRGBColorSpace),w}function y(k){const w={center:new E.Vector2,rotation:0,scale:new E.Vector2(1,1),translation:new E.Vector2},B=k.fields;for(let S=0,T=B.length;S<T;S++){const N=B[S],M=N.name,U=N.values;switch(M){case"center":w.center.set(U[0],U[1]);break;case"rotation":w.rotation=U[0];break;case"scale":w.scale.set(U[0],U[1]);break;case"translation":w.translation.set(U[0],U[1]);break;default:console.warn("THREE.VRMLLoader2: Unknown field:",M);break}}return w}function R(k){return k.fields[0]?k.fields[0].values:{}}function x(k){const w={},B=k.fields;for(let S=0,T=B.length;S<T;S++){const N=B[S],M=N.name,U=N.values;switch(M){case"title":w.title=U[0];break;case"info":w.info=U;break;default:console.warn("THREE.VRMLLoader2: Unknown field:",M);break}}return w}function q(k){let w=0;const B=new E.Color(1,1,1),S=new E.Vector3(0,0,-1);let T=1,N=!0;const M=k.fields;for(let ae=0,me=M.length;ae<me;ae++){const xe=M[ae],ke=xe.name,be=xe.values;switch(ke){case"ambientIntensity":w=be[0];break;case"color":B.set(be[0],be[1],be[2]);break;case"direction":S.set(be[0],be[1],be[2]);break;case"intensity":T=be[0];break;case"on":N=be[0];break;default:console.warn("ThreeMFLoader.VRMLLoader2: Unknown field:",ke);break}}T=N?T:0;const U=new E.Object3D,W=new E.DirectionalLight(B,T);S.normalize(),S.multiplyScalar(-10),W.position.copy(S),U.add(W);const te=new E.AmbientLight(B,T*w);return U.add(te),U}function v(k){let w=0;const B=new E.Vector3(1,0,0),S=new E.Color(1,1,1);let T=1;const N=new E.Vector3(0,0,0);let M=!0,U=100;const W=k.fields;for(let xe=0,ke=W.length;xe<ke;xe++){const be=W[xe],we=be.name,pe=be.values;switch(we){case"ambientIntensity":w=pe[0];break;case"attenuation":B.set(pe[0],pe[1],pe[2]);break;case"color":S.set(pe[0],pe[1],pe[2]);break;case"intensity":T=pe[0];break;case"location":N.set(pe[0],pe[1],pe[2]);break;case"on":M=pe[0];break;case"radius":U=pe[0];break;default:console.warn("ThreeMFLoader.VRMLLoader2: Unknown field:",we);break}}T=M?T:0;const te=new E.Object3D,ae=new E.PointLight(S,T,U);ae.position.copy(N),ae.decay=2,te.add(ae);const me=new E.AmbientLight(S,T*w);return te.add(me),te}function G(k){let w=0;const B=new E.Vector3(1,0,0);let S=1.570796;const T=new E.Color(1,1,1);let N=.785398;const M=new E.Vector3(0,0,-1);let U=1;const W=new E.Vector3(0,0,-1);let te=!0,ae=100;const me=k.fields;for(let pe=0,ve=me.length;pe<ve;pe++){const Pe=me[pe],Fe=Pe.name,Le=Pe.values;switch(Fe){case"ambientIntensity":w=Le[0];break;case"attenuation":B.set(Le[0],Le[1],Le[2]);break;case"beamWidth":S=Le[0];break;case"color":T.set(Le[0],Le[1],Le[2]);break;case"cutOffAngle":N=Le[0];break;case"direction":M.set(Le[0],Le[1],Le[2]);break;case"intensity":U=Le[0];break;case"location":W.set(Le[0],Le[1],Le[2]);break;case"on":te=Le[0];break;case"radius":ae=Le[0];break;default:console.warn("ThreeMFLoader.VRMLLoader2: Unknown field:",Fe);break}}U=te?U:0;const xe=new E.Object3D;S=S>N?N:S;const ke=1-S/N,be=new E.SpotLight(T,U,ae,N,ke);M.normalize(),be.position.copy(M),be.decay=0,xe.add(be);const we=new E.AmbientLight(T,U*w);return xe.add(we),xe.position.copy(W),xe}function D(k){const w=new E.Color(1,1,1);let B="LINEAR",S=0;const T=k.fields;for(let N=0,M=T.length;N<M;N++){const U=T[N],W=U.name,te=U.values;switch(W){case"color":w.set(te[0],te[1],te[2]);break;case"fogType":B=te[0];break;case"visibilityRange":S=te[0];break;case"set_bind":break;case"isBound":break;default:console.warn("ThreeMFLoader.VRMLLoader2: Unknown field:",W);break}}if(B==="LINEAR")m.fog=new E.Fog(w,0,S);else if(B==="EXPONENTIAL"){let N=.02;S!==0&&(N=2.146/S),m.fog=new E.FogExp2(w,N)}else console.warn("ThreeMFLoader.VRMLLoader2: Unknown fogType:",B);return new E.Object3D}function Q(k){let w,B,S,T,N=!0,M=!0,U=0,W,te,ae,me,xe=!0,ke=!0;const be=k.fields;for(let He=0,Ke=be.length;He<Ke;He++){const We=be[He],_e=We.name,ge=We.values;switch(_e){case"color":const Ee=ge[0];Ee!==null&&(w=a(Ee));break;case"coord":const he=ge[0];he!==null&&(B=a(he));break;case"normal":const Ie=ge[0];Ie!==null&&(S=a(Ie));break;case"texCoord":const Ce=ge[0];Ce!==null&&(T=a(Ce));break;case"ccw":N=ge[0];break;case"colorIndex":W=ge;break;case"colorPerVertex":xe=ge[0];break;case"convex":break;case"coordIndex":te=ge;break;case"creaseAngle":U=ge[0];break;case"normalIndex":ae=ge;break;case"normalPerVertex":ke=ge[0];break;case"solid":M=ge[0];break;case"texCoordIndex":me=ge;break;default:console.warn("THREE.VRMLLoader2: Unknown field:",_e);break}}if(te===void 0)return console.warn("THREE.VRMLLoader2: Missing coordIndex."),new E.BufferGeometry;const we=se(te,N);let pe,ve,Pe;if(w){if(xe===!0)if(W&&W.length>0){const He=se(W,N);pe=Ve(we,He,w,3)}else pe=O(we,new E.Float32BufferAttribute(w,3));else if(W&&W.length>0){const He=P(w,W),Ke=de(He,te);pe=Je(we,Ke)}else{const He=de(w,te);pe=Je(we,He)}Qe(pe)}if(S)if(ke===!0)if(ae&&ae.length>0){const He=se(ae,N);ve=Ve(we,He,S,3)}else ve=O(we,new E.Float32BufferAttribute(S,3));else if(ae&&ae.length>0){const He=P(S,ae),Ke=de(He,te);ve=Je(we,Ke)}else{const He=de(S,te);ve=Je(we,He)}else ve=re(we,B,U);if(T)if(me&&me.length>0){const He=se(me,N);Pe=Ve(we,He,T,2)}else Pe=O(we,new E.Float32BufferAttribute(T,2));const Fe=new E.BufferGeometry,Le=O(we,new E.Float32BufferAttribute(B,3));return Fe.setAttribute("position",Le),Fe.setAttribute("normal",ve),pe&&Fe.setAttribute("color",pe),Pe&&Fe.setAttribute("uv",Pe),Fe._solid=M,Fe._type="mesh",Fe}function F(k){let w,B,S,T,N=!0;const M=k.fields;for(let me=0,xe=M.length;me<xe;me++){const ke=M[me],be=ke.name,we=ke.values;switch(be){case"color":const pe=we[0];pe!==null&&(w=a(pe));break;case"coord":const ve=we[0];ve!==null&&(B=a(ve));break;case"colorIndex":S=we;break;case"colorPerVertex":N=we[0];break;case"coordIndex":T=we;break;default:console.warn("THREE.VRMLLoader2: Unknown field:",be);break}}let U;const W=H(T);if(w){if(N===!0)if(S.length>0){const me=H(S);U=Ve(W,me,w,3)}else U=O(W,new E.Float32BufferAttribute(w,3));else if(S.length>0){const me=P(w,S),xe=Y(me,T);U=qe(W,xe)}else{const me=Y(w,T);U=qe(W,me)}Qe(U)}const te=new E.BufferGeometry,ae=O(W,new E.Float32BufferAttribute(B,3));return te.setAttribute("position",ae),U&&te.setAttribute("color",U),te._type="line",te}function L(k){let w,B;const S=k.fields;for(let N=0,M=S.length;N<M;N++){const U=S[N],W=U.name,te=U.values;switch(W){case"color":const ae=te[0];ae!==null&&(w=a(ae));break;case"coord":const me=te[0];me!==null&&(B=a(me));break;default:console.warn("THREE.VRMLLoader2: Unknown field:",W);break}}const T=new E.BufferGeometry;if(T.setAttribute("position",new E.Float32BufferAttribute(B,3)),w){const N=new E.Float32BufferAttribute(w,3);Qe(N),T.setAttribute("color",N)}return T._type="points",T}function J(k){const w=new E.Vector3(2,2,2),B=k.fields;for(let T=0,N=B.length;T<N;T++){const M=B[T],U=M.name,W=M.values;U==="size"?(w.x=W[0],w.y=W[1],w.z=W[2]):console.warn("THREE.VRMLLoader2: Unknown field:",U)}return new E.BoxGeometry(w.x,w.y,w.z)}function $(k){let w=1,B=2,S=!1;const T=k.fields;for(let M=0,U=T.length;M<U;M++){const W=T[M],te=W.name,ae=W.values;switch(te){case"bottom":S=!ae[0];break;case"bottomRadius":w=ae[0];break;case"height":B=ae[0];break;case"side":break;default:console.warn("THREE.VRMLLoader2: Unknown field:",te);break}}return new E.ConeGeometry(w,B,16,1,S)}function j(k){let w=1,B=2;const S=k.fields;for(let N=0,M=S.length;N<M;N++){const U=S[N],W=U.name,te=U.values;switch(W){case"bottom":break;case"radius":w=te[0];break;case"height":B=te[0];break;case"side":break;case"top":break;default:console.warn("THREE.VRMLLoader2: Unknown field:",W);break}}return new E.CylinderGeometry(w,w,B,16,1)}function ee(k){let w=1;const B=k.fields;for(let T=0,N=B.length;T<N;T++){const M=B[T],U=M.name,W=M.values;U==="radius"?w=W[0]:console.warn("THREE.VRMLLoader2: Unknown field:",U)}return new E.SphereGeometry(w,16,16)}function ne(k){let w,B,S,T,N=!0,M=!0,U=!0,W=!0,te=0,ae=2,me=2,xe=1,ke=1;const be=k.fields;for(let ge=0,Ee=be.length;ge<Ee;ge++){const he=be[ge],Ie=he.name,Ce=he.values;switch(Ie){case"color":const Ue=Ce[0];Ue!==null&&(w=a(Ue));break;case"normal":const ct=Ce[0];ct!==null&&(B=a(ct));break;case"texCoord":const lt=Ce[0];lt!==null&&(S=a(lt));break;case"height":T=Ce;break;case"ccw":W=Ce[0];break;case"colorPerVertex":N=Ce[0];break;case"creaseAngle":te=Ce[0];break;case"normalPerVertex":M=Ce[0];break;case"solid":U=Ce[0];break;case"xDimension":ae=Ce[0];break;case"xSpacing":xe=Ce[0];break;case"zDimension":me=Ce[0];break;case"zSpacing":ke=Ce[0];break;default:console.warn("THREE.VRMLLoader2: Unknown field:",Ie);break}}const we=[],pe=[],ve=[],Pe=[];for(let ge=0;ge<me;ge++)for(let Ee=0;Ee<ae;Ee++){const he=ge*ae+Ee,Ie=xe*ge,Ce=T[he],Ue=ke*Ee;if(we.push(Ie,Ce,Ue),w&&N===!0){const ct=w[he*3+0],lt=w[he*3+1],qt=w[he*3+2];ve.push(ct,lt,qt)}if(B&&M===!0){const ct=B[he*3+0],lt=B[he*3+1],qt=B[he*3+2];pe.push(ct,lt,qt)}if(S){const ct=S[he*2+0],lt=S[he*2+1];Pe.push(ct,lt)}else Pe.push(ge/(ae-1),Ee/(me-1))}const Fe=[];for(let ge=0;ge<ae-1;ge++)for(let Ee=0;Ee<me-1;Ee++){const he=ge+Ee*ae,Ie=ge+(Ee+1)*ae,Ce=ge+1+(Ee+1)*ae,Ue=ge+1+Ee*ae;W===!0?(Fe.push(he,Ce,Ie),Fe.push(Ce,he,Ue)):(Fe.push(he,Ie,Ce),Fe.push(Ce,Ue,he))}const Le=O(Fe,new E.Float32BufferAttribute(we,3)),He=O(Fe,new E.Float32BufferAttribute(Pe,2));let Ke,We;if(w){if(N===!1){for(let ge=0;ge<ae-1;ge++)for(let Ee=0;Ee<me-1;Ee++){const he=ge+Ee*(ae-1),Ie=w[he*3+0],Ce=w[he*3+1],Ue=w[he*3+2];ve.push(Ie,Ce,Ue),ve.push(Ie,Ce,Ue),ve.push(Ie,Ce,Ue),ve.push(Ie,Ce,Ue),ve.push(Ie,Ce,Ue),ve.push(Ie,Ce,Ue)}Ke=new E.Float32BufferAttribute(ve,3)}else Ke=O(Fe,new E.Float32BufferAttribute(ve,3));Qe(Ke)}if(B)if(M===!1){for(let ge=0;ge<ae-1;ge++)for(let Ee=0;Ee<me-1;Ee++){const he=ge+Ee*(ae-1),Ie=B[he*3+0],Ce=B[he*3+1],Ue=B[he*3+2];pe.push(Ie,Ce,Ue),pe.push(Ie,Ce,Ue),pe.push(Ie,Ce,Ue),pe.push(Ie,Ce,Ue),pe.push(Ie,Ce,Ue),pe.push(Ie,Ce,Ue)}We=new E.Float32BufferAttribute(pe,3)}else We=O(Fe,new E.Float32BufferAttribute(pe,3));else We=re(Fe,we,te);const _e=new E.BufferGeometry;return _e.setAttribute("position",Le),_e.setAttribute("normal",We),_e.setAttribute("uv",He),Ke&&_e.setAttribute("color",Ke),_e._solid=U,_e._type="mesh",_e}function ue(k){let w=[1,1,1,-1,-1,-1,-1,1,1,1],B=[0,0,0,0,1,0],S,T,N=!0,M=!0,U=0,W=!0,te=!0;const ae=k.fields;for(let _e=0,ge=ae.length;_e<ge;_e++){const Ee=ae[_e],he=Ee.name,Ie=Ee.values;switch(he){case"beginCap":N=Ie[0];break;case"ccw":M=Ie[0];break;case"convex":break;case"creaseAngle":U=Ie[0];break;case"crossSection":w=Ie;break;case"endCap":W=Ie[0];break;case"orientation":T=Ie;break;case"scale":S=Ie;break;case"solid":te=Ie[0];break;case"spine":B=Ie;break;default:console.warn("THREE.VRMLLoader2: Unknown field:",he);break}}const me=w[0]===w[w.length-2]&&w[1]===w[w.length-1],xe=[],ke=new E.Vector3,be=new E.Vector3,we=new E.Vector3,pe=new E.Vector3,ve=new E.Quaternion;for(let _e=0,ge=0,Ee=0,he=B.length;_e<he;_e+=3,ge+=2,Ee+=4){ke.fromArray(B,_e),be.x=S?S[ge+0]:1,be.y=1,be.z=S?S[ge+1]:1,we.x=T?T[Ee+0]:0,we.y=T?T[Ee+1]:0,we.z=T?T[Ee+2]:1;const Ie=T?T[Ee+3]:0;for(let Ce=0,Ue=w.length;Ce<Ue;Ce+=2)pe.x=w[Ce+0],pe.y=0,pe.z=w[Ce+1],pe.multiply(be),ve.setFromAxisAngle(we,Ie),pe.applyQuaternion(ve),pe.add(ke),xe.push(pe.x,pe.y,pe.z)}const Pe=[],Fe=B.length/3,Le=w.length/2;for(let _e=0;_e<Fe-1;_e++)for(let ge=0;ge<Le-1;ge++){const Ee=ge+_e*Le;let he=ge+1+_e*Le;const Ie=ge+(_e+1)*Le;let Ce=ge+1+(_e+1)*Le;ge===Le-2&&me===!0&&(he=_e*Le,Ce=(_e+1)*Le),M===!0?(Pe.push(Ee,he,Ie),Pe.push(Ie,he,Ce)):(Pe.push(Ee,Ie,he),Pe.push(Ie,Ce,he))}if(N===!0||W===!0){const _e=[];for(let he=0,Ie=w.length;he<Ie;he+=2)_e.push(new E.Vector2(w[he],w[he+1]));const ge=E.ShapeUtils.triangulateShape(_e,[]),Ee=[];for(let he=0,Ie=ge.length;he<Ie;he++){const Ce=ge[he];Ee.push(Ce[0],Ce[1],Ce[2])}if(N===!0)for(let he=0,Ie=Ee.length;he<Ie;he+=3)M===!0?Pe.push(Ee[he+0],Ee[he+1],Ee[he+2]):Pe.push(Ee[he+0],Ee[he+2],Ee[he+1]);if(W===!0){const he=Le*(Fe-1);for(let Ie=0,Ce=Ee.length;Ie<Ce;Ie+=3)M===!0?Pe.push(he+Ee[Ie+0],he+Ee[Ie+2],he+Ee[Ie+1]):Pe.push(he+Ee[Ie+0],he+Ee[Ie+1],he+Ee[Ie+2])}}const He=O(Pe,new E.Float32BufferAttribute(xe,3)),Ke=re(Pe,xe,U),We=new E.BufferGeometry;return We.setAttribute("position",He),We.setAttribute("normal",Ke),We._solid=te,We._type="mesh",We}function ie(k){const w=n[k],B=a(w);return B.isObject3D||B.isMaterial?B.clone():B}function Z(k,w){for(let B=0,S=k.length;B<S;B++){const T=a(k[B]);T instanceof E.Object3D&&w.add(T)}}function se(k,w){const B=[];let S=0;for(let T=0,N=k.length;T<N;T++){const M=k[S],U=k[T+(w?1:2)],W=k[T+(w?2:1)];B.push(M,U,W),(k[T+3]===-1||T+3>=N)&&(T+=3,S=T+1)}return B}function de(k,w){const B=[];let S=0;for(let T=0,N=w.length;T<N;T++){const M=S*3,U=k[M],W=k[M+1],te=k[M+2];B.push(U,W,te),(w[T+3]===-1||T+3>=N)&&(T+=3,S++)}return B}function P(k,w){const B=[];for(let S=0,T=w.length;S<T;S++){const M=w[S]*3,U=k[M],W=k[M+1],te=k[M+2];B.push(U,W,te)}return B}function H(k){const w=[];for(let B=0,S=k.length;B<S;B++){const T=k[B],N=k[B+1];w.push(T,N),(k[B+2]===-1||B+2>=S)&&(B+=2)}return w}function Y(k,w){const B=[];let S=0;for(let T=0,N=w.length;T<N;T++){const M=S*3,U=k[M],W=k[M+1],te=k[M+2];B.push(U,W,te),(w[T+2]===-1||T+2>=N)&&(T+=2,S++)}return B}const V=new E.Vector3,K=new E.Vector3,ce=new E.Vector3,Be=new E.Vector2,Te=new E.Vector2,De=new E.Vector2;function Ve(k,w,B,S){const T=[];for(let N=0,M=k.length;N<M;N+=3){const U=w[N],W=w[N+1],te=w[N+2];S===2?(Be.fromArray(B,U*S),Te.fromArray(B,W*S),De.fromArray(B,te*S),T.push(Be.x,Be.y),T.push(Te.x,Te.y),T.push(De.x,De.y)):(V.fromArray(B,U*S),K.fromArray(B,W*S),ce.fromArray(B,te*S),T.push(V.x,V.y,V.z),T.push(K.x,K.y,K.z),T.push(ce.x,ce.y,ce.z))}return new E.Float32BufferAttribute(T,S)}function Je(k,w){const B=[];for(let S=0,T=0,N=k.length;S<N;S+=3,T++)V.fromArray(w,T*3),B.push(V.x,V.y,V.z),B.push(V.x,V.y,V.z),B.push(V.x,V.y,V.z);return new E.Float32BufferAttribute(B,3)}function qe(k,w){const B=[];for(let S=0,T=0,N=k.length;S<N;S+=2,T++)V.fromArray(w,T*3),B.push(V.x,V.y,V.z),B.push(V.x,V.y,V.z);return new E.Float32BufferAttribute(B,3)}function O(k,w){const B=w.array,S=w.itemSize,T=new B.constructor(k.length*S);let N=0,M=0;for(let U=0,W=k.length;U<W;U++){N=k[U]*S;for(let te=0;te<S;te++)T[M++]=B[N++]}return new E.Float32BufferAttribute(T,S)}const X=new E.Vector3,z=new E.Vector3;function re(k,w,B){const S=[],T={};for(let M=0,U=k.length;M<U;M+=3){const W=k[M],te=k[M+1],ae=k[M+2],me=new Eo(W,te,ae);V.fromArray(w,W*3),K.fromArray(w,te*3),ce.fromArray(w,ae*3),z.subVectors(ce,K),X.subVectors(V,K),z.cross(X),z.normalize(),me.normal.copy(z),T[W]===void 0&&(T[W]=[]),T[te]===void 0&&(T[te]=[]),T[ae]===void 0&&(T[ae]=[]),T[W].push(me.normal),T[te].push(me.normal),T[ae].push(me.normal),S.push(me)}const N=[];for(let M=0,U=S.length;M<U;M++){const W=S[M],te=fe(T[W.a],W.normal,B),ae=fe(T[W.b],W.normal,B),me=fe(T[W.c],W.normal,B);V.fromArray(w,W.a*3),K.fromArray(w,W.b*3),ce.fromArray(w,W.c*3),N.push(te.x,te.y,te.z),N.push(ae.x,ae.y,ae.z),N.push(me.x,me.y,me.z)}return new E.Float32BufferAttribute(N,3)}function fe(k,w,B){const S=new E.Vector3;if(B===0)S.copy(w);else for(let T=0,N=k.length;T<N;T++)k[T].angleTo(w)<B&&S.add(k[T]);return S.normalize()}function Qe(k){const w=new E.Color;for(let B=0;B<k.count;B++)w.fromBufferAttribute(k,B),E.ColorManagement.colorSpaceToWorking(w,E.SRGBColorSpace),k.setXYZ(B,w.r,w.g,w.b)}const ye=new E.TextureLoader(this.manager);if(ye.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),e.indexOf("#VRML V2.0")===-1)throw Error("THREE.VRMLLexer: Version of VRML asset not supported.");const le=r(e);return c(le)}}class po{constructor(e){this.lexer=new wt.Lexer(e)}lex(e){const t=this.lexer.tokenize(e);if(t.errors.length>0)throw console.error(t.errors),Error("THREE.VRMLLexer: Lexing errors detected.");return t}}const go=wt.CstParser;class mo extends go{constructor(e){super(e);const t=this,n=e.Version,r=e.LCurly,o=e.RCurly,s=e.LSquare,c=e.RSquare,A=e.Identifier,a=e.RouteIdentifier,d=e.StringLiteral,u=e.HexLiteral,m=e.NumberLiteral,p=e.TrueLiteral,I=e.FalseLiteral,g=e.NullLiteral,l=e.DEF,h=e.USE,f=e.ROUTE,C=e.TO,b=e.NodeName;t.RULE("vrml",function(){t.SUBRULE(t.version),t.AT_LEAST_ONE(function(){t.SUBRULE(t.node)}),t.MANY(function(){t.SUBRULE(t.route)})}),t.RULE("version",function(){t.CONSUME(n)}),t.RULE("node",function(){t.OPTION(function(){t.SUBRULE(t.def)}),t.CONSUME(b),t.CONSUME(r),t.MANY(function(){t.SUBRULE(t.field)}),t.CONSUME(o)}),t.RULE("field",function(){t.CONSUME(A),t.OR2([{ALT:function(){t.SUBRULE(t.singleFieldValue)}},{ALT:function(){t.SUBRULE(t.multiFieldValue)}}])}),t.RULE("def",function(){t.CONSUME(l),t.OR([{ALT:function(){t.CONSUME(A)}},{ALT:function(){t.CONSUME(b)}}])}),t.RULE("use",function(){t.CONSUME(h),t.OR([{ALT:function(){t.CONSUME(A)}},{ALT:function(){t.CONSUME(b)}}])}),t.RULE("singleFieldValue",function(){t.AT_LEAST_ONE(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(m)}},{ALT:function(){t.CONSUME(p)}},{ALT:function(){t.CONSUME(I)}},{ALT:function(){t.CONSUME(g)}}])})}),t.RULE("multiFieldValue",function(){t.CONSUME(s),t.MANY(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(m)}},{ALT:function(){t.CONSUME(g)}}])}),t.CONSUME(c)}),t.RULE("route",function(){t.CONSUME(f),t.CONSUME(a),t.CONSUME(C),t.CONSUME2(a)}),this.performSelfAnalysis()}}class Eo{constructor(e,t,n){this.a=e,this.b=t,this.c=n,this.normal=new E.Vector3}}const nt={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4};class Io{constructor({skyColor:e=[[0,0,0]],skyAngle:t=[],groundColor:n=[],groundAngle:r=[],size:o=128}={}){this._skyColor=e,this._skyAngle=t,this._groundColor=n,this._groundAngle=r,this._size=o,this._texture=null}applyToScene(e){e.background=this._buildCubeTexture()}buildTexture(){return this._texture||(this._texture=this._buildCubeTexture()),this._texture}dispose(){this._texture&&(this._texture.dispose(),this._texture=null)}_colorAtPitch(e){const t=Math.PI/2;if(e<=t){if(this._skyAngle.length===0)return this._skyColor[0];if(e<=this._skyAngle[0])return this._lerpColor(this._skyColor[0],this._skyColor[1],e/this._skyAngle[0]);const n=this._skyAngle.length-1;if(e>=this._skyAngle[n])return this._skyColor[n+1]??this._skyColor[this._skyColor.length-1];for(let r=0;r<n;r++)if(e<=this._skyAngle[r+1]){const o=(e-this._skyAngle[r])/(this._skyAngle[r+1]-this._skyAngle[r]);return this._lerpColor(this._skyColor[r+1]??this._skyColor[this._skyColor.length-1],this._skyColor[r+2]??this._skyColor[this._skyColor.length-1],o)}return this._skyColor[this._skyColor.length-1]}else{if(this._groundColor.length===0)return this._skyColor[this._skyColor.length-1];const n=e-t;if(this._groundAngle.length===0)return this._groundColor[0];if(n<=this._groundAngle[0])return this._lerpColor(this._groundColor[0],this._groundColor[1],n/this._groundAngle[0]);const r=this._groundAngle.length-1;if(n>=this._groundAngle[r])return this._groundColor[r+1]??this._groundColor[this._groundColor.length-1];for(let o=0;o<r;o++)if(n<=this._groundAngle[o+1]){const s=(n-this._groundAngle[o])/(this._groundAngle[o+1]-this._groundAngle[o]);return this._lerpColor(this._groundColor[o+1]??this._groundColor[this._groundColor.length-1],this._groundColor[o+2]??this._groundColor[this._groundColor.length-1],s)}return this._groundColor[this._groundColor.length-1]}}_lerpColor(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}_buildSideCanvas(){const e=this._size,t=document.createElement("canvas");t.width=e,t.height=e;const n=t.getContext("2d"),r=n.createImageData(e,e),o=r.data;for(let s=0;s<e;s++){const A=1-2*((s+.5)/e);for(let a=0;a<e;a++){const u=2*((a+.5)/e)-1,m=1,p=Math.sqrt(u*u+A*A+m*m),I=Math.acos(Math.max(-1,Math.min(1,A/p))),[g,l,h]=this._colorAtPitch(I),f=(s*e+a)*4;o[f]=Math.round(g*255),o[f+1]=Math.round(l*255),o[f+2]=Math.round(h*255),o[f+3]=255}}return n.putImageData(r,0,0),t}_buildTopCanvas(){const e=this._size,t=document.createElement("canvas");t.width=e,t.height=e;const n=t.getContext("2d"),r=n.createImageData(e,e),o=r.data;for(let s=0;s<e;s++){const c=2*(s+.5)/e-1;for(let A=0;A<e;A++){const a=2*(A+.5)/e-1,d=1,u=Math.sqrt(a*a+d*d+c*c),m=Math.acos(Math.max(-1,Math.min(1,d/u))),[p,I,g]=this._colorAtPitch(m),l=(s*e+A)*4;o[l]=Math.round(p*255),o[l+1]=Math.round(I*255),o[l+2]=Math.round(g*255),o[l+3]=255}}return n.putImageData(r,0,0),t}_buildBottomCanvas(){const e=this._size,t=document.createElement("canvas");t.width=e,t.height=e;const n=t.getContext("2d"),r=n.createImageData(e,e),o=r.data;for(let s=0;s<e;s++){const c=2*(s+.5)/e-1;for(let A=0;A<e;A++){const a=2*(A+.5)/e-1,d=-1,u=Math.sqrt(a*a+d*d+c*c),m=Math.acos(Math.max(-1,Math.min(1,d/u))),[p,I,g]=this._colorAtPitch(m),l=(s*e+A)*4;o[l]=Math.round(p*255),o[l+1]=Math.round(I*255),o[l+2]=Math.round(g*255),o[l+3]=255}}return n.putImageData(r,0,0),t}_buildCubeTexture(){const e=this._buildSideCanvas(),t=this._buildTopCanvas(),n=this._buildBottomCanvas(),r=[e,e,t,n,e,e],o=new E.CubeTexture(r);return o.needsUpdate=!0,o.minFilter=E.LinearMipmapLinearFilter,o.magFilter=E.LinearFilter,o}}async function bo(i){await new Promise((o,s)=>{if(i.complete)return o();i.onload=o,i.onerror=s});const e=document.createElement("canvas"),t=e.getContext("2d");e.width=i.naturalWidth,e.height=i.naturalHeight,t.drawImage(i,0,0);const r=t.getImageData(0,0,e.width,e.height).data;for(let o=3;o<r.length;o+=4)if(r[o]<255)return!0;return!1}class Co extends E.Loader{constructor(e){super(e),this.animateBonePositions=!0,this.animateBoneRotations=!0,this.animateBoneScales=!0}load(e,t,n,r){const o=this,s=new E.FileLoader(o.manager);s.setPath(o.path),s.setRequestHeader(o.requestHeader),s.setWithCredentials(o.withCredentials),s.load(e,function(c){try{t(o.parse(c))}catch(A){r?r(A):console.error(A),o.manager.itemError(e)}},n,r)}parse(e){function t(p){c(p)!=="HIERARCHY"&&console.error("THREE.BVHLoader2: HIERARCHY expected.");const I=[],g=r(p,c(p),I);c(p)!=="MOTION"&&console.error("THREE.BVHLoader2: MOTION expected.");let l=c(p).split(/[\s]+/);const h=parseInt(l[1]);isNaN(h)&&console.error("THREE.BVHLoader2: Failed to read number of frames."),l=c(p).split(/[\s]+/);const f=parseFloat(l[2]);isNaN(f)&&console.error("THREE.BVHLoader2: Failed to read frame time.");for(let C=0;C<h;C++)l=c(p).split(/[\s]+/),n(l,C*f,g);return I}function n(p,I,g){if(g.type==="ENDSITE")return;const l={time:I,position:new E.Vector3,rotation:new E.Quaternion,scale:new E.Vector3(1,1,1)};g.frames.push(l);const h=new E.Quaternion,f=new E.Vector3(1,0,0),C=new E.Vector3(0,1,0),b=new E.Vector3(0,0,1);for(let y=0;y<g.channels.length;y++)switch(g.channels[y]){case"Xposition":l.position.x=parseFloat(p.shift().trim());break;case"Yposition":l.position.y=parseFloat(p.shift().trim());break;case"Zposition":l.position.z=parseFloat(p.shift().trim());break;case"Xrotation":h.setFromAxisAngle(f,parseFloat(p.shift().trim())*Math.PI/180),l.rotation.multiply(h);break;case"Yrotation":h.setFromAxisAngle(C,parseFloat(p.shift().trim())*Math.PI/180),l.rotation.multiply(h);break;case"Zrotation":h.setFromAxisAngle(b,parseFloat(p.shift().trim())*Math.PI/180),l.rotation.multiply(h);break;case"Xscale":l.scale.x=parseFloat(p.shift().trim());break;case"Yscale":l.scale.y=parseFloat(p.shift().trim());break;case"Zscale":l.scale.z=parseFloat(p.shift().trim());break;default:console.warn("THREE.BVHLoader2: Invalid channel type.")}for(let y=0;y<g.children.length;y++)n(p,I,g.children[y])}function r(p,I,g){const l={name:"",type:"",frames:[]};g.push(l);let h=I.split(/[\s]+/);h[0].toUpperCase()==="END"&&h[1].toUpperCase()==="SITE"?(l.type="ENDSITE",l.name="ENDSITE"):(l.name=h[1],l.type=h[0].toUpperCase()),c(p)!=="{"&&console.error("THREE.BVHLoader2: Expected opening { after type & name"),h=c(p).split(/[\s]+/),h[0]!=="OFFSET"&&console.error("THREE.BVHLoader2: Expected OFFSET but got: "+h[0]),h.length!==4&&console.error("THREE.BVHLoader2: Invalid number of values for OFFSET.");const f=new E.Vector3(parseFloat(h[1]),parseFloat(h[2]),parseFloat(h[3]));if((isNaN(f.x)||isNaN(f.y)||isNaN(f.z))&&console.error("THREE.BVHLoader2: Invalid values of OFFSET."),l.offset=f,l.type!=="ENDSITE"){h=c(p).split(/[\s]+/),h[0]!=="CHANNELS"&&console.error("THREE.BVHLoader2: Expected CHANNELS definition.");const C=parseInt(h[1]);l.channels=h.splice(2,C),l.children=[]}for(;;){const C=c(p);if(C==="}")return l;l.children.push(r(p,C,g))}}function o(p,I){const g=new E.Bone;if(I.push(g),g.position.add(p.offset),g.name=p.name,p.type!=="ENDSITE")for(let l=0;l<p.children.length;l++)g.add(o(p.children[l],I));return g}function s(p){const I=[];for(let g=0;g<p.length;g++){const l=p[g];if(l.type==="ENDSITE")continue;const h=[],f=[],C=[],b=[];for(let y=0;y<l.frames.length;y++){const R=l.frames[y];h.push(R.time),f.push(R.position.x+l.offset.x),f.push(R.position.y+l.offset.y),f.push(R.position.z+l.offset.z),C.push(R.rotation.x),C.push(R.rotation.y),C.push(R.rotation.z),C.push(R.rotation.w),b.push(R.scale.x),b.push(R.scale.y),b.push(R.scale.z)}A.animateBonePositions&&I.push(new E.VectorKeyframeTrack(l.name+".position",h,f)),A.animateBoneRotations&&I.push(new E.QuaternionKeyframeTrack(l.name+".quaternion",h,C)),A.animateBoneScales&&I.push(new E.VectorKeyframeTrack(l.name+".scale",h,b))}return new E.AnimationClip("animation",-1,I)}function c(p){let I;for(;(I=p.shift().trim()).length===0;);return I}const A=this,a=e.split(/[\r\n]+/g),d=t(a),u=[];o(d[0],u);const m=s(d);return{skeleton:new E.Skeleton(u),clip:m}}}async function yo(i,e){const t=new oe.LoadingManager;t.setURLModifier(c=>(c.startsWith("./")&&(c=c.substring(2)),URL.createObjectURL(sn(i,c))));const n=new fo(t),r=await n.loadAsync(e),o=n.backgroundTexture,s=n.fog;return{object3D:r,bgTexture:o,fog:s}}let zt;async function Bo(i,e){zt||(zt=new Co);const t=Nt(i,e);return await zt.parse(t)}function To(i){const e=i.clip.clone(),t=i.skeleton.bones[0].clone(!0),n=[];t.traverse(o=>{o instanceof oe.Bone&&n.push(o)});const r=new oe.Skeleton(n);return r.calculateInverses(),{clip:e,skeleton:r}}class yn{name;time;finishListener;duration;isPaused;playCount;interpolants;constructor(e,t){this.name=t||e.name,this.time=0,this.duration=e.duration,this.isPaused=!1,this.playCount=0,this.interpolants={};for(const n of e.tracks){const r=n.getValueSize();let o;n.getInterpolation()===oe.InterpolateDiscrete?o=new oe.DiscreteInterpolant(n.times,n.values,r):n.ValueTypeName==="quaternion"?o=new oe.QuaternionLinearInterpolant(n.times,n.values,r):o=new oe.LinearInterpolant(n.times,n.values,r),this.interpolants[n.name]=o}}init(e){}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){this.isPaused=e}setTime(e){this.time=e}setFinishListener(e){this.finishListener=e}update(e){this.time+=e,this.time>this.duration&&(this.time-=this.duration,this.playCount++,this.finishListener&&this.finishListener());const t={};for(const[n,r]of Object.entries(this.interpolants)){const o=n.substring(0,n.lastIndexOf(".")),s=n.substring(n.lastIndexOf(".")+1,n.length);let c=t[o];c||(c={},t[o]=c);const A=r.evaluate(this.time);if(s==="position")c.loc=new Ae(A[0],A[1],A[2]);else if(s==="quaternion")c.quat=new Me(A[0],A[1],A[2],A[3]);else if(s==="scale")c.scale=new Ae(A[0],A[1],A[2]);else if(s==="morphTargetInfluences"){c.morphs||(c.morphs=[]);const a=Array.from(A);c.morphs.push({name:o,vals:a})}else console.warn(`ClipMotion: update. unknown property(${s})`)}return t}}const wo={type:"audio",autoplay:!1,loop:!1,volume:1,positional:{refDistance:1,maxDistance:1e3,rolloffFactor:1,directional:{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}}};async function Ro(){try{at.listener.context.state!=="running"&&await at.listener.context.resume()}catch{console.warn("AudioContext resume failed. Did you call on user gesture?")}}class at extends Oe{static listener=new oe.AudioListener;static audioLoader=new oe.AudioLoader;ready;options;sound;constructor(e,t={}){super(),this.options=Ot(wo,t),this.ready=this.asyncInit(e)}initObject(){return new oe.Object3D}async asyncInit(e){if(this.options.type==="positional"){const t=new oe.PositionalAudio(at.listener);t.setRefDistance(this.options.positional.refDistance),t.setMaxDistance(this.options.positional.maxDistance),t.setRolloffFactor(this.options.positional.rolloffFactor);const n=this.options.positional.directional;t.setDirectionalCone(n.coneInnerAngle,n.coneOuterAngle,n.coneOuterGain),t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}else{const t=new oe.Audio(at.listener);t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}return this.object3D.add(this.sound),new Promise(t=>{at.audioLoader.load(e,n=>{this.sound&&this.sound.setBuffer(n),t(this)})})}play(){this.sound?.stop(),this.sound?.play()}stop(){this.sound?.stop()}}class Ln{isDummy=!0;skeleton=new oe.Skeleton([new oe.Bone]);clip=new oe.AnimationClip("dummy")}const Vt={},mt={};class an extends mn{loop;sound;soundLoop;soundContinue;backgroundTexture;fog;constructor(e,t,n,r,o=!1,s=!0,c,A){super(e,t),this.loop=n,this.sound=r,this.soundLoop=o,this.soundContinue=s,this.backgroundTexture=c,this.fog=A}enable(e,t){super.enable(e,t),this.sound&&(this.sound.play(),this.loop&&!this.soundContinue&&this.motion.setFinishListener(()=>{this.sound?.play()}),this.loop&&!this.soundLoop&&this.motion.setFinishListener(()=>{this.sound?.play()})),t&&(this.backgroundTexture&&(t.scene.background=this.backgroundTexture,t.scene.environment=this.backgroundTexture),this.fog&&(t.scene.fog=this.fog))}disable(e,t){super.disable(e,t),this.sound&&(this.loop&&this.sound.stop(),this.soundContinue||this.sound.stop(),this.motion.setFinishListener=()=>{})}}class fi extends bt{haltActionNo=0;walkActionNo=0;runActionNo=0;minWalkSpeed=.1;minRunSpeed=1;isBillboard=!1;comment=null;tags=[];profiles=[];thumbnails=[];rdf=null;htmlfile="";constructor(e){super(e)}async asyncInit(e){const t=await ti(e),n=new DOMParser,r=Nt(t,"CATALOG.XML"),o=n.parseFromString(r,"application/xml");if(o.querySelector("parsererror"))return console.error("Acerola3D.asyncInit(): CATALOG.XML parse error."),this;const s="http://acerola3d.sourceforge.jp/a3/catalog",c=o.getElementsByTagNameNS(s,"a3");c[0]&&(this.haltActionNo=Number(c[0].getAttribute("haltActionN0")),this.walkActionNo=Number(c[0].getAttribute("walkActionN0")),this.runActionNo=Number(c[0].getAttribute("runActionN0")),this.minWalkSpeed=Number(c[0].getAttribute("minWalkSpeed")),this.minRunSpeed=Number(c[0].getAttribute("minRunSpeed")),this.isBillboard=!!c[0].getAttribute("billboard"));const A=o.getElementsByTagNameNS(s,"c");A[0]&&(this.comment=A[0].textContent);const a=o.getElementsByTagNameNS(s,"tag");Array.from(a).forEach(h=>{const f=h.getAttribute("name");f&&this.tags.push(f)});const d=o.getElementsByTagNameNS(s,"profile");Array.from(d).forEach(h=>{const f=h.getAttribute("uri");f&&this.profiles.push(f)});const u=o.getElementsByTagNameNS(s,"thumbnail");Array.from(u).forEach(h=>{const f=h.getAttribute("src");if(f){const C=sn(t,f);this.thumbnails.push(C)}});const m=o.getElementsByTagNameNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#","RDF");m[0]&&(this.rdf=m[0]);const p=o.getElementsByTagNameNS(s,"htmlfile");if(p[0]){const h=p[0].getAttribute("src");h&&(this.htmlfile=Nt(t,h))}const I=o.getElementsByTagNameNS(s,"a"),g={};let l;for(const h of Array.from(I)){const f=h.getAttribute("an");if(f){l||(l=f);let C;const b=h.getAttribute("bvh");if(b&&b!=="none"){const Z=t.zipUrl+"!"+b;Vt[Z]||(Vt[Z]=await Bo(t,b)),C=To(Vt[Z]),C&&C.clip.tracks.forEach(se=>{se.setInterpolation(oe.InterpolateDiscrete)})}else C=new Ln;const y={};C.skeleton.bones.forEach(Z=>{y[Z.name]=Z});const R=h.getAttribute("scale"),x=R?Number(R):1,q=h.getAttribute("offset"),v=new Ae;if(q){const Z=q.split(" ");v.set(Number(Z[0]),Number(Z[1]),Number(Z[2]))}const G=h.getAttribute("rot"),D=new Ae;if(G){const Z=G.split(" ");D.set(Number(Z[0]),Number(Z[1]),Number(Z[2]))}const Q=h.getAttribute("loop")==="true";let F,L;const J={},$=h.getElementsByTagNameNS(s,"p");for(const Z of Array.from($)){const se=Z.getAttribute("name"),de=Z.getAttribute("wrl");if(se&&de){const P=t.zipUrl+"!"+de;if(!mt[P]){const K=await yo(t,de);mt[P]=K.object3D,K.bgTexture&&(F=K.bgTexture),K.fog&&(L=K.fog)}const H=Z.getAttribute("scale");if(H){const K=Number(H);mt[P].scale.set(K,K,K)}const Y=Z.getAttribute("rot");if(Y){const K=Y.split(" ");mt[P].rotation.set(Number(K[0])/180*Math.PI,Number(K[1])/180*Math.PI,Number(K[2])/180*Math.PI,"ZXY")}const V=Z.getAttribute("offset");if(V){const K=V.split(" ");mt[P].position.set(Number(K[0]),Number(K[1]),Number(K[2]))}J[se]=mt[P].clone(!0)}}const j=new oe.Object3D;j.add(C.skeleton.bones[0]),C instanceof Ln||pi(j,J),Object.values(J).forEach(Z=>{j.add(Z)}),j.scale.set(x,x,x),D.scale(Math.PI/180),j.setRotationFromEuler(new oe.Euler(D.x,D.y,D.z,"ZXY")),j.position.add(v),j.traverse(Z=>{Z.userData.a3js={objectA3:this}});let ee,ne=!1,ue=!0;const ie=h.getElementsByTagNameNS(s,"s");if(ie[0]){const Z=ie[0].getAttribute("file"),se=ie[0].getAttribute("type")||"PointSound",de=ie[0].getAttribute("loop")||"false";ne=de==="true";const P=ie[0].getAttribute("gain")||"1.0",H=ie[0].getAttribute("offset")||"0.0 0.0 0.0",Y=ie[0].getAttribute("direction")||"0.0 0.0 1.0";ue=(ie[0].getAttribute("continue")||"true")==="true";const K=H.split(" ").map(O=>Number(O)),ce=new Ae(K[0],K[1],K[2]),Be=Y.split(" ").map(O=>Number(O)),Te=new Ae(Be[0],Be[1],Be[2]),De=se==="PointSound"||se==="ConeSound"?"positional":"audio",qe=se==="PointSound"?{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}:{coneInnerAngle:30,coneOuterAngle:90,coneOuterGain:.1};if(Z){const O=sn(t,Z),X=URL.createObjectURL(O),z={type:De,autoplay:!1,loop:de==="true",volume:Number(P),positional:{directional:qe}};ee=await new at(X,z).ready,ee.setPosition(ce),ee.lookAt(Te),URL.revokeObjectURL(X),j.add(ee.object3D)}}g[f]=new an({root:j,bones:y,skeleton:C.skeleton},new yn(C.clip,f),Q,ee,ne,ue,F,L)}}return l&&this.syncInit(l,g),this}}function pi(i,e){if(Fr(i)){const t=e[i.name];t&&(i.add(t),delete e[i.name])}i.children&&i.children.forEach(t=>{pi(t,e)})}class gi{scene;objects;physicsWorld=null;physicsDt=1/60;collisionListener;rapierLines;constructor(){this.scene=new oe.Scene,this.objects=[],on.isInitialized&&(this.physicsWorld=on.createWorld({gravity:{x:0,y:-9.81,z:0},timestep:this.physicsDt}))}add(e){if(this.scene.add(e.object3D),this.objects.push(e),e.scene=this,this.physicsWorld&&(e.addOneselfToPhysics(this.physicsWorld),e instanceof bt))for(const t of Object.values(e.actions))t.motion.addOneselfToPhysics(this.physicsWorld);e instanceof fi&&e.currentAction instanceof an&&(e.currentAction.backgroundTexture&&(this.scene.background=e.currentAction.backgroundTexture,this.scene.environment=e.currentAction.backgroundTexture),e.currentAction.fog&&(this.scene.fog=e.currentAction.fog))}remove(e){this.scene.remove(e.object3D);{const t=this.objects.indexOf(e);this.objects[t]=this.objects[this.objects.length-1],this.objects.pop()}if(e.scene=void 0,this.physicsWorld&&(e.removeOneselfFromPhysics(this.physicsWorld),e instanceof bt))for(const t of Object.values(e.actions))t.motion.removeOneselfFromPhysics(this.physicsWorld);e instanceof bt&&e.currentAction instanceof an&&(e.currentAction.backgroundTexture&&(this.scene.background=null,this.scene.environment=null),e.currentAction.fog&&(this.scene.fog=null))}removeAll(){[...this.objects].forEach(t=>{this.remove(t)})}setCollisionListener(e){this.collisionListener=e}update(e){if(this.physicsWorld){this.physicsWorld.update(e);const t=this.physicsWorld.getCollisions();if(t.forEach(n=>{n.objectA.handleCollision(n.objectB,n.started,n.partOfA,n.partOfB),n.objectB.handleCollision(n.objectA,n.started,n.partOfB,n.partOfA)}),this.collisionListener&&t.length>0&&this.collisionListener(t),this.rapierLines&&this.physicsWorld instanceof gn){const{vertices:n,colors:r}=this.physicsWorld.world.debugRender();this.rapierLines.geometry.setAttribute("position",new oe.BufferAttribute(n,3)),this.rapierLines.geometry.setAttribute("color",new oe.BufferAttribute(r,4))}}for(const t of this.objects)t.update(e)}setPhysicsDebugMode(e){e?(this.rapierLines=new oe.LineSegments(new oe.BufferGeometry,new oe.LineBasicMaterial({vertexColors:!0})),this.scene.add(this.rapierLines)):this.rapierLines&&(this.scene.remove(this.rapierLines),this.rapierLines=void 0)}}class mi extends Oe{view;setView(e){this.view=e}lookAt(e,t,n){const r=new Ae;typeof e=="number"?r.set(e,t,n):e instanceof Oe?e.getPosition(r):r.set(e);const o=this.upVector?this.upVector:Oe.defaultUpVector,s=At(this.getPosition(),r,o);s.mul(o.x,o.y,o.z,0),this.setQuat(s)}lookAtNow(e,t,n){const r=new Ae;typeof e=="number"?r.set(e,t,n):e instanceof Oe?e.getPosition(r):r.set(e);const o=this.upVector?this.upVector:Oe.defaultUpVector,s=At(this.getPosition(),r,o);s.mul(o.x,o.y,o.z,0),this.setQuatNow(s)}}class Ht{view;setView(e){this.view=e}update(e){}activate(){}deactivate(){}keyDown(e){}keyUp(e){}keyPress(e){}mouseDown(e){}mouseUp(e){}mouseMove(e){}mouseClick(e){}mouseEnter(e){}mouseLeave(e){}mouseWheel(e){}touchStart(e){}touchEnd(e){}touchMove(e){}touchCancel(e){}}class Ei extends Ht{lastMousePosition;dx=0;dy=0;isLeftDown=!1;isRightDown=!1;ctrlKey=!1;deltaY=0;target;constructor(e,t,n){super(),this.lastMousePosition={x:0,y:0},typeof e=="number"?this.target=new Ae(e,t,n):this.target=new Ae(e)}update(e){if(!this.view)return;const t=this.view.camera.getPosition(),n=this.view.camera.getQuat();if(this.isLeftDown&&!this.ctrlKey){const o=Math.sin(-this.dx*.01),s=Math.cos(-this.dx*.01),c=Math.sin(-this.dy*.01),A=Math.cos(-this.dy*.01),a=new Ae(1,0,0).apply(n),d=new Ae(0,1,0).apply(n),u=new Me(a.x*c,a.y*c,a.z*c,A),m=new Me(d.x*o,d.y*o,d.z*o,s),p=new Ae(t);p.sub(this.target),p.apply(u),p.apply(m),p.add(this.target),t.set(p);const I=At(t,this.target,new Ae(0,1,0));I.mul(new Me(0,1,0,0)),n.set(I)}else if(this.isLeftDown){_.v0.set(this.target),_.v0.sub(t);const o=.005*_.v0.length(),s=new Ae(1,0,0).apply(n).scale(-this.dx*o),c=new Ae(0,1,0).apply(n).scale(this.dy*o);t.add(s),t.add(c),this.target.add(s),this.target.add(c)}if(this.deltaY!==0){const r=new Ae(this.target).sub(t);this.deltaY>0?r.scale(.05):this.deltaY<0&&r.scale(-.05),t.add(r)}this.view.camera.setPosition(t),this.view.camera.setQuat(n),this.dx=0,this.dy=0,this.deltaY=0}mouseDown(e){e.button===0?(this.isLeftDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY):e.button===2&&(this.isRightDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY)}mouseMove(e){this.dx+=e.clientX-this.lastMousePosition.x,this.dy+=e.clientY-this.lastMousePosition.y,this.ctrlKey=e.ctrlKey,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY}mouseUp(e){e.button===0?this.isLeftDown=!1:e.button===2&&(this.isRightDown=!1)}mouseWheel(e){this.deltaY=e.deltaY}}const vo={speed:.1,angSpeed:.01};class Qo extends Ht{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextLoc;_avatarNextQuat;_velY;constructor(e,t){super(),this.options={...vo,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextLoc=new Ae,this._avatarNextQuat=new Me,this._velY=0}keyDown(e){e.code==="KeyW"?this._keyW=!0:e.code==="KeyA"?this._keyA=!0:e.code==="KeyS"?this._keyS=!0:e.code==="KeyD"?this._keyD=!0:e.code==="ArrowLeft"?this._keyLeft=!0:e.code==="ArrowRight"?this._keyRight=!0:e.code==="Space"&&(this._keySpace=!0)}keyUp(e){e.code==="KeyW"?this._keyW=!1:e.code==="KeyA"?this._keyA=!1:e.code==="KeyS"?this._keyS=!1:e.code==="KeyD"?this._keyD=!1:e.code==="ArrowLeft"?this._keyLeft=!1:e.code==="ArrowRight"?this._keyRight=!1:e.code==="Space"&&(this._keySpace=!1)}update(e){const t=this._avatar,n=new ze;n.set(t);const r=t.getUnitVecZ().scale(this.options.speed),o=t.getUnitVecX().scale(this.options.speed);this._avatarNextLoc.set(n.loc),this._avatarNextQuat.set(n.quat),this._keyW&&this._avatarNextLoc.add(r),this._keyA&&this._avatarNextLoc.add(o),this._keyS&&this._avatarNextLoc.sub(r),this._keyD&&this._avatarNextLoc.sub(o),this._velY+=-9.8*e*.1,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=.5)),this._avatarNextLoc.add(0,this._velY,0),this._keyLeft&&(_.v0.set(0,this.options.angSpeed,0),this._avatarNextQuat.mul(ht(_.v0,"ZXY",_.q0))),this._keyRight&&(_.v0.set(0,-this.options.angSpeed,0),this._avatarNextQuat.mul(ht(_.v0,"ZXY",_.q0))),t.setPosition(this._avatarNextLoc),t.setQuat(this._avatarNextQuat)}}const ko={speed:5,angSpeed:.3,jumpSpeed:15};class So extends Ht{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextVel;_avatarNextAngVel;_velY;constructor(e,t){super(),this.options={...ko,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextVel=new Ae,this._avatarNextAngVel=new Ae,this._velY=0}keyDown(e){e.code==="KeyW"?this._keyW=!0:e.code==="KeyA"?this._keyA=!0:e.code==="KeyS"?this._keyS=!0:e.code==="KeyD"?this._keyD=!0:e.code==="ArrowLeft"?this._keyLeft=!0:e.code==="ArrowRight"?this._keyRight=!0:e.code==="Space"&&(this._keySpace=!0)}keyUp(e){e.code==="KeyW"?this._keyW=!1:e.code==="KeyA"?this._keyA=!1:e.code==="KeyS"?this._keyS=!1:e.code==="KeyD"?this._keyD=!1:e.code==="ArrowLeft"?this._keyLeft=!1:e.code==="ArrowRight"?this._keyRight=!1:e.code==="Space"&&(this._keySpace=!1)}update(e){const t=this._avatar;new ze().set(t);const r=t.getUnitVecZ().scale(this.options.speed),o=t.getUnitVecX().scale(this.options.speed);this._avatarNextVel.set(0,0,0),this._avatarNextAngVel.set(0,0,0),this._keyW&&this._avatarNextVel.add(r),this._keyA&&this._avatarNextVel.add(o),this._keyS&&this._avatarNextVel.sub(r),this._keyD&&this._avatarNextVel.sub(o),this._velY+=-9.8*e,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=this.options.jumpSpeed)),this._avatarNextVel.add(0,this._velY,0),this._keyLeft&&this._avatarNextAngVel.add(0,this.options.angSpeed,0),this._keyRight&&this._avatarNextAngVel.add(0,-this.options.angSpeed,0),t.setLinearVelocity(this._avatarNextVel),t.setAngularVelocity(this._avatarNextAngVel)}}class Bn{scene;camera;controller;constructor(e){e.setView(this),this.camera=e,this.camera.setAudioListener(at.listener),this.camera.setPosition(0,0,3),this.scene=new gi,this.scene.scene.add(this.camera.object3D),this.controller=new Ei(0,0,0),this.controller.setView(this),this.controller.activate()}replaceScene(e){this.scene.scene.remove(this.camera.object3D),e.scene.add(this.camera.object3D);const t=this.scene;return this.scene=e,t}updateScene(e){this.scene.update(e),this.controller?.update(e),this.camera.update(e)}setController(e){this.controller.deactivate(),this.controller=e,this.controller.setView(this),this.controller.activate()}worldToScreen(e){throw new Error("BaseViewはworldToScreen()は実装していません")}screenToWorld(e,t,n){throw new Error("BaseViewはscreenToWorld()は実装していません")}cameraToScreen(e){throw new Error("BaseViewはcameraToScreen()は実装していません")}screenToCamera(e,t,n){throw new Error("BaseViewはscreenToCamera()は実装していません")}async waitForRender(){throw new Error("BaseViewはwaitForRender()は実装していません")}}class Qt extends mi{camera;headLight;constructor(e){super(),this.camera=e,this.headLight=new oe.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);const t=new oe.Object3D;t.position.set(0,0,-10),this.headLight.target=t,this.object3D.add(this.camera),this.object3D.add(this.headLight),this.object3D.add(t)}initObject(){return new oe.Object3D}setAudioListener(e){this.camera.add(e)}getHeadLight(){return this.headLight}setAspect(e){Or(this.camera)&&(this.camera.aspect=e,this.camera.updateProjectionMatrix())}setHeadLightEnable(e){e?this.headLight.intensity=1:this.headLight.intensity=0}calcNDC(e){const t=new oe.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}}class Ii extends E.Object3D{constructor(e=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.center=new E.Vector2(.5,.5),this.addEventListener("removed",function(){this.traverse(function(t){t.element&&t.element instanceof t.element.ownerDocument.defaultView.Element&&t.element.parentNode!==null&&t.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}}const Et=new E.Vector3,_n=new E.Matrix4,Dn=new E.Matrix4,Nn=new E.Vector3,Fn=new E.Vector3;class bi{constructor(e={}){const t=this;let n,r,o,s;const c={objects:new WeakMap},A=e.element!==void 0?e.element:document.createElement("div");A.style.overflow="hidden",this.domElement=A,this.sortObjects=!0,this.getSize=function(){return{width:n,height:r}},this.render=function(I,g){I.matrixWorldAutoUpdate===!0&&I.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),_n.copy(g.matrixWorldInverse),Dn.multiplyMatrices(g.projectionMatrix,_n),d(I,I,g),this.sortObjects&&p(I)},this.setSize=function(I,g){n=I,r=g,o=n/2,s=r/2,A.style.width=I+"px",A.style.height=g+"px"};function a(I){I.isCSS2DObject&&(I.element.style.display="none");for(let g=0,l=I.children.length;g<l;g++)a(I.children[g])}function d(I,g,l){if(I.visible===!1){a(I);return}if(I.isCSS2DObject){Et.setFromMatrixPosition(I.matrixWorld),Et.applyMatrix4(Dn);const h=Et.z>=-1&&Et.z<=1&&I.layers.test(l.layers)===!0,f=I.element;f.style.display=h===!0?"":"none",h===!0&&(I.onBeforeRender(t,g,l),f.style.transform="translate("+-100*I.center.x+"%,"+-100*I.center.y+"%)translate("+(Et.x*o+o)+"px,"+(-Et.y*s+s)+"px)",f.parentNode!==A&&A.appendChild(f),I.onAfterRender(t,g,l));const C={distanceToCameraSquared:u(l,I)};c.objects.set(I,C)}for(let h=0,f=I.children.length;h<f;h++)d(I.children[h],g,l)}function u(I,g){return Nn.setFromMatrixPosition(I.matrixWorld),Fn.setFromMatrixPosition(g.matrixWorld),Nn.distanceToSquared(Fn)}function m(I){const g=[];return I.traverseVisible(function(l){l.isCSS2DObject&&g.push(l)}),g}function p(I){const g=m(I).sort(function(h,f){if(h.renderOrder!==f.renderOrder)return f.renderOrder-h.renderOrder;const C=c.objects.get(h).distanceToCameraSquared,b=c.objects.get(f).distanceToCameraSquared;return C-b}),l=g.length;for(let h=0,f=g.length;h<f;h++)g[h].element.style.zIndex=l-h}}}function On(i,e){if(e===E.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),i;if(e===E.TriangleFanDrawMode||e===E.TriangleStripDrawMode){let t=i.getIndex();if(t===null){const s=[],c=i.getAttribute("position");if(c!==void 0){for(let A=0;A<c.count;A++)s.push(A);i.setIndex(s),t=i.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),i}const n=t.count-2,r=[];if(e===E.TriangleFanDrawMode)for(let s=1;s<=n;s++)r.push(t.getX(0)),r.push(t.getX(s)),r.push(t.getX(s+1));else for(let s=0;s<n;s++)s%2===0?(r.push(t.getX(s)),r.push(t.getX(s+1)),r.push(t.getX(s+2))):(r.push(t.getX(s+2)),r.push(t.getX(s+1)),r.push(t.getX(s)));r.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const o=i.clone();return o.setIndex(r),o.clearGroups(),o}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),i}class Ci extends E.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new No(t)}),this.register(function(t){return new Fo(t)}),this.register(function(t){return new zo(t)}),this.register(function(t){return new Vo(t)}),this.register(function(t){return new Ko(t)}),this.register(function(t){return new Mo(t)}),this.register(function(t){return new Po(t)}),this.register(function(t){return new Go(t)}),this.register(function(t){return new Uo(t)}),this.register(function(t){return new Do(t)}),this.register(function(t){return new jo(t)}),this.register(function(t){return new Oo(t)}),this.register(function(t){return new qo(t)}),this.register(function(t){return new Ho(t)}),this.register(function(t){return new Lo(t)}),this.register(function(t){return new Wo(t)}),this.register(function(t){return new Yo(t)})}load(e,t,n,r){const o=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const a=E.LoaderUtils.extractUrlBase(e);s=E.LoaderUtils.resolveURL(a,this.path)}else s=E.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const c=function(a){r?r(a):console.error(a),o.manager.itemError(e),o.manager.itemEnd(e)},A=new E.FileLoader(this.manager);A.setPath(this.path),A.setResponseType("arraybuffer"),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(e,function(a){try{o.parse(a,s,function(d){t(d),o.manager.itemEnd(e)},c)}catch(d){c(d)}},n,c)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let o;const s={},c={},A=new TextDecoder;if(typeof e=="string")o=JSON.parse(e);else if(e instanceof ArrayBuffer)if(A.decode(new Uint8Array(e,0,4))===yi){try{s[Se.KHR_BINARY_GLTF]=new Jo(e)}catch(u){r&&r(u);return}o=JSON.parse(s[Se.KHR_BINARY_GLTF].content)}else o=JSON.parse(A.decode(e));else o=e;if(o.asset===void 0||o.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const a=new cs(o,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});a.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d<this.pluginCallbacks.length;d++){const u=this.pluginCallbacks[d](a);u.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),c[u.name]=u,s[u.name]=!0}if(o.extensionsUsed)for(let d=0;d<o.extensionsUsed.length;++d){const u=o.extensionsUsed[d],m=o.extensionsRequired||[];switch(u){case Se.KHR_MATERIALS_UNLIT:s[u]=new _o;break;case Se.KHR_DRACO_MESH_COMPRESSION:s[u]=new Xo(o,this.dracoLoader);break;case Se.KHR_TEXTURE_TRANSFORM:s[u]=new Zo;break;case Se.KHR_MESH_QUANTIZATION:s[u]=new $o;break;default:m.indexOf(u)>=0&&c[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}a.setExtensions(s),a.setPlugins(c),a.parse(n,r)}parseAsync(e,t){const n=this;return new Promise(function(r,o){n.parse(e,t,r,o)})}}function xo(){let i={};return{get:function(e){return i[e]},add:function(e,t){i[e]=t},remove:function(e){delete i[e]},removeAll:function(){i={}}}}const Se={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Lo{constructor(e){this.parser=e,this.name=Se.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){const o=t[n];o.extensions&&o.extensions[this.name]&&o.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,o.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let r=t.cache.get(n);if(r)return r;const o=t.json,A=((o.extensions&&o.extensions[this.name]||{}).lights||[])[e];let a;const d=new E.Color(16777215);A.color!==void 0&&d.setRGB(A.color[0],A.color[1],A.color[2],E.LinearSRGBColorSpace);const u=A.range!==void 0?A.range:0;switch(A.type){case"directional":a=new E.DirectionalLight(d),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new E.PointLight(d),a.distance=u;break;case"spot":a=new E.SpotLight(d),a.distance=u,A.spot=A.spot||{},A.spot.innerConeAngle=A.spot.innerConeAngle!==void 0?A.spot.innerConeAngle:0,A.spot.outerConeAngle=A.spot.outerConeAngle!==void 0?A.spot.outerConeAngle:Math.PI/4,a.angle=A.spot.outerConeAngle,a.penumbra=1-A.spot.innerConeAngle/A.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+A.type)}return a.position.set(0,0,0),rt(a,A),A.intensity!==void 0&&(a.intensity=A.intensity),a.name=t.createUniqueName(A.name||"light_"+e),r=Promise.resolve(a),t.cache.add(n,r),r}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,o=n.json.nodes[e],c=(o.extensions&&o.extensions[this.name]||{}).light;return c===void 0?null:this._loadLight(c).then(function(A){return n._getNodeRef(t.cache,c,A)})}}class _o{constructor(){this.name=Se.KHR_MATERIALS_UNLIT}getMaterialType(){return E.MeshBasicMaterial}extendParams(e,t,n){const r=[];e.color=new E.Color(1,1,1),e.opacity=1;const o=t.pbrMetallicRoughness;if(o){if(Array.isArray(o.baseColorFactor)){const s=o.baseColorFactor;e.color.setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace),e.opacity=s[3]}o.baseColorTexture!==void 0&&r.push(n.assignTexture(e,"map",o.baseColorTexture,E.SRGBColorSpace))}return Promise.all(r)}}class Do{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=r.extensions[this.name].emissiveStrength;return o!==void 0&&(t.emissiveIntensity=o),Promise.resolve()}}class No{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];if(s.clearcoatFactor!==void 0&&(t.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&o.push(n.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&o.push(n.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(o.push(n.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const c=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new E.Vector2(c,c)}return Promise.all(o)}}class Fo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_DISPERSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=r.extensions[this.name];return t.dispersion=o.dispersion!==void 0?o.dispersion:0,Promise.resolve()}}class Oo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];return s.iridescenceFactor!==void 0&&(t.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&o.push(n.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(t.iridescenceIOR=s.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&o.push(n.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(o)}}class Mo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[];t.sheenColor=new E.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const s=r.extensions[this.name];if(s.sheenColorFactor!==void 0){const c=s.sheenColorFactor;t.sheenColor.setRGB(c[0],c[1],c[2],E.LinearSRGBColorSpace)}return s.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&o.push(n.assignTexture(t,"sheenColorMap",s.sheenColorTexture,E.SRGBColorSpace)),s.sheenRoughnessTexture!==void 0&&o.push(n.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(o)}}class Po{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];return s.transmissionFactor!==void 0&&(t.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&o.push(n.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(o)}}class Go{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];t.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&o.push(n.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const c=s.attenuationColor||[1,1,1];return t.attenuationColor=new E.Color().setRGB(c[0],c[1],c[2],E.LinearSRGBColorSpace),Promise.all(o)}}class Uo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=r.extensions[this.name];return t.ior=o.ior!==void 0?o.ior:1.5,Promise.resolve()}}class jo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];t.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&o.push(n.assignTexture(t,"specularIntensityMap",s.specularTexture));const c=s.specularColorFactor||[1,1,1];return t.specularColor=new E.Color().setRGB(c[0],c[1],c[2],E.LinearSRGBColorSpace),s.specularColorTexture!==void 0&&o.push(n.assignTexture(t,"specularColorMap",s.specularColorTexture,E.SRGBColorSpace)),Promise.all(o)}}class Ho{constructor(e){this.parser=e,this.name=Se.EXT_MATERIALS_BUMP}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];return t.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&o.push(n.assignTexture(t,"bumpMap",s.bumpTexture)),Promise.all(o)}}class qo{constructor(e){this.parser=e,this.name=Se.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:E.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const o=[],s=r.extensions[this.name];return s.anisotropyStrength!==void 0&&(t.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(t.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&o.push(n.assignTexture(t,"anisotropyMap",s.anisotropyTexture)),Promise.all(o)}}class zo{constructor(e){this.parser=e,this.name=Se.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;const o=r.extensions[this.name],s=t.options.ktx2Loader;if(!s){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,o.source,s)}}class Vo{constructor(e){this.parser=e,this.name=Se.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,n=this.parser,r=n.json,o=r.textures[e];if(!o.extensions||!o.extensions[t])return null;const s=o.extensions[t],c=r.images[s.source];let A=n.textureLoader;if(c.uri){const a=n.options.manager.getHandler(c.uri);a!==null&&(A=a)}return n.loadTextureImage(e,s.source,A)}}class Ko{constructor(e){this.parser=e,this.name=Se.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,n=this.parser,r=n.json,o=r.textures[e];if(!o.extensions||!o.extensions[t])return null;const s=o.extensions[t],c=r.images[s.source];let A=n.textureLoader;if(c.uri){const a=n.options.manager.getHandler(c.uri);a!==null&&(A=a)}return n.loadTextureImage(e,s.source,A)}}class Wo{constructor(e){this.name=Se.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const r=n.extensions[this.name],o=this.parser.getDependency("buffer",r.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return o.then(function(c){const A=r.byteOffset||0,a=r.byteLength||0,d=r.count,u=r.byteStride,m=new Uint8Array(c,A,a);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(d,u,m,r.mode,r.filter).then(function(p){return p.buffer}):s.ready.then(function(){const p=new ArrayBuffer(d*u);return s.decodeGltfBuffer(new Uint8Array(p),d,u,m,r.mode,r.filter),p})})}else return null}}class Yo{constructor(e){this.name=Se.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const r=t.meshes[n.mesh];for(const a of r.primitives)if(a.mode!==$e.TRIANGLES&&a.mode!==$e.TRIANGLE_STRIP&&a.mode!==$e.TRIANGLE_FAN&&a.mode!==void 0)return null;const s=n.extensions[this.name].attributes,c=[],A={};for(const a in s)c.push(this.parser.getDependency("accessor",s[a]).then(d=>(A[a]=d,A[a])));return c.length<1?null:(c.push(this.parser.createNodeMesh(e)),Promise.all(c).then(a=>{const d=a.pop(),u=d.isGroup?d.children:[d],m=a[0].count,p=[];for(const I of u){const g=new E.Matrix4,l=new E.Vector3,h=new E.Quaternion,f=new E.Vector3(1,1,1),C=new E.InstancedMesh(I.geometry,I.material,m);for(let b=0;b<m;b++)A.TRANSLATION&&l.fromBufferAttribute(A.TRANSLATION,b),A.ROTATION&&h.fromBufferAttribute(A.ROTATION,b),A.SCALE&&f.fromBufferAttribute(A.SCALE,b),C.setMatrixAt(b,g.compose(l,h,f));for(const b in A)if(b==="_COLOR_0"){const y=A[b];C.instanceColor=new E.InstancedBufferAttribute(y.array,y.itemSize,y.normalized)}else b!=="TRANSLATION"&&b!=="ROTATION"&&b!=="SCALE"&&I.geometry.setAttribute(b,A[b]);E.Object3D.prototype.copy.call(C,I),this.parser.assignFinalMaterial(C),p.push(C)}return d.isGroup?(d.clear(),d.add(...p),d):p[0]}))}}const yi="glTF",Bt=12,Mn={JSON:1313821514,BIN:5130562};class Jo{constructor(e){this.name=Se.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Bt),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==yi)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-Bt,o=new DataView(e,Bt);let s=0;for(;s<r;){const c=o.getUint32(s,!0);s+=4;const A=o.getUint32(s,!0);if(s+=4,A===Mn.JSON){const a=new Uint8Array(e,Bt+s,c);this.content=n.decode(a)}else if(A===Mn.BIN){const a=Bt+s;this.body=e.slice(a,a+c)}s+=c}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Xo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Se.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,r=this.dracoLoader,o=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,c={},A={},a={};for(const d in s){const u=An[d]||d.toLowerCase();c[u]=s[d]}for(const d in e.attributes){const u=An[d]||d.toLowerCase();if(s[d]!==void 0){const m=n.accessors[e.attributes[d]],p=Ct[m.componentType];a[u]=p.name,A[u]=m.normalized===!0}}return t.getDependency("bufferView",o).then(function(d){return new Promise(function(u,m){r.decodeDracoFile(d,function(p){for(const I in p.attributes){const g=p.attributes[I],l=A[I];l!==void 0&&(g.normalized=l)}u(p)},c,a,E.LinearSRGBColorSpace,m)})})}}class Zo{constructor(){this.name=Se.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class $o{constructor(){this.name=Se.KHR_MESH_QUANTIZATION}}class Bi extends E.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,o=e*r*3+r;for(let s=0;s!==r;s++)t[s]=n[o+s];return t}interpolate_(e,t,n,r){const o=this.resultBuffer,s=this.sampleValues,c=this.valueSize,A=c*2,a=c*3,d=r-t,u=(n-t)/d,m=u*u,p=m*u,I=e*a,g=I-a,l=-2*p+3*m,h=p-m,f=1-l,C=h-m+u;for(let b=0;b!==c;b++){const y=s[g+b+c],R=s[g+b+A]*d,x=s[I+b+c],q=s[I+b]*d;o[b]=f*y+C*R+l*x+h*q}return o}}const es=new E.Quaternion;class ts extends Bi{interpolate_(e,t,n,r){const o=super.interpolate_(e,t,n,r);return es.fromArray(o).normalize().toArray(o),o}}const $e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Ct={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Pn={9728:E.NearestFilter,9729:E.LinearFilter,9984:E.NearestMipmapNearestFilter,9985:E.LinearMipmapNearestFilter,9986:E.NearestMipmapLinearFilter,9987:E.LinearMipmapLinearFilter},Gn={33071:E.ClampToEdgeWrapping,33648:E.MirroredRepeatWrapping,10497:E.RepeatWrapping},Kt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},An={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ut={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},ns={CUBICSPLINE:void 0,LINEAR:E.InterpolateLinear,STEP:E.InterpolateDiscrete},Wt={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function is(i){return i.DefaultMaterial===void 0&&(i.DefaultMaterial=new E.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:E.FrontSide})),i.DefaultMaterial}function dt(i,e,t){for(const n in t.extensions)i[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function rt(i,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(i.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function rs(i,e,t){let n=!1,r=!1,o=!1;for(let a=0,d=e.length;a<d;a++){const u=e[a];if(u.POSITION!==void 0&&(n=!0),u.NORMAL!==void 0&&(r=!0),u.COLOR_0!==void 0&&(o=!0),n&&r&&o)break}if(!n&&!r&&!o)return Promise.resolve(i);const s=[],c=[],A=[];for(let a=0,d=e.length;a<d;a++){const u=e[a];if(n){const m=u.POSITION!==void 0?t.getDependency("accessor",u.POSITION):i.attributes.position;s.push(m)}if(r){const m=u.NORMAL!==void 0?t.getDependency("accessor",u.NORMAL):i.attributes.normal;c.push(m)}if(o){const m=u.COLOR_0!==void 0?t.getDependency("accessor",u.COLOR_0):i.attributes.color;A.push(m)}}return Promise.all([Promise.all(s),Promise.all(c),Promise.all(A)]).then(function(a){const d=a[0],u=a[1],m=a[2];return n&&(i.morphAttributes.position=d),r&&(i.morphAttributes.normal=u),o&&(i.morphAttributes.color=m),i.morphTargetsRelative=!0,i})}function os(i,e){if(i.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)i.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(i.morphTargetInfluences.length===t.length){i.morphTargetDictionary={};for(let n=0,r=t.length;n<r;n++)i.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function ss(i){let e;const t=i.extensions&&i.extensions[Se.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+Yt(t.attributes):e=i.indices+":"+Yt(i.attributes)+":"+i.mode,i.targets!==void 0)for(let n=0,r=i.targets.length;n<r;n++)e+=":"+Yt(i.targets[n]);return e}function Yt(i){let e="";const t=Object.keys(i).sort();for(let n=0,r=t.length;n<r;n++)e+=t[n]+":"+i[t[n]]+";";return e}function cn(i){switch(i){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function as(i){return i.search(/\.jpe?g($|\?)/i)>0||i.search(/^data\:image\/jpeg/)===0?"image/jpeg":i.search(/\.webp($|\?)/i)>0||i.search(/^data\:image\/webp/)===0?"image/webp":i.search(/\.ktx2($|\?)/i)>0||i.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const As=new E.Matrix4;class cs{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new xo,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,o=!1,s=-1;if(typeof navigator<"u"){const c=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(c)===!0;const A=c.match(/Version\/(\d+)/);r=n&&A?parseInt(A[1],10):-1,o=c.indexOf("Firefox")>-1,s=o?c.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&r<17||o&&s<98?this.textureLoader=new E.TextureLoader(this.options.manager):this.textureLoader=new E.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new E.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,r=this.json,o=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(s){const c={scene:s[0][r.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:r.asset,parser:n,userData:{}};return dt(o,c,r),rt(c,r),Promise.all(n._invokeAll(function(A){return A.afterRoot&&A.afterRoot(c)})).then(function(){for(const A of c.scenes)A.updateMatrixWorld();e(c)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let r=0,o=t.length;r<o;r++){const s=t[r].joints;for(let c=0,A=s.length;c<A;c++)e[s[c]].isBone=!0}for(let r=0,o=e.length;r<o;r++){const s=e[r];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(n[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const r=n.clone(),o=(s,c)=>{const A=this.associations.get(s);A!=null&&this.associations.set(c,A);for(const[a,d]of s.children.entries())o(d,c.children[a])};return o(n,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const r=e(t[n]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let r=0;r<t.length;r++){const o=e(t[r]);o&&n.push(o)}return n}getDependency(e,t){const n=e+":"+t;let r=this.cache.get(n);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this._invokeOne(function(o){return o.loadNode&&o.loadNode(t)});break;case"mesh":r=this._invokeOne(function(o){return o.loadMesh&&o.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(o){return o.loadBufferView&&o.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(o){return o.loadMaterial&&o.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(o){return o.loadTexture&&o.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this._invokeOne(function(o){return o.loadAnimation&&o.loadAnimation(t)});break;case"camera":r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(o){return o!=this&&o.getDependency&&o.getDependency(e,t)}),!r)throw new Error("Unknown type: "+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,r=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(r.map(function(o,s){return n.getDependency(e,s)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[Se.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(o,s){n.load(E.LoaderUtils.resolveURL(t.uri,r.path),o,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const r=t.byteLength||0,o=t.byteOffset||0;return n.slice(o,o+r)})}loadAccessor(e){const t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){const s=Kt[r.type],c=Ct[r.componentType],A=r.normalized===!0,a=new c(r.count*s);return Promise.resolve(new E.BufferAttribute(a,s,A))}const o=[];return r.bufferView!==void 0?o.push(this.getDependency("bufferView",r.bufferView)):o.push(null),r.sparse!==void 0&&(o.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),o.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(o).then(function(s){const c=s[0],A=Kt[r.type],a=Ct[r.componentType],d=a.BYTES_PER_ELEMENT,u=d*A,m=r.byteOffset||0,p=r.bufferView!==void 0?n.bufferViews[r.bufferView].byteStride:void 0,I=r.normalized===!0;let g,l;if(p&&p!==u){const h=Math.floor(m/p),f="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+h+":"+r.count;let C=t.cache.get(f);C||(g=new a(c,h*p,r.count*p/d),C=new E.InterleavedBuffer(g,p/d),t.cache.add(f,C)),l=new E.InterleavedBufferAttribute(C,A,m%p/d,I)}else c===null?g=new a(r.count*A):g=new a(c,m,r.count*A),l=new E.BufferAttribute(g,A,I);if(r.sparse!==void 0){const h=Kt.SCALAR,f=Ct[r.sparse.indices.componentType],C=r.sparse.indices.byteOffset||0,b=r.sparse.values.byteOffset||0,y=new f(s[1],C,r.sparse.count*h),R=new a(s[2],b,r.sparse.count*A);c!==null&&(l=new E.BufferAttribute(l.array.slice(),l.itemSize,l.normalized)),l.normalized=!1;for(let x=0,q=y.length;x<q;x++){const v=y[x];if(l.setX(v,R[x*A]),A>=2&&l.setY(v,R[x*A+1]),A>=3&&l.setZ(v,R[x*A+2]),A>=4&&l.setW(v,R[x*A+3]),A>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}l.normalized=I}return l})}loadTexture(e){const t=this.json,n=this.options,o=t.textures[e].source,s=t.images[o];let c=this.textureLoader;if(s.uri){const A=n.manager.getHandler(s.uri);A!==null&&(c=A)}return this.loadTextureImage(e,o,c)}loadTextureImage(e,t,n){const r=this,o=this.json,s=o.textures[e],c=o.images[t],A=(c.uri||c.bufferView)+":"+s.sampler;if(this.textureCache[A])return this.textureCache[A];const a=this.loadImageSource(t,n).then(function(d){d.flipY=!1,d.name=s.name||c.name||"",d.name===""&&typeof c.uri=="string"&&c.uri.startsWith("data:image/")===!1&&(d.name=c.uri);const m=(o.samplers||{})[s.sampler]||{};return d.magFilter=Pn[m.magFilter]||E.LinearFilter,d.minFilter=Pn[m.minFilter]||E.LinearMipmapLinearFilter,d.wrapS=Gn[m.wrapS]||E.RepeatWrapping,d.wrapT=Gn[m.wrapT]||E.RepeatWrapping,d.generateMipmaps=!d.isCompressedTexture&&d.minFilter!==E.NearestFilter&&d.minFilter!==E.LinearFilter,r.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[A]=a,a}loadImageSource(e,t){const n=this,r=this.json,o=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const s=r.images[e],c=self.URL||self.webkitURL;let A=s.uri||"",a=!1;if(s.bufferView!==void 0)A=n.getDependency("bufferView",s.bufferView).then(function(u){a=!0;const m=new Blob([u],{type:s.mimeType});return A=c.createObjectURL(m),A});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(A).then(function(u){return new Promise(function(m,p){let I=m;t.isImageBitmapLoader===!0&&(I=function(g){const l=new E.Texture(g);l.needsUpdate=!0,m(l)}),t.load(E.LoaderUtils.resolveURL(u,o.path),I,void 0,p)})}).then(function(u){return a===!0&&c.revokeObjectURL(A),rt(u,s),u.userData.mimeType=s.mimeType||as(s.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",A),u});return this.sourceCache[e]=d,d}assignTexture(e,t,n,r){const o=this;return this.getDependency("texture",n.index).then(function(s){if(!s)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(s=s.clone(),s.channel=n.texCoord),o.extensions[Se.KHR_TEXTURE_TRANSFORM]){const c=n.extensions!==void 0?n.extensions[Se.KHR_TEXTURE_TRANSFORM]:void 0;if(c){const A=o.associations.get(s);s=o.extensions[Se.KHR_TEXTURE_TRANSFORM].extendTexture(s,c),o.associations.set(s,A)}}return r!==void 0&&(s.colorSpace=r),e[t]=s,s})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const r=t.attributes.tangent===void 0,o=t.attributes.color!==void 0,s=t.attributes.normal===void 0;if(e.isPoints){const c="PointsMaterial:"+n.uuid;let A=this.cache.get(c);A||(A=new E.PointsMaterial,E.Material.prototype.copy.call(A,n),A.color.copy(n.color),A.map=n.map,A.sizeAttenuation=!1,this.cache.add(c,A)),n=A}else if(e.isLine){const c="LineBasicMaterial:"+n.uuid;let A=this.cache.get(c);A||(A=new E.LineBasicMaterial,E.Material.prototype.copy.call(A,n),A.color.copy(n.color),A.map=n.map,this.cache.add(c,A)),n=A}if(r||o||s){let c="ClonedMaterial:"+n.uuid+":";r&&(c+="derivative-tangents:"),o&&(c+="vertex-colors:"),s&&(c+="flat-shading:");let A=this.cache.get(c);A||(A=n.clone(),o&&(A.vertexColors=!0),s&&(A.flatShading=!0),r&&(A.normalScale&&(A.normalScale.y*=-1),A.clearcoatNormalScale&&(A.clearcoatNormalScale.y*=-1)),this.cache.add(c,A),this.associations.set(A,this.associations.get(n))),n=A}e.material=n}getMaterialType(){return E.MeshStandardMaterial}loadMaterial(e){const t=this,n=this.json,r=this.extensions,o=n.materials[e];let s;const c={},A=o.extensions||{},a=[];if(A[Se.KHR_MATERIALS_UNLIT]){const u=r[Se.KHR_MATERIALS_UNLIT];s=u.getMaterialType(),a.push(u.extendParams(c,o,t))}else{const u=o.pbrMetallicRoughness||{};if(c.color=new E.Color(1,1,1),c.opacity=1,Array.isArray(u.baseColorFactor)){const m=u.baseColorFactor;c.color.setRGB(m[0],m[1],m[2],E.LinearSRGBColorSpace),c.opacity=m[3]}u.baseColorTexture!==void 0&&a.push(t.assignTexture(c,"map",u.baseColorTexture,E.SRGBColorSpace)),c.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,c.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(a.push(t.assignTexture(c,"metalnessMap",u.metallicRoughnessTexture)),a.push(t.assignTexture(c,"roughnessMap",u.metallicRoughnessTexture))),s=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),a.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,c)})))}o.doubleSided===!0&&(c.side=E.DoubleSide);const d=o.alphaMode||Wt.OPAQUE;if(d===Wt.BLEND?(c.transparent=!0,c.depthWrite=!1):(c.transparent=!1,d===Wt.MASK&&(c.alphaTest=o.alphaCutoff!==void 0?o.alphaCutoff:.5)),o.normalTexture!==void 0&&s!==E.MeshBasicMaterial&&(a.push(t.assignTexture(c,"normalMap",o.normalTexture)),c.normalScale=new E.Vector2(1,1),o.normalTexture.scale!==void 0)){const u=o.normalTexture.scale;c.normalScale.set(u,u)}if(o.occlusionTexture!==void 0&&s!==E.MeshBasicMaterial&&(a.push(t.assignTexture(c,"aoMap",o.occlusionTexture)),o.occlusionTexture.strength!==void 0&&(c.aoMapIntensity=o.occlusionTexture.strength)),o.emissiveFactor!==void 0&&s!==E.MeshBasicMaterial){const u=o.emissiveFactor;c.emissive=new E.Color().setRGB(u[0],u[1],u[2],E.LinearSRGBColorSpace)}return o.emissiveTexture!==void 0&&s!==E.MeshBasicMaterial&&a.push(t.assignTexture(c,"emissiveMap",o.emissiveTexture,E.SRGBColorSpace)),Promise.all(a).then(function(){const u=new s(c);return o.name&&(u.name=o.name),rt(u,o),t.associations.set(u,{materials:e}),o.extensions&&dt(r,u,o),u})}createUniqueName(e){const t=E.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,r=this.primitiveCache;function o(c){return n[Se.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(c,t).then(function(A){return Un(A,c,t)})}const s=[];for(let c=0,A=e.length;c<A;c++){const a=e[c],d=ss(a),u=r[d];if(u)s.push(u.promise);else{let m;a.extensions&&a.extensions[Se.KHR_DRACO_MESH_COMPRESSION]?m=o(a):m=Un(new E.BufferGeometry,a,t),r[d]={primitive:a,promise:m},s.push(m)}}return Promise.all(s)}loadMesh(e){const t=this,n=this.json,r=this.extensions,o=n.meshes[e],s=o.primitives,c=[];for(let A=0,a=s.length;A<a;A++){const d=s[A].material===void 0?is(this.cache):this.getDependency("material",s[A].material);c.push(d)}return c.push(t.loadGeometries(s)),Promise.all(c).then(function(A){const a=A.slice(0,A.length-1),d=A[A.length-1],u=[];for(let p=0,I=d.length;p<I;p++){const g=d[p],l=s[p];let h;const f=a[p];if(l.mode===$e.TRIANGLES||l.mode===$e.TRIANGLE_STRIP||l.mode===$e.TRIANGLE_FAN||l.mode===void 0)h=o.isSkinnedMesh===!0?new E.SkinnedMesh(g,f):new E.Mesh(g,f),h.isSkinnedMesh===!0&&h.normalizeSkinWeights(),l.mode===$e.TRIANGLE_STRIP?h.geometry=On(h.geometry,E.TriangleStripDrawMode):l.mode===$e.TRIANGLE_FAN&&(h.geometry=On(h.geometry,E.TriangleFanDrawMode));else if(l.mode===$e.LINES)h=new E.LineSegments(g,f);else if(l.mode===$e.LINE_STRIP)h=new E.Line(g,f);else if(l.mode===$e.LINE_LOOP)h=new E.LineLoop(g,f);else if(l.mode===$e.POINTS)h=new E.Points(g,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+l.mode);Object.keys(h.geometry.morphAttributes).length>0&&os(h,o),h.name=t.createUniqueName(o.name||"mesh_"+e),rt(h,o),l.extensions&&dt(r,h,l),t.assignFinalMaterial(h),u.push(h)}for(let p=0,I=u.length;p<I;p++)t.associations.set(u[p],{meshes:e,primitives:p});if(u.length===1)return o.extensions&&dt(r,u[0],o),u[0];const m=new E.Group;o.extensions&&dt(r,m,o),t.associations.set(m,{meshes:e});for(let p=0,I=u.length;p<I;p++)m.add(u[p]);return m})}loadCamera(e){let t;const n=this.json.cameras[e],r=n[n.type];if(!r){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new E.PerspectiveCamera(E.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type==="orthographic"&&(t=new E.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),rt(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let r=0,o=t.joints.length;r<o;r++)n.push(this._loadNodeShallow(t.joints[r]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(r){const o=r.pop(),s=r,c=[],A=[];for(let a=0,d=s.length;a<d;a++){const u=s[a];if(u){c.push(u);const m=new E.Matrix4;o!==null&&m.fromArray(o.array,a*16),A.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[a])}return new E.Skeleton(c,A)})}loadAnimation(e){const t=this.json,n=this,r=t.animations[e],o=r.name?r.name:"animation_"+e,s=[],c=[],A=[],a=[],d=[];for(let u=0,m=r.channels.length;u<m;u++){const p=r.channels[u],I=r.samplers[p.sampler],g=p.target,l=g.node,h=r.parameters!==void 0?r.parameters[I.input]:I.input,f=r.parameters!==void 0?r.parameters[I.output]:I.output;g.node!==void 0&&(s.push(this.getDependency("node",l)),c.push(this.getDependency("accessor",h)),A.push(this.getDependency("accessor",f)),a.push(I),d.push(g))}return Promise.all([Promise.all(s),Promise.all(c),Promise.all(A),Promise.all(a),Promise.all(d)]).then(function(u){const m=u[0],p=u[1],I=u[2],g=u[3],l=u[4],h=[];for(let C=0,b=m.length;C<b;C++){const y=m[C],R=p[C],x=I[C],q=g[C],v=l[C];if(y===void 0)continue;y.updateMatrix&&y.updateMatrix();const G=n._createAnimationTracks(y,R,x,q,v);if(G)for(let D=0;D<G.length;D++)h.push(G[D])}const f=new E.AnimationClip(o,void 0,h);return rt(f,r),f})}createNodeMesh(e){const t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency("mesh",r.mesh).then(function(o){const s=n._getNodeRef(n.meshCache,r.mesh,o);return r.weights!==void 0&&s.traverse(function(c){if(c.isMesh)for(let A=0,a=r.weights.length;A<a;A++)c.morphTargetInfluences[A]=r.weights[A]}),s})}loadNode(e){const t=this.json,n=this,r=t.nodes[e],o=n._loadNodeShallow(e),s=[],c=r.children||[];for(let a=0,d=c.length;a<d;a++)s.push(n.getDependency("node",c[a]));const A=r.skin===void 0?Promise.resolve(null):n.getDependency("skin",r.skin);return Promise.all([o,Promise.all(s),A]).then(function(a){const d=a[0],u=a[1],m=a[2];m!==null&&d.traverse(function(p){p.isSkinnedMesh&&p.bind(m,As)});for(let p=0,I=u.length;p<I;p++)d.add(u[p]);return d})}_loadNodeShallow(e){const t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const o=t.nodes[e],s=o.name?r.createUniqueName(o.name):"",c=[],A=r._invokeOne(function(a){return a.createNodeMesh&&a.createNodeMesh(e)});return A&&c.push(A),o.camera!==void 0&&c.push(r.getDependency("camera",o.camera).then(function(a){return r._getNodeRef(r.cameraCache,o.camera,a)})),r._invokeAll(function(a){return a.createNodeAttachment&&a.createNodeAttachment(e)}).forEach(function(a){c.push(a)}),this.nodeCache[e]=Promise.all(c).then(function(a){let d;if(o.isBone===!0?d=new E.Bone:a.length>1?d=new E.Group:a.length===1?d=a[0]:d=new E.Object3D,d!==a[0])for(let u=0,m=a.length;u<m;u++)d.add(a[u]);if(o.name&&(d.userData.name=o.name,d.name=s),rt(d,o),o.extensions&&dt(n,d,o),o.matrix!==void 0){const u=new E.Matrix4;u.fromArray(o.matrix),d.applyMatrix4(u)}else o.translation!==void 0&&d.position.fromArray(o.translation),o.rotation!==void 0&&d.quaternion.fromArray(o.rotation),o.scale!==void 0&&d.scale.fromArray(o.scale);if(!r.associations.has(d))r.associations.set(d,{});else if(o.mesh!==void 0&&r.meshCache.refs[o.mesh]>1){const u=r.associations.get(d);r.associations.set(d,{...u})}return r.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],r=this,o=new E.Group;n.name&&(o.name=r.createUniqueName(n.name)),rt(o,n),n.extensions&&dt(t,o,n);const s=n.nodes||[],c=[];for(let A=0,a=s.length;A<a;A++)c.push(r.getDependency("node",s[A]));return Promise.all(c).then(function(A){for(let d=0,u=A.length;d<u;d++)o.add(A[d]);const a=d=>{const u=new Map;for(const[m,p]of r.associations)(m instanceof E.Material||m instanceof E.Texture)&&u.set(m,p);return d.traverse(m=>{const p=r.associations.get(m);p!=null&&u.set(m,p)}),u};return r.associations=a(o),o})}_createAnimationTracks(e,t,n,r,o){const s=[],c=e.name?e.name:e.uuid,A=[];ut[o.path]===ut.weights?e.traverse(function(m){m.morphTargetInfluences&&A.push(m.name?m.name:m.uuid)}):A.push(c);let a;switch(ut[o.path]){case ut.weights:a=E.NumberKeyframeTrack;break;case ut.rotation:a=E.QuaternionKeyframeTrack;break;case ut.translation:case ut.scale:a=E.VectorKeyframeTrack;break;default:n.itemSize===1?a=E.NumberKeyframeTrack:a=E.VectorKeyframeTrack;break}const d=r.interpolation!==void 0?ns[r.interpolation]:E.InterpolateLinear,u=this._getArrayFromAccessor(n);for(let m=0,p=A.length;m<p;m++){const I=new a(A[m]+"."+ut[o.path],t.array,u,d);r.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(I),s.push(I)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const n=cn(t.constructor),r=new Float32Array(t.length);for(let o=0,s=t.length;o<s;o++)r[o]=t[o]*n;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){const r=this instanceof E.QuaternionKeyframeTrack?ts:Bi;return new r(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ls(i,e,t){const n=e.attributes,r=new E.Box3;if(n.POSITION!==void 0){const c=t.json.accessors[n.POSITION],A=c.min,a=c.max;if(A!==void 0&&a!==void 0){if(r.set(new E.Vector3(A[0],A[1],A[2]),new E.Vector3(a[0],a[1],a[2])),c.normalized){const d=cn(Ct[c.componentType]);r.min.multiplyScalar(d),r.max.multiplyScalar(d)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const o=e.targets;if(o!==void 0){const c=new E.Vector3,A=new E.Vector3;for(let a=0,d=o.length;a<d;a++){const u=o[a];if(u.POSITION!==void 0){const m=t.json.accessors[u.POSITION],p=m.min,I=m.max;if(p!==void 0&&I!==void 0){if(A.setX(Math.max(Math.abs(p[0]),Math.abs(I[0]))),A.setY(Math.max(Math.abs(p[1]),Math.abs(I[1]))),A.setZ(Math.max(Math.abs(p[2]),Math.abs(I[2]))),m.normalized){const g=cn(Ct[m.componentType]);A.multiplyScalar(g)}c.max(A)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(c)}i.boundingBox=r;const s=new E.Sphere;r.getCenter(s.center),s.radius=r.min.distanceTo(r.max)/2,i.boundingSphere=s}function Un(i,e,t){const n=e.attributes,r=[];function o(s,c){return t.getDependency("accessor",s).then(function(A){i.setAttribute(c,A)})}for(const s in n){const c=An[s]||s.toLowerCase();c in i.attributes||r.push(o(n[s],c))}if(e.indices!==void 0&&!i.index){const s=t.getDependency("accessor",e.indices).then(function(c){i.setIndex(c)});r.push(s)}return E.ColorManagement.workingColorSpace!==E.LinearSRGBColorSpace&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${E.ColorManagement.workingColorSpace}" not supported.`),rt(i,e),ls(i,e,t),Promise.all(r).then(function(){return e.targets!==void 0?rs(i,e.targets,t):i})}const Jt=new WeakMap;class us extends E.Loader{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,n,r){const o=new E.FileLoader(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,s=>{this.parse(s,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,E.SRGBColorSpace,n).catch(n)}decodeDracoFile(e,t,n,r,o=E.LinearSRGBColorSpace,s=()=>{}){const c={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:o};return this.decodeGeometry(e,c).then(t).catch(s)}decodeGeometry(e,t){const n=JSON.stringify(t);if(Jt.has(e)){const A=Jt.get(e);if(A.key===n)return A.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 r;const o=this.workerNextTaskID++,s=e.byteLength,c=this._getWorker(o,s).then(A=>(r=A,new Promise((a,d)=>{r._callbacks[o]={resolve:a,reject:d},r.postMessage({type:"decode",id:o,taskConfig:t,buffer:e},[e])}))).then(A=>this._createGeometry(A.geometry));return c.catch(()=>!0).then(()=>{r&&o&&this._releaseTask(r,o)}),Jt.set(e,{key:n,promise:c}),c}_createGeometry(e){const t=new E.BufferGeometry;e.index&&t.setIndex(new E.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){const{name:r,array:o,itemSize:s,stride:c,vertexColorSpace:A}=e.attributes[n];let a;if(s===c)a=new E.BufferAttribute(o,s);else{const d=new E.InterleavedBuffer(o,c);a=new E.InterleavedBufferAttribute(d,s,0)}r==="color"&&(this._assignVertexColorSpace(a,A),a.normalized=!(o instanceof Float32Array)),t.setAttribute(r,a)}return t}_assignVertexColorSpace(e,t){if(t!==E.SRGBColorSpace)return;const n=new E.Color;for(let r=0,o=e.count;r<o;r++)n.fromBufferAttribute(e,r),E.ColorManagement.colorSpaceToWorking(n,E.SRGBColorSpace),e.setXYZ(r,n.r,n.g,n.b)}_loadLibrary(e,t){const n=new E.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((r,o)=>{n.load(e,r,void 0,o)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const 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(n=>{const r=n[0];e||(this.decoderConfig.wasmBinary=n[1]);const o=hs.toString(),s=["/* draco decoder */",r,"","/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
|
|
141
141
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const r=new Worker(this.workerSourceURL);r._callbacks={},r._taskCosts={},r._taskLoad=0,r.postMessage({type:"init",decoderConfig:this.decoderConfig}),r.onmessage=function(o){const s=o.data;switch(s.type){case"decode":r._callbacks[s.id].resolve(s);break;case"error":r._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(r)}else this.workerPool.sort(function(r,o){return r._taskLoad>o._taskLoad?-1:1});const n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_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.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function hs(){let i,e;onmessage=function(s){const c=s.data;switch(c.type){case"init":i=c.decoderConfig,e=new Promise(function(d){i.onModuleLoaded=function(u){d({draco:u})},DracoDecoderModule(i)});break;case"decode":const A=c.buffer,a=c.taskConfig;e.then(d=>{const u=d.draco,m=new u.Decoder;try{const p=t(u,m,new Int8Array(A),a),I=p.attributes.map(g=>g.array.buffer);p.index&&I.push(p.index.array.buffer),self.postMessage({type:"decode",id:c.id,geometry:p},I)}catch(p){console.error(p),self.postMessage({type:"error",id:c.id,error:p.message})}finally{u.destroy(m)}});break}};function t(s,c,A,a){const d=a.attributeIDs,u=a.attributeTypes;let m,p;const I=c.GetEncodedGeometryType(A);if(I===s.TRIANGULAR_MESH)m=new s.Mesh,p=c.DecodeArrayToMesh(A,A.byteLength,m);else if(I===s.POINT_CLOUD)m=new s.PointCloud,p=c.DecodeArrayToPointCloud(A,A.byteLength,m);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!p.ok()||m.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+p.error_msg());const g={index:null,attributes:[]};for(const l in d){const h=self[u[l]];let f,C;if(a.useUniqueIDs)C=d[l],f=c.GetAttributeByUniqueId(m,C);else{if(C=c.GetAttributeId(m,s[d[l]]),C===-1)continue;f=c.GetAttribute(m,C)}const b=r(s,c,m,l,h,f);l==="color"&&(b.vertexColorSpace=a.vertexColorSpace),g.attributes.push(b)}return I===s.TRIANGULAR_MESH&&(g.index=n(s,c,m)),s.destroy(m),g}function n(s,c,A){const d=A.num_faces()*3,u=d*4,m=s._malloc(u);c.GetTrianglesUInt32Array(A,u,m);const p=new Uint32Array(s.HEAPF32.buffer,m,d).slice();return s._free(m),{array:p,itemSize:1}}function r(s,c,A,a,d,u){const m=A.num_points(),p=u.num_components(),I=o(s,d),g=p*d.BYTES_PER_ELEMENT,l=Math.ceil(g/4)*4,h=l/d.BYTES_PER_ELEMENT,f=m*g,C=m*l,b=s._malloc(f);c.GetAttributeDataArrayForAllPoints(A,u,I,f,b);const y=new d(s.HEAPF32.buffer,b,f/d.BYTES_PER_ELEMENT);let R;if(g===l)R=y.slice();else{R=new d(C/d.BYTES_PER_ELEMENT);let x=0;for(let q=0,v=y.length;q<v;q++){for(let G=0;G<p;G++)R[x+G]=y[q*p+G];x+=h}}return s._free(b),{name:a,count:m,itemSize:p,array:R,stride:h}}function o(s,c){switch(c){case Float32Array:return s.DT_FLOAT32;case Int8Array:return s.DT_INT8;case Int16Array:return s.DT_INT16;case Int32Array:return s.DT_INT32;case Uint8Array:return s.DT_UINT8;case Uint16Array:return s.DT_UINT16;case Uint32Array:return s.DT_UINT32}}}class ds{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const n=this.workersResolve[e];if(n&&n(t),this.queue.length){const{resolve:r,msg:o,transfer:s}=this.queue.shift();this.workersResolve[e]=r,this.workers[e].postMessage(o,s)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(n=>{const r=this._getIdleWorker();r!==-1?(this._initWorker(r),this.workerStatus|=1<<r,this.workersResolve[r]=n,this.workers[r].postMessage(e,t)):this.queue.push({resolve:n,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const fs=0,jn=2,ps=1,Hn=2,gs=0,ms=1,Es=10,Is=0,Ti=9,wi=15,Ri=16,vi=22,Qi=37,ki=43,Si=76,xi=83,Li=97,_i=100,Di=103,Ni=109,Fi=122,Oi=123,Mi=131,Pi=132,Gi=133,Ui=134,ji=137,Hi=138,qi=139,zi=140,Vi=141,Ki=142,Wi=145,Yi=146,Ji=148,Xi=152,ln=153,bs=154,un=155,Cs=156,Zi=157,$i=158,er=165,tr=166,nr=1000054e3,ir=1000054001,rr=1000054004,or=1000054005,Tn=1000066e3,sr=1000066004;class Tt{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){const n=this._offset;let r=0;for(;this._dataView.getUint8(this._offset)!==t&&r<e;)r++,this._offset++;return r<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,r)}}const Ye=[171,75,84,88,32,50,48,187,13,10,26,10];function qn(i){return new TextDecoder().decode(i)}function ys(i){const e=new Uint8Array(i.buffer,i.byteOffset,Ye.length);if(e[0]!==Ye[0]||e[1]!==Ye[1]||e[2]!==Ye[2]||e[3]!==Ye[3]||e[4]!==Ye[4]||e[5]!==Ye[5]||e[6]!==Ye[6]||e[7]!==Ye[7]||e[8]!==Ye[8]||e[9]!==Ye[9]||e[10]!==Ye[10]||e[11]!==Ye[11])throw new Error("Missing KTX 2.0 identifier.");const t={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},n=17*Uint32Array.BYTES_PER_ELEMENT,r=new Tt(i,Ye.length,n,!0);t.vkFormat=r._nextUint32(),t.typeSize=r._nextUint32(),t.pixelWidth=r._nextUint32(),t.pixelHeight=r._nextUint32(),t.pixelDepth=r._nextUint32(),t.layerCount=r._nextUint32(),t.faceCount=r._nextUint32(),t.levelCount=r._nextUint32(),t.supercompressionScheme=r._nextUint32();const o=r._nextUint32(),s=r._nextUint32(),c=r._nextUint32(),A=r._nextUint32(),a=r._nextUint64(),d=r._nextUint64(),u=3*Math.max(t.levelCount,1)*8,m=new Tt(i,Ye.length+n,u,!0);for(let ie=0,Z=Math.max(t.levelCount,1);ie<Z;ie++)t.levels.push({levelData:new Uint8Array(i.buffer,i.byteOffset+m._nextUint64(),m._nextUint64()),uncompressedByteLength:m._nextUint64()});const p=new Tt(i,o,s,!0);p._skip(4);const I=p._nextUint16(),g=p._nextUint16(),l=p._nextUint16(),h=p._nextUint16(),f={vendorId:I,descriptorType:g,versionNumber:l,colorModel:p._nextUint8(),colorPrimaries:p._nextUint8(),transferFunction:p._nextUint8(),flags:p._nextUint8(),texelBlockDimension:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],bytesPlane:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],samples:[]},C=(h/4-6)/4;for(let ie=0;ie<C;ie++){const Z={bitOffset:p._nextUint16(),bitLength:p._nextUint8(),channelType:p._nextUint8(),samplePosition:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&Z.channelType?(Z.sampleLower=p._nextInt32(),Z.sampleUpper=p._nextInt32()):(Z.sampleLower=p._nextUint32(),Z.sampleUpper=p._nextUint32()),f.samples[ie]=Z}t.dataFormatDescriptor.length=0,t.dataFormatDescriptor.push(f);const b=new Tt(i,c,A,!0);for(;b._offset<A;){const ie=b._nextUint32(),Z=b._scan(ie),se=qn(Z);if(t.keyValue[se]=b._nextUint8Array(ie-Z.byteLength-1),se.match(/^ktx/i)){const de=qn(t.keyValue[se]);t.keyValue[se]=de.substring(0,de.lastIndexOf("\0"))}b._skip(ie%4?4-ie%4:0)}if(d<=0)return t;const y=new Tt(i,a,d,!0),R=y._nextUint16(),x=y._nextUint16(),q=y._nextUint32(),v=y._nextUint32(),G=y._nextUint32(),D=y._nextUint32(),Q=[];for(let ie=0,Z=Math.max(t.levelCount,1);ie<Z;ie++)Q.push({imageFlags:y._nextUint32(),rgbSliceByteOffset:y._nextUint32(),rgbSliceByteLength:y._nextUint32(),alphaSliceByteOffset:y._nextUint32(),alphaSliceByteLength:y._nextUint32()});const F=a+y._offset,L=F+q,J=L+v,$=J+G,j=new Uint8Array(i.buffer,i.byteOffset+F,q),ee=new Uint8Array(i.buffer,i.byteOffset+L,v),ne=new Uint8Array(i.buffer,i.byteOffset+J,G),ue=new Uint8Array(i.buffer,i.byteOffset+$,D);return t.globalData={endpointCount:R,selectorCount:x,imageDescs:Q,endpointsData:j,selectorsData:ee,tablesData:ne,extendedData:ue},t}let Xt,st,hn;const Zt={env:{emscripten_notify_memory_growth:function(i){hn=new Uint8Array(st.exports.memory.buffer)}}};class Bs{init(){return Xt||(Xt=typeof fetch<"u"?fetch("data:application/wasm;base64,"+zn).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Zt)).then(this._init):WebAssembly.instantiate(Buffer.from(zn,"base64"),Zt).then(this._init),Xt)}_init(e){st=e.instance,Zt.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!st)throw new Error("ZSTDDecoder: Await .init() before decoding.");const n=e.byteLength,r=st.exports.malloc(n);hn.set(e,r),t=t||Number(st.exports.ZSTD_findDecompressedSize(r,n));const o=st.exports.malloc(t),s=st.exports.ZSTD_decompress(o,t,r,n),c=hn.slice(o,o+s);return st.exports.free(r),st.exports.free(o),c}}const zn="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",Ts="display-p3",ws="display-p3-linear";({...E.ColorManagement.spaces[E.SRGBColorSpace]});const $t=new WeakMap;let en=0,tn;class et extends E.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new ds,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return console.warn('KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.'),await e.init(),this.detectSupport(e)}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-s3tc"),bptcSupported:e.hasFeature("texture-compression-bc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:(this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},typeof navigator<"u"&&navigator.platform.indexOf("Linux")>=0&&navigator.userAgent.indexOf("Firefox")>=0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){const e=new E.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),n=new E.FileLoader(this.manager);n.setPath(this.transcoderPath),n.setResponseType("arraybuffer"),n.setWithCredentials(this.withCredentials);const r=n.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,r]).then(([o,s])=>{const c=et.BasisWorker.toString(),A=["/* constants */","let _EngineFormat = "+JSON.stringify(et.EngineFormat),"let _EngineType = "+JSON.stringify(et.EngineType),"let _TranscoderFormat = "+JSON.stringify(et.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(et.BasisFormat),"/* basis_transcoder.js */",o,"/* worker */",c.substring(c.indexOf("{")+1,c.lastIndexOf("}"))].join(`
|
|
142
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const a=new Worker(this.workerSourceURL),d=this.transcoderBinary.slice(0);return a.postMessage({type:"init",config:this.workerConfig,transcoderBinary:d},[d]),a})}),en>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),en++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const o=new E.FileLoader(this.manager);o.setPath(this.path),o.setCrossOrigin(this.crossOrigin),o.setWithCredentials(this.withCredentials),o.setRequestHeader(this.requestHeader),o.setResponseType("arraybuffer"),o.load(e,s=>{this.parse(s,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if($t.has(e))return $t.get(e).promise.then(t).catch(n);this._createTexture(e).then(r=>t?t(r):null).catch(n)}_createTextureFrom(e,t){const{type:n,error:r,data:{faces:o,width:s,height:c,format:A,type:a,dfdFlags:d}}=e;if(n==="error")return Promise.reject(r);let u;if(t.faceCount===6)u=new E.CompressedCubeTexture(o,A,a);else{const m=o[0].mipmaps;u=t.layerCount>1?new E.CompressedArrayTexture(m,s,c,t.layerCount,A,a):new E.CompressedTexture(m,s,c,A,a)}return u.minFilter=o[0].mipmaps.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,u.magFilter=E.LinearFilter,u.generateMipmaps=!1,u.needsUpdate=!0,u.colorSpace=ar(t),u.premultiplyAlpha=!!(d&ps),u}async _createTexture(e,t={}){const n=ys(new Uint8Array(e)),r=n.vkFormat===Tn&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===Is||r&&!this.workerConfig.astcHDRSupported))return vs(n);const s=t,c=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:s},[e])).then(A=>this._createTextureFrom(A.data,n));return $t.set(e,{promise:c}),c}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),en--}}et.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2};et.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25};et.EngineFormat={RGBAFormat:E.RGBAFormat,RGBA_ASTC_4x4_Format:E.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:E.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:E.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:E.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:E.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:E.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:E.RGB_ETC1_Format,RGB_ETC2_Format:E.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:E.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:E.RGBA_S3TC_DXT1_Format};et.EngineType={UnsignedByteType:E.UnsignedByteType,HalfFloatType:E.HalfFloatType,FloatType:E.FloatType};et.BasisWorker=function(){let i,e,t;const n=_EngineFormat,r=_EngineType,o=_TranscoderFormat,s=_BasisFormat;self.addEventListener("message",function(I){const g=I.data;switch(g.type){case"init":i=g.config,c(g.transcoderBinary);break;case"transcode":e.then(()=>{try{const{faces:l,buffers:h,width:f,height:C,hasAlpha:b,format:y,type:R,dfdFlags:x}=A(g.buffer);self.postMessage({type:"transcode",id:g.id,data:{faces:l,width:f,height:C,hasAlpha:b,format:y,type:R,dfdFlags:x}},h)}catch(l){console.error(l),self.postMessage({type:"error",id:g.id,error:l.message})}});break}});function c(I){e=new Promise(g=>{t={wasmBinary:I,onRuntimeInitialized:g},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function A(I){const g=new t.KTX2File(new Uint8Array(I));function l(){g.close(),g.delete()}if(!g.isValid())throw l(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let h;if(g.isUASTC())h=s.UASTC;else if(g.isETC1S())h=s.ETC1S;else if(g.isHDR())h=s.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const f=g.getWidth(),C=g.getHeight(),b=g.getLayers()||1,y=g.getLevels(),R=g.getFaces(),x=g.getHasAlpha(),q=g.getDFDFlags(),{transcoderFormat:v,engineFormat:G,engineType:D}=u(h,f,C,x);if(!f||!C||!y)throw l(),new Error("THREE.KTX2Loader: Invalid texture");if(!g.startTranscoding())throw l(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Q=[],F=[];for(let L=0;L<R;L++){const J=[];for(let $=0;$<y;$++){const j=[];let ee,ne;for(let ie=0;ie<b;ie++){const Z=g.getImageLevelInfo($,ie,L);L===0&&$===0&&ie===0&&(Z.origWidth%4!==0||Z.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),y>1?(ee=Z.origWidth,ne=Z.origHeight):(ee=Z.width,ne=Z.height);let se=new Uint8Array(g.getImageTranscodedSizeInBytes($,ie,0,v));const de=g.transcodeImage(se,$,ie,L,v,0,-1,-1);if(D===r.HalfFloatType&&(se=new Uint16Array(se.buffer,se.byteOffset,se.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!de)throw l(),new Error("THREE.KTX2Loader: .transcodeImage failed.");j.push(se)}const ue=p(j);J.push({data:ue,width:ee,height:ne}),F.push(ue.buffer)}Q.push({mipmaps:J,width:f,height:C,format:G,type:D})}return l(),{faces:Q,buffers:F,width:f,height:C,hasAlpha:x,dfdFlags:q,format:G,type:D}}const a=[{if:"astcSupported",basisFormat:[s.UASTC],transcoderFormat:[o.ASTC_4x4,o.ASTC_4x4],engineFormat:[n.RGBA_ASTC_4x4_Format,n.RGBA_ASTC_4x4_Format],engineType:[r.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.BC7_M5,o.BC7_M5],engineFormat:[n.RGBA_BPTC_Format,n.RGBA_BPTC_Format],engineType:[r.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.BC1,o.BC3],engineFormat:[n.RGBA_S3TC_DXT1_Format,n.RGBA_S3TC_DXT5_Format],engineType:[r.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.ETC1,o.ETC2],engineFormat:[n.RGB_ETC2_Format,n.RGBA_ETC2_EAC_Format],engineType:[r.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.ETC1],engineFormat:[n.RGB_ETC1_Format],engineType:[r.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.PVRTC1_4_RGB,o.PVRTC1_4_RGBA],engineFormat:[n.RGB_PVRTC_4BPPV1_Format,n.RGBA_PVRTC_4BPPV1_Format],engineType:[r.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[s.UASTC_HDR],transcoderFormat:[o.BC6H],engineFormat:[n.RGB_BPTC_UNSIGNED_Format],engineType:[r.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.RGBA32,o.RGBA32],engineFormat:[n.RGBAFormat,n.RGBAFormat],engineType:[r.UnsignedByteType,r.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[s.UASTC_HDR],transcoderFormat:[o.RGBA_HALF],engineFormat:[n.RGBAFormat],engineType:[r.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],d={[s.ETC1S]:a.filter(I=>I.basisFormat.includes(s.ETC1S)).sort((I,g)=>I.priorityETC1S-g.priorityETC1S),[s.UASTC]:a.filter(I=>I.basisFormat.includes(s.UASTC)).sort((I,g)=>I.priorityUASTC-g.priorityUASTC),[s.UASTC_HDR]:a.filter(I=>I.basisFormat.includes(s.UASTC_HDR)).sort((I,g)=>I.priorityHDR-g.priorityHDR)};function u(I,g,l,h){const f=d[I];for(let C=0;C<f.length;C++){const b=f[C];if(b.if&&!i[b.if]||!b.basisFormat.includes(I)||h&&b.transcoderFormat.length<2||b.needsPowerOfTwo&&!(m(g)&&m(l)))continue;const y=b.transcoderFormat[h?1:0],R=b.engineFormat[h?1:0],x=b.engineType[0];return{transcoderFormat:y,engineFormat:R,engineType:x}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function m(I){return I<=2?!0:(I&I-1)===0&&I!==0}function p(I){if(I.length===1)return I[0];let g=0;for(let f=0;f<I.length;f++){const C=I[f];g+=C.byteLength}const l=new Uint8Array(g);let h=0;for(let f=0;f<I.length;f++){const C=I[f];l.set(C,h),h+=C.byteLength}return l}};const Rs=new Set([E.RGBAFormat,E.RGBFormat,E.RGFormat,E.RedFormat]),nn={[Ni]:E.RGBAFormat,[Di]:E.RGFormat,[_i]:E.RedFormat,[Li]:E.RGBAFormat,[xi]:E.RGFormat,[Si]:E.RedFormat,[ki]:E.RGBAFormat,[Qi]:E.RGBAFormat,[vi]:E.RGFormat,[Ri]:E.RGFormat,[wi]:E.RedFormat,[Ti]:E.RedFormat,[Oi]:E.RGBFormat,[Fi]:E.RGBFormat,[Xi]:E.RGBA_ETC2_EAC_Format,[Ji]:E.RGB_ETC2_Format,[ln]:E.R11_EAC_Format,[bs]:E.SIGNED_R11_EAC_Format,[un]:E.RG11_EAC_Format,[Cs]:E.SIGNED_RG11_EAC_Format,[Tn]:E.RGBA_ASTC_4x4_Format,[$i]:E.RGBA_ASTC_4x4_Format,[Zi]:E.RGBA_ASTC_4x4_Format,[sr]:E.RGBA_ASTC_6x6_Format,[tr]:E.RGBA_ASTC_6x6_Format,[er]:E.RGBA_ASTC_6x6_Format,[Ui]:E.RGBA_S3TC_DXT1_Format,[Gi]:E.RGBA_S3TC_DXT1_Format,[Pi]:E.RGB_S3TC_DXT1_Format,[Mi]:E.RGB_S3TC_DXT1_Format,[Hi]:E.RGBA_S3TC_DXT3_Format,[ji]:E.RGBA_S3TC_DXT3_Format,[zi]:E.SIGNED_RED_RGTC1_Format,[qi]:E.RED_RGTC1_Format,[Ki]:E.SIGNED_RED_GREEN_RGTC2_Format,[Vi]:E.RED_GREEN_RGTC2_Format,[Yi]:E.RGBA_BPTC_Format,[Wi]:E.RGBA_BPTC_Format,[or]:E.RGBA_PVRTC_4BPPV1_Format,[ir]:E.RGBA_PVRTC_4BPPV1_Format,[rr]:E.RGBA_PVRTC_2BPPV1_Format,[nr]:E.RGBA_PVRTC_2BPPV1_Format},It={[Ni]:E.FloatType,[Di]:E.FloatType,[_i]:E.FloatType,[Li]:E.HalfFloatType,[xi]:E.HalfFloatType,[Si]:E.HalfFloatType,[ki]:E.UnsignedByteType,[Qi]:E.UnsignedByteType,[vi]:E.UnsignedByteType,[Ri]:E.UnsignedByteType,[wi]:E.UnsignedByteType,[Ti]:E.UnsignedByteType,[Oi]:E.UnsignedInt5999Type,[Fi]:E.UnsignedInt101111Type,[Xi]:E.UnsignedByteType,[Ji]:E.UnsignedByteType,[ln]:E.UnsignedByteType,[ln]:E.UnsignedByteType,[un]:E.UnsignedByteType,[un]:E.UnsignedByteType,[Tn]:E.HalfFloatType,[$i]:E.UnsignedByteType,[Zi]:E.UnsignedByteType,[sr]:E.HalfFloatType,[tr]:E.UnsignedByteType,[er]:E.UnsignedByteType,[Ui]:E.UnsignedByteType,[Gi]:E.UnsignedByteType,[Pi]:E.UnsignedByteType,[Mi]:E.UnsignedByteType,[Hi]:E.UnsignedByteType,[ji]:E.UnsignedByteType,[zi]:E.UnsignedByteType,[qi]:E.UnsignedByteType,[Ki]:E.UnsignedByteType,[Vi]:E.UnsignedByteType,[Yi]:E.UnsignedByteType,[Wi]:E.UnsignedByteType,[or]:E.UnsignedByteType,[ir]:E.UnsignedByteType,[rr]:E.UnsignedByteType,[nr]:E.UnsignedByteType};async function vs(i){const{vkFormat:e}=i;if(nn[e]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat: "+e);It[e]===void 0&&console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: '+e);let t;i.supercompressionScheme===jn&&(tn||(tn=new Promise(async s=>{const c=new Bs;await c.init(),s(c)})),t=await tn);const n=[];for(let s=0;s<i.levels.length;s++){const c=Math.max(1,i.pixelWidth>>s),A=Math.max(1,i.pixelHeight>>s),a=i.pixelDepth?Math.max(1,i.pixelDepth>>s):0,d=i.levels[s];let u;if(i.supercompressionScheme===fs)u=d.levelData;else if(i.supercompressionScheme===jn)u=t.decode(d.levelData,d.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let m;It[e]===E.FloatType?m=new Float32Array(u.buffer,u.byteOffset,u.byteLength/Float32Array.BYTES_PER_ELEMENT):It[e]===E.HalfFloatType?m=new Uint16Array(u.buffer,u.byteOffset,u.byteLength/Uint16Array.BYTES_PER_ELEMENT):It[e]===E.UnsignedInt5999Type||It[e]===E.UnsignedInt101111Type?m=new Uint32Array(u.buffer,u.byteOffset,u.byteLength/Uint32Array.BYTES_PER_ELEMENT):m=u,n.push({data:m,width:c,height:A,depth:a})}const r=i.levelCount===0||n.length>1;let o;if(Rs.has(nn[e]))o=i.pixelDepth===0?new E.DataTexture(n[0].data,i.pixelWidth,i.pixelHeight):new E.Data3DTexture(n[0].data,i.pixelWidth,i.pixelHeight,i.pixelDepth),o.minFilter=r?E.NearestMipmapNearestFilter:E.NearestFilter,o.magFilter=E.NearestFilter,o.generateMipmaps=i.levelCount===0;else{if(i.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");o=new E.CompressedTexture(n,i.pixelWidth,i.pixelHeight),o.minFilter=r?E.LinearMipmapLinearFilter:E.LinearFilter,o.magFilter=E.LinearFilter}return o.mipmaps=n,o.type=It[e],o.format=nn[e],o.colorSpace=ar(i),o.needsUpdate=!0,Promise.resolve(o)}function ar(i){const e=i.dataFormatDescriptor[0];return e.colorPrimaries===ms?e.transferFunction===Hn?E.SRGBColorSpace:E.LinearSRGBColorSpace:e.colorPrimaries===Es?e.transferFunction===Hn?Ts:ws:(e.colorPrimaries===gs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),E.NoColorSpace)}var Ar=(function(){var i="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var r=WebAssembly.validate(t)?c(e):c(i),o,s=WebAssembly.instantiate(r,{}).then(function(h){o=h.instance,o.exports.__wasm_call_ctors()});function c(h){for(var f=new Uint8Array(h.length),C=0;C<h.length;++C){var b=h.charCodeAt(C);f[C]=b>96?b-97:b>64?b-39:b+4}for(var y=0,C=0;C<h.length;++C)f[y++]=f[C]<60?n[f[C]]:(f[C]-60)*64+f[++C];return f.buffer.slice(0,y)}function A(h,f,C,b,y,R,x){var q=h.exports.sbrk,v=b+3&-4,G=q(v*y),D=q(R.length),Q=new Uint8Array(h.exports.memory.buffer);Q.set(R,D);var F=f(G,b,y,D,R.length);if(F==0&&x&&x(G,v,y),C.set(Q.subarray(G,G+b*y)),q(G-q(0)),F!=0)throw new Error("Malformed buffer data: "+F)}var a={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},d={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],m=0;function p(h){var f={object:new Worker(h),pending:0,requests:{}};return f.object.onmessage=function(C){var b=C.data;f.pending-=b.count,f.requests[b.id][b.action](b.value),delete f.requests[b.id]},f}function I(h){for(var f="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(r)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+l.name+";"+A.toString()+l.toString(),C=new Blob([f],{type:"text/javascript"}),b=URL.createObjectURL(C),y=u.length;y<h;++y)u[y]=p(b);for(var y=h;y<u.length;++y)u[y].object.postMessage({});u.length=h,URL.revokeObjectURL(b)}function g(h,f,C,b,y){for(var R=u[0],x=1;x<u.length;++x)u[x].pending<R.pending&&(R=u[x]);return new Promise(function(q,v){var G=new Uint8Array(C),D=++m;R.pending+=h,R.requests[D]={resolve:q,reject:v},R.object.postMessage({id:D,count:h,size:f,source:G,mode:b,filter:y},[G.buffer])})}function l(h){var f=h.data;if(!f.id)return self.close();self.ready.then(function(C){try{var b=new Uint8Array(f.count*f.size);A(C,C.exports[f.mode],b,f.count,f.size,f.source,C.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:b},[b.buffer])}catch(y){self.postMessage({id:f.id,count:f.count,action:"reject",value:y})}})}return{ready:s,supported:!0,useWorkers:function(h){I(h)},decodeVertexBuffer:function(h,f,C,b,y){A(o,o.exports.meshopt_decodeVertexBuffer,h,f,C,b,o.exports[a[y]])},decodeIndexBuffer:function(h,f,C,b){A(o,o.exports.meshopt_decodeIndexBuffer,h,f,C,b)},decodeIndexSequence:function(h,f,C,b){A(o,o.exports.meshopt_decodeIndexSequence,h,f,C,b)},decodeGltfBuffer:function(h,f,C,b,y,R){A(o,o.exports[d[y]],h,f,C,b,o.exports[a[R]])},decodeGltfBufferAsync:function(h,f,C,b,y){return u.length>0?g(h,f,C,d[b],a[y]):s.then(function(){var R=new Uint8Array(h*f);return A(o,o.exports[d[b]],R,h,f,C,o.exports[a[y]]),R})}}})();function Qs(i){return"morphTargetDictionary"in i&&i.morphTargetDictionary!==void 0&&"morphTargetInfluences"in i&&Array.isArray(i.morphTargetInfluences)}const ks={draco:"https://unpkg.com/three@0.182/examples/jsm/libs/draco/",ktx2:"https://unpkg.com/three@0.182.0/examples/jsm/libs/basis/",meshopt:!0};function wn(i={}){const e={...ks,...i};let t=new Ci;const n=new us;if(n.setDecoderPath(e.draco),t.setDRACOLoader(n),e.renderer){const r=new et;r.setTranscoderPath(e.ktx2),r.detectSupport(e.renderer),t.setKTX2Loader(r)}e.meshopt&&t.setMeshoptDecoder(Ar),Rn=t}let Rn=new Ci;Rn.setMeshoptDecoder(Ar);class rn extends mn{constructor(e,t){super(e,t)}}class Ss extends bt{gltf;constructor(e){super(e)}async asyncInit(e){if(ei(e)){let t=null;this.gltf=await Rn.loadAsync(e);const n={},r={root:this.gltf.scene,bones:{},skeleton:void 0},o={};this.gltf.scene.traverse(s=>{if(s.userData.a3js={objectA3:this},Qs(s)){const{morphTargetDictionary:c,morphTargetInfluences:A}=s;Object.keys(c).forEach(a=>{const d=s.name+"."+a,u=c[a];o[d]={array:A,idx:u}})}s instanceof oe.Bone&&r.bones&&(r.bones[s.name]=s),s instanceof oe.SkinnedMesh&&(r.skeleton=s.skeleton)}),this.gltf.animations.forEach(s=>{t||(t=s.name),n[s.name]=new rn(r,new yn(s))}),t?this.syncInit(t,n,o):(t="dummy",n.dummy=new rn(r,new xn),this.syncInit(t,n,o))}else{const t=new oe.BoxGeometry,n=new oe.MeshStandardMaterial({color:16711680}),r=new oe.Mesh(t,n),o="dummy",s={};s.dummy=new rn({root:r},new xn),this.syncInit(o,s)}return this}}const cr={camera:void 0,antialias:!1,transparent:!1};class lr extends HTMLElement{options;ro;base;renderer;css2DRenderer;scene;camera;controller;camera3js;timer;_canvas;_css2DCanvas;constructor(e){if(super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
142
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const a=new Worker(this.workerSourceURL),d=this.transcoderBinary.slice(0);return a.postMessage({type:"init",config:this.workerConfig,transcoderBinary:d},[d]),a})}),en>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),en++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const o=new E.FileLoader(this.manager);o.setPath(this.path),o.setCrossOrigin(this.crossOrigin),o.setWithCredentials(this.withCredentials),o.setRequestHeader(this.requestHeader),o.setResponseType("arraybuffer"),o.load(e,s=>{this.parse(s,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if($t.has(e))return $t.get(e).promise.then(t).catch(n);this._createTexture(e).then(r=>t?t(r):null).catch(n)}_createTextureFrom(e,t){const{type:n,error:r,data:{faces:o,width:s,height:c,format:A,type:a,dfdFlags:d}}=e;if(n==="error")return Promise.reject(r);let u;if(t.faceCount===6)u=new E.CompressedCubeTexture(o,A,a);else{const m=o[0].mipmaps;u=t.layerCount>1?new E.CompressedArrayTexture(m,s,c,t.layerCount,A,a):new E.CompressedTexture(m,s,c,A,a)}return u.minFilter=o[0].mipmaps.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,u.magFilter=E.LinearFilter,u.generateMipmaps=!1,u.needsUpdate=!0,u.colorSpace=ar(t),u.premultiplyAlpha=!!(d&ps),u}async _createTexture(e,t={}){const n=ys(new Uint8Array(e)),r=n.vkFormat===Tn&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===Is||r&&!this.workerConfig.astcHDRSupported))return vs(n);const s=t,c=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:s},[e])).then(A=>this._createTextureFrom(A.data,n));return $t.set(e,{promise:c}),c}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),en--}}et.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2};et.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25};et.EngineFormat={RGBAFormat:E.RGBAFormat,RGBA_ASTC_4x4_Format:E.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:E.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:E.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:E.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:E.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:E.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:E.RGB_ETC1_Format,RGB_ETC2_Format:E.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:E.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:E.RGBA_S3TC_DXT1_Format};et.EngineType={UnsignedByteType:E.UnsignedByteType,HalfFloatType:E.HalfFloatType,FloatType:E.FloatType};et.BasisWorker=function(){let i,e,t;const n=_EngineFormat,r=_EngineType,o=_TranscoderFormat,s=_BasisFormat;self.addEventListener("message",function(I){const g=I.data;switch(g.type){case"init":i=g.config,c(g.transcoderBinary);break;case"transcode":e.then(()=>{try{const{faces:l,buffers:h,width:f,height:C,hasAlpha:b,format:y,type:R,dfdFlags:x}=A(g.buffer);self.postMessage({type:"transcode",id:g.id,data:{faces:l,width:f,height:C,hasAlpha:b,format:y,type:R,dfdFlags:x}},h)}catch(l){console.error(l),self.postMessage({type:"error",id:g.id,error:l.message})}});break}});function c(I){e=new Promise(g=>{t={wasmBinary:I,onRuntimeInitialized:g},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function A(I){const g=new t.KTX2File(new Uint8Array(I));function l(){g.close(),g.delete()}if(!g.isValid())throw l(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let h;if(g.isUASTC())h=s.UASTC;else if(g.isETC1S())h=s.ETC1S;else if(g.isHDR())h=s.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const f=g.getWidth(),C=g.getHeight(),b=g.getLayers()||1,y=g.getLevels(),R=g.getFaces(),x=g.getHasAlpha(),q=g.getDFDFlags(),{transcoderFormat:v,engineFormat:G,engineType:D}=u(h,f,C,x);if(!f||!C||!y)throw l(),new Error("THREE.KTX2Loader: Invalid texture");if(!g.startTranscoding())throw l(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Q=[],F=[];for(let L=0;L<R;L++){const J=[];for(let $=0;$<y;$++){const j=[];let ee,ne;for(let ie=0;ie<b;ie++){const Z=g.getImageLevelInfo($,ie,L);L===0&&$===0&&ie===0&&(Z.origWidth%4!==0||Z.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),y>1?(ee=Z.origWidth,ne=Z.origHeight):(ee=Z.width,ne=Z.height);let se=new Uint8Array(g.getImageTranscodedSizeInBytes($,ie,0,v));const de=g.transcodeImage(se,$,ie,L,v,0,-1,-1);if(D===r.HalfFloatType&&(se=new Uint16Array(se.buffer,se.byteOffset,se.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!de)throw l(),new Error("THREE.KTX2Loader: .transcodeImage failed.");j.push(se)}const ue=p(j);J.push({data:ue,width:ee,height:ne}),F.push(ue.buffer)}Q.push({mipmaps:J,width:f,height:C,format:G,type:D})}return l(),{faces:Q,buffers:F,width:f,height:C,hasAlpha:x,dfdFlags:q,format:G,type:D}}const a=[{if:"astcSupported",basisFormat:[s.UASTC],transcoderFormat:[o.ASTC_4x4,o.ASTC_4x4],engineFormat:[n.RGBA_ASTC_4x4_Format,n.RGBA_ASTC_4x4_Format],engineType:[r.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.BC7_M5,o.BC7_M5],engineFormat:[n.RGBA_BPTC_Format,n.RGBA_BPTC_Format],engineType:[r.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.BC1,o.BC3],engineFormat:[n.RGBA_S3TC_DXT1_Format,n.RGBA_S3TC_DXT5_Format],engineType:[r.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.ETC1,o.ETC2],engineFormat:[n.RGB_ETC2_Format,n.RGBA_ETC2_EAC_Format],engineType:[r.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.ETC1],engineFormat:[n.RGB_ETC1_Format],engineType:[r.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.PVRTC1_4_RGB,o.PVRTC1_4_RGBA],engineFormat:[n.RGB_PVRTC_4BPPV1_Format,n.RGBA_PVRTC_4BPPV1_Format],engineType:[r.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[s.UASTC_HDR],transcoderFormat:[o.BC6H],engineFormat:[n.RGB_BPTC_UNSIGNED_Format],engineType:[r.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[o.RGBA32,o.RGBA32],engineFormat:[n.RGBAFormat,n.RGBAFormat],engineType:[r.UnsignedByteType,r.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[s.UASTC_HDR],transcoderFormat:[o.RGBA_HALF],engineFormat:[n.RGBAFormat],engineType:[r.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],d={[s.ETC1S]:a.filter(I=>I.basisFormat.includes(s.ETC1S)).sort((I,g)=>I.priorityETC1S-g.priorityETC1S),[s.UASTC]:a.filter(I=>I.basisFormat.includes(s.UASTC)).sort((I,g)=>I.priorityUASTC-g.priorityUASTC),[s.UASTC_HDR]:a.filter(I=>I.basisFormat.includes(s.UASTC_HDR)).sort((I,g)=>I.priorityHDR-g.priorityHDR)};function u(I,g,l,h){const f=d[I];for(let C=0;C<f.length;C++){const b=f[C];if(b.if&&!i[b.if]||!b.basisFormat.includes(I)||h&&b.transcoderFormat.length<2||b.needsPowerOfTwo&&!(m(g)&&m(l)))continue;const y=b.transcoderFormat[h?1:0],R=b.engineFormat[h?1:0],x=b.engineType[0];return{transcoderFormat:y,engineFormat:R,engineType:x}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function m(I){return I<=2?!0:(I&I-1)===0&&I!==0}function p(I){if(I.length===1)return I[0];let g=0;for(let f=0;f<I.length;f++){const C=I[f];g+=C.byteLength}const l=new Uint8Array(g);let h=0;for(let f=0;f<I.length;f++){const C=I[f];l.set(C,h),h+=C.byteLength}return l}};const Rs=new Set([E.RGBAFormat,E.RGBFormat,E.RGFormat,E.RedFormat]),nn={[Ni]:E.RGBAFormat,[Di]:E.RGFormat,[_i]:E.RedFormat,[Li]:E.RGBAFormat,[xi]:E.RGFormat,[Si]:E.RedFormat,[ki]:E.RGBAFormat,[Qi]:E.RGBAFormat,[vi]:E.RGFormat,[Ri]:E.RGFormat,[wi]:E.RedFormat,[Ti]:E.RedFormat,[Oi]:E.RGBFormat,[Fi]:E.RGBFormat,[Xi]:E.RGBA_ETC2_EAC_Format,[Ji]:E.RGB_ETC2_Format,[ln]:E.R11_EAC_Format,[bs]:E.SIGNED_R11_EAC_Format,[un]:E.RG11_EAC_Format,[Cs]:E.SIGNED_RG11_EAC_Format,[Tn]:E.RGBA_ASTC_4x4_Format,[$i]:E.RGBA_ASTC_4x4_Format,[Zi]:E.RGBA_ASTC_4x4_Format,[sr]:E.RGBA_ASTC_6x6_Format,[tr]:E.RGBA_ASTC_6x6_Format,[er]:E.RGBA_ASTC_6x6_Format,[Ui]:E.RGBA_S3TC_DXT1_Format,[Gi]:E.RGBA_S3TC_DXT1_Format,[Pi]:E.RGB_S3TC_DXT1_Format,[Mi]:E.RGB_S3TC_DXT1_Format,[Hi]:E.RGBA_S3TC_DXT3_Format,[ji]:E.RGBA_S3TC_DXT3_Format,[zi]:E.SIGNED_RED_RGTC1_Format,[qi]:E.RED_RGTC1_Format,[Ki]:E.SIGNED_RED_GREEN_RGTC2_Format,[Vi]:E.RED_GREEN_RGTC2_Format,[Yi]:E.RGBA_BPTC_Format,[Wi]:E.RGBA_BPTC_Format,[or]:E.RGBA_PVRTC_4BPPV1_Format,[ir]:E.RGBA_PVRTC_4BPPV1_Format,[rr]:E.RGBA_PVRTC_2BPPV1_Format,[nr]:E.RGBA_PVRTC_2BPPV1_Format},It={[Ni]:E.FloatType,[Di]:E.FloatType,[_i]:E.FloatType,[Li]:E.HalfFloatType,[xi]:E.HalfFloatType,[Si]:E.HalfFloatType,[ki]:E.UnsignedByteType,[Qi]:E.UnsignedByteType,[vi]:E.UnsignedByteType,[Ri]:E.UnsignedByteType,[wi]:E.UnsignedByteType,[Ti]:E.UnsignedByteType,[Oi]:E.UnsignedInt5999Type,[Fi]:E.UnsignedInt101111Type,[Xi]:E.UnsignedByteType,[Ji]:E.UnsignedByteType,[ln]:E.UnsignedByteType,[ln]:E.UnsignedByteType,[un]:E.UnsignedByteType,[un]:E.UnsignedByteType,[Tn]:E.HalfFloatType,[$i]:E.UnsignedByteType,[Zi]:E.UnsignedByteType,[sr]:E.HalfFloatType,[tr]:E.UnsignedByteType,[er]:E.UnsignedByteType,[Ui]:E.UnsignedByteType,[Gi]:E.UnsignedByteType,[Pi]:E.UnsignedByteType,[Mi]:E.UnsignedByteType,[Hi]:E.UnsignedByteType,[ji]:E.UnsignedByteType,[zi]:E.UnsignedByteType,[qi]:E.UnsignedByteType,[Ki]:E.UnsignedByteType,[Vi]:E.UnsignedByteType,[Yi]:E.UnsignedByteType,[Wi]:E.UnsignedByteType,[or]:E.UnsignedByteType,[ir]:E.UnsignedByteType,[rr]:E.UnsignedByteType,[nr]:E.UnsignedByteType};async function vs(i){const{vkFormat:e}=i;if(nn[e]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat: "+e);It[e]===void 0&&console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: '+e);let t;i.supercompressionScheme===jn&&(tn||(tn=new Promise(async s=>{const c=new Bs;await c.init(),s(c)})),t=await tn);const n=[];for(let s=0;s<i.levels.length;s++){const c=Math.max(1,i.pixelWidth>>s),A=Math.max(1,i.pixelHeight>>s),a=i.pixelDepth?Math.max(1,i.pixelDepth>>s):0,d=i.levels[s];let u;if(i.supercompressionScheme===fs)u=d.levelData;else if(i.supercompressionScheme===jn)u=t.decode(d.levelData,d.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let m;It[e]===E.FloatType?m=new Float32Array(u.buffer,u.byteOffset,u.byteLength/Float32Array.BYTES_PER_ELEMENT):It[e]===E.HalfFloatType?m=new Uint16Array(u.buffer,u.byteOffset,u.byteLength/Uint16Array.BYTES_PER_ELEMENT):It[e]===E.UnsignedInt5999Type||It[e]===E.UnsignedInt101111Type?m=new Uint32Array(u.buffer,u.byteOffset,u.byteLength/Uint32Array.BYTES_PER_ELEMENT):m=u,n.push({data:m,width:c,height:A,depth:a})}const r=i.levelCount===0||n.length>1;let o;if(Rs.has(nn[e]))o=i.pixelDepth===0?new E.DataTexture(n[0].data,i.pixelWidth,i.pixelHeight):new E.Data3DTexture(n[0].data,i.pixelWidth,i.pixelHeight,i.pixelDepth),o.minFilter=r?E.NearestMipmapNearestFilter:E.NearestFilter,o.magFilter=E.NearestFilter,o.generateMipmaps=i.levelCount===0;else{if(i.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");o=new E.CompressedTexture(n,i.pixelWidth,i.pixelHeight),o.minFilter=r?E.LinearMipmapLinearFilter:E.LinearFilter,o.magFilter=E.LinearFilter}return o.mipmaps=n,o.type=It[e],o.format=nn[e],o.colorSpace=ar(i),o.needsUpdate=!0,Promise.resolve(o)}function ar(i){const e=i.dataFormatDescriptor[0];return e.colorPrimaries===ms?e.transferFunction===Hn?E.SRGBColorSpace:E.LinearSRGBColorSpace:e.colorPrimaries===Es?e.transferFunction===Hn?Ts:ws:(e.colorPrimaries===gs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),E.NoColorSpace)}var Ar=(function(){var i="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var r=WebAssembly.validate(t)?c(e):c(i),o,s=WebAssembly.instantiate(r,{}).then(function(h){o=h.instance,o.exports.__wasm_call_ctors()});function c(h){for(var f=new Uint8Array(h.length),C=0;C<h.length;++C){var b=h.charCodeAt(C);f[C]=b>96?b-97:b>64?b-39:b+4}for(var y=0,C=0;C<h.length;++C)f[y++]=f[C]<60?n[f[C]]:(f[C]-60)*64+f[++C];return f.buffer.slice(0,y)}function A(h,f,C,b,y,R,x){var q=h.exports.sbrk,v=b+3&-4,G=q(v*y),D=q(R.length),Q=new Uint8Array(h.exports.memory.buffer);Q.set(R,D);var F=f(G,b,y,D,R.length);if(F==0&&x&&x(G,v,y),C.set(Q.subarray(G,G+b*y)),q(G-q(0)),F!=0)throw new Error("Malformed buffer data: "+F)}var a={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},d={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],m=0;function p(h){var f={object:new Worker(h),pending:0,requests:{}};return f.object.onmessage=function(C){var b=C.data;f.pending-=b.count,f.requests[b.id][b.action](b.value),delete f.requests[b.id]},f}function I(h){for(var f="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(r)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+l.name+";"+A.toString()+l.toString(),C=new Blob([f],{type:"text/javascript"}),b=URL.createObjectURL(C),y=u.length;y<h;++y)u[y]=p(b);for(var y=h;y<u.length;++y)u[y].object.postMessage({});u.length=h,URL.revokeObjectURL(b)}function g(h,f,C,b,y){for(var R=u[0],x=1;x<u.length;++x)u[x].pending<R.pending&&(R=u[x]);return new Promise(function(q,v){var G=new Uint8Array(C),D=++m;R.pending+=h,R.requests[D]={resolve:q,reject:v},R.object.postMessage({id:D,count:h,size:f,source:G,mode:b,filter:y},[G.buffer])})}function l(h){var f=h.data;if(!f.id)return self.close();self.ready.then(function(C){try{var b=new Uint8Array(f.count*f.size);A(C,C.exports[f.mode],b,f.count,f.size,f.source,C.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:b},[b.buffer])}catch(y){self.postMessage({id:f.id,count:f.count,action:"reject",value:y})}})}return{ready:s,supported:!0,useWorkers:function(h){I(h)},decodeVertexBuffer:function(h,f,C,b,y){A(o,o.exports.meshopt_decodeVertexBuffer,h,f,C,b,o.exports[a[y]])},decodeIndexBuffer:function(h,f,C,b){A(o,o.exports.meshopt_decodeIndexBuffer,h,f,C,b)},decodeIndexSequence:function(h,f,C,b){A(o,o.exports.meshopt_decodeIndexSequence,h,f,C,b)},decodeGltfBuffer:function(h,f,C,b,y,R){A(o,o.exports[d[y]],h,f,C,b,o.exports[a[R]])},decodeGltfBufferAsync:function(h,f,C,b,y){return u.length>0?g(h,f,C,d[b],a[y]):s.then(function(){var R=new Uint8Array(h*f);return A(o,o.exports[d[b]],R,h,f,C,o.exports[a[y]]),R})}}})();function Qs(i){return"morphTargetDictionary"in i&&i.morphTargetDictionary!==void 0&&"morphTargetInfluences"in i&&Array.isArray(i.morphTargetInfluences)}const ks={draco:"https://unpkg.com/three@0.182/examples/jsm/libs/draco/",ktx2:"https://unpkg.com/three@0.182.0/examples/jsm/libs/basis/",meshopt:!0};function wn(i={}){oe.Cache.enabled=!0;const e={...ks,...i};let t=new Ci;const n=new us;if(n.setDecoderPath(e.draco),t.setDRACOLoader(n),e.renderer){const r=new et;r.setTranscoderPath(e.ktx2),r.detectSupport(e.renderer),t.setKTX2Loader(r)}e.meshopt&&t.setMeshoptDecoder(Ar),Rn=t}let Rn=new Ci;Rn.setMeshoptDecoder(Ar);class rn extends mn{constructor(e,t){super(e,t)}}class Ss extends bt{gltf;constructor(e){super(e)}async asyncInit(e){if(ei(e)){let t=null;this.gltf=await Rn.loadAsync(e);const n={},r={root:this.gltf.scene,bones:{},skeleton:void 0},o={};this.gltf.scene.traverse(s=>{if(s.userData.a3js={objectA3:this},Qs(s)){const{morphTargetDictionary:c,morphTargetInfluences:A}=s;Object.keys(c).forEach(a=>{const d=s.name+"."+a,u=c[a];o[d]={array:A,idx:u}})}s instanceof oe.Bone&&r.bones&&(r.bones[s.name]=s),s instanceof oe.SkinnedMesh&&(r.skeleton=s.skeleton)}),this.gltf.animations.forEach(s=>{t||(t=s.name),n[s.name]=new rn(r,new yn(s))}),t?this.syncInit(t,n,o):(t="dummy",n.dummy=new rn(r,new xn),this.syncInit(t,n,o))}else{const t=new oe.BoxGeometry,n=new oe.MeshStandardMaterial({color:16711680}),r=new oe.Mesh(t,n),o="dummy",s={};s.dummy=new rn({root:r},new xn),this.syncInit(o,s)}return this}}const cr={camera:void 0,antialias:!1,transparent:!1};class lr extends HTMLElement{options;ro;base;renderer;css2DRenderer;scene;camera;controller;camera3js;timer;_canvas;_css2DCanvas;constructor(e){if(super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
|
|
143
143
|
<style>
|
|
144
144
|
:host {
|
|
145
145
|
display: block;
|
|
@@ -289,5 +289,5 @@ See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return I}
|
|
|
289
289
|
<button class="btn left">L</button>
|
|
290
290
|
<button class="btn right">R</button>
|
|
291
291
|
</div>
|
|
292
|
-
`,this.canvas=this.shadowRoot.querySelector("canvas-a3"),this.scene=this.canvas.scene,this.camera=this.canvas.camera,this.controller=this.canvas.controller,this._maxDistance=40,this._leftActive=!1,this._leftCenter={x:0,y:0},this.leftJoystick={x:0,y:0},this._rightActive=!1,this._rightCenter={x:0,y:0},this.rightJoystick={x:0,y:0},this.leftButton=!1,this.rightButton=!1,this.keys=new Set;const t=this.shadowRoot.querySelector(".joystick.left .stick");if(!t)return;t.addEventListener("pointerdown",s=>{this._leftActive=!0;const c=t.getBoundingClientRect();this._leftCenter.x=c.left+c.width/2,this._leftCenter.y=c.top+c.height/2,t.setPointerCapture(s.pointerId)}),t.addEventListener("pointermove",s=>{if(!this._leftActive)return;const c=s.clientX-this._leftCenter.x,A=s.clientY-this._leftCenter.y,a=Math.sqrt(c*c+A*A);let d=c,u=A;if(a>40){const m=Math.atan2(A,c);d=Math.cos(m)*this._maxDistance,u=Math.sin(m)*this._maxDistance}t.style.transform=`translate(calc(-50% + ${d}px), calc(-50% + ${u}px))`,this.leftJoystick.x=d/this._maxDistance,this.leftJoystick.y=-(u/this._maxDistance)}),t.addEventListener("pointerup",()=>{this._leftActive=!1,t.style.transform="translate(-50%, -50%)",this.leftJoystick.x=0,this.leftJoystick.y=0});const n=this.shadowRoot.querySelector(".joystick.right .stick");if(!n)return;n.addEventListener("pointerdown",s=>{this._rightActive=!0;const c=n.getBoundingClientRect();this._rightCenter.x=c.left+c.width/2,this._rightCenter.y=c.top+c.height/2,n.setPointerCapture(s.pointerId)}),n.addEventListener("pointermove",s=>{if(!this._rightActive)return;const c=s.clientX-this._rightCenter.x,A=s.clientY-this._rightCenter.y,a=Math.sqrt(c*c+A*A);let d=c,u=A;if(a>40){const m=Math.atan2(A,c);d=Math.cos(m)*this._maxDistance,u=Math.sin(m)*this._maxDistance}n.style.transform=`translate(calc(-50% + ${d}px), calc(-50% + ${u}px))`,this.rightJoystick.x=d/this._maxDistance,this.rightJoystick.y=-(u/this._maxDistance)}),n.addEventListener("pointerup",()=>{this._rightActive=!1,n.style.transform="translate(-50%, -50%)",this.rightJoystick.x=0,this.rightJoystick.y=0});const r=this.shadowRoot.querySelector(".btn.left");if(!r)return;r.addEventListener("pointerdown",()=>{this.leftButton=!0}),r.addEventListener("pointerup",()=>{this.leftButton=!1});const o=this.shadowRoot.querySelector(".btn.right");o&&(o.addEventListener("pointerdown",()=>{this.rightButton=!0}),o.addEventListener("pointerup",()=>{this.rightButton=!1}),window.addEventListener("keydown",this.keyDownListener),window.addEventListener("keyup",this.keyUpListener),this.options.touchDevice||(this.shadowRoot.querySelectorAll(".joystick").forEach(s=>{s.style.display="none"}),this.shadowRoot.querySelectorAll(".btn").forEach(s=>{s.style.display="none"})))}keyDownListener=e=>{this.keys.add(e.code),this.updateUIFromKeyInfo()};keyUpListener=e=>{this.keys.delete(e.code),this.updateUIFromKeyInfo()};connectedCallback(){this._ro=new ResizeObserver(e=>{const t=e[0],n=t.contentRect.width,r=t.contentRect.height;if(!(n===0||r===0))if(n>r){const o=this.shadowRoot.querySelector(".btn.left");o.style.bottom="50px",o.style.left="200px";const s=this.shadowRoot.querySelector(".btn.right");s.style.bottom="50px",s.style.right="200px"}else{const o=this.shadowRoot.querySelector(".btn.left");o.style.bottom="200px",o.style.left="50px";const s=this.shadowRoot.querySelector(".btn.right");s.style.bottom="200px",s.style.right="50px"}}),this._ro.observe(this)}disconnectedCallback(){this._ro?.disconnect(),window.removeEventListener("keydown",this.keyDownListener),window.removeEventListener("keyup",this.keyUpListener)}updateUIFromKeyInfo(){const e={x:0,y:0},t={x:0,y:0};this.keys.has("KeyW")&&(e.y+=1),this.keys.has("KeyA")&&(e.x-=1),this.keys.has("KeyS")&&(e.y-=1),this.keys.has("KeyD")&&(e.x+=1),this.keys.has("ArrowUp")&&(t.y+=1),this.keys.has("ArrowLeft")&&(t.x-=1),this.keys.has("ArrowDown")&&(t.y-=1),this.keys.has("ArrowRight")&&(t.x+=1);const n=Math.sqrt(e.x*e.x+e.y*e.y);n>0&&(e.x/=n,e.y/=n),this.leftJoystick=e;const r=Math.sqrt(t.x*t.x+t.y*t.y);r>0&&(t.x/=r,t.y/=r),this.rightJoystick=t,this.keys.has("Space")?this.leftButton=!0:this.leftButton=!1,this.keys.has("Enter")?this.rightButton=!0:this.rightButton=!1}replaceScene(e){return this.canvas.replaceScene(e)}setController(e){this.canvas.setController(e)}worldToScreen(e){return this.canvas.worldToScreen(e)}screenToWorld(e,t,n){return this.canvas.screenToWorld(e,t,n)}cameraToScreen(e){return this.canvas.cameraToScreen(e)}screenToCamera(e,t,n){return this.canvas.screenToCamera(e,t,n)}waitForRender(){return this.canvas.waitForRender()}alert(e,t){return this.canvas.alert(e,t)}prompt(e,t){return this.canvas.prompt(e,t)}}customElements.define("game-canvas-a3",pr);const gr={mass:10,defaultLocation:{x:0,y:1,z:0},defaultQuat:{x:0,y:0,z:0,w:1},chassisWidth:2,chassisHeight:1,chassisLength:4,chassisOffset:{x:0,y:-.5,z:0},chassisFriction:.1,wheelFrontYPosition:0,wheelFrontZPosition:1.5,wheelFrontAxleLength:2,wheelRearYPosition:0,wheelRearZPosition:-1.5,wheelRearAxleLength:2,wheelFrontRadius:.3,wheelRearRadius:.3,wheelFrontWidth:.4,wheelRearWidth:.4,wheelFrontSuspensionRestLength:.8,wheelRearSuspensionRestLength:.8,wheelFrontDirection:{x:0,y:-1,z:0},wheelRearDirection:{x:0,y:-1,z:0},wheelFrontAxle:{x:-1,y:0,z:0},wheelRearAxle:{x:-1,y:0,z:0},wheelFrontSuspensionStiffness:24,wheelRearSuspensionStiffness:24,wheelFrontSuspensionCompression:4,wheelRearSuspensionCompression:4,wheelFrontSuspensionRelaxation:3,wheelRearSuspensionRelaxation:3,wheelFrontWheelFrictionSlip:100,wheelRearWheelFrictionSlip:100,wheelFrontMaxSuspensionTravel:.25,wheelRearMaxSuspensionTravel:.25,aerodynamicDrag:0};class Ys{opt;trans;motion;constructor(e){this.opt={...gr,...e},this.trans=new mr(this),this.motion=new Er(this)}steer(e){this.trans.controller&&(this.trans.controller.setWheelSteering(0,e),this.trans.controller.setWheelSteering(1,e))}accelerate(e){this.trans.controller&&(this.trans.controller.setWheelEngineForce(0,e),this.trans.controller.setWheelEngineForce(1,e),this.trans.controller.setWheelEngineForce(2,e),this.trans.controller.setWheelEngineForce(3,e))}brake(e){this.trans.controller&&(this.trans.controller.setWheelBrake(0,e),this.trans.controller.setWheelBrake(1,e),this.trans.controller.setWheelBrake(2,e),this.trans.controller.setWheelBrake(3,e))}reset(e,t){this.trans.chassisBody&&(e?this.trans.chassisBody.setTranslation({x:e.x,y:e.y,z:e.z},!0):this.trans.chassisBody.setTranslation(this.opt.defaultLocation,!0),t?this.trans.chassisBody.setRotation({x:t.x,y:t.y,z:t.z,w:t.w},!0):this.trans.chassisBody.setRotation(this.opt.defaultQuat,!0),this.trans.chassisBody.setLinvel({x:0,y:0,z:0},!0),this.trans.chassisBody.setAngvel({x:0,y:0,z:0},!0))}}class mr{cc;transform;objectA3;controller;chassisBodyDesc;chassisBody;chassisColliderDesc;chassisCollider;constructor(e){this.cc=e,this.transform=new ze}init(e,t){this.transform.set(e),this.objectA3=t,this.chassisBodyDesc=new je.RigidBodyDesc(je.RigidBodyType.Dynamic),this.chassisColliderDesc=je.ColliderDesc.cuboid(this.cc.opt.chassisWidth/2,this.cc.opt.chassisHeight/2,this.cc.opt.chassisLength/2),this.chassisColliderDesc.setMass(this.cc.opt.mass),this.chassisColliderDesc.setFriction(this.cc.opt.chassisFriction)}addOneselfToPhysics(e){if(this.chassisBodyDesc&&(this.chassisBody=e.world.createRigidBody(this.chassisBodyDesc),this.chassisBody.setTranslation(this.cc.opt.defaultLocation,!0),this.chassisBody.setRotation(this.cc.opt.defaultQuat,!0)),this.chassisColliderDesc&&(this.chassisCollider=e.world.createCollider(this.chassisColliderDesc,this.chassisBody)),this.chassisCollider&&this.objectA3&&it.set(this.chassisCollider.handle,this.objectA3),this.chassisBody&&(this.controller=e.world.createVehicleController(this.chassisBody)),this.controller){const t={x:0,y:0,z:0};t.x=-this.cc.opt.wheelFrontAxleLength/2,t.y=this.cc.opt.wheelFrontYPosition,t.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(t,this.cc.opt.wheelFrontDirection,this.cc.opt.wheelFrontAxle,this.cc.opt.wheelFrontSuspensionRestLength,this.cc.opt.wheelFrontRadius),this.controller.setWheelSuspensionStiffness(0,this.cc.opt.wheelFrontSuspensionStiffness),this.controller.setWheelSuspensionCompression(0,this.cc.opt.wheelFrontSuspensionCompression),this.controller.setWheelSuspensionRelaxation(0,this.cc.opt.wheelFrontSuspensionRelaxation),this.controller.setWheelFrictionSlip(0,this.cc.opt.wheelFrontWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(0,this.cc.opt.wheelFrontMaxSuspensionTravel),t.x=this.cc.opt.wheelFrontAxleLength/2,t.y=this.cc.opt.wheelFrontYPosition,t.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(t,this.cc.opt.wheelFrontDirection,this.cc.opt.wheelFrontAxle,this.cc.opt.wheelFrontSuspensionRestLength,this.cc.opt.wheelFrontRadius),this.controller.setWheelSuspensionStiffness(1,this.cc.opt.wheelFrontSuspensionStiffness),this.controller.setWheelSuspensionCompression(1,this.cc.opt.wheelFrontSuspensionCompression),this.controller.setWheelSuspensionRelaxation(1,this.cc.opt.wheelFrontSuspensionRelaxation),this.controller.setWheelFrictionSlip(1,this.cc.opt.wheelFrontWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(1,this.cc.opt.wheelFrontMaxSuspensionTravel),t.x=-this.cc.opt.wheelRearAxleLength/2,t.y=this.cc.opt.wheelRearYPosition,t.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(t,this.cc.opt.wheelRearDirection,this.cc.opt.wheelRearAxle,this.cc.opt.wheelRearSuspensionRestLength,this.cc.opt.wheelRearRadius),this.controller.setWheelSuspensionStiffness(2,this.cc.opt.wheelRearSuspensionStiffness),this.controller.setWheelSuspensionCompression(2,this.cc.opt.wheelRearSuspensionCompression),this.controller.setWheelSuspensionRelaxation(2,this.cc.opt.wheelRearSuspensionRelaxation),this.controller.setWheelFrictionSlip(2,this.cc.opt.wheelRearWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(2,this.cc.opt.wheelRearMaxSuspensionTravel),t.x=this.cc.opt.wheelRearAxleLength/2,t.y=this.cc.opt.wheelRearYPosition,t.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(t,this.cc.opt.wheelRearDirection,this.cc.opt.wheelRearAxle,this.cc.opt.wheelRearSuspensionRestLength,this.cc.opt.wheelRearRadius),this.controller.setWheelSuspensionStiffness(3,this.cc.opt.wheelRearSuspensionStiffness),this.controller.setWheelSuspensionCompression(3,this.cc.opt.wheelRearSuspensionCompression),this.controller.setWheelSuspensionRelaxation(3,this.cc.opt.wheelRearSuspensionRelaxation),this.controller.setWheelFrictionSlip(3,this.cc.opt.wheelRearWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(3,this.cc.opt.wheelRearMaxSuspensionTravel)}}removeOneselfFromPhysics(e){this.chassisCollider&&(e.world.removeCollider(this.chassisCollider,!1),it.delete(this.chassisCollider.handle)),this.chassisBody&&e.world.removeRigidBody(this.chassisBody)}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),this.chassisBody?e.set(this.chassisBody.linvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.linvel),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),this.chassisBody?e.set(this.chassisBody.angvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.angvel),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){if(!this.controller)return!0;let e=!1;return e||=this.controller.wheelIsInContact(0),e||=this.controller.wheelIsInContact(1),e||=this.controller.wheelIsInContact(2),e||=this.controller.wheelIsInContact(3),e}vv=new Ae;update(e){if(this.cc.opt.aerodynamicDrag>0&&this.chassisBody){const t=new Ae(this.chassisBody.linvel());Math.abs(t.y)>3&&t.set(t.x,3*t.y/Math.abs(t.y),t.z),this.vv.lerp(this.vv,t,.9);const n=this.vv.length();n!==0&&(t.set(this.vv),t.normalize(),t.scale(-n*n*this.cc.opt.aerodynamicDrag),this.chassisBody.resetForces(!0),this.chassisBody.addForce({x:t.x,y:t.y,z:t.z},!0))}this.controller?.updateVehicle(e),this.chassisBody&&this.transform.loc.set(this.chassisBody.translation()),this.chassisBody&&this.transform.quat.set(this.chassisBody.rotation())}}class Er{cm;name;playCount;time;finishListener;constructor(e){this.cm=e,this.name="default",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){if(!this.cm.trans.chassisBody)return{};if(!this.cm.trans.controller)return{};const t=new Ae(this.cm.trans.chassisBody.translation()),n=new Me(this.cm.trans.chassisBody.rotation()),r=new Me(-n.x,-n.y,-n.z,n.w),o=new Ae(this.cm.trans.chassisBody.translation());o.add(this.cm.opt.chassisOffset),o.sub(t);const s=new Me(this.cm.trans.chassisBody.rotation());s.mul(r);const c=new Me,A=new Ae,a=new Me;{const l=this.cm.opt.wheelFrontAxle,h=this.cm.trans.controller.wheelSuspensionLength(0)||0,f=this.cm.trans.controller.wheelSteering(0)||0,C=this.cm.trans.controller.wheelRotation(0)||0;A.set(-this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),A.sub(0,h,0),a.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),a.mul(c)}const d=new Ae,u=new Me;{const l=this.cm.opt.wheelFrontAxle,h=this.cm.trans.controller.wheelSuspensionLength(1)||0,f=this.cm.trans.controller.wheelSteering(1)||0,C=this.cm.trans.controller.wheelRotation(1)||0;d.set(this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),d.sub(0,h,0),u.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),u.mul(c)}const m=new Ae,p=new Me;{const l=this.cm.opt.wheelRearAxle,h=this.cm.trans.controller.wheelSuspensionLength(2)||0,f=this.cm.trans.controller.wheelSteering(2)||0,C=this.cm.trans.controller.wheelRotation(2)||0;m.set(-this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),m.sub(0,h,0),p.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),p.mul(c)}const I=new Ae,g=new Me;{const l=this.cm.opt.wheelRearAxle,h=this.cm.trans.controller.wheelSuspensionLength(3)||0,f=this.cm.trans.controller.wheelSteering(3)||0,C=this.cm.trans.controller.wheelRotation(3)||0;I.set(this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),I.sub(0,h,0),g.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),g.mul(c)}return{chassis:{loc:o,quat:s},frontRight:{loc:d,quat:u},frontLeft:{loc:A,quat:a},rearRight:{loc:I,quat:g},rearLeft:{loc:m,quat:p}}}}exports.Acerola3D=fi;exports.Action=mn;exports.ActionObject=bt;exports.AvatarPositionController=Qo;exports.AvatarVelocityController=So;exports.BaseController=Ht;exports.BaseView=Bn;exports.BillboardTransformer=Yn;exports.Box=qs;exports.Camera=mi;exports.Canvas=lr;exports.CarControl=Ys;exports.CarMotion=Er;exports.CarTransformer=mr;exports.ClipMotion=yn;exports.DefaultTransformer=Rt;exports.DynamicCharacterTransformer=oi;exports.FollowTransformer=Zn;exports.GLTF=Ss;exports.GameCanvas=pr;exports.Html3D=Ws;exports.ImagePlane=Ks;exports.KinematicCharacterTransformer=ii;exports.ObjectA3=Oe;exports.OrbitController=Ei;exports.Quat=Me;exports.RapierPhysicsEngine=vt;exports.RapierPhysicsWorld=gn;exports.SampleObject=Fs;exports.Scene=gi;exports.SmoothBillboardTransformer=Jn;exports.SmoothTransformer=fn;exports.Sound=at;exports.Sphere=zs;exports.StandardLights=Vs;exports.StaticTransformer=Wn;exports.Text3D=js;exports.ThreeCamera=Qt;exports.ThreeObject=Hs;exports.Transform=ze;exports.Vec3=Ae;exports.Window=hr;exports.asyncSleep=jr;exports.collisionMap=it;exports.deepMerge=Ot;exports.defaultCanvasOptions=cr;exports.defaultCarControlOptions=gr;exports.defaultDynamicCharacterTransformerOptions=ri;exports.defaultFollowTransformerOptions=Xn;exports.defaultGameCanvasOptions=fr;exports.defaultKinematicCharacterTransformerOptions=ni;exports.defaultSampleObjectOptions=dn;exports.defaultWindowOptions=ur;exports.eulerToQuaternion=ht;exports.getLookAtQuaternion=At;exports.initFont=Us;exports.initPhysics=Ur;exports.initSound=Ro;exports.recreateGLTFLoader=wn;
|
|
292
|
+
`,this.canvas=this.shadowRoot.querySelector("canvas-a3"),this.scene=this.canvas.scene,this.camera=this.canvas.camera,this.controller=this.canvas.controller,this._maxDistance=40,this._leftActive=!1,this._leftCenter={x:0,y:0},this.leftJoystick={x:0,y:0},this._rightActive=!1,this._rightCenter={x:0,y:0},this.rightJoystick={x:0,y:0},this.leftButton=!1,this.rightButton=!1,this.keys=new Set;const t=this.shadowRoot.querySelector(".joystick.left .stick");if(!t)return;t.addEventListener("pointerdown",s=>{this._leftActive=!0;const c=t.getBoundingClientRect();this._leftCenter.x=c.left+c.width/2,this._leftCenter.y=c.top+c.height/2,t.setPointerCapture(s.pointerId)}),t.addEventListener("pointermove",s=>{if(!this._leftActive)return;const c=s.clientX-this._leftCenter.x,A=s.clientY-this._leftCenter.y,a=Math.sqrt(c*c+A*A);let d=c,u=A;if(a>40){const m=Math.atan2(A,c);d=Math.cos(m)*this._maxDistance,u=Math.sin(m)*this._maxDistance}t.style.transform=`translate(calc(-50% + ${d}px), calc(-50% + ${u}px))`,this.leftJoystick.x=d/this._maxDistance,this.leftJoystick.y=-(u/this._maxDistance)}),t.addEventListener("pointerup",()=>{this._leftActive=!1,t.style.transform="translate(-50%, -50%)",this.leftJoystick.x=0,this.leftJoystick.y=0});const n=this.shadowRoot.querySelector(".joystick.right .stick");if(!n)return;n.addEventListener("pointerdown",s=>{this._rightActive=!0;const c=n.getBoundingClientRect();this._rightCenter.x=c.left+c.width/2,this._rightCenter.y=c.top+c.height/2,n.setPointerCapture(s.pointerId)}),n.addEventListener("pointermove",s=>{if(!this._rightActive)return;const c=s.clientX-this._rightCenter.x,A=s.clientY-this._rightCenter.y,a=Math.sqrt(c*c+A*A);let d=c,u=A;if(a>40){const m=Math.atan2(A,c);d=Math.cos(m)*this._maxDistance,u=Math.sin(m)*this._maxDistance}n.style.transform=`translate(calc(-50% + ${d}px), calc(-50% + ${u}px))`,this.rightJoystick.x=d/this._maxDistance,this.rightJoystick.y=-(u/this._maxDistance)}),n.addEventListener("pointerup",()=>{this._rightActive=!1,n.style.transform="translate(-50%, -50%)",this.rightJoystick.x=0,this.rightJoystick.y=0});const r=this.shadowRoot.querySelector(".btn.left");if(!r)return;r.addEventListener("pointerdown",()=>{this.leftButton=!0}),r.addEventListener("pointerup",()=>{this.leftButton=!1});const o=this.shadowRoot.querySelector(".btn.right");o&&(o.addEventListener("pointerdown",()=>{this.rightButton=!0}),o.addEventListener("pointerup",()=>{this.rightButton=!1}),window.addEventListener("keydown",this.keyDownListener),window.addEventListener("keyup",this.keyUpListener),this.options.touchDevice||(this.shadowRoot.querySelectorAll(".joystick").forEach(s=>{s.style.display="none"}),this.shadowRoot.querySelectorAll(".btn").forEach(s=>{s.style.display="none"})))}keyDownListener=e=>{this.keys.add(e.code),this.updateUIFromKeyInfo()};keyUpListener=e=>{this.keys.delete(e.code),this.updateUIFromKeyInfo()};connectedCallback(){this._ro=new ResizeObserver(e=>{const t=e[0],n=t.contentRect.width,r=t.contentRect.height;if(!(n===0||r===0))if(n>r){const o=this.shadowRoot.querySelector(".btn.left");o.style.bottom="50px",o.style.left="200px";const s=this.shadowRoot.querySelector(".btn.right");s.style.bottom="50px",s.style.right="200px"}else{const o=this.shadowRoot.querySelector(".btn.left");o.style.bottom="200px",o.style.left="50px";const s=this.shadowRoot.querySelector(".btn.right");s.style.bottom="200px",s.style.right="50px"}}),this._ro.observe(this)}disconnectedCallback(){this._ro?.disconnect(),window.removeEventListener("keydown",this.keyDownListener),window.removeEventListener("keyup",this.keyUpListener)}updateUIFromKeyInfo(){const e={x:0,y:0},t={x:0,y:0};this.keys.has("KeyW")&&(e.y+=1),this.keys.has("KeyA")&&(e.x-=1),this.keys.has("KeyS")&&(e.y-=1),this.keys.has("KeyD")&&(e.x+=1),this.keys.has("ArrowUp")&&(t.y+=1),this.keys.has("ArrowLeft")&&(t.x-=1),this.keys.has("ArrowDown")&&(t.y-=1),this.keys.has("ArrowRight")&&(t.x+=1);const n=Math.sqrt(e.x*e.x+e.y*e.y);n>0&&(e.x/=n,e.y/=n),this.leftJoystick=e;const r=Math.sqrt(t.x*t.x+t.y*t.y);r>0&&(t.x/=r,t.y/=r),this.rightJoystick=t,this.keys.has("Space")?this.leftButton=!0:this.leftButton=!1,this.keys.has("Enter")?this.rightButton=!0:this.rightButton=!1}replaceScene(e){return this.canvas.replaceScene(e)}setController(e){this.canvas.setController(e)}worldToScreen(e){return this.canvas.worldToScreen(e)}screenToWorld(e,t,n){return this.canvas.screenToWorld(e,t,n)}cameraToScreen(e){return this.canvas.cameraToScreen(e)}screenToCamera(e,t,n){return this.canvas.screenToCamera(e,t,n)}waitForRender(){return this.canvas.waitForRender()}alert(e,t){return this.canvas.alert(e,t)}prompt(e,t){return this.canvas.prompt(e,t)}}customElements.define("game-canvas-a3",pr);const gr={mass:10,defaultLocation:{x:0,y:1,z:0},defaultQuat:{x:0,y:0,z:0,w:1},chassisWidth:2,chassisHeight:1,chassisLength:4,chassisOffset:{x:0,y:-.5,z:0},chassisFriction:.1,wheelFrontYPosition:0,wheelFrontZPosition:1.5,wheelFrontAxleLength:2,wheelRearYPosition:0,wheelRearZPosition:-1.5,wheelRearAxleLength:2,wheelFrontRadius:.3,wheelRearRadius:.3,wheelFrontWidth:.4,wheelRearWidth:.4,wheelFrontSuspensionRestLength:.8,wheelRearSuspensionRestLength:.8,wheelFrontDirection:{x:0,y:-1,z:0},wheelRearDirection:{x:0,y:-1,z:0},wheelFrontAxle:{x:-1,y:0,z:0},wheelRearAxle:{x:-1,y:0,z:0},wheelFrontSuspensionStiffness:24,wheelRearSuspensionStiffness:24,wheelFrontSuspensionCompression:4,wheelRearSuspensionCompression:4,wheelFrontSuspensionRelaxation:3,wheelRearSuspensionRelaxation:3,wheelFrontWheelFrictionSlip:100,wheelRearWheelFrictionSlip:100,wheelFrontMaxSuspensionTravel:.25,wheelRearMaxSuspensionTravel:.25,aerodynamicDrag:0};class Ys{opt;trans;motion;constructor(e){this.opt={...gr,...e},this.trans=new mr(this),this.motion=new Er(this)}steer(e){this.trans.controller&&(this.trans.controller.setWheelSteering(0,e),this.trans.controller.setWheelSteering(1,e))}accelerate(e){this.trans.controller&&(this.trans.controller.setWheelEngineForce(0,e),this.trans.controller.setWheelEngineForce(1,e),this.trans.controller.setWheelEngineForce(2,e),this.trans.controller.setWheelEngineForce(3,e))}brake(e){this.trans.controller&&(this.trans.controller.setWheelBrake(0,e),this.trans.controller.setWheelBrake(1,e),this.trans.controller.setWheelBrake(2,e),this.trans.controller.setWheelBrake(3,e))}reset(e,t){this.trans.chassisBody&&(e?this.trans.chassisBody.setTranslation({x:e.x,y:e.y,z:e.z},!0):this.trans.chassisBody.setTranslation(this.opt.defaultLocation,!0),t?this.trans.chassisBody.setRotation({x:t.x,y:t.y,z:t.z,w:t.w},!0):this.trans.chassisBody.setRotation(this.opt.defaultQuat,!0),this.trans.chassisBody.setLinvel({x:0,y:0,z:0},!0),this.trans.chassisBody.setAngvel({x:0,y:0,z:0},!0))}}class mr{cc;transform;objectA3;controller;chassisBodyDesc;chassisBody;chassisColliderDesc;chassisCollider;constructor(e){this.cc=e,this.transform=new ze}init(e,t){this.transform.set(e),this.objectA3=t,this.chassisBodyDesc=new je.RigidBodyDesc(je.RigidBodyType.Dynamic),this.chassisColliderDesc=je.ColliderDesc.cuboid(this.cc.opt.chassisWidth/2,this.cc.opt.chassisHeight/2,this.cc.opt.chassisLength/2),this.chassisColliderDesc.setMass(this.cc.opt.mass),this.chassisColliderDesc.setFriction(this.cc.opt.chassisFriction)}addOneselfToPhysics(e){if(this.chassisBodyDesc&&(this.chassisBody=e.world.createRigidBody(this.chassisBodyDesc),this.chassisBody.setTranslation(this.cc.opt.defaultLocation,!0),this.chassisBody.setRotation(this.cc.opt.defaultQuat,!0)),this.chassisColliderDesc&&(this.chassisCollider=e.world.createCollider(this.chassisColliderDesc,this.chassisBody)),this.chassisCollider&&this.objectA3&&it.set(this.chassisCollider.handle,this.objectA3),this.chassisBody&&(this.controller=e.world.createVehicleController(this.chassisBody)),this.controller){const t={x:0,y:0,z:0};t.x=-this.cc.opt.wheelFrontAxleLength/2,t.y=this.cc.opt.wheelFrontYPosition,t.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(t,this.cc.opt.wheelFrontDirection,this.cc.opt.wheelFrontAxle,this.cc.opt.wheelFrontSuspensionRestLength,this.cc.opt.wheelFrontRadius),this.controller.setWheelSuspensionStiffness(0,this.cc.opt.wheelFrontSuspensionStiffness),this.controller.setWheelSuspensionCompression(0,this.cc.opt.wheelFrontSuspensionCompression),this.controller.setWheelSuspensionRelaxation(0,this.cc.opt.wheelFrontSuspensionRelaxation),this.controller.setWheelFrictionSlip(0,this.cc.opt.wheelFrontWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(0,this.cc.opt.wheelFrontMaxSuspensionTravel),t.x=this.cc.opt.wheelFrontAxleLength/2,t.y=this.cc.opt.wheelFrontYPosition,t.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(t,this.cc.opt.wheelFrontDirection,this.cc.opt.wheelFrontAxle,this.cc.opt.wheelFrontSuspensionRestLength,this.cc.opt.wheelFrontRadius),this.controller.setWheelSuspensionStiffness(1,this.cc.opt.wheelFrontSuspensionStiffness),this.controller.setWheelSuspensionCompression(1,this.cc.opt.wheelFrontSuspensionCompression),this.controller.setWheelSuspensionRelaxation(1,this.cc.opt.wheelFrontSuspensionRelaxation),this.controller.setWheelFrictionSlip(1,this.cc.opt.wheelFrontWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(1,this.cc.opt.wheelFrontMaxSuspensionTravel),t.x=-this.cc.opt.wheelRearAxleLength/2,t.y=this.cc.opt.wheelRearYPosition,t.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(t,this.cc.opt.wheelRearDirection,this.cc.opt.wheelRearAxle,this.cc.opt.wheelRearSuspensionRestLength,this.cc.opt.wheelRearRadius),this.controller.setWheelSuspensionStiffness(2,this.cc.opt.wheelRearSuspensionStiffness),this.controller.setWheelSuspensionCompression(2,this.cc.opt.wheelRearSuspensionCompression),this.controller.setWheelSuspensionRelaxation(2,this.cc.opt.wheelRearSuspensionRelaxation),this.controller.setWheelFrictionSlip(2,this.cc.opt.wheelRearWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(2,this.cc.opt.wheelRearMaxSuspensionTravel),t.x=this.cc.opt.wheelRearAxleLength/2,t.y=this.cc.opt.wheelRearYPosition,t.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(t,this.cc.opt.wheelRearDirection,this.cc.opt.wheelRearAxle,this.cc.opt.wheelRearSuspensionRestLength,this.cc.opt.wheelRearRadius),this.controller.setWheelSuspensionStiffness(3,this.cc.opt.wheelRearSuspensionStiffness),this.controller.setWheelSuspensionCompression(3,this.cc.opt.wheelRearSuspensionCompression),this.controller.setWheelSuspensionRelaxation(3,this.cc.opt.wheelRearSuspensionRelaxation),this.controller.setWheelFrictionSlip(3,this.cc.opt.wheelRearWheelFrictionSlip),this.controller.setWheelMaxSuspensionTravel(3,this.cc.opt.wheelRearMaxSuspensionTravel)}}removeOneselfFromPhysics(e){this.chassisCollider&&(e.world.removeCollider(this.chassisCollider,!0),it.delete(this.chassisCollider.handle),this.chassisCollider=void 0),this.chassisBody&&e.world.removeRigidBody(this.chassisBody),this.chassisBody=void 0}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),this.chassisBody?e.set(this.chassisBody.linvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.linvel),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),this.chassisBody?e.set(this.chassisBody.angvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.angvel),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){if(!this.controller)return!0;let e=!1;return e||=this.controller.wheelIsInContact(0),e||=this.controller.wheelIsInContact(1),e||=this.controller.wheelIsInContact(2),e||=this.controller.wheelIsInContact(3),e}vv=new Ae;update(e){if(this.cc.opt.aerodynamicDrag>0&&this.chassisBody){const t=new Ae(this.chassisBody.linvel());Math.abs(t.y)>3&&t.set(t.x,3*t.y/Math.abs(t.y),t.z),this.vv.lerp(this.vv,t,.9);const n=this.vv.length();n!==0&&(t.set(this.vv),t.normalize(),t.scale(-n*n*this.cc.opt.aerodynamicDrag),this.chassisBody.resetForces(!0),this.chassisBody.addForce({x:t.x,y:t.y,z:t.z},!0))}this.controller?.updateVehicle(e),this.chassisBody&&this.transform.loc.set(this.chassisBody.translation()),this.chassisBody&&this.transform.quat.set(this.chassisBody.rotation())}}class Er{cm;name;playCount;time;finishListener;constructor(e){this.cm=e,this.name="default",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){if(!this.cm.trans.chassisBody)return{};if(!this.cm.trans.controller)return{};const t=new Ae(this.cm.trans.chassisBody.translation()),n=new Me(this.cm.trans.chassisBody.rotation()),r=new Me(-n.x,-n.y,-n.z,n.w),o=new Ae(this.cm.trans.chassisBody.translation());o.add(this.cm.opt.chassisOffset),o.sub(t);const s=new Me(this.cm.trans.chassisBody.rotation());s.mul(r);const c=new Me,A=new Ae,a=new Me;{const l=this.cm.opt.wheelFrontAxle,h=this.cm.trans.controller.wheelSuspensionLength(0)||0,f=this.cm.trans.controller.wheelSteering(0)||0,C=this.cm.trans.controller.wheelRotation(0)||0;A.set(-this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),A.sub(0,h,0),a.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),a.mul(c)}const d=new Ae,u=new Me;{const l=this.cm.opt.wheelFrontAxle,h=this.cm.trans.controller.wheelSuspensionLength(1)||0,f=this.cm.trans.controller.wheelSteering(1)||0,C=this.cm.trans.controller.wheelRotation(1)||0;d.set(this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),d.sub(0,h,0),u.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),u.mul(c)}const m=new Ae,p=new Me;{const l=this.cm.opt.wheelRearAxle,h=this.cm.trans.controller.wheelSuspensionLength(2)||0,f=this.cm.trans.controller.wheelSteering(2)||0,C=this.cm.trans.controller.wheelRotation(2)||0;m.set(-this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),m.sub(0,h,0),p.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),p.mul(c)}const I=new Ae,g=new Me;{const l=this.cm.opt.wheelRearAxle,h=this.cm.trans.controller.wheelSuspensionLength(3)||0,f=this.cm.trans.controller.wheelSteering(3)||0,C=this.cm.trans.controller.wheelRotation(3)||0;I.set(this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),I.sub(0,h,0),g.set(0,Math.sin(f/2),0,Math.cos(f/2)),c.set(l.x*Math.sin(C/2),l.y*Math.sin(C/2),l.z*Math.sin(C/2),Math.cos(C/2)),g.mul(c)}return{chassis:{loc:o,quat:s},frontRight:{loc:d,quat:u},frontLeft:{loc:A,quat:a},rearRight:{loc:I,quat:g},rearLeft:{loc:m,quat:p}}}}exports.Acerola3D=fi;exports.Action=mn;exports.ActionObject=bt;exports.AvatarPositionController=Qo;exports.AvatarVelocityController=So;exports.BaseController=Ht;exports.BaseView=Bn;exports.BillboardTransformer=Yn;exports.Box=qs;exports.Camera=mi;exports.Canvas=lr;exports.CarControl=Ys;exports.CarMotion=Er;exports.CarTransformer=mr;exports.ClipMotion=yn;exports.DefaultTransformer=Rt;exports.DynamicCharacterTransformer=oi;exports.FollowTransformer=Zn;exports.GLTF=Ss;exports.GameCanvas=pr;exports.Html3D=Ws;exports.ImagePlane=Ks;exports.KinematicCharacterTransformer=ii;exports.ObjectA3=Oe;exports.OrbitController=Ei;exports.Quat=Me;exports.RapierPhysicsEngine=vt;exports.RapierPhysicsWorld=gn;exports.SampleObject=Fs;exports.Scene=gi;exports.SmoothBillboardTransformer=Jn;exports.SmoothTransformer=fn;exports.Sound=at;exports.Sphere=zs;exports.StandardLights=Vs;exports.StaticTransformer=Wn;exports.Text3D=js;exports.ThreeCamera=Qt;exports.ThreeObject=Hs;exports.Transform=ze;exports.Vec3=Ae;exports.Window=hr;exports.asyncSleep=jr;exports.collisionMap=it;exports.deepMerge=Ot;exports.defaultCanvasOptions=cr;exports.defaultCarControlOptions=gr;exports.defaultDynamicCharacterTransformerOptions=ri;exports.defaultFollowTransformerOptions=Xn;exports.defaultGameCanvasOptions=fr;exports.defaultKinematicCharacterTransformerOptions=ni;exports.defaultSampleObjectOptions=dn;exports.defaultWindowOptions=ur;exports.eulerToQuaternion=ht;exports.getLookAtQuaternion=At;exports.initFont=Us;exports.initPhysics=Ur;exports.initSound=Ro;exports.recreateGLTFLoader=wn;
|
|
293
293
|
//# sourceMappingURL=a3js.cjs.js.map
|