a3js 0.0.56 → 0.0.58
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 +6 -6
- package/dist/a3js.cjs.js.map +1 -1
- package/dist/a3js.es.js +31 -31
- package/dist/a3js.es.js.map +1 -1
- package/package.json +1 -1
package/dist/a3js.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("three");c=s(c,1);let l=require("fflate");var u=class e{x=0;y=0;z=0;constructor(e,t,n){typeof e==`number`?(this.x=e,this.y=t,this.z=n):e===void 0?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new e(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){let e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t===0?console.warn(`Vec3.normalize.`):(this.x/=t,this.y/=t,this.z/=t),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}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}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 i,a,o,s;typeof e==`number`?(i=e,a=t,o=n,s=r):(i=e.x,a=e.y,o=e.z,s=e.w);let c=2*(a*this.z-o*this.y),l=2*(o*this.x-i*this.z),u=2*(i*this.y-a*this.x);return this.x+=s*c+a*u-o*l,this.y+=s*l+o*c-i*u,this.z+=s*u+i*l-a*c,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}},d=class e{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):e===void 0?(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 e(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){let e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t===0?console.warn(`Quat.normalize.`):(this.x/=t,this.y/=t,this.z/=t,this.w/=t),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){let i=this.x,a=this.y,o=this.z,s=this.w,c,l,u,d;return typeof e==`number`?(c=e,l=t,u=n,d=r):(c=e.x,l=e.y,u=e.z,d=e.w),this.x=s*c+i*d+a*u-o*l,this.y=s*l-i*u+a*d+o*c,this.z=s*u+i*l-a*c+o*d,this.w=s*d-i*c-a*l-o*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(f.set(t),r<0&&(r*=-1,f.set(-f.x,-f.y,-f.z,-f.w)),r>.9995){this.x=(1-n)*e.x+n*f.x,this.y=(1-n)*e.y+n*f.y,this.z=(1-n)*e.z+n*f.z,this.w=(1-n)*e.w+n*f.w;let t=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);t<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/t,this.y*=1/t,this.z*=1/t,this.w*=1/t)}else{let t=Math.acos(r),i=Math.sin((1-n)*t)/Math.sin(t),a=Math.sin(n*t)/Math.sin(t);this.x=i*e.x+a*f.x,this.y=i*e.y+a*f.y,this.z=i*e.z+a*f.z,this.w=i*e.w+a*f.w}}},f=new d;function p(e,t,n,r){n.normalize();let i=e.clone().sub(t).normalize(),a=new u().cross(i,n).normalize(),o=new u().cross(a,i),s=a.x,c=o.x,l=-i.x,f=a.y,p=o.y,m=-i.y,h=a.z,g=o.z,_=-i.z,v,y,b,x,S=s+p+_;if(S>0){let e=Math.sqrt(S+1)*2;v=(g-m)/e,y=(l-h)/e,b=(f-c)/e,x=.25*e}else if(s>p&&s>_){let e=Math.sqrt(1+s-p-_)*2;v=.25*e,y=(c+f)/e,b=(l+h)/e,x=(g-m)/e}else if(p>_){let e=Math.sqrt(1+p-s-_)*2;v=(c+f)/e,y=.25*e,b=(m+g)/e,x=(l-h)/e}else{let e=Math.sqrt(1+_-s-p)*2;v=(l+h)/e,y=(m+g)/e,b=.25*e,x=(f-c)/e}let C=r??new d;return C.set(v,y,b,x),C}function m(e,t=`ZXY`,n){let r=n===void 0?new d(0,0,0,1):n.set(0,0,0,1);for(let n=0;n<3;n++)switch(t.charAt(n)){case`X`:r.mul(Math.sin(e.x),0,0,Math.cos(e.x));break;case`Y`:r.mul(0,Math.sin(e.y),0,Math.cos(e.y));break;case`Z`:r.mul(0,0,Math.sin(e.z),Math.cos(e.z));break}return r}function h(e){let t=[[],[],[]],n=e.x+e.x,r=e.y+e.y,i=e.z+e.z,a=e.x*n,o=e.x*r,s=e.x*i,c=e.y*r,l=e.y*i,u=e.z*i,d=e.w*n,f=e.w*r,p=e.w*i;return t[0][0]=1-(c+u),t[0][1]=o-p,t[0][2]=s+f,t[1][0]=o+p,t[1][1]=1-(a+u),t[1][2]=l-d,t[2][0]=s-f,t[2][1]=l+d,t[2][2]=1-(a+c),t}var g=e=>Math.max(-1,Math.min(1,e));function _(e,t=`ZXY`,n){let r=h(e),i=n??new u,a=0,o=0,s=0;switch(t){case`XYZ`:o=Math.asin(g(r[0][2])),Math.abs(r[0][2])<.9999999?(a=Math.atan2(-r[1][2],r[2][2]),s=Math.atan2(-r[0][1],r[0][0])):(a=Math.atan2(r[2][1],r[1][1]),s=0);break;case`YXZ`:a=Math.asin(-g(r[1][2])),Math.abs(r[1][2])<.9999999?(o=Math.atan2(r[0][2],r[2][2]),s=Math.atan2(r[1][0],r[1][1])):(o=Math.atan2(-r[2][0],r[0][0]),s=0);break;case`ZXY`:a=Math.asin(g(r[2][1])),Math.abs(r[2][1])<.9999999?(o=Math.atan2(-r[2][0],r[2][2]),s=Math.atan2(-r[0][1],r[1][1])):(o=0,s=Math.atan2(r[1][0],r[0][0]));break;case`ZYX`:o=Math.asin(-g(r[2][0])),Math.abs(r[2][0])<.9999999?(a=Math.atan2(r[2][1],r[2][2]),s=Math.atan2(r[1][0],r[0][0])):(a=0,s=Math.atan2(-r[0][1],r[1][1]));break;case`YZX`:s=Math.asin(g(r[1][0])),Math.abs(r[1][0])<.9999999?(a=Math.atan2(-r[1][2],r[1][1]),o=Math.atan2(-r[2][0],r[0][0])):(a=0,o=Math.atan2(r[0][2],r[2][2]));break;case`XZY`:s=Math.asin(-g(r[0][1])),Math.abs(r[0][1])<.9999999?(a=Math.atan2(r[2][1],r[1][1]),o=Math.atan2(r[0][2],r[0][0])):(a=Math.atan2(-r[1][2],r[2][2]),o=0);break}return i.set(a,o,s),i}var v=class e{loc;quat;scale;constructor(){this.loc=new u,this.quat=new d,this.scale=new u(1,1,1)}set(t){return t instanceof e?(this.loc.set(t.loc),this.quat.set(t.quat),this.scale.set(t.scale)):(t.getPosition(this.loc),t.getQuat(this.quat),t.getScale(this.scale)),this}write(e){e instanceof W?(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(){let t=new e;return t.set(this),t}},y=class{transform;constructor(){this.transform=new v}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 u}setAngularVelocity(e){}getAngularVelocity(e){return e||new u}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}},b=class{transform;constructor(){this.transform=new v}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 u}setAngularVelocity(e){}getAngularVelocity(e){return e||new u}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}},x={duration:1},S=class{options;startTransform;transform;endTransform;currentTime;duration;constructor(e={}){this.options={...x,...e},this.startTransform=new v,this.transform=new v,this.endTransform=new v,this.currentTime=0,this.duration=this.options.duration}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||=new u;let 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);let i=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*i*i+6*i)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||=new u,_(this.startTransform.quat,`ZXY`,D),_(this.endTransform.quat,`ZXY`,O),e.set(O.x-D.x,O.y-D.y,O.z-D.z);let 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);let t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}},C=new u,w=new u,T=new d,E=new v,D=new u,O=new u,k={up:new u(0,1,0)},A=class extends y{up;target;constructor(e){super();let t={...k,...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=W.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),this.transform.quat.set(T)}},j={up:new u(0,1,0),duration:1},M=class extends S{up;target;constructor(e){super();let t={...j,...e};this.target=t.target,this.up=t.up,this.duration=t.duration}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=W.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),this.transform.quat.set(T)}},N={lookFrom:{x:0,y:5,z:-10},smoothness:.9},ee=class extends b{target;lookFrom;up;smoothness;constructor(e){super();let t={...N,...e};this.target=t.target,this.lookFrom=t.lookFrom,this.target.upVector?this.up=this.target.upVector:this.up=W.defaultUpVector,this.smoothness=t.smoothness}init(e,t){super.init(e,t)}update(e){super.update(e),C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),T.mul(0,1,0,0),E.quat.set(T),C.set(this.lookFrom),C.apply(this.target.getQuat()),C.add(this.target.getPosition()),E.loc.set(C),this.transform.loc.lerp(this.transform.loc,E.loc,1-this.smoothness),this.transform.quat.slerp(this.transform.quat,E.quat,1-this.smoothness)}};function te(e){return typeof e==`string`}function ne(e){return e.isMesh===!0}function re(e){return e.type===`RoundedBoxGeometry`}function ie(e){return e.type===`BoxGeometry`}function P(e){return e.type===`SphereGeometry`}function ae(e){return e.type===`IcosahedronGeometry`}function F(e){return e.type===`CylinderGeometry`}function oe(e){return e.type===`CapsuleGeometry`}function se(e){return e.isBone===!0}function I(e){return e.isPerspectiveCamera===!0}var L={rigidBody:`dynamic`,collider:`solid`,meshCollider:`convex_hull`,mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1},R,z=new Map,ce=class e{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!e.RAPIER){let t=await import(`@dimforge/rapier3d-compat`);await t.init(),e.RAPIER=t,R=t,this.isInitialized=!0}}createWorld(e){let t=1/60;return this.isRapierWorldOptions(e)&&(t=e.timestep),new B(new R.World(e.gravity),t)}isRapierWorldOptions(e){return`timestep`in e}},B=class{world;timestep;collisionEventQueue;kinematicCharacterCollisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new R.EventQueue(!0),this.world.integrationParameters.dt=this.timestep,this.kinematicCharacterCollisionEventQueue=[]}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){let t=Math.ceil(e/this.timestep);for(let e=0;e<t;e++)this.world.step(this.collisionEventQueue)}getCollisions(){let e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{let i=z.get(t),a=z.get(n);i&&a&&e.push({objectA:i,partOfA:t,objectB:a,partOfB:n,started:r})}),e.push(...this.kinematicCharacterCollisionEventQueue),this.kinematicCharacterCollisionEventQueue.length=0,e}},le=class{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...L,...e},this.transform=new v,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case`dynamic`:e=R.RigidBodyDesc.dynamic();break;case`kinematic`:e=R.RigidBodyDesc.kinematicPositionBased();break;case`fixed`:e=R.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;let e=this.completeOptions,t=[];this.objectA3.object3D.traverse(n=>{if(ne(n)){let r=fe(n.geometry),i=e.membership<<16|e.filter;if(r)r.colliderDesc.setCollisionGroups(i),e.collisionDetection&&r.colliderDesc.setActiveEvents(R.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(r.colliderDesc),r.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(r.volume);else{let r,a;switch(e.meshCollider){case`tri_mesh`:r=ue(n),a=V(n.geometry);break;case`convex_hull`:r=de(n),a=V(n.geometry);break}r&&(r.setCollisionGroups(i),e.collisionDetection&&r.setActiveEvents(R.ActiveEvents.COLLISION_EVENTS),r.setRestitution(e.restitution).setFriction(e.friction),this.colliderDescs.push(r),t.push(a))}}});let n=t.reduce((e,t)=>e+t,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=>{let n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&z.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),z.delete(t.handle)}),this.colliders.length=0,this.body&&=(e.world.removeRigidBody(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||=new u,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||=new u,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){let e=this.body.translation();this.transform.loc.set(e.x,e.y,e.z);let t=this.body.rotation();this.transform.quat.set(t.x,t.y,t.z,t.w)}}};function ue(e){let t=null;if(ne(e)){let n=e;n.updateWorldMatrix(!0,!0);let r=n.geometry.clone();r.applyMatrix4(n.matrixWorld);let i=r.attributes.position.array,a=r.index?r.index.array:null;if(a)a instanceof Uint32Array||(a=new Uint32Array(a));else{let e=r.attributes.position.count;a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t}i instanceof Float32Array&&(t=R.ColliderDesc.trimesh(i,a))}return t}function de(e){let t=null;if(ne(e)){let n=e;n.updateWorldMatrix(!0,!0);let r=n.geometry.clone();r.applyMatrix4(n.matrixWorld);let i=r.attributes.position.array;i instanceof Float32Array&&(t=R.ColliderDesc.convexHull(i))}return t}function V(e){let t=e.attributes.position;if(!t)throw Error(`position attribute not found`);let n=e.index,r=t.array,i=0,a=new c.Vector3,o=new c.Vector3,s=new c.Vector3;if(n){let e=n.array;for(let t=0;t<e.length;t+=3){let n=e[t]*3,c=e[t+1]*3,l=e[t+2]*3;a.set(r[n],r[n+1],r[n+2]),o.set(r[c],r[c+1],r[c+2]),s.set(r[l],r[l+1],r[l+2]),i+=a.dot(o.clone().cross(s))}}else for(let e=0;e<r.length;e+=9)a.set(r[e],r[e+1],r[e+2]),o.set(r[e+3],r[e+4],r[e+5]),s.set(r[e+6],r[e+7],r[e+8]),i+=a.dot(o.clone().cross(s));return Math.abs(i)/6}function fe(e){if(re(e)){let t=e.parameters,n=typeof t?.width==`number`?t.width/2:.5,r=typeof t?.height==`number`?t.height/2:.5,i=typeof t?.depth==`number`?t.depth/2:.5,a=.1;return{colliderDesc:R.ColliderDesc.roundCuboid(n-a,r-a,i-a,a),volume:2*n*2*r*2*i}}else if(ie(e)){let t=e.parameters,n=typeof t?.width==`number`?t.width/2:.5,r=typeof t?.height==`number`?t.height/2:.5,i=typeof t?.depth==`number`?t.depth/2:.5;return{colliderDesc:R.ColliderDesc.cuboid(n,r,i),volume:2*n*2*r*2*i}}else if(P(e)){let t=e.parameters,n=typeof t?.radius==`number`?t.radius:1;return{colliderDesc:R.ColliderDesc.ball(n),volume:4/3*Math.PI*n*n*n}}else if(ae(e)){let t=e.parameters,n=typeof t?.radius==`number`?t.radius:1;return{colliderDesc:R.ColliderDesc.ball(n),volume:4/3*Math.PI*n*n*n}}else if(F(e)){let t=e.parameters,n=typeof t?.radiusBottom==`number`?t.radiusBottom:.5,r=typeof t?.height==`number`?t.height:.5;return{colliderDesc:R.ColliderDesc.cylinder(r/2,n),volume:Math.PI*n*n*r}}else if(oe(e)){let t=e.parameters,n=typeof t?.radius==`number`?t.radius:.5,r=typeof t?.height==`number`?t.height:.5;return{colliderDesc:R.ColliderDesc.capsule(r/2,n),volume:4/3*Math.PI*n*n*n+Math.PI*n*n*r}}return null}var H=new ce;async function pe(){await H.init()}var U={v0:new u,v1:new u,v2:new u,v3:new u,v4:new u,q0:new d,q1:new d,q2:new d,q3:new d,q4:new d,t0:new v,t1:new v,t2:new v,t3:new v,t4:new v};function me(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}async function he(e){let t=await(await fetch(e)).arrayBuffer();return{zipUrl:e,unzipped:await new Promise((e,n)=>{(0,l.unzip)(new Uint8Array(t),(t,r)=>{t?n(t):e(r)})})}}function ge(e,t){if(t=t.replace(/^\.\//,``).replace(/^\//,``),e.unzipped[t])return(0,l.strFromU8)(e.unzipped[t]);throw Error(`readStringFromUnzippedA3(): no file at ${t}`)}function _e(e,t){if(t=t.replace(/^\.\//,``).replace(/^\//,``),e.unzipped[t]){let n=ye(t);return new Blob([new Uint8Array(e.unzipped[t])],{type:n})}else throw Error(`readBlobFromUnzippedA3(): no file at ${t}`)}var ve={"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 ye(e){for(let[t,n]of Object.entries(ve))if(n.test(e))return t;return`application/octet-stream`}function be(e,t){if(!t)return e;let n={...e};for(let r in t)typeof e[r]==`object`&&typeof t[r]==`object`?n[r]=be(e[r],t[r]):n[r]=t[r];return n}var xe={offset:.01,auto:!0,height:1.5,radius:.3,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1,pushDynamic:!1},Se=class{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;world;constructor(e={}){this.completeOptions={...xe,...e},this.transform=new v,this.capsuleCenter=new u,this.nextLocation=new u,this.tmpV1=new u,this.tmpV2=new u,this.tmpQ1=new d}init(e,t){if(this.transform.set(e),this.objectA3=t,this.completeOptions.auto){let e=new c.Vector3,n=new c.Quaternion,r=new c.Object3D;r.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(e),r.position.set(e.x,e.y,e.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(n),r.quaternion.set(n.x,n.y,n.z,n.w),t.getScale(this.tmpV2),this.tmpV2.write(e),r.scale.set(e.x,e.y,e.z);let i=new c.Box3().setFromObject(r);r.remove(t.object3D),i.getSize(e),this.completeOptions.radius=Math.max(e.x,e.z)/2,this.completeOptions.height=e.y-this.completeOptions.radius*2,i.getCenter(e),this.capsuleCenter.set(e)}let n=this.completeOptions;this.colliderDesc=R.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius);let r=n.membership<<16|n.filter;this.colliderDesc.setCollisionGroups(r),n.collisionDetection&&this.colliderDesc.setActiveEvents(R.ActiveEvents.COLLISION_EVENTS),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.world=e,this.controller=e.world.createCharacterController(this.completeOptions.offset),this.controller.setApplyImpulsesToDynamicBodies(this.completeOptions.pushDynamic),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&z.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&=(e.world.removeCollider(this.collider,!1),z.delete(this.collider.handle),void 0),this.controller&&e.world.removeCharacterController(this.controller)}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||=new u,e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||=new u,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);let t=this.controller.computedMovement();if(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),!this.collider||!this.world||!this.objectA3)return;let n=(this.collider.activeEvents()&R.ActiveEvents.COLLISION_EVENTS)!==0,r=this.collider.collisionGroups();for(let e=0;e<this.controller.numComputedCollisions();e++){let t=this.controller.computedCollision(e);if(t&&t.collider){let e=(t.collider.activeEvents()&R.ActiveEvents.COLLISION_EVENTS)!==0;if(!n&&!e)continue;let i=z.get(t.collider.handle);if(!i)continue;Ce(r,t.collider.collisionGroups())&&this.world.kinematicCharacterCollisionEventQueue.push({objectA:this.objectA3,partOfA:this.collider.handle,objectB:i,partOfB:t.collider.handle,started:!0})}}}};function Ce(e,t){let n=e>>>16,r=e&65535,i=t>>>16,a=t&65535;return(r&i)!==0&&(a&n)!==0}var we={auto:!0,height:1.5,radius:.3,mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1},Te=class{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...we,...e},this.transform=new v,this.capsuleCenter=new u,this.tmpV1=new u,this.tmpV2=new u,this.tmpQ1=new d}init(e,t){if(this.transform.set(e),this.objectA3=t,this.completeOptions.auto){let e=new c.Vector3,n=new c.Quaternion,r=new c.Object3D;r.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(e),r.position.set(e.x,e.y,e.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(n),r.quaternion.set(n.x,n.y,n.z,n.w),t.getScale(this.tmpV2),this.tmpV2.write(e),r.scale.set(e.x,e.y,e.z);let i=new c.Box3().setFromObject(r);i.getSize(e),this.completeOptions.radius=Math.max(e.x,e.z)/2,this.completeOptions.height=e.y-this.completeOptions.radius*2,i.getCenter(e),this.capsuleCenter.set(e)}let n=this.completeOptions;this.bodyDesc=R.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=R.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setMass(n.mass);let r=n.membership<<16|n.filter;this.colliderDesc.setCollisionGroups(r),n.collisionDetection&&this.colliderDesc.setActiveEvents(R.ActiveEvents.COLLISION_EVENTS),this.colliderDesc.setRestitution(n.restitution).setFriction(n.friction)}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&&z.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&=(e.world.removeCollider(this.collider,!0),z.delete(this.collider.handle),void 0),this.body&&=(e.world.removeRigidBody(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||=new u,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||=new u,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){let e=this.body.translation(),t=new R.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;let t=new u(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}},Ee=new c.SphereGeometry,De=new c.MeshStandardMaterial({color:16711680}),Oe=new c.Mesh(Ee,De),ke={left:-20,right:20,top:20,bottom:-20,angle:Math.PI/6,near:.1,far:100,shadowMapWidth:1024,shadowMapHeight:1024},W=class e{static defaultRotationOrder=`ZXY`;static defaultUpVector=new u(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;autoDirection=!1;constructor(e){this.autoDirection=!1,this.transformer=this.initTransformer(e),this.object3D=new c.Object3D;let t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(e=>{e.userData.a3js={objectA3:this}})}initObject(e){return Oe.clone()}initTransformer(e){return new y}setTransformer(e){U.t0.set(this.transformer.transform),e.init(U.t0,this),this.transformer=e}getTransformer(){return this.transformer}setMode(e,t){e===`Default`?this.setTransformer(new y):e===`Smooth`?this.setTransformer(new S(t)):e===`Follow`?this.setTransformer(new ee(t)):e===`Billboard`?this.setTransformer(new A(t)):e===`SmoothBillboard`?this.setTransformer(new M(t)):e===`SimplePhysics`?this.setTransformer(new le(t)):e===`KinematicCharacter`?this.setTransformer(new Se(t)):e===`DynamicCharacter`&&this.setTransformer(new Te(t))}update(t){let n=this.getLinearVelocity(),r=n.length();if(this.autoDirection&&r>1e-4){n.normalize();let t=this.upVector?this.upVector:e.defaultUpVector;U.v0.cross(n,t),U.v0.length()>1e-4&&(U.v0.set(0,0,0),p(U.v0,n,t,U.q0),this.setQuatNow(U.q0))}this.transformer.update(t),this.transformer.transform.write(this),this.children.forEach(e=>{e.update(t)})}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}let 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 Ae(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}setCastShadow(e){this.object3D.traverse(t=>{t instanceof c.Mesh&&(t.castShadow=e)})}setReceiveShadow(e){this.object3D.traverse(t=>{t instanceof c.Mesh&&(t.receiveShadow=e)})}setLightShadow(e,t){let n={...ke,...t};this.object3D.traverse(t=>{t instanceof c.DirectionalLight?(t.castShadow=e,t.shadow.camera.left=n.left,t.shadow.camera.right=n.right,t.shadow.camera.top=n.top,t.shadow.camera.bottom=n.bottom,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight):t instanceof c.SpotLight?(t.castShadow=e,t.angle=n.angle,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight):t instanceof c.PointLight&&(t.castShadow=e,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight)})}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setPosition(U.v0)}setPositionNow(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setPositionNow(U.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`?U.q0.set(e,t,n,r):U.q0.set(e),this.transformer.setQuat(U.q0)}setQuatNow(e,t,n,r){typeof e==`number`?U.q0.set(e,t,n,r):U.q0.set(e),this.transformer.setQuatNow(U.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setScale(U.v0)}setScaleNow(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setScaleNow(U.v0)}setRotation(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.setQuat(U.q1)}setRotationNow(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q0),this.setQuatNow(U.q0)}lookAt(t,n,r){typeof t==`number`?U.v1.set(t,n,r):t instanceof e?U.v1.set(t.transformer.transform.loc):U.v1.set(t);let i=this.upVector?this.upVector:e.defaultUpVector;p(this.transformer.transform.loc,U.v1,i,U.q1),this.setQuat(U.q1)}lookAtNow(t,n,r){typeof t==`number`?U.v1.set(t,n,r):t instanceof e?U.v1.set(t.transformer.transform.loc):U.v1.set(t);let i=this.upVector?this.upVector:e.defaultUpVector;p(this.transformer.transform.loc,U.v1,i,U.q1),this.setQuatNow(U.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new u(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new u(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new u(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){U.v1.set(this.transformer.transform.loc),typeof e==`number`?U.v1.add(e,t,n):U.v1.add(e),this.setPosition(U.v1)}translateNow(e,t,n){U.v1.set(this.transformer.transform.loc),typeof e==`number`?U.v1.add(e,t,n):U.v1.add(e),this.setPositionNow(U.v1)}mulQuat(e,t,n,r){U.q1.set(this.transformer.transform.quat),typeof e==`number`?U.q1.mul(e,t,n,r):U.q1.mul(e),this.setQuat(U.q1)}mulQuatNow(e,t,n,r){U.q1.set(this.transformer.transform.quat),typeof e==`number`?U.q1.mul(e,t,n,r):U.q1.mul(e),this.setQuatNow(U.q1)}mulRotation(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.getQuat(U.q0),U.q0.mul(U.q1),this.setQuat(U.q0)}mulRotationNow(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.getQuat(U.q0),U.q0.mul(U.q1),this.setQuatNow(U.q0)}scaleBy(e,t,n){this.getScale(U.v0),typeof e==`number`?U.v0.set(U.v0.x*e,U.v0.y*t,U.v0.z*n):U.v0.set(U.v0.x*e.x,U.v0.y*e.y,U.v0.z*e.z),this.setScale(U.v0)}mulScaleNow(e,t,n){this.getScale(U.v0),typeof e==`number`?U.v0.set(U.v0.x*e,U.v0.y*t,U.v0.z*n):U.v0.set(U.v0.x*e.x,U.v0.y*e.y,U.v0.z*e.z),this.setScaleNow(U.v0)}moveForward(e){this.getUnitVecZ(U.v0),U.v0.scale(e),this.translate(U.v0)}moveForwardNow(e){this.getUnitVecZ(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveBackward(e){this.getUnitVecZ(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveBackwardNow(e){this.getUnitVecZ(U.v0),U.v0.scale(-e),this.translateNow(U.v0)}moveRight(e){this.getUnitVecX(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveRightNow(e){this.getUnitVecX(U.v0),U.v0.scale(-e),this.translateNow(U.v0)}moveLeft(e){this.getUnitVecX(U.v0),U.v0.scale(e),this.translate(U.v0)}moveLeftNow(e){this.getUnitVecX(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveUp(e){this.getUnitVecY(U.v0),U.v0.scale(e),this.translate(U.v0)}moveUpNow(e){this.getUnitVecY(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveDown(e){this.getUnitVecY(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveDownNow(e){this.getUnitVecY(U.v0),U.v0.scale(-e),this.translateNow(U.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`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setLinearVelocity(U.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setAngularVelocity(U.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.addForce(U.v0)}addForceAtPoint(e,t,n,r,i,a){if(typeof e==`number`)if(typeof t==`number`)U.v0.set(e,t,n),U.v1.set(r,i,a);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 U.v0.set(e),U.v1.set(t);this.transformer.addForceAtPoint(U.v0,U.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.addTorque(U.v0)}applyImpulse(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.applyImpulse(U.v0)}applyImpulseAtPoint(e,t,n,r,i,a){if(typeof e==`number`)if(typeof t==`number`)U.v0.set(e,t,n),U.v1.set(r,i,a);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 U.v0.set(e),U.v1.set(t);this.transformer.applyImpulseAtPoint(U.v0,U.v1)}applyTorqueImpulse(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.applyTorqueImpulse(U.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}},Ae=class{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}}},je=class{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)}},Me=class extends W{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;autoAction=!1;haltActionName=`default`;walkActionName=`walk`;runActionName=`run`;minWalkSpeed=.1;minRunSpeed=1;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e),this.autoAction=!1}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){let t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){let 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){let 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){let{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(let[e,n]of Object.entries(t)){let t=this.currentAction.shape.bones[e];if(t&&(n.loc&&t.position.set(n.loc.x,n.loc.y,n.loc.z),n.quat&&t.quaternion.set(n.quat.x,n.quat.y,n.quat.z,n.quat.w),n.scale&&t.scale.set(n.scale.x,n.scale.y,n.scale.z)),!this.overwriteMorphs&&n.morphs){for(let e of n.morphs)for(let t of Object.keys(this.morphs))if(t.startsWith(e.name)){let{array:n}=this.morphs[t];for(let t=0;t<n.length;t++)n[t]=e.vals[t];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update();let n=this.getLinearVelocity().length();this.autoAction&&(n<this.minWalkSpeed?this.actions[this.haltActionName]!==this.stateAction&&this.setState(this.haltActionName):n<this.minRunSpeed?this.actions[this.walkActionName]!==this.stateAction&&this.setState(this.walkActionName):this.actions[this.runActionName]!==this.stateAction&&this.setState(this.runActionName))}setAutoAction(e){this.autoAction=e}setAutoDirection(e){this.autoDirection=e}},Ne=class{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{}}},G=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Pe=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,e.VERSION=`9.0.1`}),K=G((e,t)=>{"use strict";var n=e&&e.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(e,"__esModule",{value:!0}),e.toFastProperties=e.timer=e.peek=e.isES2015MapSupported=e.PRINT_WARNING=e.PRINT_ERROR=e.packArray=e.IDENTITY=e.NOOP=e.merge=e.groupBy=e.defaults=e.assignNoOverwrite=e.assign=e.zipObject=e.sortBy=e.indexOf=e.some=e.difference=e.every=e.isObject=e.isRegExp=e.isArray=e.partial=e.uniq=e.compact=e.reduce=e.findAll=e.find=e.cloneObj=e.cloneArr=e.contains=e.has=e.pick=e.reject=e.filter=e.dropRight=e.drop=e.isFunction=e.isUndefined=e.isString=e.forEach=e.last=e.first=e.flatten=e.map=e.mapValues=e.values=e.keys=e.isEmpty=void 0;function r(e){return e&&e.length===0}e.isEmpty=r;function i(e){return e==null?[]:Object.keys(e)}e.keys=i;function a(e){for(var t=[],n=Object.keys(e),r=0;r<n.length;r++)t.push(e[n[r]]);return t}e.values=a;function o(e,t){for(var n=[],r=i(e),a=0;a<r.length;a++){var o=r[a];n.push(t.call(null,e[o],o))}return n}e.mapValues=o;function s(e,t){for(var n=[],r=0;r<e.length;r++)n.push(t.call(null,e[r],r));return n}e.map=s;function c(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Array.isArray(r)?t=t.concat(c(r)):t.push(r)}return t}e.flatten=c;function l(e){return r(e)?void 0:e[0]}e.first=l;function u(e){var t=e&&e.length;return t?e[t-1]:void 0}e.last=u;function d(e,t){if(Array.isArray(e))for(var n=0;n<e.length;n++)t.call(null,e[n],n);else if(M(e))for(var r=i(e),n=0;n<r.length;n++){var a=r[n],o=e[a];t.call(null,o,a)}else throw Error(`non exhaustive match`)}e.forEach=d;function f(e){return typeof e==`string`}e.isString=f;function p(e){return e===void 0}e.isUndefined=p;function m(e){return e instanceof Function}e.isFunction=m;function h(e,t){return t===void 0&&(t=1),e.slice(t,e.length)}e.drop=h;function g(e,t){return t===void 0&&(t=1),e.slice(0,e.length-t)}e.dropRight=g;function _(e,t){var n=[];if(Array.isArray(e))for(var r=0;r<e.length;r++){var i=e[r];t.call(null,i)&&n.push(i)}return n}e.filter=_;function v(e,t){return _(e,function(e){return!t(e)})}e.reject=v;function y(e,t){for(var n=Object.keys(e),r={},i=0;i<n.length;i++){var a=n[i],o=e[a];t(o)&&(r[a]=o)}return r}e.pick=y;function b(e,t){return M(e)?e.hasOwnProperty(t):!1}e.has=b;function x(e,t){return w(e,function(e){return e===t})!==void 0}e.contains=x;function S(e){for(var t=[],n=0;n<e.length;n++)t.push(e[n]);return t}e.cloneArr=S;function C(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}e.cloneObj=C;function w(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(t.call(null,r))return r}}e.find=w;function T(e,t){for(var n=[],r=0;r<e.length;r++){var i=e[r];t.call(null,i)&&n.push(i)}return n}e.findAll=T;function E(e,t,n){for(var r=Array.isArray(e),o=r?e:a(e),s=r?[]:i(e),c=n,l=0;l<o.length;l++)c=t.call(null,c,o[l],r?l:s[l]);return c}e.reduce=E;function D(e){return v(e,function(e){return e==null})}e.compact=D;function O(e,t){t===void 0&&(t=function(e){return e});var n=[];return E(e,function(e,r){var i=t(r);return x(n,i)?e:(n.push(i),e.concat(r))},[])}e.uniq=O;function k(e){var t=[...arguments].slice(1),n=[null].concat(t);return Function.bind.apply(e,n)}e.partial=k;function A(e){return Array.isArray(e)}e.isArray=A;function j(e){return e instanceof RegExp}e.isRegExp=j;function M(e){return e instanceof Object}e.isObject=M;function N(e,t){for(var n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}e.every=N;function ee(e,t){return v(e,function(e){return x(t,e)})}e.difference=ee;function te(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return!0;return!1}e.some=te;function ne(e,t){for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1}e.indexOf=ne;function re(e,t){var n=S(e);return n.sort(function(e,n){return t(e)-t(n)}),n}e.sortBy=re;function ie(e,t){if(e.length!==t.length)throw Error(`can't zipObject with different number of keys and values!`);for(var n={},r=0;r<e.length;r++)n[e[r]]=t[r];return n}e.zipObject=ie;function P(e){for(var t=[...arguments].slice(1),n=0;n<t.length;n++)for(var r=t[n],a=i(r),o=0;o<a.length;o++){var s=a[o];e[s]=r[s]}return e}e.assign=P;function ae(e){for(var t=[...arguments].slice(1),n=0;n<t.length;n++)for(var r=t[n],a=i(r),o=0;o<a.length;o++){var s=a[o];b(e,s)||(e[s]=r[s])}return e}e.assignNoOverwrite=ae;function F(){var e=[...arguments];return ae.apply(void 0,n([{}],e))}e.defaults=F;function oe(e,t){var n={};return d(e,function(e){var r=t(e),i=n[r];i?i.push(e):n[r]=[e]}),n}e.groupBy=oe;function se(e,t){for(var n=C(e),r=i(t),a=0;a<r.length;a++){var o=r[a];n[o]=t[o]}return n}e.merge=se;function I(){}e.NOOP=I;function L(e){return e}e.IDENTITY=L;function R(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];t.push(r===void 0?void 0:r)}return t}e.packArray=R;function z(e){console&&console.error&&console.error(`Error: `+e)}e.PRINT_ERROR=z;function ce(e){console&&console.warn&&console.warn(`Warning: `+e)}e.PRINT_WARNING=ce;function B(){return typeof Map==`function`}e.isES2015MapSupported=B;function le(e){return e[e.length-1]}e.peek=le;function ue(e){var t=new Date().getTime(),n=e();return{time:new Date().getTime()-t,value:n}}e.timer=ue;function de(e){function t(){}t.prototype=e;var n=new t;function r(){return typeof n.bar}return r(),r(),e}e.toFastProperties=de}),Fe=G((e,t)=>{(function(e,n){typeof define==`function`&&define.amd?define([],n):typeof t==`object`&&t.exports?t.exports=n():e.regexpToAst=n()})(typeof self<`u`?self:e,function(){function e(){}e.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},e.prototype.restoreState=function(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx},e.prototype.pattern=function(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar(`/`);var t=this.disjunction();this.consumeChar(`/`);for(var n={type:`Flags`,loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case`g`:o(n,`global`);break;case`i`:o(n,`ignoreCase`);break;case`m`:o(n,`multiLine`);break;case`u`:o(n,`unicode`);break;case`y`:o(n,`sticky`);break}if(this.idx!==this.input.length)throw Error(`Redundant input: `+this.input.substring(this.idx));return{type:`Pattern`,flags:n,value:t,loc:this.loc(0)}},e.prototype.disjunction=function(){var e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()===`|`;)this.consumeChar(`|`),e.push(this.alternative());return{type:`Disjunction`,value:e,loc:this.loc(t)}},e.prototype.alternative=function(){for(var e=[],t=this.idx;this.isTerm();)e.push(this.term());return{type:`Alternative`,value:e,loc:this.loc(t)}},e.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},e.prototype.assertion=function(){var e=this.idx;switch(this.popChar()){case`^`:return{type:`StartAnchor`,loc:this.loc(e)};case`$`:return{type:`EndAnchor`,loc:this.loc(e)};case`\\`:switch(this.popChar()){case`b`:return{type:`WordBoundary`,loc:this.loc(e)};case`B`:return{type:`NonWordBoundary`,loc:this.loc(e)}}throw Error(`Invalid Assertion Escape`);case`(`:this.consumeChar(`?`);var t;switch(this.popChar()){case`=`:t=`Lookahead`;break;case`!`:t=`NegativeLookahead`;break}s(t);var n=this.disjunction();return this.consumeChar(`)`),{type:t,value:n,loc:this.loc(e)}}c()},e.prototype.quantifier=function(e){var t,n=this.idx;switch(this.popChar()){case`*`:t={atLeast:0,atMost:1/0};break;case`+`:t={atLeast:1,atMost:1/0};break;case`?`:t={atLeast:0,atMost:1};break;case`{`:var r=this.integerIncludingZero();switch(this.popChar()){case`}`:t={atLeast:r,atMost:r};break;case`,`:var i;this.isDigit()?(i=this.integerIncludingZero(),t={atLeast:r,atMost:i}):t={atLeast:r,atMost:1/0},this.consumeChar(`}`);break}if(e===!0&&t===void 0)return;s(t);break}if(!(e===!0&&t===void 0))return s(t),this.peekChar(0)===`?`?(this.consumeChar(`?`),t.greedy=!1):t.greedy=!0,t.type=`Quantifier`,t.loc=this.loc(n),t},e.prototype.atom=function(){var e,t=this.idx;switch(this.peekChar()){case`.`:e=this.dotAll();break;case`\\`:e=this.atomEscape();break;case`[`:e=this.characterClass();break;case`(`:e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),s(e),e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e},e.prototype.dotAll=function(){return this.consumeChar(`.`),{type:`Set`,complement:!0,value:[i(`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("three");c=s(c,1);let l=require("fflate");var u=class e{x=0;y=0;z=0;constructor(e,t,n){typeof e==`number`?(this.x=e,this.y=t,this.z=n):e===void 0?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new e(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){let e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t===0?console.warn(`Vec3.normalize.`):(this.x/=t,this.y/=t,this.z/=t),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}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}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 i,a,o,s;typeof e==`number`?(i=e,a=t,o=n,s=r):(i=e.x,a=e.y,o=e.z,s=e.w);let c=2*(a*this.z-o*this.y),l=2*(o*this.x-i*this.z),u=2*(i*this.y-a*this.x);return this.x+=s*c+a*u-o*l,this.y+=s*l+o*c-i*u,this.z+=s*u+i*l-a*c,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}},d=class e{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):e===void 0?(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 e(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){let e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t===0?console.warn(`Quat.normalize.`):(this.x/=t,this.y/=t,this.z/=t,this.w/=t),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){let i=this.x,a=this.y,o=this.z,s=this.w,c,l,u,d;return typeof e==`number`?(c=e,l=t,u=n,d=r):(c=e.x,l=e.y,u=e.z,d=e.w),this.x=s*c+i*d+a*u-o*l,this.y=s*l-i*u+a*d+o*c,this.z=s*u+i*l-a*c+o*d,this.w=s*d-i*c-a*l-o*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(f.set(t),r<0&&(r*=-1,f.set(-f.x,-f.y,-f.z,-f.w)),r>.9995){this.x=(1-n)*e.x+n*f.x,this.y=(1-n)*e.y+n*f.y,this.z=(1-n)*e.z+n*f.z,this.w=(1-n)*e.w+n*f.w;let t=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);t<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/t,this.y*=1/t,this.z*=1/t,this.w*=1/t)}else{let t=Math.acos(r),i=Math.sin((1-n)*t)/Math.sin(t),a=Math.sin(n*t)/Math.sin(t);this.x=i*e.x+a*f.x,this.y=i*e.y+a*f.y,this.z=i*e.z+a*f.z,this.w=i*e.w+a*f.w}}},f=new d;function p(e,t,n,r){n.normalize();let i=e.clone().sub(t).normalize(),a=new u().cross(i,n).normalize(),o=new u().cross(a,i),s=a.x,c=o.x,l=-i.x,f=a.y,p=o.y,m=-i.y,h=a.z,g=o.z,_=-i.z,v,y,b,x,S=s+p+_;if(S>0){let e=Math.sqrt(S+1)*2;v=(g-m)/e,y=(l-h)/e,b=(f-c)/e,x=.25*e}else if(s>p&&s>_){let e=Math.sqrt(1+s-p-_)*2;v=.25*e,y=(c+f)/e,b=(l+h)/e,x=(g-m)/e}else if(p>_){let e=Math.sqrt(1+p-s-_)*2;v=(c+f)/e,y=.25*e,b=(m+g)/e,x=(l-h)/e}else{let e=Math.sqrt(1+_-s-p)*2;v=(l+h)/e,y=(m+g)/e,b=.25*e,x=(f-c)/e}let C=r??new d;return C.set(v,y,b,x),C}function m(e,t=`ZXY`,n){let r=n===void 0?new d(0,0,0,1):n.set(0,0,0,1);for(let n=0;n<3;n++)switch(t.charAt(n)){case`X`:r.mul(Math.sin(e.x),0,0,Math.cos(e.x));break;case`Y`:r.mul(0,Math.sin(e.y),0,Math.cos(e.y));break;case`Z`:r.mul(0,0,Math.sin(e.z),Math.cos(e.z));break}return r}function h(e){let t=[[],[],[]],n=e.x+e.x,r=e.y+e.y,i=e.z+e.z,a=e.x*n,o=e.x*r,s=e.x*i,c=e.y*r,l=e.y*i,u=e.z*i,d=e.w*n,f=e.w*r,p=e.w*i;return t[0][0]=1-(c+u),t[0][1]=o-p,t[0][2]=s+f,t[1][0]=o+p,t[1][1]=1-(a+u),t[1][2]=l-d,t[2][0]=s-f,t[2][1]=l+d,t[2][2]=1-(a+c),t}var g=e=>Math.max(-1,Math.min(1,e));function _(e,t=`ZXY`,n){let r=h(e),i=n??new u,a=0,o=0,s=0;switch(t){case`XYZ`:o=Math.asin(g(r[0][2])),Math.abs(r[0][2])<.9999999?(a=Math.atan2(-r[1][2],r[2][2]),s=Math.atan2(-r[0][1],r[0][0])):(a=Math.atan2(r[2][1],r[1][1]),s=0);break;case`YXZ`:a=Math.asin(-g(r[1][2])),Math.abs(r[1][2])<.9999999?(o=Math.atan2(r[0][2],r[2][2]),s=Math.atan2(r[1][0],r[1][1])):(o=Math.atan2(-r[2][0],r[0][0]),s=0);break;case`ZXY`:a=Math.asin(g(r[2][1])),Math.abs(r[2][1])<.9999999?(o=Math.atan2(-r[2][0],r[2][2]),s=Math.atan2(-r[0][1],r[1][1])):(o=0,s=Math.atan2(r[1][0],r[0][0]));break;case`ZYX`:o=Math.asin(-g(r[2][0])),Math.abs(r[2][0])<.9999999?(a=Math.atan2(r[2][1],r[2][2]),s=Math.atan2(r[1][0],r[0][0])):(a=0,s=Math.atan2(-r[0][1],r[1][1]));break;case`YZX`:s=Math.asin(g(r[1][0])),Math.abs(r[1][0])<.9999999?(a=Math.atan2(-r[1][2],r[1][1]),o=Math.atan2(-r[2][0],r[0][0])):(a=0,o=Math.atan2(r[0][2],r[2][2]));break;case`XZY`:s=Math.asin(-g(r[0][1])),Math.abs(r[0][1])<.9999999?(a=Math.atan2(r[2][1],r[1][1]),o=Math.atan2(r[0][2],r[0][0])):(a=Math.atan2(-r[1][2],r[2][2]),o=0);break}return i.set(a,o,s),i}var v=class e{loc;quat;scale;constructor(){this.loc=new u,this.quat=new d,this.scale=new u(1,1,1)}set(t){return t instanceof e?(this.loc.set(t.loc),this.quat.set(t.quat),this.scale.set(t.scale)):(t.getPosition(this.loc),t.getQuat(this.quat),t.getScale(this.scale)),this}write(e){e instanceof W?(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(){let t=new e;return t.set(this),t}},y=class{transform;constructor(){this.transform=new v}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 u}setAngularVelocity(e){}getAngularVelocity(e){return e||new u}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}},b=class{transform;constructor(){this.transform=new v}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 u}setAngularVelocity(e){}getAngularVelocity(e){return e||new u}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}},x={duration:1},S=class{options;startTransform;transform;endTransform;currentTime;duration;constructor(e={}){this.options={...x,...e},this.startTransform=new v,this.transform=new v,this.endTransform=new v,this.currentTime=0,this.duration=this.options.duration}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||=new u;let 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);let i=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*i*i+6*i)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||=new u,_(this.startTransform.quat,`ZXY`,D),_(this.endTransform.quat,`ZXY`,O),e.set(O.x-D.x,O.y-D.y,O.z-D.z);let 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);let t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}},C=new u,w=new u,T=new d,E=new v,D=new u,O=new u,k={up:new u(0,1,0)},A=class extends y{up;target;constructor(e){super();let t={...k,...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=W.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),this.transform.quat.set(T)}},j={up:new u(0,1,0),duration:1},M=class extends S{up;target;constructor(e){super();let t={...j,...e};this.target=t.target,this.up=t.up,this.duration=t.duration}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=W.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),this.transform.quat.set(T)}},N={lookFrom:{x:0,y:5,z:-10},smoothness:.9},ee=class extends b{target;lookFrom;up;smoothness;constructor(e){super();let t={...N,...e};this.target=t.target,this.lookFrom=t.lookFrom,this.target.upVector?this.up=this.target.upVector:this.up=W.defaultUpVector,this.smoothness=t.smoothness}init(e,t){super.init(e,t)}update(e){super.update(e),C.set(this.transform.loc),this.target.getPosition(w),p(C,w,this.up,T),T.mul(0,1,0,0),E.quat.set(T),C.set(this.lookFrom),C.apply(this.target.getQuat()),C.add(this.target.getPosition()),E.loc.set(C),this.transform.loc.lerp(this.transform.loc,E.loc,1-this.smoothness),this.transform.quat.slerp(this.transform.quat,E.quat,1-this.smoothness)}};function te(e){return typeof e==`string`}function ne(e){return e.isMesh===!0}function re(e){return e.type===`RoundedBoxGeometry`}function ie(e){return e.type===`BoxGeometry`}function ae(e){return e.type===`SphereGeometry`}function oe(e){return e.type===`IcosahedronGeometry`}function P(e){return e.type===`CylinderGeometry`}function se(e){return e.type===`CapsuleGeometry`}function ce(e){return e.isBone===!0}function F(e){return e.isPerspectiveCamera===!0}var I={rigidBody:`dynamic`,collider:`solid`,meshCollider:`convex_hull`,mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1},L,R=new Map,le=class e{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!e.RAPIER){let t=await import(`@dimforge/rapier3d-compat`);await t.init(),e.RAPIER=t,L=t,this.isInitialized=!0}}createWorld(e){let t=1/60;return this.isRapierWorldOptions(e)&&(t=e.timestep),new z(new L.World(e.gravity),t)}isRapierWorldOptions(e){return`timestep`in e}},z=class{world;timestep;collisionEventQueue;kinematicCharacterCollisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new L.EventQueue(!0),this.world.integrationParameters.dt=this.timestep,this.kinematicCharacterCollisionEventQueue=[]}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){let t=Math.ceil(e/this.timestep);for(let e=0;e<t;e++)this.world.step(this.collisionEventQueue)}getCollisions(){let e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{let i=R.get(t),a=R.get(n);i&&a&&e.push({objectA:i,partOfA:t,objectB:a,partOfB:n,started:r})}),e.push(...this.kinematicCharacterCollisionEventQueue),this.kinematicCharacterCollisionEventQueue.length=0,e}},B=class{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...I,...e},this.transform=new v,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case`dynamic`:e=L.RigidBodyDesc.dynamic();break;case`kinematic`:e=L.RigidBodyDesc.kinematicPositionBased();break;case`fixed`:e=L.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;let e=this.completeOptions,t=[],n=e.membership<<16|e.filter,r=this.transform.scale;this.objectA3.object3D.traverse(i=>{if(ne(i)){let a=fe(i.geometry,r);if(a)a.colliderDesc.setCollisionGroups(n),e.collisionDetection&&a.colliderDesc.setActiveEvents(L.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(a.colliderDesc),a.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(a.volume);else{let r,a;switch(e.meshCollider){case`tri_mesh`:r=ue(i),a=V(i.geometry);break;case`convex_hull`:r=de(i),a=V(i.geometry);break}r&&(r.setCollisionGroups(n),e.collisionDetection&&r.setActiveEvents(L.ActiveEvents.COLLISION_EVENTS),r.setRestitution(e.restitution).setFriction(e.friction),this.colliderDescs.push(r),t.push(a))}}});let i=t.reduce((e,t)=>e+t,0);for(let n=0;n<this.colliderDescs.length;n++)this.colliderDescs[n].setRestitution(e.restitution),this.colliderDescs[n].setFriction(e.friction),this.colliderDescs[n].setMass(e.mass*(t[n]/i))}init(e,t){this.transform.set(e),this.objectA3=t,this.colliderDescs=[],this.colliders=[],this.objectA3.object3D.scale.set(e.scale.x,e.scale.y,e.scale.z),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=>{let n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&R.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),R.delete(t.handle)}),this.colliders.length=0,this.body&&=(e.world.removeRigidBody(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||=new u,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||=new u,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){let e=this.body.translation();this.transform.loc.set(e.x,e.y,e.z);let t=this.body.rotation();this.transform.quat.set(t.x,t.y,t.z,t.w)}}};function ue(e){let t=null;if(ne(e)){let n=e;n.updateWorldMatrix(!0,!0);let r=n.geometry.clone();r.applyMatrix4(n.matrixWorld);let i=r.attributes.position.array,a=r.index?r.index.array:null;if(a)a instanceof Uint32Array||(a=new Uint32Array(a));else{let e=r.attributes.position.count;a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t}i instanceof Float32Array&&(t=L.ColliderDesc.trimesh(i,a))}return t}function de(e){let t=null;if(ne(e)){let n=e;n.updateWorldMatrix(!0,!0);let r=n.geometry.clone();r.applyMatrix4(n.matrixWorld);let i=r.attributes.position.array;i instanceof Float32Array&&(t=L.ColliderDesc.convexHull(i))}return t}function V(e){let t=e.attributes.position;if(!t)throw Error(`position attribute not found`);let n=e.index,r=t.array,i=0,a=new c.Vector3,o=new c.Vector3,s=new c.Vector3;if(n){let e=n.array;for(let t=0;t<e.length;t+=3){let n=e[t]*3,c=e[t+1]*3,l=e[t+2]*3;a.set(r[n],r[n+1],r[n+2]),o.set(r[c],r[c+1],r[c+2]),s.set(r[l],r[l+1],r[l+2]),i+=a.dot(o.clone().cross(s))}}else for(let e=0;e<r.length;e+=9)a.set(r[e],r[e+1],r[e+2]),o.set(r[e+3],r[e+4],r[e+5]),s.set(r[e+6],r[e+7],r[e+8]),i+=a.dot(o.clone().cross(s));return Math.abs(i)/6}function fe(e,t=new u(1,1,1)){if(re(e)){let n=e.parameters,r=(typeof n?.width==`number`?n.width/2:.5)*t.x,i=(typeof n?.height==`number`?n.height/2:.5)*t.y,a=(typeof n?.depth==`number`?n.depth/2:.5)*t.z,o=.1*Math.cbrt(t.x*t.y*t.z);return{colliderDesc:L.ColliderDesc.roundCuboid(r-o,i-o,a-o,o),volume:2*r*2*i*2*a}}else if(ie(e)){let n=e.parameters,r=(typeof n?.width==`number`?n.width/2:.5)*t.x,i=(typeof n?.height==`number`?n.height/2:.5)*t.y,a=(typeof n?.depth==`number`?n.depth/2:.5)*t.z;return{colliderDesc:L.ColliderDesc.cuboid(r,i,a),volume:2*r*2*i*2*a}}else if(ae(e)){let n=e.parameters,r=Math.cbrt(t.x*t.y*t.z),i=(typeof n?.radius==`number`?n.radius:1)*r;return{colliderDesc:L.ColliderDesc.ball(i),volume:4/3*Math.PI*i*i*i}}else if(oe(e)){let n=e.parameters,r=Math.cbrt(t.x*t.y*t.z),i=(typeof n?.radius==`number`?n.radius:1)*r;return{colliderDesc:L.ColliderDesc.ball(i),volume:4/3*Math.PI*i*i*i}}else if(P(e)){let n=e.parameters,r=Math.sqrt(t.x*t.z),i=(typeof n?.radiusBottom==`number`?n.radiusBottom:.5)*r,a=(typeof n?.height==`number`?n.height:.5)*t.y;return{colliderDesc:L.ColliderDesc.cylinder(a/2,i),volume:Math.PI*i*i*a}}else if(se(e)){let n=e.parameters,r=Math.sqrt(t.x*t.z),i=(typeof n?.radius==`number`?n.radius:.5)*r,a=(typeof n?.height==`number`?n.height:.5)*t.y;return{colliderDesc:L.ColliderDesc.capsule(a/2,i),volume:4/3*Math.PI*i*i*i+Math.PI*i*i*a}}return null}var H=new le;async function pe(){await H.init()}var U={v0:new u,v1:new u,v2:new u,v3:new u,v4:new u,q0:new d,q1:new d,q2:new d,q3:new d,q4:new d,t0:new v,t1:new v,t2:new v,t3:new v,t4:new v};function me(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}async function he(e){let t=await(await fetch(e)).arrayBuffer();return{zipUrl:e,unzipped:await new Promise((e,n)=>{(0,l.unzip)(new Uint8Array(t),(t,r)=>{t?n(t):e(r)})})}}function ge(e,t){if(t=t.replace(/^\.\//,``).replace(/^\//,``),e.unzipped[t])return(0,l.strFromU8)(e.unzipped[t]);throw Error(`readStringFromUnzippedA3(): no file at ${t}`)}function _e(e,t){if(t=t.replace(/^\.\//,``).replace(/^\//,``),e.unzipped[t]){let n=ye(t);return new Blob([new Uint8Array(e.unzipped[t])],{type:n})}else throw Error(`readBlobFromUnzippedA3(): no file at ${t}`)}var ve={"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 ye(e){for(let[t,n]of Object.entries(ve))if(n.test(e))return t;return`application/octet-stream`}function be(e,t){if(!t)return e;let n={...e};for(let r in t)typeof e[r]==`object`&&typeof t[r]==`object`?n[r]=be(e[r],t[r]):n[r]=t[r];return n}var xe={offset:.01,auto:!0,height:1.5,radius:.3,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1,pushDynamic:!1},Se=class{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;world;constructor(e={}){this.completeOptions={...xe,...e},this.transform=new v,this.capsuleCenter=new u,this.nextLocation=new u,this.tmpV1=new u,this.tmpV2=new u,this.tmpQ1=new d}init(e,t){if(this.transform.set(e),this.objectA3=t,this.completeOptions.auto){let e=new c.Vector3,n=new c.Quaternion,r=new c.Object3D;r.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(e),r.position.set(e.x,e.y,e.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(n),r.quaternion.set(n.x,n.y,n.z,n.w),t.getScale(this.tmpV2),this.tmpV2.write(e),r.scale.set(e.x,e.y,e.z);let i=new c.Box3().setFromObject(r);r.remove(t.object3D),i.getSize(e),this.completeOptions.radius=Math.max(e.x,e.z)/2,this.completeOptions.height=e.y-this.completeOptions.radius*2,i.getCenter(e),this.capsuleCenter.set(e)}let n=this.completeOptions;this.colliderDesc=L.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius);let r=n.membership<<16|n.filter;this.colliderDesc.setCollisionGroups(r),n.collisionDetection&&this.colliderDesc.setActiveEvents(L.ActiveEvents.COLLISION_EVENTS),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.world=e,this.controller=e.world.createCharacterController(this.completeOptions.offset),this.controller.setApplyImpulsesToDynamicBodies(this.completeOptions.pushDynamic),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&R.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&=(e.world.removeCollider(this.collider,!1),R.delete(this.collider.handle),void 0),this.controller&&e.world.removeCharacterController(this.controller)}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||=new u,e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||=new u,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);let t=this.controller.computedMovement();if(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),!this.collider||!this.world||!this.objectA3)return;let n=(this.collider.activeEvents()&L.ActiveEvents.COLLISION_EVENTS)!==0,r=this.collider.collisionGroups();for(let e=0;e<this.controller.numComputedCollisions();e++){let t=this.controller.computedCollision(e);if(t&&t.collider){let e=(t.collider.activeEvents()&L.ActiveEvents.COLLISION_EVENTS)!==0;if(!n&&!e)continue;let i=R.get(t.collider.handle);if(!i)continue;Ce(r,t.collider.collisionGroups())&&this.world.kinematicCharacterCollisionEventQueue.push({objectA:this.objectA3,partOfA:this.collider.handle,objectB:i,partOfB:t.collider.handle,started:!0})}}}};function Ce(e,t){let n=e>>>16,r=e&65535,i=t>>>16,a=t&65535;return(r&i)!==0&&(a&n)!==0}var we={auto:!0,height:1.5,radius:.3,mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1},Te=class{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...we,...e},this.transform=new v,this.capsuleCenter=new u,this.tmpV1=new u,this.tmpV2=new u,this.tmpQ1=new d}init(e,t){if(this.transform.set(e),this.objectA3=t,this.completeOptions.auto){let e=new c.Vector3,n=new c.Quaternion,r=new c.Object3D;r.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(e),r.position.set(e.x,e.y,e.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(n),r.quaternion.set(n.x,n.y,n.z,n.w),t.getScale(this.tmpV2),this.tmpV2.write(e),r.scale.set(e.x,e.y,e.z);let i=new c.Box3().setFromObject(r);i.getSize(e),this.completeOptions.radius=Math.max(e.x,e.z)/2,this.completeOptions.height=e.y-this.completeOptions.radius*2,i.getCenter(e),this.capsuleCenter.set(e)}let n=this.completeOptions;this.bodyDesc=L.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=L.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setMass(n.mass);let r=n.membership<<16|n.filter;this.colliderDesc.setCollisionGroups(r),n.collisionDetection&&this.colliderDesc.setActiveEvents(L.ActiveEvents.COLLISION_EVENTS),this.colliderDesc.setRestitution(n.restitution).setFriction(n.friction)}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&&R.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&=(e.world.removeCollider(this.collider,!0),R.delete(this.collider.handle),void 0),this.body&&=(e.world.removeRigidBody(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||=new u,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||=new u,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){let e=this.body.translation(),t=new L.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;let t=new u(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}},Ee=new c.SphereGeometry,De=new c.MeshStandardMaterial({color:16711680}),Oe=new c.Mesh(Ee,De),ke={left:-20,right:20,top:20,bottom:-20,angle:Math.PI/6,near:.1,far:100,shadowMapWidth:1024,shadowMapHeight:1024},W=class e{static defaultRotationOrder=`ZXY`;static defaultUpVector=new u(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;autoDirection=!1;constructor(e){this.autoDirection=!1,this.transformer=this.initTransformer(e),this.object3D=new c.Object3D;let t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(e=>{e.userData.a3js={objectA3:this}})}initObject(e){return Oe.clone()}initTransformer(e){return new y}setTransformer(e){U.t0.set(this.transformer.transform),e.init(U.t0,this),this.transformer=e}getTransformer(){return this.transformer}setMode(e,t){e===`Default`?this.setTransformer(new y):e===`Smooth`?this.setTransformer(new S(t)):e===`Follow`?this.setTransformer(new ee(t)):e===`Billboard`?this.setTransformer(new A(t)):e===`SmoothBillboard`?this.setTransformer(new M(t)):e===`SimplePhysics`?this.setTransformer(new B(t)):e===`KinematicCharacter`?this.setTransformer(new Se(t)):e===`DynamicCharacter`&&this.setTransformer(new Te(t))}update(t){let n=this.getLinearVelocity(),r=n.length();if(this.autoDirection&&r>1e-4){n.normalize();let t=this.upVector?this.upVector:e.defaultUpVector;U.v0.cross(n,t),U.v0.length()>1e-4&&(U.v0.set(0,0,0),p(U.v0,n,t,U.q0),this.setQuatNow(U.q0))}this.transformer.update(t),this.transformer.transform.write(this),this.children.forEach(e=>{e.update(t)})}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}let 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 Ae(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}setCastShadow(e){this.object3D.traverse(t=>{t instanceof c.Mesh&&(t.castShadow=e)})}setReceiveShadow(e){this.object3D.traverse(t=>{t instanceof c.Mesh&&(t.receiveShadow=e)})}setLightShadow(e,t){let n={...ke,...t};this.object3D.traverse(t=>{t instanceof c.DirectionalLight?(t.castShadow=e,t.shadow.camera.left=n.left,t.shadow.camera.right=n.right,t.shadow.camera.top=n.top,t.shadow.camera.bottom=n.bottom,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight):t instanceof c.SpotLight?(t.castShadow=e,t.angle=n.angle,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight):t instanceof c.PointLight&&(t.castShadow=e,t.shadow.camera.near=n.near,t.shadow.camera.far=n.far,t.shadow.camera.updateProjectionMatrix(),t.shadow.mapSize.width=n.shadowMapWidth,t.shadow.mapSize.height=n.shadowMapHeight)})}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setPosition(U.v0)}setPositionNow(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setPositionNow(U.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`?U.q0.set(e,t,n,r):U.q0.set(e),this.transformer.setQuat(U.q0)}setQuatNow(e,t,n,r){typeof e==`number`?U.q0.set(e,t,n,r):U.q0.set(e),this.transformer.setQuatNow(U.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setScale(U.v0)}setScaleNow(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setScaleNow(U.v0)}setRotation(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.setQuat(U.q1)}setRotationNow(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q0),this.setQuatNow(U.q0)}lookAt(t,n,r){typeof t==`number`?U.v1.set(t,n,r):t instanceof e?U.v1.set(t.transformer.transform.loc):U.v1.set(t);let i=this.upVector?this.upVector:e.defaultUpVector;p(this.transformer.transform.loc,U.v1,i,U.q1),this.setQuat(U.q1)}lookAtNow(t,n,r){typeof t==`number`?U.v1.set(t,n,r):t instanceof e?U.v1.set(t.transformer.transform.loc):U.v1.set(t);let i=this.upVector?this.upVector:e.defaultUpVector;p(this.transformer.transform.loc,U.v1,i,U.q1),this.setQuatNow(U.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new u(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new u(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new u(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){U.v1.set(this.transformer.transform.loc),typeof e==`number`?U.v1.add(e,t,n):U.v1.add(e),this.setPosition(U.v1)}translateNow(e,t,n){U.v1.set(this.transformer.transform.loc),typeof e==`number`?U.v1.add(e,t,n):U.v1.add(e),this.setPositionNow(U.v1)}mulQuat(e,t,n,r){U.q1.set(this.transformer.transform.quat),typeof e==`number`?U.q1.mul(e,t,n,r):U.q1.mul(e),this.setQuat(U.q1)}mulQuatNow(e,t,n,r){U.q1.set(this.transformer.transform.quat),typeof e==`number`?U.q1.mul(e,t,n,r):U.q1.mul(e),this.setQuatNow(U.q1)}mulRotation(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.getQuat(U.q0),U.q0.mul(U.q1),this.setQuat(U.q0)}mulRotationNow(t,n,r){typeof t==`number`?U.v0.set(t,n,r):U.v0.set(t),U.v0.scale(Math.PI/360);let i=this.rotationOrder?this.rotationOrder:e.defaultRotationOrder;m(U.v0,i,U.q1),this.getQuat(U.q0),U.q0.mul(U.q1),this.setQuatNow(U.q0)}scaleBy(e,t,n){this.getScale(U.v0),typeof e==`number`?U.v0.set(U.v0.x*e,U.v0.y*t,U.v0.z*n):U.v0.set(U.v0.x*e.x,U.v0.y*e.y,U.v0.z*e.z),this.setScale(U.v0)}mulScaleNow(e,t,n){this.getScale(U.v0),typeof e==`number`?U.v0.set(U.v0.x*e,U.v0.y*t,U.v0.z*n):U.v0.set(U.v0.x*e.x,U.v0.y*e.y,U.v0.z*e.z),this.setScaleNow(U.v0)}moveForward(e){this.getUnitVecZ(U.v0),U.v0.scale(e),this.translate(U.v0)}moveForwardNow(e){this.getUnitVecZ(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveBackward(e){this.getUnitVecZ(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveBackwardNow(e){this.getUnitVecZ(U.v0),U.v0.scale(-e),this.translateNow(U.v0)}moveRight(e){this.getUnitVecX(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveRightNow(e){this.getUnitVecX(U.v0),U.v0.scale(-e),this.translateNow(U.v0)}moveLeft(e){this.getUnitVecX(U.v0),U.v0.scale(e),this.translate(U.v0)}moveLeftNow(e){this.getUnitVecX(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveUp(e){this.getUnitVecY(U.v0),U.v0.scale(e),this.translate(U.v0)}moveUpNow(e){this.getUnitVecY(U.v0),U.v0.scale(e),this.translateNow(U.v0)}moveDown(e){this.getUnitVecY(U.v0),U.v0.scale(-e),this.translate(U.v0)}moveDownNow(e){this.getUnitVecY(U.v0),U.v0.scale(-e),this.translateNow(U.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`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setLinearVelocity(U.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.setAngularVelocity(U.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.addForce(U.v0)}addForceAtPoint(e,t,n,r,i,a){if(typeof e==`number`)if(typeof t==`number`)U.v0.set(e,t,n),U.v1.set(r,i,a);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 U.v0.set(e),U.v1.set(t);this.transformer.addForceAtPoint(U.v0,U.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.addTorque(U.v0)}applyImpulse(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.applyImpulse(U.v0)}applyImpulseAtPoint(e,t,n,r,i,a){if(typeof e==`number`)if(typeof t==`number`)U.v0.set(e,t,n),U.v1.set(r,i,a);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 U.v0.set(e),U.v1.set(t);this.transformer.applyImpulseAtPoint(U.v0,U.v1)}applyTorqueImpulse(e,t,n){typeof e==`number`?U.v0.set(e,t,n):U.v0.set(e),this.transformer.applyTorqueImpulse(U.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}},Ae=class{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}}},je=class{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)}},Me=class extends W{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;autoAction=!1;haltActionName=`default`;walkActionName=`walk`;runActionName=`run`;minWalkSpeed=.1;minRunSpeed=1;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e),this.autoAction=!1}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){let t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){let 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){let 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){let{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(let[e,n]of Object.entries(t)){let t=this.currentAction.shape.bones[e];if(t&&(n.loc&&t.position.set(n.loc.x,n.loc.y,n.loc.z),n.quat&&t.quaternion.set(n.quat.x,n.quat.y,n.quat.z,n.quat.w),n.scale&&t.scale.set(n.scale.x,n.scale.y,n.scale.z)),!this.overwriteMorphs&&n.morphs){for(let e of n.morphs)for(let t of Object.keys(this.morphs))if(t.startsWith(e.name)){let{array:n}=this.morphs[t];for(let t=0;t<n.length;t++)n[t]=e.vals[t];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update();let n=this.getLinearVelocity().length();this.autoAction&&(n<this.minWalkSpeed?this.actions[this.haltActionName]!==this.stateAction&&this.setState(this.haltActionName):n<this.minRunSpeed?this.actions[this.walkActionName]!==this.stateAction&&this.setState(this.walkActionName):this.actions[this.runActionName]!==this.stateAction&&this.setState(this.runActionName))}setAutoAction(e){this.autoAction=e}setAutoDirection(e){this.autoDirection=e}},Ne=class{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{}}},G=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Pe=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,e.VERSION=`9.0.1`}),K=G((e,t)=>{"use strict";var n=e&&e.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(e,"__esModule",{value:!0}),e.toFastProperties=e.timer=e.peek=e.isES2015MapSupported=e.PRINT_WARNING=e.PRINT_ERROR=e.packArray=e.IDENTITY=e.NOOP=e.merge=e.groupBy=e.defaults=e.assignNoOverwrite=e.assign=e.zipObject=e.sortBy=e.indexOf=e.some=e.difference=e.every=e.isObject=e.isRegExp=e.isArray=e.partial=e.uniq=e.compact=e.reduce=e.findAll=e.find=e.cloneObj=e.cloneArr=e.contains=e.has=e.pick=e.reject=e.filter=e.dropRight=e.drop=e.isFunction=e.isUndefined=e.isString=e.forEach=e.last=e.first=e.flatten=e.map=e.mapValues=e.values=e.keys=e.isEmpty=void 0;function r(e){return e&&e.length===0}e.isEmpty=r;function i(e){return e==null?[]:Object.keys(e)}e.keys=i;function a(e){for(var t=[],n=Object.keys(e),r=0;r<n.length;r++)t.push(e[n[r]]);return t}e.values=a;function o(e,t){for(var n=[],r=i(e),a=0;a<r.length;a++){var o=r[a];n.push(t.call(null,e[o],o))}return n}e.mapValues=o;function s(e,t){for(var n=[],r=0;r<e.length;r++)n.push(t.call(null,e[r],r));return n}e.map=s;function c(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Array.isArray(r)?t=t.concat(c(r)):t.push(r)}return t}e.flatten=c;function l(e){return r(e)?void 0:e[0]}e.first=l;function u(e){var t=e&&e.length;return t?e[t-1]:void 0}e.last=u;function d(e,t){if(Array.isArray(e))for(var n=0;n<e.length;n++)t.call(null,e[n],n);else if(M(e))for(var r=i(e),n=0;n<r.length;n++){var a=r[n],o=e[a];t.call(null,o,a)}else throw Error(`non exhaustive match`)}e.forEach=d;function f(e){return typeof e==`string`}e.isString=f;function p(e){return e===void 0}e.isUndefined=p;function m(e){return e instanceof Function}e.isFunction=m;function h(e,t){return t===void 0&&(t=1),e.slice(t,e.length)}e.drop=h;function g(e,t){return t===void 0&&(t=1),e.slice(0,e.length-t)}e.dropRight=g;function _(e,t){var n=[];if(Array.isArray(e))for(var r=0;r<e.length;r++){var i=e[r];t.call(null,i)&&n.push(i)}return n}e.filter=_;function v(e,t){return _(e,function(e){return!t(e)})}e.reject=v;function y(e,t){for(var n=Object.keys(e),r={},i=0;i<n.length;i++){var a=n[i],o=e[a];t(o)&&(r[a]=o)}return r}e.pick=y;function b(e,t){return M(e)?e.hasOwnProperty(t):!1}e.has=b;function x(e,t){return w(e,function(e){return e===t})!==void 0}e.contains=x;function S(e){for(var t=[],n=0;n<e.length;n++)t.push(e[n]);return t}e.cloneArr=S;function C(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}e.cloneObj=C;function w(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(t.call(null,r))return r}}e.find=w;function T(e,t){for(var n=[],r=0;r<e.length;r++){var i=e[r];t.call(null,i)&&n.push(i)}return n}e.findAll=T;function E(e,t,n){for(var r=Array.isArray(e),o=r?e:a(e),s=r?[]:i(e),c=n,l=0;l<o.length;l++)c=t.call(null,c,o[l],r?l:s[l]);return c}e.reduce=E;function D(e){return v(e,function(e){return e==null})}e.compact=D;function O(e,t){t===void 0&&(t=function(e){return e});var n=[];return E(e,function(e,r){var i=t(r);return x(n,i)?e:(n.push(i),e.concat(r))},[])}e.uniq=O;function k(e){var t=[...arguments].slice(1),n=[null].concat(t);return Function.bind.apply(e,n)}e.partial=k;function A(e){return Array.isArray(e)}e.isArray=A;function j(e){return e instanceof RegExp}e.isRegExp=j;function M(e){return e instanceof Object}e.isObject=M;function N(e,t){for(var n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}e.every=N;function ee(e,t){return v(e,function(e){return x(t,e)})}e.difference=ee;function te(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return!0;return!1}e.some=te;function ne(e,t){for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1}e.indexOf=ne;function re(e,t){var n=S(e);return n.sort(function(e,n){return t(e)-t(n)}),n}e.sortBy=re;function ie(e,t){if(e.length!==t.length)throw Error(`can't zipObject with different number of keys and values!`);for(var n={},r=0;r<e.length;r++)n[e[r]]=t[r];return n}e.zipObject=ie;function ae(e){for(var t=[...arguments].slice(1),n=0;n<t.length;n++)for(var r=t[n],a=i(r),o=0;o<a.length;o++){var s=a[o];e[s]=r[s]}return e}e.assign=ae;function oe(e){for(var t=[...arguments].slice(1),n=0;n<t.length;n++)for(var r=t[n],a=i(r),o=0;o<a.length;o++){var s=a[o];b(e,s)||(e[s]=r[s])}return e}e.assignNoOverwrite=oe;function P(){var e=[...arguments];return oe.apply(void 0,n([{}],e))}e.defaults=P;function se(e,t){var n={};return d(e,function(e){var r=t(e),i=n[r];i?i.push(e):n[r]=[e]}),n}e.groupBy=se;function ce(e,t){for(var n=C(e),r=i(t),a=0;a<r.length;a++){var o=r[a];n[o]=t[o]}return n}e.merge=ce;function F(){}e.NOOP=F;function I(e){return e}e.IDENTITY=I;function L(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];t.push(r===void 0?void 0:r)}return t}e.packArray=L;function R(e){console&&console.error&&console.error(`Error: `+e)}e.PRINT_ERROR=R;function le(e){console&&console.warn&&console.warn(`Warning: `+e)}e.PRINT_WARNING=le;function z(){return typeof Map==`function`}e.isES2015MapSupported=z;function B(e){return e[e.length-1]}e.peek=B;function ue(e){var t=new Date().getTime(),n=e();return{time:new Date().getTime()-t,value:n}}e.timer=ue;function de(e){function t(){}t.prototype=e;var n=new t;function r(){return typeof n.bar}return r(),r(),e}e.toFastProperties=de}),Fe=G((e,t)=>{(function(e,n){typeof define==`function`&&define.amd?define([],n):typeof t==`object`&&t.exports?t.exports=n():e.regexpToAst=n()})(typeof self<`u`?self:e,function(){function e(){}e.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},e.prototype.restoreState=function(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx},e.prototype.pattern=function(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar(`/`);var t=this.disjunction();this.consumeChar(`/`);for(var n={type:`Flags`,loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case`g`:o(n,`global`);break;case`i`:o(n,`ignoreCase`);break;case`m`:o(n,`multiLine`);break;case`u`:o(n,`unicode`);break;case`y`:o(n,`sticky`);break}if(this.idx!==this.input.length)throw Error(`Redundant input: `+this.input.substring(this.idx));return{type:`Pattern`,flags:n,value:t,loc:this.loc(0)}},e.prototype.disjunction=function(){var e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()===`|`;)this.consumeChar(`|`),e.push(this.alternative());return{type:`Disjunction`,value:e,loc:this.loc(t)}},e.prototype.alternative=function(){for(var e=[],t=this.idx;this.isTerm();)e.push(this.term());return{type:`Alternative`,value:e,loc:this.loc(t)}},e.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},e.prototype.assertion=function(){var e=this.idx;switch(this.popChar()){case`^`:return{type:`StartAnchor`,loc:this.loc(e)};case`$`:return{type:`EndAnchor`,loc:this.loc(e)};case`\\`:switch(this.popChar()){case`b`:return{type:`WordBoundary`,loc:this.loc(e)};case`B`:return{type:`NonWordBoundary`,loc:this.loc(e)}}throw Error(`Invalid Assertion Escape`);case`(`:this.consumeChar(`?`);var t;switch(this.popChar()){case`=`:t=`Lookahead`;break;case`!`:t=`NegativeLookahead`;break}s(t);var n=this.disjunction();return this.consumeChar(`)`),{type:t,value:n,loc:this.loc(e)}}c()},e.prototype.quantifier=function(e){var t,n=this.idx;switch(this.popChar()){case`*`:t={atLeast:0,atMost:1/0};break;case`+`:t={atLeast:1,atMost:1/0};break;case`?`:t={atLeast:0,atMost:1};break;case`{`:var r=this.integerIncludingZero();switch(this.popChar()){case`}`:t={atLeast:r,atMost:r};break;case`,`:var i;this.isDigit()?(i=this.integerIncludingZero(),t={atLeast:r,atMost:i}):t={atLeast:r,atMost:1/0},this.consumeChar(`}`);break}if(e===!0&&t===void 0)return;s(t);break}if(!(e===!0&&t===void 0))return s(t),this.peekChar(0)===`?`?(this.consumeChar(`?`),t.greedy=!1):t.greedy=!0,t.type=`Quantifier`,t.loc=this.loc(n),t},e.prototype.atom=function(){var e,t=this.idx;switch(this.peekChar()){case`.`:e=this.dotAll();break;case`\\`:e=this.atomEscape();break;case`[`:e=this.characterClass();break;case`(`:e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),s(e),e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e},e.prototype.dotAll=function(){return this.consumeChar(`.`),{type:`Set`,complement:!0,value:[i(`
|
|
2
2
|
`),i(`\r`),i(`\u2028`),i(`\u2029`)]}},e.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()}},e.prototype.decimalEscapeAtom=function(){return{type:`GroupBackReference`,value:this.positiveInteger()}},e.prototype.characterClassEscape=function(){var e,t=!1;switch(this.popChar()){case`d`:e=u;break;case`D`:e=u,t=!0;break;case`s`:e=f;break;case`S`:e=f,t=!0;break;case`w`:e=d;break;case`W`:e=d,t=!0;break}return s(e),{type:`Set`,value:e,complement:t}},e.prototype.controlEscapeAtom=function(){var e;switch(this.popChar()){case`f`:e=i(`\f`);break;case`n`:e=i(`
|
|
3
3
|
`);break;case`r`:e=i(`\r`);break;case`t`:e=i(` `);break;case`v`:e=i(`\v`);break}return s(e),{type:`Character`,value:e}},e.prototype.controlLetterEscapeAtom=function(){this.consumeChar(`c`);var e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error(`Invalid `);return{type:`Character`,value:e.toUpperCase().charCodeAt(0)-64}},e.prototype.nulCharacterAtom=function(){return this.consumeChar(`0`),{type:`Character`,value:i(`\0`)}},e.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar(`x`),this.parseHexDigits(2)},e.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar(`u`),this.parseHexDigits(4)},e.prototype.identityEscapeAtom=function(){return{type:`Character`,value:i(this.popChar())}},e.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`
|
|
4
4
|
`:case`\r`:case`\u2028`:case`\u2029`:case`\\`:case`]`:throw Error(`TBD`);default:return{type:`Character`,value:i(this.popChar())}}},e.prototype.characterClass=function(){var e=[],t=!1;for(this.consumeChar(`[`),this.peekChar(0)===`^`&&(this.consumeChar(`^`),t=!0);this.isClassAtom();){var n=this.classAtom();if(n.type===`Character`&&this.isRangeDash()){this.consumeChar(`-`);var r=this.classAtom();if(r.type===`Character`){if(r.value<n.value)throw Error(`Range out of order in character class`);e.push({from:n.value,to:r.value})}else a(n.value,e),e.push(i(`-`)),a(r.value,e)}else a(n.value,e)}return this.consumeChar(`]`),{type:`Set`,complement:t,value:e}},e.prototype.classAtom=function(){switch(this.peekChar()){case`]`:case`
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
16
16
|
`+(` Failed parsing: < `+t.toString()+` >
|
|
17
17
|
`)+(` Using the regexp-to-ast library version: `+n.VERSION+`
|
|
18
18
|
`)+` Please open an issue at: https://github.com/bd82/regexp-to-ast/issues`+l)}}return[]}e.getOptimizedStartCodesIndices=s;function c(e,t,n){switch(e.type){case`Disjunction`:for(var i=0;i<e.value.length;i++)c(e.value[i],t,n);break;case`Alternative`:for(var s=e.value,i=0;i<s.length;i++){var u=s[i];switch(u.type){case`EndAnchor`:case`GroupBackReference`:case`Lookahead`:case`NegativeLookahead`:case`StartAnchor`:case`WordBoundary`:case`NonWordBoundary`:continue}var d=u;switch(d.type){case`Character`:l(d.value,t,n);break;case`Set`:if(d.complement===!0)throw Error(o);r.forEach(d.value,function(e){if(typeof e==`number`)l(e,t,n);else{var r=e;if(n===!0)for(var i=r.from;i<=r.to;i++)l(i,t,n);else{for(var i=r.from;i<=r.to&&i<a.minOptimizationVal;i++)l(i,t,n);if(r.to>=a.minOptimizationVal)for(var o=r.from>=a.minOptimizationVal?r.from:a.minOptimizationVal,s=r.to,c=a.charCodeToOptimizedIndex(o),u=a.charCodeToOptimizedIndex(s),d=c;d<=u;d++)t[d]=d}}});break;case`Group`:c(d.value,t,n);break;default:throw Error(`Non Exhaustive Match`)}var p=d.quantifier!==void 0&&d.quantifier.atLeast===0;if(d.type===`Group`&&f(d)===!1||d.type!==`Group`&&p===!1)break}break;default:throw Error(`non exhaustive match!`)}return r.values(t)}e.firstCharOptimizedIndices=c;function l(e,t,n){var r=a.charCodeToOptimizedIndex(e);t[r]=r,n===!0&&u(e,t)}function u(e,t){var n=String.fromCharCode(e),r=n.toUpperCase();if(r!==n){var i=a.charCodeToOptimizedIndex(r.charCodeAt(0));t[i]=i}else{var o=n.toLowerCase();if(o!==n){var i=a.charCodeToOptimizedIndex(o.charCodeAt(0));t[i]=i}}}function d(e,t){return r.find(e.value,function(e){if(typeof e==`number`)return r.contains(t,e);var n=e;return r.find(t,function(e){return n.from<=e&&e<=n.to})!==void 0})}function f(e){return e.quantifier&&e.quantifier.atLeast===0?!0:e.value?r.isArray(e.value)?r.every(e.value,f):f(e.value):!1}var p=function(e){t(n,e);function n(t){var n=e.call(this)||this;return n.targetCharCodes=t,n.found=!1,n}return n.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case`Lookahead`:this.visitLookahead(t);return;case`NegativeLookahead`:this.visitNegativeLookahead(t);return}e.prototype.visitChildren.call(this,t)}},n.prototype.visitCharacter=function(e){r.contains(this.targetCharCodes,e.value)&&(this.found=!0)},n.prototype.visitSet=function(e){e.complement?d(e,this.targetCharCodes)===void 0&&(this.found=!0):d(e,this.targetCharCodes)!==void 0&&(this.found=!0)},n}(n.BaseRegExpVisitor);function m(e,t){if(t instanceof RegExp){var n=i.getRegExpAst(t),a=new p(e);return a.visit(n),a.found}else return r.find(t,function(t){return r.contains(e,t.charCodeAt(0))})!==void 0}e.canMatchCharCode=m}),Re=G(e=>{"use strict";var t=e&&e.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0}),e.charCodeToOptimizedIndex=e.minOptimizationVal=e.buildLineBreakIssueMessage=e.LineTerminatorOptimizedTester=e.isShortPattern=e.isCustomPattern=e.cloneEmptyGroups=e.performWarningRuntimeChecks=e.performRuntimeChecks=e.addStickyFlag=e.addStartOfInput=e.findUnreachablePatterns=e.findModesThatDoNotExist=e.findInvalidGroupType=e.findDuplicatePatterns=e.findUnsupportedFlags=e.findStartOfInputAnchor=e.findEmptyMatchRegExps=e.findEndOfInputAnchor=e.findInvalidPatterns=e.findMissingPatterns=e.validatePatterns=e.analyzeTokenTypes=e.enableSticky=e.disableSticky=e.SUPPORT_STICKY=e.MODES=e.DEFAULT_MODE=void 0;var n=Fe(),r=Ve(),i=K(),a=Le(),o=Ie(),s=`PATTERN`;e.DEFAULT_MODE=`defaultMode`,e.MODES=`modes`,e.SUPPORT_STICKY=typeof RegExp(`(?:)`).sticky==`boolean`;function c(){e.SUPPORT_STICKY=!1}e.disableSticky=c;function l(){e.SUPPORT_STICKY=!0}e.enableSticky=l;function u(t,n){n=i.defaults(n,{useSticky:e.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:`full`,lineTerminatorCharacters:[`\r`,`
|
|
19
|
-
`],tracer:function(e,t){return t()}});var o=n.tracer;o(`initCharCodeToOptimizedIndexMap`,function(){
|
|
19
|
+
`],tracer:function(e,t){return t()}});var o=n.tracer;o(`initCharCodeToOptimizedIndexMap`,function(){oe()});var c;o(`Reject Lexer.NA`,function(){c=i.reject(t,function(e){return e[s]===r.Lexer.NA})});var l=!1,u;o(`Transform Patterns`,function(){l=!1,u=i.map(c,function(e){var t=e[s];if(i.isRegExp(t)){var r=t.source;return r.length===1&&r!==`^`&&r!==`$`&&r!==`.`&&!t.ignoreCase?r:r.length===2&&r[0]===`\\`&&!i.contains([`d`,`D`,`s`,`S`,`t`,`r`,`n`,`t`,`0`,`c`,`b`,`B`,`f`,`v`,`w`,`W`],r[1])?r[1]:n.useSticky?O(t):D(t)}else{if(i.isFunction(t))return l=!0,{exec:t};if(i.has(t,`exec`))return l=!0,t;if(typeof t==`string`){if(t.length===1)return t;var a=t.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),o=new RegExp(a);return n.useSticky?O(o):D(o)}else throw Error(`non exhaustive match`)}})});var d,f,p,m,h;o(`misc mapping`,function(){d=i.map(c,function(e){return e.tokenTypeIdx}),f=i.map(c,function(e){var t=e.GROUP;if(t!==r.Lexer.SKIPPED){if(i.isString(t))return t;if(i.isUndefined(t))return!1;throw Error(`non exhaustive match`)}}),p=i.map(c,function(e){var t=e.LONGER_ALT;if(t)return i.indexOf(c,t)}),m=i.map(c,function(e){return e.PUSH_MODE}),h=i.map(c,function(e){return i.has(e,`POP_MODE`)})});var g;o(`Line Terminator Handling`,function(){var e=ne(n.lineTerminatorCharacters);g=i.map(c,function(e){return!1}),n.positionTracking!==`onlyOffset`&&(g=i.map(c,function(t){if(i.has(t,`LINE_BREAKS`))return t.LINE_BREAKS;if(ee(t,e)===!1)return a.canMatchCharCode(e,t.PATTERN)}))});var _,v,y,b;o(`Misc Mapping #2`,function(){_=i.map(c,M),v=i.map(u,N),y=i.reduce(c,function(e,t){var n=t.GROUP;return i.isString(n)&&n!==r.Lexer.SKIPPED&&(e[n]=[]),e},{}),b=i.map(u,function(e,t){return{pattern:u[t],longerAlt:p[t],canLineTerminator:g[t],isCustom:_[t],short:v[t],group:f[t],push:m[t],pop:h[t],tokenTypeIdx:d[t],tokenType:c[t]}})});var x=!0,S=[];return n.safeMode||o(`First Char Optimization`,function(){S=i.reduce(c,function(e,t,r){if(typeof t.PATTERN==`string`)re(e,ae(t.PATTERN.charCodeAt(0)),b[r]);else if(i.isArray(t.START_CHARS_HINT)){var o;i.forEach(t.START_CHARS_HINT,function(t){var n=ae(typeof t==`string`?t.charCodeAt(0):t);o!==n&&(o=n,re(e,n,b[r]))})}else if(i.isRegExp(t.PATTERN))if(t.PATTERN.unicode)x=!1,n.ensureOptimizations&&i.PRINT_ERROR(``+a.failedOptimizationPrefixMsg+(` Unable to analyze < `+t.PATTERN.toString()+` > pattern.
|
|
20
20
|
`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library.
|
|
21
21
|
This will disable the lexer's first char optimizations.
|
|
22
22
|
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var s=a.getOptimizedStartCodesIndices(t.PATTERN,n.ensureOptimizations);i.isEmpty(s)&&(x=!1),i.forEach(s,function(t){re(e,t,b[r])})}else n.ensureOptimizations&&i.PRINT_ERROR(``+a.failedOptimizationPrefixMsg+(` TokenType: <`+t.name+`> is using a custom token pattern without providing <start_chars_hint> parameter.
|
|
@@ -40,7 +40,7 @@ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.
|
|
|
40
40
|
`)+(` Root cause: `+t.errMsg+`.
|
|
41
41
|
`)+` For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===r.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.
|
|
42
42
|
`+(` The problem is in the <`+e.name+`> Token Type
|
|
43
|
-
`)+` For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error(`non exhaustive match`)}e.buildLineBreakIssueMessage=te;function ne(e){return i.map(e,function(e){return i.isString(e)&&e.length>0?e.charCodeAt(0):e})}function re(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}e.minOptimizationVal=256;var ie=[];function
|
|
43
|
+
`)+` For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error(`non exhaustive match`)}e.buildLineBreakIssueMessage=te;function ne(e){return i.map(e,function(e){return i.isString(e)&&e.length>0?e.charCodeAt(0):e})}function re(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}e.minOptimizationVal=256;var ie=[];function ae(t){return t<e.minOptimizationVal?t:ie[t]}e.charCodeToOptimizedIndex=ae;function oe(){if(i.isEmpty(ie)){ie=Array(65536);for(var e=0;e<65536;e++)ie[e]=e>255?255+~~(e/255):e}}}),ze=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isTokenType=e.hasExtendingTokensTypesMapProperty=e.hasExtendingTokensTypesProperty=e.hasCategoriesProperty=e.hasShortKeyProperty=e.singleAssignCategoriesToksMap=e.assignCategoriesMapProp=e.assignCategoriesTokensProp=e.assignTokenDefaultProps=e.expandCategories=e.augmentTokenTypes=e.tokenIdxToClass=e.tokenShortNameIdx=e.tokenStructuredMatcherNoCategories=e.tokenStructuredMatcher=void 0;var t=K();function n(e,t){var n=e.tokenTypeIdx;return n===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[n]===!0}e.tokenStructuredMatcher=n;function r(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}e.tokenStructuredMatcherNoCategories=r,e.tokenShortNameIdx=1,e.tokenIdxToClass={};function i(e){var n=a(e);o(n),c(n),s(n),t.forEach(n,function(e){e.isParent=e.categoryMatches.length>0})}e.augmentTokenTypes=i;function a(e){for(var n=t.cloneArr(e),r=e,i=!0;i;){r=t.compact(t.flatten(t.map(r,function(e){return e.CATEGORIES})));var a=t.difference(r,n);n=n.concat(a),t.isEmpty(a)?i=!1:r=a}return n}e.expandCategories=a;function o(n){t.forEach(n,function(n){u(n)||(e.tokenIdxToClass[e.tokenShortNameIdx]=n,n.tokenTypeIdx=e.tokenShortNameIdx++),d(n)&&!t.isArray(n.CATEGORIES)&&(n.CATEGORIES=[n.CATEGORIES]),d(n)||(n.CATEGORIES=[]),f(n)||(n.categoryMatches=[]),p(n)||(n.categoryMatchesMap={})})}e.assignTokenDefaultProps=o;function s(n){t.forEach(n,function(n){n.categoryMatches=[],t.forEach(n.categoryMatchesMap,function(t,r){n.categoryMatches.push(e.tokenIdxToClass[r].tokenTypeIdx)})})}e.assignCategoriesTokensProp=s;function c(e){t.forEach(e,function(e){l([],e)})}e.assignCategoriesMapProp=c;function l(e,n){t.forEach(e,function(e){n.categoryMatchesMap[e.tokenTypeIdx]=!0}),t.forEach(n.CATEGORIES,function(r){var i=e.concat(n);t.contains(i,r)||l(i,r)})}e.singleAssignCategoriesToksMap=l;function u(e){return t.has(e,`tokenTypeIdx`)}e.hasShortKeyProperty=u;function d(e){return t.has(e,`CATEGORIES`)}e.hasCategoriesProperty=d;function f(e){return t.has(e,`categoryMatches`)}e.hasExtendingTokensTypesProperty=f;function p(e){return t.has(e,`categoryMatchesMap`)}e.hasExtendingTokensTypesMapProperty=p;function m(e){return t.has(e,`tokenTypeIdx`)}e.isTokenType=m}),Be=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.defaultLexerErrorProvider=void 0,e.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(e){return`Unable to pop Lexer Mode after encountering Token ->`+e.image+`<- The Mode Stack is empty`},buildUnexpectedCharactersMessage:function(e,t,n,r,i){return`unexpected character: ->`+e.charAt(t)+`<- at offset: `+t+`,`+(` skipped `+n+` characters.`)}}}),Ve=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Lexer=e.LexerDefinitionErrorType=void 0;var t=Re(),n=K(),r=ze(),i=Be(),a=Ie();(function(e){e[e.MISSING_PATTERN=0]=`MISSING_PATTERN`,e[e.INVALID_PATTERN=1]=`INVALID_PATTERN`,e[e.EOI_ANCHOR_FOUND=2]=`EOI_ANCHOR_FOUND`,e[e.UNSUPPORTED_FLAGS_FOUND=3]=`UNSUPPORTED_FLAGS_FOUND`,e[e.DUPLICATE_PATTERNS_FOUND=4]=`DUPLICATE_PATTERNS_FOUND`,e[e.INVALID_GROUP_TYPE_FOUND=5]=`INVALID_GROUP_TYPE_FOUND`,e[e.PUSH_MODE_DOES_NOT_EXIST=6]=`PUSH_MODE_DOES_NOT_EXIST`,e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]=`MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE`,e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]=`MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY`,e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]=`MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST`,e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]=`LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED`,e[e.SOI_ANCHOR_FOUND=11]=`SOI_ANCHOR_FOUND`,e[e.EMPTY_MATCH_PATTERN=12]=`EMPTY_MATCH_PATTERN`,e[e.NO_LINE_BREAKS_FLAGS=13]=`NO_LINE_BREAKS_FLAGS`,e[e.UNREACHABLE_PATTERN=14]=`UNREACHABLE_PATTERN`,e[e.IDENTIFY_TERMINATOR=15]=`IDENTIFY_TERMINATOR`,e[e.CUSTOM_LINE_BREAK=16]=`CUSTOM_LINE_BREAK`})(e.LexerDefinitionErrorType||={});var o={deferDefinitionErrorsHandling:!1,positionTracking:`full`,lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
|
|
44
44
|
`,`\r`],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:i.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(o),e.Lexer=function(){function e(e,i){var s=this;if(i===void 0&&(i=o),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof i==`boolean`)throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
|
|
45
45
|
a boolean 2nd argument is no longer supported`);this.config=n.merge(o,i);var c=this.config.traceInitPerf;c===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof c==`number`&&(this.traceInitMaxIdent=c,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT(`Lexer Constructor`,function(){var c,l=!0;s.TRACE_INIT(`Lexer Config handling`,function(){if(s.config.lineTerminatorsPattern===o.lineTerminatorsPattern)s.config.lineTerminatorsPattern=t.LineTerminatorOptimizedTester;else if(s.config.lineTerminatorCharacters===o.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
|
|
46
46
|
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(i.safeMode&&i.ensureOptimizations)throw Error(`"safeMode" and "ensureOptimizations" flags are mutually exclusive.`);s.trackStartLines=/full|onlyStart/i.test(s.config.positionTracking),s.trackEndLines=/full/i.test(s.config.positionTracking),n.isArray(e)?(c={modes:{}},c.modes[t.DEFAULT_MODE]=n.cloneArr(e),c[t.DEFAULT_MODE]=t.DEFAULT_MODE):(l=!1,c=n.cloneObj(e))}),s.config.skipValidations===!1&&(s.TRACE_INIT(`performRuntimeChecks`,function(){s.lexerDefinitionErrors=s.lexerDefinitionErrors.concat(t.performRuntimeChecks(c,s.trackStartLines,s.config.lineTerminatorCharacters))}),s.TRACE_INIT(`performWarningRuntimeChecks`,function(){s.lexerDefinitionWarning=s.lexerDefinitionWarning.concat(t.performWarningRuntimeChecks(c,s.trackStartLines,s.config.lineTerminatorCharacters))})),c.modes=c.modes?c.modes:{},n.forEach(c.modes,function(e,t){c.modes[t]=n.reject(e,function(e){return n.isUndefined(e)})});var u=n.keys(c.modes);if(n.forEach(c.modes,function(e,a){s.TRACE_INIT(`Mode: <`+a+`> processing`,function(){if(s.modes.push(a),s.config.skipValidations===!1&&s.TRACE_INIT(`validatePatterns`,function(){s.lexerDefinitionErrors=s.lexerDefinitionErrors.concat(t.validatePatterns(e,u))}),n.isEmpty(s.lexerDefinitionErrors)){r.augmentTokenTypes(e);var o;s.TRACE_INIT(`analyzeTokenTypes`,function(){o=t.analyzeTokenTypes(e,{lineTerminatorCharacters:s.config.lineTerminatorCharacters,positionTracking:i.positionTracking,ensureOptimizations:i.ensureOptimizations,safeMode:i.safeMode,tracer:s.TRACE_INIT.bind(s)})}),s.patternIdxToConfig[a]=o.patternIdxToConfig,s.charCodeToPatternIdxToConfig[a]=o.charCodeToPatternIdxToConfig,s.emptyGroups=n.merge(s.emptyGroups,o.emptyGroups),s.hasCustom=o.hasCustom||s.hasCustom,s.canModeBeOptimized[a]=o.canBeOptimized}})}),s.defaultMode=c.defaultMode,!n.isEmpty(s.lexerDefinitionErrors)&&!s.config.deferDefinitionErrorsHandling){var d=n.map(s.lexerDefinitionErrors,function(e){return e.message}).join(`-----------------------
|
|
@@ -49,7 +49,7 @@ a boolean 2nd argument is no longer supported`);this.config=n.merge(o,i);var c=t
|
|
|
49
49
|
Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
|
|
50
50
|
Or inspect the console log for details on how to resolve these issues.`)}),s.TRACE_INIT(`clearRegExpParserCache`,function(){a.clearRegExpParserCache()}),s.TRACE_INIT(`toFastProperties`,function(){n.toFastProperties(s)})})}return e.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!n.isEmpty(this.lexerDefinitionErrors)){var r=n.map(this.lexerDefinitionErrors,function(e){return e.message}).join(`-----------------------
|
|
51
51
|
`);throw Error(`Unable to Tokenize because Errors detected in definition of Lexer:
|
|
52
|
-
`+r)}return this.tokenizeInternal(e,t)},e.prototype.tokenizeInternal=function(e,r){var i=this,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y=e,b=y.length,x=0,S=0,C=this.hasCustom?0:Math.floor(e.length/10),w=Array(C),T=[],E=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,O=t.cloneEmptyGroups(this.emptyGroups),k=this.trackStartLines,A=this.config.lineTerminatorsPattern,j=0,M=[],N=[],ee=[],te=[];Object.freeze(te);var ne=void 0;function re(){return M}function ie(e){var n=t.charCodeToOptimizedIndex(e),r=N[n];return r===void 0?te:r}var
|
|
52
|
+
`+r)}return this.tokenizeInternal(e,t)},e.prototype.tokenizeInternal=function(e,r){var i=this,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y=e,b=y.length,x=0,S=0,C=this.hasCustom?0:Math.floor(e.length/10),w=Array(C),T=[],E=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,O=t.cloneEmptyGroups(this.emptyGroups),k=this.trackStartLines,A=this.config.lineTerminatorsPattern,j=0,M=[],N=[],ee=[],te=[];Object.freeze(te);var ne=void 0;function re(){return M}function ie(e){var n=t.charCodeToOptimizedIndex(e),r=N[n];return r===void 0?te:r}var ae=function(e){if(ee.length===1&&e.tokenType.PUSH_MODE===void 0){var t=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);T.push({offset:e.startOffset,line:e.startLine===void 0?void 0:e.startLine,column:e.startColumn===void 0?void 0:e.startColumn,length:e.image.length,message:t})}else{ee.pop();var r=n.last(ee);M=i.patternIdxToConfig[r],N=i.charCodeToPatternIdxToConfig[r],j=M.length;var a=i.canModeBeOptimized[r]&&i.config.safeMode===!1;ne=N&&a?ie:re}};function oe(e){ee.push(e),N=this.charCodeToPatternIdxToConfig[e],M=this.patternIdxToConfig[e],j=M.length,j=M.length;var t=this.canModeBeOptimized[e]&&this.config.safeMode===!1;ne=N&&t?ie:re}oe.call(this,r);for(var P;x<b;){l=null;var se=y.charCodeAt(x),ce=ne(se),F=ce.length;for(a=0;a<F;a++){P=ce[a];var I=P.pattern;u=null;var L=P.short;if(L===!1?P.isCustom===!0?(v=I.exec(y,x,w,O),v===null?l=null:(l=v[0],v.payload!==void 0&&(u=v.payload))):(this.updateLastIndex(I,x),l=this.match(I,e,x)):se===L&&(l=I),l!==null){if(c=P.longerAlt,c!==void 0){var R=M[c],le=R.pattern;d=null,R.isCustom===!0?(v=le.exec(y,x,w,O),v===null?s=null:(s=v[0],v.payload!==void 0&&(d=v.payload))):(this.updateLastIndex(le,x),s=this.match(le,e,x)),s&&s.length>l.length&&(l=s,u=d,P=R)}break}}if(l!==null){if(f=l.length,p=P.group,p!==void 0&&(m=P.tokenTypeIdx,h=this.createTokenInstance(l,x,m,P.tokenType,E,D,f),this.handlePayload(h,u),p===!1?S=this.addToken(w,S,h):O[p].push(h)),e=this.chopInput(e,f),x+=f,D=this.computeNewColumn(D,f),k===!0&&P.canLineTerminator===!0){var z=0,B=void 0,ue=void 0;A.lastIndex=0;do B=A.test(l),B===!0&&(ue=A.lastIndex-1,z++);while(B===!0);z!==0&&(E+=z,D=f-ue,this.updateTokenEndLineColumnLocation(h,p,ue,z,E,D,f))}this.handleModes(P,ae,oe,h)}else{for(var de=x,V=E,fe=D,H=!1;!H&&x<b;)for(y.charCodeAt(x),e=this.chopInput(e,1),x++,o=0;o<j;o++){var pe=M[o],I=pe.pattern,L=pe.short;if(L===!1?pe.isCustom===!0?H=I.exec(y,x,w,O)!==null:(this.updateLastIndex(I,x),H=I.exec(e)!==null):y.charCodeAt(x)===L&&(H=!0),H===!0)break}g=x-de,_=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y,de,g,V,fe),T.push({offset:de,line:V,column:fe,length:g,message:_})}}return this.hasCustom||(w.length=S),{tokens:w,groups:O,errors:T}},e.prototype.handleModes=function(e,t,n,r){if(e.pop===!0){var i=e.push;t(r),i!==void 0&&n.call(this,i)}else e.push!==void 0&&n.call(this,e.push)},e.prototype.chopInput=function(e,t){return e.substring(t)},e.prototype.updateLastIndex=function(e,t){e.lastIndex=t},e.prototype.updateTokenEndLineColumnLocation=function(e,t,n,r,i,a,o){var s,c;t!==void 0&&(s=n===o-1,c=s?-1:0,r===1&&s===!0||(e.endLine=i+c,e.endColumn=a-1+-c))},e.prototype.computeNewColumn=function(e,t){return e+t},e.prototype.createTokenInstance=function(){return null},e.prototype.createOffsetOnlyToken=function(e,t,n,r){return{image:e,startOffset:t,tokenTypeIdx:n,tokenType:r}},e.prototype.createStartOnlyToken=function(e,t,n,r,i,a){return{image:e,startOffset:t,startLine:i,startColumn:a,tokenTypeIdx:n,tokenType:r}},e.prototype.createFullToken=function(e,t,n,r,i,a,o){return{image:e,startOffset:t,endOffset:t+o-1,startLine:i,endLine:i,startColumn:a,endColumn:a+o-1,tokenTypeIdx:n,tokenType:r}},e.prototype.addToken=function(e,t,n){return 666},e.prototype.addTokenUsingPush=function(e,t,n){return e.push(n),t},e.prototype.addTokenUsingMemberAccess=function(e,t,n){return e[t]=n,t++,t},e.prototype.handlePayload=function(e,t){},e.prototype.handlePayloadNoCustom=function(e,t){},e.prototype.handlePayloadWithCustom=function(e,t){t!==null&&(e.payload=t)},e.prototype.match=function(e,t,n){return null},e.prototype.matchWithTest=function(e,t,n){return e.test(t)===!0?t.substring(n,e.lastIndex):null},e.prototype.matchWithExec=function(e,t){var n=e.exec(t);return n===null?n:n[0]},e.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var r=Array(this.traceInitIndent+1).join(` `);this.traceInitIndent<this.traceInitMaxIdent&&console.log(r+`--> <`+e+`>`);var i=n.timer(t),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(r+`<-- <`+e+`> time: `+a+`ms`),this.traceInitIndent--,o}else return t()},e.SKIPPED=`This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.`,e.NA=/NOT_APPLICABLE/,e}()}),He=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.tokenMatcher=e.createTokenInstance=e.EOF=e.createToken=e.hasTokenLabel=e.tokenName=e.tokenLabel=void 0;var t=K(),n=Ve(),r=ze();function i(e){return o(e)?e.LABEL:e.name}e.tokenLabel=i;function a(e){return e.name}e.tokenName=a;function o(e){return t.isString(e.LABEL)&&e.LABEL!==``}e.hasTokenLabel=o;var s=`parent`,c=`categories`,l=`label`,u=`group`,d=`push_mode`,f=`pop_mode`,p=`longer_alt`,m=`line_breaks`,h=`start_chars_hint`;function g(e){return _(e)}e.createToken=g;function _(e){var n=e.pattern,i={};if(i.name=e.name,t.isUndefined(n)||(i.PATTERN=n),t.has(e,s))throw`The parent property is no longer supported.
|
|
53
53
|
See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return t.has(e,c)&&(i.CATEGORIES=e[c]),r.augmentTokenTypes([i]),t.has(e,l)&&(i.LABEL=e[l]),t.has(e,u)&&(i.GROUP=e[u]),t.has(e,f)&&(i.POP_MODE=e[f]),t.has(e,d)&&(i.PUSH_MODE=e[d]),t.has(e,p)&&(i.LONGER_ALT=e[p]),t.has(e,m)&&(i.LINE_BREAKS=e[m]),t.has(e,h)&&(i.START_CHARS_HINT=e[h]),i}e.EOF=g({name:`EOF`,pattern:n.Lexer.NA}),r.augmentTokenTypes([e.EOF]);function v(e,t,n,r,i,a,o,s){return{image:t,startOffset:n,endOffset:r,startLine:i,endLine:a,startColumn:o,endColumn:s,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}e.createTokenInstance=v;function y(e,t){return r.tokenStructuredMatcher(e,t)}e.tokenMatcher=y}),q=G(e=>{"use strict";var t=e&&e.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0}),e.serializeProduction=e.serializeGrammar=e.Terminal=e.Alternation=e.RepetitionWithSeparator=e.Repetition=e.RepetitionMandatoryWithSeparator=e.RepetitionMandatory=e.Option=e.Alternative=e.Rule=e.NonTerminal=e.AbstractProduction=void 0;var n=K(),r=He(),i=function(){function e(e){this._definition=e}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),e.prototype.accept=function(e){e.visit(this),n.forEach(this.definition,function(t){t.accept(e)})},e}();e.AbstractProduction=i;var a=function(e){t(r,e);function r(t){var r=e.call(this,[])||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return Object.defineProperty(r.prototype,"definition",{get:function(){return this.referencedRule===void 0?[]:this.referencedRule.definition},set:function(e){},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this)},r}(i);e.NonTerminal=a;var o=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.orgText=``,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.Rule=o;var s=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.ignoreAmbiguities=!1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.Alternative=s;var c=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.Option=c;var l=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.RepetitionMandatory=l;var u=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.RepetitionMandatoryWithSeparator=u;var d=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.Repetition=d;var f=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return r}(i);e.RepetitionWithSeparator=f;var p=function(e){t(r,e);function r(t){var r=e.call(this,t.definition)||this;return r.idx=1,r.ignoreAmbiguities=!1,r.hasPredicates=!1,n.assign(r,n.pick(t,function(e){return e!==void 0})),r}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r}(i);e.Alternation=p;var m=function(){function e(e){this.idx=1,n.assign(this,n.pick(e,function(e){return e!==void 0}))}return e.prototype.accept=function(e){e.visit(this)},e}();e.Terminal=m;function h(e){return n.map(e,g)}e.serializeGrammar=h;function g(e){function t(e){return n.map(e,g)}if(e instanceof a)return{type:`NonTerminal`,name:e.nonTerminalName,idx:e.idx};if(e instanceof s)return{type:`Alternative`,definition:t(e.definition)};if(e instanceof c)return{type:`Option`,idx:e.idx,definition:t(e.definition)};if(e instanceof l)return{type:`RepetitionMandatory`,idx:e.idx,definition:t(e.definition)};if(e instanceof u)return{type:`RepetitionMandatoryWithSeparator`,idx:e.idx,separator:g(new m({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof f)return{type:`RepetitionWithSeparator`,idx:e.idx,separator:g(new m({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof d)return{type:`Repetition`,idx:e.idx,definition:t(e.definition)};if(e instanceof p)return{type:`Alternation`,idx:e.idx,definition:t(e.definition)};if(e instanceof m){var i={type:`Terminal`,name:e.terminalType.name,label:r.tokenLabel(e.terminalType),idx:e.idx},h=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(i.pattern=n.isRegExp(h)?h.source:h),i}else{if(e instanceof o)return{type:`Rule`,name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error(`non exhaustive match`)}}e.serializeProduction=g}),Ue=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RestWalker=void 0;var t=K(),n=q();e.RestWalker=function(){function e(){}return e.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),t.forEach(e.definition,function(a,o){var s=t.drop(e.definition,o+1);if(a instanceof n.NonTerminal)i.walkProdRef(a,s,r);else if(a instanceof n.Terminal)i.walkTerminal(a,s,r);else if(a instanceof n.Alternative)i.walkFlat(a,s,r);else if(a instanceof n.Option)i.walkOption(a,s,r);else if(a instanceof n.RepetitionMandatory)i.walkAtLeastOne(a,s,r);else if(a instanceof n.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(a,s,r);else if(a instanceof n.RepetitionWithSeparator)i.walkManySep(a,s,r);else if(a instanceof n.Repetition)i.walkMany(a,s,r);else if(a instanceof n.Alternation)i.walkOr(a,s,r);else throw Error(`non exhaustive match`)})},e.prototype.walkTerminal=function(e,t,n){},e.prototype.walkProdRef=function(e,t,n){},e.prototype.walkFlat=function(e,t,n){var r=t.concat(n);this.walk(e,r)},e.prototype.walkOption=function(e,t,n){var r=t.concat(n);this.walk(e,r)},e.prototype.walkAtLeastOne=function(e,t,r){var i=[new n.Option({definition:e.definition})].concat(t,r);this.walk(e,i)},e.prototype.walkAtLeastOneSep=function(e,t,n){var i=r(e,t,n);this.walk(e,i)},e.prototype.walkMany=function(e,t,r){var i=[new n.Option({definition:e.definition})].concat(t,r);this.walk(e,i)},e.prototype.walkManySep=function(e,t,n){var i=r(e,t,n);this.walk(e,i)},e.prototype.walkOr=function(e,r,i){var a=this,o=r.concat(i);t.forEach(e.definition,function(e){var t=new n.Alternative({definition:[e]});a.walk(t,o)})},e}();function r(e,t,r){return[new n.Option({definition:[new n.Terminal({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}}),We=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GAstVisitor=void 0;var t=q();e.GAstVisitor=function(){function e(){}return e.prototype.visit=function(e){var n=e;switch(n.constructor){case t.NonTerminal:return this.visitNonTerminal(n);case t.Alternative:return this.visitAlternative(n);case t.Option:return this.visitOption(n);case t.RepetitionMandatory:return this.visitRepetitionMandatory(n);case t.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(n);case t.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(n);case t.Repetition:return this.visitRepetition(n);case t.Alternation:return this.visitAlternation(n);case t.Terminal:return this.visitTerminal(n);case t.Rule:return this.visitRule(n);default:throw Error(`non exhaustive match`)}},e.prototype.visitNonTerminal=function(e){},e.prototype.visitAlternative=function(e){},e.prototype.visitOption=function(e){},e.prototype.visitRepetition=function(e){},e.prototype.visitRepetitionMandatory=function(e){},e.prototype.visitRepetitionMandatoryWithSeparator=function(e){},e.prototype.visitRepetitionWithSeparator=function(e){},e.prototype.visitAlternation=function(e){},e.prototype.visitTerminal=function(e){},e.prototype.visitRule=function(e){},e}()}),Ge=G(e=>{"use strict";var t=e&&e.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0}),e.collectMethods=e.DslMethodsCollectorVisitor=e.getProductionDslName=e.isBranchingProd=e.isOptionalProd=e.isSequenceProd=void 0;var n=K(),r=q(),i=We();function a(e){return e instanceof r.Alternative||e instanceof r.Option||e instanceof r.Repetition||e instanceof r.RepetitionMandatory||e instanceof r.RepetitionMandatoryWithSeparator||e instanceof r.RepetitionWithSeparator||e instanceof r.Terminal||e instanceof r.Rule}e.isSequenceProd=a;function o(e,t){return t===void 0&&(t=[]),e instanceof r.Option||e instanceof r.Repetition||e instanceof r.RepetitionWithSeparator?!0:e instanceof r.Alternation?n.some(e.definition,function(e){return o(e,t)}):e instanceof r.NonTerminal&&n.contains(t,e)?!1:e instanceof r.AbstractProduction?(e instanceof r.NonTerminal&&t.push(e),n.every(e.definition,function(e){return o(e,t)})):!1}e.isOptionalProd=o;function s(e){return e instanceof r.Alternation}e.isBranchingProd=s;function c(e){if(e instanceof r.NonTerminal)return`SUBRULE`;if(e instanceof r.Option)return`OPTION`;if(e instanceof r.Alternation)return`OR`;if(e instanceof r.RepetitionMandatory)return`AT_LEAST_ONE`;if(e instanceof r.RepetitionMandatoryWithSeparator)return`AT_LEAST_ONE_SEP`;if(e instanceof r.RepetitionWithSeparator)return`MANY_SEP`;if(e instanceof r.Repetition)return`MANY`;if(e instanceof r.Terminal)return`CONSUME`;throw Error(`non exhaustive match`)}e.getProductionDslName=c;var l=function(e){t(r,e);function r(){var t=e!==null&&e.apply(this,arguments)||this;return t.separator=`-`,t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return r.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},r.prototype.visitTerminal=function(e){var t=e.terminalType.name+this.separator+`Terminal`;n.has(this.dslMethods,t)||(this.dslMethods[t]=[]),this.dslMethods[t].push(e)},r.prototype.visitNonTerminal=function(e){var t=e.nonTerminalName+this.separator+`Terminal`;n.has(this.dslMethods,t)||(this.dslMethods[t]=[]),this.dslMethods[t].push(e)},r.prototype.visitOption=function(e){this.dslMethods.option.push(e)},r.prototype.visitRepetitionWithSeparator=function(e){this.dslMethods.repetitionWithSeparator.push(e)},r.prototype.visitRepetitionMandatory=function(e){this.dslMethods.repetitionMandatory.push(e)},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)},r.prototype.visitRepetition=function(e){this.dslMethods.repetition.push(e)},r.prototype.visitAlternation=function(e){this.dslMethods.alternation.push(e)},r}(i.GAstVisitor);e.DslMethodsCollectorVisitor=l;var u=new l;function d(e){u.reset(),e.accept(u);var t=u.dslMethods;return u.reset(),t}e.collectMethods=d}),Ke=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.firstForTerminal=e.firstForBranching=e.firstForSequence=e.first=void 0;var t=K(),n=q(),r=Ge();function i(e){if(e instanceof n.NonTerminal)return i(e.referencedRule);if(e instanceof n.Terminal)return s(e);if(r.isSequenceProd(e))return a(e);if(r.isBranchingProd(e))return o(e);throw Error(`non exhaustive match`)}e.first=i;function a(e){for(var n=[],a=e.definition,o=0,s=a.length>o,c,l=!0;s&&l;)c=a[o],l=r.isOptionalProd(c),n=n.concat(i(c)),o+=1,s=a.length>o;return t.uniq(n)}e.firstForSequence=a;function o(e){var n=t.map(e.definition,function(e){return i(e)});return t.uniq(t.flatten(n))}e.firstForBranching=o;function s(e){return[e.terminalType]}e.firstForTerminal=s}),qe=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.IN=void 0,e.IN=`_~IN~_`}),Je=G(e=>{"use strict";var t=e&&e.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0}),e.buildInProdFollowPrefix=e.buildBetweenProdsFollowPrefix=e.computeAllProdsFollows=e.ResyncFollowsWalker=void 0;var n=Ue(),r=Ke(),i=K(),a=qe(),o=q(),s=function(e){t(n,e);function n(t){var n=e.call(this)||this;return n.topProd=t,n.follows={},n}return n.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},n.prototype.walkTerminal=function(e,t,n){},n.prototype.walkProdRef=function(e,t,n){var i=l(e.referencedRule,e.idx)+this.topProd.name,a=t.concat(n),s=new o.Alternative({definition:a}),c=r.first(s);this.follows[i]=c},n}(n.RestWalker);e.ResyncFollowsWalker=s;function c(e){var t={};return i.forEach(e,function(e){var n=new s(e).startWalking();i.assign(t,n)}),t}e.computeAllProdsFollows=c;function l(e,t){return e.name+t+a.IN}e.buildBetweenProdsFollowPrefix=l;function u(e){return e.terminalType.name+e.idx+a.IN}e.buildInProdFollowPrefix=u}),Ye=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.defaultGrammarValidatorErrorProvider=e.defaultGrammarResolverErrorProvider=e.defaultParserErrorProvider=void 0;var t=He(),n=K(),r=K(),i=q(),a=Ge();e.defaultParserErrorProvider={buildMismatchTokenMessage:function(e){var n=e.expected,r=e.actual;return e.previous,e.ruleName,`Expecting `+(t.hasTokenLabel(n)?`--> `+t.tokenLabel(n)+` <--`:`token of type --> `+n.name+` <--`)+` but found --> '`+r.image+`' <--`},buildNotAllInputParsedMessage:function(e){var t=e.firstRedundant;return e.ruleName,`Redundant input, expecting EOF but found: `+t.image},buildNoViableAltMessage:function(e){var n=e.expectedPathsPerAlt,i=e.actual;e.previous;var a=e.customUserDescription;e.ruleName;var o=`Expecting: `,s=`
|
|
54
54
|
but found: '`+r.first(i).image+`'`;if(a)return o+a+s;var c=r.reduce(n,function(e,t){return e.concat(t)},[]),l=r.map(c,function(e){return`[`+r.map(e,function(e){return t.tokenLabel(e)}).join(`, `)+`]`});return o+(`one of these possible Token sequences:
|
|
55
55
|
`+r.map(l,function(e,t){return` `+(t+1)+`. `+e}).join(`
|
|
@@ -137,7 +137,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
|
|
|
137
137
|
`}e.createSyntaxDiagramsCode=n}),vt=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Parser=e.createSyntaxDiagramsCode=e.clearCache=e.GAstVisitor=e.serializeProduction=e.serializeGrammar=e.Terminal=e.Rule=e.RepetitionWithSeparator=e.RepetitionMandatoryWithSeparator=e.RepetitionMandatory=e.Repetition=e.Option=e.NonTerminal=e.Alternative=e.Alternation=e.defaultLexerErrorProvider=e.NoViableAltException=e.NotAllInputParsedException=e.MismatchedTokenException=e.isRecognitionException=e.EarlyExitException=e.defaultParserErrorProvider=e.tokenName=e.tokenMatcher=e.tokenLabel=e.EOF=e.createTokenInstance=e.createToken=e.LexerDefinitionErrorType=e.Lexer=e.EMPTY_ALT=e.ParserDefinitionErrorType=e.EmbeddedActionsParser=e.CstParser=e.VERSION=void 0;var t=Pe();Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return t.VERSION}});var n=J();Object.defineProperty(e,"CstParser",{enumerable:!0,get:function(){return n.CstParser}}),Object.defineProperty(e,"EmbeddedActionsParser",{enumerable:!0,get:function(){return n.EmbeddedActionsParser}}),Object.defineProperty(e,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return n.ParserDefinitionErrorType}}),Object.defineProperty(e,"EMPTY_ALT",{enumerable:!0,get:function(){return n.EMPTY_ALT}});var r=Ve();Object.defineProperty(e,"Lexer",{enumerable:!0,get:function(){return r.Lexer}}),Object.defineProperty(e,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return r.LexerDefinitionErrorType}});var i=He();Object.defineProperty(e,"createToken",{enumerable:!0,get:function(){return i.createToken}}),Object.defineProperty(e,"createTokenInstance",{enumerable:!0,get:function(){return i.createTokenInstance}}),Object.defineProperty(e,"EOF",{enumerable:!0,get:function(){return i.EOF}}),Object.defineProperty(e,"tokenLabel",{enumerable:!0,get:function(){return i.tokenLabel}}),Object.defineProperty(e,"tokenMatcher",{enumerable:!0,get:function(){return i.tokenMatcher}}),Object.defineProperty(e,"tokenName",{enumerable:!0,get:function(){return i.tokenName}});var a=Ye();Object.defineProperty(e,"defaultParserErrorProvider",{enumerable:!0,get:function(){return a.defaultParserErrorProvider}});var o=tt();Object.defineProperty(e,"EarlyExitException",{enumerable:!0,get:function(){return o.EarlyExitException}}),Object.defineProperty(e,"isRecognitionException",{enumerable:!0,get:function(){return o.isRecognitionException}}),Object.defineProperty(e,"MismatchedTokenException",{enumerable:!0,get:function(){return o.MismatchedTokenException}}),Object.defineProperty(e,"NotAllInputParsedException",{enumerable:!0,get:function(){return o.NotAllInputParsedException}}),Object.defineProperty(e,"NoViableAltException",{enumerable:!0,get:function(){return o.NoViableAltException}});var s=Be();Object.defineProperty(e,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return s.defaultLexerErrorProvider}});var c=q();Object.defineProperty(e,"Alternation",{enumerable:!0,get:function(){return c.Alternation}}),Object.defineProperty(e,"Alternative",{enumerable:!0,get:function(){return c.Alternative}}),Object.defineProperty(e,"NonTerminal",{enumerable:!0,get:function(){return c.NonTerminal}}),Object.defineProperty(e,"Option",{enumerable:!0,get:function(){return c.Option}}),Object.defineProperty(e,"Repetition",{enumerable:!0,get:function(){return c.Repetition}}),Object.defineProperty(e,"RepetitionMandatory",{enumerable:!0,get:function(){return c.RepetitionMandatory}}),Object.defineProperty(e,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return c.RepetitionMandatoryWithSeparator}}),Object.defineProperty(e,"RepetitionWithSeparator",{enumerable:!0,get:function(){return c.RepetitionWithSeparator}}),Object.defineProperty(e,"Rule",{enumerable:!0,get:function(){return c.Rule}}),Object.defineProperty(e,"Terminal",{enumerable:!0,get:function(){return c.Terminal}});var l=q();Object.defineProperty(e,"serializeGrammar",{enumerable:!0,get:function(){return l.serializeGrammar}}),Object.defineProperty(e,"serializeProduction",{enumerable:!0,get:function(){return l.serializeProduction}});var u=We();Object.defineProperty(e,"GAstVisitor",{enumerable:!0,get:function(){return u.GAstVisitor}});function d(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API.
|
|
138
138
|
It performs no action other than printing this message.
|
|
139
139
|
Please avoid using it as it will be completely removed in the future`)}e.clearCache=d;var f=_t();Object.defineProperty(e,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return f.createSyntaxDiagramsCode}}),e.Parser=function(){function e(){throw Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.
|
|
140
|
-
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return e}()})(),yt=class extends c.Loader{backgroundTexture;fog;constructor(e){super(e)}load(e,t,n,r){this.backgroundTexture=void 0,this.fog=void 0;let i=this,a=i.path===``?c.LoaderUtils.extractUrlBase(e):i.path,o=new c.FileLoader(i.manager);o.setPath(i.path),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(n){try{t(i.parse(n,a))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e,t){let n={};function r(e){let t=i(),n=new bt(t.tokens),r=new St(t.tokenVocabulary),o=a(r.getBaseCstVisitorConstructor());r.input=n.lex(e).tokens;let s=r.vrml();if(r.errors.length>0)throw console.error(r.errors),Error(`THREE.VRMLLoader2: Parsing errors detected.`);return o.visit(s)}function i(){let e=vt.createToken,t=e({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]*/}),n=e({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:t}),r=`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`.split(`.`),i=e({name:`Version`,pattern:/#VRML.*/,longer_alt:n}),a=e({name:`NodeName`,pattern:new RegExp(r.join(`|`)),longer_alt:n}),o=e({name:`DEF`,pattern:/DEF/,longer_alt:n}),s=e({name:`USE`,pattern:/USE/,longer_alt:n}),c=e({name:`ROUTE`,pattern:/ROUTE/,longer_alt:n}),l=e({name:`TO`,pattern:/TO/,longer_alt:n}),u=e({name:`StringLiteral`,pattern:/"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/}),d=e({name:`HexLiteral`,pattern:/0[xX][0-9a-fA-F]+/}),f=e({name:`NumberLiteral`,pattern:/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/}),p=e({name:`TrueLiteral`,pattern:/TRUE/}),m=e({name:`FalseLiteral`,pattern:/FALSE/}),h=e({name:`NullLiteral`,pattern:/NULL/}),g=e({name:`LSquare`,pattern:/\[/}),_=e({name:`RSquare`,pattern:/]/}),v=e({name:`LCurly`,pattern:/{/}),y=e({name:`RCurly`,pattern:/}/}),b=e({name:`Comment`,pattern:/#.*/,group:vt.Lexer.SKIPPED}),x=[e({name:`WhiteSpace`,pattern:/[ ,\s]/,group:vt.Lexer.SKIPPED}),a,o,s,c,l,p,m,h,i,n,t,u,d,f,g,_,v,y,b],S={};for(let e=0,t=x.length;e<t;e++){let t=x[e];S[t.name]=t}return{tokens:x,tokenVocabulary:S}}function a(e){class t extends e{constructor(){super(),this.validateVisitor()}vrml(e){let t={version:this.visit(e.version),nodes:[],routes:[]};for(let n=0,r=e.node.length;n<r;n++){let r=e.node[n];t.nodes.push(this.visit(r))}if(e.route)for(let n=0,r=e.route.length;n<r;n++){let r=e.route[n];t.routes.push(this.visit(r))}return t}version(e){return e.Version[0].image}node(e){let t={name:e.NodeName[0].image,fields:[]};if(e.field)for(let n=0,r=e.field.length;n<r;n++){let r=e.field[n];t.fields.push(this.visit(r))}return e.def&&(t.DEF=this.visit(e.def[0])),t}field(e){let t={name:e.Identifier[0].image,type:null,values:null},n;return e.singleFieldValue&&(n=this.visit(e.singleFieldValue[0])),e.multiFieldValue&&(n=this.visit(e.multiFieldValue[0])),t.type=n.type,t.values=n.values,t}def(e){return(e.Identifier||e.NodeName)[0].image}use(e){return{USE:(e.Identifier||e.NodeName)[0].image}}singleFieldValue(e){return n(this,e)}multiFieldValue(e){return n(this,e)}route(e){return{FROM:e.RouteIdentifier[0].image,TO:e.RouteIdentifier[1].image}}}function n(e,t){let n={type:null,values:[]};if(t.node){n.type=`node`;for(let r=0,i=t.node.length;r<i;r++){let i=t.node[r];n.values.push(e.visit(i))}}if(t.use){n.type=`use`;for(let r=0,i=t.use.length;r<i;r++){let i=t.use[r];n.values.push(e.visit(i))}}if(t.StringLiteral){n.type=`string`;for(let e=0,r=t.StringLiteral.length;e<r;e++){let r=t.StringLiteral[e];n.values.push(r.image.replace(/'|"/g,``))}}if(t.NumberLiteral){n.type=`number`;for(let e=0,r=t.NumberLiteral.length;e<r;e++){let r=t.NumberLiteral[e];n.values.push(parseFloat(r.image))}}if(t.HexLiteral){n.type=`hex`;for(let e=0,r=t.HexLiteral.length;e<r;e++){let r=t.HexLiteral[e];n.values.push(r.image)}}if(t.TrueLiteral){n.type=`boolean`;for(let e=0,r=t.TrueLiteral.length;e<r;e++)t.TrueLiteral[e].image===`TRUE`&&n.values.push(!0)}if(t.FalseLiteral){n.type=`boolean`;for(let e=0,r=t.FalseLiteral.length;e<r;e++)t.FalseLiteral[e].image===`FALSE`&&n.values.push(!1)}return t.NullLiteral&&(n.type=`null`,t.NullLiteral.forEach(function(){n.values.push(null)})),n}return new t}function o(e){let t=e.nodes,n=new c.Scene;for(let e=0,n=t.length;e<n;e++){let n=t[e];s(n)}for(let e=0,r=t.length;e<r;e++){let r=t[e],i=l(r);i instanceof c.Object3D&&n.add(i),r.name===`WorldInfo`&&(n.userData.worldInfo=i)}return n}function s(e){e.DEF&&(n[e.DEF]=e);let t=e.fields;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.type===`node`){let e=n.values;for(let t=0,n=e.length;t<n;t++)s(e[t])}}}function l(e){return e.USE?re(e.USE):(e.build===void 0&&(e.build=u(e)),e.build)}function u(e){let t=e.name,n;switch(t){case`Anchor`:case`Group`:case`Transform`:case`Collision`:n=d(e);break;case`Background`:n=p(e);break;case`Shape`:n=m(e);break;case`Appearance`:n=h(e);break;case`Material`:n=g(e);break;case`ImageTexture`:n=b(e);break;case`PixelTexture`:n=y(e);break;case`TextureTransform`:n=x(e);break;case`IndexedFaceSet`:n=O(e);break;case`IndexedLineSet`:n=k(e);break;case`PointSet`:n=A(e);break;case`Box`:n=j(e);break;case`Cone`:n=M(e);break;case`Cylinder`:n=N(e);break;case`Sphere`:n=ee(e);break;case`ElevationGrid`:n=te(e);break;case`Extrusion`:n=ne(e);break;case`Color`:case`Coordinate`:case`Normal`:case`TextureCoordinate`:n=S(e);break;case`WorldInfo`:n=C(e);break;case`DirectionalLight`:n=w(e);break;case`PointLight`:n=T(e);break;case`SpotLight`:n=E(e);break;case`Fog`:n=D(e);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:`,t);break}return n!==void 0&&e.DEF!==void 0&&n.hasOwnProperty(`name`)===!0&&(n.name=e.DEF),n}function d(e){let t=new c.Group,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`bboxCenter`:break;case`bboxSize`:break;case`center`:break;case`children`:ie(a,t);break;case`description`:break;case`collide`:break;case`parameter`:break;case`rotation`:let e=new c.Vector3(a[0],a[1],a[2]).normalize(),n=a[3];t.quaternion.setFromAxisAngle(e,n);break;case`scale`:t.scale.set(a[0],a[1],a[2]);break;case`scaleOrientation`:break;case`translation`:t.position.set(a[0],a[1],a[2]);break;case`proxy`:break;case`url`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}let f=this;function p(e){let t=new c.Group,n,r,i,a,o,s,l,u,d,p,m=e.fields;for(let e=0,t=m.length;e<t;e++){let t=m[e],c=t.name,f=t.values;switch(c){case`groundAngle`:n=f;break;case`groundColor`:r=f;break;case`backUrl`:o=f;break;case`bottomUrl`:s=f;break;case`frontUrl`:l=f;break;case`leftUrl`:u=f;break;case`rightUrl`:d=f;break;case`topUrl`:p=f;break;case`skyAngle`:i=f;break;case`skyColor`:a=f;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}if(o&&s&&l&&u&&d&&p)f.backgroundTexture=new c.CubeTextureLoader(f.manager).load([d[0],u[0],p[0],s[0],l[0],o[0]]);else{if(a){let e=[];for(let t=0;t<a.length;t+=3)e.push([a[t],a[t+1],a[t+2]]);a=e}if(r){let e=[];for(let t=0;t<r.length;t+=3)e.push([r[t],r[t+1],r[t+2]]);r=e}this.backgroundTexture=new wt({skyColor:a,skyAngle:i,groundColor:r,groundAngle:n}).buildTexture()}return t}function m(e){let t=e.fields,n=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0}),r;for(let e=0,i=t.length;e<i;e++){let i=t[e],a=i.name,o=i.values;switch(a){case`appearance`:o[0]!==null&&(n=l(o[0]));break;case`geometry`:o[0]!==null&&(r=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i;if(r&&r.attributes.position){let e=r._type;if(e===`points`){let e=new c.PointsMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.Points(r,e)}else if(e===`line`){let e=new c.LineBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.LineSegments(r,e)}else r._solid!==void 0&&(n.side=r._solid?c.FrontSide:c.DoubleSide),r.attributes.color!==void 0&&(n.vertexColors=!0),i=new c.Mesh(r,n)}else i=new c.Object3D,i.visible=!1;return i}function h(e){let t=new c.MeshPhongMaterial,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`material`:if(o[0]!==null){let e=l(o[0]);e.diffuseColor&&t.color.copy(e.diffuseColor),e.emissiveColor&&t.emissive.copy(e.emissiveColor),e.shininess&&(t.shininess=e.shininess),e.specularColor&&t.specular.copy(e.specularColor),e.transparency&&(t.opacity=1-e.transparency),e.transparency>0&&(t.transparent=!0)}else t=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0});break;case`texture`:let e=o[0];e!==null&&(e.name===`ImageTexture`||e.name===`PixelTexture`||e.USE)&&(t.map=l(e));break;case`textureTransform`:o[0]!==null&&(n=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}if(t.map){if(t.map.__type){switch(t.map.__type){case Y.INTENSITY_ALPHA:t.opacity=1;break;case Y.RGB:t.color.set(16777215);break;case Y.RGBA:t.color.set(16777215),t.opacity=1;break;default:}delete t.map.__type}n&&(t.map.center.copy(n.center),t.map.rotation=n.rotation,t.map.repeat.copy(n.scale),t.map.offset.copy(n.translation))}return t.map&&t.map.fookHolder&&t.map.fookHolder.fooks.push(async e=>{let n=await Tt(e.source.data);t.transparent=n,t.needsUpdate=n}),t}function g(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`ambientIntensity`:break;case`diffuseColor`:t.diffuseColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`emissiveColor`:t.emissiveColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`shininess`:t.shininess=a[0];break;case`specularColor`:t.specularColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`transparency`:t.transparency=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function _(e,t,n){let r;switch(t){case Y.INTENSITY:r=parseInt(e),n.r=r,n.g=r,n.b=r,n.a=1;break;case Y.INTENSITY_ALPHA:r=parseInt(`0x`+e.substring(2,4)),n.r=r,n.g=r,n.b=r,n.a=parseInt(`0x`+e.substring(4,6));break;case Y.RGB:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=1;break;case Y.RGBA:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=parseInt(`0x`+e.substring(8,10));break;default:}}function v(e){let t;switch(e){case 1:t=Y.INTENSITY;break;case 2:t=Y.INTENSITY_ALPHA;break;case 3:t=Y.RGB;break;case 4:t=Y.RGBA;break;default:}return t}function y(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`image`:let e=s[0],i=s[1],a=s[2],l=v(a),u=new Uint8Array(4*e*i),d={r:0,g:0,b:0,a:0};for(let e=3,t=0,n=s.length;e<n;e++,t++){_(s[e],l,d);let n=t*4;u[n+0]=d.r,u[n+1]=d.g,u[n+2]=d.b,u[n+3]=d.a}t=new c.DataTexture(u,e,i),t.colorSpace=c.SRGBColorSpace,t.needsUpdate=!0,t.__type=l;break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r),t}function b(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`url`:let e=s[0],i={fooks:[]};e&&(t=he.load(e,e=>{i.fooks&&i.fooks.map(t=>t(e))})),t&&(t.fookHolder=i);break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r,t.colorSpace=c.SRGBColorSpace),t}function x(e){let t={center:new c.Vector2,rotation:0,scale:new c.Vector2(1,1),translation:new c.Vector2},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`center`:t.center.set(a[0],a[1]);break;case`rotation`:t.rotation=a[0];break;case`scale`:t.scale.set(a[0],a[1]);break;case`translation`:t.translation.set(a[0],a[1]);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function S(e){return e.fields[0]?e.fields[0].values:{}}function C(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`title`:t.title=a[0];break;case`info`:t.info=a;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function w(e){let t=0,n=new c.Color(1,1,1),r=new c.Vector3(0,0,-1),i=1,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,l=s.values;switch(c){case`ambientIntensity`:t=l[0];break;case`color`:n.set(l[0],l[1],l[2]);break;case`direction`:r.set(l[0],l[1],l[2]);break;case`intensity`:i=l[0];break;case`on`:a=l[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,c);break}}i=a?i:0;let s=new c.Object3D,l=new c.DirectionalLight(n,i);r.normalize(),r.multiplyScalar(-10),l.position.copy(r),s.add(l);let u=new c.AmbientLight(n,i*t);return s.add(u),s}function T(e){let t=0,n=new c.Vector3(1,0,0),r=new c.Color(1,1,1),i=1,a=new c.Vector3(0,0,0),o=!0,s=100,l=e.fields;for(let e=0,c=l.length;e<c;e++){let c=l[e],u=c.name,d=c.values;switch(u){case`ambientIntensity`:t=d[0];break;case`attenuation`:n.set(d[0],d[1],d[2]);break;case`color`:r.set(d[0],d[1],d[2]);break;case`intensity`:i=d[0];break;case`location`:a.set(d[0],d[1],d[2]);break;case`on`:o=d[0];break;case`radius`:s=d[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,u);break}}i=o?i:0;let u=new c.Object3D,d=new c.PointLight(r,i,s);d.position.copy(a),d.decay=2,u.add(d);let f=new c.AmbientLight(r,i*t);return u.add(f),u}function E(e){let t=0,n=new c.Vector3(1,0,0),r=1.570796,i=new c.Color(1,1,1),a=.785398,o=new c.Vector3(0,0,-1),s=1,l=new c.Vector3(0,0,-1),u=!0,d=100,f=e.fields;for(let e=0,c=f.length;e<c;e++){let c=f[e],p=c.name,m=c.values;switch(p){case`ambientIntensity`:t=m[0];break;case`attenuation`:n.set(m[0],m[1],m[2]);break;case`beamWidth`:r=m[0];break;case`color`:i.set(m[0],m[1],m[2]);break;case`cutOffAngle`:a=m[0];break;case`direction`:o.set(m[0],m[1],m[2]);break;case`intensity`:s=m[0];break;case`location`:l.set(m[0],m[1],m[2]);break;case`on`:u=m[0];break;case`radius`:d=m[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,p);break}}s=u?s:0;let p=new c.Object3D;r=r>a?a:r;let m=1-r/a,h=new c.SpotLight(i,s,d,a,m);o.normalize(),h.position.copy(o),h.decay=0,p.add(h);let g=new c.AmbientLight(i,s*t);return p.add(g),p.position.copy(l),p}function D(e){let t=new c.Color(1,1,1),n=`LINEAR`,r=0,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`color`:t.set(s[0],s[1],s[2]);break;case`fogType`:n=s[0];break;case`visibilityRange`:r=s[0];break;case`set_bind`:break;case`isBound`:break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,o);break}}if(n===`LINEAR`)f.fog=new c.Fog(t,0,r);else if(n===`EXPONENTIAL`){let e=.02;r!==0&&(e=2.146/r),f.fog=new c.FogExp2(t,e)}else console.warn(`ThreeMFLoader.VRMLLoader2: Unknown fogType:`,n);return new c.Object3D}function O(e){let t,n,r,i,a=!0,o=!0,s=0,u,d,f,p,m=!0,h=!0,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`coord`:let c=v[0];c!==null&&(n=l(c));break;case`normal`:let g=v[0];g!==null&&(r=l(g));break;case`texCoord`:let y=v[0];y!==null&&(i=l(y));break;case`ccw`:a=v[0];break;case`colorIndex`:u=v;break;case`colorPerVertex`:m=v[0];break;case`convex`:break;case`coordIndex`:d=v;break;case`creaseAngle`:s=v[0];break;case`normalIndex`:f=v;break;case`normalPerVertex`:h=v[0];break;case`solid`:o=v[0];break;case`texCoordIndex`:p=v;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}if(d===void 0)return console.warn(`THREE.VRMLLoader2: Missing coordIndex.`),new c.BufferGeometry;let _=P(d,a),v,y,b;t&&(v=m===!0?u&&u.length>0?le(_,P(u,a),t,3):V(_,new c.Float32BufferAttribute(t,3)):u&&u.length>0?ue(_,ae(F(t,u),d)):ue(_,ae(t,d)),me(v)),y=r?h===!0?f&&f.length>0?le(_,P(f,a),r,3):V(_,new c.Float32BufferAttribute(r,3)):f&&f.length>0?ue(_,ae(F(r,f),d)):ue(_,ae(r,d)):pe(_,n,s),i&&(b=p&&p.length>0?le(_,P(p,a),i,2):V(_,new c.Float32BufferAttribute(i,2)));let x=new c.BufferGeometry,S=V(_,new c.Float32BufferAttribute(n,3));return x.setAttribute(`position`,S),x.setAttribute(`normal`,y),v&&x.setAttribute(`color`,v),b&&x.setAttribute(`uv`,b),x._solid=o,x._type=`mesh`,x}function k(e){let t,n,r,i,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,u=s.values;switch(c){case`color`:let e=u[0];e!==null&&(t=l(e));break;case`coord`:let o=u[0];o!==null&&(n=l(o));break;case`colorIndex`:r=u;break;case`colorPerVertex`:a=u[0];break;case`coordIndex`:i=u;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}let s,u=oe(i);t&&(s=a===!0?r.length>0?le(u,oe(r),t,3):V(u,new c.Float32BufferAttribute(t,3)):r.length>0?de(u,se(F(t,r),i)):de(u,se(t,i)),me(s));let d=new c.BufferGeometry,f=V(u,new c.Float32BufferAttribute(n,3));return d.setAttribute(`position`,f),s&&d.setAttribute(`color`,s),d._type=`line`,d}function A(e){let t,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`color`:let e=o[0];e!==null&&(t=l(e));break;case`coord`:let r=o[0];r!==null&&(n=l(r));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i=new c.BufferGeometry;if(i.setAttribute(`position`,new c.Float32BufferAttribute(n,3)),t){let e=new c.Float32BufferAttribute(t,3);me(e),i.setAttribute(`color`,e)}return i._type=`points`,i}function j(e){let t=new c.Vector3(2,2,2),n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`size`:t.x=a[0],t.y=a[1],t.z=a[2];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.BoxGeometry(t.x,t.y,t.z)}function M(e){let t=1,n=2,r=!1,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`bottom`:r=!s[0];break;case`bottomRadius`:t=s[0];break;case`height`:n=s[0];break;case`side`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return new c.ConeGeometry(t,n,16,1,r)}function N(e){let t=1,n=2,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`bottom`:break;case`radius`:t=o[0];break;case`height`:n=o[0];break;case`side`:break;case`top`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}return new c.CylinderGeometry(t,t,n,16,1)}function ee(e){let t=1,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`radius`:t=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.SphereGeometry(t,16,16)}function te(e){let t,n,r,i,a=!0,o=!0,s=!0,u=!0,d=0,f=2,p=2,m=1,h=1,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`normal`:let c=v[0];c!==null&&(n=l(c));break;case`texCoord`:let g=v[0];g!==null&&(r=l(g));break;case`height`:i=v;break;case`ccw`:u=v[0];break;case`colorPerVertex`:a=v[0];break;case`creaseAngle`:d=v[0];break;case`normalPerVertex`:o=v[0];break;case`solid`:s=v[0];break;case`xDimension`:f=v[0];break;case`xSpacing`:m=v[0];break;case`zDimension`:p=v[0];break;case`zSpacing`:h=v[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}let _=[],v=[],y=[],b=[];for(let e=0;e<p;e++)for(let s=0;s<f;s++){let c=e*f+s,l=m*e,u=i[c],d=h*s;if(_.push(l,u,d),t&&a===!0){let e=t[c*3+0],n=t[c*3+1],r=t[c*3+2];y.push(e,n,r)}if(n&&o===!0){let e=n[c*3+0],t=n[c*3+1],r=n[c*3+2];v.push(e,t,r)}if(r){let e=r[c*2+0],t=r[c*2+1];b.push(e,t)}else b.push(e/(f-1),s/(p-1))}let x=[];for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let n=e+t*f,r=e+(t+1)*f,i=e+1+(t+1)*f,a=e+1+t*f;u===!0?(x.push(n,i,r),x.push(i,n,a)):(x.push(n,r,i),x.push(i,a,n))}let S=V(x,new c.Float32BufferAttribute(_,3)),C=V(x,new c.Float32BufferAttribute(b,2)),w,T;if(t){if(a===!1){for(let e=0;e<f-1;e++)for(let n=0;n<p-1;n++){let r=e+n*(f-1),i=t[r*3+0],a=t[r*3+1],o=t[r*3+2];y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o)}w=new c.Float32BufferAttribute(y,3)}else w=V(x,new c.Float32BufferAttribute(y,3));me(w)}if(n)if(o===!1){for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let r=e+t*(f-1),i=n[r*3+0],a=n[r*3+1],o=n[r*3+2];v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o)}T=new c.Float32BufferAttribute(v,3)}else T=V(x,new c.Float32BufferAttribute(v,3));else T=pe(x,_,d);let E=new c.BufferGeometry;return E.setAttribute(`position`,S),E.setAttribute(`normal`,T),E.setAttribute(`uv`,C),w&&E.setAttribute(`color`,w),E._solid=s,E._type=`mesh`,E}function ne(e){let t=[1,1,1,-1,-1,-1,-1,1,1,1],n=[0,0,0,0,1,0],r,i,a=!0,o=!0,s=0,l=!0,u=!0,d=e.fields;for(let e=0,c=d.length;e<c;e++){let c=d[e],f=c.name,p=c.values;switch(f){case`beginCap`:a=p[0];break;case`ccw`:o=p[0];break;case`convex`:break;case`creaseAngle`:s=p[0];break;case`crossSection`:t=p;break;case`endCap`:l=p[0];break;case`orientation`:i=p;break;case`scale`:r=p;break;case`solid`:u=p[0];break;case`spine`:n=p;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,f);break}}let f=t[0]===t[t.length-2]&&t[1]===t[t.length-1],p=[],m=new c.Vector3,h=new c.Vector3,g=new c.Vector3,_=new c.Vector3,v=new c.Quaternion;for(let e=0,a=0,o=0,s=n.length;e<s;e+=3,a+=2,o+=4){m.fromArray(n,e),h.x=r?r[a+0]:1,h.y=1,h.z=r?r[a+1]:1,g.x=i?i[o+0]:0,g.y=i?i[o+1]:0,g.z=i?i[o+2]:1;let s=i?i[o+3]:0;for(let e=0,n=t.length;e<n;e+=2)_.x=t[e+0],_.y=0,_.z=t[e+1],_.multiply(h),v.setFromAxisAngle(g,s),_.applyQuaternion(v),_.add(m),p.push(_.x,_.y,_.z)}let y=[],b=n.length/3,x=t.length/2;for(let e=0;e<b-1;e++)for(let t=0;t<x-1;t++){let n=t+e*x,r=t+1+e*x,i=t+(e+1)*x,a=t+1+(e+1)*x;t===x-2&&f===!0&&(r=e*x,a=(e+1)*x),o===!0?(y.push(n,r,i),y.push(i,r,a)):(y.push(n,i,r),y.push(i,a,r))}if(a===!0||l===!0){let e=[];for(let n=0,r=t.length;n<r;n+=2)e.push(new c.Vector2(t[n],t[n+1]));let n=c.ShapeUtils.triangulateShape(e,[]),r=[];for(let e=0,t=n.length;e<t;e++){let t=n[e];r.push(t[0],t[1],t[2])}if(a===!0)for(let e=0,t=r.length;e<t;e+=3)o===!0?y.push(r[e+0],r[e+1],r[e+2]):y.push(r[e+0],r[e+2],r[e+1]);if(l===!0){let e=x*(b-1);for(let t=0,n=r.length;t<n;t+=3)o===!0?y.push(e+r[t+0],e+r[t+2],e+r[t+1]):y.push(e+r[t+0],e+r[t+1],e+r[t+2])}}let S=V(y,new c.Float32BufferAttribute(p,3)),C=pe(y,p,s),w=new c.BufferGeometry;return w.setAttribute(`position`,S),w.setAttribute(`normal`,C),w._solid=u,w._type=`mesh`,w}function re(e){let t=n[e],r=l(t);return r.isObject3D||r.isMaterial?r.clone():r}function ie(e,t){for(let n=0,r=e.length;n<r;n++){let r=l(e[n]);r instanceof c.Object3D&&t.add(r)}}function P(e,t){let n=[],r=0;for(let i=0,a=e.length;i<a;i++){let o=e[r],s=e[i+(t?1:2)],c=e[i+(t?2:1)];n.push(o,s,c),(e[i+3]===-1||i+3>=a)&&(i+=3,r=i+1)}return n}function ae(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+3]===-1||i+3>=a)&&(i+=3,r++)}return n}function F(e,t){let n=[];for(let r=0,i=t.length;r<i;r++){let i=t[r]*3,a=e[i],o=e[i+1],s=e[i+2];n.push(a,o,s)}return n}function oe(e){let t=[];for(let n=0,r=e.length;n<r;n++){let i=e[n],a=e[n+1];t.push(i,a),(e[n+2]===-1||n+2>=r)&&(n+=2)}return t}function se(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+2]===-1||i+2>=a)&&(i+=2,r++)}return n}let I=new c.Vector3,L=new c.Vector3,R=new c.Vector3,z=new c.Vector2,ce=new c.Vector2,B=new c.Vector2;function le(e,t,n,r){let i=[];for(let a=0,o=e.length;a<o;a+=3){let e=t[a],o=t[a+1],s=t[a+2];r===2?(z.fromArray(n,e*r),ce.fromArray(n,o*r),B.fromArray(n,s*r),i.push(z.x,z.y),i.push(ce.x,ce.y),i.push(B.x,B.y)):(I.fromArray(n,e*r),L.fromArray(n,o*r),R.fromArray(n,s*r),i.push(I.x,I.y,I.z),i.push(L.x,L.y,L.z),i.push(R.x,R.y,R.z))}return new c.Float32BufferAttribute(i,r)}function ue(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=3,i++)I.fromArray(t,i*3),n.push(I.x,I.y,I.z),n.push(I.x,I.y,I.z),n.push(I.x,I.y,I.z);return new c.Float32BufferAttribute(n,3)}function de(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=2,i++)I.fromArray(t,i*3),n.push(I.x,I.y,I.z),n.push(I.x,I.y,I.z);return new c.Float32BufferAttribute(n,3)}function V(e,t){let n=t.array,r=t.itemSize,i=new n.constructor(e.length*r),a=0,o=0;for(let t=0,s=e.length;t<s;t++){a=e[t]*r;for(let e=0;e<r;e++)i[o++]=n[a++]}return new c.Float32BufferAttribute(i,r)}let fe=new c.Vector3,H=new c.Vector3;function pe(e,t,n){let r=[],i={};for(let n=0,a=e.length;n<a;n+=3){let a=e[n],o=e[n+1],s=e[n+2],c=new Ct(a,o,s);I.fromArray(t,a*3),L.fromArray(t,o*3),R.fromArray(t,s*3),H.subVectors(R,L),fe.subVectors(I,L),H.cross(fe),H.normalize(),c.normal.copy(H),i[a]===void 0&&(i[a]=[]),i[o]===void 0&&(i[o]=[]),i[s]===void 0&&(i[s]=[]),i[a].push(c.normal),i[o].push(c.normal),i[s].push(c.normal),r.push(c)}let a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e],s=U(i[o.a],o.normal,n),c=U(i[o.b],o.normal,n),l=U(i[o.c],o.normal,n);I.fromArray(t,o.a*3),L.fromArray(t,o.b*3),R.fromArray(t,o.c*3),a.push(s.x,s.y,s.z),a.push(c.x,c.y,c.z),a.push(l.x,l.y,l.z)}return new c.Float32BufferAttribute(a,3)}function U(e,t,n){let r=new c.Vector3;if(n===0)r.copy(t);else for(let i=0,a=e.length;i<a;i++)e[i].angleTo(t)<n&&r.add(e[i]);return r.normalize()}function me(e){let t=new c.Color;for(let n=0;n<e.count;n++)t.fromBufferAttribute(e,n),c.ColorManagement.colorSpaceToWorking(t,c.SRGBColorSpace),e.setXYZ(n,t.r,t.g,t.b)}let he=new c.TextureLoader(this.manager);if(he.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),e.indexOf(`#VRML V2.0`)===-1)throw Error(`THREE.VRMLLexer: Version of VRML asset not supported.`);return o(r(e))}},bt=class{constructor(e){this.lexer=new vt.Lexer(e)}lex(e){let t=this.lexer.tokenize(e);if(t.errors.length>0)throw console.error(t.errors),Error(`THREE.VRMLLexer: Lexing errors detected.`);return t}},xt=vt.CstParser,St=class extends xt{constructor(e){super(e);let t=this,n=e.Version,r=e.LCurly,i=e.RCurly,a=e.LSquare,o=e.RSquare,s=e.Identifier,c=e.RouteIdentifier,l=e.StringLiteral,u=e.HexLiteral,d=e.NumberLiteral,f=e.TrueLiteral,p=e.FalseLiteral,m=e.NullLiteral,h=e.DEF,g=e.USE,_=e.ROUTE,v=e.TO,y=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(y),t.CONSUME(r),t.MANY(function(){t.SUBRULE(t.field)}),t.CONSUME(i)}),t.RULE(`field`,function(){t.CONSUME(s),t.OR2([{ALT:function(){t.SUBRULE(t.singleFieldValue)}},{ALT:function(){t.SUBRULE(t.multiFieldValue)}}])}),t.RULE(`def`,function(){t.CONSUME(h),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`use`,function(){t.CONSUME(g),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),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(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(f)}},{ALT:function(){t.CONSUME(p)}},{ALT:function(){t.CONSUME(m)}}])})}),t.RULE(`multiFieldValue`,function(){t.CONSUME(a),t.MANY(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(m)}}])}),t.CONSUME(o)}),t.RULE(`route`,function(){t.CONSUME(_),t.CONSUME(c),t.CONSUME(v),t.CONSUME2(c)}),this.performSelfAnalysis()}},Ct=class{constructor(e,t,n){this.a=e,this.b=t,this.c=n,this.normal=new c.Vector3}},Y={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4},wt=class{constructor({skyColor:e=[[0,0,0]],skyAngle:t=[],groundColor:n=[],groundAngle:r=[],size:i=128}={}){this._skyColor=e,this._skyAngle=t,this._groundColor=n,this._groundAngle=r,this._size=i,this._texture=null}applyToScene(e){e.background=this._buildCubeTexture()}buildTexture(){return this._texture||=this._buildCubeTexture(),this._texture}dispose(){this._texture&&=(this._texture.dispose(),null)}_colorAtPitch(e){let 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]);let t=this._skyAngle.length-1;if(e>=this._skyAngle[t])return this._skyColor[t+1]??this._skyColor[this._skyColor.length-1];for(let n=0;n<t;n++)if(e<=this._skyAngle[n+1]){let t=(e-this._skyAngle[n])/(this._skyAngle[n+1]-this._skyAngle[n]);return this._lerpColor(this._skyColor[n+1]??this._skyColor[this._skyColor.length-1],this._skyColor[n+2]??this._skyColor[this._skyColor.length-1],t)}return this._skyColor[this._skyColor.length-1]}else{if(this._groundColor.length===0)return this._skyColor[this._skyColor.length-1];let 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]);let r=this._groundAngle.length-1;if(n>=this._groundAngle[r])return this._groundColor[r+1]??this._groundColor[this._groundColor.length-1];for(let e=0;e<r;e++)if(n<=this._groundAngle[e+1]){let t=(n-this._groundAngle[e])/(this._groundAngle[e+1]-this._groundAngle[e]);return this._lerpColor(this._groundColor[e+1]??this._groundColor[this._groundColor.length-1],this._groundColor[e+2]??this._groundColor[this._groundColor.length-1],t)}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(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=1-2*((t+.5)/e);for(let r=0;r<e;r++){let a=2*((r+.5)/e)-1,o=Math.sqrt(a*a+n*n+1),s=Math.acos(Math.max(-1,Math.min(1,n/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildTopCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildBottomCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,-1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildCubeTexture(){let e=this._buildSideCanvas(),t=new c.CubeTexture([e,e,this._buildTopCanvas(),this._buildBottomCanvas(),e,e]);return t.needsUpdate=!0,t.minFilter=c.LinearMipmapLinearFilter,t.magFilter=c.LinearFilter,t}};async function Tt(e){await new Promise((t,n)=>{if(e.complete)return t();e.onload=t,e.onerror=n});let t=document.createElement(`canvas`),n=t.getContext(`2d`);t.width=e.naturalWidth,t.height=e.naturalHeight,n.drawImage(e,0,0);let r=n.getImageData(0,0,t.width,t.height).data;for(let e=3;e<r.length;e+=4)if(r[e]<255)return!0;return!1}var Et=class extends c.Loader{constructor(e){super(e),this.animateBonePositions=!0,this.animateBoneRotations=!0,this.animateBoneScales=!0}load(e,t,n,r){let i=this,a=new c.FileLoader(i.manager);a.setPath(i.path),a.setRequestHeader(i.requestHeader),a.setWithCredentials(i.withCredentials),a.load(e,function(n){try{t(i.parse(n))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){function t(e){o(e)!==`HIERARCHY`&&console.error(`THREE.BVHLoader2: HIERARCHY expected.`);let t=[],i=r(e,o(e),t);o(e)!==`MOTION`&&console.error(`THREE.BVHLoader2: MOTION expected.`);let a=o(e).split(/[\s]+/),s=parseInt(a[1]);isNaN(s)&&console.error(`THREE.BVHLoader2: Failed to read number of frames.`),a=o(e).split(/[\s]+/);let c=parseFloat(a[2]);isNaN(c)&&console.error(`THREE.BVHLoader2: Failed to read frame time.`);for(let t=0;t<s;t++)a=o(e).split(/[\s]+/),n(a,t*c,i);return t}function n(e,t,r){if(r.type===`ENDSITE`)return;let i={time:t,position:new c.Vector3,rotation:new c.Quaternion,scale:new c.Vector3(1,1,1)};r.frames.push(i);let a=new c.Quaternion,o=new c.Vector3(1,0,0),s=new c.Vector3(0,1,0),l=new c.Vector3(0,0,1);for(let t=0;t<r.channels.length;t++)switch(r.channels[t]){case`Xposition`:i.position.x=parseFloat(e.shift().trim());break;case`Yposition`:i.position.y=parseFloat(e.shift().trim());break;case`Zposition`:i.position.z=parseFloat(e.shift().trim());break;case`Xrotation`:a.setFromAxisAngle(o,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Yrotation`:a.setFromAxisAngle(s,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Zrotation`:a.setFromAxisAngle(l,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Xscale`:i.scale.x=parseFloat(e.shift().trim());break;case`Yscale`:i.scale.y=parseFloat(e.shift().trim());break;case`Zscale`:i.scale.z=parseFloat(e.shift().trim());break;default:console.warn(`THREE.BVHLoader2: Invalid channel type.`)}for(let i=0;i<r.children.length;i++)n(e,t,r.children[i])}function r(e,t,n){let i={name:``,type:``,frames:[]};n.push(i);let a=t.split(/[\s]+/);a[0].toUpperCase()===`END`&&a[1].toUpperCase()===`SITE`?(i.type=`ENDSITE`,i.name=`ENDSITE`):(i.name=a[1],i.type=a[0].toUpperCase()),o(e)!==`{`&&console.error(`THREE.BVHLoader2: Expected opening { after type & name`),a=o(e).split(/[\s]+/),a[0]!==`OFFSET`&&console.error(`THREE.BVHLoader2: Expected OFFSET but got: `+a[0]),a.length!==4&&console.error(`THREE.BVHLoader2: Invalid number of values for OFFSET.`);let s=new c.Vector3(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]));if((isNaN(s.x)||isNaN(s.y)||isNaN(s.z))&&console.error(`THREE.BVHLoader2: Invalid values of OFFSET.`),i.offset=s,i.type!==`ENDSITE`){a=o(e).split(/[\s]+/),a[0]!==`CHANNELS`&&console.error(`THREE.BVHLoader2: Expected CHANNELS definition.`);let t=parseInt(a[1]);i.channels=a.splice(2,t),i.children=[]}for(;;){let t=o(e);if(t===`}`)return i;i.children.push(r(e,t,n))}}function i(e,t){let n=new c.Bone;if(t.push(n),n.position.add(e.offset),n.name=e.name,e.type!==`ENDSITE`)for(let r=0;r<e.children.length;r++)n.add(i(e.children[r],t));return n}function a(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type===`ENDSITE`)continue;let i=[],a=[],o=[],l=[];for(let e=0;e<r.frames.length;e++){let t=r.frames[e];i.push(t.time),a.push(t.position.x+r.offset.x),a.push(t.position.y+r.offset.y),a.push(t.position.z+r.offset.z),o.push(t.rotation.x),o.push(t.rotation.y),o.push(t.rotation.z),o.push(t.rotation.w),l.push(t.scale.x),l.push(t.scale.y),l.push(t.scale.z)}s.animateBonePositions&&t.push(new c.VectorKeyframeTrack(r.name+`.position`,i,a)),s.animateBoneRotations&&t.push(new c.QuaternionKeyframeTrack(r.name+`.quaternion`,i,o)),s.animateBoneScales&&t.push(new c.VectorKeyframeTrack(r.name+`.scale`,i,l))}return new c.AnimationClip(`animation`,-1,t)}function o(e){let t;for(;(t=e.shift().trim()).length===0;);return t}let s=this,l=t(e.split(/[\r\n]+/g)),u=[];i(l[0],u);let d=a(l);return{skeleton:new c.Skeleton(u),clip:d}}};async function Dt(e,t){let n=new c.LoadingManager;n.setURLModifier(t=>(t.startsWith(`./`)&&(t=t.substring(2)),URL.createObjectURL(_e(e,t))));let r=new yt(n);return{object3D:await r.loadAsync(t),bgTexture:r.backgroundTexture,fog:r.fog}}var Ot;async function kt(e,t){Ot||=new Et;let n=ge(e,t);return await Ot.parse(n)}function At(e){let t=e.clip.clone(),n=e.skeleton.bones[0].clone(!0),r=[];n.traverse(e=>{e instanceof c.Bone&&r.push(e)});let i=new c.Skeleton(r);return i.calculateInverses(),{clip:t,skeleton:i}}var jt=class{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(let t of e.tracks){let e=t.getValueSize(),n;n=t.getInterpolation()===c.InterpolateDiscrete?new c.DiscreteInterpolant(t.times,t.values,e):t.ValueTypeName===`quaternion`?new c.QuaternionLinearInterpolant(t.times,t.values,e):new c.LinearInterpolant(t.times,t.values,e),this.interpolants[t.name]=n}}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());let t={};for(let[e,n]of Object.entries(this.interpolants)){let r=e.substring(0,e.lastIndexOf(`.`)),i=e.substring(e.lastIndexOf(`.`)+1,e.length),a=t[r];a||(a={},t[r]=a);let o=n.evaluate(this.time);if(i===`position`)a.loc=new u(o[0],o[1],o[2]);else if(i===`quaternion`)a.quat=new d(o[0],o[1],o[2],o[3]);else if(i===`scale`)a.scale=new u(o[0],o[1],o[2]);else if(i===`morphTargetInfluences`){a.morphs||=[];let e=Array.from(o);a.morphs.push({name:r,vals:e})}else console.warn(`ClipMotion: update. unknown property(${i})`)}return t}},Mt={type:`audio`,autoplay:!1,loop:!1,volume:1,positional:{refDistance:1,maxDistance:1e3,rolloffFactor:1,directional:{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}}};async function Nt(){try{Pt.listener.context.state!==`running`&&await Pt.listener.context.resume()}catch{console.warn(`AudioContext resume failed. Did you call on user gesture?`)}}var Pt=class e extends W{static listener=new c.AudioListener;static audioLoader=new c.AudioLoader;ready;options;sound;constructor(e,t={}){super(),this.options=be(Mt,t),this.ready=this.asyncInit(e)}initObject(){return new c.Object3D}async asyncInit(t){if(this.options.type===`positional`){let t=new c.PositionalAudio(e.listener);t.setRefDistance(this.options.positional.refDistance),t.setMaxDistance(this.options.positional.maxDistance),t.setRolloffFactor(this.options.positional.rolloffFactor);let 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{let t=new c.Audio(e.listener);t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}return this.object3D.add(this.sound),new Promise(n=>{e.audioLoader.load(t,e=>{this.sound&&this.sound.setBuffer(e),n(this)})})}play(){this.sound?.stop(),this.sound?.play()}stop(){this.sound?.stop()}},Ft=class{isDummy=!0;skeleton=new c.Skeleton([new c.Bone]);clip=new c.AnimationClip(`dummy`)},It={},Lt={},Rt=class extends je{loop;sound;soundLoop;soundContinue;backgroundTexture;fog;constructor(e,t,n,r,i=!1,a=!0,o,s){super(e,t),this.loop=n,this.sound=r,this.soundLoop=i,this.soundContinue=a,this.backgroundTexture=o,this.fog=s}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=()=>{})}},zt=class extends Me{comment=null;tags=[];profiles=[];thumbnails=[];rdf=null;htmlfile=``;constructor(e){super(e)}async asyncInit(e){let t=await he(e),n=new DOMParser,r=ge(t,`CATALOG.XML`),i=n.parseFromString(r,`application/xml`);if(i.querySelector(`parsererror`))return console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`),this;let a=`http://acerola3d.sourceforge.jp/a3/catalog`,o=i.getElementsByTagNameNS(a,`a3`),s=i.getElementsByTagNameNS(a,`c`);s[0]&&(this.comment=s[0].textContent);let l=i.getElementsByTagNameNS(a,`tag`);Array.from(l).forEach(e=>{let t=e.getAttribute(`name`);t&&this.tags.push(t)});let d=i.getElementsByTagNameNS(a,`profile`);Array.from(d).forEach(e=>{let t=e.getAttribute(`uri`);t&&this.profiles.push(t)});let f=i.getElementsByTagNameNS(a,`thumbnail`);Array.from(f).forEach(e=>{let n=e.getAttribute(`src`);if(n){let e=_e(t,n);this.thumbnails.push(e)}});let p=i.getElementsByTagNameNS(`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,`RDF`);p[0]&&(this.rdf=p[0]);let m=i.getElementsByTagNameNS(a,`htmlfile`);if(m[0]){let e=m[0].getAttribute(`src`);e&&(this.htmlfile=ge(t,e))}let h=[],g=i.getElementsByTagNameNS(a,`a`),_={},v;for(let e of Array.from(g)){let n=e.getAttribute(`an`);if(n){h.push(n),v||=n;let r,i=e.getAttribute(`bvh`);if(i&&i!==`none`){let e=t.zipUrl+`!`+i;It[e]||(It[e]=await kt(t,i)),r=At(It[e]),r&&r.clip.tracks.forEach(e=>{e.setInterpolation(c.InterpolateDiscrete)})}else r=new Ft;let o={};r.skeleton.bones.forEach(e=>{o[e.name]=e});let s=e.getAttribute(`scale`),l=s?Number(s):1,d=e.getAttribute(`offset`),f=new u;if(d){let e=d.split(` `);f.set(Number(e[0]),Number(e[1]),Number(e[2]))}let p=e.getAttribute(`rot`),m=new u;if(p){let e=p.split(` `);m.set(Number(e[0]),Number(e[1]),Number(e[2]))}let g=e.getAttribute(`loop`)===`true`,y,b,x={},S=e.getElementsByTagNameNS(a,`p`);for(let e of Array.from(S)){let n=e.getAttribute(`name`),r=e.getAttribute(`wrl`);if(n&&r){let i=t.zipUrl+`!`+r;if(!Lt[i]){let e=await Dt(t,r);Lt[i]=e.object3D,e.bgTexture&&(y=e.bgTexture),e.fog&&(b=e.fog)}let a=e.getAttribute(`scale`);if(a){let e=Number(a);Lt[i].scale.set(e,e,e)}let o=e.getAttribute(`rot`);if(o){let e=o.split(` `);Lt[i].rotation.set(Number(e[0])/180*Math.PI,Number(e[1])/180*Math.PI,Number(e[2])/180*Math.PI,`ZXY`)}let s=e.getAttribute(`offset`);if(s){let e=s.split(` `);Lt[i].position.set(Number(e[0]),Number(e[1]),Number(e[2]))}x[n]=Lt[i].clone(!0)}}let C=new c.Object3D;C.add(r.skeleton.bones[0]),r instanceof Ft||Bt(C,x),Object.values(x).forEach(e=>{C.add(e)}),C.scale.set(l,l,l),m.scale(Math.PI/180),C.setRotationFromEuler(new c.Euler(m.x,m.y,m.z,`ZXY`)),C.position.add(f),C.traverse(e=>{e.userData.a3js={objectA3:this}});let w,T=!1,E=!0,D=e.getElementsByTagNameNS(a,`s`);if(D[0]){let e=D[0].getAttribute(`file`),n=D[0].getAttribute(`type`)||`PointSound`,r=D[0].getAttribute(`loop`)||`false`;T=r===`true`;let i=D[0].getAttribute(`gain`)||`1.0`,a=D[0].getAttribute(`offset`)||`0.0 0.0 0.0`,o=D[0].getAttribute(`direction`)||`0.0 0.0 1.0`;E=(D[0].getAttribute(`continue`)||`true`)===`true`;let s=a.split(` `).map(e=>Number(e)),c=new u(s[0],s[1],s[2]),l=o.split(` `).map(e=>Number(e)),d=new u(l[0],l[1],l[2]),f=n===`PointSound`||n===`ConeSound`?`positional`:`audio`,p=n===`PointSound`?{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}:{coneInnerAngle:30,coneOuterAngle:90,coneOuterGain:.1};if(e){let n=_e(t,e),a=URL.createObjectURL(n);w=await new Pt(a,{type:f,autoplay:!1,loop:r===`true`,volume:Number(i),positional:{directional:p}}).ready,w.setPosition(c),w.lookAt(d),URL.revokeObjectURL(a),C.add(w.object3D)}}_[n]=new Rt({root:C,bones:o,skeleton:r.skeleton},new jt(r.clip,n),g,w,T,E,y,b)}}return o[0]&&(o[0].getAttribute(`haltActionNo`)!==null&&(this.haltActionName=h[Number(o[0].getAttribute(`haltActionNo`))]),o[0].getAttribute(`walkActionNo`)!==null&&(this.walkActionName=h[Number(o[0].getAttribute(`walkActionNo`))]),o[0].getAttribute(`runActionNo`)!==null&&(this.runActionName=h[Number(o[0].getAttribute(`runActionNo`))]),o[0].getAttribute(`minWalkSpeed`)!==null&&(this.minWalkSpeed=Number(o[0].getAttribute(`minWalkSpeed`))),o[0].getAttribute(`minRunSpeed`)!==null&&(this.minRunSpeed=Number(o[0].getAttribute(`minRunSpeed`)))),v&&this.syncInit(v,_),this}};function Bt(e,t){if(se(e)){let n=t[e.name];n&&(e.add(n),delete t[e.name])}e.children&&e.children.forEach(e=>{Bt(e,t)})}var Vt=class{scene;objects;physicsWorld=null;physicsDt=1/60;collisionListener;rapierLines;constructor(){this.scene=new c.Scene,this.objects=[],H.isInitialized&&(this.physicsWorld=H.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 Me))for(let t of Object.values(e.actions))t.motion.addOneselfToPhysics(this.physicsWorld);e instanceof zt&&e.currentAction instanceof Rt&&(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);{let 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 Me))for(let t of Object.values(e.actions))t.motion.removeOneselfFromPhysics(this.physicsWorld);e instanceof Me&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=null,this.scene.environment=null),e.currentAction.fog&&(this.scene.fog=null))}removeAll(){[...this.objects].forEach(e=>{this.remove(e)})}setCollisionListener(e){this.collisionListener=e}update(e){if(this.physicsWorld){this.physicsWorld.update(e);let t=this.physicsWorld.getCollisions();if(t.forEach(e=>{e.objectA.handleCollision(e.objectB,e.started,e.partOfA,e.partOfB),e.objectB.handleCollision(e.objectA,e.started,e.partOfB,e.partOfA)}),this.collisionListener&&t.length>0&&this.collisionListener(t),this.rapierLines&&this.physicsWorld instanceof B){let{vertices:e,colors:t}=this.physicsWorld.world.debugRender();this.rapierLines.geometry.setAttribute(`position`,new c.BufferAttribute(e,3)),this.rapierLines.geometry.setAttribute(`color`,new c.BufferAttribute(t,4))}}for(let t of this.objects)t.update(e)}setPhysicsDebugMode(e){e?(this.rapierLines=new c.LineSegments(new c.BufferGeometry,new c.LineBasicMaterial({vertexColors:!0})),this.scene.add(this.rapierLines)):this.rapierLines&&=(this.scene.remove(this.rapierLines),void 0)}},Ht=class extends W{view;setView(e){this.view=e}lookAt(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuat(a)}lookAtNow(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuatNow(a)}},Ut=class{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){}},Wt=class extends Ut{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 u(e,t,n):this.target=new u(e)}update(e){if(!this.view)return;let t=this.view.camera.getPosition(),n=this.view.camera.getQuat();if(this.isLeftDown&&!this.ctrlKey){let e=.01,r=Math.sin(-this.dx*e),i=Math.cos(-this.dx*e),a=Math.sin(-this.dy*e),o=Math.cos(-this.dy*e),s=new u(1,0,0).apply(n),c=new u(0,1,0).apply(n),l=new d(s.x*a,s.y*a,s.z*a,o),f=new d(c.x*r,c.y*r,c.z*r,i),m=new u(t);m.sub(this.target),m.apply(l),m.apply(f),m.add(this.target),t.set(m);let h=p(t,this.target,new u(0,1,0));h.mul(new d(0,1,0,0)),n.set(h)}else if(this.isLeftDown){U.v0.set(this.target),U.v0.sub(t);let e=.005*U.v0.length(),r=new u(1,0,0).apply(n).scale(-this.dx*e),i=new u(0,1,0).apply(n).scale(this.dy*e);t.add(r),t.add(i),this.target.add(r),this.target.add(i)}if(this.deltaY!==0){let e=new u(this.target).sub(t);this.deltaY>0?e.scale(.05):this.deltaY<0&&e.scale(-.05),t.add(e)}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}},Gt={speed:.1,angSpeed:.01},Kt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextLoc;_avatarNextQuat;_velY;constructor(e,t){super(),this.options={...Gt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextLoc=new u,this._avatarNextQuat=new d,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){let t=this._avatar,n=new v;n.set(t);let r=t.getUnitVecZ().scale(this.options.speed),i=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(i),this._keyS&&this._avatarNextLoc.sub(r),this._keyD&&this._avatarNextLoc.sub(i),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&&(U.v0.set(0,this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),this._keyRight&&(U.v0.set(0,-this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),t.setPosition(this._avatarNextLoc),t.setQuat(this._avatarNextQuat)}},qt={speed:5,angSpeed:.3,jumpSpeed:15},Jt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextVel;_avatarNextAngVel;_velY;constructor(e,t){super(),this.options={...qt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextVel=new u,this._avatarNextAngVel=new u,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){let t=this._avatar;new v().set(t);let n=t.getUnitVecZ().scale(this.options.speed),r=t.getUnitVecX().scale(this.options.speed);this._avatarNextVel.set(0,0,0),this._avatarNextAngVel.set(0,0,0),this._keyW&&this._avatarNextVel.add(n),this._keyA&&this._avatarNextVel.add(r),this._keyS&&this._avatarNextVel.sub(n),this._keyD&&this._avatarNextVel.sub(r),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)}},Yt=class{scene;camera;controller;constructor(e){e.setView(this),this.camera=e,this.camera.setAudioListener(Pt.listener),this.camera.setPosition(0,0,3),this.scene=new Vt,this.scene.scene.add(this.camera.object3D),this.controller=new Wt(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);let 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 Error(`BaseViewはworldToScreen()は実装していません`)}screenToWorld(e,t,n){throw Error(`BaseViewはscreenToWorld()は実装していません`)}cameraToScreen(e){throw Error(`BaseViewはcameraToScreen()は実装していません`)}screenToCamera(e,t,n){throw Error(`BaseViewはscreenToCamera()は実装していません`)}async waitForRender(){throw Error(`BaseViewはwaitForRender()は実装していません`)}setShadowMap(e){throw Error(`BaseViewはsetShadowMap()は実装していません`)}},Xt=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e,this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.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 c.Object3D}setAudioListener(e){this.camera.add(e)}getHeadLight(){return this.headLight}setAspect(e){I(this.camera)&&(this.camera.aspect=e,this.camera.updateProjectionMatrix())}setHeadLight(e){e?this.headLight.intensity=1:this.headLight.intensity=0}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Zt=class extends c.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 c.Vector2(.5,.5),this.addEventListener(`removed`,function(){this.traverse(function(e){e.element&&e.element instanceof e.element.ownerDocument.defaultView.Element&&e.element.parentNode!==null&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}},Qt=new c.Vector3,$t=new c.Matrix4,en=new c.Matrix4,tn=new c.Vector3,nn=new c.Vector3,rn=class{constructor(e={}){let t=this,n,r,i,a,o={objects:new WeakMap},s=e.element===void 0?document.createElement(`div`):e.element;s.style.overflow=`hidden`,this.domElement=s,this.sortObjects=!0,this.getSize=function(){return{width:n,height:r}},this.render=function(e,t){e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),$t.copy(t.matrixWorldInverse),en.multiplyMatrices(t.projectionMatrix,$t),l(e,e,t),this.sortObjects&&f(e)},this.setSize=function(e,t){n=e,r=t,i=n/2,a=r/2,s.style.width=e+`px`,s.style.height=t+`px`};function c(e){e.isCSS2DObject&&(e.element.style.display=`none`);for(let t=0,n=e.children.length;t<n;t++)c(e.children[t])}function l(e,n,r){if(e.visible===!1){c(e);return}if(e.isCSS2DObject){Qt.setFromMatrixPosition(e.matrixWorld),Qt.applyMatrix4(en);let c=Qt.z>=-1&&Qt.z<=1&&e.layers.test(r.layers)===!0,l=e.element;l.style.display=c===!0?``:`none`,c===!0&&(e.onBeforeRender(t,n,r),l.style.transform=`translate(`+-100*e.center.x+`%,`+-100*e.center.y+`%)translate(`+(Qt.x*i+i)+`px,`+(-Qt.y*a+a)+`px)`,l.parentNode!==s&&s.appendChild(l),e.onAfterRender(t,n,r));let d={distanceToCameraSquared:u(r,e)};o.objects.set(e,d)}for(let t=0,i=e.children.length;t<i;t++)l(e.children[t],n,r)}function u(e,t){return tn.setFromMatrixPosition(e.matrixWorld),nn.setFromMatrixPosition(t.matrixWorld),tn.distanceToSquared(nn)}function d(e){let t=[];return e.traverseVisible(function(e){e.isCSS2DObject&&t.push(e)}),t}function f(e){let t=d(e).sort(function(e,t){return e.renderOrder===t.renderOrder?o.objects.get(e).distanceToCameraSquared-o.objects.get(t).distanceToCameraSquared:t.renderOrder-e.renderOrder}),n=t.length;for(let e=0,r=t.length;e<r;e++)t[e].element.style.zIndex=n-e}}};function an(e,t){if(t===c.TrianglesDrawMode)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===c.TriangleFanDrawMode||t===c.TriangleStripDrawMode){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===c.TriangleFanDrawMode)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function on(e){let t=new Map,n=new Map,r=e.clone();return sn(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function sn(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)sn(e.children[r],t.children[r],n)}var cn=class extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new pn(e)}),this.register(function(e){return new mn(e)}),this.register(function(e){return new Cn(e)}),this.register(function(e){return new wn(e)}),this.register(function(e){return new Tn(e)}),this.register(function(e){return new gn(e)}),this.register(function(e){return new _n(e)}),this.register(function(e){return new vn(e)}),this.register(function(e){return new yn(e)}),this.register(function(e){return new fn(e)}),this.register(function(e){return new bn(e)}),this.register(function(e){return new hn(e)}),this.register(function(e){return new Sn(e)}),this.register(function(e){return new xn(e)}),this.register(function(e){return new un(e)}),this.register(function(e){return new En(e,Z.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new En(e,Z.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Dn(e)})}load(e,t,n,r){let i=this,a;if(this.resourcePath!==``)a=this.resourcePath;else if(this.path!==``){let t=c.LoaderUtils.extractUrlBase(e);a=c.LoaderUtils.resolveURL(t,this.path)}else a=c.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){r?r(t):console.error(t),i.manager.itemError(e),i.manager.itemEnd(e)},s=new c.FileLoader(this.manager);s.setPath(this.path),s.setResponseType(`arraybuffer`),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(n){try{i.parse(n,a,function(n){t(n),i.manager.itemEnd(e)},o)}catch(e){o(e)}},n,o)}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 i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===On){try{a[Z.KHR_BINARY_GLTF]=new jn(e)}catch(e){r&&r(e);return}i=JSON.parse(a[Z.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new nr(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case Z.KHR_MATERIALS_UNLIT:a[t]=new dn;break;case Z.KHR_DRACO_MESH_COMPRESSION:a[t]=new Mn(i,this.dracoLoader);break;case Z.KHR_TEXTURE_TRANSFORM:a[t]=new Nn;break;case Z.KHR_MESH_QUANTIZATION:a[t]=new Pn;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function ln(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function X(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var Z={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`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},un=class{constructor(e){this.parser=e,this.name=Z.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new c.Color(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],c.LinearSRGBColorSpace);let l=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new c.DirectionalLight(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new c.PointLight(s),o.distance=l;break;case`spot`:o=new c.SpotLight(s),o.distance=l,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),Jn(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},dn=class{constructor(){this.name=Z.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){let r=[];e.color=new c.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],c.LinearSRGBColorSpace),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,c.SRGBColorSpace))}return Promise.all(r)}},fn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},pn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(e,e)}return Promise.all(r)}},mn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_DISPERSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},hn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},gn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SHEEN}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,c.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},_n=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},vn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_VOLUME}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),Promise.all(r)}},yn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IOR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},bn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SPECULAR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,c.SRGBColorSpace)),Promise.all(r)}},xn=class{constructor(e){this.parser=e,this.name=Z.EXT_MATERIALS_BUMP}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},Sn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Cn=class{constructor(e){this.parser=e,this.name=Z.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},wn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},Tn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},En=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Dn=class{constructor(e){this.name=Z.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new c.Matrix4,n=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,r);for(let e=0;e<r;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&a.fromBufferAttribute(o.ROTATION,e),o.SCALE&&s.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,a,s));for(let t in o)if(t===`_COLOR_0`){let e=o[t];l.instanceColor=new c.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else t!==`TRANSLATION`&&t!==`ROTATION`&&t!==`SCALE`&&e.geometry.setAttribute(t,o[t]);c.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}},On=`glTF`,kn=12,An={JSON:1313821514,BIN:5130562},jn=class{constructor(e){this.name=Z.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,kn),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!==On)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-kn,i=new DataView(e,kn),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===An.JSON){let r=new Uint8Array(e,kn+a,t);this.content=n.decode(r)}else if(r===An.BIN){let n=kn+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Mn=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=Z.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(let e in a){let t=Hn[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=Hn[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];l[r]=Rn[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,l,c.LinearSRGBColorSpace,n)})})}},Nn=class{constructor(){this.name=Z.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=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)}},Pn=class{constructor(){this.name=Z.KHR_MESH_QUANTIZATION}},Fn=class extends c.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},In=new c.Quaternion,Ln=class extends Fn{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return In.fromArray(i).normalize().toArray(i),i}},Q={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Rn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zn={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Bn={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},Vn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hn={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`},Un={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},Wn={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Gn={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function Kn(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),e.DefaultMaterial}function qn(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function Jn(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function Yn(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function Xn(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function Zn(e){let t,n=e.extensions&&e.extensions[Z.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Qn(n.attributes):e.indices+`:`+Qn(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Qn(e.targets[n]);return t}function Qn(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function $n(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function er(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var tr=new c.Matrix4,nr=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ln,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,i=!1,a=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.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){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return qn(i,a,r),Jn(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.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;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[Z.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(c.LoaderUtils.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=Vn[r.type],t=Rn[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new c.BufferAttribute(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=Vn[r.type],o=Rn[r.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,u=r.byteOffset||0,d=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,f=r.normalized===!0,p,m;if(d&&d!==l){let e=Math.floor(u/d),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,l=t.cache.get(n);l||(p=new o(i,e*d,r.count*d/s),l=new c.InterleavedBuffer(p,d/s),t.cache.add(n,l)),m=new c.InterleavedBufferAttribute(l,a,u%d/s,f)}else p=i===null?new o(r.count*a):new o(i,u,r.count*a),m=new c.BufferAttribute(p,a,f);if(r.sparse!==void 0){let t=Vn.SCALAR,n=Rn[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new n(e[1],s,r.sparse.count*t),d=new o(e[2],l,r.sparse.count*a);i!==null&&(m=new c.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,t=u.length;e<t;e++){let t=u[e];if(m.setX(t,d[e*a]),a>=2&&m.setY(t,d[e*a+1]),a>=3&&m.setZ(t,d[e*a+2]),a>=4&&m.setW(t,d[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}m.normalized=f}return m})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=zn[n.magFilter]||c.LinearFilter,t.minFilter=zn[n.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=Bn[n.wrapS]||c.RepeatWrapping,t.wrapT=Bn[n.wrapT]||c.RepeatWrapping,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==c.NearestFilter&&t.minFilter!==c.LinearFilter,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,l=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let u=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new c.Texture(e);t.needsUpdate=!0,n(t)}),t.load(c.LoaderUtils.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return l===!0&&o.revokeObjectURL(s),Jn(e,a),e.userData.mimeType=a.mimeType||er(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[Z.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[Z.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[Z.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},l=[];if(s[Z.KHR_MATERIALS_UNLIT]){let e=r[Z.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),l.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new c.Color(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace),o.opacity=e[3]}n.baseColorTexture!==void 0&&l.push(t.assignTexture(o,`map`,n.baseColorTexture,c.SRGBColorSpace)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),l.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=c.DoubleSide);let u=i.alphaMode||Gn.OPAQUE;if(u===Gn.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===Gn.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new c.Vector2(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==c.MeshBasicMaterial){let e=i.emissiveFactor;o.emissive=new c.Color().setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&a!==c.MeshBasicMaterial&&l.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,c.SRGBColorSpace)),Promise.all(l).then(function(){let n=new a(o);return i.name&&(n.name=i.name),Jn(n,i),t.associations.set(n,{materials:e}),i.extensions&&qn(r,n,i),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[Z.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return ir(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=Zn(o),l=r[s];if(l)a.push(l.promise);else{let e;e=o.extensions&&o.extensions[Z.KHR_DRACO_MESH_COMPRESSION]?i(o):ir(new c.BufferGeometry,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,n=this.json,r=this.extensions,i=n.meshes[e],a=i.primitives,o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e].material===void 0?Kn(this.cache):this.getDependency(`material`,a[e].material);o.push(t)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(n){let o=n.slice(0,n.length-1),s=n[n.length-1],l=[];for(let n=0,u=s.length;n<u;n++){let u=s[n],d=a[n],f,p=o[n];if(d.mode===Q.TRIANGLES||d.mode===Q.TRIANGLE_STRIP||d.mode===Q.TRIANGLE_FAN||d.mode===void 0)f=i.isSkinnedMesh===!0?new c.SkinnedMesh(u,p):new c.Mesh(u,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===Q.TRIANGLE_STRIP?f.geometry=an(f.geometry,c.TriangleStripDrawMode):d.mode===Q.TRIANGLE_FAN&&(f.geometry=an(f.geometry,c.TriangleFanDrawMode));else if(d.mode===Q.LINES)f=new c.LineSegments(u,p);else if(d.mode===Q.LINE_STRIP)f=new c.Line(u,p);else if(d.mode===Q.LINE_LOOP)f=new c.LineLoop(u,p);else if(d.mode===Q.POINTS)f=new c.Points(u,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&Xn(f,i),f.name=t.createUniqueName(i.name||`mesh_`+e),Jn(f,i),d.extensions&&qn(r,f,d),t.assignFinalMaterial(f),l.push(f)}for(let n=0,r=l.length;n<r;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(l.length===1)return i.extensions&&qn(r,l[0],i),l[0];let u=new c.Group;i.extensions&&qn(r,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,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 c.PerspectiveCamera(c.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new c.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),Jn(t,n),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],n=[];for(let e=0,r=t.joints.length;e<r;e++)n.push(this._loadNodeShallow(t.joints[e]));return t.inverseBindMatrices===void 0?n.push(null):n.push(this.getDependency(`accessor`,t.inverseBindMatrices)),Promise.all(n).then(function(e){let n=e.pop(),r=e,i=[],a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e];if(o){i.push(o);let t=new c.Matrix4;n!==null&&t.fromArray(n.array,e*16),a.push(t)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,t.joints[e])}return new c.Skeleton(i,a)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],l=[],u=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,c=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,c)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),l.push(n),u.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],c=o[e],d=s[e],f=l[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,c,d,f);if(p)for(let e=0;e<p.length;e++)u.push(p[e])}let d=new c.AnimationClip(i,void 0,u);return Jn(d,r),d})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,r=t.nodes[e],i=n._loadNodeShallow(e),a=[],o=r.children||[];for(let e=0,t=o.length;e<t;e++)a.push(n.getDependency(`node`,o[e]));let s=r.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,r.skin);return Promise.all([i,Promise.all(a),s]).then(function(e){let t=e[0],n=e[1],r=e[2];r!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,tr)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,r=n[0];t.pivot=new c.Vector3().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],r.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){let t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let i=t.nodes[e],a=i.name?r.createUniqueName(i.name):``,o=[],s=r._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return s&&o.push(s),i.camera!==void 0&&o.push(r.getDependency(`camera`,i.camera).then(function(e){return r._getNodeRef(r.cameraCache,i.camera,e)})),r._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if(o=i.isBone===!0?new c.Bone:t.length>1?new c.Group:t.length===1?t[0]:new c.Object3D,o!==t[0])for(let e=0,n=t.length;e<n;e++)o.add(t[e]);if(i.name&&(o.userData.name=i.name,o.name=a),Jn(o,i),i.extensions&&qn(n,o,i),i.matrix!==void 0){let e=new c.Matrix4;e.fromArray(i.matrix),o.applyMatrix4(e)}else i.translation!==void 0&&o.position.fromArray(i.translation),i.rotation!==void 0&&o.quaternion.fromArray(i.rotation),i.scale!==void 0&&o.scale.fromArray(i.scale);if(!r.associations.has(o))r.associations.set(o,{});else if(i.mesh!==void 0&&r.meshCache.refs[i.mesh]>1){let e=r.associations.get(o);r.associations.set(o,{...e})}return r.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new c.Group;n.name&&(i.name=r.createUniqueName(n.name)),Jn(i,n),n.extensions&&qn(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(on(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function l(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}Un[i.path]===Un.weights?(l(e),e.isGroup&&e.children.forEach(l)):s.push(o);let u;switch(Un[i.path]){case Un.weights:u=c.NumberKeyframeTrack;break;case Un.rotation:u=c.QuaternionKeyframeTrack;break;case Un.translation:case Un.scale:u=c.VectorKeyframeTrack;break;default:switch(n.itemSize){case 1:u=c.NumberKeyframeTrack;break;default:u=c.VectorKeyframeTrack;break}break}let d=r.interpolation===void 0?c.InterpolateLinear:Wn[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new u(s[e]+`.`+Un[i.path],t.array,f,d);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=$n(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof c.QuaternionKeyframeTrack?Ln:Fn)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function rr(e,t,n){let r=t.attributes,i=new c.Box3;if(r.POSITION!==void 0){let e=n.json.accessors[r.POSITION],t=e.min,a=e.max;if(t!==void 0&&a!==void 0){if(i.set(new c.Vector3(t[0],t[1],t[2]),new c.Vector3(a[0],a[1],a[2])),e.normalized){let t=$n(Rn[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let a=t.targets;if(a!==void 0){let e=new c.Vector3,t=new c.Vector3;for(let r=0,i=a.length;r<i;r++){let i=a[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=$n(Rn[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}i.expandByVector(e)}e.boundingBox=i;let o=new c.Sphere;i.getCenter(o.center),o.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=o}function ir(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=Hn[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return c.ColorManagement.workingColorSpace!==c.LinearSRGBColorSpace&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${c.ColorManagement.workingColorSpace}" not supported.`),Jn(e,t),rr(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:Yn(e,t.targets,n)})}var ar=new WeakMap,or=class extends c.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){let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,c.SRGBColorSpace,n).catch(n)}decodeDracoFile(e,t,n,r,i=c.LinearSRGBColorSpace,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ar.has(e)){let t=ar.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ar.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let{name:r,array:i,itemSize:a,stride:o,vertexColorSpace:s}=e.attributes[n],l;l=a===o?new c.BufferAttribute(i,a):new c.InterleavedBufferAttribute(new c.InterleavedBuffer(i,o),a,0),r===`color`&&(this._assignVertexColorSpace(l,s),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==c.SRGBColorSpace)return;let n=new c.Color;for(let t=0,r=e.count;t<r;t++)n.fromBufferAttribute(e,t),c.ColorManagement.colorSpaceToWorking(n,c.SRGBColorSpace),e.setXYZ(t,n.r,n.g,n.b)}_loadLibrary(e,t){let n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((t,r)=>{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=sr.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
140
|
+
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return e}()})(),yt=class extends c.Loader{backgroundTexture;fog;constructor(e){super(e)}load(e,t,n,r){this.backgroundTexture=void 0,this.fog=void 0;let i=this,a=i.path===``?c.LoaderUtils.extractUrlBase(e):i.path,o=new c.FileLoader(i.manager);o.setPath(i.path),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(n){try{t(i.parse(n,a))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e,t){let n={};function r(e){let t=i(),n=new bt(t.tokens),r=new St(t.tokenVocabulary),o=a(r.getBaseCstVisitorConstructor());r.input=n.lex(e).tokens;let s=r.vrml();if(r.errors.length>0)throw console.error(r.errors),Error(`THREE.VRMLLoader2: Parsing errors detected.`);return o.visit(s)}function i(){let e=vt.createToken,t=e({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]*/}),n=e({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:t}),r=`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`.split(`.`),i=e({name:`Version`,pattern:/#VRML.*/,longer_alt:n}),a=e({name:`NodeName`,pattern:new RegExp(r.join(`|`)),longer_alt:n}),o=e({name:`DEF`,pattern:/DEF/,longer_alt:n}),s=e({name:`USE`,pattern:/USE/,longer_alt:n}),c=e({name:`ROUTE`,pattern:/ROUTE/,longer_alt:n}),l=e({name:`TO`,pattern:/TO/,longer_alt:n}),u=e({name:`StringLiteral`,pattern:/"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/}),d=e({name:`HexLiteral`,pattern:/0[xX][0-9a-fA-F]+/}),f=e({name:`NumberLiteral`,pattern:/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/}),p=e({name:`TrueLiteral`,pattern:/TRUE/}),m=e({name:`FalseLiteral`,pattern:/FALSE/}),h=e({name:`NullLiteral`,pattern:/NULL/}),g=e({name:`LSquare`,pattern:/\[/}),_=e({name:`RSquare`,pattern:/]/}),v=e({name:`LCurly`,pattern:/{/}),y=e({name:`RCurly`,pattern:/}/}),b=e({name:`Comment`,pattern:/#.*/,group:vt.Lexer.SKIPPED}),x=[e({name:`WhiteSpace`,pattern:/[ ,\s]/,group:vt.Lexer.SKIPPED}),a,o,s,c,l,p,m,h,i,n,t,u,d,f,g,_,v,y,b],S={};for(let e=0,t=x.length;e<t;e++){let t=x[e];S[t.name]=t}return{tokens:x,tokenVocabulary:S}}function a(e){class t extends e{constructor(){super(),this.validateVisitor()}vrml(e){let t={version:this.visit(e.version),nodes:[],routes:[]};for(let n=0,r=e.node.length;n<r;n++){let r=e.node[n];t.nodes.push(this.visit(r))}if(e.route)for(let n=0,r=e.route.length;n<r;n++){let r=e.route[n];t.routes.push(this.visit(r))}return t}version(e){return e.Version[0].image}node(e){let t={name:e.NodeName[0].image,fields:[]};if(e.field)for(let n=0,r=e.field.length;n<r;n++){let r=e.field[n];t.fields.push(this.visit(r))}return e.def&&(t.DEF=this.visit(e.def[0])),t}field(e){let t={name:e.Identifier[0].image,type:null,values:null},n;return e.singleFieldValue&&(n=this.visit(e.singleFieldValue[0])),e.multiFieldValue&&(n=this.visit(e.multiFieldValue[0])),t.type=n.type,t.values=n.values,t}def(e){return(e.Identifier||e.NodeName)[0].image}use(e){return{USE:(e.Identifier||e.NodeName)[0].image}}singleFieldValue(e){return n(this,e)}multiFieldValue(e){return n(this,e)}route(e){return{FROM:e.RouteIdentifier[0].image,TO:e.RouteIdentifier[1].image}}}function n(e,t){let n={type:null,values:[]};if(t.node){n.type=`node`;for(let r=0,i=t.node.length;r<i;r++){let i=t.node[r];n.values.push(e.visit(i))}}if(t.use){n.type=`use`;for(let r=0,i=t.use.length;r<i;r++){let i=t.use[r];n.values.push(e.visit(i))}}if(t.StringLiteral){n.type=`string`;for(let e=0,r=t.StringLiteral.length;e<r;e++){let r=t.StringLiteral[e];n.values.push(r.image.replace(/'|"/g,``))}}if(t.NumberLiteral){n.type=`number`;for(let e=0,r=t.NumberLiteral.length;e<r;e++){let r=t.NumberLiteral[e];n.values.push(parseFloat(r.image))}}if(t.HexLiteral){n.type=`hex`;for(let e=0,r=t.HexLiteral.length;e<r;e++){let r=t.HexLiteral[e];n.values.push(r.image)}}if(t.TrueLiteral){n.type=`boolean`;for(let e=0,r=t.TrueLiteral.length;e<r;e++)t.TrueLiteral[e].image===`TRUE`&&n.values.push(!0)}if(t.FalseLiteral){n.type=`boolean`;for(let e=0,r=t.FalseLiteral.length;e<r;e++)t.FalseLiteral[e].image===`FALSE`&&n.values.push(!1)}return t.NullLiteral&&(n.type=`null`,t.NullLiteral.forEach(function(){n.values.push(null)})),n}return new t}function o(e){let t=e.nodes,n=new c.Scene;for(let e=0,n=t.length;e<n;e++){let n=t[e];s(n)}for(let e=0,r=t.length;e<r;e++){let r=t[e],i=l(r);i instanceof c.Object3D&&n.add(i),r.name===`WorldInfo`&&(n.userData.worldInfo=i)}return n}function s(e){e.DEF&&(n[e.DEF]=e);let t=e.fields;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.type===`node`){let e=n.values;for(let t=0,n=e.length;t<n;t++)s(e[t])}}}function l(e){return e.USE?re(e.USE):(e.build===void 0&&(e.build=u(e)),e.build)}function u(e){let t=e.name,n;switch(t){case`Anchor`:case`Group`:case`Transform`:case`Collision`:n=d(e);break;case`Background`:n=p(e);break;case`Shape`:n=m(e);break;case`Appearance`:n=h(e);break;case`Material`:n=g(e);break;case`ImageTexture`:n=b(e);break;case`PixelTexture`:n=y(e);break;case`TextureTransform`:n=x(e);break;case`IndexedFaceSet`:n=O(e);break;case`IndexedLineSet`:n=k(e);break;case`PointSet`:n=A(e);break;case`Box`:n=j(e);break;case`Cone`:n=M(e);break;case`Cylinder`:n=N(e);break;case`Sphere`:n=ee(e);break;case`ElevationGrid`:n=te(e);break;case`Extrusion`:n=ne(e);break;case`Color`:case`Coordinate`:case`Normal`:case`TextureCoordinate`:n=S(e);break;case`WorldInfo`:n=C(e);break;case`DirectionalLight`:n=w(e);break;case`PointLight`:n=T(e);break;case`SpotLight`:n=E(e);break;case`Fog`:n=D(e);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:`,t);break}return n!==void 0&&e.DEF!==void 0&&n.hasOwnProperty(`name`)===!0&&(n.name=e.DEF),n}function d(e){let t=new c.Group,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`bboxCenter`:break;case`bboxSize`:break;case`center`:break;case`children`:ie(a,t);break;case`description`:break;case`collide`:break;case`parameter`:break;case`rotation`:let e=new c.Vector3(a[0],a[1],a[2]).normalize(),n=a[3];t.quaternion.setFromAxisAngle(e,n);break;case`scale`:t.scale.set(a[0],a[1],a[2]);break;case`scaleOrientation`:break;case`translation`:t.position.set(a[0],a[1],a[2]);break;case`proxy`:break;case`url`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}let f=this;function p(e){let t=new c.Group,n,r,i,a,o,s,l,u,d,p,m=e.fields;for(let e=0,t=m.length;e<t;e++){let t=m[e],c=t.name,f=t.values;switch(c){case`groundAngle`:n=f;break;case`groundColor`:r=f;break;case`backUrl`:o=f;break;case`bottomUrl`:s=f;break;case`frontUrl`:l=f;break;case`leftUrl`:u=f;break;case`rightUrl`:d=f;break;case`topUrl`:p=f;break;case`skyAngle`:i=f;break;case`skyColor`:a=f;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}if(o&&s&&l&&u&&d&&p)f.backgroundTexture=new c.CubeTextureLoader(f.manager).load([d[0],u[0],p[0],s[0],l[0],o[0]]);else{if(a){let e=[];for(let t=0;t<a.length;t+=3)e.push([a[t],a[t+1],a[t+2]]);a=e}if(r){let e=[];for(let t=0;t<r.length;t+=3)e.push([r[t],r[t+1],r[t+2]]);r=e}this.backgroundTexture=new wt({skyColor:a,skyAngle:i,groundColor:r,groundAngle:n}).buildTexture()}return t}function m(e){let t=e.fields,n=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0}),r;for(let e=0,i=t.length;e<i;e++){let i=t[e],a=i.name,o=i.values;switch(a){case`appearance`:o[0]!==null&&(n=l(o[0]));break;case`geometry`:o[0]!==null&&(r=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i;if(r&&r.attributes.position){let e=r._type;if(e===`points`){let e=new c.PointsMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.Points(r,e)}else if(e===`line`){let e=new c.LineBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.LineSegments(r,e)}else r._solid!==void 0&&(n.side=r._solid?c.FrontSide:c.DoubleSide),r.attributes.color!==void 0&&(n.vertexColors=!0),i=new c.Mesh(r,n)}else i=new c.Object3D,i.visible=!1;return i}function h(e){let t=new c.MeshPhongMaterial,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`material`:if(o[0]!==null){let e=l(o[0]);e.diffuseColor&&t.color.copy(e.diffuseColor),e.emissiveColor&&t.emissive.copy(e.emissiveColor),e.shininess&&(t.shininess=e.shininess),e.specularColor&&t.specular.copy(e.specularColor),e.transparency&&(t.opacity=1-e.transparency),e.transparency>0&&(t.transparent=!0)}else t=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0});break;case`texture`:let e=o[0];e!==null&&(e.name===`ImageTexture`||e.name===`PixelTexture`||e.USE)&&(t.map=l(e));break;case`textureTransform`:o[0]!==null&&(n=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}if(t.map){if(t.map.__type){switch(t.map.__type){case Y.INTENSITY_ALPHA:t.opacity=1;break;case Y.RGB:t.color.set(16777215);break;case Y.RGBA:t.color.set(16777215),t.opacity=1;break;default:}delete t.map.__type}n&&(t.map.center.copy(n.center),t.map.rotation=n.rotation,t.map.repeat.copy(n.scale),t.map.offset.copy(n.translation))}return t.map&&t.map.fookHolder&&t.map.fookHolder.fooks.push(async e=>{let n=await Tt(e.source.data);t.transparent=n,t.needsUpdate=n}),t}function g(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`ambientIntensity`:break;case`diffuseColor`:t.diffuseColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`emissiveColor`:t.emissiveColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`shininess`:t.shininess=a[0];break;case`specularColor`:t.specularColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`transparency`:t.transparency=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function _(e,t,n){let r;switch(t){case Y.INTENSITY:r=parseInt(e),n.r=r,n.g=r,n.b=r,n.a=1;break;case Y.INTENSITY_ALPHA:r=parseInt(`0x`+e.substring(2,4)),n.r=r,n.g=r,n.b=r,n.a=parseInt(`0x`+e.substring(4,6));break;case Y.RGB:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=1;break;case Y.RGBA:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=parseInt(`0x`+e.substring(8,10));break;default:}}function v(e){let t;switch(e){case 1:t=Y.INTENSITY;break;case 2:t=Y.INTENSITY_ALPHA;break;case 3:t=Y.RGB;break;case 4:t=Y.RGBA;break;default:}return t}function y(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`image`:let e=s[0],i=s[1],a=s[2],l=v(a),u=new Uint8Array(4*e*i),d={r:0,g:0,b:0,a:0};for(let e=3,t=0,n=s.length;e<n;e++,t++){_(s[e],l,d);let n=t*4;u[n+0]=d.r,u[n+1]=d.g,u[n+2]=d.b,u[n+3]=d.a}t=new c.DataTexture(u,e,i),t.colorSpace=c.SRGBColorSpace,t.needsUpdate=!0,t.__type=l;break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r),t}function b(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`url`:let e=s[0],i={fooks:[]};e&&(t=he.load(e,e=>{i.fooks&&i.fooks.map(t=>t(e))})),t&&(t.fookHolder=i);break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r,t.colorSpace=c.SRGBColorSpace),t}function x(e){let t={center:new c.Vector2,rotation:0,scale:new c.Vector2(1,1),translation:new c.Vector2},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`center`:t.center.set(a[0],a[1]);break;case`rotation`:t.rotation=a[0];break;case`scale`:t.scale.set(a[0],a[1]);break;case`translation`:t.translation.set(a[0],a[1]);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function S(e){return e.fields[0]?e.fields[0].values:{}}function C(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`title`:t.title=a[0];break;case`info`:t.info=a;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function w(e){let t=0,n=new c.Color(1,1,1),r=new c.Vector3(0,0,-1),i=1,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,l=s.values;switch(c){case`ambientIntensity`:t=l[0];break;case`color`:n.set(l[0],l[1],l[2]);break;case`direction`:r.set(l[0],l[1],l[2]);break;case`intensity`:i=l[0];break;case`on`:a=l[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,c);break}}i=a?i:0;let s=new c.Object3D,l=new c.DirectionalLight(n,i);r.normalize(),r.multiplyScalar(-10),l.position.copy(r),s.add(l);let u=new c.AmbientLight(n,i*t);return s.add(u),s}function T(e){let t=0,n=new c.Vector3(1,0,0),r=new c.Color(1,1,1),i=1,a=new c.Vector3(0,0,0),o=!0,s=100,l=e.fields;for(let e=0,c=l.length;e<c;e++){let c=l[e],u=c.name,d=c.values;switch(u){case`ambientIntensity`:t=d[0];break;case`attenuation`:n.set(d[0],d[1],d[2]);break;case`color`:r.set(d[0],d[1],d[2]);break;case`intensity`:i=d[0];break;case`location`:a.set(d[0],d[1],d[2]);break;case`on`:o=d[0];break;case`radius`:s=d[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,u);break}}i=o?i:0;let u=new c.Object3D,d=new c.PointLight(r,i,s);d.position.copy(a),d.decay=2,u.add(d);let f=new c.AmbientLight(r,i*t);return u.add(f),u}function E(e){let t=0,n=new c.Vector3(1,0,0),r=1.570796,i=new c.Color(1,1,1),a=.785398,o=new c.Vector3(0,0,-1),s=1,l=new c.Vector3(0,0,-1),u=!0,d=100,f=e.fields;for(let e=0,c=f.length;e<c;e++){let c=f[e],p=c.name,m=c.values;switch(p){case`ambientIntensity`:t=m[0];break;case`attenuation`:n.set(m[0],m[1],m[2]);break;case`beamWidth`:r=m[0];break;case`color`:i.set(m[0],m[1],m[2]);break;case`cutOffAngle`:a=m[0];break;case`direction`:o.set(m[0],m[1],m[2]);break;case`intensity`:s=m[0];break;case`location`:l.set(m[0],m[1],m[2]);break;case`on`:u=m[0];break;case`radius`:d=m[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,p);break}}s=u?s:0;let p=new c.Object3D;r=r>a?a:r;let m=1-r/a,h=new c.SpotLight(i,s,d,a,m);o.normalize(),h.position.copy(o),h.decay=0,p.add(h);let g=new c.AmbientLight(i,s*t);return p.add(g),p.position.copy(l),p}function D(e){let t=new c.Color(1,1,1),n=`LINEAR`,r=0,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`color`:t.set(s[0],s[1],s[2]);break;case`fogType`:n=s[0];break;case`visibilityRange`:r=s[0];break;case`set_bind`:break;case`isBound`:break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,o);break}}if(n===`LINEAR`)f.fog=new c.Fog(t,0,r);else if(n===`EXPONENTIAL`){let e=.02;r!==0&&(e=2.146/r),f.fog=new c.FogExp2(t,e)}else console.warn(`ThreeMFLoader.VRMLLoader2: Unknown fogType:`,n);return new c.Object3D}function O(e){let t,n,r,i,a=!0,o=!0,s=0,u,d,f,p,m=!0,h=!0,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`coord`:let c=v[0];c!==null&&(n=l(c));break;case`normal`:let g=v[0];g!==null&&(r=l(g));break;case`texCoord`:let y=v[0];y!==null&&(i=l(y));break;case`ccw`:a=v[0];break;case`colorIndex`:u=v;break;case`colorPerVertex`:m=v[0];break;case`convex`:break;case`coordIndex`:d=v;break;case`creaseAngle`:s=v[0];break;case`normalIndex`:f=v;break;case`normalPerVertex`:h=v[0];break;case`solid`:o=v[0];break;case`texCoordIndex`:p=v;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}if(d===void 0)return console.warn(`THREE.VRMLLoader2: Missing coordIndex.`),new c.BufferGeometry;let _=ae(d,a),v,y,b;t&&(v=m===!0?u&&u.length>0?B(_,ae(u,a),t,3):V(_,new c.Float32BufferAttribute(t,3)):u&&u.length>0?ue(_,oe(P(t,u),d)):ue(_,oe(t,d)),me(v)),y=r?h===!0?f&&f.length>0?B(_,ae(f,a),r,3):V(_,new c.Float32BufferAttribute(r,3)):f&&f.length>0?ue(_,oe(P(r,f),d)):ue(_,oe(r,d)):pe(_,n,s),i&&(b=p&&p.length>0?B(_,ae(p,a),i,2):V(_,new c.Float32BufferAttribute(i,2)));let x=new c.BufferGeometry,S=V(_,new c.Float32BufferAttribute(n,3));return x.setAttribute(`position`,S),x.setAttribute(`normal`,y),v&&x.setAttribute(`color`,v),b&&x.setAttribute(`uv`,b),x._solid=o,x._type=`mesh`,x}function k(e){let t,n,r,i,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,u=s.values;switch(c){case`color`:let e=u[0];e!==null&&(t=l(e));break;case`coord`:let o=u[0];o!==null&&(n=l(o));break;case`colorIndex`:r=u;break;case`colorPerVertex`:a=u[0];break;case`coordIndex`:i=u;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}let s,u=se(i);t&&(s=a===!0?r.length>0?B(u,se(r),t,3):V(u,new c.Float32BufferAttribute(t,3)):r.length>0?de(u,ce(P(t,r),i)):de(u,ce(t,i)),me(s));let d=new c.BufferGeometry,f=V(u,new c.Float32BufferAttribute(n,3));return d.setAttribute(`position`,f),s&&d.setAttribute(`color`,s),d._type=`line`,d}function A(e){let t,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`color`:let e=o[0];e!==null&&(t=l(e));break;case`coord`:let r=o[0];r!==null&&(n=l(r));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i=new c.BufferGeometry;if(i.setAttribute(`position`,new c.Float32BufferAttribute(n,3)),t){let e=new c.Float32BufferAttribute(t,3);me(e),i.setAttribute(`color`,e)}return i._type=`points`,i}function j(e){let t=new c.Vector3(2,2,2),n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`size`:t.x=a[0],t.y=a[1],t.z=a[2];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.BoxGeometry(t.x,t.y,t.z)}function M(e){let t=1,n=2,r=!1,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`bottom`:r=!s[0];break;case`bottomRadius`:t=s[0];break;case`height`:n=s[0];break;case`side`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return new c.ConeGeometry(t,n,16,1,r)}function N(e){let t=1,n=2,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`bottom`:break;case`radius`:t=o[0];break;case`height`:n=o[0];break;case`side`:break;case`top`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}return new c.CylinderGeometry(t,t,n,16,1)}function ee(e){let t=1,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`radius`:t=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.SphereGeometry(t,16,16)}function te(e){let t,n,r,i,a=!0,o=!0,s=!0,u=!0,d=0,f=2,p=2,m=1,h=1,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`normal`:let c=v[0];c!==null&&(n=l(c));break;case`texCoord`:let g=v[0];g!==null&&(r=l(g));break;case`height`:i=v;break;case`ccw`:u=v[0];break;case`colorPerVertex`:a=v[0];break;case`creaseAngle`:d=v[0];break;case`normalPerVertex`:o=v[0];break;case`solid`:s=v[0];break;case`xDimension`:f=v[0];break;case`xSpacing`:m=v[0];break;case`zDimension`:p=v[0];break;case`zSpacing`:h=v[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}let _=[],v=[],y=[],b=[];for(let e=0;e<p;e++)for(let s=0;s<f;s++){let c=e*f+s,l=m*e,u=i[c],d=h*s;if(_.push(l,u,d),t&&a===!0){let e=t[c*3+0],n=t[c*3+1],r=t[c*3+2];y.push(e,n,r)}if(n&&o===!0){let e=n[c*3+0],t=n[c*3+1],r=n[c*3+2];v.push(e,t,r)}if(r){let e=r[c*2+0],t=r[c*2+1];b.push(e,t)}else b.push(e/(f-1),s/(p-1))}let x=[];for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let n=e+t*f,r=e+(t+1)*f,i=e+1+(t+1)*f,a=e+1+t*f;u===!0?(x.push(n,i,r),x.push(i,n,a)):(x.push(n,r,i),x.push(i,a,n))}let S=V(x,new c.Float32BufferAttribute(_,3)),C=V(x,new c.Float32BufferAttribute(b,2)),w,T;if(t){if(a===!1){for(let e=0;e<f-1;e++)for(let n=0;n<p-1;n++){let r=e+n*(f-1),i=t[r*3+0],a=t[r*3+1],o=t[r*3+2];y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o)}w=new c.Float32BufferAttribute(y,3)}else w=V(x,new c.Float32BufferAttribute(y,3));me(w)}if(n)if(o===!1){for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let r=e+t*(f-1),i=n[r*3+0],a=n[r*3+1],o=n[r*3+2];v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o)}T=new c.Float32BufferAttribute(v,3)}else T=V(x,new c.Float32BufferAttribute(v,3));else T=pe(x,_,d);let E=new c.BufferGeometry;return E.setAttribute(`position`,S),E.setAttribute(`normal`,T),E.setAttribute(`uv`,C),w&&E.setAttribute(`color`,w),E._solid=s,E._type=`mesh`,E}function ne(e){let t=[1,1,1,-1,-1,-1,-1,1,1,1],n=[0,0,0,0,1,0],r,i,a=!0,o=!0,s=0,l=!0,u=!0,d=e.fields;for(let e=0,c=d.length;e<c;e++){let c=d[e],f=c.name,p=c.values;switch(f){case`beginCap`:a=p[0];break;case`ccw`:o=p[0];break;case`convex`:break;case`creaseAngle`:s=p[0];break;case`crossSection`:t=p;break;case`endCap`:l=p[0];break;case`orientation`:i=p;break;case`scale`:r=p;break;case`solid`:u=p[0];break;case`spine`:n=p;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,f);break}}let f=t[0]===t[t.length-2]&&t[1]===t[t.length-1],p=[],m=new c.Vector3,h=new c.Vector3,g=new c.Vector3,_=new c.Vector3,v=new c.Quaternion;for(let e=0,a=0,o=0,s=n.length;e<s;e+=3,a+=2,o+=4){m.fromArray(n,e),h.x=r?r[a+0]:1,h.y=1,h.z=r?r[a+1]:1,g.x=i?i[o+0]:0,g.y=i?i[o+1]:0,g.z=i?i[o+2]:1;let s=i?i[o+3]:0;for(let e=0,n=t.length;e<n;e+=2)_.x=t[e+0],_.y=0,_.z=t[e+1],_.multiply(h),v.setFromAxisAngle(g,s),_.applyQuaternion(v),_.add(m),p.push(_.x,_.y,_.z)}let y=[],b=n.length/3,x=t.length/2;for(let e=0;e<b-1;e++)for(let t=0;t<x-1;t++){let n=t+e*x,r=t+1+e*x,i=t+(e+1)*x,a=t+1+(e+1)*x;t===x-2&&f===!0&&(r=e*x,a=(e+1)*x),o===!0?(y.push(n,r,i),y.push(i,r,a)):(y.push(n,i,r),y.push(i,a,r))}if(a===!0||l===!0){let e=[];for(let n=0,r=t.length;n<r;n+=2)e.push(new c.Vector2(t[n],t[n+1]));let n=c.ShapeUtils.triangulateShape(e,[]),r=[];for(let e=0,t=n.length;e<t;e++){let t=n[e];r.push(t[0],t[1],t[2])}if(a===!0)for(let e=0,t=r.length;e<t;e+=3)o===!0?y.push(r[e+0],r[e+1],r[e+2]):y.push(r[e+0],r[e+2],r[e+1]);if(l===!0){let e=x*(b-1);for(let t=0,n=r.length;t<n;t+=3)o===!0?y.push(e+r[t+0],e+r[t+2],e+r[t+1]):y.push(e+r[t+0],e+r[t+1],e+r[t+2])}}let S=V(y,new c.Float32BufferAttribute(p,3)),C=pe(y,p,s),w=new c.BufferGeometry;return w.setAttribute(`position`,S),w.setAttribute(`normal`,C),w._solid=u,w._type=`mesh`,w}function re(e){let t=n[e],r=l(t);return r.isObject3D||r.isMaterial?r.clone():r}function ie(e,t){for(let n=0,r=e.length;n<r;n++){let r=l(e[n]);r instanceof c.Object3D&&t.add(r)}}function ae(e,t){let n=[],r=0;for(let i=0,a=e.length;i<a;i++){let o=e[r],s=e[i+(t?1:2)],c=e[i+(t?2:1)];n.push(o,s,c),(e[i+3]===-1||i+3>=a)&&(i+=3,r=i+1)}return n}function oe(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+3]===-1||i+3>=a)&&(i+=3,r++)}return n}function P(e,t){let n=[];for(let r=0,i=t.length;r<i;r++){let i=t[r]*3,a=e[i],o=e[i+1],s=e[i+2];n.push(a,o,s)}return n}function se(e){let t=[];for(let n=0,r=e.length;n<r;n++){let i=e[n],a=e[n+1];t.push(i,a),(e[n+2]===-1||n+2>=r)&&(n+=2)}return t}function ce(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+2]===-1||i+2>=a)&&(i+=2,r++)}return n}let F=new c.Vector3,I=new c.Vector3,L=new c.Vector3,R=new c.Vector2,le=new c.Vector2,z=new c.Vector2;function B(e,t,n,r){let i=[];for(let a=0,o=e.length;a<o;a+=3){let e=t[a],o=t[a+1],s=t[a+2];r===2?(R.fromArray(n,e*r),le.fromArray(n,o*r),z.fromArray(n,s*r),i.push(R.x,R.y),i.push(le.x,le.y),i.push(z.x,z.y)):(F.fromArray(n,e*r),I.fromArray(n,o*r),L.fromArray(n,s*r),i.push(F.x,F.y,F.z),i.push(I.x,I.y,I.z),i.push(L.x,L.y,L.z))}return new c.Float32BufferAttribute(i,r)}function ue(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=3,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function de(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=2,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function V(e,t){let n=t.array,r=t.itemSize,i=new n.constructor(e.length*r),a=0,o=0;for(let t=0,s=e.length;t<s;t++){a=e[t]*r;for(let e=0;e<r;e++)i[o++]=n[a++]}return new c.Float32BufferAttribute(i,r)}let fe=new c.Vector3,H=new c.Vector3;function pe(e,t,n){let r=[],i={};for(let n=0,a=e.length;n<a;n+=3){let a=e[n],o=e[n+1],s=e[n+2],c=new Ct(a,o,s);F.fromArray(t,a*3),I.fromArray(t,o*3),L.fromArray(t,s*3),H.subVectors(L,I),fe.subVectors(F,I),H.cross(fe),H.normalize(),c.normal.copy(H),i[a]===void 0&&(i[a]=[]),i[o]===void 0&&(i[o]=[]),i[s]===void 0&&(i[s]=[]),i[a].push(c.normal),i[o].push(c.normal),i[s].push(c.normal),r.push(c)}let a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e],s=U(i[o.a],o.normal,n),c=U(i[o.b],o.normal,n),l=U(i[o.c],o.normal,n);F.fromArray(t,o.a*3),I.fromArray(t,o.b*3),L.fromArray(t,o.c*3),a.push(s.x,s.y,s.z),a.push(c.x,c.y,c.z),a.push(l.x,l.y,l.z)}return new c.Float32BufferAttribute(a,3)}function U(e,t,n){let r=new c.Vector3;if(n===0)r.copy(t);else for(let i=0,a=e.length;i<a;i++)e[i].angleTo(t)<n&&r.add(e[i]);return r.normalize()}function me(e){let t=new c.Color;for(let n=0;n<e.count;n++)t.fromBufferAttribute(e,n),c.ColorManagement.colorSpaceToWorking(t,c.SRGBColorSpace),e.setXYZ(n,t.r,t.g,t.b)}let he=new c.TextureLoader(this.manager);if(he.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),e.indexOf(`#VRML V2.0`)===-1)throw Error(`THREE.VRMLLexer: Version of VRML asset not supported.`);return o(r(e))}},bt=class{constructor(e){this.lexer=new vt.Lexer(e)}lex(e){let t=this.lexer.tokenize(e);if(t.errors.length>0)throw console.error(t.errors),Error(`THREE.VRMLLexer: Lexing errors detected.`);return t}},xt=vt.CstParser,St=class extends xt{constructor(e){super(e);let t=this,n=e.Version,r=e.LCurly,i=e.RCurly,a=e.LSquare,o=e.RSquare,s=e.Identifier,c=e.RouteIdentifier,l=e.StringLiteral,u=e.HexLiteral,d=e.NumberLiteral,f=e.TrueLiteral,p=e.FalseLiteral,m=e.NullLiteral,h=e.DEF,g=e.USE,_=e.ROUTE,v=e.TO,y=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(y),t.CONSUME(r),t.MANY(function(){t.SUBRULE(t.field)}),t.CONSUME(i)}),t.RULE(`field`,function(){t.CONSUME(s),t.OR2([{ALT:function(){t.SUBRULE(t.singleFieldValue)}},{ALT:function(){t.SUBRULE(t.multiFieldValue)}}])}),t.RULE(`def`,function(){t.CONSUME(h),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`use`,function(){t.CONSUME(g),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),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(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(f)}},{ALT:function(){t.CONSUME(p)}},{ALT:function(){t.CONSUME(m)}}])})}),t.RULE(`multiFieldValue`,function(){t.CONSUME(a),t.MANY(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(m)}}])}),t.CONSUME(o)}),t.RULE(`route`,function(){t.CONSUME(_),t.CONSUME(c),t.CONSUME(v),t.CONSUME2(c)}),this.performSelfAnalysis()}},Ct=class{constructor(e,t,n){this.a=e,this.b=t,this.c=n,this.normal=new c.Vector3}},Y={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4},wt=class{constructor({skyColor:e=[[0,0,0]],skyAngle:t=[],groundColor:n=[],groundAngle:r=[],size:i=128}={}){this._skyColor=e,this._skyAngle=t,this._groundColor=n,this._groundAngle=r,this._size=i,this._texture=null}applyToScene(e){e.background=this._buildCubeTexture()}buildTexture(){return this._texture||=this._buildCubeTexture(),this._texture}dispose(){this._texture&&=(this._texture.dispose(),null)}_colorAtPitch(e){let 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]);let t=this._skyAngle.length-1;if(e>=this._skyAngle[t])return this._skyColor[t+1]??this._skyColor[this._skyColor.length-1];for(let n=0;n<t;n++)if(e<=this._skyAngle[n+1]){let t=(e-this._skyAngle[n])/(this._skyAngle[n+1]-this._skyAngle[n]);return this._lerpColor(this._skyColor[n+1]??this._skyColor[this._skyColor.length-1],this._skyColor[n+2]??this._skyColor[this._skyColor.length-1],t)}return this._skyColor[this._skyColor.length-1]}else{if(this._groundColor.length===0)return this._skyColor[this._skyColor.length-1];let 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]);let r=this._groundAngle.length-1;if(n>=this._groundAngle[r])return this._groundColor[r+1]??this._groundColor[this._groundColor.length-1];for(let e=0;e<r;e++)if(n<=this._groundAngle[e+1]){let t=(n-this._groundAngle[e])/(this._groundAngle[e+1]-this._groundAngle[e]);return this._lerpColor(this._groundColor[e+1]??this._groundColor[this._groundColor.length-1],this._groundColor[e+2]??this._groundColor[this._groundColor.length-1],t)}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(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=1-2*((t+.5)/e);for(let r=0;r<e;r++){let a=2*((r+.5)/e)-1,o=Math.sqrt(a*a+n*n+1),s=Math.acos(Math.max(-1,Math.min(1,n/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildTopCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildBottomCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,-1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildCubeTexture(){let e=this._buildSideCanvas(),t=new c.CubeTexture([e,e,this._buildTopCanvas(),this._buildBottomCanvas(),e,e]);return t.needsUpdate=!0,t.minFilter=c.LinearMipmapLinearFilter,t.magFilter=c.LinearFilter,t}};async function Tt(e){await new Promise((t,n)=>{if(e.complete)return t();e.onload=t,e.onerror=n});let t=document.createElement(`canvas`),n=t.getContext(`2d`);t.width=e.naturalWidth,t.height=e.naturalHeight,n.drawImage(e,0,0);let r=n.getImageData(0,0,t.width,t.height).data;for(let e=3;e<r.length;e+=4)if(r[e]<255)return!0;return!1}var Et=class extends c.Loader{constructor(e){super(e),this.animateBonePositions=!0,this.animateBoneRotations=!0,this.animateBoneScales=!0}load(e,t,n,r){let i=this,a=new c.FileLoader(i.manager);a.setPath(i.path),a.setRequestHeader(i.requestHeader),a.setWithCredentials(i.withCredentials),a.load(e,function(n){try{t(i.parse(n))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){function t(e){o(e)!==`HIERARCHY`&&console.error(`THREE.BVHLoader2: HIERARCHY expected.`);let t=[],i=r(e,o(e),t);o(e)!==`MOTION`&&console.error(`THREE.BVHLoader2: MOTION expected.`);let a=o(e).split(/[\s]+/),s=parseInt(a[1]);isNaN(s)&&console.error(`THREE.BVHLoader2: Failed to read number of frames.`),a=o(e).split(/[\s]+/);let c=parseFloat(a[2]);isNaN(c)&&console.error(`THREE.BVHLoader2: Failed to read frame time.`);for(let t=0;t<s;t++)a=o(e).split(/[\s]+/),n(a,t*c,i);return t}function n(e,t,r){if(r.type===`ENDSITE`)return;let i={time:t,position:new c.Vector3,rotation:new c.Quaternion,scale:new c.Vector3(1,1,1)};r.frames.push(i);let a=new c.Quaternion,o=new c.Vector3(1,0,0),s=new c.Vector3(0,1,0),l=new c.Vector3(0,0,1);for(let t=0;t<r.channels.length;t++)switch(r.channels[t]){case`Xposition`:i.position.x=parseFloat(e.shift().trim());break;case`Yposition`:i.position.y=parseFloat(e.shift().trim());break;case`Zposition`:i.position.z=parseFloat(e.shift().trim());break;case`Xrotation`:a.setFromAxisAngle(o,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Yrotation`:a.setFromAxisAngle(s,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Zrotation`:a.setFromAxisAngle(l,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Xscale`:i.scale.x=parseFloat(e.shift().trim());break;case`Yscale`:i.scale.y=parseFloat(e.shift().trim());break;case`Zscale`:i.scale.z=parseFloat(e.shift().trim());break;default:console.warn(`THREE.BVHLoader2: Invalid channel type.`)}for(let i=0;i<r.children.length;i++)n(e,t,r.children[i])}function r(e,t,n){let i={name:``,type:``,frames:[]};n.push(i);let a=t.split(/[\s]+/);a[0].toUpperCase()===`END`&&a[1].toUpperCase()===`SITE`?(i.type=`ENDSITE`,i.name=`ENDSITE`):(i.name=a[1],i.type=a[0].toUpperCase()),o(e)!==`{`&&console.error(`THREE.BVHLoader2: Expected opening { after type & name`),a=o(e).split(/[\s]+/),a[0]!==`OFFSET`&&console.error(`THREE.BVHLoader2: Expected OFFSET but got: `+a[0]),a.length!==4&&console.error(`THREE.BVHLoader2: Invalid number of values for OFFSET.`);let s=new c.Vector3(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]));if((isNaN(s.x)||isNaN(s.y)||isNaN(s.z))&&console.error(`THREE.BVHLoader2: Invalid values of OFFSET.`),i.offset=s,i.type!==`ENDSITE`){a=o(e).split(/[\s]+/),a[0]!==`CHANNELS`&&console.error(`THREE.BVHLoader2: Expected CHANNELS definition.`);let t=parseInt(a[1]);i.channels=a.splice(2,t),i.children=[]}for(;;){let t=o(e);if(t===`}`)return i;i.children.push(r(e,t,n))}}function i(e,t){let n=new c.Bone;if(t.push(n),n.position.add(e.offset),n.name=e.name,e.type!==`ENDSITE`)for(let r=0;r<e.children.length;r++)n.add(i(e.children[r],t));return n}function a(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type===`ENDSITE`)continue;let i=[],a=[],o=[],l=[];for(let e=0;e<r.frames.length;e++){let t=r.frames[e];i.push(t.time),a.push(t.position.x+r.offset.x),a.push(t.position.y+r.offset.y),a.push(t.position.z+r.offset.z),o.push(t.rotation.x),o.push(t.rotation.y),o.push(t.rotation.z),o.push(t.rotation.w),l.push(t.scale.x),l.push(t.scale.y),l.push(t.scale.z)}s.animateBonePositions&&t.push(new c.VectorKeyframeTrack(r.name+`.position`,i,a)),s.animateBoneRotations&&t.push(new c.QuaternionKeyframeTrack(r.name+`.quaternion`,i,o)),s.animateBoneScales&&t.push(new c.VectorKeyframeTrack(r.name+`.scale`,i,l))}return new c.AnimationClip(`animation`,-1,t)}function o(e){let t;for(;(t=e.shift().trim()).length===0;);return t}let s=this,l=t(e.split(/[\r\n]+/g)),u=[];i(l[0],u);let d=a(l);return{skeleton:new c.Skeleton(u),clip:d}}};async function Dt(e,t){let n=new c.LoadingManager;n.setURLModifier(t=>(t.startsWith(`./`)&&(t=t.substring(2)),URL.createObjectURL(_e(e,t))));let r=new yt(n);return{object3D:await r.loadAsync(t),bgTexture:r.backgroundTexture,fog:r.fog}}var Ot;async function kt(e,t){Ot||=new Et;let n=ge(e,t);return await Ot.parse(n)}function At(e){let t=e.clip.clone(),n=e.skeleton.bones[0].clone(!0),r=[];n.traverse(e=>{e instanceof c.Bone&&r.push(e)});let i=new c.Skeleton(r);return i.calculateInverses(),{clip:t,skeleton:i}}var jt=class{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(let t of e.tracks){let e=t.getValueSize(),n;n=t.getInterpolation()===c.InterpolateDiscrete?new c.DiscreteInterpolant(t.times,t.values,e):t.ValueTypeName===`quaternion`?new c.QuaternionLinearInterpolant(t.times,t.values,e):new c.LinearInterpolant(t.times,t.values,e),this.interpolants[t.name]=n}}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());let t={};for(let[e,n]of Object.entries(this.interpolants)){let r=e.substring(0,e.lastIndexOf(`.`)),i=e.substring(e.lastIndexOf(`.`)+1,e.length),a=t[r];a||(a={},t[r]=a);let o=n.evaluate(this.time);if(i===`position`)a.loc=new u(o[0],o[1],o[2]);else if(i===`quaternion`)a.quat=new d(o[0],o[1],o[2],o[3]);else if(i===`scale`)a.scale=new u(o[0],o[1],o[2]);else if(i===`morphTargetInfluences`){a.morphs||=[];let e=Array.from(o);a.morphs.push({name:r,vals:e})}else console.warn(`ClipMotion: update. unknown property(${i})`)}return t}},Mt={type:`audio`,autoplay:!1,loop:!1,volume:1,positional:{refDistance:1,maxDistance:1e3,rolloffFactor:1,directional:{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}}};async function Nt(){try{Pt.listener.context.state!==`running`&&await Pt.listener.context.resume()}catch{console.warn(`AudioContext resume failed. Did you call on user gesture?`)}}var Pt=class e extends W{static listener=new c.AudioListener;static audioLoader=new c.AudioLoader;ready;options;sound;constructor(e,t={}){super(),this.options=be(Mt,t),this.ready=this.asyncInit(e)}initObject(){return new c.Object3D}async asyncInit(t){if(this.options.type===`positional`){let t=new c.PositionalAudio(e.listener);t.setRefDistance(this.options.positional.refDistance),t.setMaxDistance(this.options.positional.maxDistance),t.setRolloffFactor(this.options.positional.rolloffFactor);let 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{let t=new c.Audio(e.listener);t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}return this.object3D.add(this.sound),new Promise(n=>{e.audioLoader.load(t,e=>{this.sound&&this.sound.setBuffer(e),n(this)})})}play(){this.sound?.stop(),this.sound?.play()}stop(){this.sound?.stop()}},Ft=class{isDummy=!0;skeleton=new c.Skeleton([new c.Bone]);clip=new c.AnimationClip(`dummy`)},It={},Lt={},Rt=class extends je{loop;sound;soundLoop;soundContinue;backgroundTexture;fog;constructor(e,t,n,r,i=!1,a=!0,o,s){super(e,t),this.loop=n,this.sound=r,this.soundLoop=i,this.soundContinue=a,this.backgroundTexture=o,this.fog=s}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=()=>{})}},zt=class extends Me{comment=null;tags=[];profiles=[];thumbnails=[];rdf=null;htmlfile=``;constructor(e){super(e)}async asyncInit(e){let t=await he(e),n=new DOMParser,r=ge(t,`CATALOG.XML`),i=n.parseFromString(r,`application/xml`);if(i.querySelector(`parsererror`))return console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`),this;let a=`http://acerola3d.sourceforge.jp/a3/catalog`,o=i.getElementsByTagNameNS(a,`a3`),s=i.getElementsByTagNameNS(a,`c`);s[0]&&(this.comment=s[0].textContent);let l=i.getElementsByTagNameNS(a,`tag`);Array.from(l).forEach(e=>{let t=e.getAttribute(`name`);t&&this.tags.push(t)});let d=i.getElementsByTagNameNS(a,`profile`);Array.from(d).forEach(e=>{let t=e.getAttribute(`uri`);t&&this.profiles.push(t)});let f=i.getElementsByTagNameNS(a,`thumbnail`);Array.from(f).forEach(e=>{let n=e.getAttribute(`src`);if(n){let e=_e(t,n);this.thumbnails.push(e)}});let p=i.getElementsByTagNameNS(`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,`RDF`);p[0]&&(this.rdf=p[0]);let m=i.getElementsByTagNameNS(a,`htmlfile`);if(m[0]){let e=m[0].getAttribute(`src`);e&&(this.htmlfile=ge(t,e))}let h=[],g=i.getElementsByTagNameNS(a,`a`),_={},v;for(let e of Array.from(g)){let n=e.getAttribute(`an`);if(n){h.push(n),v||=n;let r,i=e.getAttribute(`bvh`);if(i&&i!==`none`){let e=t.zipUrl+`!`+i;It[e]||(It[e]=await kt(t,i)),r=At(It[e]),r&&r.clip.tracks.forEach(e=>{e.setInterpolation(c.InterpolateDiscrete)})}else r=new Ft;let o={};r.skeleton.bones.forEach(e=>{o[e.name]=e});let s=e.getAttribute(`scale`),l=s?Number(s):1,d=e.getAttribute(`offset`),f=new u;if(d){let e=d.split(` `);f.set(Number(e[0]),Number(e[1]),Number(e[2]))}let p=e.getAttribute(`rot`),m=new u;if(p){let e=p.split(` `);m.set(Number(e[0]),Number(e[1]),Number(e[2]))}let g=e.getAttribute(`loop`)===`true`,y,b,x={},S=e.getElementsByTagNameNS(a,`p`);for(let e of Array.from(S)){let n=e.getAttribute(`name`),r=e.getAttribute(`wrl`);if(n&&r){let i=t.zipUrl+`!`+r;if(!Lt[i]){let e=await Dt(t,r);Lt[i]=e.object3D,e.bgTexture&&(y=e.bgTexture),e.fog&&(b=e.fog)}let a=e.getAttribute(`scale`);if(a){let e=Number(a);Lt[i].scale.set(e,e,e)}let o=e.getAttribute(`rot`);if(o){let e=o.split(` `);Lt[i].rotation.set(Number(e[0])/180*Math.PI,Number(e[1])/180*Math.PI,Number(e[2])/180*Math.PI,`ZXY`)}let s=e.getAttribute(`offset`);if(s){let e=s.split(` `);Lt[i].position.set(Number(e[0]),Number(e[1]),Number(e[2]))}x[n]=Lt[i].clone(!0)}}let C=new c.Object3D;C.add(r.skeleton.bones[0]),r instanceof Ft||Bt(C,x),Object.values(x).forEach(e=>{C.add(e)}),C.scale.set(l,l,l),m.scale(Math.PI/180),C.setRotationFromEuler(new c.Euler(m.x,m.y,m.z,`ZXY`)),C.position.add(f),C.traverse(e=>{e.userData.a3js={objectA3:this}});let w,T=!1,E=!0,D=e.getElementsByTagNameNS(a,`s`);if(D[0]){let e=D[0].getAttribute(`file`),n=D[0].getAttribute(`type`)||`PointSound`,r=D[0].getAttribute(`loop`)||`false`;T=r===`true`;let i=D[0].getAttribute(`gain`)||`1.0`,a=D[0].getAttribute(`offset`)||`0.0 0.0 0.0`,o=D[0].getAttribute(`direction`)||`0.0 0.0 1.0`;E=(D[0].getAttribute(`continue`)||`true`)===`true`;let s=a.split(` `).map(e=>Number(e)),c=new u(s[0],s[1],s[2]),l=o.split(` `).map(e=>Number(e)),d=new u(l[0],l[1],l[2]),f=n===`PointSound`||n===`ConeSound`?`positional`:`audio`,p=n===`PointSound`?{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}:{coneInnerAngle:30,coneOuterAngle:90,coneOuterGain:.1};if(e){let n=_e(t,e),a=URL.createObjectURL(n);w=await new Pt(a,{type:f,autoplay:!1,loop:r===`true`,volume:Number(i),positional:{directional:p}}).ready,w.setPosition(c),w.lookAt(d),URL.revokeObjectURL(a),C.add(w.object3D)}}_[n]=new Rt({root:C,bones:o,skeleton:r.skeleton},new jt(r.clip,n),g,w,T,E,y,b)}}return o[0]&&(o[0].getAttribute(`haltActionNo`)!==null&&(this.haltActionName=h[Number(o[0].getAttribute(`haltActionNo`))]),o[0].getAttribute(`walkActionNo`)!==null&&(this.walkActionName=h[Number(o[0].getAttribute(`walkActionNo`))]),o[0].getAttribute(`runActionNo`)!==null&&(this.runActionName=h[Number(o[0].getAttribute(`runActionNo`))]),o[0].getAttribute(`minWalkSpeed`)!==null&&(this.minWalkSpeed=Number(o[0].getAttribute(`minWalkSpeed`))),o[0].getAttribute(`minRunSpeed`)!==null&&(this.minRunSpeed=Number(o[0].getAttribute(`minRunSpeed`)))),v&&this.syncInit(v,_),this}};function Bt(e,t){if(ce(e)){let n=t[e.name];n&&(e.add(n),delete t[e.name])}e.children&&e.children.forEach(e=>{Bt(e,t)})}var Vt=class{scene;objects;physicsWorld=null;physicsDt=1/60;collisionListener;rapierLines;constructor(){this.scene=new c.Scene,this.objects=[],H.isInitialized&&(this.physicsWorld=H.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 Me))for(let t of Object.values(e.actions))t.motion.addOneselfToPhysics(this.physicsWorld);e instanceof zt&&e.currentAction instanceof Rt&&(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);{let 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 Me))for(let t of Object.values(e.actions))t.motion.removeOneselfFromPhysics(this.physicsWorld);e instanceof Me&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=null,this.scene.environment=null),e.currentAction.fog&&(this.scene.fog=null))}removeAll(){[...this.objects].forEach(e=>{this.remove(e)})}setCollisionListener(e){this.collisionListener=e}update(e){if(this.physicsWorld){this.physicsWorld.update(e);let t=this.physicsWorld.getCollisions();if(t.forEach(e=>{e.objectA.handleCollision(e.objectB,e.started,e.partOfA,e.partOfB),e.objectB.handleCollision(e.objectA,e.started,e.partOfB,e.partOfA)}),this.collisionListener&&t.length>0&&this.collisionListener(t),this.rapierLines&&this.physicsWorld instanceof z){let{vertices:e,colors:t}=this.physicsWorld.world.debugRender();this.rapierLines.geometry.setAttribute(`position`,new c.BufferAttribute(e,3)),this.rapierLines.geometry.setAttribute(`color`,new c.BufferAttribute(t,4))}}for(let t of this.objects)t.update(e)}setPhysicsDebugMode(e){e?(this.rapierLines=new c.LineSegments(new c.BufferGeometry,new c.LineBasicMaterial({vertexColors:!0})),this.scene.add(this.rapierLines)):this.rapierLines&&=(this.scene.remove(this.rapierLines),void 0)}},Ht=class extends W{view;setView(e){this.view=e}lookAt(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuat(a)}lookAtNow(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuatNow(a)}},Ut=class{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){}},Wt=class extends Ut{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 u(e,t,n):this.target=new u(e)}update(e){if(!this.view)return;let t=this.view.camera.getPosition(),n=this.view.camera.getQuat();if(this.isLeftDown&&!this.ctrlKey){let e=.01,r=Math.sin(-this.dx*e),i=Math.cos(-this.dx*e),a=Math.sin(-this.dy*e),o=Math.cos(-this.dy*e),s=new u(1,0,0).apply(n),c=new u(0,1,0).apply(n),l=new d(s.x*a,s.y*a,s.z*a,o),f=new d(c.x*r,c.y*r,c.z*r,i),m=new u(t);m.sub(this.target),m.apply(l),m.apply(f),m.add(this.target),t.set(m);let h=p(t,this.target,new u(0,1,0));h.mul(new d(0,1,0,0)),n.set(h)}else if(this.isLeftDown){U.v0.set(this.target),U.v0.sub(t);let e=.005*U.v0.length(),r=new u(1,0,0).apply(n).scale(-this.dx*e),i=new u(0,1,0).apply(n).scale(this.dy*e);t.add(r),t.add(i),this.target.add(r),this.target.add(i)}if(this.deltaY!==0){let e=new u(this.target).sub(t);this.deltaY>0?e.scale(.05):this.deltaY<0&&e.scale(-.05),t.add(e)}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}},Gt={speed:.1,angSpeed:.01},Kt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextLoc;_avatarNextQuat;_velY;constructor(e,t){super(),this.options={...Gt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextLoc=new u,this._avatarNextQuat=new d,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){let t=this._avatar,n=new v;n.set(t);let r=t.getUnitVecZ().scale(this.options.speed),i=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(i),this._keyS&&this._avatarNextLoc.sub(r),this._keyD&&this._avatarNextLoc.sub(i),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&&(U.v0.set(0,this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),this._keyRight&&(U.v0.set(0,-this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),t.setPosition(this._avatarNextLoc),t.setQuat(this._avatarNextQuat)}},qt={speed:5,angSpeed:.3,jumpSpeed:15},Jt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextVel;_avatarNextAngVel;_velY;constructor(e,t){super(),this.options={...qt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextVel=new u,this._avatarNextAngVel=new u,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){let t=this._avatar;new v().set(t);let n=t.getUnitVecZ().scale(this.options.speed),r=t.getUnitVecX().scale(this.options.speed);this._avatarNextVel.set(0,0,0),this._avatarNextAngVel.set(0,0,0),this._keyW&&this._avatarNextVel.add(n),this._keyA&&this._avatarNextVel.add(r),this._keyS&&this._avatarNextVel.sub(n),this._keyD&&this._avatarNextVel.sub(r),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)}},Yt=class{scene;camera;controller;constructor(e){e.setView(this),this.camera=e,this.camera.setAudioListener(Pt.listener),this.camera.setPosition(0,0,3),this.scene=new Vt,this.scene.scene.add(this.camera.object3D),this.controller=new Wt(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);let 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 Error(`BaseViewはworldToScreen()は実装していません`)}screenToWorld(e,t,n){throw Error(`BaseViewはscreenToWorld()は実装していません`)}cameraToScreen(e){throw Error(`BaseViewはcameraToScreen()は実装していません`)}screenToCamera(e,t,n){throw Error(`BaseViewはscreenToCamera()は実装していません`)}async waitForRender(){throw Error(`BaseViewはwaitForRender()は実装していません`)}setShadowMap(e){throw Error(`BaseViewはsetShadowMap()は実装していません`)}},Xt=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e,this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.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 c.Object3D}setAudioListener(e){this.camera.add(e)}getHeadLight(){return this.headLight}setAspect(e){F(this.camera)&&(this.camera.aspect=e,this.camera.updateProjectionMatrix())}setHeadLight(e){e?this.headLight.intensity=1:this.headLight.intensity=0}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Zt=class extends c.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 c.Vector2(.5,.5),this.addEventListener(`removed`,function(){this.traverse(function(e){e.element&&e.element instanceof e.element.ownerDocument.defaultView.Element&&e.element.parentNode!==null&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}},Qt=new c.Vector3,$t=new c.Matrix4,en=new c.Matrix4,tn=new c.Vector3,nn=new c.Vector3,rn=class{constructor(e={}){let t=this,n,r,i,a,o={objects:new WeakMap},s=e.element===void 0?document.createElement(`div`):e.element;s.style.overflow=`hidden`,this.domElement=s,this.sortObjects=!0,this.getSize=function(){return{width:n,height:r}},this.render=function(e,t){e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),$t.copy(t.matrixWorldInverse),en.multiplyMatrices(t.projectionMatrix,$t),l(e,e,t),this.sortObjects&&f(e)},this.setSize=function(e,t){n=e,r=t,i=n/2,a=r/2,s.style.width=e+`px`,s.style.height=t+`px`};function c(e){e.isCSS2DObject&&(e.element.style.display=`none`);for(let t=0,n=e.children.length;t<n;t++)c(e.children[t])}function l(e,n,r){if(e.visible===!1){c(e);return}if(e.isCSS2DObject){Qt.setFromMatrixPosition(e.matrixWorld),Qt.applyMatrix4(en);let c=Qt.z>=-1&&Qt.z<=1&&e.layers.test(r.layers)===!0,l=e.element;l.style.display=c===!0?``:`none`,c===!0&&(e.onBeforeRender(t,n,r),l.style.transform=`translate(`+-100*e.center.x+`%,`+-100*e.center.y+`%)translate(`+(Qt.x*i+i)+`px,`+(-Qt.y*a+a)+`px)`,l.parentNode!==s&&s.appendChild(l),e.onAfterRender(t,n,r));let d={distanceToCameraSquared:u(r,e)};o.objects.set(e,d)}for(let t=0,i=e.children.length;t<i;t++)l(e.children[t],n,r)}function u(e,t){return tn.setFromMatrixPosition(e.matrixWorld),nn.setFromMatrixPosition(t.matrixWorld),tn.distanceToSquared(nn)}function d(e){let t=[];return e.traverseVisible(function(e){e.isCSS2DObject&&t.push(e)}),t}function f(e){let t=d(e).sort(function(e,t){return e.renderOrder===t.renderOrder?o.objects.get(e).distanceToCameraSquared-o.objects.get(t).distanceToCameraSquared:t.renderOrder-e.renderOrder}),n=t.length;for(let e=0,r=t.length;e<r;e++)t[e].element.style.zIndex=n-e}}};function an(e,t){if(t===c.TrianglesDrawMode)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===c.TriangleFanDrawMode||t===c.TriangleStripDrawMode){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===c.TriangleFanDrawMode)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function on(e){let t=new Map,n=new Map,r=e.clone();return sn(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function sn(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)sn(e.children[r],t.children[r],n)}var cn=class extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new pn(e)}),this.register(function(e){return new mn(e)}),this.register(function(e){return new Cn(e)}),this.register(function(e){return new wn(e)}),this.register(function(e){return new Tn(e)}),this.register(function(e){return new gn(e)}),this.register(function(e){return new _n(e)}),this.register(function(e){return new vn(e)}),this.register(function(e){return new yn(e)}),this.register(function(e){return new fn(e)}),this.register(function(e){return new bn(e)}),this.register(function(e){return new hn(e)}),this.register(function(e){return new Sn(e)}),this.register(function(e){return new xn(e)}),this.register(function(e){return new un(e)}),this.register(function(e){return new En(e,Z.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new En(e,Z.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Dn(e)})}load(e,t,n,r){let i=this,a;if(this.resourcePath!==``)a=this.resourcePath;else if(this.path!==``){let t=c.LoaderUtils.extractUrlBase(e);a=c.LoaderUtils.resolveURL(t,this.path)}else a=c.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){r?r(t):console.error(t),i.manager.itemError(e),i.manager.itemEnd(e)},s=new c.FileLoader(this.manager);s.setPath(this.path),s.setResponseType(`arraybuffer`),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(n){try{i.parse(n,a,function(n){t(n),i.manager.itemEnd(e)},o)}catch(e){o(e)}},n,o)}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 i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===On){try{a[Z.KHR_BINARY_GLTF]=new jn(e)}catch(e){r&&r(e);return}i=JSON.parse(a[Z.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new nr(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case Z.KHR_MATERIALS_UNLIT:a[t]=new dn;break;case Z.KHR_DRACO_MESH_COMPRESSION:a[t]=new Mn(i,this.dracoLoader);break;case Z.KHR_TEXTURE_TRANSFORM:a[t]=new Nn;break;case Z.KHR_MESH_QUANTIZATION:a[t]=new Pn;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function ln(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function X(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var Z={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`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},un=class{constructor(e){this.parser=e,this.name=Z.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new c.Color(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],c.LinearSRGBColorSpace);let l=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new c.DirectionalLight(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new c.PointLight(s),o.distance=l;break;case`spot`:o=new c.SpotLight(s),o.distance=l,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),Jn(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},dn=class{constructor(){this.name=Z.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){let r=[];e.color=new c.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],c.LinearSRGBColorSpace),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,c.SRGBColorSpace))}return Promise.all(r)}},fn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},pn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(e,e)}return Promise.all(r)}},mn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_DISPERSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},hn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},gn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SHEEN}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,c.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},_n=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},vn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_VOLUME}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),Promise.all(r)}},yn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IOR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},bn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SPECULAR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,c.SRGBColorSpace)),Promise.all(r)}},xn=class{constructor(e){this.parser=e,this.name=Z.EXT_MATERIALS_BUMP}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},Sn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Cn=class{constructor(e){this.parser=e,this.name=Z.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},wn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},Tn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},En=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Dn=class{constructor(e){this.name=Z.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new c.Matrix4,n=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,r);for(let e=0;e<r;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&a.fromBufferAttribute(o.ROTATION,e),o.SCALE&&s.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,a,s));for(let t in o)if(t===`_COLOR_0`){let e=o[t];l.instanceColor=new c.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else t!==`TRANSLATION`&&t!==`ROTATION`&&t!==`SCALE`&&e.geometry.setAttribute(t,o[t]);c.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}},On=`glTF`,kn=12,An={JSON:1313821514,BIN:5130562},jn=class{constructor(e){this.name=Z.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,kn),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!==On)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-kn,i=new DataView(e,kn),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===An.JSON){let r=new Uint8Array(e,kn+a,t);this.content=n.decode(r)}else if(r===An.BIN){let n=kn+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Mn=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=Z.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(let e in a){let t=Hn[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=Hn[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];l[r]=Rn[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,l,c.LinearSRGBColorSpace,n)})})}},Nn=class{constructor(){this.name=Z.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=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)}},Pn=class{constructor(){this.name=Z.KHR_MESH_QUANTIZATION}},Fn=class extends c.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},In=new c.Quaternion,Ln=class extends Fn{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return In.fromArray(i).normalize().toArray(i),i}},Q={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Rn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zn={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Bn={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},Vn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hn={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`},Un={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},Wn={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Gn={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function Kn(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),e.DefaultMaterial}function qn(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function Jn(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function Yn(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function Xn(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function Zn(e){let t,n=e.extensions&&e.extensions[Z.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Qn(n.attributes):e.indices+`:`+Qn(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Qn(e.targets[n]);return t}function Qn(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function $n(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function er(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var tr=new c.Matrix4,nr=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ln,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,i=!1,a=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.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){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return qn(i,a,r),Jn(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.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;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[Z.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(c.LoaderUtils.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=Vn[r.type],t=Rn[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new c.BufferAttribute(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=Vn[r.type],o=Rn[r.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,u=r.byteOffset||0,d=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,f=r.normalized===!0,p,m;if(d&&d!==l){let e=Math.floor(u/d),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,l=t.cache.get(n);l||(p=new o(i,e*d,r.count*d/s),l=new c.InterleavedBuffer(p,d/s),t.cache.add(n,l)),m=new c.InterleavedBufferAttribute(l,a,u%d/s,f)}else p=i===null?new o(r.count*a):new o(i,u,r.count*a),m=new c.BufferAttribute(p,a,f);if(r.sparse!==void 0){let t=Vn.SCALAR,n=Rn[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new n(e[1],s,r.sparse.count*t),d=new o(e[2],l,r.sparse.count*a);i!==null&&(m=new c.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,t=u.length;e<t;e++){let t=u[e];if(m.setX(t,d[e*a]),a>=2&&m.setY(t,d[e*a+1]),a>=3&&m.setZ(t,d[e*a+2]),a>=4&&m.setW(t,d[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}m.normalized=f}return m})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=zn[n.magFilter]||c.LinearFilter,t.minFilter=zn[n.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=Bn[n.wrapS]||c.RepeatWrapping,t.wrapT=Bn[n.wrapT]||c.RepeatWrapping,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==c.NearestFilter&&t.minFilter!==c.LinearFilter,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,l=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let u=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new c.Texture(e);t.needsUpdate=!0,n(t)}),t.load(c.LoaderUtils.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return l===!0&&o.revokeObjectURL(s),Jn(e,a),e.userData.mimeType=a.mimeType||er(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[Z.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[Z.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[Z.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},l=[];if(s[Z.KHR_MATERIALS_UNLIT]){let e=r[Z.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),l.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new c.Color(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace),o.opacity=e[3]}n.baseColorTexture!==void 0&&l.push(t.assignTexture(o,`map`,n.baseColorTexture,c.SRGBColorSpace)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),l.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=c.DoubleSide);let u=i.alphaMode||Gn.OPAQUE;if(u===Gn.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===Gn.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new c.Vector2(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==c.MeshBasicMaterial){let e=i.emissiveFactor;o.emissive=new c.Color().setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&a!==c.MeshBasicMaterial&&l.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,c.SRGBColorSpace)),Promise.all(l).then(function(){let n=new a(o);return i.name&&(n.name=i.name),Jn(n,i),t.associations.set(n,{materials:e}),i.extensions&&qn(r,n,i),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[Z.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return ir(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=Zn(o),l=r[s];if(l)a.push(l.promise);else{let e;e=o.extensions&&o.extensions[Z.KHR_DRACO_MESH_COMPRESSION]?i(o):ir(new c.BufferGeometry,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,n=this.json,r=this.extensions,i=n.meshes[e],a=i.primitives,o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e].material===void 0?Kn(this.cache):this.getDependency(`material`,a[e].material);o.push(t)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(n){let o=n.slice(0,n.length-1),s=n[n.length-1],l=[];for(let n=0,u=s.length;n<u;n++){let u=s[n],d=a[n],f,p=o[n];if(d.mode===Q.TRIANGLES||d.mode===Q.TRIANGLE_STRIP||d.mode===Q.TRIANGLE_FAN||d.mode===void 0)f=i.isSkinnedMesh===!0?new c.SkinnedMesh(u,p):new c.Mesh(u,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===Q.TRIANGLE_STRIP?f.geometry=an(f.geometry,c.TriangleStripDrawMode):d.mode===Q.TRIANGLE_FAN&&(f.geometry=an(f.geometry,c.TriangleFanDrawMode));else if(d.mode===Q.LINES)f=new c.LineSegments(u,p);else if(d.mode===Q.LINE_STRIP)f=new c.Line(u,p);else if(d.mode===Q.LINE_LOOP)f=new c.LineLoop(u,p);else if(d.mode===Q.POINTS)f=new c.Points(u,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&Xn(f,i),f.name=t.createUniqueName(i.name||`mesh_`+e),Jn(f,i),d.extensions&&qn(r,f,d),t.assignFinalMaterial(f),l.push(f)}for(let n=0,r=l.length;n<r;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(l.length===1)return i.extensions&&qn(r,l[0],i),l[0];let u=new c.Group;i.extensions&&qn(r,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,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 c.PerspectiveCamera(c.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new c.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),Jn(t,n),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],n=[];for(let e=0,r=t.joints.length;e<r;e++)n.push(this._loadNodeShallow(t.joints[e]));return t.inverseBindMatrices===void 0?n.push(null):n.push(this.getDependency(`accessor`,t.inverseBindMatrices)),Promise.all(n).then(function(e){let n=e.pop(),r=e,i=[],a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e];if(o){i.push(o);let t=new c.Matrix4;n!==null&&t.fromArray(n.array,e*16),a.push(t)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,t.joints[e])}return new c.Skeleton(i,a)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],l=[],u=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,c=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,c)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),l.push(n),u.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],c=o[e],d=s[e],f=l[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,c,d,f);if(p)for(let e=0;e<p.length;e++)u.push(p[e])}let d=new c.AnimationClip(i,void 0,u);return Jn(d,r),d})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,r=t.nodes[e],i=n._loadNodeShallow(e),a=[],o=r.children||[];for(let e=0,t=o.length;e<t;e++)a.push(n.getDependency(`node`,o[e]));let s=r.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,r.skin);return Promise.all([i,Promise.all(a),s]).then(function(e){let t=e[0],n=e[1],r=e[2];r!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,tr)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,r=n[0];t.pivot=new c.Vector3().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],r.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){let t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let i=t.nodes[e],a=i.name?r.createUniqueName(i.name):``,o=[],s=r._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return s&&o.push(s),i.camera!==void 0&&o.push(r.getDependency(`camera`,i.camera).then(function(e){return r._getNodeRef(r.cameraCache,i.camera,e)})),r._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if(o=i.isBone===!0?new c.Bone:t.length>1?new c.Group:t.length===1?t[0]:new c.Object3D,o!==t[0])for(let e=0,n=t.length;e<n;e++)o.add(t[e]);if(i.name&&(o.userData.name=i.name,o.name=a),Jn(o,i),i.extensions&&qn(n,o,i),i.matrix!==void 0){let e=new c.Matrix4;e.fromArray(i.matrix),o.applyMatrix4(e)}else i.translation!==void 0&&o.position.fromArray(i.translation),i.rotation!==void 0&&o.quaternion.fromArray(i.rotation),i.scale!==void 0&&o.scale.fromArray(i.scale);if(!r.associations.has(o))r.associations.set(o,{});else if(i.mesh!==void 0&&r.meshCache.refs[i.mesh]>1){let e=r.associations.get(o);r.associations.set(o,{...e})}return r.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new c.Group;n.name&&(i.name=r.createUniqueName(n.name)),Jn(i,n),n.extensions&&qn(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(on(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function l(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}Un[i.path]===Un.weights?(l(e),e.isGroup&&e.children.forEach(l)):s.push(o);let u;switch(Un[i.path]){case Un.weights:u=c.NumberKeyframeTrack;break;case Un.rotation:u=c.QuaternionKeyframeTrack;break;case Un.translation:case Un.scale:u=c.VectorKeyframeTrack;break;default:switch(n.itemSize){case 1:u=c.NumberKeyframeTrack;break;default:u=c.VectorKeyframeTrack;break}break}let d=r.interpolation===void 0?c.InterpolateLinear:Wn[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new u(s[e]+`.`+Un[i.path],t.array,f,d);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=$n(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof c.QuaternionKeyframeTrack?Ln:Fn)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function rr(e,t,n){let r=t.attributes,i=new c.Box3;if(r.POSITION!==void 0){let e=n.json.accessors[r.POSITION],t=e.min,a=e.max;if(t!==void 0&&a!==void 0){if(i.set(new c.Vector3(t[0],t[1],t[2]),new c.Vector3(a[0],a[1],a[2])),e.normalized){let t=$n(Rn[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let a=t.targets;if(a!==void 0){let e=new c.Vector3,t=new c.Vector3;for(let r=0,i=a.length;r<i;r++){let i=a[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=$n(Rn[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}i.expandByVector(e)}e.boundingBox=i;let o=new c.Sphere;i.getCenter(o.center),o.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=o}function ir(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=Hn[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return c.ColorManagement.workingColorSpace!==c.LinearSRGBColorSpace&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${c.ColorManagement.workingColorSpace}" not supported.`),Jn(e,t),rr(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:Yn(e,t.targets,n)})}var ar=new WeakMap,or=class extends c.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){let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,c.SRGBColorSpace,n).catch(n)}decodeDracoFile(e,t,n,r,i=c.LinearSRGBColorSpace,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ar.has(e)){let t=ar.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ar.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let{name:r,array:i,itemSize:a,stride:o,vertexColorSpace:s}=e.attributes[n],l;l=a===o?new c.BufferAttribute(i,a):new c.InterleavedBufferAttribute(new c.InterleavedBuffer(i,o),a,0),r===`color`&&(this._assignVertexColorSpace(l,s),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==c.SRGBColorSpace)return;let n=new c.Color;for(let t=0,r=e.count;t<r;t++)n.fromBufferAttribute(e,t),c.ColorManagement.colorSpaceToWorking(n,c.SRGBColorSpace),e.setXYZ(t,n.r,n.g,n.b)}_loadLibrary(e,t){let n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((t,r)=>{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=sr.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
141
141
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:`init`,decoderConfig:this.decoderConfig}),e.onmessage=function(t){let n=t.data;switch(n.type){case`decode`:e._callbacks[n.id].resolve(n);break;case`error`:e._callbacks[n.id].reject(n);break;default:console.error(`THREE.DRACOLoader: Unexpected message, "`+n.type+`"`)}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let 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 sr(){let e,t;onmessage=function(r){let i=r.data;switch(i.type){case`init`:e=i.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case`decode`:let r=i.buffer,a=i.taskConfig;t.then(e=>{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=n.num_points(),c=o.num_components(),l=a(e,i),u=c*i.BYTES_PER_ELEMENT,d=Math.ceil(u/4)*4,f=d/i.BYTES_PER_ELEMENT,p=s*u,m=s*d,h=e._malloc(p);t.GetAttributeDataArrayForAllPoints(n,o,l,p,h);let g=new i(e.HEAPF32.buffer,h,p/i.BYTES_PER_ELEMENT),_;if(u===d)_=g.slice();else{_=new i(m/i.BYTES_PER_ELEMENT);let e=0;for(let t=0,n=g.length;t<n;t++){for(let n=0;n<c;n++)_[e+n]=g[t*c+n];e+=f}}return e._free(h),{name:r,count:s,itemSize:c,array:_,stride:f}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}var cr=class{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){let 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){let n=this.workersResolve[e];if(n&&n(t),this.queue.length){let{resolve:t,msg:n,transfer:r}=this.queue.shift();this.workersResolve[e]=t,this.workers[e].postMessage(n,r)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(n=>{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<<r,this.workersResolve[r]=n,this.workers[r].postMessage(e,t))})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}},lr=1000054e3,ur=1000054001,dr=1000054004,fr=1000054005,pr=1000066e3,mr=1000066004,hr=class{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(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let 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){let n=this._offset,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)}};new Uint8Array([0]);var $=[171,75,84,88,32,50,48,187,13,10,26,10];function gr(e){return new TextDecoder().decode(e)}function _r(e){let t=new Uint8Array(e.buffer,e.byteOffset,$.length);if(t[0]!==$[0]||t[1]!==$[1]||t[2]!==$[2]||t[3]!==$[3]||t[4]!==$[4]||t[5]!==$[5]||t[6]!==$[6]||t[7]!==$[7]||t[8]!==$[8]||t[9]!==$[9]||t[10]!==$[10]||t[11]!==$[11])throw Error(`Missing KTX 2.0 identifier.`);let n={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},r=17*Uint32Array.BYTES_PER_ELEMENT,i=new hr(e,$.length,r,!0);n.vkFormat=i._nextUint32(),n.typeSize=i._nextUint32(),n.pixelWidth=i._nextUint32(),n.pixelHeight=i._nextUint32(),n.pixelDepth=i._nextUint32(),n.layerCount=i._nextUint32(),n.faceCount=i._nextUint32(),n.levelCount=i._nextUint32(),n.supercompressionScheme=i._nextUint32();let a=i._nextUint32(),o=i._nextUint32(),s=i._nextUint32(),c=i._nextUint32(),l=i._nextUint64(),u=i._nextUint64(),d=3*Math.max(n.levelCount,1)*8,f=new hr(e,$.length+r,d,!0);for(let t=0,r=Math.max(n.levelCount,1);t<r;t++)n.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+f._nextUint64(),f._nextUint64()),uncompressedByteLength:f._nextUint64()});let p=new hr(e,a,o,!0);p._skip(4);let m=p._nextUint16(),h=p._nextUint16(),g=p._nextUint16(),_=p._nextUint16(),v={vendorId:m,descriptorType:h,versionNumber:g,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:[]},y=(_/4-6)/4;for(let e=0;e<y;e++){let t={bitOffset:p._nextUint16(),bitLength:p._nextUint8(),channelType:p._nextUint8(),samplePosition:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&t.channelType?(t.sampleLower=p._nextInt32(),t.sampleUpper=p._nextInt32()):(t.sampleLower=p._nextUint32(),t.sampleUpper=p._nextUint32()),v.samples[e]=t}n.dataFormatDescriptor.length=0,n.dataFormatDescriptor.push(v);let b=new hr(e,s,c,!0);for(;b._offset<c;){let e=b._nextUint32(),t=b._scan(e),r=gr(t);if(n.keyValue[r]=b._nextUint8Array(e-t.byteLength-1),r.match(/^ktx/i)){let e=gr(n.keyValue[r]);n.keyValue[r]=e.substring(0,e.lastIndexOf(`\0`))}b._skip(e%4?4-e%4:0)}if(u<=0)return n;let x=new hr(e,l,u,!0),S=x._nextUint16(),C=x._nextUint16(),w=x._nextUint32(),T=x._nextUint32(),E=x._nextUint32(),D=x._nextUint32(),O=[];for(let e=0,t=Math.max(n.levelCount,1);e<t;e++)O.push({imageFlags:x._nextUint32(),rgbSliceByteOffset:x._nextUint32(),rgbSliceByteLength:x._nextUint32(),alphaSliceByteOffset:x._nextUint32(),alphaSliceByteLength:x._nextUint32()});let k=l+x._offset,A=k+w,j=A+T,M=j+E;return n.globalData={endpointCount:S,selectorCount:C,imageDescs:O,endpointsData:new Uint8Array(e.buffer,e.byteOffset+k,w),selectorsData:new Uint8Array(e.buffer,e.byteOffset+A,T),tablesData:new Uint8Array(e.buffer,e.byteOffset+j,E),extendedData:new Uint8Array(e.buffer,e.byteOffset+M,D)},n}var vr,yr,br,xr={env:{emscripten_notify_memory_growth:function(e){br=new Uint8Array(yr.exports.memory.buffer)}}},Sr=class{init(){return vr||(vr=typeof fetch<`u`?fetch(`data:application/wasm;base64,`+Cr).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,xr)).then(this._init):WebAssembly.instantiate(Buffer.from(Cr,`base64`),xr).then(this._init),vr)}_init(e){yr=e.instance,xr.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!yr)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=yr.exports.malloc(n);br.set(e,r),t||=Number(yr.exports.ZSTD_findDecompressedSize(r,n));let i=yr.exports.malloc(t),a=yr.exports.ZSTD_decompress(i,t,r,n),o=br.slice(i,i+a);return yr.exports.free(r),yr.exports.free(i),o}},Cr=`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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/QQ8hAiABIABJBEAgAUEE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`,wr=`display-p3`,Tr=`display-p3-linear`;({...c.ColorManagement.spaces[c.SRGBColorSpace]}),c.SRGBColorSpace;var Er=new WeakMap,Dr=0,Or,kr=class e extends c.Loader{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new cr,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!==void 0&&navigator.userAgent!==void 0&&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){let t=new c.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new c.FileLoader(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
142
142
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),Dr>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),Dr++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setRequestHeader(this.requestHeader),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Er.has(e))return Er.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:l,dfdFlags:u}}=e;if(n===`error`)return Promise.reject(r);let d;if(t.faceCount===6)d=new c.CompressedCubeTexture(i,s,l);else{let e=i[0].mipmaps;d=t.layerCount>1?new c.CompressedArrayTexture(e,a,o,t.layerCount,s,l):new c.CompressedTexture(e,a,o,s,l)}return d.minFilter=i[0].mipmaps.length===1?c.LinearFilter:c.LinearMipmapLinearFilter,d.magFilter=c.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=Pr(t),d.premultiplyAlpha=!!(u&1),d}async _createTexture(e,t={}){let n=_r(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return Nr(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return Er.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Dr--}};kr.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},kr.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},kr.EngineFormat={RGBAFormat:c.RGBAFormat,RGBA_ASTC_4x4_Format:c.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:c.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:c.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:c.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:c.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:c.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:c.RGB_ETC1_Format,RGB_ETC2_Format:c.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:c.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:c.RGBA_S3TC_DXT1_Format},kr.EngineType={UnsignedByteType:c.UnsignedByteType,HalfFloatType:c.HalfFloatType,FloatType:c.FloatType},kr.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e<f;e++){let n=[];for(let a=0;a<u;a++){let o=[],s,c;for(let n=0;n<l;n++){let l=t.getImageLevelInfo(a,n,e);e===0&&a===0&&n===0&&(l.origWidth%4!=0||l.origHeight%4!=0)&&console.warn(`THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.`),u>1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityETC1S-t.priorityETC1S),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o<a.length;o++){let s=a[o];if(!(s.if&&!e[s.if])&&s.basisFormat.includes(t)&&!(i&&s.transcoderFormat.length<2)&&!(s.needsPowerOfTwo&&!(f(n)&&f(r))))return{transcoderFormat:s.transcoderFormat[+!!i],engineFormat:s.engineFormat[+!!i],engineType:s.engineType[0]}}throw Error(`THREE.KTX2Loader: Failed to identify transcoding target.`)}function f(e){return e<=2?!0:(e&e-1)==0&&e!==0}function p(e){if(e.length===1)return e[0];let t=0;for(let n=0;n<e.length;n++){let r=e[n];t+=r.byteLength}let n=new Uint8Array(t),r=0;for(let t=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.byteLength}return n}};var Ar=new Set([c.RGBAFormat,c.RGBFormat,c.RGFormat,c.RedFormat]),jr={109:c.RGBAFormat,103:c.RGFormat,100:c.RedFormat,97:c.RGBAFormat,83:c.RGFormat,76:c.RedFormat,91:c.RGBAFormat,43:c.RGBAFormat,37:c.RGBAFormat,22:c.RGFormat,16:c.RGFormat,15:c.RedFormat,9:c.RedFormat,123:c.RGBFormat,122:c.RGBFormat,152:c.RGBA_ETC2_EAC_Format,148:c.RGB_ETC2_Format,153:c.R11_EAC_Format,154:c.SIGNED_R11_EAC_Format,155:c.RG11_EAC_Format,156:c.SIGNED_RG11_EAC_Format,[pr]:c.RGBA_ASTC_4x4_Format,158:c.RGBA_ASTC_4x4_Format,157:c.RGBA_ASTC_4x4_Format,[mr]:c.RGBA_ASTC_6x6_Format,166:c.RGBA_ASTC_6x6_Format,165:c.RGBA_ASTC_6x6_Format,134:c.RGBA_S3TC_DXT1_Format,133:c.RGBA_S3TC_DXT1_Format,132:c.RGB_S3TC_DXT1_Format,131:c.RGB_S3TC_DXT1_Format,138:c.RGBA_S3TC_DXT5_Format,137:c.RGBA_S3TC_DXT5_Format,140:c.SIGNED_RED_RGTC1_Format,139:c.RED_RGTC1_Format,142:c.SIGNED_RED_GREEN_RGTC2_Format,141:c.RED_GREEN_RGTC2_Format,146:c.RGBA_BPTC_Format,145:c.RGBA_BPTC_Format,[fr]:c.RGBA_PVRTC_4BPPV1_Format,[ur]:c.RGBA_PVRTC_4BPPV1_Format,[dr]:c.RGBA_PVRTC_2BPPV1_Format,[lr]:c.RGBA_PVRTC_2BPPV1_Format},Mr={109:c.FloatType,103:c.FloatType,100:c.FloatType,97:c.HalfFloatType,83:c.HalfFloatType,76:c.HalfFloatType,91:c.UnsignedShortType,43:c.UnsignedByteType,37:c.UnsignedByteType,22:c.UnsignedByteType,16:c.UnsignedByteType,15:c.UnsignedByteType,9:c.UnsignedByteType,123:c.UnsignedInt5999Type,122:c.UnsignedInt101111Type,152:c.UnsignedByteType,148:c.UnsignedByteType,153:c.UnsignedByteType,154:c.UnsignedByteType,155:c.UnsignedByteType,156:c.UnsignedByteType,[pr]:c.HalfFloatType,158:c.UnsignedByteType,157:c.UnsignedByteType,[mr]:c.HalfFloatType,166:c.UnsignedByteType,165:c.UnsignedByteType,134:c.UnsignedByteType,133:c.UnsignedByteType,132:c.UnsignedByteType,131:c.UnsignedByteType,138:c.UnsignedByteType,137:c.UnsignedByteType,140:c.UnsignedByteType,139:c.UnsignedByteType,142:c.UnsignedByteType,141:c.UnsignedByteType,146:c.UnsignedByteType,145:c.UnsignedByteType,[fr]:c.UnsignedByteType,[ur]:c.UnsignedByteType,[dr]:c.UnsignedByteType,[lr]:c.UnsignedByteType};async function Nr(e){let{vkFormat:t}=e;if(jr[t]===void 0)throw Error(`THREE.KTX2Loader: Unsupported vkFormat: `+t);Mr[t]===void 0&&console.warn(`THREE.KTX2Loader: Missing ".type" for vkFormat: `+t);let n;e.supercompressionScheme===2&&(Or||=new Promise(async e=>{let t=new Sr;await t.init(),e(t)}),n=await Or);let r=[];for(let i=0;i<e.levels.length;i++){let a=Math.max(1,e.pixelWidth>>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,l=e.levels[i],u;if(e.supercompressionScheme===0)u=l.levelData;else if(e.supercompressionScheme===2)u=n.decode(l.levelData,l.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let d;d=Mr[t]===c.FloatType?new Float32Array(u.buffer,u.byteOffset,u.byteLength/Float32Array.BYTES_PER_ELEMENT):Mr[t]===c.HalfFloatType||Mr[t]===c.UnsignedShortType?new Uint16Array(u.buffer,u.byteOffset,u.byteLength/Uint16Array.BYTES_PER_ELEMENT):Mr[t]===c.UnsignedInt5999Type||Mr[t]===c.UnsignedInt101111Type?new Uint32Array(u.buffer,u.byteOffset,u.byteLength/Uint32Array.BYTES_PER_ELEMENT):u,r.push({data:d,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(Ar.has(jr[t]))a=e.pixelDepth===0?new c.DataTexture(r[0].data,e.pixelWidth,e.pixelHeight):new c.Data3DTexture(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?c.NearestMipmapNearestFilter:c.NearestFilter,a.magFilter=c.NearestFilter,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new c.CompressedTexture(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?c.LinearMipmapLinearFilter:c.LinearFilter,a.magFilter=c.LinearFilter}return a.mipmaps=r,a.type=Mr[t],a.format=jr[t],a.colorSpace=Pr(e),a.needsUpdate=!0,Promise.resolve(a)}function Pr(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?c.SRGBColorSpace:c.LinearSRGBColorSpace:t.colorPrimaries===10?t.transferFunction===2?wr:Tr:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),c.NoColorSpace)}var Fr=(function(){var e=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk: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:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb`,t=`b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb`,n=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]),r=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 i=WebAssembly.validate(n)?s(t):s(e),a,o=WebAssembly.instantiate(i,{}).then(function(e){a=e.instance,a.exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=i>96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n<e.length;++n)t[a++]=t[n]<60?r[t[n]]:(t[n]-60)*64+t[++n];return t.buffer.slice(0,a)}function c(e,t,n,r,i,a,o){var s=e.exports.sbrk,c=r+3&-4,l=s(c*i),u=s(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,u);var f=t(l,r,i,u,a.length);if(f==0&&o&&o(l,c,i),n.set(d.subarray(l,l+r*i)),s(l-s(0)),f!=0)throw Error(`Malformed buffer data: `+f)}var l={NONE:``,OCTAHEDRAL:`meshopt_decodeFilterOct`,QUATERNION:`meshopt_decodeFilterQuat`,EXPONENTIAL:`meshopt_decodeFilterExp`,COLOR:`meshopt_decodeFilterColor`},u={ATTRIBUTES:`meshopt_decodeVertexBuffer`,TRIANGLES:`meshopt_decodeIndexBuffer`,INDICES:`meshopt_decodeIndexSequence`},d=[],f=0;function p(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var n=e.data;t.pending-=n.count,t.requests[n.id][n.action](n.value),delete t.requests[n.id]},t}function m(e){for(var t=`self.ready = WebAssembly.instantiate(new Uint8Array([`+new Uint8Array(i)+`]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = `+g.name+`;`+c.toString()+g.toString(),n=new Blob([t],{type:`text/javascript`}),r=URL.createObjectURL(n),a=d.length;a<e;++a)d[a]=p(r);for(var a=e;a<d.length;++a)d[a].object.postMessage({});d.length=e,URL.revokeObjectURL(r)}function h(e,t,n,r,i){for(var a=d[0],o=1;o<d.length;++o)d[o].pending<a.pending&&(a=d[o]);return new Promise(function(o,s){var c=new Uint8Array(n),l=++f;a.pending+=e,a.requests[l]={resolve:o,reject:s},a.object.postMessage({id:l,count:e,size:t,source:c,mode:r,filter:i},[c.buffer])})}function g(e){var t=e.data;self.ready.then(function(e){if(!t.id)return self.close();try{var n=new Uint8Array(t.count*t.size);c(e,e.exports[t.mode],n,t.count,t.size,t.source,e.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:`resolve`,value:n},[n.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:`reject`,value:e})}})}return{ready:o,supported:!0,useWorkers:function(e){m(e)},decodeVertexBuffer:function(e,t,n,r,i){c(a,a.exports.meshopt_decodeVertexBuffer,e,t,n,r,a.exports[l[i]])},decodeIndexBuffer:function(e,t,n,r){c(a,a.exports.meshopt_decodeIndexBuffer,e,t,n,r)},decodeIndexSequence:function(e,t,n,r){c(a,a.exports.meshopt_decodeIndexSequence,e,t,n,r)},decodeGltfBuffer:function(e,t,n,r,i,o){c(a,a.exports[u[i]],e,t,n,r,a.exports[l[o]])},decodeGltfBufferAsync:function(e,t,n,r,i){return d.length>0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a,a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})();function Ir(e){return`morphTargetDictionary`in e&&e.morphTargetDictionary!==void 0&&`morphTargetInfluences`in e&&Array.isArray(e.morphTargetInfluences)}var Lr={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 Rr(e={}){c.Cache.enabled=!0;let t={...Lr,...e},n=new cn,r=new or;if(r.setDecoderPath(t.draco),n.setDRACOLoader(r),t.renderer){let e=new kr;e.setTranscoderPath(t.ktx2),e.detectSupport(t.renderer),n.setKTX2Loader(e)}t.meshopt&&n.setMeshoptDecoder(Fr),zr=n}var zr=new cn;zr.setMeshoptDecoder(Fr);var Br=class extends je{constructor(e,t){super(e,t)}},Vr=class extends Me{gltf;constructor(e){super(e)}async asyncInit(e){if(te(e)){let t=null;this.gltf=await zr.loadAsync(e);let n={},r={root:this.gltf.scene,bones:{},skeleton:void 0},i={};this.gltf.scene.traverse(e=>{if(e.userData.a3js={objectA3:this},Ir(e)){let{morphTargetDictionary:t,morphTargetInfluences:n}=e;Object.keys(t).forEach(r=>{let a=e.name+`.`+r;i[a]={array:n,idx:t[r]}})}e instanceof c.Bone&&r.bones&&(r.bones[e.name]=e),e instanceof c.SkinnedMesh&&(r.skeleton=e.skeleton)}),this.gltf.animations.forEach(e=>{t||=e.name,n[e.name]=new Br(r,new jt(e))}),t?this.syncInit(t,n,i):(t=`dummy`,n.dummy=new Br(r,new Ne),this.syncInit(t,n,i))}else{let e=new c.BoxGeometry,t=new c.MeshStandardMaterial({color:16711680}),n=new c.Mesh(e,t),r={};r.dummy=new Br({root:n},new Ne),this.syncInit(`dummy`,r)}return this}},Hr={camera:void 0,antialias:!1,transparent:!1},Ur=class 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>
|
|
@@ -289,5 +289,5 @@ See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return e}
|
|
|
289
289
|
<button class="btn left">L</button>
|
|
290
290
|
<button class="btn right">R</button>
|
|
291
291
|
</div>
|
|
292
|
-
`,this.style.touchAction=`none`,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._leftPointerId,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,this._leftButtonCount=0,this._rightButtonCount=0;let t=this.shadowRoot.querySelector(`.joystick.left .stick`);if(!t)return;t.addEventListener(`pointerdown`,e=>{if(this._leftPointerId!==null)return;this._leftPointerId=e.pointerId,this._leftActive=!0,t.setPointerCapture(e.pointerId);let n=t.getBoundingClientRect();this._leftCenter.x=n.left+n.width/2,this._leftCenter.y=n.top+n.height/2}),t.addEventListener(`pointermove`,e=>{if(!this._leftActive||e.pointerId!==this._leftPointerId)return;let n=e.clientX-this._leftCenter.x,r=e.clientY-this._leftCenter.y,i=Math.sqrt(n*n+r*r),a=n,o=r;if(i>this._maxDistance){let e=Math.atan2(r,n);a=Math.cos(e)*this._maxDistance,o=Math.sin(e)*this._maxDistance}t.style.transform=`translate(calc(-50% + ${a}px), calc(-50% + ${o}px))`,this.leftJoystick.x=a/this._maxDistance,this.leftJoystick.y=-(o/this._maxDistance)});let n=e=>{e.pointerId===this._leftPointerId&&(this._leftPointerId=null,this._leftActive=!1,t.style.transform=`translate(-50%, -50%)`,this.leftJoystick.x=0,this.leftJoystick.y=0)};t.addEventListener(`pointerup`,n),t.addEventListener(`pointercancel`,n);let r=this.shadowRoot.querySelector(`.joystick.right .stick`);if(!r)return;r.addEventListener(`pointerdown`,e=>{if(this._rightPointerId!==null)return;this._rightPointerId=e.pointerId,this._rightActive=!0;let t=r.getBoundingClientRect();this._rightCenter.x=t.left+t.width/2,this._rightCenter.y=t.top+t.height/2,r.setPointerCapture(e.pointerId)}),r.addEventListener(`pointermove`,e=>{if(!this._rightActive||e.pointerId!==this._rightPointerId)return;let t=e.clientX-this._rightCenter.x,n=e.clientY-this._rightCenter.y,i=Math.sqrt(t*t+n*n),a=t,o=n;if(i>this._maxDistance){let e=Math.atan2(n,t);a=Math.cos(e)*this._maxDistance,o=Math.sin(e)*this._maxDistance}r.style.transform=`translate(calc(-50% + ${a}px), calc(-50% + ${o}px))`,this.rightJoystick.x=a/this._maxDistance,this.rightJoystick.y=-(o/this._maxDistance)});let i=e=>{e.pointerId===this._rightPointerId&&(this._rightPointerId=null,this._rightActive=!1,r.style.transform=`translate(-50%, -50%)`,this.rightJoystick.x=0,this.rightJoystick.y=0)};r.addEventListener(`pointerup`,i),r.addEventListener(`pointercancel`,i);let a=this.shadowRoot.querySelector(`.btn.left`);if(!a)return;a.addEventListener(`pointerdown`,()=>{this.leftButton=!0,this._leftButtonCount++}),a.addEventListener(`pointerup`,()=>{this.leftButton=!1});let o=this.shadowRoot.querySelector(`.btn.right`);o&&(o.addEventListener(`pointerdown`,()=>{this.rightButton=!0,this._rightButtonCount++}),o.addEventListener(`pointerup`,()=>{this.rightButton=!1}),window.addEventListener(`keydown`,this.keyDownListener),window.addEventListener(`keyup`,this.keyUpListener),this.options.touchDevice||(this.shadowRoot.querySelectorAll(`.joystick`).forEach(e=>{e.style.display=`none`}),this.shadowRoot.querySelectorAll(`.btn`).forEach(e=>{e.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=>{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;if(!(n===0||r===0))if(n>r){let e=this.shadowRoot.querySelector(`.btn.left`);e.style.bottom=`50px`,e.style.left=`200px`;let t=this.shadowRoot.querySelector(`.btn.right`);t.style.bottom=`50px`,t.style.right=`200px`}else{let e=this.shadowRoot.querySelector(`.btn.left`);e.style.bottom=`200px`,e.style.left=`50px`;let t=this.shadowRoot.querySelector(`.btn.right`);t.style.bottom=`200px`,t.style.right=`50px`}}),this._ro.observe(this)}disconnectedCallback(){this._ro?.disconnect(),window.removeEventListener(`keydown`,this.keyDownListener),window.removeEventListener(`keyup`,this.keyUpListener)}updateUIFromKeyInfo(){let e={x:0,y:0},t={x:0,y:0};this.keys.has(`KeyW`)&&(e.y+=1),this.keys.has(`KeyA`)&&--e.x,this.keys.has(`KeyS`)&&--e.y,this.keys.has(`KeyD`)&&(e.x+=1),this.keys.has(`ArrowUp`)&&(t.y+=1),this.keys.has(`ArrowLeft`)&&--t.x,this.keys.has(`ArrowDown`)&&--t.y,this.keys.has(`ArrowRight`)&&(t.x+=1);let n=Math.sqrt(e.x*e.x+e.y*e.y);n>0&&(e.x/=n,e.y/=n),this.leftJoystick=e;let 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._leftButtonCount++):this.leftButton=!1,this.keys.has(`Enter`)?(this.rightButton=!0,this._rightButtonCount++):this.rightButton=!1}getLeftButtonCount(){let e=this._leftButtonCount;return this._leftButtonCount=0,e}getRightButtonCount(){let e=this._rightButtonCount;return this._rightButtonCount=0,e}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)}setShadowMap(e){this.canvas.setShadowMap(e)}};customElements.define(`game-canvas-a3`,yi);var bi={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},xi=class{opt;trans;motion;constructor(e){this.opt={...bi,...e},this.trans=new Si(this),this.motion=new Ci(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))}},Si=class{cc;transform;objectA3;controller;chassisBodyDesc;chassisBody;chassisColliderDesc;chassisCollider;constructor(e){this.cc=e,this.transform=new v}init(e,t){this.transform.set(e),this.objectA3=t,this.chassisBodyDesc=new R.RigidBodyDesc(R.RigidBodyType.Dynamic),this.chassisColliderDesc=R.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&&z.set(this.chassisCollider.handle,this.objectA3),this.chassisBody&&(this.controller=e.world.createVehicleController(this.chassisBody)),this.controller){let e={x:0,y:0,z:0};e.x=-this.cc.opt.wheelFrontAxleLength/2,e.y=this.cc.opt.wheelFrontYPosition,e.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(e,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),e.x=this.cc.opt.wheelFrontAxleLength/2,e.y=this.cc.opt.wheelFrontYPosition,e.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(e,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),e.x=-this.cc.opt.wheelRearAxleLength/2,e.y=this.cc.opt.wheelRearYPosition,e.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(e,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),e.x=this.cc.opt.wheelRearAxleLength/2,e.y=this.cc.opt.wheelRearYPosition,e.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(e,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),z.delete(this.chassisCollider.handle),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||=new u,this.chassisBody?e.set(this.chassisBody.linvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.linvel),e}setAngularVelocity(e){}getAngularVelocity(e){return e||=new u,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 u;update(e){if(this.cc.opt.aerodynamicDrag>0&&this.chassisBody){let e=new u(this.chassisBody.linvel());Math.abs(e.y)>3&&e.set(e.x,3*e.y/Math.abs(e.y),e.z),this.vv.lerp(this.vv,e,.9);let t=this.vv.length();t!==0&&(e.set(this.vv),e.normalize(),e.scale(-t*t*this.cc.opt.aerodynamicDrag),this.chassisBody.resetForces(!0),this.chassisBody.addForce({x:e.x,y:e.y,z:e.z},!0))}this.controller?.updateVehicle(e),this.chassisBody&&this.transform.loc.set(this.chassisBody.translation()),this.chassisBody&&this.transform.quat.set(this.chassisBody.rotation())}},Ci=class{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||!this.cm.trans.controller)return{};let t=new u(this.cm.trans.chassisBody.translation()),n=new d(this.cm.trans.chassisBody.rotation()),r=new d(-n.x,-n.y,-n.z,n.w),i=new u(this.cm.trans.chassisBody.translation());i.add(this.cm.opt.chassisOffset),i.sub(t);let a=new d(this.cm.trans.chassisBody.rotation());a.mul(r);let o=new d,s=new u,c=new d;{let e=this.cm.opt.wheelFrontAxle,t=this.cm.trans.controller.wheelSuspensionLength(0)||0,n=this.cm.trans.controller.wheelSteering(0)||0,r=this.cm.trans.controller.wheelRotation(0)||0;s.set(-this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),s.sub(0,t,0),c.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),c.mul(o)}let l=new u,f=new d;{let e=this.cm.opt.wheelFrontAxle,t=this.cm.trans.controller.wheelSuspensionLength(1)||0,n=this.cm.trans.controller.wheelSteering(1)||0,r=this.cm.trans.controller.wheelRotation(1)||0;l.set(this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),l.sub(0,t,0),f.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),f.mul(o)}let p=new u,m=new d;{let e=this.cm.opt.wheelRearAxle,t=this.cm.trans.controller.wheelSuspensionLength(2)||0,n=this.cm.trans.controller.wheelSteering(2)||0,r=this.cm.trans.controller.wheelRotation(2)||0;p.set(-this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),p.sub(0,t,0),m.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),m.mul(o)}let h=new u,g=new d;{let e=this.cm.opt.wheelRearAxle,t=this.cm.trans.controller.wheelSuspensionLength(3)||0,n=this.cm.trans.controller.wheelSteering(3)||0,r=this.cm.trans.controller.wheelRotation(3)||0;h.set(this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),h.sub(0,t,0),g.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),g.mul(o)}return{chassis:{loc:i,quat:a},frontRight:{loc:l,quat:f},frontLeft:{loc:s,quat:c},rearRight:{loc:h,quat:g},rearLeft:{loc:p,quat:m}}}},wi=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e??new c.PerspectiveCamera(75,1,.01,1e3),this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.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 c.Object3D}setAudioListener(e){this.camera.add(e)}setHeadLight(e){this.headLight.intensity=+!!e}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Ti={camera:void 0,antialias:!1,optionalFeatures:[`local-floor`],requiredFeatures:[]},Ei=class extends HTMLElement{options;base;renderer;scene;camera;controller;camera3js;timer;vrButton;currentSession=null;constructor(e){super(),this.options={...Ti,...e},this.options.camera?(this.camera3js=this.options.camera.camera,this.camera=this.options.camera):(this.camera3js=new c.PerspectiveCamera(75,1,.01,1e3),this.camera=new wi(this.camera3js)),this.base=new Yt(this.camera),this.scene=this.base.scene,this.controller=this.base.controller,this.timer=new c.Timer,this.renderer=new c.WebGLRenderer({antialias:this.options.antialias}),this.renderer.xr.enabled=!0,Rr({renderer:this.renderer}),this.vrButton=this.createVRButton(),this.renderer.setAnimationLoop(this.renderingLoop)}connectedCallback(){this.appendChild(this.vrButton)}createVRButton(){let e=document.createElement(`button`);return e.textContent=`VR非対応`,e.disabled=!0,navigator.xr&&navigator.xr.isSessionSupported(`immersive-vr`).then(t=>{t?(e.textContent=`VRに入る`,e.disabled=!1,e.addEventListener(`click`,()=>this.onButtonClick())):e.textContent=`VR非対応`}),e}async onButtonClick(){if(this.currentSession){await this.currentSession.end();return}let e={optionalFeatures:this.options.optionalFeatures,requiredFeatures:this.options.requiredFeatures},t=await navigator.xr.requestSession(`immersive-vr`,e);this.renderer.xr.setSession(t),this.currentSession=t,this.vrButton.textContent=`VRを終了`,t.addEventListener(`end`,()=>{this.currentSession=null,this.vrButton.textContent=`VRに入る`})}disconnectedCallback(){this.renderer.setAnimationLoop(null),this.currentSession&&this.currentSession.end()}replaceScene(e){return this.scene=e,this.base.replaceScene(e)}setController(e){this.controller=e,this.base.setController(e)}renderingLoop=()=>{this.timer.update();let e=this.timer.getDelta();this.base.updateScene(e),this.renderer.render(this.scene.scene,this.camera3js),this.waitingRenderResolves.forEach(t=>{t(e)}),this.waitingRenderResolves=[]};waitingRenderResolves=[];waitForRender(){return new Promise(e=>{this.waitingRenderResolves.push(e)})}worldToScreen(e){let t=new c.Vector3(e.x,e.y,e.z);t.project(this.camera3js);let n=new c.Vector2;return this.renderer.getSize(n),{x:(t.x+1)/2*n.x,y:(1-t.y)/2*n.y}}screenToWorld(e,t,n){let r=new c.Vector2;this.renderer.getSize(r);let i=new c.Vector3(e/r.x*2-1,-(t/r.y)*2+1,.5);i.unproject(this.camera3js);let a=i.sub(this.camera3js.position).normalize(),o=this.camera3js.position;return new u(o.x+a.x*n,o.y+a.y*n,o.z+a.z*n)}cameraToScreen(e){let t=new c.Vector3(e.x,e.y,e.z).applyMatrix4(this.camera3js.matrixWorld);return U.v0.set(t),this.worldToScreen(U.v0)}screenToCamera(e,t,n){let r=this.screenToWorld(e,t,n),i=new c.Vector3(r.x,r.y,r.z);return r.set(i.applyMatrix4(this.camera3js.matrixWorldInverse)),r}setShadowMap(e){this.renderer.shadowMap.enabled=e}};customElements.define(`vr-view-a3`,Ei);var Di={camera:void 0,antialias:!1,optionalFeatures:[`local-floor`],requiredFeatures:[]},Oi=class extends HTMLElement{options;base;renderer;scene;camera;controller;camera3js;timer;arButton;currentSession=null;constructor(e){super(),this.options={...Di,...e},this.options.camera?(this.camera3js=this.options.camera.camera,this.camera=this.options.camera):(this.camera3js=new c.PerspectiveCamera(75,1,.01,1e3),this.camera=new wi(this.camera3js)),this.base=new Yt(this.camera),this.scene=this.base.scene,this.controller=this.base.controller,this.timer=new c.Timer,this.renderer=new c.WebGLRenderer({antialias:this.options.antialias,alpha:!0}),this.renderer.xr.enabled=!0,Rr({renderer:this.renderer}),this.arButton=this.createARButton(),this.renderer.setAnimationLoop(this.renderingLoop)}connectedCallback(){this.appendChild(this.arButton)}createARButton(){let e=document.createElement(`button`);return e.textContent=`AR非対応`,e.disabled=!0,navigator.xr&&navigator.xr.isSessionSupported(`immersive-ar`).then(t=>{t?(e.textContent=`ARに入る`,e.disabled=!1,e.addEventListener(`click`,()=>this.onButtonClick())):e.textContent=`AR非対応`}),e}async onButtonClick(){if(this.currentSession){await this.currentSession.end();return}let e={optionalFeatures:this.options.optionalFeatures,requiredFeatures:this.options.requiredFeatures},t=await navigator.xr.requestSession(`immersive-ar`,e);this.renderer.xr.setSession(t),this.currentSession=t,this.arButton.textContent=`ARを終了`,t.addEventListener(`end`,()=>{this.currentSession=null,this.arButton.textContent=`ARに入る`})}disconnectedCallback(){this.renderer.setAnimationLoop(null),this.currentSession&&this.currentSession.end()}replaceScene(e){return this.scene=e,this.base.replaceScene(e)}setController(e){this.controller=e,this.base.setController(e)}renderingLoop=()=>{this.timer.update();let e=this.timer.getDelta();this.base.updateScene(e),this.renderer.render(this.scene.scene,this.camera3js),this.waitingRenderResolves.forEach(t=>{t(e)}),this.waitingRenderResolves=[]};waitingRenderResolves=[];waitForRender(){return new Promise(e=>{this.waitingRenderResolves.push(e)})}worldToScreen(e){let t=new c.Vector3(e.x,e.y,e.z);t.project(this.camera3js);let n=new c.Vector2;return this.renderer.getSize(n),{x:(t.x+1)/2*n.x,y:(1-t.y)/2*n.y}}screenToWorld(e,t,n){let r=new c.Vector2;this.renderer.getSize(r);let i=new c.Vector3(e/r.x*2-1,-(t/r.y)*2+1,.5);i.unproject(this.camera3js);let a=i.sub(this.camera3js.position).normalize(),o=this.camera3js.position;return new u(o.x+a.x*n,o.y+a.y*n,o.z+a.z*n)}cameraToScreen(e){let t=new c.Vector3(e.x,e.y,e.z).applyMatrix4(this.camera3js.matrixWorld);return U.v0.set(t),this.worldToScreen(U.v0)}screenToCamera(e,t,n){let r=this.screenToWorld(e,t,n),i=new c.Vector3(r.x,r.y,r.z);return r.set(i.applyMatrix4(this.camera3js.matrixWorldInverse)),r}setShadowMap(e){this.renderer.shadowMap.enabled=e}};customElements.define(`ar-view-a3`,Oi),exports.ARView=Oi,exports.Acerola3D=zt,exports.Action=je,exports.ActionObject=Me,exports.AvatarPositionController=Kt,exports.AvatarVelocityController=Jt,exports.BaseController=Ut,exports.BaseView=Yt,exports.BillboardTransformer=A,exports.Box=ui,exports.Camera=Ht,exports.Canvas=Ur,exports.CarControl=xi,exports.CarMotion=Ci,exports.CarTransformer=Si,exports.ClipMotion=jt,exports.DefaultTransformer=y,exports.DynamicCharacterTransformer=Te,exports.FollowTransformer=ee,exports.GLTF=Vr,exports.GameCanvas=yi,exports.Html3D=_i,exports.ImagePlane=gi,exports.KinematicCharacterTransformer=Se,exports.ObjectA3=W,exports.OrbitController=Wt,exports.Quat=d,exports.RapierPhysicsEngine=ce,exports.RapierPhysicsWorld=B,exports.SampleObject=Qr,exports.Scene=Vt,exports.SmoothBillboardTransformer=M,exports.SmoothTransformer=S,exports.Sound=Pt,exports.Sphere=di,exports.StandardLights=hi,exports.StaticTransformer=b,exports.Text3D=ci,exports.ThreeCamera=Xt,exports.ThreeObject=li,exports.Transform=v,exports.VRView=Ei,exports.Vec3=u,exports.Window=qr,exports.XRCamera=wi,exports.asyncSleep=me,exports.collisionMap=z,exports.deepMerge=be,exports.defaultARViewOptions=Di,exports.defaultCanvasOptions=Hr,exports.defaultCarControlOptions=bi,exports.defaultDynamicCharacterTransformerOptions=we,exports.defaultFollowTransformerOptions=N,exports.defaultGameCanvasOptions=vi,exports.defaultKinematicCharacterTransformerOptions=xe,exports.defaultSampleObjectOptions=Zr,exports.defaultSetLightShadowOptions=ke,exports.defaultSmoothTransformerOptions=x,exports.defaultText3DOptions=si,exports.defaultVRViewOptions=Ti,exports.defaultWindowOptions=Kr,exports.eulerToQuaternion=m,exports.getLookAtQuaternion=p,exports.initFont=oi,exports.initPhysics=pe,exports.initSound=Nt,exports.recreateGLTFLoader=Rr;
|
|
292
|
+
`,this.style.touchAction=`none`,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._leftPointerId,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,this._leftButtonCount=0,this._rightButtonCount=0;let t=this.shadowRoot.querySelector(`.joystick.left .stick`);if(!t)return;t.addEventListener(`pointerdown`,e=>{if(this._leftPointerId!==null)return;this._leftPointerId=e.pointerId,this._leftActive=!0,t.setPointerCapture(e.pointerId);let n=t.getBoundingClientRect();this._leftCenter.x=n.left+n.width/2,this._leftCenter.y=n.top+n.height/2}),t.addEventListener(`pointermove`,e=>{if(!this._leftActive||e.pointerId!==this._leftPointerId)return;let n=e.clientX-this._leftCenter.x,r=e.clientY-this._leftCenter.y,i=Math.sqrt(n*n+r*r),a=n,o=r;if(i>this._maxDistance){let e=Math.atan2(r,n);a=Math.cos(e)*this._maxDistance,o=Math.sin(e)*this._maxDistance}t.style.transform=`translate(calc(-50% + ${a}px), calc(-50% + ${o}px))`,this.leftJoystick.x=a/this._maxDistance,this.leftJoystick.y=-(o/this._maxDistance)});let n=e=>{e.pointerId===this._leftPointerId&&(this._leftPointerId=null,this._leftActive=!1,t.style.transform=`translate(-50%, -50%)`,this.leftJoystick.x=0,this.leftJoystick.y=0)};t.addEventListener(`pointerup`,n),t.addEventListener(`pointercancel`,n);let r=this.shadowRoot.querySelector(`.joystick.right .stick`);if(!r)return;r.addEventListener(`pointerdown`,e=>{if(this._rightPointerId!==null)return;this._rightPointerId=e.pointerId,this._rightActive=!0;let t=r.getBoundingClientRect();this._rightCenter.x=t.left+t.width/2,this._rightCenter.y=t.top+t.height/2,r.setPointerCapture(e.pointerId)}),r.addEventListener(`pointermove`,e=>{if(!this._rightActive||e.pointerId!==this._rightPointerId)return;let t=e.clientX-this._rightCenter.x,n=e.clientY-this._rightCenter.y,i=Math.sqrt(t*t+n*n),a=t,o=n;if(i>this._maxDistance){let e=Math.atan2(n,t);a=Math.cos(e)*this._maxDistance,o=Math.sin(e)*this._maxDistance}r.style.transform=`translate(calc(-50% + ${a}px), calc(-50% + ${o}px))`,this.rightJoystick.x=a/this._maxDistance,this.rightJoystick.y=-(o/this._maxDistance)});let i=e=>{e.pointerId===this._rightPointerId&&(this._rightPointerId=null,this._rightActive=!1,r.style.transform=`translate(-50%, -50%)`,this.rightJoystick.x=0,this.rightJoystick.y=0)};r.addEventListener(`pointerup`,i),r.addEventListener(`pointercancel`,i);let a=this.shadowRoot.querySelector(`.btn.left`);if(!a)return;a.addEventListener(`pointerdown`,()=>{this.leftButton=!0,this._leftButtonCount++}),a.addEventListener(`pointerup`,()=>{this.leftButton=!1});let o=this.shadowRoot.querySelector(`.btn.right`);o&&(o.addEventListener(`pointerdown`,()=>{this.rightButton=!0,this._rightButtonCount++}),o.addEventListener(`pointerup`,()=>{this.rightButton=!1}),window.addEventListener(`keydown`,this.keyDownListener),window.addEventListener(`keyup`,this.keyUpListener),this.options.touchDevice||(this.shadowRoot.querySelectorAll(`.joystick`).forEach(e=>{e.style.display=`none`}),this.shadowRoot.querySelectorAll(`.btn`).forEach(e=>{e.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=>{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;if(!(n===0||r===0))if(n>r){let e=this.shadowRoot.querySelector(`.btn.left`);e.style.bottom=`50px`,e.style.left=`200px`;let t=this.shadowRoot.querySelector(`.btn.right`);t.style.bottom=`50px`,t.style.right=`200px`}else{let e=this.shadowRoot.querySelector(`.btn.left`);e.style.bottom=`200px`,e.style.left=`50px`;let t=this.shadowRoot.querySelector(`.btn.right`);t.style.bottom=`200px`,t.style.right=`50px`}}),this._ro.observe(this)}disconnectedCallback(){this._ro?.disconnect(),window.removeEventListener(`keydown`,this.keyDownListener),window.removeEventListener(`keyup`,this.keyUpListener)}updateUIFromKeyInfo(){let e={x:0,y:0},t={x:0,y:0};this.keys.has(`KeyW`)&&(e.y+=1),this.keys.has(`KeyA`)&&--e.x,this.keys.has(`KeyS`)&&--e.y,this.keys.has(`KeyD`)&&(e.x+=1),this.keys.has(`ArrowUp`)&&(t.y+=1),this.keys.has(`ArrowLeft`)&&--t.x,this.keys.has(`ArrowDown`)&&--t.y,this.keys.has(`ArrowRight`)&&(t.x+=1);let n=Math.sqrt(e.x*e.x+e.y*e.y);n>0&&(e.x/=n,e.y/=n),this.leftJoystick=e;let 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._leftButtonCount++):this.leftButton=!1,this.keys.has(`Enter`)?(this.rightButton=!0,this._rightButtonCount++):this.rightButton=!1}getLeftButtonCount(){let e=this._leftButtonCount;return this._leftButtonCount=0,e}getRightButtonCount(){let e=this._rightButtonCount;return this._rightButtonCount=0,e}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)}setShadowMap(e){this.canvas.setShadowMap(e)}};customElements.define(`game-canvas-a3`,yi);var bi={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},xi=class{opt;trans;motion;constructor(e){this.opt={...bi,...e},this.trans=new Si(this),this.motion=new Ci(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))}},Si=class{cc;transform;objectA3;controller;chassisBodyDesc;chassisBody;chassisColliderDesc;chassisCollider;constructor(e){this.cc=e,this.transform=new v}init(e,t){this.transform.set(e),this.objectA3=t,this.chassisBodyDesc=new L.RigidBodyDesc(L.RigidBodyType.Dynamic),this.chassisColliderDesc=L.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&&R.set(this.chassisCollider.handle,this.objectA3),this.chassisBody&&(this.controller=e.world.createVehicleController(this.chassisBody)),this.controller){let e={x:0,y:0,z:0};e.x=-this.cc.opt.wheelFrontAxleLength/2,e.y=this.cc.opt.wheelFrontYPosition,e.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(e,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),e.x=this.cc.opt.wheelFrontAxleLength/2,e.y=this.cc.opt.wheelFrontYPosition,e.z=this.cc.opt.wheelFrontZPosition,this.controller.addWheel(e,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),e.x=-this.cc.opt.wheelRearAxleLength/2,e.y=this.cc.opt.wheelRearYPosition,e.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(e,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),e.x=this.cc.opt.wheelRearAxleLength/2,e.y=this.cc.opt.wheelRearYPosition,e.z=this.cc.opt.wheelRearZPosition,this.controller.addWheel(e,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),R.delete(this.chassisCollider.handle),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||=new u,this.chassisBody?e.set(this.chassisBody.linvel()):this.chassisBodyDesc&&e.set(this.chassisBodyDesc.linvel),e}setAngularVelocity(e){}getAngularVelocity(e){return e||=new u,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 u;update(e){if(this.cc.opt.aerodynamicDrag>0&&this.chassisBody){let e=new u(this.chassisBody.linvel());Math.abs(e.y)>3&&e.set(e.x,3*e.y/Math.abs(e.y),e.z),this.vv.lerp(this.vv,e,.9);let t=this.vv.length();t!==0&&(e.set(this.vv),e.normalize(),e.scale(-t*t*this.cc.opt.aerodynamicDrag),this.chassisBody.resetForces(!0),this.chassisBody.addForce({x:e.x,y:e.y,z:e.z},!0))}this.controller?.updateVehicle(e),this.chassisBody&&this.transform.loc.set(this.chassisBody.translation()),this.chassisBody&&this.transform.quat.set(this.chassisBody.rotation())}},Ci=class{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||!this.cm.trans.controller)return{};let t=new u(this.cm.trans.chassisBody.translation()),n=new d(this.cm.trans.chassisBody.rotation()),r=new d(-n.x,-n.y,-n.z,n.w),i=new u(this.cm.trans.chassisBody.translation());i.add(this.cm.opt.chassisOffset),i.sub(t);let a=new d(this.cm.trans.chassisBody.rotation());a.mul(r);let o=new d,s=new u,c=new d;{let e=this.cm.opt.wheelFrontAxle,t=this.cm.trans.controller.wheelSuspensionLength(0)||0,n=this.cm.trans.controller.wheelSteering(0)||0,r=this.cm.trans.controller.wheelRotation(0)||0;s.set(-this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),s.sub(0,t,0),c.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),c.mul(o)}let l=new u,f=new d;{let e=this.cm.opt.wheelFrontAxle,t=this.cm.trans.controller.wheelSuspensionLength(1)||0,n=this.cm.trans.controller.wheelSteering(1)||0,r=this.cm.trans.controller.wheelRotation(1)||0;l.set(this.cm.opt.wheelFrontAxleLength/2,this.cm.opt.wheelFrontYPosition,this.cm.opt.wheelFrontZPosition),l.sub(0,t,0),f.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),f.mul(o)}let p=new u,m=new d;{let e=this.cm.opt.wheelRearAxle,t=this.cm.trans.controller.wheelSuspensionLength(2)||0,n=this.cm.trans.controller.wheelSteering(2)||0,r=this.cm.trans.controller.wheelRotation(2)||0;p.set(-this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),p.sub(0,t,0),m.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),m.mul(o)}let h=new u,g=new d;{let e=this.cm.opt.wheelRearAxle,t=this.cm.trans.controller.wheelSuspensionLength(3)||0,n=this.cm.trans.controller.wheelSteering(3)||0,r=this.cm.trans.controller.wheelRotation(3)||0;h.set(this.cm.opt.wheelRearAxleLength/2,this.cm.opt.wheelRearYPosition,this.cm.opt.wheelRearZPosition),h.sub(0,t,0),g.set(0,Math.sin(n/2),0,Math.cos(n/2)),o.set(e.x*Math.sin(r/2),e.y*Math.sin(r/2),e.z*Math.sin(r/2),Math.cos(r/2)),g.mul(o)}return{chassis:{loc:i,quat:a},frontRight:{loc:l,quat:f},frontLeft:{loc:s,quat:c},rearRight:{loc:h,quat:g},rearLeft:{loc:p,quat:m}}}},wi=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e??new c.PerspectiveCamera(75,1,.01,1e3),this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.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 c.Object3D}setAudioListener(e){this.camera.add(e)}setHeadLight(e){this.headLight.intensity=+!!e}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Ti={camera:void 0,antialias:!1,optionalFeatures:[`local-floor`],requiredFeatures:[]},Ei=class extends HTMLElement{options;base;renderer;scene;camera;controller;camera3js;timer;vrButton;currentSession=null;constructor(e){super(),this.options={...Ti,...e},this.options.camera?(this.camera3js=this.options.camera.camera,this.camera=this.options.camera):(this.camera3js=new c.PerspectiveCamera(75,1,.01,1e3),this.camera=new wi(this.camera3js)),this.base=new Yt(this.camera),this.scene=this.base.scene,this.controller=this.base.controller,this.timer=new c.Timer,this.renderer=new c.WebGLRenderer({antialias:this.options.antialias}),this.renderer.xr.enabled=!0,Rr({renderer:this.renderer}),this.vrButton=this.createVRButton(),this.renderer.setAnimationLoop(this.renderingLoop)}connectedCallback(){this.appendChild(this.vrButton)}createVRButton(){let e=document.createElement(`button`);return e.textContent=`VR非対応`,e.disabled=!0,navigator.xr&&navigator.xr.isSessionSupported(`immersive-vr`).then(t=>{t?(e.textContent=`VRに入る`,e.disabled=!1,e.addEventListener(`click`,()=>this.onButtonClick())):e.textContent=`VR非対応`}),e}async onButtonClick(){if(this.currentSession){await this.currentSession.end();return}let e={optionalFeatures:this.options.optionalFeatures,requiredFeatures:this.options.requiredFeatures},t=await navigator.xr.requestSession(`immersive-vr`,e);this.renderer.xr.setSession(t),this.currentSession=t,this.vrButton.textContent=`VRを終了`,t.addEventListener(`end`,()=>{this.currentSession=null,this.vrButton.textContent=`VRに入る`})}disconnectedCallback(){this.renderer.setAnimationLoop(null),this.currentSession&&this.currentSession.end()}replaceScene(e){return this.scene=e,this.base.replaceScene(e)}setController(e){this.controller=e,this.base.setController(e)}renderingLoop=()=>{this.timer.update();let e=this.timer.getDelta();this.base.updateScene(e),this.renderer.render(this.scene.scene,this.camera3js),this.waitingRenderResolves.forEach(t=>{t(e)}),this.waitingRenderResolves=[]};waitingRenderResolves=[];waitForRender(){return new Promise(e=>{this.waitingRenderResolves.push(e)})}worldToScreen(e){let t=new c.Vector3(e.x,e.y,e.z);t.project(this.camera3js);let n=new c.Vector2;return this.renderer.getSize(n),{x:(t.x+1)/2*n.x,y:(1-t.y)/2*n.y}}screenToWorld(e,t,n){let r=new c.Vector2;this.renderer.getSize(r);let i=new c.Vector3(e/r.x*2-1,-(t/r.y)*2+1,.5);i.unproject(this.camera3js);let a=i.sub(this.camera3js.position).normalize(),o=this.camera3js.position;return new u(o.x+a.x*n,o.y+a.y*n,o.z+a.z*n)}cameraToScreen(e){let t=new c.Vector3(e.x,e.y,e.z).applyMatrix4(this.camera3js.matrixWorld);return U.v0.set(t),this.worldToScreen(U.v0)}screenToCamera(e,t,n){let r=this.screenToWorld(e,t,n),i=new c.Vector3(r.x,r.y,r.z);return r.set(i.applyMatrix4(this.camera3js.matrixWorldInverse)),r}setShadowMap(e){this.renderer.shadowMap.enabled=e}};customElements.define(`vr-view-a3`,Ei);var Di={camera:void 0,antialias:!1,optionalFeatures:[`local-floor`],requiredFeatures:[]},Oi=class extends HTMLElement{options;base;renderer;scene;camera;controller;camera3js;timer;arButton;currentSession=null;constructor(e){super(),this.options={...Di,...e},this.options.camera?(this.camera3js=this.options.camera.camera,this.camera=this.options.camera):(this.camera3js=new c.PerspectiveCamera(75,1,.01,1e3),this.camera=new wi(this.camera3js)),this.base=new Yt(this.camera),this.scene=this.base.scene,this.controller=this.base.controller,this.timer=new c.Timer,this.renderer=new c.WebGLRenderer({antialias:this.options.antialias,alpha:!0}),this.renderer.xr.enabled=!0,Rr({renderer:this.renderer}),this.arButton=this.createARButton(),this.renderer.setAnimationLoop(this.renderingLoop)}connectedCallback(){this.appendChild(this.arButton)}createARButton(){let e=document.createElement(`button`);return e.textContent=`AR非対応`,e.disabled=!0,navigator.xr&&navigator.xr.isSessionSupported(`immersive-ar`).then(t=>{t?(e.textContent=`ARに入る`,e.disabled=!1,e.addEventListener(`click`,()=>this.onButtonClick())):e.textContent=`AR非対応`}),e}async onButtonClick(){if(this.currentSession){await this.currentSession.end();return}let e={optionalFeatures:this.options.optionalFeatures,requiredFeatures:this.options.requiredFeatures},t=await navigator.xr.requestSession(`immersive-ar`,e);this.renderer.xr.setSession(t),this.currentSession=t,this.arButton.textContent=`ARを終了`,t.addEventListener(`end`,()=>{this.currentSession=null,this.arButton.textContent=`ARに入る`})}disconnectedCallback(){this.renderer.setAnimationLoop(null),this.currentSession&&this.currentSession.end()}replaceScene(e){return this.scene=e,this.base.replaceScene(e)}setController(e){this.controller=e,this.base.setController(e)}renderingLoop=()=>{this.timer.update();let e=this.timer.getDelta();this.base.updateScene(e),this.renderer.render(this.scene.scene,this.camera3js),this.waitingRenderResolves.forEach(t=>{t(e)}),this.waitingRenderResolves=[]};waitingRenderResolves=[];waitForRender(){return new Promise(e=>{this.waitingRenderResolves.push(e)})}worldToScreen(e){let t=new c.Vector3(e.x,e.y,e.z);t.project(this.camera3js);let n=new c.Vector2;return this.renderer.getSize(n),{x:(t.x+1)/2*n.x,y:(1-t.y)/2*n.y}}screenToWorld(e,t,n){let r=new c.Vector2;this.renderer.getSize(r);let i=new c.Vector3(e/r.x*2-1,-(t/r.y)*2+1,.5);i.unproject(this.camera3js);let a=i.sub(this.camera3js.position).normalize(),o=this.camera3js.position;return new u(o.x+a.x*n,o.y+a.y*n,o.z+a.z*n)}cameraToScreen(e){let t=new c.Vector3(e.x,e.y,e.z).applyMatrix4(this.camera3js.matrixWorld);return U.v0.set(t),this.worldToScreen(U.v0)}screenToCamera(e,t,n){let r=this.screenToWorld(e,t,n),i=new c.Vector3(r.x,r.y,r.z);return r.set(i.applyMatrix4(this.camera3js.matrixWorldInverse)),r}setShadowMap(e){this.renderer.shadowMap.enabled=e}};customElements.define(`ar-view-a3`,Oi),exports.ARView=Oi,exports.Acerola3D=zt,exports.Action=je,exports.ActionObject=Me,exports.AvatarPositionController=Kt,exports.AvatarVelocityController=Jt,exports.BaseController=Ut,exports.BaseView=Yt,exports.BillboardTransformer=A,exports.Box=ui,exports.Camera=Ht,exports.Canvas=Ur,exports.CarControl=xi,exports.CarMotion=Ci,exports.CarTransformer=Si,exports.ClipMotion=jt,exports.DefaultTransformer=y,exports.DynamicCharacterTransformer=Te,exports.FollowTransformer=ee,exports.GLTF=Vr,exports.GameCanvas=yi,exports.Html3D=_i,exports.ImagePlane=gi,exports.KinematicCharacterTransformer=Se,exports.ObjectA3=W,exports.OrbitController=Wt,exports.Quat=d,exports.RapierPhysicsEngine=le,exports.RapierPhysicsWorld=z,exports.SampleObject=Qr,exports.Scene=Vt,exports.SimplePhysicsTransformer=B,exports.SmoothBillboardTransformer=M,exports.SmoothTransformer=S,exports.Sound=Pt,exports.Sphere=di,exports.StandardLights=hi,exports.StaticTransformer=b,exports.Text3D=ci,exports.ThreeCamera=Xt,exports.ThreeObject=li,exports.Transform=v,exports.VRView=Ei,exports.Vec3=u,exports.Window=qr,exports.XRCamera=wi,exports.asyncSleep=me,exports.collisionMap=R,exports.deepMerge=be,exports.defaultARViewOptions=Di,exports.defaultCanvasOptions=Hr,exports.defaultCarControlOptions=bi,exports.defaultDynamicCharacterTransformerOptions=we,exports.defaultFollowTransformerOptions=N,exports.defaultGameCanvasOptions=vi,exports.defaultKinematicCharacterTransformerOptions=xe,exports.defaultSampleObjectOptions=Zr,exports.defaultSetLightShadowOptions=ke,exports.defaultSimplePhysicsOptions=I,exports.defaultSmoothTransformerOptions=x,exports.defaultText3DOptions=si,exports.defaultVRViewOptions=Ti,exports.defaultWindowOptions=Kr,exports.eulerToQuat=m,exports.getLookAtQuat=p,exports.initFont=oi,exports.initPhysics=pe,exports.initSound=Nt,exports.quatToEuler=_,exports.quatToMatrix=h,exports.recreateGLTFLoader=Rr;
|
|
293
293
|
//# sourceMappingURL=a3js.cjs.js.map
|