PageSourceSearch

https://app.lynara.ai/_next/static/chunks/2597.810ede7877fab8f1.js

js lynara.ai collected 2026-10-05 15:12:48 UTC 165,610 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2597],{651608:(e,t,a)=>{e.exports=a.p+"static/media/playback-worklet.51737e0b.js"},711453:(e,t,a)=>{let r,i,s;a.d(t,{j:()=>w});var n=a(380337);let o=[0,0,0,0],l=new n.Pq0,c=new n.Pq0,h=new n.Pq0,b=new n.Pq0;new n.Zcv,new n.RlV,new n.O9p;let d=new n.PTz,p=new n.PTz,u=new n.kn4,f=new n.kn4;new n.Pq0;let m=new n.Pq0(0,0,1),g=new n.Pq0(1,0,0),v=new n.Pq0(0,1,0),x=new n.Pq0(0,0,1);class w{getOptionValue(e){return this.opt[e]}setOptionValue(e,t){this.opt[e]=t,this.helpers.isActive&&this.showHelpers()}getBoneNames(){return this.data.map(e=>e.name)}getValue(e,t){let a;if(null===this.scene)throw Error("Dynamic bones has not been setup yet.");if(!this.dict.hasOwnProperty(e))throw Error("Dynamic bone '"+e+"' not found.");let r=this.dict[e];if("type"===t)a=r.type;else if("stiffness"===t)a=r.k.every(e=>e===r.k[0])?r.k[0]:[...r.k];else if("damping"===t)a=r.c.every(e=>e===r.c[0])?r.c[0]:[...r.c];else if("external"===t)a=r.ext<1?r.ext:null;else if("limits"===t){var i;a=null===(i=r.limits)||void 0===i?void 0:i.map(e=>null===e?null:[...e])}else if("deltaLocal"===t)a=r.dl?[...r.dl]:null;else if("excludes"===t)a=r.excludes?[...r.excludes.map(e=>{let t={bone:e.bone.name.slice(),radius:e.radius};return e.deltaLocal&&(t.deltaLocal=[...e.deltaLocal]),t})]:null;else if("deltaWorld"===t)a=r.dw?[...r.dw]:null;else if("pivot"===t)a=r.pivot;else if("helper"===t)a=r.helper;else throw Error("Unsupported property '"+t+"'.");return a}setValue(e,t,a){if(null===this.scene)throw Error("Dynamic bones has not been setup yet.");if(!this.dict.hasOwnProperty(e))throw Error("Dynamic bone '"+e+"' not found.");let r=this.dict[e];if("type"===t){if(!a)throw Error("Parameter 'type' not set.");if("string"!=typeof a)throw Error("Type must be a string.");switch(a){case"point":r.isPoint=!0,r.isX=!0,r.isY=!0,r.isZ=!0,r.isT=!1;break;case"link":r.isPoint=!1,r.isX=!0,r.isY=!1,r.isZ=!0,r.isT=!1;break;case"mix1":r.isPoint=!1,r.isX=!0,r.isY=!0,r.isZ=!0,r.isT=!1;break;case"mix2":r.isPoint=!1,r.isX=!0,r.isY=!1,r.isZ=!0,r.isT=!0;break;case"full":r.isPoint=!1,r.isX=!0,r.isY=!0,r.isZ=!0,r.isT=!0;break;default:throw Error("Unknown type'"+a+"'.")}r.type=a.slice()}else if("stiffness"===t){if(!a)throw Error("Parameter 'stiffness' not set.");if(!Number.isNaN(a)&&a>=0)r.k=[,,,,].fill(a);else if(Array.isArray(a)&&4===a.length&&a.every(e=>e>=0))r.k=[...a];else throw Error("Stiffness must be a non-negative number or an array of four non-negative numbers.")}else if("damping"===t){if(!a)throw Error("Parameter 'damping' not set.");if(!Number.isNaN(a)&&a>=0)r.c=[,,,,].fill(a);else if(Array.isArray(a)&&4===a.length&&a.every(e=>e>=0))r.c=[...a];else throw Error("Damping must be a non-negative number or an array of four non-negative numbers.")}else if("external"===t){if(null==a)r.ext=1;else if(!Number.isNaN(a)&&a>=0&&a<=1)r.ext=a;else throw Error("External (if set) must be a number between [0,1].")}else if("limits"===t){if(null==a)r.limits=null;else{if(!Array.isArray(a)||4!==a.length)throw Error("Limits (if set) must null, or an array of four arrays.");if(!a.every(e=>null===e||Array.isArray(e)&&2===e.length&&(null===e[0]||!Number.isNaN(e[0]))&&(null===e[1]||!Number.isNaN(e))))throw Error("Limit values must be null or numbers.");r.limits=[a[0]?[...a[0]]:null,a[1]?[...a[1]]:null,a[2]?[...a[2]]:null,a[3]?[...a[3]]:null]}}else if("excludes"===t){if(null==a)r.excludes=null;else{if(!Array.isArray(a))throw Error("Excludes (if set) must null, or an array.");r.excludes=[],a.forEach((e,t)=>{if(!e.bone)throw Error("Bone not specified in #"+t+" exclude.");if("string"!=typeof e.bone||0===e.bone.length)throw Error("Bone name must be a non-empty string in #"+t+" exclude.");let a=this.armature.getObjectByName(e.bone);if(!a)throw Error("Bone '"+e.bone+"' not found in #"+t+" exclude.");if(Number.isNaN(e.radius)&&e.radius>=0)throw Error("Radius must be a non-negative number in #"+t+" exclude.");let i={bone:a,radius:e.radius,radiusSq:e.radius*e.radius,deltaLocal:null};if(e.deltaLocal){if(!Array.isArray(e.deltaLocal)||3!==e.deltaLocal.length||e.deltaLocal.some(e=>Number.isNaN(e)))throw Error("deltaLocal must be an array of three numbers in #"+t+" exclude.");i.deltaLocal=[...e.deltaLocal]}r.excludes.push(i)})}this.showHelpers()}else if("helper"===t){if(null==a)r.helper=null;else{if(!1!==a&&!0!==a)throw Error("Helper, if set, must be false or true.");r.helper=a}this.showHelpers()}else if("pivot"===t){if(null==a)r.pivot=null;else{if(!1!==a&&!0!==a)throw Error("Pivot, if set, must be false or true.");if(!0===a&&0===r.type)throw Error("Point type bone can't be a pivot.");r.pivot=a}}else if("deltaLocal"===t){if(null==a)r.dl=null;else{if(!Array.isArray(a)||3!==a.length)throw Error("deltaLocal, is set, must be an array of three numbers.");if(!a.every(e=>!Number.isNaN(e)))throw Error("deltaLocal values must be numbers.");r.dl=[...a]}}else if("deltaWorld"===t){if(null==a)r.dw=null;else{if(!Array.isArray(a)||3!==a.length)throw Error("deltaWorld, is set, must be an array of three values.");if(!a.every(e=>!Number.isNaN(e)))throw Error("deltaWorld values must be numbers.");r.dw=[...a]}}else throw Error("Unsupported property "+t)}getConfig(){return this.data.map(e=>{let t={bone:e.name.slice()};return["type","stiffness","damping","external","deltaLocal","deltaWorld","limits","excludes","pivot","helper"].forEach(a=>{(r=this.getValue(e.name,a))&&(t[a]=r)}
1),t})}sortBones(){if(null===this.scene)throw Error("Dynamic bones has not been setup yet.");let e=0,t=new WeakMap;this.armature.traverse(a=>{!t.has(a)&&(t.set(a,e),e++)}),this.data.sort((e,a)=>t.get(e.bone)-t.get(a.bone)),this.data.forEach(e=>{(r=this.dict[e.boneParent.name])&&(r.children||(r.children=[]),r.children.push(e))}),this.objectsUpdate=[];let a=new WeakSet,i=e=>{var t;return(null===(t=e.parent)||void 0===t?void 0:t.isBone)?[e,...i(e.parent)]:[e]},s=e=>{i(e).forEach(e=>{a.has(e)||(this.objectsUpdate.push(e),a.add(e))})};this.data.forEach(e=>{s(e.bone),e.excludes&&e.excludes.forEach(e=>{s(e.bone)})}),this.objectsUpdate.sort((e,a)=>t.get(e)-t.get(a))}setup(e,t,a){this.dispose();let r=(e,t)=>{if(!e)throw this.dispose(),Error(t)};r(null==e?void 0:e.isScene,"First parameter must be Scene."),this.scene=e,r(null==t?void 0:t.isObject3D,"Second parameter must be the armature Object3D."),this.armature=t,r(Array.isArray(a),"Third parameter must be an array of bone configs."),this.config=a,this.config.forEach((e,t)=>{var a;let i="Config item #"+t+": ";r(e.bone,i+"Bone not specified.");let s=e.bone;r("string"==typeof s&&s.length>0,i+"Bone name must be a non-empty string.");let n=this.armature.getObjectByName(s);r(n,i+"Bone '"+s+"' not found."),r(null===(a=n.parent)||void 0===a?void 0:a.isBone,i+"Bone must have a parent bone."),r(this.data.every(e=>e.bone!==n),i+"Bone '"+s+"' already exists."),n.updateMatrixWorld(!0);let o={name:s,bone:n,boneParent:n.parent,vBasis:n.position.clone(),vWorld:n.parent.getWorldPosition(l).clone(),qBasis:n.parent.quaternion.clone(),l:n.position.length(),p:[0,0,0,0],v:[0,0,0,0],a:[0,0,0,0],ev:[0,0,0,0],ea:[0,0,0,0]};o.boneParent.matrixWorld.decompose(l,d,h),l.copy(m).applyQuaternion(d).setY(0).normalize(),d.premultiply(
1p.setFromUnitVectors(m,l).invert()).normalize(),o.qWorldInverseYaw=d.clone().normalize(),this.data.push(o),this.dict[s]=o;try{this.setValue(s,"type",e.type),this.setValue(s,"stiffness",e.stiffness),this.setValue(s,"damping",e.damping),this.setValue(s,"external",e.external),this.setValue(s,"limits",e.limits),this.setValue(s,"excludes",e.excludes),this.setValue(s,"deltaLocal",e.deltaLocal),this.setValue(s,"deltaWorld",e.deltaWorld),this.setValue(s,"pivot",e.pivot),this.setValue(s,"helper",e.helper)}catch(e){r(!1,i+e)}}),this.sortBones(),this.start()}update(e){let t,a,n,w,y;if(this.running){for(this.timerMs+=e,e>1e3&&(this.timerMs=0),e/=1e3,t=0,n=this.objectsUpdate.length;t<n;t++)(y=this.objectsUpdate[t]).updateMatrix(),null===y.parent?y.matrixWorld.copy(y.matrix):y.matrixWorld.multiplyMatrices(y.parent.matrixWorld,y.matrix),y.matrixWorldNeedsUpdate=!1;for(t=0,n=this.data.length;t<n;t++){if(y=this.data[t],l.copy(y.vWorld),u.copy(y.boneParent.matrixWorld),f.copy(u).invert(),y.vWorld.setFromMatrixPosition(u),l.applyMatrix4(f),l.length()>.5&&(console.info("Info: Unrealistic jump of "+l.length().toFixed(2)+" meters."),l.setLength(.5)),l.applyQuaternion(y.bone.quaternion),o[0]=l.x,o[1]=l.y,o[2]=-l.z,o[3]=l.length()/3,y.children)for(a=0,w=y.children.length;a<w;a++)r=y.children[a],o[0]-=r.v[0]*e/3,o[1]-=r.v[1]*e/3,o[2]+=r.v[2]*e/3,o[3]-=r.v[3]*e/3;if(r=this.opt.sensitivityFactor,o[0]*=y.ext*r,o[1]*=y.ext*r,o[2]*=y.ext*r,o[3]*=y.ext*r,y.isX&&(r=o[0]/e,y.ea[0]=(r-y.ev[0])/e,y.ev[0]=r,y.a[0]=-y.k[0]*y.p[0]-y.c[0]*y.v[0]-y.ea[0],y.p[0]+=y.v[0]*e+y.a[0]*e*e/2+o[0],r=y.v[0]+y.a[0]*e/2,r=-y.k[0]*y.p[0]-y.c[0]*r-y.ea[0],y.v[0]=y.v[0]+(r+y.a[0])*e/2),y.isY&&(r=o[1]/e,y.ea[1]=(r-y.ev[1])/e,y.ev[1]=r,y.a[1]=-y.k[1]*y.p[1]-y.c[1]*y.v[1]-y.ea[1],y.p[1]+=y.v[1]*e+y.a[1]*e*e/2+o[1],r=y.v[1]+y.a[1]*e/2,r=-y.k[1]*y.p[1]-y.c[1]*r-y.ea[1],y.v[1]=y.v[1]+(r+y.a[1])*e/2),y.isZ&&(r=o[2]/e,y.ea[2]=(r-y.ev[2])/e,y.ev[2]=r,y.a[2]=-y.k[2]*y.p[2]-y.c[2]*y.v[2]-y.ea[2],y.p[2]+=y.v[2]*e+y.a[2]*e*e/2+o[2],r=y.v[2]+y.a[2]*e/2,r=-y.k[2]*y.p[2]-y.c[2]*r-y.ea[2],y.v[2]=y.v[2]+(r+y.a[2])*e/2),y.isT&&(r=o[3]/e,y.ea[3]=(r-y.ev[3])/e,y.ev[3]=r,y.a[3]=-y.k[3]*y.p[3]-y.c[3]*y.v[3]-y.ea[3],y.p[3]+=y.v[3]*e+y.a[3]*e*e/2+o[3],r=y.v[3]+y.a[3]*e/2,r=-y.k[3]*y.p[3]-y.c[3]*r-y.ea[3],y.v[3]=y.v[3]+(r+y.a[3])*e/2),this.timerMs<this.opt.warmupMs&&(y.v[0]*=1e-4,y.p[0]*=1e-4,y.v[1]*=1e-4,y.p[1]*=1e-4,y.v[2]*=1e-4,y.p[2]*=1e-4,y.v[3]*=1e-4,y.p[3]*=1e-4),o[0]=y.p[0],o[1]=y.p[1],o[2]=y.p[2],o[3]=y.p[3],r=this.opt.movementFactor,o[0]*=r,o[1]*=r,o[2]*=r,o[3]*=r,y.dl&&(r=y.dl,o[0]+=r[0],o[1]+=r[1],o[2]+=r[2]),y.dw&&(r=y.dw,l.set(y.vBasis.x+o[0],y.vBasis.y+o[1],y.vBasis.z+o[2]),l.applyMatrix4(u),l.x+=r[0],l.y+=r[1],l.z+=r[2],l.applyMatrix4(f),o[0]+=l.x-y.vBasis.x,o[1]+=l.y-y.vBasis.y,o[2]+=l.z-y.vBasis.z),y.limits&&this.opt.isLimits&&((r=y.limits)[0]&&(null!==r[0][0]&&o[0]<r[0][0]&&(o[0]=r[0][0]),null!==r[0][1]&&o[0]>r[0][1]&&(o[0]=r[0][1])),r[1]&&(null!==r[1][0]&&o[1]<r[1][0]&&(o[1]=r[1][0]),null!==r[1][1]&&o[1]>r[1][1]&&(o[1]=r[1][1])),r[2]&&(null!==r[2][0]&&o[2]<r[2][0]&&(o[2]=r[2][0]),null!==r[2][1]&&o[2]>r[2][1]&&(o[2]=r[2][1])),r[3]&&(null!==r[3][0]&&o[3]<r[3][0]&&(o[3]=r[3][0]),null!==r[3][1]&&o[3]>r[3][1]&&(o[3]=r[3][1]))),y.isPoint)y.bone.position.set(y.vBasis.x+o[0],y.vBasis.y+o[1],y.vBasis.z-o[2]);else if(y.boneParent.quaternion.copy(y.qBasis),y.pivot&&this.opt.isPivots&&(y.boneParent.updateWorldMatrix(!1,!1),y.boneParent.matrixWorld.decompose(l,d,h),l.copy(m).applyQuaternion(d).setY(0).normalize(),d.premultiply(
1p.setFromUnitVectors(m,l).invert()).normalize(),y.boneParent.quaternion.multiply(d.invert()),y.boneParent.quaternion.multiply(y.qWorldInverseYaw)),y.isZ&&(r=Math.atan(o[0]/y.l),d.setFromAxisAngle(x,-r),y.boneParent.quaternion.multiply(d)),y.isY&&(r=y.l/3,r*=Math.tanh(o[1]/r),y.bone.position.setLength(y.l+r)),y.isX&&(r=Math.atan(o[2]/y.l),d.setFromAxisAngle(g,-r),y.boneParent.quaternion.multiply(d)),y.isT&&(r=1.5*Math.tanh(1.5*o[3]),d.setFromAxisAngle(v,-r),y.boneParent.quaternion.multiply(d)),y.boneParent.updateWorldMatrix(!1,!0),y.excludes&&this.opt.isExcludes)for(a=0,w=y.excludes.length;a<w;a++)r=y.excludes[a],h.set(0,0,0),r.deltaLocal&&(h.x+=r.deltaLocal[0],h.y+=r.deltaLocal[1],h.z+=r.deltaLocal[2]),h.applyMatrix4(r.bone.matrixWorld),f.copy(y.boneParent.matrixWorld).invert(),h.applyMatrix4(f),l.copy(y.bone.position),!(l.distanceToSquared(h)>=r.radiusSq)&&(s=l.length(),!((i=h.length())>r.radius+s)&&(i<Math.abs(r.radius-s)||(i=(i*i+s*s-r.radiusSq)/(2*i),h.normalize(),b.copy(h).multiplyScalar(i),i=Math.sqrt(s*s-i*i),l.subVectors(l,b).projectOnPlane(h).normalize().multiplyScalar(i),c.subVectors(y.vBasis,b).projectOnPlane(h).normalize(),(s=c.dot(l))<0&&(s=Math.sqrt(i*i-s*s),c.multiplyScalar(s),l.add(c)),l.add(b).normalize(),h.copy(y.bone.position).normalize(),d.setFromUnitVectors(h,l),y.boneParent.quaternion.premultiply(d),y.boneParent.updateWorldMatrix(!1,!0))))}this.helpers.isActive&&this.updateHelpers()}}showHelpers(e){if(this.hideHelpers(),this.helpers.isShowAll=void 0===e?this.helpers.isShowAll:!0===e,r=this.helpers,this.data.forEach(e=>{(this.helpers.isShowAll||!0===e.helper)&&(r.points.bones.push(e.bone),r.points.pivots.push(e.pivot),0!==e.type&&r.lines.bones.push(e.bone),e.excludes&&e.excludes.forEach(e=>{let t=!1;for(let a=0;a<r.excludes.bones.length;a++)if(r.excludes.bones[a]===e.bone&&r.excludes.radii[a]===e.radius&&(null!==r.excludes.deltaLocals[a]||null===e.deltaLocal)&&(null===r.excludes.deltaLocals[a]||null!==e.deltaLocal)&&!(null!==r.excludes.deltaLocals[a]&&r.excludes.deltaLocals[a].some((t,a)=>t!==e.deltaLocal[a]))){t=!0;break}t||(r.excludes.bones.push(e.bone),r.excludes.radii.push(e.radius),r.excludes.deltaLocals.push(e.deltaLocal?[...e.deltaLocal]:null),r.excludes.objects.push(null))}))}),r=this.helpers.excludes,this.opt.isExcludes&&r.bones.length&&r.bones.forEach((e,t)=>{let a=new n.Gu$(r.radii[t],6,6),i=new n.V9B({depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0,wireframe:!0,color:this.opt.helperExcludesColor});r.objects[t]=new n.eaF(a,i),r.objects[t].renderOrder=997,e.add(r.objects[t]),r.deltaLocals[t]&&r.objects[t].position.set(r.deltaLocals[t][0],r.deltaLocals[t][1],r.deltaLocals[t][2])}),(r=this.helpers.points).bones.length){this.helpers.isActive=!0;let e=new n.LoY,t=r.bones.map(e=>[0,0,0]).flat();e.setAttribute("position",new n.qtW(t,3));let a=new n.Q1f(this.opt.helperBoneColor1),i=new n.Q1f(this.opt.helperBoneColor2),s=r.pivots.map(e=>e&&this.opt.isPivots?[i.r,i.g,i.b]:[a.r,a.g,a.b]).flat();e.setAttribute("color",new n.qtW(s,3));let o=new n.BH$({depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0,size:.2,vertexColors:!0});r.object=new n.ONl(e,o),r.object.renderOrder=998,r.object.matrix=this.armature.matrixWorld,r.object.matrixAutoUpdate=!1,this.scene.add(r.object)}if((r=this.helpers.lines).bones.length){let e=new n.LoY,t=r.bones.map(e=>[0,0,0,0,0,0]).flat();e.setAttribute("position",new n.qtW(t,3));let a=new n.Q1f(this.opt.helperLinkColor1),i=new n.Q1f(this.opt.helperLinkColor2),s=r.bones.map(e=>[a.r,a.g,a.b,i.r,i.g,i.b]).flat();e.setAttribute("color",new n.qtW(s,3));let o=new n.mrM({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});r.object=new n.DXC(e,o),r.object.renderOrder=999,r.object.matrix=this.armature.matrixWorld,r.object.matrixAutoUpdate=!1,this.scene.add(r.object)}}updateHelpers(){if((r=this.helpers.points).bones.length){f.copy(this.armature.matrixWorld).invert();let e=r.object.geometry.getAttribute("position");for(let t=0,a=r.bones.length;t<a;t++)u.multiplyMatrices(f,r.bones[t].matrixWorld),l.setFromMatrixPosition(u),e.setXYZ(t,l.x,l.y,l.z);e.needsUpdate=!0,r.object.updateMatrixWorld()}if((r=this.helpers.lines).bones.length){f.copy(this.armature.matrixWorld).invert();let e=r.object.geometry.getAttribute("position");for(let t=0,a=0,i=r.bones.length;t<i;
1t++,a+=2)u.multiplyMatrices(f,r.bones[t].matrixWorld),l.setFromMatrixPosition(u),e.setXYZ(a,l.x,l.y,l.z),u.multiplyMatrices(f,r.bones[t].parent.matrixWorld),l.setFromMatrixPosition(u),e.setXYZ(a+1,l.x,l.y,l.z);e.needsUpdate=!0,r.object.updateMatrixWorld()}}hideHelpers(){[this.helpers.points,this.helpers.lines].forEach(e=>{e.bones=[],e.object&&(this.scene.remove(e.object),e.object.geometry.dispose(),e.object.material.dispose(),e.object=null)}),(r=this.helpers.excludes).objects.forEach((e,t)=>{e&&(r.bones[t].remove(e),e.geometry.dispose(),e.material.dispose())}),r.bones=[],r.deltaLocals=[],r.radii=[],r.objects=[],this.helpers.isActive=!1}start(){this.data.length&&(this.running=!0,this.timerMs=0,this.showHelpers())}stop(){this.running=!1,this.hideHelpers();for(let e=0,t=this.data.length;e<t;e++){let t=this.data[e];t.bone.position.copy(t.vBasis),t.boneParent.quaternion.copy(t.qBasis)}}dispose(){this.stop(),this.scene=null,this.armature=null,this.config=[],this.data=[],this.dict={},this.objectsUpdate=[],this.timerMs=0}constructor(e=null){this.opt=Object.assign({warmupMs:2e3,sensitivityFactor:1,movementFactor:1,isExcludes:!0,isPivots:!0,isLimits:!0,helperBoneColor1:0xff0000,helperBoneColor2:0xf7c5cc,helperLinkColor1:0xff0000,helperLinkColor2:255,helperExcludesColor:0xaaaaff},e||{}),this.scene=null,this.armature=null,this.config=[],this.data=[],this.dict={},this.objectsUpdate=[],this.helpers={isActive:!1,isShowAll:!1,points:{bones:[],pivots:[],object:null},lines:{bones:[],object:null},excludes:{bones:[],deltaLocals:[],radii:[],objects:[]}},this.running=!1,this.timerMs=0}}},723451:(e,t,a)=>{a.d(t,{N:()=>p});var r=a(380337);let i={type:"change"},s={type:"start"},n={type:"end"},o=new r.RlV,l=new r.Zcv,c=Math.cos(70*r.cj9.DEG2RAD),h=new r.Pq0,b=2*Math.PI,d={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};class p extends r.H2z{constructor(e,t=null){super(e,t),this.state=d.NONE,this.target=new r.Pq0,this.cursor=new r.Pq0,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:r.kBv.ROTATE,MIDDLE:r.kBv.DOLLY,RIGHT:r.kBv.PAN},this.touches={ONE:r.wtR.ROTATE,TWO:r.wtR.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new r.Pq0,this._lastQuaternion=new r.PTz,this._lastTargetPosition=new r.Pq0,this._quat=new r.PTz().setFromUnitVectors(e.up,new r.Pq0(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new r.YHV,this._sphericalDelta=new r.YHV,this._scale=1,this._panOffset=new r.Pq0,this._rotateStart=new r.I9Y,this._rotateEnd=new r.I9Y,this._rotateDelta=new r.I9Y,this._panStart=new r.I9Y,this._panEnd=new r.I9Y,this._panDelta=new r.I9Y,this._dollyStart=new r.I9Y,this._dollyEnd=new r.I9Y,this._dollyDelta=new r.I9Y,this._dollyDirection=new r.Pq0,this._mouse=new r.I9Y,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=f.bind(this),this._onPointerDown=u.bind(this),this._onPointerUp=m.bind(this),this._onContextMenu=T.bind(this),this._onMouseWheel=x.bind(this),this._onKeyDown=w.bind(this),this._onTouchStart=y.bind(this),this._onTouchMove=k.bind(this),this._onMouseDown=g.bind(this),this._onMouseMove=v.bind(this),this._interceptControlDown=A.bind(this),this._interceptControlUp=E.bind(this),null!==this.domElement&&this.connect(this.domElement),this.update()}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){null!==this._domElementKeyEvents&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(i),this.update(),this.state=d.NONE}update(e=null){let t=this.object.position;h.copy(t).sub(this.target),h.applyQuaternion(this._quat),this._spherical.setFromVector3(h),this.autoRotate&&this.state===d.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let a=this.minAzimuthAngle,s=this.maxAzimuthAngle;isFinite(a)&&isFinite(s)&&(a<-Math.PI?a+=b:a>Math.PI&&(a-=b),s<-Math.PI?s+=b:s>Math.PI&&(s-=b),a<=s?this._spherical.theta=Math.max(a,Math.min(s,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(a+s)/2?Math.max(a,this._spherical.theta):Math.min(s,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),!0===this.enableDamping?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radiu
1s=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=e!=this._spherical.radius}if(h.setFromSpherical(this._spherical),h.applyQuaternion(this._quatInverse),t.copy(this.target).add(h),this.object.lookAt(this.target),!0===this.enableDamping?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=h.length();e=this._clampDistance(t*this._scale);let a=t-e;this.object.position.addScaledVector(this._dollyDirection,a),this.object.updateMatrixWorld(),n=!!a}else if(this.object.isOrthographicCamera){let t=new r.Pq0(this._mouse.x,this._mouse.y,0);t.unproject(this.object);let a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=a!==this.object.zoom;let i=new r.Pq0(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(t),this.object.updateMatrixWorld(),e=h.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;null!==e&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(o.origin.copy(this.object.position),o.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(o.direction))<c?this.object.lookAt(this.target):(l.setFromNormalAndCoplanarPoint(this.object.up,this.target),o.intersectPlane(l,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),n=!0)}return this._scale=1,this._performCursorZoom=!1,!!(n||this._lastPosition.distanceToSquared(this.object.position)>1e-6||8*(1-this._lastQuaternion.dot(this.object.quaternion))>1e-6||this._lastTargetPosition.distanceToSquared(this.target)>1e-6)&&(this.dispatchEvent(i),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0)}_getAutoRotationAngle(e){return null!==e?b/60*this.autoRotateSpeed*e:b/60/60*this.autoRotateSpeed}_getZoomScale(e){let t=Math.abs(.01*e);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){h.setFromMatrixColumn(t,0),h.multiplyScalar(-e),this._panOffset.add(h)}_panUp(e,t){!0===this.screenSpacePanning?h.setFromMatrixColumn(t,1):(h.setFromMatrixColumn(t,0),h.crossVectors(this.object.up,h)),h.multiplyScalar(e),this._panOffset.add(h)}_pan(e,t){let a=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;h.copy(r).sub(this.target);let i=h.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/a.clientHeight,this.object.matrix),this._panUp(2*t*i/a.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/a.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/a.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let a=this.domElement.getBoundingClientRect(),r=e-a.left,i=t-a.top,s=a.width,n=a.height;this._mouse.x=r/s*2-1,this._mouse.y=-(i/n*2)+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(b*this._rotateDelta.x/t.clientHeight),this._rotateUp(b*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(b*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-b*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(b*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-b*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(1===this._pointers.length)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),a=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(a,r)}}_handleTouchStartPan(e){if(1===this._pointers.length)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),a=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(a,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),a=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(a*a+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(1==this._pointers.length)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),a=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(a,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(b*this._rotateDelta.x/t.clientHeight),this._rotateUp(b*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(1===this._pointers.length)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),a=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(a,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),a=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(a*a+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let s=(e.pageX+t.x)*.5,n=(e.pageY+t.y)*.5;this._updateZoomParameters(s,n)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];void 0===t&&(t=new r.I9Y,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,a={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:a.deltaY*=16;break;case 2:a.deltaY*=100}return e.ctrlKey&&!this._controlActive&&(a.deltaY*=10),a}}function u(e){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),this._isTrackingPointer(e)||(this._addPointer(e),"touch"===e.pointerType?this._onTouchStart(e):this._onMouseDown(e)))}function f(e){!1!==this.enabled&&("touch"===e.pointerType?this._onTouchMove(e):this._onMouseMove(e))}function m(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(n),this.state=d.NONE;break;case 1:let t=this._pointers[0],a=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:a.x,pageY:a.y})}}function g(e){let t;switch(e.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=-1}switch(t){case r.kBv.DOLLY:if(!1===this.enableZoom)return;this._handleMouseDownDolly(e),this.state=d.DOLLY;break;case r.kBv.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===this.enablePan)return;this._handleMouseDownPan(e),this.state=d.PAN}else{if(!1===this.enableRotate)return;this._handleMouseDownRotate(e),this.state=d.ROTATE}break;case r.kBv.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===this.enableRotate)return;this._handleMouseDownRotate(e),this.state=d.ROTATE}else{if(!1===this.enablePan)return;this._handleMouseDownPan(e),this.state=d.PAN}break;default:this.state=d.NONE}this.state!==d.NONE&&this.dispatchEvent(s)}function v(e){switch(this.state){case d.ROTATE:if(!1===this.enableRotate)return;this._handleMouseMoveRotate(e);break;case d.DOLLY:if(!1===this.enableZoom)return;this._handleMouseMoveDolly(e);break;case d.PAN:if(!1===this.enablePan)return;this._handleMouseMovePan(e)}}function x(e){!1!==this.enabled&&!1!==this.enableZoom&&this.state===d.NONE&&(e.preventDefault(),this.dispatchEvent(s),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(n))}function w(e){!1!==this.enabled&&this._handleKeyDown(e)}function y(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case r.wtR.ROTATE:if(!1===this.enableRotate)return;this._handleTouchStartRotate(e),this.state=d.TOUCH_ROTATE;break;case r.wtR.PAN:if(!1===this.enablePan)return;this._handleTouchStartPan(e),this.state=d.TOUCH_PAN;break;default:this.state=d.NONE}break;case 2:switch(this.touches.TWO){case r.wtR.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchStartDollyPan(e),this.state=d.TOUCH_DOLLY_PAN;break;case r.wtR.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchStartDollyRotate(e),this.state=d.TOUCH_DOLLY_ROTATE;break;default:this.state=d.NONE}break;default:this.state=d.NONE}this.state!==d.NONE&&this.dispatchEvent(s)}function k(e){switch(this._trackPointer(e),this.state){case d.TOUCH_ROTATE:if(!1===this.enableRotate)return;this._handleTouchMoveRotate(e),this.update();break;case d.TOUCH_PAN:if(!1===this.enablePan)return;this._handleTouchMovePan(e),this.update();break;case d.TOUCH_DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchMoveDollyPan(e),this.update();break;case d.TOUCH_DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=d.NONE}}function T(e){!1!==this.enabled&&e.preventDefault()}
1function A(e){"Control"===e.key&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function E(e){"Control"===e.key&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}},286741:(e,t,a)=>{a.d(t,{l:()=>i});var r=a(380337);class i extends r.Z58{constructor(){super();let e=new r.iNn;e.deleteAttribute("uv");let t=new r._4j({side:r.hsX}),a=new r._4j,i=new r.HiM(0xffffff,900,28,2);i.position.set(.418,16.199,.3),this.add(i);let n=new r.eaF(e,t);n.position.set(-.757,13.219,.717),n.scale.set(31.713,28.305,28.591),this.add(n);let o=new r.ZLX(e,a,6),l=new r.B69;l.position.set(-10.906,2.009,1.846),l.rotation.set(0,-.195,0),l.scale.set(2.328,7.905,4.651),l.updateMatrix(),o.setMatrixAt(0,l.matrix),l.position.set(-5.607,-.754,-.758),l.rotation.set(0,.994,0),l.scale.set(1.97,1.534,3.955),l.updateMatrix(),o.setMatrixAt(1,l.matrix),l.position.set(6.167,.857,7.803),l.rotation.set(0,.561,0),l.scale.set(3.927,6.285,3.687),l.updateMatrix(),o.setMatrixAt(2,l.matrix),l.position.set(-2.017,.018,6.124),l.rotation.set(0,.333,0),l.scale.set(2.002,4.566,2.064),l.updateMatrix(),o.setMatrixAt(3,l.matrix),l.position.set(2.291,-.756,-2.621),l.rotation.set(0,-.286,0),l.scale.set(1.546,1.552,1.496),l.updateMatrix(),o.setMatrixAt(4,l.matrix),l.position.set(-2.193,-.369,-5.547),l.rotation.set(0,.516,0),l.scale.set(3.875,3.487,2.986),l.updateMatrix(),o.setMatrixAt(5,l.matrix),this.add(o);let c=new r.eaF(e,s(50));c.position.set(-16.116,14.37,8.208),c.scale.set(.1,2.428,2.739),this.add(c);let h=new r.eaF(e,s(50));h.position.set(-16.109,18.021,-8.207),h.scale.set(.1,2.425,2.751),this.add(h);let b=new r.eaF(e,s(17));b.position.set(14.904,12.198,-1.832),b.scale.set(.15,4.265,6.331),this.add(b);let d=new r.eaF(e,s(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let p=new r.eaF(e,s(20));p.position.set(3.235,11.486,-12.541),p.scale.set(2.5,2,.1),this.add(p);let u=new r.eaF(e,s(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){let e=new Set;for(let t of(this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))}),e))t.dispose()}}function s(e){return new r.G_z({color:0,emissive:0xffffff,emissiveIntensity:e})}},28380:(e,t,a)=>{a.d(t,{f:()=>r});var r=function(){var e,t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=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("object"!=typeof WebAssembly)return{supported:!1};var r=WebAssembly.validate(t)?s("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:mea
1QpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEh
1oaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):s("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhH
1awcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb"),i=WebAssembly.instantiate(r,{}).then(function(t){(e=t.instance).exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),r=0;r<e.length;++r){var i=e.charCodeAt(r);t[r]=i>96?i-97:i>64?i-39:i+4}for(var s=0,r=0;r<e.length;++r)t[s++]=t[r]<60?a[t[r]]:(t[r]-60)*64+t[++r];return t.buffer.slice(0,s)}function n(e,t,a,r,i,s,n){var o=e.exports.sbrk,l=r+3&-4,c=o(l*i),h=o(s.length),b=new Uint8Array(e.exports.memory.buffer);b.set(s,h);var d=t(c,r,i,h,s.length);if(0==d&&n&&n(c,l,i),a.set(b.subarray(c,c+r*i)),o(c-o(0)),0!=d)throw Error("Malformed buffer data: "+d)}var o={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},c=[],h=0;function b(e){var t=e.data;if(!t.id)return self.close();self.ready.then(function(e){try{var a=new Uint8Array(t.count*t.size);n(e,e.exports[t.mode],a,t.count,t.size,t.source,e.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:"resolve",value:a},[a.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:"reject",value:e})}})}return{ready:i,supported:!0,useWorkers:function(e){!function(e){for(var t=new Blob(["self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(r)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+b.name+";
1"+n.toString()+b.toString()],{type:"text/javascript"}),a=URL.createObjectURL(t),i=c.length;i<e;++i)c[i]=function(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var a=e.data;t.pending-=a.count,t.requests[a.id][a.action](a.value),delete t.requests[a.id]},t}(a);for(var i=e;i<c.length;++i)c[i].object.postMessage({});c.length=e,URL.revokeObjectURL(a)}(e)},decodeVertexBuffer:function(t,a,r,i,s){n(e,e.exports.meshopt_decodeVertexBuffer,t,a,r,i,e.exports[o[s]])},decodeIndexBuffer:function(t,a,r,i){n(e,e.exports.meshopt_decodeIndexBuffer,t,a,r,i)},decodeIndexSequence:function(t,a,r,i){n(e,e.exports.meshopt_decodeIndexSequence,t,a,r,i)},decodeGltfBuffer:function(t,a,r,i,s,c){n(e,e.exports[l[s]],t,a,r,i,e.exports[o[c]])},decodeGltfBufferAsync:function(t,a,r,s,b){return c.length>0?function(e,t,a,r,i){for(var s=c[0],n=1;n<c.length;++n)c[n].pending<s.pending&&(s=c[n]);return new Promise(function(n,o){var l=new Uint8Array(a),c=++h;s.pending+=e,s.requests[c]={resolve:n,reject:o},s.object.postMessage({id:c,count:e,size:t,source:l,mode:r,filter:i},[l.buffer])})}(t,a,r,l[s],o[b]):i.then(function(){var i=new Uint8Array(t*a);return n(e,e.exports[l[s]],i,t,a,r,e.exports[o[b]]),i})}}}()},511938:(e,t,a)=>{a.d(t,{A:()=>i});var r=function(){var e=0,t=document.createElement("div");function a(e){return t.appendChild(e.dom),e}function i(a){for(var r=0;r<t.children.length;r++)t.children[r].style.display=r===a?"block":"none";e=a}t.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",t.addEventListener("click",function(a){a.preventDefault(),i(++e%t.children.length)},!1);var s=(performance||Date).now(),n=s,o=0,l=a(new r.Panel("FPS","#0ff","#002")),c=a(new r.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var h=a(new r.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:t,addPanel:a,showPanel:i,begin:function(){s=(performance||Date).now()},end:function(){o++;var e=(performance||Date).now();if(c.update(e-s,200),e>=n+1e3&&(l.update(1e3*o/(e-n),100),n=e,o=0,h)){var t=performance.memory;h.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){s=this.end()},domElement:t,setMode:i}};r.Panel=function(e,t,a){var r=1/0,i=0,s=Math.round,n=s(window.devicePixelRatio||1),o=80*n,l=48*n,c=3*n,h=2*n,b=3*n,d=15*n,p=74*n,u=30*n,f=document.createElement("canvas");f.width=o,f.height=l,f.style.cssText="width:80px;height:48px";var m=f.getContext("2d");return m.font="bold "+9*n+"px Helvetica,Arial,sans-serif",m.textBaseline="top",m.fillStyle=a,m.fillRect(0,0,o,l),m.fillStyle=t,m.fillText(e,c,h),m.fillRect(b,d,p,u),m.fillStyle=a,m.globalAlpha=.9,m.fillRect(b,d,p,u),{dom:f,update:function(l,g){r=Math.min(r,l),i=Math.max(i,l),m.fillStyle=a,m.globalAlpha=1,m.fillRect(0,0,o,d),m.fillStyle=t,m.fillText(s(l)+" "+e+" ("+s(r)+"-"+s(i)+")",c,h),m.drawImage(f,b+n,d,p-n,u,b,d,p-n,u),m.fillRect(b+p-n,d,n,u),m.fillStyle=a,m.globalAlpha=.9,m.fillRect(b+p-n,d,n,s((1-l/g)*u))}}};let i=r},237163:(e,t,a)=>{a.d(t,{Z:()=>s});var r=a(380337);let i=new WeakMap;class s extends r.aHM{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,a,i){let s=new r.Y9S(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,e=>{this.parse(e,t,i)},a,i)}parse(e,t,a=()=>{}){this.decodeDracoFile(e,t,null,null,r.er$,a).catch(a)}decodeDracoFile(e,t,a,i,s=r.Zr2,n=()=>{}){let o={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:s};
1return this.decodeGeometry(e,o).then(t).catch(n)}decodeGeometry(e,t){let a;let r=JSON.stringify(t);if(i.has(e)){let t=i.get(e);if(t.key===r)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let s=this.workerNextTaskID++,n=e.byteLength,o=this._getWorker(s,n).then(r=>(a=r,new Promise((r,i)=>{a._callbacks[s]={resolve:r,reject:i},a.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{a&&s&&this._releaseTask(a,s)}),i.set(e,{key:r,promise:o}),o}_createGeometry(e){let t=new r.LoY;e.index&&t.setIndex(new r.THS(e.index.array,1));for(let a=0;a<e.attributes.length;a++){let i=e.attributes[a],s=i.name,n=i.array,o=i.itemSize,l=new r.THS(n,o);"color"===s&&(this._assignVertexColorSpace(l,i.vertexColorSpace),l.normalized=n instanceof Float32Array==!1),t.setAttribute(s,l)}return t}_assignVertexColorSpace(e,t){if(t!==r.er$)return;let a=new r.Q1f;for(let t=0,i=e.count;t<i;t++)a.fromBufferAttribute(e,t),r.ppV.colorSpaceToWorking(a,r.er$),e.setXYZ(t,a.r,a.g,a.b)}_loadLibrary(e,t){let a=new r.Y9S(this.manager);return a.setPath(this.decoderPath),a.setResponseType(t),a.setWithCredentials(this.withCredentials),new Promise((t,r)=>{a.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,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 a=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=n.toString(),i=["/* draco decoder */",a,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join("\n");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 a=t.data;switch(a.type){case"decode":e._callbacks[a.id].resolve(a);break;case"error":e._callbacks[a.id].reject(a);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+a.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let a=this.workerPool[this.workerPool.length-1];return a._taskCosts[e]=t,a._taskLoad+=t,a})}_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 n(){let e,t;onmessage=function(a){let r=a.data;switch(r.type){case"init":e=r.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let i=r.buffer,s=r.taskConfig;t.then(e=>{let t=e.draco,a=new t.Decoder;try{let e=function(e,t,a,r){let i,s;let n=r.attributeIDs,o=r.attributeTypes,l=t.GetEncodedGeometryType(a);if(l===e.TRIANGULAR_MESH)i=new e.Mesh,s=t.DecodeArrayToMesh(a,a.byteLength,i);else if(l===e.POINT_CLOUD)i=new e.PointCloud,s=t.DecodeArrayToPointCloud(a,a.byteLength,i);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!s.ok()||0===i.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+s.error_msg());let c={index:null,attributes:[]};for(let a in n){let s,l;let h=self[o[a]];if(r.useUniqueIDs)l=n[a],s=t.GetAttributeByUniqueId(i,l);else{if(-1===(l=t.GetAttributeId(i,e[n[a]])))continue;s=t.GetAttribute(i,l)}let b=function(e,t,a,r,i,s){let n=s.num_components(),o=a.num_points()*n,l=o*i.BYTES_PER_ELEMENT,c=function(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}}(e,i),h=e._malloc(l);t.GetAttributeDataArrayForAllPoints(a,s,c,l,h);let b=new i(e.HEAPF32.buffer,h,o).slice();return e._free(h),{name:r,array:b,itemSize:n}}(e,t,i,a,h,s);
1"color"===a&&(b.vertexColorSpace=r.vertexColorSpace),c.attributes.push(b)}return l===e.TRIANGULAR_MESH&&(c.index=function(e,t,a){let r=3*a.num_faces(),i=4*r,s=e._malloc(i);t.GetTrianglesUInt32Array(a,i,s);let n=new Uint32Array(e.HEAPF32.buffer,s,r).slice();return e._free(s),{array:n,itemSize:1}}(e,t,i)),e.destroy(i),c}(t,a,new Int8Array(i),s),n=e.attributes.map(e=>e.array.buffer);e.index&&n.push(e.index.array.buffer),self.postMessage({type:"decode",id:r.id,geometry:e},n)}catch(e){console.error(e),self.postMessage({type:"error",id:r.id,error:e.message})}finally{t.destroy(a)}})}}}},862317:(e,t,a)=>{let r,i,s;a.d(t,{w:()=>eb});var n=a(380337),o={},l=function(e,t,a,r,i){var s=new Worker(o[t]||(o[t]=URL.createObjectURL(new Blob([e+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return s.onmessage=function(e){var t=e.data,a=t.$e$;if(a){var r=Error(a[0]);r.code=a[1],r.stack=a[2],i(r,null)}else i(null,t)},s.postMessage(a,r),s},c=Uint8Array,h=Uint16Array,b=Int32Array,d=new c([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),p=new c([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),u=new c([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=function(e,t){for(var a=new h(31),r=0;r<31;++r)a[r]=t+=1<<e[r-1];for(var i=new b(a[30]),r=1;r<30;++r)for(var s=a[r];s<a[r+1];++s)i[s]=s-a[r]<<5|r;return{b:a,r:i}},m=f(d,2),g=m.b,v=m.r;g[28]=258,v[258]=28;for(var x=f(p,0),w=x.b,y=x.r,k=new h(32768),T=0;T<32768;++T){var A=(43690&T)>>1|(21845&T)<<1;A=(61680&(A=(52428&A)>>2|(13107&A)<<2))>>4|(3855&A)<<4,k[T]=((65280&A)>>8|(255&A)<<8)>>1}for(var E=function(e,t,a){for(var r,i=e.length,s=0,n=new h(t);s<i;++s)e[s]&&++n[e[s]-1];var o=new h(t);for(s=1;s<t;++s)o[s]=o[s-1]+n[s-1]<<1;if(a){r=new h(1<<t);var l=15-t;for(s=0;s<i;++s)if(e[s])for(var c=s<<4|e[s],b=t-e[s],d=o[e[s]-1]++<<b,p=d|(1<<b)-1;d<=p;++d)r[k[d]>>l]=c}else for(s=0,r=new h(i);s<i;++s)e[s]&&(r[s]=k[o[e[s]-1]++]>>15-e[s]);return r},_=new c(288),T=0;T<144;++T)_[T]=8;for(var T=144;T<256;++T)_[T]=9;for(var T=256;T<280;++T)_[T]=7;for(var T=280;T<288;++T)_[T]=8;for(var R=new c(32),T=0;T<32;++T)R[T]=5;var P=E(_,9,1),S=E(R,5,1),j=function(e){for(var t=e[0],a=1;a<e.length;++a)e[a]>t&&(t=e[a]);return t},O=function(e,t,a){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&a},M=function(e,t){var a=t/8|0;return(e[a]|e[a+1]<<8|e[a+2]<<16)>>(7&t)},L=function(e){return(e+7)/8|0},F=function(e,t,a){return(null==t||t<0)&&(t=0),(null==a||a>e.length)&&(a=e.length),new c(e.subarray(t,a))}
1,D=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],I=function(e,t,a){var r=Error(t||D[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,I),!a)throw r;return r},N=function(e,t,a,r){var i=e.length,s=r?r.length:0;if(!i||t.f&&!t.l)return a||new c(0);var n=!a,o=n||2!=t.i,l=t.i;n&&(a=new c(3*i));var h=function(e){var t=a.length;if(e>t){var r=new c(Math.max(2*t,e));r.set(a),a=r}},b=t.f||0,f=t.p||0,m=t.b||0,v=t.l,x=t.d,y=t.m,k=t.n,T=8*i;do{if(!v){b=O(e,f,1);var A=O(e,f+1,3);if(f+=3,A){if(1==A)v=P,x=S,y=9,k=5;else if(2==A){var _=O(e,f,31)+257,R=O(e,f+10,15)+4,D=_+O(e,f+5,31)+1;f+=14;for(var N=new c(D),C=new c(19),H=0;H<R;++H)C[u[H]]=O(e,f+3*H,7);f+=3*R;for(var G=j(C),z=(1<<G)-1,U=E(C,G,1),H=0;H<D;){var q=U[O(e,f,z)];f+=15&q;var B=q>>4;if(B<16)N[H++]=B;else{var K=0,W=0;for(16==B?(W=3+O(e,f,3),f+=2,K=N[H-1]):17==B?(W=3+O(e,f,7),f+=3):18==B&&(W=11+O(e,f,127),f+=7);W--;)N[H++]=K}}var V=N.subarray(0,_),X=N.subarray(_);y=j(V),k=j(X),v=E(V,y,1),x=E(X,k,1)}else I(1)}else{var B=L(f)+4,Y=e[B-4]|e[B-3]<<8,Q=B+Y;if(Q>i){l&&I(0);break}o&&h(m+Y),a.set(e.subarray(B,Q),m),t.b=m+=Y,t.p=f=8*Q,t.f=b;continue}if(f>T){l&&I(0);break}}o&&h(m+131072);for(var J=(1<<y)-1,Z=(1<<k)-1,$=f;;$=f){var K=v[M(e,f)&J],ee=K>>4;if((f+=15&K)>T){l&&I(0);break}if(K||I(2),ee<256)a[m++]=ee;else if(256==ee){$=f,v=null;break}else{var et=ee-254;if(ee>264){var H=ee-257,ea=d[H];et=O(e,f,(1<<ea)-1)+g[H],f+=ea}var er=x[M(e,f)&Z],ei=er>>4;er||I(3),f+=15&er;var X=w[ei];if(ei>3){var ea=p[ei];X+=M(e,f)&(1<<ea)-1,f+=ea}if(f>T){l&&I(0);break}o&&h(m+131072);var es=m+et;if(m<X){var en=s-X,eo=Math.min(X,es);for(en+m<0&&I(3);m<eo;++m)a[m]=r[en+m]}for(;m<es;++m)a[m]=a[m-X]}}t.l=v,t.p=$,t.b=m,t.f=b,v&&(b=1,t.m=y,t.d=x,t.n=k)}while(!b);return m!=a.length&&n?F(a,0,m):a.subarray(0,m)},C=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8},H=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8,e[r+2]|=a>>16},G=function(e,t){for(var a=[],r=0;r<e.length;++r)e[r]&&a.push({s:r,f:e[r]});var i=a.length,s=a.slice();if(!i)return{t:V,l:0};if(1==i){var n=new c(a[0].s+1);return n[a[0].s]=1,{t:n,l:1}}a.sort(function(e,t){return e.f-t.f}),a.push({s:-1,f:25001});var o=a[0],l=a[1],b=0,d=1,p=2;for(a[0]={s:-1,f:o.f+l.f,l:o,r:l};d!=i-1;)o=a[a[b].f<a[p].f?b++:p++],l=a[b!=d&&a[b].f<a[p].f?b++:p++],a[d++]={s:-1,f:o.f+l.f,l:o,r:l};for(var u=s[0].s,r=1;r<i;++r)s[r].s>u&&(u=s[r].s);var f=new h(u+1),m=z(a[d-1],f,0);if(m>t){var r=0,g=0,v=m-t,x=1<<v;for(s.sort(function(e,t){return f[t.s]-f[e.s]||e.f-t.f});r<i;++r){var w=s[r].s;if(f[w]>t)g+=x-(1<<m-f[w]),f[w]=t;else break}for(g>>=v;g>0;){var y=s[r].s;f[y]<t?g-=1<<t-f[y]++-1:++r}for(;r>=0&&g;--r){var k=s[r].s;f[k]==t&&(--f[k],++g)}m=t}return{t:new c(f),l:m}},z=function(e,t,a){return -1==e.s?Math.max(z(e.l,t,a+1),z(e.r,t,a+1)):t[e.s]=a},U=function(e){for(var t=e.length;t&&!e[--t];);for(var a=new h(++t),r=0,i=e[0],s=1,n=function(e){a[r++]=e},o=1;o<=t;++o)if(e[o]==i&&o!=t)++s;else{if(!i&&s>2){for(;s>138;s-=138)n(32754);s>2&&(n(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(n(i),--s;s>6;s-=6)n(8304);s>2&&(n(s-3<<5|8208),s=0)}for(;s--;)n(i);s=1,i=e[o]}return{c:a.subarray(0,r),n:t}},q=function(e,t){for(var a=0,r=0;r<t.length;++r)a+=e[r]*t[r];return a},B=function(e,t,a){var r=a.length,i=L(t+2);e[i]=255&r,e[i+1]=r>>8,e[i+2]=255^e[i],e[i+3]=255^e[i+1];for(var s=0;s<r;++s)e[i+s+4]=a[s];return(i+4+r)*8},K=function(e,t,a,r,i,s,n,o,l,c,b){C(t,b++,a),++i[256];for(var f,m,g,v,x=G(i,15),w=x.t,y=x.l,k=G(s,15),T=k.t,A=k.l,P=U(w),S=P.c,j=P.n,O=U(T),M=O.c,L=O.n,F=new h(19),D=0;D<S.length;++D)++F[31&S[D]];for(var D=0;D<M.length;++D)++F[31&M[D]];for(var I=G(F,7),N=I.t,z=I.l,K=19;K>4&&!N[u[K-1]];--K);var W=c+5<<3,V=q(i,_)+q(s,R)+n,X=q(i,w)+q(s,T)+n+14+3*K+q(F,N)+2*
1F[16]+3*F[17]+7*F[18];if(l>=0&&W<=V&&W<=X)return B(t,b,e.subarray(l,l+c));if(C(t,b,1+(X<V)),b+=2,X<V){f=E(w,y,0),m=w,g=E(T,A,0),v=T;var Y=E(N,z,0);C(t,b,j-257),C(t,b+5,L-1),C(t,b+10,K-4),b+=14;for(var D=0;D<K;++D)C(t,b+3*D,N[u[D]]);b+=3*K;for(var Q=[S,M],J=0;J<2;++J)for(var Z=Q[J],D=0;D<Z.length;++D){var $=31&Z[D];C(t,b,Y[$]),b+=N[$],$>15&&(C(t,b,Z[D]>>5&127),b+=Z[D]>>12)}}else f=null,m=_,g=null,v=R;for(var D=0;D<o;++D){var ee=r[D];if(ee>255){var $=ee>>18&31;H(t,b,f[$+257]),b+=m[$+257],$>7&&(C(t,b,ee>>23&31),b+=d[$]);var et=31&ee;H(t,b,g[et]),b+=v[et],et>3&&(H(t,b,ee>>5&8191),b+=p[et])}else H(t,b,f[ee]),b+=m[ee]}return H(t,b,f[256]),b+m[256]},W=new b([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),V=new c(0),X=function(e,t,a,r,i,s){var n=s.z||e.length,o=new c(r+n+5*(1+Math.ceil(n/7e3))+i),l=o.subarray(r,o.length-i),u=s.l,f=7&(s.r||0);if(t){f&&(l[0]=s.r>>3);for(var m=W[t-1],g=m>>13,x=8191&m,w=(1<<a)-1,k=s.p||new h(32768),T=s.h||new h(w+1),A=Math.ceil(a/3),E=2*A,_=function(t){return(e[t]^e[t+1]<<A^e[t+2]<<E)&w},R=new b(25e3),P=new h(288),S=new h(32),j=0,O=0,M=s.i||0,D=0,I=s.w||0,N=0;M+2<n;++M){var C=_(M),H=32767&M,G=T[C];if(k[H]=G,T[C]=H,I<=M){var z=n-M;if((j>7e3||D>24576)&&(z>423||!u)){f=K(e,l,0,R,P,S,O,D,N,M-N,f),D=j=O=0,N=M;for(var U=0;U<286;++U)P[U]=0;for(var U=0;U<30;++U)S[U]=0}var q=2,V=0,X=x,Y=H-G&32767;if(z>2&&C==_(M-Y))for(var Q=Math.min(g,z)-1,J=Math.min(32767,M),Z=Math.min(258,z);Y<=J&&--X&&H!=G;){if(e[M+q]==e[M+q-Y]){for(var $=0;$<Z&&e[M+$]==e[M+$-Y];++$);if($>q){if(q=$,V=Y,$>Q)break;for(var ee=Math.min(Y,$-2),et=0,U=0;U<ee;++U){var ea=M-Y+U&32767,er=k[ea],ei=ea-er&32767;ei>et&&(et=ei,G=ea)}}}G=k[H=G],Y+=H-G&32767}if(V){R[D++]=0x10000000|v[q]<<18|y[V];var es=31&v[q],en=31&y[V];O+=d[es]+p[en],++P[257+es],++S[en],I=M+q,++j}else R[D++]=e[M],++P[e[M]]}}for(M=Math.max(M,I);M<n;++M)R[D++]=e[M],++P[e[M]];f=K(e,l,u,R,P,S,O,D,N,M-N,f),u||(s.r=7&f|l[f/8|0]<<3,f-=7,s.h=T,s.p=k,s.i=M,s.w=I)}else{for(var M=s.w||0;M<n+u;M+=65535){var eo=M+65535;eo>=n&&(l[f/8|0]=u,eo=n),f=B(l,f+1,e.subarray(M,eo))}s.i=n}return F(o,0,r+L(f)+i)},Y=function(){var e=1,t=0;return{p:function(a){for(var r=e,i=t,s=0|a.length,n=0;n!=s;){for(var o=Math.min(n+2655,s);n<o;++n)i+=r+=a[n];r=(65535&r)+15*(r>>16),i=(65535&i)+15*(i>>16)}e=r,t=i},d:function(){return e%=65521,t%=65521,(255&e)<<24|(65280&e)<<8|(255&t)<<8|t>>8}}},Q=function(e,t,a,r,i){if(!i&&(i={l:1},t.dictionary)){var s=t.dictionary.subarray(-32768),n=new c(s.length+e.length);n.set(s),n.set(e,s.length),e=n,i.w=s.length}return X(e,null==t.level?6:t.level,null==t.mem?i.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):20:12+t.mem,a,r,i)},J=function(e,t){var a={};for(var r in e)a[r]=e[r];for(var r in t)a[r]=t[r];return a},Z=function(e,t,a){for(var r=e(),i=e.toString(),s=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),n=0;n<r.length;++n){var o=r[n],l=s[n];if("function"==typeof o){t+=";"+l+"=";var c=o.toString();if(o.prototype){if(-1!=c.indexOf("[native code]")){var h=c.indexOf(" ",8)+1;t+=c.slice(h,c.indexOf("(",h))}else for(var b in t+=c,o.prototype)t+=";"+l+".prototype."+b+"="+o.prototype[b].toString()}else t+=c}else a[l]=o}return t},$=function(e){var t=[];for(var a in e)e[a].buffer&&t.push((e[a]=new e[a].constructor(e[a])).buffer);return t},ee=function(e,t,a,r){if(!null[a]){for(var i="",s={},n=e.length-1,o=0;o<n;++o)i=Z(e[o],i,s);null[a]={c:Z(e[n],i,s),e:s}}var c=J({},null[a].e);return l(null[a].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+t.toString()+"}",a,c,$(c),r)},et=function(e){return postMessage(e,[e.buffer])},ea=function(e){return e&&{out:e.size&&new c(e.size),dictionary:e.dictionary}},er=function(e,t){return e[t]|e[t+1]<<8},ei=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},es=function(e,t){return ei(e,t)+0x100000000*ei(e,t+4)},en=function(e,t,a){for(;a;++t)e[t]=a,a>>>=8};function eo(e,t){return N(e,{i:2},t&&t.out,t&&t.dictionary)}var el="undefined"!=typeof TextDecoder&&new TextDecoder;try{el.decode(V,{stream:!0})}catch(e){}function ec(e,t,a){let r=a.length-e-1;if(t>=a[r])return r-1;if(t<=a[e])return e;let i=e,s=r,n=Math.floor((i+s)/2);for(;t<a[n]||t>=a[n+1];)t<a[n]?s=n:i=n,n=Math.floor((i+s)/2);return n}"function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout&&setTimeout;class eh extends n.Ipv{constructor(e,t,a,r,i){super();let s=t?t.length-1:0,o=a?a.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=i||s;for(let e=0;e<o;++e){let t=a[e];this.controlPoints[e]=new n.IUQ(t.x,t.y,t.z,t.w)}}getPoint(e,t=new n.Pq0){let a=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),r=function(e,t,a,r){let i=ec(e,r,t),s=function(e,t,a,r){let i=[],s=[],n=[];
1i[0]=1;for(let o=1;o<=a;++o){s[o]=t-r[e+1-o],n[o]=r[e+o]-t;let a=0;for(let e=0;e<o;++e){let t=n[e+1],r=s[o-e],l=i[e]/(t+r);i[e]=a+t*l,a=r*l}i[o]=a}return i}(i,r,e,t),o=new n.IUQ(0,0,0,0);for(let t=0;t<=e;++t){let r=a[i-e+t],n=s[t],l=r.w*n;o.x+=r.x*l,o.y+=r.y*l,o.z+=r.z*l,o.w+=r.w*n}return o}(this.degree,this.knots,this.controlPoints,a);return 1!==r.w&&r.divideScalar(r.w),t.set(r.x,r.y,r.z)}getTangent(e,t=new n.Pq0){var a;let r=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),i=(a=this.degree,function(e){let t=e.length,a=[],r=[];for(let i=0;i<t;++i){let t=e[i];a[i]=new n.Pq0(t.x,t.y,t.z),r[i]=t.w}let i=[];for(let e=0;e<t;++e){let t=a[e].clone();for(let a=1;a<=e;++a)t.sub(i[e-a].clone().multiplyScalar(function(e,t){let a=1;for(let t=2;t<=e;++t)a*=t;let r=1;for(let e=2;e<=t;++e)r*=e;for(let a=2;a<=e-t;++a)r*=a;return a/r}(e,a)*r[a]));i[e]=t.divideScalar(r[0])}return i}(function(e,t,a,r,i){let s=1<e?1:e,o=[],l=ec(e,r,t),c=function(e,t,a,r,i){let s=[];for(let e=0;e<=a;++e)s[e]=0;let n=[];for(let e=0;e<=r;++e)n[e]=s.slice(0);let o=[];for(let e=0;e<=a;++e)o[e]=s.slice(0);o[0][0]=1;let l=s.slice(0),c=s.slice(0);for(let r=1;r<=a;++r){l[r]=t-i[e+1-r],c[r]=i[e+r]-t;let a=0;for(let e=0;e<r;++e){let t=c[e+1],i=l[r-e];o[r][e]=t+i;let s=o[e][r-1]/o[r][e];o[e][r]=a+t*s,a=i*s}o[r][r]=a}for(let e=0;e<=a;++e)n[0][e]=o[e][a];for(let e=0;e<=a;++e){let t=0,i=1,l=[];for(let e=0;e<=a;++e)l[e]=s.slice(0);l[0][0]=1;for(let s=1;s<=r;++s){let r=0,c=e-s,h=a-s;e>=s&&(l[i][0]=l[t][0]/o[h+1][c],r=l[i][0]*o[c][h]);let b=c>=-1?1:-c,d=e-1<=h?s-1:a-e;for(let e=b;e<=d;++e)l[i][e]=(l[t][e]-l[t][e-1])/o[h+1][c+e],r+=l[i][e]*o[c+e][h];e<=h&&(l[i][s]=-l[t][s-1]/o[h+1][e],r+=l[i][s]*o[e][h]),n[s][e]=r;let p=t;t=i,i=p}}let h=a;for(let e=1;e<=r;++e){for(let t=0;t<=a;++t)n[e][t]*=h;h*=a-e}return n}(l,r,e,s,t),h=[];for(let e=0;e<a.length;++e){let t=a[e].clone(),r=t.w;t.x*=r,t.y*=r,t.z*=r,h[e]=t}for(let t=0;t<=s;++t){let a=h[l-e].clone().multiplyScalar(c[t][0]);for(let r=1;r<=e;++r)a.add(h[l-e+r].clone().multiplyScalar(c[t][r]));o[t]=a}for(let e=s+1;e<=i+1;++e)o[e]=new n.IUQ(0,0,0);return o}(a,this.knots,this.controlPoints,r,1)));return t.copy(i[1]).normalize(),t}toJSON(){let e=super.toJSON();return e.degree=this.degree,e.knots=[...this.knots],e.controlPoints=this.controlPoints.map(e=>e.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(e=>new n.IUQ(e[0],e[1],e[2],e[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}}class eb extends n.aHM{constructor(e){super(e)}load(e,t,a,r){let i=this,s=""===i.path?n.r6x.extractUrlBase(e):i.path,o=new n.Y9S(this.manager);o.setPath(i.path),o.setResponseType("arraybuffer"),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(a){try{t(i.parse(a,s))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},a,r)}parse(e,t){if(function(e){let t="Kaydara FBX Binary  \0";return e.byteLength>=t.length&&t===eP(e,0,t.length)}(e))r=new em().parse(e);else{let t=eP(e);if(!function(e){let t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],a=0;for(let r=0;r<t.length;++r)if(function(t){let r=e[0];return e=e.slice(a+1),a++,r}(0)===t[r])return!1;return!0}(t))throw Error("THREE.FBXLoader: Unknown format.");if(7e3>ex(t))throw Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+ex(t));r=new ef().parse(t)}return new ed(new n.Tap(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),this.manager).parse(r)}}class ed{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){i=this.parseConnections();let e=this.parseImages(),t=this.parseTextures(e),a=this.parseMaterials(t),r=this.parseDeformers(),n=new ep().parse(r);return this.parseScene(r,n,a),s}parseConnections(){let e=new Map;return"Connections"in r&&r.Connections.connections.forEach(function(t){let a=t[0],r=t[1],i=t[2];e.has(a)||e.set(a,{parents:[],children:[]}),e.get(a).parents.push({ID:r,relationship:i}),e.has(r)||e.set(r,{parents:[],children:[]}),e.get(r).children.push({ID:a,relationship:i})}),e}parseImages(){let e={},t={};if("Video"in r.Objects){let a=r.Objects.Video;for(let r in a){let i=a[r];if(e[parseInt(r)]=i.RelativeFilename||i.Filename,"Content"in i){let e=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,s="string"==typeof i.Content&&""!==i.Content;if(e||s){let e=this.parseImage(a[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let a in e){let r=e[a];void 0!==t[r]?e[a]=t[r]:e[a]=e[a].split("\\").pop()}return e}parseImage(e){let t;let a=e.Content,r=e.RelativeFilename||e.Filename,i=r.slice(r.lastIndexOf(".")+1).toLowerCase();switch(i){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",r),t="image/tga";break;case"webp":t="image/webp";break;default:console.warn('FBXLoader: Image type "'+i+'" is not supported.');return}if("string"==typeof a)return"data:"+t+";base64,"+a;{let e=new Uint8Array(a);return window.URL.createObjectURL(new Blob([e],{type:t}))}}parseTextures(e){let t=new Map;if("Texture"in r.Objects){let a=r.Objects.Texture;for(let r in a){let i=this.parseTexture(a[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let a=this.loadTexture(e,t);a.ID=e.id,a.name=e.attrName;let r=e.WrapModeU,i=e.WrapModeV,s=void 0!==r?r.value:0,o=void 0!==i?i.value:0;if(a.wrapS=0===s?n.GJx:n.ghU,a.wrapT=0===o?n.GJx:n.ghU,"Scaling"in e){let t=e.Scaling.value;a.repeat.x=t[0],a.repeat.y=t[1]}if("Translation"in e){let t=e.Translation.value;a.offset.x=t[0],a.offset.y=t[1]}return a}loadTexture(e,t){let a;let r=e.FileName.split(".").pop().toLowerCase(),s=this.manager.getHandler(`.${r}`);null===s&&(s=this.textureLoader);let o=s.path;o||s.setPath(this.textureLoader.path);let l=i.get(e.id).children;if(void 0!==l&&l.length>0&&void 0!==t[l[0].ID]&&(0===(a=t[l[0].ID]).indexOf("blob:")||0===a.indexOf("data:"))&&s.setPath(void 0),void 0===a)return console.warn("FBXLoader: Undefined filename, creating placeholder texture."),new n.gPd;let c=s.load(a);return s.setPath(o),c}parseMaterials(e){let t=new Map;if("Material"in r.Objects){let a=r.Objects.Material;for(let r in a){let i=this.parseMaterial(a[r],e);null!==i&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let a;let r=e.id,s=e.attrName,o=e.ShadingModel;if("object"==typeof o&&(o=o.value),!i.has(r))return null;let l=this.parseParameters(e,t,r);switch(o.toLowerCase()){case"phong":a=new n.tXL;break;case"lambert":a=new n.G_z;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',o),a=new n.tXL}return a.setValues(l),a.name=s,a}parseParameters(e,t,a){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.Diffuse.value),n.er$):e.DiffuseColor&&("Color"===e.DiffuseColor.type||"ColorRGB"===e.DiffuseColor.type)&&(r.color=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.DiffuseColor.value),n.er$)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.Emissive.value),n.er$):e.EmissiveColor&&("Color"===e.EmissiveColor.type||"ColorRGB"===e.EmissiveColor.type)&&(r.emissive=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.EmissiveColor.value),n.er$)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),r.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(1===r.opacity||0===r.opacity)&&(r.opacity=e.Opacity?parseFloat(e.Opacity.value):null,null===r.opacity&&(r.opacity=1-(e.TransparentColor?parseFloat(e.TransparentColor.value[0]):0))),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.Specular.value),n.er$):e.SpecularColor&&"Color"===e.SpecularColor.type&&(r.specular=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(e.SpecularColor.value),n.er$));let s=this;
1return i.get(a).children.forEach(function(e){let a=e.relationship;switch(a){case"Bump":r.bumpMap=s.getTexture(t,e.ID);break;case"Maya|TEX_ao_map":r.aoMap=s.getTexture(t,e.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=s.getTexture(t,e.ID),void 0!==r.map&&(r.map.colorSpace=n.er$);break;case"DisplacementColor":r.displacementMap=s.getTexture(t,e.ID);break;case"EmissiveColor":r.emissiveMap=s.getTexture(t,e.ID),void 0!==r.emissiveMap&&(r.emissiveMap.colorSpace=n.er$);break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=s.getTexture(t,e.ID);break;case"ReflectionColor":r.envMap=s.getTexture(t,e.ID),void 0!==r.envMap&&(r.envMap.mapping=n.wfO,r.envMap.colorSpace=n.er$);break;case"SpecularColor":r.specularMap=s.getTexture(t,e.ID),void 0!==r.specularMap&&(r.specularMap.colorSpace=n.er$);break;case"TransparentColor":case"TransparencyFactor":r.alphaMap=s.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a)}}),r}getTexture(e,t){return"LayeredTexture"in r.Objects&&t in r.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=i.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if("Deformer"in r.Objects){let a=r.Objects.Deformer;for(let r in a){let s=a[r],n=i.get(parseInt(r));if("Skin"===s.attrType){let t=this.parseSkeleton(n,a);t.ID=r,n.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),t.geometryID=n.parents[0].ID,e[r]=t}else if("BlendShape"===s.attrType){let e={id:r};e.rawTargets=this.parseMorphTargets(n,a),e.id=r,n.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let a=[];return e.children.forEach(function(e){let r=t[e.ID];if("Cluster"!==r.attrType)return;let i={ID:e.ID,indices:[],weights:[],transformLink:new n.kn4().fromArray(r.TransformLink.a)};"Indexes"in r&&(i.indices=r.Indexes.a,i.weights=r.Weights.a),a.push(i)}),{rawBones:a,bones:[]}}parseMorphTargets(e,t){let a=[];for(let r=0;r<e.children.length;r++){let s=e.children[r],n=t[s.ID],o={name:n.attrName,initialWeight:n.DeformPercent,id:n.id,fullWeights:n.FullWeights.a};if("BlendShapeChannel"!==n.attrType)return;o.geoID=i.get(parseInt(s.ID)).children.filter(function(e){return void 0===e.relationship})[0].ID,a.push(o)}return a}parseScene(e,t,a){s=new n.YJl;let o=this.parseModels(e.skeletons,t,a),l=r.Objects.Model,c=this;o.forEach(function(e){let t=l[e.ID];c.setLookAtProperties(e,t),i.get(e.ID).parents.forEach(function(t){let a=o.get(t.ID);void 0!==a&&a.add(e)}),null===e.parent&&s.add(e)}),this.bindSkeleton(e.skeletons,t,o),this.addGlobalSceneSettings(),s.traverse(function(e){if(e.userData.transformData){e.parent&&(e.userData.transformData.parentMatrix=e.parent.matrix,e.userData.transformData.parentMatrixWorld=e.parent.matrixWorld);let t=eE(e.userData.transformData);e.applyMatrix4(t),e.updateWorldMatrix()}});let h=new eu().parse();1===s.children.length&&s.children[0].isGroup&&(s.children[0].animations=h,s=s.children[0]),s.animations=h}parseModels(e,t,a){let s=new Map,o=r.Objects.Model;for(let r in o){let l=parseInt(r),c=o[r],h=i.get(l),b=this.buildSkeleton(h,e,l,c.attrName);if(!b){switch(c.attrType){case"Camera":b=this.createCamera(h);break;case"Light":b=this.createLight(h);break;case"Mesh":b=this.createMesh(h,t,a);break;case"NurbsCurve":b=this.createCurve(h,t);break;case"LimbNode":case"Root":b=new n.$Kf;break;default:b=new n.YJl}b.name=c.attrName?n.Nwf.sanitizeNodeName(c.attrName):"",b.userData.originalName=c.attrName,b.ID=l}this.getTransformData(b,c),s.set(l,b)}return s}buildSkeleton(e,t,a,r){let i=null;return e.parents.forEach(function(e){for(let s in t){let o=t[s];o.rawBones.forEach(function(t,s){if(t.ID===e.ID){let e=i;(i=new n.$Kf).matrixWorld.copy(t.transformLink),i.name=r?n.Nwf.sanitizeNodeName(r):"",i.userData.originalName=r,i.ID=a,o.bones[s]=i,null!==e&&i.add(e)}})}}),i}createCamera(e){let t,a;
1if(e.children.forEach(function(e){let t=r.Objects.NodeAttribute[e.ID];void 0!==t&&(a=t)}),void 0===a)t=new n.B69;else{let e=0;void 0!==a.CameraProjectionType&&1===a.CameraProjectionType.value&&(e=1);let r=1;void 0!==a.NearPlane&&(r=a.NearPlane.value/1e3);let i=1e3;void 0!==a.FarPlane&&(i=a.FarPlane.value/1e3);let s=window.innerWidth,o=window.innerHeight;void 0!==a.AspectWidth&&void 0!==a.AspectHeight&&(s=a.AspectWidth.value,o=a.AspectHeight.value);let l=s/o,c=45;void 0!==a.FieldOfView&&(c=a.FieldOfView.value);let h=a.FocalLength?a.FocalLength.value:null;switch(e){case 0:t=new n.ubm(c,l,r,i),null!==h&&t.setFocalLength(h);break;case 1:console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."),t=new n.B69;break;default:console.warn("THREE.FBXLoader: Unknown camera type "+e+"."),t=new n.B69}}return t}createLight(e){let t,a;if(e.children.forEach(function(e){let t=r.Objects.NodeAttribute[e.ID];void 0!==t&&(a=t)}),void 0===a)t=new n.B69;else{let e;e=void 0===a.LightType?0:a.LightType.value;let r=0xffffff;void 0!==a.Color&&(r=n.ppV.colorSpaceToWorking(new n.Q1f().fromArray(a.Color.value),n.er$));let i=void 0===a.Intensity?1:a.Intensity.value/100;void 0!==a.CastLightOnObject&&0===a.CastLightOnObject.value&&(i=0);let s=0;switch(void 0!==a.FarAttenuationEnd&&(s=void 0!==a.EnableFarAttenuation&&0===a.EnableFarAttenuation.value?0:a.FarAttenuationEnd.value),e){case 0:t=new n.HiM(r,i,s,1);break;case 1:t=new n.ZyN(r,i);break;case 2:let o=Math.PI/3;void 0!==a.InnerAngle&&(o=n.cj9.degToRad(a.InnerAngle.value));let l=0;void 0!==a.OuterAngle&&(l=Math.max(l=n.cj9.degToRad(a.OuterAngle.value),1)),t=new n.nCl(r,i,s,o,l,1);break;default:console.warn("THREE.FBXLoader: Unknown light type "+a.LightType.value+", defaulting to a PointLight."),t=new n.HiM(r,i)}void 0!==a.CastShadows&&1===a.CastShadows.value&&(t.castShadow=!0)}return t}createMesh(e,t,a){let r;let i=null,s=null,o=[];if(e.children.forEach(function(e){t.has(e.ID)&&(i=t.get(e.ID)),a.has(e.ID)&&o.push(a.get(e.ID))}),o.length>1?s=o:o.length>0?s=o[0]:(s=new n.tXL({name:n.aHM.DEFAULT_MATERIAL_NAME,color:0xcccccc}),o.push(s)),"color"in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,a=i.groups.length;t<a;t++){let a=i.groups[t];(a.materialIndex<0||a.materialIndex>=o.length)&&(a.materialIndex=o.length,e=!0)}if(e){let e=new n.tXL;o.push(e)}}return i.FBX_Deformer?(r=new n.I46(i,s)).normalizeSkinWeights():r=new n.eaF(i,s),r}createCurve(e,t){let a=e.children.reduce(function(e,a){return t.has(a.ID)&&(e=t.get(a.ID)),e},null),r=new n.mrM({name:n.aHM.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new n.N1A(a,r)}getTransformData(e,t){let a={};"InheritType"in t&&(a.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?a.eulerOrder=e_(t.RotationOrder.value):a.eulerOrder=e_(0),"Lcl_Translation"in t&&(a.translation=t.Lcl_Translation.value),"PreRotation"in t&&(a.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(a.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(a.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(a.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(a.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(a.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(a.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(a.rotationPivot=t.RotationPivot.value),e.userData.transformData=a}setLookAtProperties(e,t){"LookAtProperty"in t&&i.get(e.ID).children.forEach(function(t){if("LookAtProperty"===t.relationship){let a=r.Objects.Model[t.ID];if("Lcl_Translation"in a){let t=a.Lcl_Translation.value;void 0!==e.target?(e.target.position.fromArray(t),s.add(e.target)):e.lookAt(new n.Pq0().fromArray(t))}}})}bindSkeleton(e,t,a){let r=this.parsePoseNodes();for(let s in e){let o=e[s];i.get(parseInt(o.ID)).parents.forEach(function(e){if(t.has(e.ID)){let t=e.ID;i.get(t).parents.forEach(function(e){a.has(e.ID)&&a.get(e.ID).bind(new n.EAD(o.bones),r[e.ID])})}})}}parsePoseNodes(){let e={};if("Pose"in r.Objects){let t=r.Objects.Pose;for(let a in t)if("BindPose"===t[a].attrType&&t[a].NbPoseNodes>0){let r=t[a].PoseNode;Array.isArray(r)?r.forEach(function(t){e[t.Node]=new n.kn4().fromArray(t.Matrix.a)}
1):e[r.Node]=new n.kn4().fromArray(r.Matrix.a)}}return e}addGlobalSceneSettings(){if("GlobalSettings"in r){if("AmbientColor"in r.GlobalSettings){let e=r.GlobalSettings.AmbientColor.value,t=e[0],a=e[1],i=e[2];if(0!==t||0!==a||0!==i){let e=new n.Q1f().setRGB(t,a,i,n.er$);s.add(new n.$p8(e,1))}}"UnitScaleFactor"in r.GlobalSettings&&(s.userData.unitScaleFactor=r.GlobalSettings.UnitScaleFactor.value)}}}class ep{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if("Geometry"in r.Objects){let a=r.Objects.Geometry;for(let r in a){let s=i.get(parseInt(r)),n=this.parseGeometry(s,a[r],e);t.set(parseInt(r),n)}}return!0===this.negativeMaterialIndices&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,a){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,a);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,a){let i=a.skeletons,s=[],n=e.parents.map(function(e){return r.Objects.Model[e.ID]});if(0===n.length)return;let o=e.children.reduce(function(e,t){return void 0!==i[t.ID]&&(e=i[t.ID]),e},null);e.children.forEach(function(e){void 0!==a.morphTargets[e.ID]&&s.push(a.morphTargets[e.ID])});let l=n[0],c={};"RotationOrder"in l&&(c.eulerOrder=e_(l.RotationOrder.value)),"InheritType"in l&&(c.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(c.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(c.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(c.scale=l.GeometricScaling.value);let h=eE(c);return this.genGeometry(t,o,s,h)}genGeometry(e,t,a,r){let i=new n.LoY;e.attrName&&(i.name=e.attrName);let s=this.parseGeoNode(e,t),o=this.genBuffers(s),l=new n.qtW(o.vertex,3);if(l.applyMatrix4(r),i.setAttribute("position",l),o.colors.length>0&&i.setAttribute("color",new n.qtW(o.colors,3)),t&&(i.setAttribute("skinIndex",new n.A$4(o.weightsIndices,4)),i.setAttribute("skinWeight",new n.qtW(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new n.dwI().getNormalMatrix(r),t=new n.qtW(o.normal,3);t.applyNormalMatrix(e),i.setAttribute("normal",t)}
1if(o.uvs.forEach(function(e,t){let a=0===t?"uv":`uv${t}`;i.setAttribute(a,new n.qtW(o.uvs[t],2))}),s.material&&"AllSame"!==s.material.mappingType){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(a,r){a!==e&&(i.addGroup(t,r-t,e),e=a,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],a=t.start+t.count;a!==o.materialIndex.length&&i.addGroup(a,o.materialIndex.length-a,e)}0===i.groups.length&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,a,r),i}parseGeoNode(e,t){let a={};if(a.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],a.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&e.LayerElementColor[0].Colors&&(a.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(a.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(a.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){a.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&a.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return a.weightTable={},null!==t&&(a.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){void 0===a.weightTable[r]&&(a.weightTable[r]=[]),a.weightTable[r].push({id:t,weight:e.weights[i]})})})),a}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},a=0,r=0,i=!1,s=[],n=[],o=[],l=[],c=[],h=[],b=this;return e.vertexIndices.forEach(function(d,p){let u;let f=!1;d<0&&(d^=-1,f=!0);let m=[],g=[];if(s.push(3*d,3*d+1,3*d+2),e.color){let t=ek(p,a,d,e.color);o.push(t[0],t[1],t[2])}if(e.skeleton){if(void 0!==e.weightTable[d]&&e.weightTable[d].forEach(function(e){g.push(e.weight),m.push(e.id)}),g.length>4){i||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),i=!0);let e=[0,0,0,0],t=[0,0,0,0];g.forEach(function(a,r){let i=a,s=m[r];t.forEach(function(t,a,r){if(i>t){r[a]=i,i=t;let n=e[a];e[a]=s,s=n}})}),m=e,g=t}for(;g.length<4;)g.push(0),m.push(0);for(let e=0;e<4;++e)c.push(g[e]),h.push(m[e])}if(e.normal){let t=ek(p,a,d,e.normal);n.push(t[0],t[1],t[2])}e.material&&"AllSame"!==e.material.mappingType&&(u=ek(p,a,d,e.material)[0])<0&&(b.negativeMaterialIndices=!0,u=0),e.uv&&e.uv.forEach(function(e,t){let r=ek(p,a,d,e);void 0===l[t]&&(l[t]=[]),l[t].push(r[0]),l[t].push(r[1])}),r++,f&&(b.genFace(t,e,s,u,n,o,l,c,h,r),a++,r=0,s=[],n=[],o=[],l=[],c=[],h=[])}),t}getNormalNewell(e){let t=new n.Pq0(0,0,0);for(let a=0;a<e.length;a++){let r=e[a],i=e[(a+1)%e.length];t.x+=(r.y-i.y)*(r.z+i.z),t.y+=(r.z-i.z)*(r.x+i.x),t.z+=(r.x-i.x)*(r.y+i.y)}return t.normalize(),t}getNormalTangentAndBitangent(e){let t=this.getNormalNewell(e),a=(Math.abs(t.z)>.5?new n.Pq0(0,1,0):new n.Pq0(0,0,1)).cross(t).normalize(),r=t.clone().cross(a).normalize();return{normal:t,tangent:a,bitangent:r}}flattenVertex(e,t,a){return new n.I9Y(e.dot(t),e.dot(a))}genFace(e,t,a,r,i,s,o,l,c,h){let b;if(h>3){let e=[],r=t.baseVertexPositions||t.vertexPositions;for(let t=0;t<a.length;t+=3)e.push(new n.Pq0(r[a[t]],r[a[t+1]],r[a[t+2]]));let{tangent:i,bitangent:s}=this.getNormalTangentAndBitangent(e),o=[];for(let t of e)o.push(this.flattenVertex(t,i,s));b=n.xJ6.triangulateShape(o,[])}else b=[[0,1,2]];for(let[n,h,d]of b)e.vertex.push(t.vertexPositions[a[3*n]]),e.vertex.push(t.vertexPositions[a[3*n+1]]),e.vertex.push(t.vertexPositions[a[3*n+2]]),e.vertex.push(t.vertexPositions[a[3*h]]),e.vertex.push(t.vertexPositions[a[3*h+1]]),e.vertex.push(t.vertexPositions[a[3*h+2]]),e.vertex.push(t.vertexPositions[a[3*d]]),e.vertex.push(t.vertexPositions[a[3*d+1]]),e.vertex.push(t.vertexPositions[a[3*d+2]]),t.skeleton&&(e.vertexWeights.push(l[4*n]),e.vertexWeights.push(l[4*n+1]),e.vertexWeights.push(l[4*n+2]),e.vertexWeights.push(l[4*n+3]),e.vertexWeights.push(l[4*h]),e.vertexWeights.push(l[4*h+1]),e.vertexWeights.push(l[4*h+2]),e.vertexWeights.push(l[4*h+3]),e.vertexWeights.push(l[4*d]),e.vertexWeights.push(l[4*d+1]),e.vertexWeights.push(l[4*d+2]),e.vertexWeights.push(l[4*d+3]),e.weightsIndices.push(c[4*n]),e.weightsIndices.push(c[4*n+1]),e.weightsIndices.push(c[4*n+2]),e.weightsIndices.push(c[4*n+3]),e.
1weightsIndices.push(c[4*h]),e.weightsIndices.push(c[4*h+1]),e.weightsIndices.push(c[4*h+2]),e.weightsIndices.push(c[4*h+3]),e.weightsIndices.push(c[4*d]),e.weightsIndices.push(c[4*d+1]),e.weightsIndices.push(c[4*d+2]),e.weightsIndices.push(c[4*d+3])),t.color&&(e.colors.push(s[3*n]),e.colors.push(s[3*n+1]),e.colors.push(s[3*n+2]),e.colors.push(s[3*h]),e.colors.push(s[3*h+1]),e.colors.push(s[3*h+2]),e.colors.push(s[3*d]),e.colors.push(s[3*d+1]),e.colors.push(s[3*d+2])),t.material&&"AllSame"!==t.material.mappingType&&(e.materialIndex.push(r),e.materialIndex.push(r),e.materialIndex.push(r)),t.normal&&(e.normal.push(i[3*n]),e.normal.push(i[3*n+1]),e.normal.push(i[3*n+2]),e.normal.push(i[3*h]),e.normal.push(i[3*h+1]),e.normal.push(i[3*h+2]),e.normal.push(i[3*d]),e.normal.push(i[3*d+1]),e.normal.push(i[3*d+2])),t.uv&&t.uv.forEach(function(t,a){void 0===e.uvs[a]&&(e.uvs[a]=[]),e.uvs[a].push(o[a][2*n]),e.uvs[a].push(o[a][2*n+1]),e.uvs[a].push(o[a][2*h]),e.uvs[a].push(o[a][2*h+1]),e.uvs[a].push(o[a][2*d]),e.uvs[a].push(o[a][2*d+1])})}addMorphTargets(e,t,a,i){if(0===a.length)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];let s=this;a.forEach(function(a){a.rawTargets.forEach(function(a){let n=r.Objects.Geometry[a.geoID];void 0!==n&&s.genMorphGeometry(e,t,n,i,a.name)})})}genMorphGeometry(e,t,a,r,i){let s=void 0!==t.Vertices?t.Vertices.a:[],o=void 0!==t.PolygonVertexIndex?t.PolygonVertexIndex.a:[],l=void 0!==a.Vertices?a.Vertices.a:[],c=void 0!==a.Indexes?a.Indexes.a:[],h=new Float32Array(3*e.attributes.position.count);for(let e=0;e<c.length;e++){let t=3*c[e];h[t]=l[3*e],h[t+1]=l[3*e+1],h[t+2]=l[3*e+2]}let b=this.genBuffers({vertexIndices:o,vertexPositions:h,baseVertexPositions:s}),d=new n.qtW(b.vertex,3);d.name=i||a.attrName,d.applyMatrix4(r),e.morphAttributes.position.push(d)}parseNormals(e){let t=e.MappingInformationType,a=e.ReferenceInformationType,r=e.Normals.a,i=[];return"IndexToDirect"===a&&("NormalIndex"in e?i=e.NormalIndex.a:"NormalsIndex"in e&&(i=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:i,mappingType:t,referenceType:a}}parseUVs(e){let t=e.MappingInformationType,a=e.ReferenceInformationType,r=e.UV.a,i=[];return"IndexToDirect"===a&&(i=e.UVIndex.a),{dataSize:2,buffer:r,indices:i,mappingType:t,referenceType:a}}parseVertexColors(e){let t=e.MappingInformationType,a=e.ReferenceInformationType,r=e.Colors.a,i=[];"IndexToDirect"===a&&(i=e.ColorIndex.a);for(let e=0,t=new n.Q1f;e<r.length;e+=4)t.fromArray(r,e),n.ppV.colorSpaceToWorking(t,n.er$),t.toArray(r,e);return{dataSize:4,buffer:r,indices:i,mappingType:t,referenceType:a}}parseMaterialIndices(e){let t=e.MappingInformationType,a=e.ReferenceInformationType;if("NoMappingInformation"===t)return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:a};let r=e.Materials.a,i=[];for(let e=0;e<r.length;++e)i.push(e);return{dataSize:1,buffer:r,indices:i,mappingType:t,referenceType:a}}parseNurbsGeometry(e){let t,a;let r=parseInt(e.Order);if(isNaN(r))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.Order,e.id),new n.LoY;let i=r-1,s=e.KnotVector.a,o=[],l=e.Points.a;for(let e=0,t=l.length;e<t;e+=4)o.push(new n.IUQ().fromArray(l,e));if("Closed"===e.Form)o.push(o[0]);else if("Periodic"===e.Form){t=i,a=s.length-1-t;for(let e=0;e<i;++e)o.push(o[e])}let c=new eh(i,s,o,t,a).getPoints(12*o.length);return new n.LoY().setFromPoints(c)}}class eu{parse(){let e=[],t=this.parseClips();if(void 0!==t)for(let a in t){let r=t[a],i=this.addClip(r);e.push(i)}return e}parseClips(){if(void 0===r.Objects.AnimationCurve)return;let e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);let t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){let e=r.Objects.AnimationCurveNode,t=new Map;for(let a in e){let r=e[a];if(null!==r.attrName.match(/S|R|T|DeformPercent/)){let e={id:r.id,attr:r.attrName,curves:{}};t.set(e.id,e)}}return t}parseAnimationCurves(e){let t=r.Objects.AnimationCurve;for(let a in t){let r={id:t[a].id,times:t[a].KeyTime.a.map(ew),values:t[a].KeyValueFloat.a},s=i.get(r.id);if(void 0!==s){let t=s.parents[0].ID,a=s.parents[0].relationship;a.match(/X/)?e.get(t).curves.x=r:a.match(/Y/)?e.get(t).curves.y=r:a.match(/Z/)?e.get(t).curves.z=r:a.match(/DeformPercent/)&&e.has(t)&&(e.get(t).curves.morph=r)}}}parseAnimationLayers(e){let t=r.Objects.AnimationLayer,a=new Map;for(let o in t){let t=[],l=i.get(parseInt(o));
1void 0!==l&&(l.children.forEach(function(a,o){if(e.has(a.ID)){let l=e.get(a.ID);if(void 0!==l.curves.x||void 0!==l.curves.y||void 0!==l.curves.z){if(void 0===t[o]){let e=i.get(a.ID).parents.filter(function(e){return void 0!==e.relationship})[0].ID;if(void 0!==e){let i=r.Objects.Model[e.toString()];if(void 0===i){console.warn("THREE.FBXLoader: Encountered a unused curve.",a);return}let l={modelName:i.attrName?n.Nwf.sanitizeNodeName(i.attrName):"",ID:i.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};s.traverse(function(e){e.ID===i.id&&(l.transform=e.matrix,e.userData.transformData&&(l.eulerOrder=e.userData.transformData.eulerOrder))}),l.transform||(l.transform=new n.kn4),"PreRotation"in i&&(l.preRotation=i.PreRotation.value),"PostRotation"in i&&(l.postRotation=i.PostRotation.value),t[o]=l}}t[o]&&(t[o][l.attr]=l)}else if(void 0!==l.curves.morph){if(void 0===t[o]){let e=i.get(a.ID).parents.filter(function(e){return void 0!==e.relationship})[0].ID,s=i.get(e).parents[0].ID,l=i.get(s).parents[0].ID,c=i.get(l).parents[0].ID,h=r.Objects.Model[c],b={modelName:h.attrName?n.Nwf.sanitizeNodeName(h.attrName):"",morphName:r.Objects.Deformer[e].attrName};t[o]=b}t[o][l.attr]=l}}}),a.set(parseInt(o),t))}return a}parseAnimStacks(e){let t=r.Objects.AnimationStack,a={};for(let r in t){let s=i.get(parseInt(r)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let n=e.get(s[0].ID);a[r]={name:t[r].attrName,layer:n}}return a}addClip(e){let t=[],a=this;return e.layer.forEach(function(e){t=t.concat(a.generateTracks(e))}),new n.tz3(e.name,-1,t)}generateTracks(e){let t=[],a=new n.Pq0,r=new n.Pq0;if(e.transform&&e.transform.decompose(a,new n.PTz,r),a=a.toArray(),r=r.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){let r=this.generateVectorTrack(e.modelName,e.T.curves,a,"position");void 0!==r&&t.push(r)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){let a=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);void 0!==a&&t.push(a)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){let a=this.generateVectorTrack(e.modelName,e.S.curves,r,"scale");void 0!==a&&t.push(a)}if(void 0!==e.DeformPercent){let a=this.generateMorphTrack(e);void 0!==a&&t.push(a)}return t}generateVectorTrack(e,t,a,r){let i=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(i,t,a);return new n.RiT(e+"."+r,i,s)}generateRotationTrack(e,t,a,r,i){let s,o;if(void 0!==t.x&&void 0!==t.y&&void 0!==t.z){let e=this.interpolateRotations(t.x,t.y,t.z,i);s=e[0],o=e[1]}let l=e_(0);void 0!==a&&((a=a.map(n.cj9.degToRad)).push(l),a=new n.O9p().fromArray(a),a=new n.PTz().setFromEuler(a)),void 0!==r&&((r=r.map(n.cj9.degToRad)).push(l),r=new n.O9p().fromArray(r),r=new n.PTz().setFromEuler(r).invert());let c=new n.PTz,h=new n.O9p,b=[];if(!o||!s)return new n.MBL(e+".quaternion",[0],[0]);for(let e=0;e<o.length;e+=3)h.set(o[e],o[e+1],o[e+2],i),c.setFromEuler(h),void 0!==a&&c.premultiply(a),void 0!==r&&c.multiply(r),e>2&&0>new n.PTz().fromArray(b,(e-3)/3*4).dot(c)&&c.set(-c.x,-c.y,-c.z,-c.w),c.toArray(b,e/3*4);return new n.MBL(e+".quaternion",s,b)}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,a=t.values.map(function(e){return e/100}),r=s.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new n.Hit(e.modelName+".morphTargetInfluences["+r+"]",t.times,a)}getTimesForAllAxes(e){let t=[];if(void 0!==e.x&&(t=t.concat(e.x.times)),void 0!==e.y&&(t=t.concat(e.y.times)),void 0!==e.z&&(t=t.concat(e.z.times)),(t=t.sort(function(e,t){return e-t})).length>1){let e=1,a=t[0];for(let r=1;r<t.length;r++){let i=t[r];i!==a&&(t[e]=i,a=i,e++)}t=t.slice(0,e)}return t}getKeyframeTrackValues(e,t,a){let r=[],i=-1,s=-1,n=-1;return e.forEach(function(e){if(t.x&&(i=t.x.times.indexOf(e)),t.y&&(s=t.y.times.indexOf(e)),t.z&&(n=t.z.times.indexOf(e)),-1!==i){let e=t.x.values[i];r.push(e),a[0]=e}else r.push(a[0]);if(-1!==s){let e=t.y.values[s];r.push(e),a[1]=e}else r.push(a[1]);if(-1!==n){let e=t.z.values[n];r.push(e),a[2]=e}else r.push(a[2])}),r}interpolateRotations(e,t,a,r){let i=[],s=[];i.push(e.times[0]),s.push(n.cj9.degToRad(e.values[0])),s.push(n.cj9.degToRad(t.values[0])),s.push(n.cj9.degToRad(a.values[0]));for(let o=1;o<e.values.length;o++){let l=[e.values[o-1],t.values[o-1],a.values[o-1]];if(isNaN(l[0])||isNaN(l[1])||isNaN(l[2]))continue;let c=l.map(n.cj9.degToRad),h=[e.values[o],t.values[o],a.values[o]];if(isNaN(h[0])||isNaN(h[1])||isNaN(h[2]))continue;let b=h.map(n.cj9.degToRad),d=[h[0]-l[0],h[1]-l[1],h[2]-l[2]],p=[Math.abs(d[0]),Math.abs(d[1]),Math.abs(d[2])];if(p[0]>=180||p[1]>=180||p[2]>=180){let t=Math.max(...p)/180,a=new n.O9p(...c,r),l=new n.O9p(...b,r),h=new n.PTz().setFromEuler(a),d=new n.PTz().setFromEuler(l);h.dot(d)&&d.set(-d.x,-d.y,-d.z,-d.w);let u=e.times[o-1],f=e.times[o]-u,m=new n.PTz,g=new n.O9p;for(let e=0;e<1;e+=1/t)m.copy(h.clone().slerp(d.clone(),e)),i.push(u+e*f),g.setFromQuaternion(m,r),s.push(g.x),s.push(g.y),s.push(g.z)}else i.push(e.times[o]),s.push(n.cj9.degToRad(e.values[o])),s.push(n.cj9.degToRad(t.values[o])),s.push(n.cj9.degToRad(a.values[o]))}return[i,s]}}class ef{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new ev,this.nodeStack=[],this.currentProp=[],this.currentPropName="";let t=this,a=e.split(/[\r\n]+/);return a.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),s=e.match(/^[\s\t]*$/);if(i||s)return;let n=e.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),o=e.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),l=e.match("^\\t{"+(t.currentIndent-1)+"}}");n?t.parseNodeBegin(e,n):o?t.parseNodeProperty(e,o,a[++r]):l?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let a=t[1].trim().replace(/^"/,"").replace(/"$/,""),r=t[2].split(",").map(function(e){return e.trim().replace(/^"/,"").replace(/"$/,"")}),i={name:a},s=this.parseNodeAttr(r),n=this.getCurrentNode();0===this.currentIndent?this.allNodes.add(a,i):a in n?("PoseNode"===a?n.PoseNode.push(i):void 0!==n[a].id&&(n[a]={},n[a][n[a].id]=n[a]),""!==s.id&&(n[a][s.id]=i)):"number"==typeof s.id?(n[a]={},n[a][s.id]=i):"Properties70"!==a&&("PoseNode"===a?n[a]=[i]:n[a]=i),"number"==typeof s.id&&(i.id=s.id),""!==s.name&&(i.attrName=s.name),""!==s.type&&(i.attrType=s.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];""!==e[0]&&isNaN(t=parseInt(e[0]))&&(t=e[0]);let a="",r="";return e.length>1&&(a=e[1].replace(/^(\w+)::/,""),r=e[2]),{id:t,name:a,type:r}}parseNodeProperty(e,t,a){let r=t[1].replace(/^"/,"").replace(/"$/,"").trim(),i=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===r&&","===i&&(i=a.replace(/"/g,"").replace(/,$/,"").trim());let s=this.getCurrentNode();
1if("Properties70"===s.name){this.parseNodeSpecialProperty(e,r,i);return}if("C"===r){let e=i.split(",").slice(1),t=parseInt(e[0]),a=parseInt(e[1]),n=i.split(",").slice(3);n=n.map(function(e){return e.trim().replace(/^"/,"")}),r="connections",function(e,t){for(let a=0,r=e.length,i=t.length;a<i;a++,r++)e[r]=t[a]}(i=[t,a],n),void 0===s[r]&&(s[r]=[])}"Node"===r&&(s.id=i),r in s&&Array.isArray(s[r])?s[r].push(i):"a"!==r?s[r]=i:s.a=i,this.setCurrentProp(s,r),"a"===r&&","!==i.slice(-1)&&(s.a=eR(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,","!==e.slice(-1)&&(t.a=eR(t.a))}parseNodeSpecialProperty(e,t,a){let r=a.split('",').map(function(e){return e.trim().replace(/^\"/,"").replace(/\s/,"_")}),i=r[0],s=r[1],n=r[2],o=r[3],l=r[4];switch(s){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=eR(l)}this.getPrevNode()[i]={type:s,type2:n,flag:o,value:l},this.setCurrentProp(this.getPrevNode(),i)}}class em{parse(e){let t=new eg(e);t.skip(23);let a=t.getUint32();if(a<6400)throw Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+a);let r=new ev;for(;!this.endOfContent(t);){let e=this.parseNode(t,a);null!==e&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let a={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let s=e.getUint8(),n=e.getString(s);if(0===r)return null;let o=[];for(let t=0;t<i;t++)o.push(this.parseProperty(e));let l=o.length>0?o[0]:"",c=o.length>1?o[1]:"",h=o.length>2?o[2]:"";for(a.singleProperty=1===i&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);null!==r&&this.parseSubNode(n,a,r)}return a.propertyList=o,"number"==typeof l&&(a.id=l),""!==c&&(a.attrName=c),""!==h&&(a.attrType=h),""!==n&&(a.name=n),a}parseSubNode(e,t,a){if(!0===a.singleProperty){let e=a.propertyList[0];Array.isArray(e)?(t[a.name]=a,a.a=e):t[a.name]=e}else if("Connections"===e&&"C"===a.name){let e=[];a.propertyList.forEach(function(t,a){0!==a&&e.push(t)}),void 0===t.connections&&(t.connections=[]),t.connections.push(e)}else if("Properties70"===a.name)Object.keys(a).forEach(function(e){t[e]=a[e]});else if("Properties70"===e&&"P"===a.name){let e,r=a.propertyList[0],i=a.propertyList[1],s=a.propertyList[2],n=a.propertyList[3];0===r.indexOf("Lcl ")&&(r=r.replace("Lcl ","Lcl_")),0===i.indexOf("Lcl ")&&(i=i.replace("Lcl ","Lcl_")),e="Color"===i||"ColorRGB"===i||"Vector"===i||"Vector3D"===i||0===i.indexOf("Lcl_")?[a.propertyList[4],a.propertyList[5],a.propertyList[6]]:a.propertyList[4],t[r]={type:i,type2:s,flag:n,value:e}}else void 0===t[a.name]?"number"==typeof a.id?(t[a.name]={},t[a.name][a.id]=a):t[a.name]=a:"PoseNode"===a.name?(Array.isArray(t[a.name])||(t[a.name]=[t[a.name]]),t[a.name].push(a)):void 0===t[a.name][a.id]&&(t[a.name][a.id]=a)}parseProperty(e){let t;let a=e.getString(1);switch(a){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return t=e.getUint32(),e.getArrayBuffer(t);case"S":return t=e.getUint32(),e.getString(t);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var r,i,s,n;let o=e.getUint32(),l=e.getUint32(),c=e.getUint32();if(0===l)switch(a){case"b":case"c":return e.getBooleanArray(o);case"d":return e.getFloat64Array(o);case"f":return e.getFloat32Array(o);case"i":return e.getInt32Array(o);case"l":return e.getInt64Array(o)}let h=new eg(N((r=new Uint8Array(e.getArrayBuffer(c))).subarray((n=void 0,((15&(s=r)[0])!=8||s[0]>>4>7||(s[0]<<8|s[1])%31)&&I(6,"invalid zlib data"),(s[1]>>5&1)==+!n&&I(6,"invalid zlib data: "+(32&s[1]?"need":"unexpected")+" dictionary"),(s[1]>>3&4)+2),-4),{i:2},i&&i.out,i&&i.dictionary).buffer);switch(a){case"b":case"c":return h.getBooleanArray(o);case"d":return h.getFloat64Array(o);case"f":return h.getFloat32Array(o);case"i":return h.getInt32Array(o);case"l":return h.getInt64Array(o)}break;default:throw Error("THREE.FBXLoader: Unknown property type "+a)}}}class eg{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(1&this.getUint8())==1}getBooleanArray(e){let t=[];for(let a=0;a<e;a++)t.push(this.getBoolean());return t}getUint8(){let e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){let e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){let e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){let t=[];for(let a=0;a<e;a++)t.push(this.getInt32());return t}getUint32(){let e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return(this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),0x80000000&t)?(t=0xffffffff&~t,0xffffffff==(e=0xffffffff&~e)&&(t=t+1&0xffffffff),-(0x100000000*t+(e=e+1&0xffffffff))):0x100000000*t+e}getInt64Array(e){let t=[];for(let a=0;a<e;a++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),0x100000000*t+e}getFloat32(){let e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){let t=[];for(let a=0;a<e;a++)t.push(this.getFloat32());return t}getFloat64(){let e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){let t=[];for(let a=0;a<e;a++)t.push(this.getFloat64());return t}getArrayBuffer(e){let t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=this.offset,a=new Uint8Array(this.dv.buffer,t,e);this.skip(e);let r=a.indexOf(0);return r>=0&&(a=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(a)}}class ev{add(e,t){this[e]=t}}function ex(e){let t=e.match(/FBXVersion: (\d+)/);if(t)return parseInt(t[1]);throw Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function ew(e){return e/46186158e3}let ey=[];function ek(e,t,a,r){let i;switch(r.mappingType){case"ByPolygonVertex":i=e;break;case"ByPolygon":i=t;break;
1case"ByVertice":i=a;break;case"AllSame":i=r.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+r.mappingType)}"IndexToDirect"===r.referenceType&&(i=r.indices[i]);let s=i*r.dataSize,n=s+r.dataSize;return function(e,t,a,r){for(let i=a,s=0;i<r;i++,s++)e[s]=t[i];return e}(ey,r.buffer,s,n)}let eT=new n.O9p,eA=new n.Pq0;function eE(e){let t=new n.kn4,a=new n.kn4,r=new n.kn4,i=new n.kn4,s=new n.kn4,o=new n.kn4,l=new n.kn4,c=new n.kn4,h=new n.kn4,b=new n.kn4,d=new n.kn4,p=new n.kn4,u=e.inheritType?e.inheritType:0;e.translation&&t.setPosition(eA.fromArray(e.translation));let f=e_(0);if(e.preRotation){let t=e.preRotation.map(n.cj9.degToRad);t.push(f),a.makeRotationFromEuler(eT.fromArray(t))}if(e.rotation){let t=e.rotation.map(n.cj9.degToRad);t.push(e.eulerOrder||f),r.makeRotationFromEuler(eT.fromArray(t))}if(e.postRotation){let t=e.postRotation.map(n.cj9.degToRad);t.push(f),i.makeRotationFromEuler(eT.fromArray(t)),i.invert()}e.scale&&s.scale(eA.fromArray(e.scale)),e.scalingOffset&&l.setPosition(eA.fromArray(e.scalingOffset)),e.scalingPivot&&o.setPosition(eA.fromArray(e.scalingPivot)),e.rotationOffset&&c.setPosition(eA.fromArray(e.rotationOffset)),e.rotationPivot&&h.setPosition(eA.fromArray(e.rotationPivot)),e.parentMatrixWorld&&(d.copy(e.parentMatrix),b.copy(e.parentMatrixWorld));let m=a.clone().multiply(r).multiply(i),g=new n.kn4;g.extractRotation(b);let v=new n.kn4;v.copyPosition(b);let x=v.clone().invert().multiply(b),w=g.clone().invert().multiply(x),y=new n.kn4;if(0===u)y.copy(g).multiply(m).multiply(w).multiply(s);else if(1===u)y.copy(g).multiply(w).multiply(m).multiply(s);else{let e=new n.kn4().scale(new n.Pq0().setFromMatrixScale(d)).clone().invert(),t=w.clone().multiply(e);y.copy(g).multiply(m).multiply(t).multiply(s)}let k=h.clone().invert(),T=o.clone().invert(),A=t.clone().multiply(c).multiply(h).multiply(a).multiply(r).multiply(i).multiply(k).multiply(l).multiply(o).multiply(s).multiply(T),E=new n.kn4().copyPosition(A),_=b.clone().multiply(E);return p.copyPosition(_),(A=p.clone().multiply(y)).premultiply(b.invert()),A}function e_(e){return 6===(e=e||0)?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),"ZYX"):["ZYX","YZX","XZY","ZXY","YXZ","XYZ"][e]}function eR(e){return e.split(",").map(function(e){return parseFloat(e)})}function eP(e,t,a){return void 0===t&&(t=0),void 0===a&&(a=e.byteLength),new TextDecoder().decode(new Uint8Array(e,t,a))}},79758:(e,t,a)=>{a.d(t,{B:()=>s});var r=a(380337);function i(e,t){if(t===r.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==r.rYR&&t!==r.O49)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let a=e.getIndex();if(null===a){let t=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),a=e.getIndex()}let i=a.count-2,s=[];if(t===r.rYR)for(let e=1;e<=i;e++)s.push(a.getX(0)),s.push(a.getX(e)),s.push(a.getX(e+1));else for(let e=0;e<i;e++)e%2==0?(s.push(a.getX(e)),s.push(a.getX(e+1)),s.push(a.getX(e+2))):(s.push(a.getX(e+2)),s.push(a.getX(e+1)),s.push(a.getX(e)));s.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let n=e.clone();return n.setIndex(s),n.clearGroups(),n}}class s extends r.aHM{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new b(e)}),this.register(function(e){return new d(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new k(e)}),this.register(function(e){return new T(e)}),this.register(function(e){return new u(e)}),this.register(function(e){return new f(e)}),this.register(function(e){return new m(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new h(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new p(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new l(e)}),this.register(function(e){return new A(e)}),this.register(function(e){return new E(e)})}load(e,t,a,i){let s;let n=this;if(""!==this.resourcePath)s=this.resourcePath;else if(""!==this.path){let t=r.r6x.extractUrlBase(e);s=r.r6x.resolveURL(t,this.path)}else s=r.r6x.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){i?i(t):console.error(t),n.manager.itemError(e),n.manager.itemEnd(e)},l=new r.Y9S(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(a){try{n.parse(a,s,function(a){t(a),n.manager.itemEnd(e)},o)}catch(e){o(e)}},a,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 -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,a,r){let i;let s={},n={},l=new TextDecoder;if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer){if(l.decode(new Uint8Array(e,0,4))===_){try{s[o.KHR_BINARY_GLTF]=new P(e)}catch(e){r&&r(e);return}i=JSON.parse(s[o.KHR_BINARY_GLTF].content)}else i=JSON.parse(l.decode(e))}else i=e;if(void 0===i.asset||i.asset.version[0]<2){r&&r(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let h=new Y(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](h);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),n[t.name]=t,s[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],a=i.extensionsRequired||[];switch(t){case o.KHR_MATERIALS_UNLIT:s[t]=new c;break;case o.KHR_DRACO_MESH_COMPRESSION:s[t]=new S(i,this.dracoLoader);break;case o.KHR_TEXTURE_TRANSFORM:s[t]=new j;break;
1case o.KHR_MESH_QUANTIZATION:s[t]=new O;break;default:a.indexOf(t)>=0&&void 0===n[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}h.setExtensions(s),h.setPlugins(n),h.parse(a,r)}parseAsync(e,t){let a=this;return new Promise(function(r,i){a.parse(e,t,r,i)})}}function n(){let e={};return{get:function(t){return e[t]},add:function(t,a){e[t]=a},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let o={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class l{constructor(e){this.parser=e,this.name=o.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let a=0,r=t.length;a<r;a++){let r=t[a];r.extensions&&r.extensions[this.name]&&void 0!==r.extensions[this.name].light&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t;let a=this.parser,i="light:"+e,s=a.cache.get(i);if(s)return s;let n=a.json,o=((n.extensions&&n.extensions[this.name]||{}).lights||[])[e],l=new r.Q1f(0xffffff);void 0!==o.color&&l.setRGB(o.color[0],o.color[1],o.color[2],r.Zr2);let c=void 0!==o.range?o.range:0;switch(o.type){case"directional":(t=new r.ZyN(l)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new r.HiM(l)).distance=c;break;case"spot":(t=new r.nCl(l)).distance=c,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,t.angle=o.spot.outerConeAngle,t.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return t.position.set(0,0,0),K(t,o),void 0!==o.intensity&&(t.intensity=o.intensity),t.name=a.createUniqueName(o.name||"light_"+e),s=Promise.resolve(t),a.cache.add(i,s),s}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,a=this.parser,r=a.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return a._getNodeRef(t.cache,i,e)})}}class c{constructor(){this.name=o.KHR_MATERIALS_UNLIT}getMaterialType(){return r.V9B}extendParams(e,t,a){let i=[];e.color=new r.Q1f(1,1,1),e.opacity=1;let s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){let t=s.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],r.Zr2),e.opacity=t[3]}void 0!==s.baseColorTexture&&i.push(a.assignTexture(e,"map",s.baseColorTexture,r.er$))}return Promise.all(i)}}class h{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let r=a.extensions[this.name].emissiveStrength;return void 0!==r&&(t.emissiveIntensity=r),Promise.resolve()}}class b{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,i=a.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],n=i.extensions[this.name];if(void 0!==n.clearcoatFactor&&(t.clearcoat=n.clearcoatFactor),void 0!==n.clearcoatTexture&&s.push(a.assignTexture(t,"clearcoatMap",n.clearcoatTexture)),void 0!==n.clearcoatRoughnessFactor&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),void 0!==n.clearcoatRoughnessTexture&&s.push(a.assignTexture(t,"clearcoatRoughnessMap",n.clearcoatRoughnessTexture)),void 0!==n.clearcoatNormalTexture&&(s.push(a.assignTexture(t,"clearcoatNormalMap",n.clearcoatNormalTexture)),void 0!==n.clearcoatNormalTexture.scale)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new r.I9Y(e,e)}return Promise.all(s)}}class d{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let r=a.extensions[this.name];return t.dispersion=void 0!==r.dispersion?r.dispersion:0,Promise.resolve()}}class p{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,r=a.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let i=[],s=r.extensions[this.name];return void 0!==s.iridescenceFactor&&(t.iridescence=s.iridescenceFactor),void 0!==s.iridescenceTexture&&i.push(a.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),void 0!==s.iridescenceIor&&(t.iridescenceIOR=s.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==s.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),void 0!==s.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),void 0!==s.iridescenceThicknessTexture&&i.push(a.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(i)}}class u{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,i=a.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[];t.sheenColor=new r.Q1f(0,0,0),t.sheenRoughness=0,t.sheen=1;let n=i.extensions[this.name];if(void 0!==n.sheenColorFactor){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],r.Zr2)}return void 0!==n.sheenRoughnessFactor&&(t.sheenRoughness=n.sheenRoughnessFactor),void 0!==n.sheenColorTexture&&s.push(a.assignTexture(t,"sheenColorMap",n.sheenColorTexture,r.er$)),void 0!==n.sheenRoughnessTexture&&s.push(a.assignTexture(t,"sheenRoughnessMap",n.sheenRoughnessTexture)),Promise.all(s)}}class f{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,r=a.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let i=[],s=r.extensions[this.name];return void 0!==s.transmissionFactor&&(t.transmission=s.transmissionFactor),void 0!==s.transmissionTexture&&i.push(a.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(i)}}class m{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,i=a.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],n=i.extensions[this.name];t.thickness=void 0!==n.thicknessFactor?n.thicknessFactor:0,void 0!==n.thicknessTexture&&s.push(a.assignTexture(t,"thicknessMap",n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let o=n.attenuationColor||[1,1,1];return t.attenuationColor=new r.Q1f().setRGB(o[0],o[1],o[2],r.Zr2),Promise.all(s)}}class g{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let r=a.extensions[this.name];return t.ior=void 0!==r.ior?r.ior:1.5,Promise.resolve()}}class v{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,i=a.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],n=i.extensions[this.name];t.specularIntensity=void 0!==n.specularFactor?n.specularFactor:1,void 0!==n.specularTexture&&s.push(a.assignTexture(t,"specularIntensityMap",n.specularTexture));let o=n.specularColorFactor||[1,1,1];return t.specularColor=new r.Q1f().setRGB(o[0],o[1],o[2],r.Zr2),void 0!==n.specularColorTexture&&s.push(a.assignTexture(t,"specularColorMap",n.specularColorTexture,r.er$)),Promise.all(s)}}class x{constructor(e){this.parser=e,this.name=o.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,r=a.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let i=[],s=r.extensions[this.name];return t.bumpScale=void 0!==s.bumpFactor?s.bumpFactor:1,void 0!==s.bumpTexture&&i.push(a.assignTexture(t,"bumpMap",s.bumpTexture)),Promise.all(i)}}class w{constructor(e){this.parser=e,this.name=o.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.uSd:null}extendMaterialParams(e,t){let a=this.parser,r=a.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let i=[],s=r.extensions[this.name];return void 0!==s.anisotropyStrength&&(t.anisotropy=s.anisotropyStrength),void 0!==s.anisotropyRotation&&(t.anisotropyRotation=s.anisotropyRotation),void 0!==s.anisotropyTexture&&i.push(a.assignTexture(t,"anisotropyMap",s.anisotropyTexture)),Promise.all(i)}}class y{constructor(e){this.parser=e,this.name=o.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,a=t.json,r=a.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],s=t.options.ktx2Loader;
1if(!s){if(!(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0))return null;throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures")}return t.loadTextureImage(e,i.source,s)}}class k{constructor(e){this.parser=e,this.name=o.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,a=this.parser,r=a.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let s=i.extensions[t],n=r.images[s.source],o=a.textureLoader;if(n.uri){let e=a.options.manager.getHandler(n.uri);null!==e&&(o=e)}return a.loadTextureImage(e,s.source,o)}}class T{constructor(e){this.parser=e,this.name=o.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,a=this.parser,r=a.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let s=i.extensions[t],n=r.images[s.source],o=a.textureLoader;if(n.uri){let e=a.options.manager.getHandler(n.uri);null!==e&&(o=e)}return a.loadTextureImage(e,s.source,o)}}class A{constructor(e){this.name=o.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,a=t.bufferViews[e];if(!a.extensions||!a.extensions[this.name])return null;{let e=a.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))return null;throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files")}return r.then(function(t){let a=e.byteOffset||0,r=e.byteLength||0,s=e.count,n=e.byteStride,o=new Uint8Array(t,a,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(s,n,o,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(s*n);return i.decodeGltfBuffer(new Uint8Array(t),s,n,o,e.mode,e.filter),t})})}}}class E{constructor(e){this.name=o.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||void 0===a.mesh)return null;for(let e of t.meshes[a.mesh].primitives)if(e.mode!==D.TRIANGLES&&e.mode!==D.TRIANGLE_STRIP&&e.mode!==D.TRIANGLE_FAN&&void 0!==e.mode)return null;let i=a.extensions[this.name].attributes,s=[],n={};for(let e in i)s.push(this.parser.getDependency("accessor",i[e]).then(t=>(n[e]=t,n[e])));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then(e=>{let t=e.pop(),a=t.isGroup?t.children:[t],i=e[0].count,s=[];for(let e of a){let t=new r.kn4,a=new r.Pq0,o=new r.PTz,l=new r.Pq0(1,1,1),c=new r.ZLX(e.geometry,e.material,i);for(let e=0;e<i;e++)n.TRANSLATION&&a.fromBufferAttribute(n.TRANSLATION,e),n.ROTATION&&o.fromBufferAttribute(n.ROTATION,e),n.SCALE&&l.fromBufferAttribute(n.SCALE,e),c.setMatrixAt(e,t.compose(a,o,l));for(let t in n)if("_COLOR_0"===t){let e=n[t];c.instanceColor=new r.uWO(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,n[t]);r.B69.prototype.copy.call(c,e),this.parser.assignFinalMaterial(c),s.push(c)}return t.isGroup?(t.clear(),t.add(...s),t):s[0]}))}}let _="glTF",R={JSON:0x4e4f534a,BIN:5130562};class P{constructor(e){this.name=o.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==_)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-12,i=new DataView(e,12),s=0;for(;s<r;){let t=i.getUint32(s,!0);s+=4;let r=i.getUint32(s,!0);if(s+=4,r===R.JSON){let r=new Uint8Array(e,12+s,t);this.content=a.decode(r)}else if(r===R.BIN){let a=12+s;this.body=e.slice(a,a+t)}s+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class S{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=o.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let a=this.json,i=this.dracoLoader,s=e.extensions[this.name].bufferView,n=e.extensions[this.name].attributes,o={},l={},c={};for(let e in n)o[G[e]||e.toLowerCase()]=n[e];for(let t in e.attributes){let r=G[t]||t.toLowerCase();if(void 0!==n[t]){let i=a.accessors[e.attributes[t]],s=I[i.componentType];c[r]=s.name,l[r]=!0===i.normalized}}return t.getDependency("bufferView",s).then(function(e){return new Promise(function(t,a){i.decodeDracoFile(e,function(e){for(let t in e.attributes){let a=e.attributes[t],r=l[t];void 0!==r&&(a.normalized=r)}t(e)},o,c,r.Zr2,a)})})}}class j{constructor(){this.name=o.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}
1class O{constructor(){this.name=o.KHR_MESH_QUANTIZATION}}class M extends r.lGw{constructor(e,t,a,r){super(e,t,a,r)}copySampleValue_(e){let t=this.resultBuffer,a=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=a[i+e];return t}interpolate_(e,t,a,r){let i=this.resultBuffer,s=this.sampleValues,n=this.valueSize,o=2*n,l=3*n,c=r-t,h=(a-t)/c,b=h*h,d=b*h,p=e*l,u=p-l,f=-2*d+3*b,m=d-b,g=1-f,v=m-b+h;for(let e=0;e!==n;e++){let t=s[u+e+n],a=s[u+e+o]*c,r=s[p+e+n],l=s[p+e]*c;i[e]=g*t+v*a+f*r+m*l}return i}}let L=new r.PTz;class F extends M{interpolate_(e,t,a,r){let i=super.interpolate_(e,t,a,r);return L.fromArray(i).normalize().toArray(i),i}}let D={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},I={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},N={9728:r.hxR,9729:r.k6q,9984:r.pHI,9985:r.kRr,9986:r.Cfg,9987:r.$_I},C={33071:r.ghU,33648:r.kTW,10497:r.GJx},H={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},G={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"},z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},U={CUBICSPLINE:void 0,LINEAR:r.PJ3,STEP:r.ljd},q={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function B(e,t,a){for(let r in a.extensions)void 0===e[r]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=a.extensions[r])}function K(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function W(e){let t="",a=Object.keys(e).sort();for(let r=0,i=a.length;r<i;r++)t+=a[r]+":"+e[a[r]]+";";return t}function V(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.")}}let X=new r.kn4;class Y{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new n,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 a=!1,i=-1,s=!1,o=-1;if("undefined"!=typeof navigator){let e=navigator.userAgent;a=!0===/^((?!chrome|android).)*safari/i.test(e);let t=e.match(/Version\/(\d+)/);i=a&&t?parseInt(t[1],10):-1,o=(s=e.indexOf("Firefox")>-1)?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||a&&i<17||s&&o<98?this.textureLoader=new r.Tap(this.options.manager):this.textureLoader=new r.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let a=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([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(t){let s={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:a,userData:{}};return B(i,s,r),K(s,r),Promise.all(a._invokeAll(function(e){return e.afterRoot&&e.afterRoot(s)})).then(function(){for(let e of s.scenes)e.updateMatrixWorld();e(s)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],a=this.json.meshes||[];for(let a=0,r=t.length;a<r;a++){let r=t[a].joints;for(let t=0,a=r.length;t<a;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];void 0!==r.mesh&&(this._addNodeRef(this.meshCache,r.mesh),void 0!==r.skin&&(a[r.mesh].isSkinnedMesh=!0)),void 0!==r.camera&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,a){if(e.refs[t]<=1)return a;let r=a.clone(),i=(e,t)=>{let a=this.associations.get(e);for(let[r,s]of(null!=a&&this.associations.set(t,a),e.children.entries()))i(s,t.children[r])};return i(a,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let a=0;a<t.length;a++){let r=e(t[a]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let a=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&a.push(i)}return a}getDependency(e,t){let a=e+":"+t,r=this.cache.get(a);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(a){return a!=this&&a.getDependency&&a.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(a,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let a=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,r){return a.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],a=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");
1if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[o.KHR_BINARY_GLTF].body);let i=this.options;return new Promise(function(e,s){a.load(r.r6x.resolveURL(t.uri,i.path),e,void 0,function(){s(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 a=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+a)})}loadAccessor(e){let t=this,a=this.json,i=this.json.accessors[e];if(void 0===i.bufferView&&void 0===i.sparse){let e=H[i.type],t=I[i.componentType],a=!0===i.normalized,s=new t(i.count*e);return Promise.resolve(new r.THS(s,e,a))}let s=[];return void 0!==i.bufferView?s.push(this.getDependency("bufferView",i.bufferView)):s.push(null),void 0!==i.sparse&&(s.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(s).then(function(e){let s,n;let o=e[0],l=H[i.type],c=I[i.componentType],h=c.BYTES_PER_ELEMENT,b=h*l,d=i.byteOffset||0,p=void 0!==i.bufferView?a.bufferViews[i.bufferView].byteStride:void 0,u=!0===i.normalized;if(p&&p!==b){let e=Math.floor(d/p),a="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+e+":"+i.count,b=t.cache.get(a);b||(s=new c(o,e*p,i.count*p/h),b=new r.eB$(s,p/h),t.cache.add(a,b)),n=new r.eHs(b,l,d%p/h,u)}else s=null===o?new c(i.count*l):new c(o,d,i.count*l),n=new r.THS(s,l,u);if(void 0!==i.sparse){let t=H.SCALAR,a=I[i.sparse.indices.componentType],s=i.sparse.indices.byteOffset||0,h=i.sparse.values.byteOffset||0,b=new a(e[1],s,i.sparse.count*t),d=new c(e[2],h,i.sparse.count*l);null!==o&&(n=new r.THS(n.array.slice(),n.itemSize,n.normalized)),n.normalized=!1;for(let e=0,t=b.length;e<t;e++){let t=b[e];if(n.setX(t,d[e*l]),l>=2&&n.setY(t,d[e*l+1]),l>=3&&n.setZ(t,d[e*l+2]),l>=4&&n.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}n.normalized=u}return n})}loadTexture(e){let t=this.json,a=this.options,r=t.textures[e].source,i=t.images[r],s=this.textureLoader;if(i.uri){let e=a.manager.getHandler(i.uri);null!==e&&(s=e)}return this.loadTextureImage(e,r,s)}loadTextureImage(e,t,a){let i=this,s=this.json,n=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+n.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(t,a).then(function(t){t.flipY=!1,t.name=n.name||o.name||"",""===t.name&&"string"==typeof o.uri&&!1===o.uri.startsWith("data:image/")&&(t.name=o.uri);let a=(s.samplers||{})[n.sampler]||{};return t.magFilter=N[a.magFilter]||r.k6q,t.minFilter=N[a.minFilter]||r.$_I,t.wrapS=C[a.wrapS]||r.GJx,t.wrapT=C[a.wrapT]||r.GJx,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==r.hxR&&t.minFilter!==r.k6q,i.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){let a=this.json,i=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let s=a.images[e],n=self.URL||self.webkitURL,o=s.uri||"",l=!1;if(void 0!==s.bufferView)o=this.getDependency("bufferView",s.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:s.mimeType});return o=n.createObjectURL(t)});else if(void 0===s.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let c=Promise.resolve(o).then(function(e){return new Promise(function(a,s){let n=a;!0===t.isImageBitmapLoader&&(n=function(e){let t=new r.gPd(e);t.needsUpdate=!0,a(t)}),t.load(r.r6x.resolveURL(e,i.path),n,void 0,s)})}).then(function(e){var t;return!0===l&&n.revokeObjectURL(o),K(e,s),e.userData.mimeType=s.mimeType||((t=s.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e});return this.sourceCache[e]=c,c}assignTexture(e,t,a,r){let i=this;return this.getDependency("texture",a.index).then(function(s){if(!s)return null;if(void 0!==a.texCoord&&a.texCoord>0&&((s=s.clone()).channel=a.texCoord),i.extensions[o.KHR_TEXTURE_TRANSFORM]){let e=void 0!==a.extensions?a.extensions[o.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(s);s=i.extensions[o.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),i.associations.set(s,t)}}
1return void 0!==r&&(s.colorSpace=r),e[t]=s,s})}assignFinalMaterial(e){let t=e.geometry,a=e.material,i=void 0===t.attributes.tangent,s=void 0!==t.attributes.color,n=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.BH$,r.imn.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,t.sizeAttenuation=!1,this.cache.add(e,t)),a=t}else if(e.isLine){let e="LineBasicMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.mrM,r.imn.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,this.cache.add(e,t)),a=t}if(i||s||n){let e="ClonedMaterial:"+a.uuid+":";i&&(e+="derivative-tangents:"),s&&(e+="vertex-colors:"),n&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=a.clone(),s&&(t.vertexColors=!0),n&&(t.flatShading=!0),i&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(a))),a=t}e.material=a}getMaterialType(){return r._4j}loadMaterial(e){let t;let a=this,i=this.json,s=this.extensions,n=i.materials[e],l={},c=n.extensions||{},h=[];if(c[o.KHR_MATERIALS_UNLIT]){let e=s[o.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),h.push(e.extendParams(l,n,a))}else{let i=n.pbrMetallicRoughness||{};if(l.color=new r.Q1f(1,1,1),l.opacity=1,Array.isArray(i.baseColorFactor)){let e=i.baseColorFactor;l.color.setRGB(e[0],e[1],e[2],r.Zr2),l.opacity=e[3]}void 0!==i.baseColorTexture&&h.push(a.assignTexture(l,"map",i.baseColorTexture,r.er$)),l.metalness=void 0!==i.metallicFactor?i.metallicFactor:1,l.roughness=void 0!==i.roughnessFactor?i.roughnessFactor:1,void 0!==i.metallicRoughnessTexture&&(h.push(a.assignTexture(l,"metalnessMap",i.metallicRoughnessTexture)),h.push(a.assignTexture(l,"roughnessMap",i.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),h.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,l)})))}!0===n.doubleSided&&(l.side=r.$EB);let b=n.alphaMode||q.OPAQUE;if(b===q.BLEND?(l.transparent=!0,l.depthWrite=!1):(l.transparent=!1,b===q.MASK&&(l.alphaTest=void 0!==n.alphaCutoff?n.alphaCutoff:.5)),void 0!==n.normalTexture&&t!==r.V9B&&(h.push(a.assignTexture(l,"normalMap",n.normalTexture)),l.normalScale=new r.I9Y(1,1),void 0!==n.normalTexture.scale)){let e=n.normalTexture.scale;l.normalScale.set(e,e)}if(void 0!==n.occlusionTexture&&t!==r.V9B&&(h.push(a.assignTexture(l,"aoMap",n.occlusionTexture)),void 0!==n.occlusionTexture.strength&&(l.aoMapIntensity=n.occlusionTexture.strength)),void 0!==n.emissiveFactor&&t!==r.V9B){let e=n.emissiveFactor;l.emissive=new r.Q1f().setRGB(e[0],e[1],e[2],r.Zr2)}return void 0!==n.emissiveTexture&&t!==r.V9B&&h.push(a.assignTexture(l,"emissiveMap",n.emissiveTexture,r.er$)),Promise.all(h).then(function(){let r=new t(l);return n.name&&(r.name=n.name),K(r,n),a.associations.set(r,{materials:e}),n.extensions&&B(s,r,n),r})}createUniqueName(e){let t=r.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,a=this.extensions,i=this.primitiveCache,s=[];for(let n=0,l=e.length;n<l;n++){let l=e[n],c=function(e){let t;let a=e.extensions&&e.extensions[o.KHR_DRACO_MESH_COMPRESSION];if(t=a?"draco:"+a.bufferView+":"+a.indices+":"+W(a.attributes):e.indices+":"+W(e.attributes)+":"+e.mode,void 0!==e.targets)for(let a=0,r=e.targets.length;a<r;a++)t+=":"+W(e.targets[a]);return t}(l),h=i[c];if(h)s.push(h.promise);else{let e;e=l.extensions&&l.extensions[o.KHR_DRACO_MESH_COMPRESSION]?function(e){return a[o.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(a){return Q(a,e,t)})}(l):Q(new r.LoY,l,t),i[c]={primitive:l,promise:e},s.push(e)}}return Promise.all(s)}loadMesh(e){let t=this,a=this.json,s=this.extensions,n=a.meshes[e],o=n.primitives,l=[];for(let e=0,t=o.length;e<t;e++){var c;let t=void 0===o[e].material?(void 0===(c=this.cache).DefaultMaterial&&(c.DefaultMaterial=new r._4j({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:r.hB5})),c.DefaultMaterial):this.getDependency("material",o[e].material);l.push(t)}return l.push(t.loadGeometries(o)),Promise.all(l).then(function(a){let l=a.slice(0,a.length-1),c=a[a.length-1],h=[];for(let a=0,b=c.length;a<b;a++){let b;let d=c[a],p=o[a],u=l[a];if(p.mode===D.TRIANGLES||p.mode===D.TRIANGLE_STRIP||p.mode===D.TRIANGLE_FAN||void 0===p.mode)!0===(b=!0===n.isSkinnedMesh?new r.I46(d,u):new r.eaF(d,u)).isSkinnedMesh&&b.normalizeSkinWeights(),p.mode===D.TRIANGLE_STRIP?b.geometry=i(b.geometry,r.O49):p.mode===D.TRIANGLE_FAN&&(b.geometry=i(b.geometry,r.rYR));else if(p.mode===D.LINES)b=new r.DXC(d,u);else if(p.mode===D.LINE_STRIP)b=new r.N1A(d,u);else if(p.mode===D.LINE_LOOP)b=new r.FCc(d,u);else if(p.mode===D.POINTS)b=new r.ONl(d,u);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+p.mode);Object.keys(b.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let a=0,r=t.weights.length;a<r;a++)e.morphTargetInfluences[a]=t.weights[a];if(t.extras&&Array.isArray(t.extras.targetNames)){let a=t.extras.targetNames;if(e.morphTargetInfluences.length===a.length){e.morphTargetDictionary={};for(let t=0,r=a.length;t<r;t++)e.morphTargetDictionary[a[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(b,n),b.name=t.createUniqueName(n.name||"mesh_"+e),K(b,n),p.extensions&&B(s,b,p),t.assignFinalMaterial(b),h.push(b)}for(let a=0,r=h.length;a<r;a++)t.associations.set(h[a],{meshes:e,primitives:a});if(1===h.length)return n.extensions&&B(s,h[0],n),h[0];let b=new r.YJl;n.extensions&&B(s,b,n),t.associations.set(b,{meshes:e});for(let e=0,t=h.length;e<t;e++)b.add(h[e]);return b})}loadCamera(e){let t;let a=this.json.cameras[e],i=a[a.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return"perspective"===a.type?t=new r.ubm(r.cj9.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):"orthographic"===a.type&&(t=new r.qUd(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),K(t,a),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],a=[];for(let e=0,r=t.joints.length;e<r;e++)a.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(e){let a=e.pop(),i=[],s=[];for(let n=0,o=e.length;n<o;n++){let o=e[n];if(o){i.push(o);let e=new r.kn4;null!==a&&e.fromArray(a.array,16*n),s.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[n])}return new r.EAD(i,s)})}loadAnimation(e){let t=this.json,a=this,i=t.animations[e],s=i.name?i.name:"animation_"+e,n=[],o=[],l=[],c=[],h=[];for(let e=0,t=i.channels.length;e<t;
1e++){let t=i.channels[e],a=i.samplers[t.sampler],r=t.target,s=r.node,b=void 0!==i.parameters?i.parameters[a.input]:a.input,d=void 0!==i.parameters?i.parameters[a.output]:a.output;void 0!==r.node&&(n.push(this.getDependency("node",s)),o.push(this.getDependency("accessor",b)),l.push(this.getDependency("accessor",d)),c.push(a),h.push(r))}return Promise.all([Promise.all(n),Promise.all(o),Promise.all(l),Promise.all(c),Promise.all(h)]).then(function(e){let t=e[0],n=e[1],o=e[2],l=e[3],c=e[4],h=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=n[e],s=o[e],b=l[e],d=c[e];if(void 0===r)continue;r.updateMatrix&&r.updateMatrix();let p=a._createAnimationTracks(r,i,s,b,d);if(p)for(let e=0;e<p.length;e++)h.push(p[e])}let b=new r.tz3(s,void 0,h);return K(b,i),b})}createNodeMesh(e){let t=this.json,a=this,r=t.nodes[e];return void 0===r.mesh?null:a.getDependency("mesh",r.mesh).then(function(e){let t=a._getNodeRef(a.meshCache,r.mesh,e);return void 0!==r.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,a=r.weights.length;t<a;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],a=this._loadNodeShallow(e),r=[],i=t.children||[];for(let e=0,t=i.length;e<t;e++)r.push(this.getDependency("node",i[e]));let s=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([a,Promise.all(r),s]).then(function(e){let t=e[0],a=e[1],r=e[2];null!==r&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,X)});for(let e=0,r=a.length;e<r;e++)t.add(a[e]);return t})}_loadNodeShallow(e){let t=this.json,a=this.extensions,i=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let s=t.nodes[e],n=s.name?i.createUniqueName(s.name):"",o=[],l=i._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&o.push(l),void 0!==s.camera&&o.push(i.getDependency("camera",s.camera).then(function(e){return i._getNodeRef(i.cameraCache,s.camera,e)})),i._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=!0===s.isBone?new r.$Kf:t.length>1?new r.YJl:1===t.length?t[0]:new r.B69)!==t[0])for(let e=0,a=t.length;e<a;e++)o.add(t[e]);if(s.name&&(o.userData.name=s.name,o.name=n),K(o,s),s.extensions&&B(a,o,s),void 0!==s.matrix){let e=new r.kn4;e.fromArray(s.matrix),o.applyMatrix4(e)}else void 0!==s.translation&&o.position.fromArray(s.translation),void 0!==s.rotation&&o.quaternion.fromArray(s.rotation),void 0!==s.scale&&o.scale.fromArray(s.scale);if(i.associations.has(o)){if(void 0!==s.mesh&&i.meshCache.refs[s.mesh]>1){let e=i.associations.get(o);i.associations.set(o,{...e})}}else i.associations.set(o,{});return i.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,a=this.json.scenes[e],i=this,s=new r.YJl;a.name&&(s.name=i.createUniqueName(a.name)),K(s,a),a.extensions&&B(t,s,a);let n=a.nodes||[],o=[];for(let e=0,t=n.length;e<t;e++)o.push(i.getDependency("node",n[e]));return Promise.all(o).then(function(e){for(let t=0,a=e.length;t<a;t++)s.add(e[t]);return i.associations=(e=>{let t=new Map;for(let[e,a]of i.associations)(e instanceof r.imn||e instanceof r.gPd)&&t.set(e,a);return e.traverse(e=>{let a=i.associations.get(e);null!=a&&t.set(e,a)}),t})(s),s})}_createAnimationTracks(e,t,a,i,s){let n;let o=[],l=e.name?e.name:e.uuid,c=[];switch(z[s.path]===z.weights?e.traverse(function(e){e.morphTargetInfluences&&c.push(e.name?e.name:e.uuid)}):c.push(l),z[s.path]){case z.weights:n=r.Hit;break;case z.rotation:n=r.MBL;break;case z.translation:case z.scale:n=r.RiT;break;default:n=1===a.itemSize?r.Hit:r.RiT}let h=void 0!==i.interpolation?U[i.interpolation]:r.PJ3,b=this._getArrayFromAccessor(a);for(let e=0,a=c.length;e<a;e++){let a=new n(c[e]+"."+z[s.path],t.array,b,h);"CUBICSPLINE"===i.interpolation&&this._createCubicSplineTrackInterpolant(a),o.push(a)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=V(t.constructor),a=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)a[r]=t[r]*e;t=a}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof r.MBL?F:M)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Q(e,t,a){let i=t.attributes,s=[];for(let t in i){let r=G[t]||t.toLowerCase();r in e.attributes||s.push(function(t,r){return a.getDependency("accessor",t).then(function(t){e.setAttribute(r,t)})}(i[t],r))}if(void 0!==t.indices&&!e.index){let r=a.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});s.push(r)}return r.ppV.workingColorSpace!==r.Zr2&&"COLOR_0"in i&&console.warn(`THREE.GLTFLoader: Convert
1ing vertex colors from "srgb-linear" to "${r.ppV.workingColorSpace}" not supported.`),K(e,t),!function(e,t,a){let i=t.attributes,s=new r.NRn;if(void 0===i.POSITION)return;{let e=a.json.accessors[i.POSITION],t=e.min,n=e.max;if(void 0!==t&&void 0!==n){if(s.set(new r.Pq0(t[0],t[1],t[2]),new r.Pq0(n[0],n[1],n[2])),e.normalized){let t=V(I[e.componentType]);s.min.multiplyScalar(t),s.max.multiplyScalar(t)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}let n=t.targets;if(void 0!==n){let e=new r.Pq0,t=new r.Pq0;for(let r=0,i=n.length;r<i;r++){let i=n[r];if(void 0!==i.POSITION){let r=a.json.accessors[i.POSITION],s=r.min,n=r.max;if(void 0!==s&&void 0!==n){if(t.setX(Math.max(Math.abs(s[0]),Math.abs(n[0]))),t.setY(Math.max(Math.abs(s[1]),Math.abs(n[1]))),t.setZ(Math.max(Math.abs(s[2]),Math.abs(n[2]))),r.normalized){let e=V(I[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}s.expandByVector(e)}e.boundingBox=s;let o=new r.iyt;s.getCenter(o.center),o.radius=s.min.distanceTo(s.max)/2,e.boundingSphere=o}(e,t,a),Promise.all(s).then(function(){return void 0!==t.targets?function(e,t,a){let r=!1,i=!1,s=!1;for(let e=0,a=t.length;e<a;e++){let a=t[e];if(void 0!==a.POSITION&&(r=!0),void 0!==a.NORMAL&&(i=!0),void 0!==a.COLOR_0&&(s=!0),r&&i&&s)break}if(!r&&!i&&!s)return Promise.resolve(e);let n=[],o=[],l=[];for(let c=0,h=t.length;c<h;c++){let h=t[c];if(r){let t=void 0!==h.POSITION?a.getDependency("accessor",h.POSITION):e.attributes.position;n.push(t)}if(i){let t=void 0!==h.NORMAL?a.getDependency("accessor",h.NORMAL):e.attributes.normal;o.push(t)}if(s){let t=void 0!==h.COLOR_0?a.getDependency("accessor",h.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(n),Promise.all(o),Promise.all(l)]).then(function(t){let a=t[0],n=t[1],o=t[2];return r&&(e.morphAttributes.position=a),i&&(e.morphAttributes.normal=n),s&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,a):e})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.