ss-component-new 1.1.656 → 1.1.658
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{OrbitControls-BJHoziDQ.cjs → OrbitControls-CUvjF1rf.cjs} +1 -1
- package/dist/{OrbitControls-CJepjLAm.js → OrbitControls-wZBl7uX5.js} +1 -1
- package/dist/{index-yOh2aUoj.js → index-BAPVtYNC.js} +1 -1
- package/dist/index-BdbMzzG9.cjs +1 -0
- package/dist/{index-DyE9lCt7.js → index-Brhs8-ho.js} +2066 -2063
- package/dist/{index-kX1Zv5mv.js → index-C8oNErGw.js} +1 -1
- package/dist/{index-g1XqI1u_.js → index-C9V70RX-.js} +944 -941
- package/dist/index-CC9NeaeO.js +937 -0
- package/dist/{index-XIIYT-A0.js → index-CNoN_Z0U.js} +2 -2
- package/dist/{index-D6vD-trt.cjs → index-CSj1FCx2.cjs} +1 -1
- package/dist/{index--Upniuaf.cjs → index-CYc_nQjl.cjs} +1 -1
- package/dist/{index-Cr_QMd0J.js → index-CdEW-44q.js} +4 -4
- package/dist/{index-CFc1oz3x.js → index-CmUH8ftb.js} +1 -1
- package/dist/{index-CsHq7mD2.js → index-CodlQQtD.js} +1 -1
- package/dist/{index-B7sNPI-2.cjs → index-CyqhFAF6.cjs} +1 -1
- package/dist/{index-CB-0zWkO.cjs → index-DB2u7BI2.cjs} +1 -1
- package/dist/{index-BsN09BLI.js → index-DHoqIUK7.js} +1 -1
- package/dist/{index-Q1znt8Z0.js → index-DR62D4oC.js} +1 -1
- package/dist/{index-Cj5htR9s.cjs → index-DhwVgmX4.cjs} +1 -1
- package/dist/{index-8JMgCqil.cjs → index-DnGwDL1g.cjs} +1 -1
- package/dist/{index-D7IMIybo.cjs → index-DnaushyD.cjs} +1 -1
- package/dist/{index-BZcq6lqc.js → index-Fxs_qOj8.js} +1 -1
- package/dist/{index-CaqEBrVR.cjs → index-G2hFPRl4.cjs} +1 -1
- package/dist/{index-DtTu9OX4.js → index-ItBFv241.js} +1 -1
- package/dist/{index-BN9n2T4H.cjs → index-JWowiMDG.cjs} +23 -23
- package/dist/{index-CXMa57KM.cjs → index-UE_pnzQo.cjs} +1 -1
- package/dist/{index-D4ZmbGCB.cjs → index-dCHm4bqT.cjs} +1 -1
- package/dist/{index-Dm4_oZi-.cjs → index-fhZ-JJZ8.cjs} +1 -1
- package/dist/{index.vue_vue_type_style_index_0_scoped_264dc673_lang-Chd_vVxH.js → index.vue_vue_type_style_index_0_scoped_264dc673_lang-0YnLPSwu.js} +265 -265
- package/dist/{index.vue_vue_type_style_index_0_scoped_264dc673_lang-3jIQbFoJ.cjs → index.vue_vue_type_style_index_0_scoped_264dc673_lang-CunArNny.cjs} +10 -10
- package/dist/{index.vue_vue_type_style_index_0_scoped_f6ebd097_lang-DVS9Bqp3.js → index.vue_vue_type_style_index_0_scoped_f6ebd097_lang-BJ7HZIYs.js} +19 -11
- package/dist/index.vue_vue_type_style_index_0_scoped_f6ebd097_lang-CNLvOlhH.cjs +1 -0
- package/dist/{main-CY26_1QU.js → main-CxXnyLym.js} +2 -2
- package/dist/{main-Cl5qS8h8.cjs → main-D_wAEXdn.cjs} +1 -1
- package/dist/ss-component.cjs +1 -1
- package/dist/ss-component.css +1 -1
- package/dist/ss-component.js +4 -4
- package/dist/ss-component2.cjs +1 -1
- package/dist/ss-component2.js +7 -7
- package/dist/{threeModel-H_4oJGH7.js → threeModel-CcsboCSp.js} +2 -2
- package/dist/{threeModel-DWRJnQ0E.cjs → threeModel-DBWCHeou.cjs} +1 -1
- package/package.json +1 -1
- package/dist/index-BWR57KtA.js +0 -937
- package/dist/index-Dgzh0Eur.cjs +0 -1
- package/dist/index.vue_vue_type_style_index_0_scoped_f6ebd097_lang-hr6rMNSG.cjs +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";const V=require("vue"),
|
|
1
|
+
"use strict";const V=require("vue"),De=require("./menu-ScIJ5kqr.cjs"),si=require("./index-CM6HSS02.cjs"),Gh=require("./modelComp-CkSDfH0-.cjs"),pn=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BB1q_NEl.cjs"),xl=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Ju=require("./login-9FT8kgSz.cjs"),Mo=s=>s.match(/\((.*)\)/)[1],Ku={__name:"index",props:{isVisible:{type:Boolean,default:!1},title:{type:String,default:""},placement:{type:String,default:"bottom"},width:{type:Number,default:200}},setup(s){const e=s,t=V.ref(null),n=V.ref(!1),i=V.ref(null);return V.watch(()=>e==null?void 0:e.isVisible,()=>{n.value=e==null?void 0:e.isVisible},{deep:!0,immediate:!0}),V.watch(()=>i.value,()=>{V.nextTick(()=>{var r,a;(a=(r=t.value)==null?void 0:r.updatePopper)==null||a.call(r)})},{deep:!0,immediate:!0}),(r,a)=>{const o=V.resolveComponent("el-popover");return V.openBlock(),V.createBlock(o,{visible:n.value,title:e==null?void 0:e.title,placement:e==null?void 0:e.placement,width:e==null?void 0:e.width,ref_key:"popOverRef",ref:t},{reference:V.withCtx(()=>[V.createElementVNode("div",null,[V.renderSlot(r.$slots,"reference",{ref_key:"referenceRef",ref:i})])]),default:V.withCtx(()=>[V.createElementVNode("div",null,[V.renderSlot(r.$slots,"content")])]),_:3},8,["visible","title","placement","width"])}}},Zu={class:"extra-button-content"},Qu={class:"table-operator-wrap"},ed={class:"extra-button-filter"},td={title:"条件查询"},nd={class:"form-content-value"},id={key:0,class:"extra-header"},sd={__name:"header",props:{compName:{type:String,default:"表格名称",required:!1},buttons:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]}},emits:["buttonClick","filter"],setup(s,{emit:e}){const t=e,n=s,i=V.ref(""),r=V.ref(!1),a=V.ref([]),o=V.ref([{label:"取消",background:"#999999"},{label:"清空",background:"#999999"},{label:"确认"}]),l=u=>{var m;const f=(m=a.value)==null?void 0:m.reduce((_,g,p)=>(p===0?_[g.label]=u:_[g.label]=g.value,_),{});t("filter",f)},c=u=>{t("buttonClick",u)},h=u=>{var f,m;a.value=(m=(f=pn.getColumnChild(De.cloneDeep(u)))==null?void 0:f.filter(_=>(_==null?void 0:_.label)!==""&&(_==null?void 0:_.label)!=="操作"))==null?void 0:m.map(_=>({label:(_==null?void 0:_.label)??"",value:"",name:(_==null?void 0:_.label)??"",isFormColHidden:_==null?void 0:_.isTableColHidden,width:2}))},d=u=>{var f;if((u==null?void 0:u.buttonName)==="确认"&&t("filter",u==null?void 0:u.content),(u==null?void 0:u.buttonName)==="清空"){const m=De.cloneDeep(u==null?void 0:u.content);for(const _ in m)m[_]="";a.value=(f=a.value)==null?void 0:f.map(_=>({..._,value:""})),t("filter",m)}r.value=!1};return V.onMounted(()=>{h(n.columns)}),V.watch(()=>n.columns,()=>{h(n.columns)},{deep:!0,immediate:!0}),(u,f)=>{var p;const m=V.resolveComponent("svg-icon"),_=V.resolveComponent("el-input"),g=V.resolveComponent("el-button");return V.openBlock(),V.createElementBlock("div",Zu,[V.createElementVNode("div",{class:V.normalizeClass(s.compName?"table-name-wrap":"")},V.toDisplayString(s.compName),3),V.createElementVNode("div",Qu,[V.createElementVNode("div",ed,[V.createVNode(Ku,{title:"",width:800,placement:"bottom-start",isVisible:r.value},{reference:V.withCtx(()=>[V.createVNode(_,{modelValue:i.value,"onUpdate:modelValue":f[1]||(f[1]=E=>i.value=E),style:{width:"240px"},placeholder:"搜索","prefix-icon":V.unref(De.search_default),clearable:"",onInput:l},{append:V.withCtx(()=>[V.createElementVNode("span",td,[V.createVNode(m,{onClick:f[0]||(f[0]=E=>r.value=!r.value),name:"query",style:{width:"15px",height:"15px",cursor:"pointer"}})])]),_:1},8,["modelValue","prefix-icon"])]),content:V.withCtx(()=>[V.createElementVNode("div",nd,[(V.openBlock(),V.createBlock(si.ssForm,{rowContents:a.value,buttonValue:o.value,isRowFlex:!0,isEnableWrap:!1,isButtonRow:!1,key:o.value,isStartJustify:!1,onOnButtonClick:d},null,8,["rowContents","buttonValue"]))])]),_:1},8,["isVisible"])]),n!=null&&n.buttons&&((p=n==null?void 0:n.buttons)==null?void 0:p.length)>0?(V.openBlock(),V.createElementBlock("div",id,[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(n==null?void 0:n.buttons,(E,b)=>(V.openBlock(),V.createElementBlock("div",{class:"extra-contents",key:b},[V.createVNode(g,{id:"themeButton",style:V.normalizeStyle({background:(E==null?void 0:E.background)??"var(--ssbutton-theme-bg)",color:"var(--ssbutton-theme-color)"}),onClick:M=>c(E==null?void 0:E.label)},{default:V.withCtx(()=>[V.createTextVNode(V.toDisplayString(E==null?void 0:E.label),1)]),_:2},1032,["style","onClick"])]))),128))])):V.createCommentVNode("",!0)])])}}},rd=xl._export_sfc(sd,[["__scopeId","data-v-e343d690"]]),ad=V.defineComponent({__name:"batch",props:{buttons:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]}},emits:["buttonClick"],setup(s,{emit:e}){const t=e,n=i=>{t("buttonClick",i)};return(i,r)=>{const a=V.resolveComponent("el-button");return V.openBlock(),V.createElementBlock("div",null,[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(s.buttons,o=>{var l;return V.openBlock(),V.createBlock(a,{key:o==null?void 0:o.label,id:(l=o==null?void 0:o.label)!=null&&l.includes("删除")?"warningBgButton":"themeBorderButton",onClick:c=>n(o==null?void 0:o.label)},{default:V.withCtx(()=>[V.createTextVNode(V.toDisplayString(o==null?void 0:o.label),1)]),_:2},1032,["id","onClick"])}),128))])}}});/**
|
|
2
2
|
* @license
|
|
3
3
|
* Copyright 2010-2025 Three.js Authors
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/const yl="177",od={ROTATE:0,DOLLY:1,PAN:2},ld={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},cd=0,jl=1,hd=2,Wh=1,Xh=2,vi=3,Xn=0,Rn=1,wn=2,Oi=0,As=1,Yl=2,$l=3,Jl=4,ud=5,Ji=100,dd=101,fd=102,pd=103,md=104,gd=200,_d=201,vd=202,xd=203,So=204,bo=205,yd=206,Md=207,Sd=208,bd=209,Ed=210,Ad=211,wd=212,Td=213,Cd=214,Eo=0,Ao=1,wo=2,Rs=3,To=4,Co=5,Ro=6,Lo=7,xa=0,Rd=1,Ld=2,zi=0,Pd=1,Dd=2,Ud=3,qh=4,Nd=5,Id=6,Fd=7,Kl="attached",Od="detached",jh=300,Ls=301,Ps=302,Po=303,Do=304,ya=306,ai=1e3,Jn=1001,Uo=1002,On=1003,zd=1004,fr=1005,Fn=1006,Ra=1007,xi=1008,ci=1009,Yh=1010,$h=1011,ir=1012,Ml=1013,es=1014,oi=1015,cr=1016,Sl=1017,bl=1018,sr=1020,Jh=35902,Kh=1021,Zh=1022,Wn=1023,rr=1026,ar=1027,Qh=1028,El=1029,eu=1030,Al=1031,wl=1033,ta=33776,na=33777,ia=33778,sa=33779,No=35840,Io=35841,Fo=35842,Oo=35843,zo=36196,Bo=37492,ko=37496,Vo=37808,Ho=37809,Go=37810,Wo=37811,Xo=37812,qo=37813,jo=37814,Yo=37815,$o=37816,Jo=37817,Ko=37818,Zo=37819,Qo=37820,el=37821,ra=36492,tl=36494,nl=36495,tu=36283,il=36284,sl=36285,rl=36286,ua=2300,al=2301,La=2302,Zl=2400,Ql=2401,ec=2402,Bd=2500,kd=3200,Vd=3201,Ma=0,Hd=1,Ii="",Yt="srgb",Ds="srgb-linear",da="linear",tn="srgb",ss=7680,tc=519,Gd=512,Wd=513,Xd=514,nu=515,qd=516,jd=517,Yd=518,$d=519,ol=35044,nc="300 es",yi=2e3,fa=2001;class ns{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const i=n[e];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let r=0,a=i.length;r<a;r++)i[r].call(this,e);e.target=null}}}const En=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let ic=1234567;const Zs=Math.PI/180,Us=180/Math.PI;function Zn(){const s=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(En[s&255]+En[s>>8&255]+En[s>>16&255]+En[s>>24&255]+"-"+En[e&255]+En[e>>8&255]+"-"+En[e>>16&15|64]+En[e>>24&255]+"-"+En[t&63|128]+En[t>>8&255]+"-"+En[t>>16&255]+En[t>>24&255]+En[n&255]+En[n>>8&255]+En[n>>16&255]+En[n>>24&255]).toLowerCase()}function Ot(s,e,t){return Math.max(e,Math.min(t,s))}function Tl(s,e){return(s%e+e)%e}function Jd(s,e,t,n,i){return n+(s-e)*(i-n)/(t-e)}function Kd(s,e,t){return s!==e?(t-s)/(e-s):0}function Qs(s,e,t){return(1-t)*s+t*e}function Zd(s,e,t,n){return Qs(s,e,1-Math.exp(-t*n))}function Qd(s,e=1){return e-Math.abs(Tl(s,e*2)-e)}function ef(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*(3-2*s))}function tf(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*s*(s*(s*6-15)+10))}function nf(s,e){return s+Math.floor(Math.random()*(e-s+1))}function sf(s,e){return s+Math.random()*(e-s)}function rf(s){return s*(.5-Math.random())}function af(s){s!==void 0&&(ic=s);let e=ic+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function of(s){return s*Zs}function lf(s){return s*Us}function cf(s){return(s&s-1)===0&&s!==0}function hf(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function uf(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}function df(s,e,t,n,i){const r=Math.cos,a=Math.sin,o=r(t/2),l=a(t/2),c=r((e+n)/2),h=a((e+n)/2),d=r((e-n)/2),u=a((e-n)/2),f=r((n-e)/2),m=a((n-e)/2);switch(i){case"XYX":s.set(o*h,l*d,l*u,o*c);break;case"YZY":s.set(l*u,o*h,l*d,o*c);break;case"ZXZ":s.set(l*d,l*u,o*h,o*c);break;case"XZX":s.set(o*h,l*m,l*f,o*c);break;case"YXY":s.set(l*f,o*h,l*m,o*c);break;case"ZYZ":s.set(l*m,l*f,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function $n(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return s/4294967295;case Uint16Array:return s/65535;case Uint8Array:return s/255;case Int32Array:return Math.max(s/2147483647,-1);case Int16Array:return Math.max(s/32767,-1);case Int8Array:return Math.max(s/127,-1);default:throw new Error("Invalid component type.")}}function Qt(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return Math.round(s*4294967295);case Uint16Array:return Math.round(s*65535);case Uint8Array:return Math.round(s*255);case Int32Array:return Math.round(s*2147483647);case Int16Array:return Math.round(s*32767);case Int8Array:return Math.round(s*127);default:throw new Error("Invalid component type.")}}const Ki={DEG2RAD:Zs,RAD2DEG:Us,generateUUID:Zn,clamp:Ot,euclideanModulo:Tl,mapLinear:Jd,inverseLerp:Kd,lerp:Qs,damp:Zd,pingpong:Qd,smoothstep:ef,smootherstep:tf,randInt:nf,randFloat:sf,randFloatSpread:rf,seededRandom:af,degToRad:of,radToDeg:lf,isPowerOfTwo:cf,ceilPowerOfTwo:hf,floorPowerOfTwo:uf,setQuaternionFromProperEuler:df,normalize:Qt,denormalize:$n};class Ke{constructor(e=0,t=0){Ke.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class zn{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,r,a,o){let l=n[i+0],c=n[i+1],h=n[i+2],d=n[i+3];const u=r[a+0],f=r[a+1],m=r[a+2],_=r[a+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d;return}if(o===1){e[t+0]=u,e[t+1]=f,e[t+2]=m,e[t+3]=_;return}if(d!==_||l!==u||c!==f||h!==m){let g=1-o;const p=l*u+c*f+h*m+d*_,E=p>=0?1:-1,b=1-p*p;if(b>Number.EPSILON){const U=Math.sqrt(b),C=Math.atan2(U,p*E);g=Math.sin(g*C)/U,o=Math.sin(o*C)/U}const M=o*E;if(l=l*g+u*M,c=c*g+f*M,h=h*g+m*M,d=d*g+_*M,g===1-o){const U=1/Math.sqrt(l*l+c*c+h*h+d*d);l*=U,c*=U,h*=U,d*=U}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,n,i,r,a){const o=n[i],l=n[i+1],c=n[i+2],h=n[i+3],d=r[a],u=r[a+1],f=r[a+2],m=r[a+3];return e[t]=o*m+h*d+l*f-c*u,e[t+1]=l*m+h*u+c*d-o*f,e[t+2]=c*m+h*f+o*u-l*d,e[t+3]=h*m-o*d-l*u-c*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,r=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(i/2),d=o(r/2),u=l(n/2),f=l(i/2),m=l(r/2);switch(a){case"XYZ":this._x=u*h*d+c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d-u*f*m;break;case"YXZ":this._x=u*h*d+c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d+u*f*m;break;case"ZXY":this._x=u*h*d-c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d-u*f*m;break;case"ZYX":this._x=u*h*d-c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d+u*f*m;break;case"YZX":this._x=u*h*d+c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d-u*f*m;break;case"XZY":this._x=u*h*d-c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d+u*f*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],o=t[5],l=t[9],c=t[2],h=t[6],d=t[10],u=n+o+d;if(u>0){const f=.5/Math.sqrt(u+1);this._w=.25/f,this._x=(h-l)*f,this._y=(r-c)*f,this._z=(a-i)*f}else if(n>o&&n>d){const f=2*Math.sqrt(1+n-o-d);this._w=(h-l)/f,this._x=.25*f,this._y=(i+a)/f,this._z=(r+c)/f}else if(o>d){const f=2*Math.sqrt(1+o-n-d);this._w=(r-c)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(l+h)/f}else{const f=2*Math.sqrt(1+d-n-o);this._w=(a-i)/f,this._x=(r+c)/f,this._y=(l+h)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ot(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,r=e._z,a=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+a*o+i*c-r*l,this._y=i*h+a*l+r*o-n*c,this._z=r*h+a*c+n*l-i*o,this._w=a*h-n*o-i*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,r=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const f=1-t;return this._w=f*a+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*r+t*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),d=Math.sin((1-t)*h)/c,u=Math.sin(t*h)/c;return this._w=a*d+this._w*u,this._x=n*d+this._x*u,this._y=i*d+this._y*u,this._z=r*d+this._z*u,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),r*Math.sin(t),r*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class I{constructor(e=0,t=0,n=0){I.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(sc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(sc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*i-o*n),h=2*(o*t-r*i),d=2*(r*n-a*t);return this.x=t+l*c+a*d-o*h,this.y=n+l*h+o*c-r*d,this.z=i+l*d+r*h-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this.z=Ot(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this.z=Ot(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,r=e.z,a=t.x,o=t.y,l=t.z;return this.x=i*l-r*o,this.y=r*a-n*l,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Pa.copy(this).projectOnVector(e),this.sub(Pa)}reflect(e){return this.sub(Pa.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Pa=new I,sc=new zn;class Ft{constructor(e,t,n,i,r,a,o,l,c){Ft.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,r,a,o,l,c)}set(e,t,n,i,r,a,o,l,c){const h=this.elements;return h[0]=e,h[1]=i,h[2]=o,h[3]=t,h[4]=r,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],d=n[7],u=n[2],f=n[5],m=n[8],_=i[0],g=i[3],p=i[6],E=i[1],b=i[4],M=i[7],U=i[2],C=i[5],P=i[8];return r[0]=a*_+o*E+l*U,r[3]=a*g+o*b+l*C,r[6]=a*p+o*M+l*P,r[1]=c*_+h*E+d*U,r[4]=c*g+h*b+d*C,r[7]=c*p+h*M+d*P,r[2]=u*_+f*E+m*U,r[5]=u*g+f*b+m*C,r[8]=u*p+f*M+m*P,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*a*h-t*o*c-n*r*h+n*o*l+i*r*c-i*a*l}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],d=h*a-o*c,u=o*l-h*r,f=c*r-a*l,m=t*d+n*u+i*f;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const _=1/m;return e[0]=d*_,e[1]=(i*c-h*n)*_,e[2]=(o*n-i*a)*_,e[3]=u*_,e[4]=(h*t-i*l)*_,e[5]=(i*r-o*t)*_,e[6]=f*_,e[7]=(n*l-c*t)*_,e[8]=(a*t-n*r)*_,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-i*c,i*l,-i*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Da.makeScale(e,t)),this}rotate(e){return this.premultiply(Da.makeRotation(-e)),this}translate(e,t){return this.premultiply(Da.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Da=new Ft;function iu(s){for(let e=s.length-1;e>=0;--e)if(s[e]>=65535)return!0;return!1}function or(s){return document.createElementNS("http://www.w3.org/1999/xhtml",s)}function ff(){const s=or("canvas");return s.style.display="block",s}const rc={};function ws(s){s in rc||(rc[s]=!0,console.warn(s))}function pf(s,e,t){return new Promise(function(n,i){function r(){switch(s.clientWaitSync(e,s.SYNC_FLUSH_COMMANDS_BIT,0)){case s.WAIT_FAILED:i();break;case s.TIMEOUT_EXPIRED:setTimeout(r,t);break;default:n()}}setTimeout(r,t)})}function mf(s){const e=s.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function gf(s){const e=s.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const ac=new Ft().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),oc=new Ft().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function _f(){const s={enabled:!0,workingColorSpace:Ds,spaces:{},convert:function(i,r,a){return this.enabled===!1||r===a||!r||!a||(this.spaces[r].transfer===tn&&(i.r=Mi(i.r),i.g=Mi(i.g),i.b=Mi(i.b)),this.spaces[r].primaries!==this.spaces[a].primaries&&(i.applyMatrix3(this.spaces[r].toXYZ),i.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===tn&&(i.r=Ts(i.r),i.g=Ts(i.g),i.b=Ts(i.b))),i},workingToColorSpace:function(i,r){return this.convert(i,this.workingColorSpace,r)},colorSpaceToWorking:function(i,r){return this.convert(i,r,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===Ii?da:this.spaces[i].transfer},getLuminanceCoefficients:function(i,r=this.workingColorSpace){return i.fromArray(this.spaces[r].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,r,a){return i.copy(this.spaces[r].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(i){return this.spaces[i].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(i=this.workingColorSpace){return this.spaces[i].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(i,r){return ws("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),s.workingToColorSpace(i,r)},toWorkingColorSpace:function(i,r){return ws("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),s.colorSpaceToWorking(i,r)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return s.define({[Ds]:{primaries:e,whitePoint:n,transfer:da,toXYZ:ac,fromXYZ:oc,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Yt},outputColorSpaceConfig:{drawingBufferColorSpace:Yt}},[Yt]:{primaries:e,whitePoint:n,transfer:tn,toXYZ:ac,fromXYZ:oc,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Yt}}}),s}const Vt=_f();function Mi(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function Ts(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}let rs;class vf{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{rs===void 0&&(rs=or("canvas")),rs.width=e.width,rs.height=e.height;const i=rs.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),n=rs}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=or("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let a=0;a<r.length;a++)r[a]=Mi(r[a]/255)*255;return n.putImageData(i,0,0),t}else if(e.data){const t=e.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Mi(t[n]/255)*255):t[n]=Mi(t[n]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let xf=0;class Cl{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:xf++}),this.uuid=Zn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){const t=this.data;return t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight):t!==null?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const n={uuid:this.uuid,url:""},i=this.data;if(i!==null){let r;if(Array.isArray(i)){r=[];for(let a=0,o=i.length;a<o;a++)i[a].isDataTexture?r.push(Ua(i[a].image)):r.push(Ua(i[a]))}else r=Ua(i);n.url=r}return t||(e.images[this.uuid]=n),n}}function Ua(s){return typeof HTMLImageElement<"u"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&s instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&s instanceof ImageBitmap?vf.getDataURL(s):s.data?{data:Array.from(s.data),width:s.width,height:s.height,type:s.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let yf=0;const Na=new I;class bn extends ns{constructor(e=bn.DEFAULT_IMAGE,t=bn.DEFAULT_MAPPING,n=Jn,i=Jn,r=Fn,a=xi,o=Wn,l=ci,c=bn.DEFAULT_ANISOTROPY,h=Ii){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:yf++}),this.uuid=Zn(),this.name="",this.source=new Cl(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Ke(0,0),this.repeat=new Ke(1,1),this.center=new Ke(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Ft,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(e&&e.depth&&e.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Na).x}get height(){return this.source.getSize(Na).y}get depth(){return this.source.getSize(Na).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){console.warn(`THREE.Texture.setValues(): property '${t}' does not exist.`);continue}i&&n&&i.isVector2&&n.isVector2||i&&n&&i.isVector3&&n.isVector3||i&&n&&i.isMatrix3&&n.isMatrix3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==jh)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case ai:e.x=e.x-Math.floor(e.x);break;case Jn:e.x=e.x<0?0:1;break;case Uo:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case ai:e.y=e.y-Math.floor(e.y);break;case Jn:e.y=e.y<0?0:1;break;case Uo:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}bn.DEFAULT_IMAGE=null;bn.DEFAULT_MAPPING=jh;bn.DEFAULT_ANISOTROPY=1;class Ht{constructor(e=0,t=0,n=0,i=1){Ht.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r;const l=e.elements,c=l[0],h=l[4],d=l[8],u=l[1],f=l[5],m=l[9],_=l[2],g=l[6],p=l[10];if(Math.abs(h-u)<.01&&Math.abs(d-_)<.01&&Math.abs(m-g)<.01){if(Math.abs(h+u)<.1&&Math.abs(d+_)<.1&&Math.abs(m+g)<.1&&Math.abs(c+f+p-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const b=(c+1)/2,M=(f+1)/2,U=(p+1)/2,C=(h+u)/4,P=(d+_)/4,D=(m+g)/4;return b>M&&b>U?b<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(b),i=C/n,r=P/n):M>U?M<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(M),n=C/i,r=D/i):U<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(U),n=P/r,i=D/r),this.set(n,i,r,t),this}let E=Math.sqrt((g-m)*(g-m)+(d-_)*(d-_)+(u-h)*(u-h));return Math.abs(E)<.001&&(E=1),this.x=(g-m)/E,this.y=(d-_)/E,this.z=(u-h)/E,this.w=Math.acos((c+f+p-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this.z=Ot(this.z,e.z,t.z),this.w=Ot(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this.z=Ot(this.z,e,t),this.w=Ot(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Mf extends ns{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Fn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new Ht(0,0,e,t),this.scissorTest=!1,this.viewport=new Ht(0,0,e,t);const i={width:e,height:t,depth:n.depth},r=new bn(i);this.textures=[];const a=n.count;for(let o=0;o<a;o++)this.textures[o]=r.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){const t={minFilter:Fn,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let n=0;n<this.textures.length;n++)this.textures[n].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=e,this.textures[i].image.height=t,this.textures[i].image.depth=n,this.textures[i].isArrayTexture=this.textures[i].image.depth>1;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const i=Object.assign({},e.textures[t].image);this.textures[t].source=new Cl(i)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class ts extends Mf{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class su extends bn{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=On,this.minFilter=On,this.wrapR=Jn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Sf extends bn{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=On,this.minFilter=On,this.wrapR=Jn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ei{constructor(e=new I(1/0,1/0,1/0),t=new I(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(qn.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(qn.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=qn.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(n!==void 0){const r=n.getAttribute("position");if(t===!0&&r!==void 0&&e.isInstancedMesh!==!0)for(let a=0,o=r.count;a<o;a++)e.isMesh===!0?e.getVertexPosition(a,qn):qn.fromBufferAttribute(r,a),qn.applyMatrix4(e.matrixWorld),this.expandByPoint(qn);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),pr.copy(e.boundingBox)):(n.boundingBox===null&&n.computeBoundingBox(),pr.copy(n.boundingBox)),pr.applyMatrix4(e.matrixWorld),this.union(pr)}const i=e.children;for(let r=0,a=i.length;r<a;r++)this.expandByObject(i[r],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,qn),qn.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Vs),mr.subVectors(this.max,Vs),as.subVectors(e.a,Vs),os.subVectors(e.b,Vs),ls.subVectors(e.c,Vs),Ti.subVectors(os,as),Ci.subVectors(ls,os),Vi.subVectors(as,ls);let t=[0,-Ti.z,Ti.y,0,-Ci.z,Ci.y,0,-Vi.z,Vi.y,Ti.z,0,-Ti.x,Ci.z,0,-Ci.x,Vi.z,0,-Vi.x,-Ti.y,Ti.x,0,-Ci.y,Ci.x,0,-Vi.y,Vi.x,0];return!Ia(t,as,os,ls,mr)||(t=[1,0,0,0,1,0,0,0,1],!Ia(t,as,os,ls,mr))?!1:(gr.crossVectors(Ti,Ci),t=[gr.x,gr.y,gr.z],Ia(t,as,os,ls,mr))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,qn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(qn).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(di[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),di[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),di[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),di[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),di[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),di[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),di[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),di[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(di),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const di=[new I,new I,new I,new I,new I,new I,new I,new I],qn=new I,pr=new ei,as=new I,os=new I,ls=new I,Ti=new I,Ci=new I,Vi=new I,Vs=new I,mr=new I,gr=new I,Hi=new I;function Ia(s,e,t,n,i){for(let r=0,a=s.length-3;r<=a;r+=3){Hi.fromArray(s,r);const o=i.x*Math.abs(Hi.x)+i.y*Math.abs(Hi.y)+i.z*Math.abs(Hi.z),l=e.dot(Hi),c=t.dot(Hi),h=n.dot(Hi);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const bf=new ei,Hs=new I,Fa=new I;class Ei{constructor(e=new I,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):bf.setFromPoints(e).getCenter(n);let i=0;for(let r=0,a=e.length;r<a;r++)i=Math.max(i,n.distanceToSquared(e[r]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Hs.subVectors(e,this.center);const t=Hs.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(Hs,i/n),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Fa.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Hs.copy(e.center).add(Fa)),this.expandByPoint(Hs.copy(e.center).sub(Fa))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const fi=new I,Oa=new I,_r=new I,Ri=new I,za=new I,vr=new I,Ba=new I;class Fs{constructor(e=new I,t=new I(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,fi)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=fi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(fi.copy(this.origin).addScaledVector(this.direction,t),fi.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Oa.copy(e).add(t).multiplyScalar(.5),_r.copy(t).sub(e).normalize(),Ri.copy(this.origin).sub(Oa);const r=e.distanceTo(t)*.5,a=-this.direction.dot(_r),o=Ri.dot(this.direction),l=-Ri.dot(_r),c=Ri.lengthSq(),h=Math.abs(1-a*a);let d,u,f,m;if(h>0)if(d=a*l-o,u=a*o-l,m=r*h,d>=0)if(u>=-m)if(u<=m){const _=1/h;d*=_,u*=_,f=d*(d+a*u+2*o)+u*(a*d+u+2*l)+c}else u=r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;else u=-r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;else u<=-m?(d=Math.max(0,-(-a*r+o)),u=d>0?-r:Math.min(Math.max(-r,-l),r),f=-d*d+u*(u+2*l)+c):u<=m?(d=0,u=Math.min(Math.max(-r,-l),r),f=u*(u+2*l)+c):(d=Math.max(0,-(a*r+o)),u=d>0?r:Math.min(Math.max(-r,-l),r),f=-d*d+u*(u+2*l)+c);else u=a>0?-r:r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,d),i&&i.copy(Oa).addScaledVector(_r,u),f}intersectSphere(e,t){fi.subVectors(e.center,this.origin);const n=fi.dot(this.direction),i=fi.dot(fi)-n*n,r=e.radius*e.radius;if(i>r)return null;const a=Math.sqrt(r-i),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,r,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,d=1/this.direction.z,u=this.origin;return c>=0?(n=(e.min.x-u.x)*c,i=(e.max.x-u.x)*c):(n=(e.max.x-u.x)*c,i=(e.min.x-u.x)*c),h>=0?(r=(e.min.y-u.y)*h,a=(e.max.y-u.y)*h):(r=(e.max.y-u.y)*h,a=(e.min.y-u.y)*h),n>a||r>i||((r>n||isNaN(n))&&(n=r),(a<i||isNaN(i))&&(i=a),d>=0?(o=(e.min.z-u.z)*d,l=(e.max.z-u.z)*d):(o=(e.max.z-u.z)*d,l=(e.min.z-u.z)*d),n>l||o>i)||((o>n||n!==n)&&(n=o),(l<i||i!==i)&&(i=l),i<0)?null:this.at(n>=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,fi)!==null}intersectTriangle(e,t,n,i,r){za.subVectors(t,e),vr.subVectors(n,e),Ba.crossVectors(za,vr);let a=this.direction.dot(Ba),o;if(a>0){if(i)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Ri.subVectors(this.origin,e);const l=o*this.direction.dot(vr.crossVectors(Ri,vr));if(l<0)return null;const c=o*this.direction.dot(za.cross(Ri));if(c<0||l+c>a)return null;const h=-o*Ri.dot(Ba);return h<0?null:this.at(h/a,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Et{constructor(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g){Et.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g)}set(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g){const p=this.elements;return p[0]=e,p[4]=t,p[8]=n,p[12]=i,p[1]=r,p[5]=a,p[9]=o,p[13]=l,p[2]=c,p[6]=h,p[10]=d,p[14]=u,p[3]=f,p[7]=m,p[11]=_,p[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Et().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/cs.setFromMatrixColumn(e,0).length(),r=1/cs.setFromMatrixColumn(e,1).length(),a=1/cs.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(i),c=Math.sin(i),h=Math.cos(r),d=Math.sin(r);if(e.order==="XYZ"){const u=a*h,f=a*d,m=o*h,_=o*d;t[0]=l*h,t[4]=-l*d,t[8]=c,t[1]=f+m*c,t[5]=u-_*c,t[9]=-o*l,t[2]=_-u*c,t[6]=m+f*c,t[10]=a*l}else if(e.order==="YXZ"){const u=l*h,f=l*d,m=c*h,_=c*d;t[0]=u+_*o,t[4]=m*o-f,t[8]=a*c,t[1]=a*d,t[5]=a*h,t[9]=-o,t[2]=f*o-m,t[6]=_+u*o,t[10]=a*l}else if(e.order==="ZXY"){const u=l*h,f=l*d,m=c*h,_=c*d;t[0]=u-_*o,t[4]=-a*d,t[8]=m+f*o,t[1]=f+m*o,t[5]=a*h,t[9]=_-u*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const u=a*h,f=a*d,m=o*h,_=o*d;t[0]=l*h,t[4]=m*c-f,t[8]=u*c+_,t[1]=l*d,t[5]=_*c+u,t[9]=f*c-m,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const u=a*l,f=a*c,m=o*l,_=o*c;t[0]=l*h,t[4]=_-u*d,t[8]=m*d+f,t[1]=d,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=f*d+m,t[10]=u-_*d}else if(e.order==="XZY"){const u=a*l,f=a*c,m=o*l,_=o*c;t[0]=l*h,t[4]=-d,t[8]=c*h,t[1]=u*d+_,t[5]=a*h,t[9]=f*d-m,t[2]=m*d-f,t[6]=o*h,t[10]=_*d+u}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Ef,e,Af)}lookAt(e,t,n){const i=this.elements;return Nn.subVectors(e,t),Nn.lengthSq()===0&&(Nn.z=1),Nn.normalize(),Li.crossVectors(n,Nn),Li.lengthSq()===0&&(Math.abs(n.z)===1?Nn.x+=1e-4:Nn.z+=1e-4,Nn.normalize(),Li.crossVectors(n,Nn)),Li.normalize(),xr.crossVectors(Nn,Li),i[0]=Li.x,i[4]=xr.x,i[8]=Nn.x,i[1]=Li.y,i[5]=xr.y,i[9]=Nn.y,i[2]=Li.z,i[6]=xr.z,i[10]=Nn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],d=n[5],u=n[9],f=n[13],m=n[2],_=n[6],g=n[10],p=n[14],E=n[3],b=n[7],M=n[11],U=n[15],C=i[0],P=i[4],D=i[8],S=i[12],y=i[1],N=i[5],W=i[9],X=i[13],Q=i[2],ne=i[6],G=i[10],re=i[14],K=i[3],ge=i[7],be=i[11],Ce=i[15];return r[0]=a*C+o*y+l*Q+c*K,r[4]=a*P+o*N+l*ne+c*ge,r[8]=a*D+o*W+l*G+c*be,r[12]=a*S+o*X+l*re+c*Ce,r[1]=h*C+d*y+u*Q+f*K,r[5]=h*P+d*N+u*ne+f*ge,r[9]=h*D+d*W+u*G+f*be,r[13]=h*S+d*X+u*re+f*Ce,r[2]=m*C+_*y+g*Q+p*K,r[6]=m*P+_*N+g*ne+p*ge,r[10]=m*D+_*W+g*G+p*be,r[14]=m*S+_*X+g*re+p*Ce,r[3]=E*C+b*y+M*Q+U*K,r[7]=E*P+b*N+M*ne+U*ge,r[11]=E*D+b*W+M*G+U*be,r[15]=E*S+b*X+M*re+U*Ce,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],o=e[5],l=e[9],c=e[13],h=e[2],d=e[6],u=e[10],f=e[14],m=e[3],_=e[7],g=e[11],p=e[15];return m*(+r*l*d-i*c*d-r*o*u+n*c*u+i*o*f-n*l*f)+_*(+t*l*f-t*c*u+r*a*u-i*a*f+i*c*h-r*l*h)+g*(+t*c*d-t*o*f-r*a*d+n*a*f+r*o*h-n*c*h)+p*(-i*o*h-t*l*d+t*o*u+i*a*d-n*a*u+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],d=e[9],u=e[10],f=e[11],m=e[12],_=e[13],g=e[14],p=e[15],E=d*g*c-_*u*c+_*l*f-o*g*f-d*l*p+o*u*p,b=m*u*c-h*g*c-m*l*f+a*g*f+h*l*p-a*u*p,M=h*_*c-m*d*c+m*o*f-a*_*f-h*o*p+a*d*p,U=m*d*l-h*_*l-m*o*u+a*_*u+h*o*g-a*d*g,C=t*E+n*b+i*M+r*U;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const P=1/C;return e[0]=E*P,e[1]=(_*u*r-d*g*r-_*i*f+n*g*f+d*i*p-n*u*p)*P,e[2]=(o*g*r-_*l*r+_*i*c-n*g*c-o*i*p+n*l*p)*P,e[3]=(d*l*r-o*u*r-d*i*c+n*u*c+o*i*f-n*l*f)*P,e[4]=b*P,e[5]=(h*g*r-m*u*r+m*i*f-t*g*f-h*i*p+t*u*p)*P,e[6]=(m*l*r-a*g*r-m*i*c+t*g*c+a*i*p-t*l*p)*P,e[7]=(a*u*r-h*l*r+h*i*c-t*u*c-a*i*f+t*l*f)*P,e[8]=M*P,e[9]=(m*d*r-h*_*r-m*n*f+t*_*f+h*n*p-t*d*p)*P,e[10]=(a*_*r-m*o*r+m*n*c-t*_*c-a*n*p+t*o*p)*P,e[11]=(h*o*r-a*d*r-h*n*c+t*d*c+a*n*f-t*o*f)*P,e[12]=U*P,e[13]=(h*_*i-m*d*i+m*n*u-t*_*u-h*n*g+t*d*g)*P,e[14]=(m*o*i-a*_*i-m*n*l+t*_*l+a*n*g-t*o*g)*P,e[15]=(a*d*i-h*o*i+h*n*l-t*d*l-a*n*u+t*o*u)*P,this}scale(e){const t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,o=e.y,l=e.z,c=r*a,h=r*o;return this.set(c*a+n,c*o-i*l,c*l+i*o,0,c*o+i*l,h*o+n,h*l-i*a,0,c*l-i*o,h*l+i*a,r*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,r=t._x,a=t._y,o=t._z,l=t._w,c=r+r,h=a+a,d=o+o,u=r*c,f=r*h,m=r*d,_=a*h,g=a*d,p=o*d,E=l*c,b=l*h,M=l*d,U=n.x,C=n.y,P=n.z;return i[0]=(1-(_+p))*U,i[1]=(f+M)*U,i[2]=(m-b)*U,i[3]=0,i[4]=(f-M)*C,i[5]=(1-(u+p))*C,i[6]=(g+E)*C,i[7]=0,i[8]=(m+b)*P,i[9]=(g-E)*P,i[10]=(1-(u+_))*P,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let r=cs.set(i[0],i[1],i[2]).length();const a=cs.set(i[4],i[5],i[6]).length(),o=cs.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],jn.copy(this);const c=1/r,h=1/a,d=1/o;return jn.elements[0]*=c,jn.elements[1]*=c,jn.elements[2]*=c,jn.elements[4]*=h,jn.elements[5]*=h,jn.elements[6]*=h,jn.elements[8]*=d,jn.elements[9]*=d,jn.elements[10]*=d,t.setFromRotationMatrix(jn),n.x=r,n.y=a,n.z=o,this}makePerspective(e,t,n,i,r,a,o=yi){const l=this.elements,c=2*r/(t-e),h=2*r/(n-i),d=(t+e)/(t-e),u=(n+i)/(n-i);let f,m;if(o===yi)f=-(a+r)/(a-r),m=-2*a*r/(a-r);else if(o===fa)f=-a/(a-r),m=-a*r/(a-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=d,l[12]=0,l[1]=0,l[5]=h,l[9]=u,l[13]=0,l[2]=0,l[6]=0,l[10]=f,l[14]=m,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,i,r,a,o=yi){const l=this.elements,c=1/(t-e),h=1/(n-i),d=1/(a-r),u=(t+e)*c,f=(n+i)*h;let m,_;if(o===yi)m=(a+r)*d,_=-2*d;else if(o===fa)m=r*d,_=-1*d;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-u,l[1]=0,l[5]=2*h,l[9]=0,l[13]=-f,l[2]=0,l[6]=0,l[10]=_,l[14]=-m,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const cs=new I,jn=new Et,Ef=new I(0,0,0),Af=new I(1,1,1),Li=new I,xr=new I,Nn=new I,lc=new Et,cc=new zn;class Ln{constructor(e=0,t=0,n=0,i=Ln.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,r=i[0],a=i[4],o=i[8],l=i[1],c=i[5],h=i[9],d=i[2],u=i[6],f=i[10];switch(t){case"XYZ":this._y=Math.asin(Ot(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(u,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ot(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-d,r),this._z=0);break;case"ZXY":this._x=Math.asin(Ot(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-d,f),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-Ot(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(u,f),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Ot(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-d,r)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Ot(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-h,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return lc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(lc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cc.setFromEuler(this),this.setFromQuaternion(cc,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ln.DEFAULT_ORDER="XYZ";class Rl{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let wf=0;const hc=new I,hs=new zn,pi=new Et,yr=new I,Gs=new I,Tf=new I,Cf=new zn,uc=new I(1,0,0),dc=new I(0,1,0),fc=new I(0,0,1),pc={type:"added"},Rf={type:"removed"},us={type:"childadded",child:null},ka={type:"childremoved",child:null};class nn extends ns{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:wf++}),this.uuid=Zn(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=nn.DEFAULT_UP.clone();const e=new I,t=new Ln,n=new zn,i=new I(1,1,1);function r(){n.setFromEuler(t,!1)}function a(){t.setFromQuaternion(n,void 0,!1)}t._onChange(r),n._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new Et},normalMatrix:{value:new Ft}}),this.matrix=new Et,this.matrixWorld=new Et,this.matrixAutoUpdate=nn.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=nn.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new Rl,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return hs.setFromAxisAngle(e,t),this.quaternion.multiply(hs),this}rotateOnWorldAxis(e,t){return hs.setFromAxisAngle(e,t),this.quaternion.premultiply(hs),this}rotateX(e){return this.rotateOnAxis(uc,e)}rotateY(e){return this.rotateOnAxis(dc,e)}rotateZ(e){return this.rotateOnAxis(fc,e)}translateOnAxis(e,t){return hc.copy(e).applyQuaternion(this.quaternion),this.position.add(hc.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(uc,e)}translateY(e){return this.translateOnAxis(dc,e)}translateZ(e){return this.translateOnAxis(fc,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(pi.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?yr.copy(e):yr.set(e,t,n);const i=this.parent;this.updateWorldMatrix(!0,!1),Gs.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?pi.lookAt(Gs,yr,this.up):pi.lookAt(yr,Gs,this.up),this.quaternion.setFromRotationMatrix(pi),i&&(pi.extractRotation(i.matrixWorld),hs.setFromRotationMatrix(pi),this.quaternion.premultiply(hs.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(pc),us.child=e,this.dispatchEvent(us),us.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(Rf),ka.child=e,this.dispatchEvent(ka),ka.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),pi.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),pi.multiply(e.parent.matrixWorld)),e.applyMatrix4(pi),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(pc),us.child=e,this.dispatchEvent(us),us.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n<i;n++){const a=this.children[n].getObjectByProperty(e,t);if(a!==void 0)return a}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);const i=this.children;for(let r=0,a=i.length;r<a;r++)i[r].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gs,e,Tf),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gs,Cf,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const i=this.children;for(let r=0,a=i.length;r<a;r++)i[r].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),i.instanceInfo=this._instanceInfo.map(o=>({...o})),i.availableInstanceIds=this._availableInstanceIds.slice(),i.availableGeometryIds=this._availableGeometryIds.slice(),i.nextIndexStart=this._nextIndexStart,i.nextVertexStart=this._nextVertexStart,i.geometryCount=this._geometryCount,i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.matricesTexture=this._matricesTexture.toJSON(e),i.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(i.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(i.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(i.boundingBox=this.boundingBox.toJSON()));function r(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c<h;c++){const d=l[c];r(e.shapes,d)}else r(e.shapes,l)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(r(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(r(e.materials,this.material[l]));i.material=o}else i.material=r(e.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];i.animations.push(r(e.animations,l))}}if(t){const o=a(e.geometries),l=a(e.materials),c=a(e.textures),h=a(e.images),d=a(e.shapes),u=a(e.skeletons),f=a(e.animations),m=a(e.nodes);o.length>0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),d.length>0&&(n.shapes=d),u.length>0&&(n.skeletons=u),f.length>0&&(n.animations=f),m.length>0&&(n.nodes=m)}return n.object=i,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n<e.children.length;n++){const i=e.children[n];this.add(i.clone())}return this}}nn.DEFAULT_UP=new I(0,1,0);nn.DEFAULT_MATRIX_AUTO_UPDATE=!0;nn.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Yn=new I,mi=new I,Va=new I,gi=new I,ds=new I,fs=new I,mc=new I,Ha=new I,Ga=new I,Wa=new I,Xa=new Ht,qa=new Ht,ja=new Ht;class Gn{constructor(e=new I,t=new I,n=new I){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),Yn.subVectors(e,t),i.cross(Yn);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){Yn.subVectors(i,t),mi.subVectors(n,t),Va.subVectors(e,t);const a=Yn.dot(Yn),o=Yn.dot(mi),l=Yn.dot(Va),c=mi.dot(mi),h=mi.dot(Va),d=a*c-o*o;if(d===0)return r.set(0,0,0),null;const u=1/d,f=(c*l-o*h)*u,m=(a*h-o*l)*u;return r.set(1-f-m,m,f)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,gi)===null?!1:gi.x>=0&&gi.y>=0&&gi.x+gi.y<=1}static getInterpolation(e,t,n,i,r,a,o,l){return this.getBarycoord(e,t,n,i,gi)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(r,gi.x),l.addScaledVector(a,gi.y),l.addScaledVector(o,gi.z),l)}static getInterpolatedAttribute(e,t,n,i,r,a){return Xa.setScalar(0),qa.setScalar(0),ja.setScalar(0),Xa.fromBufferAttribute(e,t),qa.fromBufferAttribute(e,n),ja.fromBufferAttribute(e,i),a.setScalar(0),a.addScaledVector(Xa,r.x),a.addScaledVector(qa,r.y),a.addScaledVector(ja,r.z),a}static isFrontFacing(e,t,n,i){return Yn.subVectors(n,t),mi.subVectors(e,t),Yn.cross(mi).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Yn.subVectors(this.c,this.b),mi.subVectors(this.a,this.b),Yn.cross(mi).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Gn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Gn.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,r){return Gn.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return Gn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Gn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,r=this.c;let a,o;ds.subVectors(i,n),fs.subVectors(r,n),Ha.subVectors(e,n);const l=ds.dot(Ha),c=fs.dot(Ha);if(l<=0&&c<=0)return t.copy(n);Ga.subVectors(e,i);const h=ds.dot(Ga),d=fs.dot(Ga);if(h>=0&&d<=h)return t.copy(i);const u=l*d-h*c;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),t.copy(n).addScaledVector(ds,a);Wa.subVectors(e,r);const f=ds.dot(Wa),m=fs.dot(Wa);if(m>=0&&f<=m)return t.copy(r);const _=f*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(n).addScaledVector(fs,o);const g=h*m-f*d;if(g<=0&&d-h>=0&&f-m>=0)return mc.subVectors(r,i),o=(d-h)/(d-h+(f-m)),t.copy(i).addScaledVector(mc,o);const p=1/(g+_+u);return a=_*p,o=u*p,t.copy(n).addScaledVector(ds,a).addScaledVector(fs,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const ru={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Pi={h:0,s:0,l:0},Mr={h:0,s:0,l:0};function Ya(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}class gt{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Yt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Vt.colorSpaceToWorking(this,t),this}setRGB(e,t,n,i=Vt.workingColorSpace){return this.r=e,this.g=t,this.b=n,Vt.colorSpaceToWorking(this,i),this}setHSL(e,t,n,i=Vt.workingColorSpace){if(e=Tl(e,1),t=Ot(t,0,1),n=Ot(n,0,1),t===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+t):n+t-n*t,a=2*n-r;this.r=Ya(a,r,e+1/3),this.g=Ya(a,r,e),this.b=Ya(a,r,e-1/3)}return Vt.colorSpaceToWorking(this,i),this}setStyle(e,t=Yt){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=i[1],a=r.length;if(a===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Yt){const n=ru[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Mi(e.r),this.g=Mi(e.g),this.b=Mi(e.b),this}copyLinearToSRGB(e){return this.r=Ts(e.r),this.g=Ts(e.g),this.b=Ts(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Yt){return Vt.workingToColorSpace(An.copy(this),e),Math.round(Ot(An.r*255,0,255))*65536+Math.round(Ot(An.g*255,0,255))*256+Math.round(Ot(An.b*255,0,255))}getHexString(e=Yt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Vt.workingColorSpace){Vt.workingToColorSpace(An.copy(this),t);const n=An.r,i=An.g,r=An.b,a=Math.max(n,i,r),o=Math.min(n,i,r);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const d=a-o;switch(c=h<=.5?d/(a+o):d/(2-a-o),a){case n:l=(i-r)/d+(i<r?6:0);break;case i:l=(r-n)/d+2;break;case r:l=(n-i)/d+4;break}l/=6}return e.h=l,e.s=c,e.l=h,e}getRGB(e,t=Vt.workingColorSpace){return Vt.workingToColorSpace(An.copy(this),t),e.r=An.r,e.g=An.g,e.b=An.b,e}getStyle(e=Yt){Vt.workingToColorSpace(An.copy(this),e);const t=An.r,n=An.g,i=An.b;return e!==Yt?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(i*255)})`}offsetHSL(e,t,n){return this.getHSL(Pi),this.setHSL(Pi.h+e,Pi.s+t,Pi.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(Pi),e.getHSL(Mr);const n=Qs(Pi.h,Mr.h,t),i=Qs(Pi.s,Mr.s,t),r=Qs(Pi.l,Mr.l,t);return this.setHSL(n,i,r),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,i=this.b,r=e.elements;return this.r=r[0]*t+r[3]*n+r[6]*i,this.g=r[1]*t+r[4]*n+r[7]*i,this.b=r[2]*t+r[5]*n+r[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const An=new gt;gt.NAMES=ru;let Lf=0;class Bn extends ns{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Lf++}),this.uuid=Zn(),this.name="",this.type="Material",this.blending=As,this.side=Xn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=So,this.blendDst=bo,this.blendEquation=Ji,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new gt(0,0,0),this.blendAlpha=0,this.depthFunc=Rs,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=tc,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=ss,this.stencilZFail=ss,this.stencilZPass=ss,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==As&&(n.blending=this.blending),this.side!==Xn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==So&&(n.blendSrc=this.blendSrc),this.blendDst!==bo&&(n.blendDst=this.blendDst),this.blendEquation!==Ji&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Rs&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==tc&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ss&&(n.stencilFail=this.stencilFail),this.stencilZFail!==ss&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==ss&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(r){const a=[];for(const o in r){const l=r[o];delete l.metadata,a.push(l)}return a}if(t){const r=i(e.textures),a=i(e.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const i=t.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=t[r].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Bi extends Bn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new gt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const fn=new I,Sr=new Ke;let Pf=0;class dn{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Pf++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=ol,this.updateRanges=[],this.gpuType=oi,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)Sr.fromBufferAttribute(this,t),Sr.applyMatrix3(e),this.setXY(t,Sr.x,Sr.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyMatrix3(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyMatrix4(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyNormalMatrix(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.transformDirection(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=$n(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=Qt(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=$n(t,this.array)),t}setX(e,t){return this.normalized&&(t=Qt(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=$n(t,this.array)),t}setY(e,t){return this.normalized&&(t=Qt(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=$n(t,this.array)),t}setZ(e,t){return this.normalized&&(t=Qt(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=$n(t,this.array)),t}setW(e,t){return this.normalized&&(t=Qt(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array),i=Qt(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array),i=Qt(i,this.array),r=Qt(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==ol&&(e.usage=this.usage),e}}class au extends dn{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class Df extends dn{constructor(e,t,n){super(new Int32Array(e),t,n)}}class ou extends dn{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class It extends dn{constructor(e,t,n){super(new Float32Array(e),t,n)}}let Uf=0;const Vn=new Et,$a=new nn,ps=new I,In=new ei,Ws=new ei,vn=new I;class an extends ns{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Uf++}),this.uuid=Zn(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(iu(e)?ou:au)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const r=new Ft().getNormalMatrix(e);n.applyNormalMatrix(r),n.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Vn.makeRotationFromQuaternion(e),this.applyMatrix4(Vn),this}rotateX(e){return Vn.makeRotationX(e),this.applyMatrix4(Vn),this}rotateY(e){return Vn.makeRotationY(e),this.applyMatrix4(Vn),this}rotateZ(e){return Vn.makeRotationZ(e),this.applyMatrix4(Vn),this}translate(e,t,n){return Vn.makeTranslation(e,t,n),this.applyMatrix4(Vn),this}scale(e,t,n){return Vn.makeScale(e,t,n),this.applyMatrix4(Vn),this}lookAt(e){return $a.lookAt(e),$a.updateMatrix(),this.applyMatrix4($a.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ps).negate(),this.translate(ps.x,ps.y,ps.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const n=[];for(let i=0,r=e.length;i<r;i++){const a=e[i];n.push(a.x,a.y,a.z||0)}this.setAttribute("position",new It(n,3))}else{const n=Math.min(e.length,t.count);for(let i=0;i<n;i++){const r=e[i];t.setXYZ(i,r.x,r.y,r.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ei);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new I(-1/0,-1/0,-1/0),new I(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,i=t.length;n<i;n++){const r=t[n];In.setFromBufferAttribute(r),this.morphTargetsRelative?(vn.addVectors(this.boundingBox.min,In.min),this.boundingBox.expandByPoint(vn),vn.addVectors(this.boundingBox.max,In.max),this.boundingBox.expandByPoint(vn)):(this.boundingBox.expandByPoint(In.min),this.boundingBox.expandByPoint(In.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ei);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new I,1/0);return}if(e){const n=this.boundingSphere.center;if(In.setFromBufferAttribute(e),t)for(let r=0,a=t.length;r<a;r++){const o=t[r];Ws.setFromBufferAttribute(o),this.morphTargetsRelative?(vn.addVectors(In.min,Ws.min),In.expandByPoint(vn),vn.addVectors(In.max,Ws.max),In.expandByPoint(vn)):(In.expandByPoint(Ws.min),In.expandByPoint(Ws.max))}In.getCenter(n);let i=0;for(let r=0,a=e.count;r<a;r++)vn.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(vn));if(t)for(let r=0,a=t.length;r<a;r++){const o=t[r],l=this.morphTargetsRelative;for(let c=0,h=o.count;c<h;c++)vn.fromBufferAttribute(o,c),l&&(ps.fromBufferAttribute(e,c),vn.add(ps)),i=Math.max(i,n.distanceToSquared(vn))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=t.position,i=t.normal,r=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new dn(new Float32Array(4*n.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let D=0;D<n.count;D++)o[D]=new I,l[D]=new I;const c=new I,h=new I,d=new I,u=new Ke,f=new Ke,m=new Ke,_=new I,g=new I;function p(D,S,y){c.fromBufferAttribute(n,D),h.fromBufferAttribute(n,S),d.fromBufferAttribute(n,y),u.fromBufferAttribute(r,D),f.fromBufferAttribute(r,S),m.fromBufferAttribute(r,y),h.sub(c),d.sub(c),f.sub(u),m.sub(u);const N=1/(f.x*m.y-m.x*f.y);isFinite(N)&&(_.copy(h).multiplyScalar(m.y).addScaledVector(d,-f.y).multiplyScalar(N),g.copy(d).multiplyScalar(f.x).addScaledVector(h,-m.x).multiplyScalar(N),o[D].add(_),o[S].add(_),o[y].add(_),l[D].add(g),l[S].add(g),l[y].add(g))}let E=this.groups;E.length===0&&(E=[{start:0,count:e.count}]);for(let D=0,S=E.length;D<S;++D){const y=E[D],N=y.start,W=y.count;for(let X=N,Q=N+W;X<Q;X+=3)p(e.getX(X+0),e.getX(X+1),e.getX(X+2))}const b=new I,M=new I,U=new I,C=new I;function P(D){U.fromBufferAttribute(i,D),C.copy(U);const S=o[D];b.copy(S),b.sub(U.multiplyScalar(U.dot(S))).normalize(),M.crossVectors(C,S);const N=M.dot(l[D])<0?-1:1;a.setXYZW(D,b.x,b.y,b.z,N)}for(let D=0,S=E.length;D<S;++D){const y=E[D],N=y.start,W=y.count;for(let X=N,Q=N+W;X<Q;X+=3)P(e.getX(X+0)),P(e.getX(X+1)),P(e.getX(X+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new dn(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let u=0,f=n.count;u<f;u++)n.setXYZ(u,0,0,0);const i=new I,r=new I,a=new I,o=new I,l=new I,c=new I,h=new I,d=new I;if(e)for(let u=0,f=e.count;u<f;u+=3){const m=e.getX(u+0),_=e.getX(u+1),g=e.getX(u+2);i.fromBufferAttribute(t,m),r.fromBufferAttribute(t,_),a.fromBufferAttribute(t,g),h.subVectors(a,r),d.subVectors(i,r),h.cross(d),o.fromBufferAttribute(n,m),l.fromBufferAttribute(n,_),c.fromBufferAttribute(n,g),o.add(h),l.add(h),c.add(h),n.setXYZ(m,o.x,o.y,o.z),n.setXYZ(_,l.x,l.y,l.z),n.setXYZ(g,c.x,c.y,c.z)}else for(let u=0,f=t.count;u<f;u+=3)i.fromBufferAttribute(t,u+0),r.fromBufferAttribute(t,u+1),a.fromBufferAttribute(t,u+2),h.subVectors(a,r),d.subVectors(i,r),h.cross(d),n.setXYZ(u+0,h.x,h.y,h.z),n.setXYZ(u+1,h.x,h.y,h.z),n.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)vn.fromBufferAttribute(e,t),vn.normalize(),e.setXYZ(t,vn.x,vn.y,vn.z)}toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,d=o.normalized,u=new c.constructor(l.length*h);let f=0,m=0;for(let _=0,g=l.length;_<g;_++){o.isInterleavedBufferAttribute?f=l[_]*o.data.stride+o.offset:f=l[_]*h;for(let p=0;p<h;p++)u[m++]=c[f++]}return new dn(u,h,d)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new an,n=this.index.array,i=this.attributes;for(const o in i){const l=i[o],c=e(l,n);t.setAttribute(o,c)}const r=this.morphAttributes;for(const o in r){const l=[],c=r[o];for(let h=0,d=c.length;h<d;h++){const u=c[h],f=e(u,n);l.push(f)}t.morphAttributes[o]=l}t.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const c=a[o];t.addGroup(c.start,c.count,c.materialIndex)}return t}toJSON(){const e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const i={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let d=0,u=c.length;d<u;d++){const f=c[d];h.push(f.toJSON(e.data))}h.length>0&&(i[l]=h,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const i=e.attributes;for(const c in i){const h=i[c];this.setAttribute(c,h.clone(t))}const r=e.morphAttributes;for(const c in r){const h=[],d=r[c];for(let u=0,f=d.length;u<f;u++)h.push(d[u].clone(t));this.morphAttributes[c]=h}this.morphTargetsRelative=e.morphTargetsRelative;const a=e.groups;for(let c=0,h=a.length;c<h;c++){const d=a[c];this.addGroup(d.start,d.count,d.materialIndex)}const o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=e.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const gc=new Et,Gi=new Fs,br=new Ei,_c=new I,Er=new I,Ar=new I,wr=new I,Ja=new I,Tr=new I,vc=new I,Cr=new I;class $t extends nn{constructor(e=new an,t=new Bi){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}getVertexPosition(e,t){const n=this.geometry,i=n.attributes.position,r=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(i,e);const o=this.morphTargetInfluences;if(r&&o){Tr.set(0,0,0);for(let l=0,c=r.length;l<c;l++){const h=o[l],d=r[l];h!==0&&(Ja.fromBufferAttribute(d,e),a?Tr.addScaledVector(Ja,h):Tr.addScaledVector(Ja.sub(t),h))}t.add(Tr)}return t}raycast(e,t){const n=this.geometry,i=this.material,r=this.matrixWorld;i!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),br.copy(n.boundingSphere),br.applyMatrix4(r),Gi.copy(e.ray).recast(e.near),!(br.containsPoint(Gi.origin)===!1&&(Gi.intersectSphere(br,_c)===null||Gi.origin.distanceToSquared(_c)>(e.far-e.near)**2))&&(gc.copy(r).invert(),Gi.copy(e.ray).applyMatrix4(gc),!(n.boundingBox!==null&&Gi.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Gi)))}_computeIntersections(e,t,n){let i;const r=this.geometry,a=this.material,o=r.index,l=r.attributes.position,c=r.attributes.uv,h=r.attributes.uv1,d=r.attributes.normal,u=r.groups,f=r.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=u.length;m<_;m++){const g=u[m],p=a[g.materialIndex],E=Math.max(g.start,f.start),b=Math.min(o.count,Math.min(g.start+g.count,f.start+f.count));for(let M=E,U=b;M<U;M+=3){const C=o.getX(M),P=o.getX(M+1),D=o.getX(M+2);i=Rr(this,p,e,n,c,h,d,C,P,D),i&&(i.faceIndex=Math.floor(M/3),i.face.materialIndex=g.materialIndex,t.push(i))}}else{const m=Math.max(0,f.start),_=Math.min(o.count,f.start+f.count);for(let g=m,p=_;g<p;g+=3){const E=o.getX(g),b=o.getX(g+1),M=o.getX(g+2);i=Rr(this,a,e,n,c,h,d,E,b,M),i&&(i.faceIndex=Math.floor(g/3),t.push(i))}}else if(l!==void 0)if(Array.isArray(a))for(let m=0,_=u.length;m<_;m++){const g=u[m],p=a[g.materialIndex],E=Math.max(g.start,f.start),b=Math.min(l.count,Math.min(g.start+g.count,f.start+f.count));for(let M=E,U=b;M<U;M+=3){const C=M,P=M+1,D=M+2;i=Rr(this,p,e,n,c,h,d,C,P,D),i&&(i.faceIndex=Math.floor(M/3),i.face.materialIndex=g.materialIndex,t.push(i))}}else{const m=Math.max(0,f.start),_=Math.min(l.count,f.start+f.count);for(let g=m,p=_;g<p;g+=3){const E=g,b=g+1,M=g+2;i=Rr(this,a,e,n,c,h,d,E,b,M),i&&(i.faceIndex=Math.floor(g/3),t.push(i))}}}}function Nf(s,e,t,n,i,r,a,o){let l;if(e.side===Rn?l=n.intersectTriangle(a,r,i,!0,o):l=n.intersectTriangle(i,r,a,e.side===Xn,o),l===null)return null;Cr.copy(o),Cr.applyMatrix4(s.matrixWorld);const c=t.ray.origin.distanceTo(Cr);return c<t.near||c>t.far?null:{distance:c,point:Cr.clone(),object:s}}function Rr(s,e,t,n,i,r,a,o,l,c){s.getVertexPosition(o,Er),s.getVertexPosition(l,Ar),s.getVertexPosition(c,wr);const h=Nf(s,e,t,n,Er,Ar,wr,vc);if(h){const d=new I;Gn.getBarycoord(vc,Er,Ar,wr,d),i&&(h.uv=Gn.getInterpolatedAttribute(i,o,l,c,d,new Ke)),r&&(h.uv1=Gn.getInterpolatedAttribute(r,o,l,c,d,new Ke)),a&&(h.normal=Gn.getInterpolatedAttribute(a,o,l,c,d,new I),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c,normal:new I,materialIndex:0};Gn.getNormal(Er,Ar,wr,u.normal),h.face=u,h.barycoord=d}return h}class ki extends an{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const o=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const l=[],c=[],h=[],d=[];let u=0,f=0;m("z","y","x",-1,-1,n,t,e,a,r,0),m("z","y","x",1,-1,n,t,-e,a,r,1),m("x","z","y",1,1,e,n,t,i,a,2),m("x","z","y",1,-1,e,n,-t,i,a,3),m("x","y","z",1,-1,e,t,n,i,r,4),m("x","y","z",-1,-1,e,t,-n,i,r,5),this.setIndex(l),this.setAttribute("position",new It(c,3)),this.setAttribute("normal",new It(h,3)),this.setAttribute("uv",new It(d,2));function m(_,g,p,E,b,M,U,C,P,D,S){const y=M/P,N=U/D,W=M/2,X=U/2,Q=C/2,ne=P+1,G=D+1;let re=0,K=0;const ge=new I;for(let be=0;be<G;be++){const Ce=be*N-X;for(let Ie=0;Ie<ne;Ie++){const He=Ie*y-W;ge[_]=He*E,ge[g]=Ce*b,ge[p]=Q,c.push(ge.x,ge.y,ge.z),ge[_]=0,ge[g]=0,ge[p]=C>0?1:-1,h.push(ge.x,ge.y,ge.z),d.push(Ie/P),d.push(1-be/D),re+=1}}for(let be=0;be<D;be++)for(let Ce=0;Ce<P;Ce++){const Ie=u+Ce+ne*be,He=u+Ce+ne*(be+1),J=u+(Ce+1)+ne*(be+1),ae=u+(Ce+1)+ne*be;l.push(Ie,He,ae),l.push(He,J,ae),K+=6}o.addGroup(f,K,S),f+=K,u+=re}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ki(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function Ns(s){const e={};for(const t in s){e[t]={};for(const n in s[t]){const i=s[t][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][n]=null):e[t][n]=i.clone():Array.isArray(i)?e[t][n]=i.slice():e[t][n]=i}}return e}function Cn(s){const e={};for(let t=0;t<s.length;t++){const n=Ns(s[t]);for(const i in n)e[i]=n[i]}return e}function If(s){const e=[];for(let t=0;t<s.length;t++)e.push(s[t].clone());return e}function lu(s){const e=s.getRenderTarget();return e===null?s.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:Vt.workingColorSpace}const Ll={clone:Ns,merge:Cn};var Ff=`void main() {
|
|
5
|
+
*/const yl="177",od={ROTATE:0,DOLLY:1,PAN:2},ld={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},cd=0,jl=1,hd=2,Wh=1,Xh=2,vi=3,Xn=0,Rn=1,wn=2,Fi=0,As=1,Yl=2,$l=3,Jl=4,ud=5,Ji=100,dd=101,fd=102,pd=103,md=104,gd=200,_d=201,vd=202,xd=203,So=204,bo=205,yd=206,Md=207,Sd=208,bd=209,Ed=210,Ad=211,wd=212,Td=213,Cd=214,Eo=0,Ao=1,wo=2,Rs=3,To=4,Co=5,Ro=6,Lo=7,xa=0,Rd=1,Ld=2,Oi=0,Pd=1,Dd=2,Ud=3,qh=4,Nd=5,Id=6,Fd=7,Kl="attached",Od="detached",jh=300,Ls=301,Ps=302,Po=303,Do=304,ya=306,ai=1e3,Jn=1001,Uo=1002,On=1003,zd=1004,fr=1005,Fn=1006,Ra=1007,xi=1008,ci=1009,Yh=1010,$h=1011,ir=1012,Ml=1013,es=1014,oi=1015,cr=1016,Sl=1017,bl=1018,sr=1020,Jh=35902,Kh=1021,Zh=1022,Wn=1023,rr=1026,ar=1027,Qh=1028,El=1029,eu=1030,Al=1031,wl=1033,ta=33776,na=33777,ia=33778,sa=33779,No=35840,Io=35841,Fo=35842,Oo=35843,zo=36196,Bo=37492,ko=37496,Vo=37808,Ho=37809,Go=37810,Wo=37811,Xo=37812,qo=37813,jo=37814,Yo=37815,$o=37816,Jo=37817,Ko=37818,Zo=37819,Qo=37820,el=37821,ra=36492,tl=36494,nl=36495,tu=36283,il=36284,sl=36285,rl=36286,ua=2300,al=2301,La=2302,Zl=2400,Ql=2401,ec=2402,Bd=2500,kd=3200,Vd=3201,Ma=0,Hd=1,Ni="",$t="srgb",Ds="srgb-linear",da="linear",tn="srgb",ss=7680,tc=519,Gd=512,Wd=513,Xd=514,nu=515,qd=516,jd=517,Yd=518,$d=519,ol=35044,nc="300 es",yi=2e3,fa=2001;class ns{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const i=n[e];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let r=0,a=i.length;r<a;r++)i[r].call(this,e);e.target=null}}}const En=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let ic=1234567;const Zs=Math.PI/180,Us=180/Math.PI;function Zn(){const s=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(En[s&255]+En[s>>8&255]+En[s>>16&255]+En[s>>24&255]+"-"+En[e&255]+En[e>>8&255]+"-"+En[e>>16&15|64]+En[e>>24&255]+"-"+En[t&63|128]+En[t>>8&255]+"-"+En[t>>16&255]+En[t>>24&255]+En[n&255]+En[n>>8&255]+En[n>>16&255]+En[n>>24&255]).toLowerCase()}function Ot(s,e,t){return Math.max(e,Math.min(t,s))}function Tl(s,e){return(s%e+e)%e}function Jd(s,e,t,n,i){return n+(s-e)*(i-n)/(t-e)}function Kd(s,e,t){return s!==e?(t-s)/(e-s):0}function Qs(s,e,t){return(1-t)*s+t*e}function Zd(s,e,t,n){return Qs(s,e,1-Math.exp(-t*n))}function Qd(s,e=1){return e-Math.abs(Tl(s,e*2)-e)}function ef(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*(3-2*s))}function tf(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*s*(s*(s*6-15)+10))}function nf(s,e){return s+Math.floor(Math.random()*(e-s+1))}function sf(s,e){return s+Math.random()*(e-s)}function rf(s){return s*(.5-Math.random())}function af(s){s!==void 0&&(ic=s);let e=ic+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function of(s){return s*Zs}function lf(s){return s*Us}function cf(s){return(s&s-1)===0&&s!==0}function hf(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function uf(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}function df(s,e,t,n,i){const r=Math.cos,a=Math.sin,o=r(t/2),l=a(t/2),c=r((e+n)/2),h=a((e+n)/2),d=r((e-n)/2),u=a((e-n)/2),f=r((n-e)/2),m=a((n-e)/2);switch(i){case"XYX":s.set(o*h,l*d,l*u,o*c);break;case"YZY":s.set(l*u,o*h,l*d,o*c);break;case"ZXZ":s.set(l*d,l*u,o*h,o*c);break;case"XZX":s.set(o*h,l*m,l*f,o*c);break;case"YXY":s.set(l*f,o*h,l*m,o*c);break;case"ZYZ":s.set(l*m,l*f,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function $n(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return s/4294967295;case Uint16Array:return s/65535;case Uint8Array:return s/255;case Int32Array:return Math.max(s/2147483647,-1);case Int16Array:return Math.max(s/32767,-1);case Int8Array:return Math.max(s/127,-1);default:throw new Error("Invalid component type.")}}function en(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return Math.round(s*4294967295);case Uint16Array:return Math.round(s*65535);case Uint8Array:return Math.round(s*255);case Int32Array:return Math.round(s*2147483647);case Int16Array:return Math.round(s*32767);case Int8Array:return Math.round(s*127);default:throw new Error("Invalid component type.")}}const Ki={DEG2RAD:Zs,RAD2DEG:Us,generateUUID:Zn,clamp:Ot,euclideanModulo:Tl,mapLinear:Jd,inverseLerp:Kd,lerp:Qs,damp:Zd,pingpong:Qd,smoothstep:ef,smootherstep:tf,randInt:nf,randFloat:sf,randFloatSpread:rf,seededRandom:af,degToRad:of,radToDeg:lf,isPowerOfTwo:cf,ceilPowerOfTwo:hf,floorPowerOfTwo:uf,setQuaternionFromProperEuler:df,normalize:en,denormalize:$n};class Ze{constructor(e=0,t=0){Ze.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class zn{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,r,a,o){let l=n[i+0],c=n[i+1],h=n[i+2],d=n[i+3];const u=r[a+0],f=r[a+1],m=r[a+2],_=r[a+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d;return}if(o===1){e[t+0]=u,e[t+1]=f,e[t+2]=m,e[t+3]=_;return}if(d!==_||l!==u||c!==f||h!==m){let g=1-o;const p=l*u+c*f+h*m+d*_,E=p>=0?1:-1,b=1-p*p;if(b>Number.EPSILON){const U=Math.sqrt(b),C=Math.atan2(U,p*E);g=Math.sin(g*C)/U,o=Math.sin(o*C)/U}const M=o*E;if(l=l*g+u*M,c=c*g+f*M,h=h*g+m*M,d=d*g+_*M,g===1-o){const U=1/Math.sqrt(l*l+c*c+h*h+d*d);l*=U,c*=U,h*=U,d*=U}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,n,i,r,a){const o=n[i],l=n[i+1],c=n[i+2],h=n[i+3],d=r[a],u=r[a+1],f=r[a+2],m=r[a+3];return e[t]=o*m+h*d+l*f-c*u,e[t+1]=l*m+h*u+c*d-o*f,e[t+2]=c*m+h*f+o*u-l*d,e[t+3]=h*m-o*d-l*u-c*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,r=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(i/2),d=o(r/2),u=l(n/2),f=l(i/2),m=l(r/2);switch(a){case"XYZ":this._x=u*h*d+c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d-u*f*m;break;case"YXZ":this._x=u*h*d+c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d+u*f*m;break;case"ZXY":this._x=u*h*d-c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d-u*f*m;break;case"ZYX":this._x=u*h*d-c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d+u*f*m;break;case"YZX":this._x=u*h*d+c*f*m,this._y=c*f*d+u*h*m,this._z=c*h*m-u*f*d,this._w=c*h*d-u*f*m;break;case"XZY":this._x=u*h*d-c*f*m,this._y=c*f*d-u*h*m,this._z=c*h*m+u*f*d,this._w=c*h*d+u*f*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],o=t[5],l=t[9],c=t[2],h=t[6],d=t[10],u=n+o+d;if(u>0){const f=.5/Math.sqrt(u+1);this._w=.25/f,this._x=(h-l)*f,this._y=(r-c)*f,this._z=(a-i)*f}else if(n>o&&n>d){const f=2*Math.sqrt(1+n-o-d);this._w=(h-l)/f,this._x=.25*f,this._y=(i+a)/f,this._z=(r+c)/f}else if(o>d){const f=2*Math.sqrt(1+o-n-d);this._w=(r-c)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(l+h)/f}else{const f=2*Math.sqrt(1+d-n-o);this._w=(a-i)/f,this._x=(r+c)/f,this._y=(l+h)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ot(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,r=e._z,a=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+a*o+i*c-r*l,this._y=i*h+a*l+r*o-n*c,this._z=r*h+a*c+n*l-i*o,this._w=a*h-n*o-i*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,r=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const f=1-t;return this._w=f*a+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*r+t*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),d=Math.sin((1-t)*h)/c,u=Math.sin(t*h)/c;return this._w=a*d+this._w*u,this._x=n*d+this._x*u,this._y=i*d+this._y*u,this._z=r*d+this._z*u,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),r*Math.sin(t),r*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class I{constructor(e=0,t=0,n=0){I.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(sc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(sc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*i-o*n),h=2*(o*t-r*i),d=2*(r*n-a*t);return this.x=t+l*c+a*d-o*h,this.y=n+l*h+o*c-r*d,this.z=i+l*d+r*h-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this.z=Ot(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this.z=Ot(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,r=e.z,a=t.x,o=t.y,l=t.z;return this.x=i*l-r*o,this.y=r*a-n*l,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Pa.copy(this).projectOnVector(e),this.sub(Pa)}reflect(e){return this.sub(Pa.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ot(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Pa=new I,sc=new zn;class Ft{constructor(e,t,n,i,r,a,o,l,c){Ft.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,r,a,o,l,c)}set(e,t,n,i,r,a,o,l,c){const h=this.elements;return h[0]=e,h[1]=i,h[2]=o,h[3]=t,h[4]=r,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],d=n[7],u=n[2],f=n[5],m=n[8],_=i[0],g=i[3],p=i[6],E=i[1],b=i[4],M=i[7],U=i[2],C=i[5],P=i[8];return r[0]=a*_+o*E+l*U,r[3]=a*g+o*b+l*C,r[6]=a*p+o*M+l*P,r[1]=c*_+h*E+d*U,r[4]=c*g+h*b+d*C,r[7]=c*p+h*M+d*P,r[2]=u*_+f*E+m*U,r[5]=u*g+f*b+m*C,r[8]=u*p+f*M+m*P,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*a*h-t*o*c-n*r*h+n*o*l+i*r*c-i*a*l}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],d=h*a-o*c,u=o*l-h*r,f=c*r-a*l,m=t*d+n*u+i*f;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const _=1/m;return e[0]=d*_,e[1]=(i*c-h*n)*_,e[2]=(o*n-i*a)*_,e[3]=u*_,e[4]=(h*t-i*l)*_,e[5]=(i*r-o*t)*_,e[6]=f*_,e[7]=(n*l-c*t)*_,e[8]=(a*t-n*r)*_,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-i*c,i*l,-i*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Da.makeScale(e,t)),this}rotate(e){return this.premultiply(Da.makeRotation(-e)),this}translate(e,t){return this.premultiply(Da.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Da=new Ft;function iu(s){for(let e=s.length-1;e>=0;--e)if(s[e]>=65535)return!0;return!1}function or(s){return document.createElementNS("http://www.w3.org/1999/xhtml",s)}function ff(){const s=or("canvas");return s.style.display="block",s}const rc={};function ws(s){s in rc||(rc[s]=!0,console.warn(s))}function pf(s,e,t){return new Promise(function(n,i){function r(){switch(s.clientWaitSync(e,s.SYNC_FLUSH_COMMANDS_BIT,0)){case s.WAIT_FAILED:i();break;case s.TIMEOUT_EXPIRED:setTimeout(r,t);break;default:n()}}setTimeout(r,t)})}function mf(s){const e=s.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function gf(s){const e=s.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const ac=new Ft().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),oc=new Ft().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function _f(){const s={enabled:!0,workingColorSpace:Ds,spaces:{},convert:function(i,r,a){return this.enabled===!1||r===a||!r||!a||(this.spaces[r].transfer===tn&&(i.r=Mi(i.r),i.g=Mi(i.g),i.b=Mi(i.b)),this.spaces[r].primaries!==this.spaces[a].primaries&&(i.applyMatrix3(this.spaces[r].toXYZ),i.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===tn&&(i.r=Ts(i.r),i.g=Ts(i.g),i.b=Ts(i.b))),i},workingToColorSpace:function(i,r){return this.convert(i,this.workingColorSpace,r)},colorSpaceToWorking:function(i,r){return this.convert(i,r,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===Ni?da:this.spaces[i].transfer},getLuminanceCoefficients:function(i,r=this.workingColorSpace){return i.fromArray(this.spaces[r].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,r,a){return i.copy(this.spaces[r].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(i){return this.spaces[i].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(i=this.workingColorSpace){return this.spaces[i].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(i,r){return ws("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),s.workingToColorSpace(i,r)},toWorkingColorSpace:function(i,r){return ws("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),s.colorSpaceToWorking(i,r)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return s.define({[Ds]:{primaries:e,whitePoint:n,transfer:da,toXYZ:ac,fromXYZ:oc,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:$t},outputColorSpaceConfig:{drawingBufferColorSpace:$t}},[$t]:{primaries:e,whitePoint:n,transfer:tn,toXYZ:ac,fromXYZ:oc,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:$t}}}),s}const Vt=_f();function Mi(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function Ts(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}let rs;class vf{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{rs===void 0&&(rs=or("canvas")),rs.width=e.width,rs.height=e.height;const i=rs.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),n=rs}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=or("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let a=0;a<r.length;a++)r[a]=Mi(r[a]/255)*255;return n.putImageData(i,0,0),t}else if(e.data){const t=e.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Mi(t[n]/255)*255):t[n]=Mi(t[n]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let xf=0;class Cl{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:xf++}),this.uuid=Zn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){const t=this.data;return t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight):t!==null?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const n={uuid:this.uuid,url:""},i=this.data;if(i!==null){let r;if(Array.isArray(i)){r=[];for(let a=0,o=i.length;a<o;a++)i[a].isDataTexture?r.push(Ua(i[a].image)):r.push(Ua(i[a]))}else r=Ua(i);n.url=r}return t||(e.images[this.uuid]=n),n}}function Ua(s){return typeof HTMLImageElement<"u"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&s instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&s instanceof ImageBitmap?vf.getDataURL(s):s.data?{data:Array.from(s.data),width:s.width,height:s.height,type:s.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let yf=0;const Na=new I;class bn extends ns{constructor(e=bn.DEFAULT_IMAGE,t=bn.DEFAULT_MAPPING,n=Jn,i=Jn,r=Fn,a=xi,o=Wn,l=ci,c=bn.DEFAULT_ANISOTROPY,h=Ni){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:yf++}),this.uuid=Zn(),this.name="",this.source=new Cl(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Ze(0,0),this.repeat=new Ze(1,1),this.center=new Ze(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Ft,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(e&&e.depth&&e.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Na).x}get height(){return this.source.getSize(Na).y}get depth(){return this.source.getSize(Na).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){console.warn(`THREE.Texture.setValues(): property '${t}' does not exist.`);continue}i&&n&&i.isVector2&&n.isVector2||i&&n&&i.isVector3&&n.isVector3||i&&n&&i.isMatrix3&&n.isMatrix3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==jh)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case ai:e.x=e.x-Math.floor(e.x);break;case Jn:e.x=e.x<0?0:1;break;case Uo:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case ai:e.y=e.y-Math.floor(e.y);break;case Jn:e.y=e.y<0?0:1;break;case Uo:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}bn.DEFAULT_IMAGE=null;bn.DEFAULT_MAPPING=jh;bn.DEFAULT_ANISOTROPY=1;class Ht{constructor(e=0,t=0,n=0,i=1){Ht.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r;const l=e.elements,c=l[0],h=l[4],d=l[8],u=l[1],f=l[5],m=l[9],_=l[2],g=l[6],p=l[10];if(Math.abs(h-u)<.01&&Math.abs(d-_)<.01&&Math.abs(m-g)<.01){if(Math.abs(h+u)<.1&&Math.abs(d+_)<.1&&Math.abs(m+g)<.1&&Math.abs(c+f+p-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const b=(c+1)/2,M=(f+1)/2,U=(p+1)/2,C=(h+u)/4,P=(d+_)/4,D=(m+g)/4;return b>M&&b>U?b<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(b),i=C/n,r=P/n):M>U?M<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(M),n=C/i,r=D/i):U<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(U),n=P/r,i=D/r),this.set(n,i,r,t),this}let E=Math.sqrt((g-m)*(g-m)+(d-_)*(d-_)+(u-h)*(u-h));return Math.abs(E)<.001&&(E=1),this.x=(g-m)/E,this.y=(d-_)/E,this.z=(u-h)/E,this.w=Math.acos((c+f+p-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ot(this.x,e.x,t.x),this.y=Ot(this.y,e.y,t.y),this.z=Ot(this.z,e.z,t.z),this.w=Ot(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ot(this.x,e,t),this.y=Ot(this.y,e,t),this.z=Ot(this.z,e,t),this.w=Ot(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ot(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Mf extends ns{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Fn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new Ht(0,0,e,t),this.scissorTest=!1,this.viewport=new Ht(0,0,e,t);const i={width:e,height:t,depth:n.depth},r=new bn(i);this.textures=[];const a=n.count;for(let o=0;o<a;o++)this.textures[o]=r.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){const t={minFilter:Fn,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let n=0;n<this.textures.length;n++)this.textures[n].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=e,this.textures[i].image.height=t,this.textures[i].image.depth=n,this.textures[i].isArrayTexture=this.textures[i].image.depth>1;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const i=Object.assign({},e.textures[t].image);this.textures[t].source=new Cl(i)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class ts extends Mf{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class su extends bn{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=On,this.minFilter=On,this.wrapR=Jn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Sf extends bn{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=On,this.minFilter=On,this.wrapR=Jn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ei{constructor(e=new I(1/0,1/0,1/0),t=new I(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(qn.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(qn.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=qn.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(n!==void 0){const r=n.getAttribute("position");if(t===!0&&r!==void 0&&e.isInstancedMesh!==!0)for(let a=0,o=r.count;a<o;a++)e.isMesh===!0?e.getVertexPosition(a,qn):qn.fromBufferAttribute(r,a),qn.applyMatrix4(e.matrixWorld),this.expandByPoint(qn);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),pr.copy(e.boundingBox)):(n.boundingBox===null&&n.computeBoundingBox(),pr.copy(n.boundingBox)),pr.applyMatrix4(e.matrixWorld),this.union(pr)}const i=e.children;for(let r=0,a=i.length;r<a;r++)this.expandByObject(i[r],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,qn),qn.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Vs),mr.subVectors(this.max,Vs),as.subVectors(e.a,Vs),os.subVectors(e.b,Vs),ls.subVectors(e.c,Vs),wi.subVectors(os,as),Ti.subVectors(ls,os),Vi.subVectors(as,ls);let t=[0,-wi.z,wi.y,0,-Ti.z,Ti.y,0,-Vi.z,Vi.y,wi.z,0,-wi.x,Ti.z,0,-Ti.x,Vi.z,0,-Vi.x,-wi.y,wi.x,0,-Ti.y,Ti.x,0,-Vi.y,Vi.x,0];return!Ia(t,as,os,ls,mr)||(t=[1,0,0,0,1,0,0,0,1],!Ia(t,as,os,ls,mr))?!1:(gr.crossVectors(wi,Ti),t=[gr.x,gr.y,gr.z],Ia(t,as,os,ls,mr))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,qn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(qn).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(di[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),di[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),di[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),di[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),di[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),di[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),di[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),di[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(di),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const di=[new I,new I,new I,new I,new I,new I,new I,new I],qn=new I,pr=new ei,as=new I,os=new I,ls=new I,wi=new I,Ti=new I,Vi=new I,Vs=new I,mr=new I,gr=new I,Hi=new I;function Ia(s,e,t,n,i){for(let r=0,a=s.length-3;r<=a;r+=3){Hi.fromArray(s,r);const o=i.x*Math.abs(Hi.x)+i.y*Math.abs(Hi.y)+i.z*Math.abs(Hi.z),l=e.dot(Hi),c=t.dot(Hi),h=n.dot(Hi);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const bf=new ei,Hs=new I,Fa=new I;class Ei{constructor(e=new I,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):bf.setFromPoints(e).getCenter(n);let i=0;for(let r=0,a=e.length;r<a;r++)i=Math.max(i,n.distanceToSquared(e[r]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Hs.subVectors(e,this.center);const t=Hs.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(Hs,i/n),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Fa.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Hs.copy(e.center).add(Fa)),this.expandByPoint(Hs.copy(e.center).sub(Fa))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const fi=new I,Oa=new I,_r=new I,Ci=new I,za=new I,vr=new I,Ba=new I;class Fs{constructor(e=new I,t=new I(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,fi)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=fi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(fi.copy(this.origin).addScaledVector(this.direction,t),fi.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Oa.copy(e).add(t).multiplyScalar(.5),_r.copy(t).sub(e).normalize(),Ci.copy(this.origin).sub(Oa);const r=e.distanceTo(t)*.5,a=-this.direction.dot(_r),o=Ci.dot(this.direction),l=-Ci.dot(_r),c=Ci.lengthSq(),h=Math.abs(1-a*a);let d,u,f,m;if(h>0)if(d=a*l-o,u=a*o-l,m=r*h,d>=0)if(u>=-m)if(u<=m){const _=1/h;d*=_,u*=_,f=d*(d+a*u+2*o)+u*(a*d+u+2*l)+c}else u=r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;else u=-r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;else u<=-m?(d=Math.max(0,-(-a*r+o)),u=d>0?-r:Math.min(Math.max(-r,-l),r),f=-d*d+u*(u+2*l)+c):u<=m?(d=0,u=Math.min(Math.max(-r,-l),r),f=u*(u+2*l)+c):(d=Math.max(0,-(a*r+o)),u=d>0?r:Math.min(Math.max(-r,-l),r),f=-d*d+u*(u+2*l)+c);else u=a>0?-r:r,d=Math.max(0,-(a*u+o)),f=-d*d+u*(u+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,d),i&&i.copy(Oa).addScaledVector(_r,u),f}intersectSphere(e,t){fi.subVectors(e.center,this.origin);const n=fi.dot(this.direction),i=fi.dot(fi)-n*n,r=e.radius*e.radius;if(i>r)return null;const a=Math.sqrt(r-i),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,r,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,d=1/this.direction.z,u=this.origin;return c>=0?(n=(e.min.x-u.x)*c,i=(e.max.x-u.x)*c):(n=(e.max.x-u.x)*c,i=(e.min.x-u.x)*c),h>=0?(r=(e.min.y-u.y)*h,a=(e.max.y-u.y)*h):(r=(e.max.y-u.y)*h,a=(e.min.y-u.y)*h),n>a||r>i||((r>n||isNaN(n))&&(n=r),(a<i||isNaN(i))&&(i=a),d>=0?(o=(e.min.z-u.z)*d,l=(e.max.z-u.z)*d):(o=(e.max.z-u.z)*d,l=(e.min.z-u.z)*d),n>l||o>i)||((o>n||n!==n)&&(n=o),(l<i||i!==i)&&(i=l),i<0)?null:this.at(n>=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,fi)!==null}intersectTriangle(e,t,n,i,r){za.subVectors(t,e),vr.subVectors(n,e),Ba.crossVectors(za,vr);let a=this.direction.dot(Ba),o;if(a>0){if(i)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Ci.subVectors(this.origin,e);const l=o*this.direction.dot(vr.crossVectors(Ci,vr));if(l<0)return null;const c=o*this.direction.dot(za.cross(Ci));if(c<0||l+c>a)return null;const h=-o*Ci.dot(Ba);return h<0?null:this.at(h/a,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class At{constructor(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g){At.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g)}set(e,t,n,i,r,a,o,l,c,h,d,u,f,m,_,g){const p=this.elements;return p[0]=e,p[4]=t,p[8]=n,p[12]=i,p[1]=r,p[5]=a,p[9]=o,p[13]=l,p[2]=c,p[6]=h,p[10]=d,p[14]=u,p[3]=f,p[7]=m,p[11]=_,p[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new At().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/cs.setFromMatrixColumn(e,0).length(),r=1/cs.setFromMatrixColumn(e,1).length(),a=1/cs.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(i),c=Math.sin(i),h=Math.cos(r),d=Math.sin(r);if(e.order==="XYZ"){const u=a*h,f=a*d,m=o*h,_=o*d;t[0]=l*h,t[4]=-l*d,t[8]=c,t[1]=f+m*c,t[5]=u-_*c,t[9]=-o*l,t[2]=_-u*c,t[6]=m+f*c,t[10]=a*l}else if(e.order==="YXZ"){const u=l*h,f=l*d,m=c*h,_=c*d;t[0]=u+_*o,t[4]=m*o-f,t[8]=a*c,t[1]=a*d,t[5]=a*h,t[9]=-o,t[2]=f*o-m,t[6]=_+u*o,t[10]=a*l}else if(e.order==="ZXY"){const u=l*h,f=l*d,m=c*h,_=c*d;t[0]=u-_*o,t[4]=-a*d,t[8]=m+f*o,t[1]=f+m*o,t[5]=a*h,t[9]=_-u*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const u=a*h,f=a*d,m=o*h,_=o*d;t[0]=l*h,t[4]=m*c-f,t[8]=u*c+_,t[1]=l*d,t[5]=_*c+u,t[9]=f*c-m,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const u=a*l,f=a*c,m=o*l,_=o*c;t[0]=l*h,t[4]=_-u*d,t[8]=m*d+f,t[1]=d,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=f*d+m,t[10]=u-_*d}else if(e.order==="XZY"){const u=a*l,f=a*c,m=o*l,_=o*c;t[0]=l*h,t[4]=-d,t[8]=c*h,t[1]=u*d+_,t[5]=a*h,t[9]=f*d-m,t[2]=m*d-f,t[6]=o*h,t[10]=_*d+u}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Ef,e,Af)}lookAt(e,t,n){const i=this.elements;return Nn.subVectors(e,t),Nn.lengthSq()===0&&(Nn.z=1),Nn.normalize(),Ri.crossVectors(n,Nn),Ri.lengthSq()===0&&(Math.abs(n.z)===1?Nn.x+=1e-4:Nn.z+=1e-4,Nn.normalize(),Ri.crossVectors(n,Nn)),Ri.normalize(),xr.crossVectors(Nn,Ri),i[0]=Ri.x,i[4]=xr.x,i[8]=Nn.x,i[1]=Ri.y,i[5]=xr.y,i[9]=Nn.y,i[2]=Ri.z,i[6]=xr.z,i[10]=Nn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],d=n[5],u=n[9],f=n[13],m=n[2],_=n[6],g=n[10],p=n[14],E=n[3],b=n[7],M=n[11],U=n[15],C=i[0],P=i[4],D=i[8],S=i[12],y=i[1],N=i[5],W=i[9],X=i[13],Q=i[2],ne=i[6],G=i[10],re=i[14],Z=i[3],me=i[7],Ee=i[11],Ce=i[15];return r[0]=a*C+o*y+l*Q+c*Z,r[4]=a*P+o*N+l*ne+c*me,r[8]=a*D+o*W+l*G+c*Ee,r[12]=a*S+o*X+l*re+c*Ce,r[1]=h*C+d*y+u*Q+f*Z,r[5]=h*P+d*N+u*ne+f*me,r[9]=h*D+d*W+u*G+f*Ee,r[13]=h*S+d*X+u*re+f*Ce,r[2]=m*C+_*y+g*Q+p*Z,r[6]=m*P+_*N+g*ne+p*me,r[10]=m*D+_*W+g*G+p*Ee,r[14]=m*S+_*X+g*re+p*Ce,r[3]=E*C+b*y+M*Q+U*Z,r[7]=E*P+b*N+M*ne+U*me,r[11]=E*D+b*W+M*G+U*Ee,r[15]=E*S+b*X+M*re+U*Ce,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],o=e[5],l=e[9],c=e[13],h=e[2],d=e[6],u=e[10],f=e[14],m=e[3],_=e[7],g=e[11],p=e[15];return m*(+r*l*d-i*c*d-r*o*u+n*c*u+i*o*f-n*l*f)+_*(+t*l*f-t*c*u+r*a*u-i*a*f+i*c*h-r*l*h)+g*(+t*c*d-t*o*f-r*a*d+n*a*f+r*o*h-n*c*h)+p*(-i*o*h-t*l*d+t*o*u+i*a*d-n*a*u+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],d=e[9],u=e[10],f=e[11],m=e[12],_=e[13],g=e[14],p=e[15],E=d*g*c-_*u*c+_*l*f-o*g*f-d*l*p+o*u*p,b=m*u*c-h*g*c-m*l*f+a*g*f+h*l*p-a*u*p,M=h*_*c-m*d*c+m*o*f-a*_*f-h*o*p+a*d*p,U=m*d*l-h*_*l-m*o*u+a*_*u+h*o*g-a*d*g,C=t*E+n*b+i*M+r*U;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const P=1/C;return e[0]=E*P,e[1]=(_*u*r-d*g*r-_*i*f+n*g*f+d*i*p-n*u*p)*P,e[2]=(o*g*r-_*l*r+_*i*c-n*g*c-o*i*p+n*l*p)*P,e[3]=(d*l*r-o*u*r-d*i*c+n*u*c+o*i*f-n*l*f)*P,e[4]=b*P,e[5]=(h*g*r-m*u*r+m*i*f-t*g*f-h*i*p+t*u*p)*P,e[6]=(m*l*r-a*g*r-m*i*c+t*g*c+a*i*p-t*l*p)*P,e[7]=(a*u*r-h*l*r+h*i*c-t*u*c-a*i*f+t*l*f)*P,e[8]=M*P,e[9]=(m*d*r-h*_*r-m*n*f+t*_*f+h*n*p-t*d*p)*P,e[10]=(a*_*r-m*o*r+m*n*c-t*_*c-a*n*p+t*o*p)*P,e[11]=(h*o*r-a*d*r-h*n*c+t*d*c+a*n*f-t*o*f)*P,e[12]=U*P,e[13]=(h*_*i-m*d*i+m*n*u-t*_*u-h*n*g+t*d*g)*P,e[14]=(m*o*i-a*_*i-m*n*l+t*_*l+a*n*g-t*o*g)*P,e[15]=(a*d*i-h*o*i+h*n*l-t*d*l-a*n*u+t*o*u)*P,this}scale(e){const t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,o=e.y,l=e.z,c=r*a,h=r*o;return this.set(c*a+n,c*o-i*l,c*l+i*o,0,c*o+i*l,h*o+n,h*l-i*a,0,c*l-i*o,h*l+i*a,r*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,r=t._x,a=t._y,o=t._z,l=t._w,c=r+r,h=a+a,d=o+o,u=r*c,f=r*h,m=r*d,_=a*h,g=a*d,p=o*d,E=l*c,b=l*h,M=l*d,U=n.x,C=n.y,P=n.z;return i[0]=(1-(_+p))*U,i[1]=(f+M)*U,i[2]=(m-b)*U,i[3]=0,i[4]=(f-M)*C,i[5]=(1-(u+p))*C,i[6]=(g+E)*C,i[7]=0,i[8]=(m+b)*P,i[9]=(g-E)*P,i[10]=(1-(u+_))*P,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let r=cs.set(i[0],i[1],i[2]).length();const a=cs.set(i[4],i[5],i[6]).length(),o=cs.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],jn.copy(this);const c=1/r,h=1/a,d=1/o;return jn.elements[0]*=c,jn.elements[1]*=c,jn.elements[2]*=c,jn.elements[4]*=h,jn.elements[5]*=h,jn.elements[6]*=h,jn.elements[8]*=d,jn.elements[9]*=d,jn.elements[10]*=d,t.setFromRotationMatrix(jn),n.x=r,n.y=a,n.z=o,this}makePerspective(e,t,n,i,r,a,o=yi){const l=this.elements,c=2*r/(t-e),h=2*r/(n-i),d=(t+e)/(t-e),u=(n+i)/(n-i);let f,m;if(o===yi)f=-(a+r)/(a-r),m=-2*a*r/(a-r);else if(o===fa)f=-a/(a-r),m=-a*r/(a-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=d,l[12]=0,l[1]=0,l[5]=h,l[9]=u,l[13]=0,l[2]=0,l[6]=0,l[10]=f,l[14]=m,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,i,r,a,o=yi){const l=this.elements,c=1/(t-e),h=1/(n-i),d=1/(a-r),u=(t+e)*c,f=(n+i)*h;let m,_;if(o===yi)m=(a+r)*d,_=-2*d;else if(o===fa)m=r*d,_=-1*d;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-u,l[1]=0,l[5]=2*h,l[9]=0,l[13]=-f,l[2]=0,l[6]=0,l[10]=_,l[14]=-m,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const cs=new I,jn=new At,Ef=new I(0,0,0),Af=new I(1,1,1),Ri=new I,xr=new I,Nn=new I,lc=new At,cc=new zn;class Ln{constructor(e=0,t=0,n=0,i=Ln.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,r=i[0],a=i[4],o=i[8],l=i[1],c=i[5],h=i[9],d=i[2],u=i[6],f=i[10];switch(t){case"XYZ":this._y=Math.asin(Ot(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(u,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ot(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-d,r),this._z=0);break;case"ZXY":this._x=Math.asin(Ot(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-d,f),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-Ot(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(u,f),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Ot(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-d,r)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Ot(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-h,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return lc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(lc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cc.setFromEuler(this),this.setFromQuaternion(cc,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ln.DEFAULT_ORDER="XYZ";class Rl{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let wf=0;const hc=new I,hs=new zn,pi=new At,yr=new I,Gs=new I,Tf=new I,Cf=new zn,uc=new I(1,0,0),dc=new I(0,1,0),fc=new I(0,0,1),pc={type:"added"},Rf={type:"removed"},us={type:"childadded",child:null},ka={type:"childremoved",child:null};class nn extends ns{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:wf++}),this.uuid=Zn(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=nn.DEFAULT_UP.clone();const e=new I,t=new Ln,n=new zn,i=new I(1,1,1);function r(){n.setFromEuler(t,!1)}function a(){t.setFromQuaternion(n,void 0,!1)}t._onChange(r),n._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new At},normalMatrix:{value:new Ft}}),this.matrix=new At,this.matrixWorld=new At,this.matrixAutoUpdate=nn.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=nn.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new Rl,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return hs.setFromAxisAngle(e,t),this.quaternion.multiply(hs),this}rotateOnWorldAxis(e,t){return hs.setFromAxisAngle(e,t),this.quaternion.premultiply(hs),this}rotateX(e){return this.rotateOnAxis(uc,e)}rotateY(e){return this.rotateOnAxis(dc,e)}rotateZ(e){return this.rotateOnAxis(fc,e)}translateOnAxis(e,t){return hc.copy(e).applyQuaternion(this.quaternion),this.position.add(hc.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(uc,e)}translateY(e){return this.translateOnAxis(dc,e)}translateZ(e){return this.translateOnAxis(fc,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(pi.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?yr.copy(e):yr.set(e,t,n);const i=this.parent;this.updateWorldMatrix(!0,!1),Gs.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?pi.lookAt(Gs,yr,this.up):pi.lookAt(yr,Gs,this.up),this.quaternion.setFromRotationMatrix(pi),i&&(pi.extractRotation(i.matrixWorld),hs.setFromRotationMatrix(pi),this.quaternion.premultiply(hs.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(pc),us.child=e,this.dispatchEvent(us),us.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(Rf),ka.child=e,this.dispatchEvent(ka),ka.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),pi.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),pi.multiply(e.parent.matrixWorld)),e.applyMatrix4(pi),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(pc),us.child=e,this.dispatchEvent(us),us.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n<i;n++){const a=this.children[n].getObjectByProperty(e,t);if(a!==void 0)return a}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);const i=this.children;for(let r=0,a=i.length;r<a;r++)i[r].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gs,e,Tf),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gs,Cf,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const i=this.children;for(let r=0,a=i.length;r<a;r++)i[r].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),i.instanceInfo=this._instanceInfo.map(o=>({...o})),i.availableInstanceIds=this._availableInstanceIds.slice(),i.availableGeometryIds=this._availableGeometryIds.slice(),i.nextIndexStart=this._nextIndexStart,i.nextVertexStart=this._nextVertexStart,i.geometryCount=this._geometryCount,i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.matricesTexture=this._matricesTexture.toJSON(e),i.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(i.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(i.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(i.boundingBox=this.boundingBox.toJSON()));function r(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c<h;c++){const d=l[c];r(e.shapes,d)}else r(e.shapes,l)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(r(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(r(e.materials,this.material[l]));i.material=o}else i.material=r(e.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];i.animations.push(r(e.animations,l))}}if(t){const o=a(e.geometries),l=a(e.materials),c=a(e.textures),h=a(e.images),d=a(e.shapes),u=a(e.skeletons),f=a(e.animations),m=a(e.nodes);o.length>0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),d.length>0&&(n.shapes=d),u.length>0&&(n.skeletons=u),f.length>0&&(n.animations=f),m.length>0&&(n.nodes=m)}return n.object=i,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n<e.children.length;n++){const i=e.children[n];this.add(i.clone())}return this}}nn.DEFAULT_UP=new I(0,1,0);nn.DEFAULT_MATRIX_AUTO_UPDATE=!0;nn.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Yn=new I,mi=new I,Va=new I,gi=new I,ds=new I,fs=new I,mc=new I,Ha=new I,Ga=new I,Wa=new I,Xa=new Ht,qa=new Ht,ja=new Ht;class Gn{constructor(e=new I,t=new I,n=new I){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),Yn.subVectors(e,t),i.cross(Yn);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){Yn.subVectors(i,t),mi.subVectors(n,t),Va.subVectors(e,t);const a=Yn.dot(Yn),o=Yn.dot(mi),l=Yn.dot(Va),c=mi.dot(mi),h=mi.dot(Va),d=a*c-o*o;if(d===0)return r.set(0,0,0),null;const u=1/d,f=(c*l-o*h)*u,m=(a*h-o*l)*u;return r.set(1-f-m,m,f)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,gi)===null?!1:gi.x>=0&&gi.y>=0&&gi.x+gi.y<=1}static getInterpolation(e,t,n,i,r,a,o,l){return this.getBarycoord(e,t,n,i,gi)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(r,gi.x),l.addScaledVector(a,gi.y),l.addScaledVector(o,gi.z),l)}static getInterpolatedAttribute(e,t,n,i,r,a){return Xa.setScalar(0),qa.setScalar(0),ja.setScalar(0),Xa.fromBufferAttribute(e,t),qa.fromBufferAttribute(e,n),ja.fromBufferAttribute(e,i),a.setScalar(0),a.addScaledVector(Xa,r.x),a.addScaledVector(qa,r.y),a.addScaledVector(ja,r.z),a}static isFrontFacing(e,t,n,i){return Yn.subVectors(n,t),mi.subVectors(e,t),Yn.cross(mi).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Yn.subVectors(this.c,this.b),mi.subVectors(this.a,this.b),Yn.cross(mi).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Gn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Gn.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,r){return Gn.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return Gn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Gn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,r=this.c;let a,o;ds.subVectors(i,n),fs.subVectors(r,n),Ha.subVectors(e,n);const l=ds.dot(Ha),c=fs.dot(Ha);if(l<=0&&c<=0)return t.copy(n);Ga.subVectors(e,i);const h=ds.dot(Ga),d=fs.dot(Ga);if(h>=0&&d<=h)return t.copy(i);const u=l*d-h*c;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),t.copy(n).addScaledVector(ds,a);Wa.subVectors(e,r);const f=ds.dot(Wa),m=fs.dot(Wa);if(m>=0&&f<=m)return t.copy(r);const _=f*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(n).addScaledVector(fs,o);const g=h*m-f*d;if(g<=0&&d-h>=0&&f-m>=0)return mc.subVectors(r,i),o=(d-h)/(d-h+(f-m)),t.copy(i).addScaledVector(mc,o);const p=1/(g+_+u);return a=_*p,o=u*p,t.copy(n).addScaledVector(ds,a).addScaledVector(fs,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const ru={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Li={h:0,s:0,l:0},Mr={h:0,s:0,l:0};function Ya(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}class _t{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=$t){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Vt.colorSpaceToWorking(this,t),this}setRGB(e,t,n,i=Vt.workingColorSpace){return this.r=e,this.g=t,this.b=n,Vt.colorSpaceToWorking(this,i),this}setHSL(e,t,n,i=Vt.workingColorSpace){if(e=Tl(e,1),t=Ot(t,0,1),n=Ot(n,0,1),t===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+t):n+t-n*t,a=2*n-r;this.r=Ya(a,r,e+1/3),this.g=Ya(a,r,e),this.b=Ya(a,r,e-1/3)}return Vt.colorSpaceToWorking(this,i),this}setStyle(e,t=$t){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=i[1],a=r.length;if(a===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=$t){const n=ru[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Mi(e.r),this.g=Mi(e.g),this.b=Mi(e.b),this}copyLinearToSRGB(e){return this.r=Ts(e.r),this.g=Ts(e.g),this.b=Ts(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=$t){return Vt.workingToColorSpace(An.copy(this),e),Math.round(Ot(An.r*255,0,255))*65536+Math.round(Ot(An.g*255,0,255))*256+Math.round(Ot(An.b*255,0,255))}getHexString(e=$t){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Vt.workingColorSpace){Vt.workingToColorSpace(An.copy(this),t);const n=An.r,i=An.g,r=An.b,a=Math.max(n,i,r),o=Math.min(n,i,r);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const d=a-o;switch(c=h<=.5?d/(a+o):d/(2-a-o),a){case n:l=(i-r)/d+(i<r?6:0);break;case i:l=(r-n)/d+2;break;case r:l=(n-i)/d+4;break}l/=6}return e.h=l,e.s=c,e.l=h,e}getRGB(e,t=Vt.workingColorSpace){return Vt.workingToColorSpace(An.copy(this),t),e.r=An.r,e.g=An.g,e.b=An.b,e}getStyle(e=$t){Vt.workingToColorSpace(An.copy(this),e);const t=An.r,n=An.g,i=An.b;return e!==$t?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(i*255)})`}offsetHSL(e,t,n){return this.getHSL(Li),this.setHSL(Li.h+e,Li.s+t,Li.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(Li),e.getHSL(Mr);const n=Qs(Li.h,Mr.h,t),i=Qs(Li.s,Mr.s,t),r=Qs(Li.l,Mr.l,t);return this.setHSL(n,i,r),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,i=this.b,r=e.elements;return this.r=r[0]*t+r[3]*n+r[6]*i,this.g=r[1]*t+r[4]*n+r[7]*i,this.b=r[2]*t+r[5]*n+r[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const An=new _t;_t.NAMES=ru;let Lf=0;class Bn extends ns{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Lf++}),this.uuid=Zn(),this.name="",this.type="Material",this.blending=As,this.side=Xn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=So,this.blendDst=bo,this.blendEquation=Ji,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new _t(0,0,0),this.blendAlpha=0,this.depthFunc=Rs,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=tc,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=ss,this.stencilZFail=ss,this.stencilZPass=ss,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==As&&(n.blending=this.blending),this.side!==Xn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==So&&(n.blendSrc=this.blendSrc),this.blendDst!==bo&&(n.blendDst=this.blendDst),this.blendEquation!==Ji&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Rs&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==tc&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ss&&(n.stencilFail=this.stencilFail),this.stencilZFail!==ss&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==ss&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(r){const a=[];for(const o in r){const l=r[o];delete l.metadata,a.push(l)}return a}if(t){const r=i(e.textures),a=i(e.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const i=t.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=t[r].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class zi extends Bn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new _t(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const fn=new I,Sr=new Ze;let Pf=0;class dn{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Pf++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=ol,this.updateRanges=[],this.gpuType=oi,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)Sr.fromBufferAttribute(this,t),Sr.applyMatrix3(e),this.setXY(t,Sr.x,Sr.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyMatrix3(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyMatrix4(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.applyNormalMatrix(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)fn.fromBufferAttribute(this,t),fn.transformDirection(e),this.setXYZ(t,fn.x,fn.y,fn.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=$n(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=en(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=$n(t,this.array)),t}setX(e,t){return this.normalized&&(t=en(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=$n(t,this.array)),t}setY(e,t){return this.normalized&&(t=en(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=$n(t,this.array)),t}setZ(e,t){return this.normalized&&(t=en(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=$n(t,this.array)),t}setW(e,t){return this.normalized&&(t=en(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=en(t,this.array),n=en(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=en(t,this.array),n=en(n,this.array),i=en(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=en(t,this.array),n=en(n,this.array),i=en(i,this.array),r=en(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==ol&&(e.usage=this.usage),e}}class au extends dn{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class Df extends dn{constructor(e,t,n){super(new Int32Array(e),t,n)}}class ou extends dn{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class Nt extends dn{constructor(e,t,n){super(new Float32Array(e),t,n)}}let Uf=0;const Vn=new At,$a=new nn,ps=new I,In=new ei,Ws=new ei,vn=new I;class on extends ns{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Uf++}),this.uuid=Zn(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(iu(e)?ou:au)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const r=new Ft().getNormalMatrix(e);n.applyNormalMatrix(r),n.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Vn.makeRotationFromQuaternion(e),this.applyMatrix4(Vn),this}rotateX(e){return Vn.makeRotationX(e),this.applyMatrix4(Vn),this}rotateY(e){return Vn.makeRotationY(e),this.applyMatrix4(Vn),this}rotateZ(e){return Vn.makeRotationZ(e),this.applyMatrix4(Vn),this}translate(e,t,n){return Vn.makeTranslation(e,t,n),this.applyMatrix4(Vn),this}scale(e,t,n){return Vn.makeScale(e,t,n),this.applyMatrix4(Vn),this}lookAt(e){return $a.lookAt(e),$a.updateMatrix(),this.applyMatrix4($a.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ps).negate(),this.translate(ps.x,ps.y,ps.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const n=[];for(let i=0,r=e.length;i<r;i++){const a=e[i];n.push(a.x,a.y,a.z||0)}this.setAttribute("position",new Nt(n,3))}else{const n=Math.min(e.length,t.count);for(let i=0;i<n;i++){const r=e[i];t.setXYZ(i,r.x,r.y,r.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ei);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new I(-1/0,-1/0,-1/0),new I(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,i=t.length;n<i;n++){const r=t[n];In.setFromBufferAttribute(r),this.morphTargetsRelative?(vn.addVectors(this.boundingBox.min,In.min),this.boundingBox.expandByPoint(vn),vn.addVectors(this.boundingBox.max,In.max),this.boundingBox.expandByPoint(vn)):(this.boundingBox.expandByPoint(In.min),this.boundingBox.expandByPoint(In.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ei);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new I,1/0);return}if(e){const n=this.boundingSphere.center;if(In.setFromBufferAttribute(e),t)for(let r=0,a=t.length;r<a;r++){const o=t[r];Ws.setFromBufferAttribute(o),this.morphTargetsRelative?(vn.addVectors(In.min,Ws.min),In.expandByPoint(vn),vn.addVectors(In.max,Ws.max),In.expandByPoint(vn)):(In.expandByPoint(Ws.min),In.expandByPoint(Ws.max))}In.getCenter(n);let i=0;for(let r=0,a=e.count;r<a;r++)vn.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(vn));if(t)for(let r=0,a=t.length;r<a;r++){const o=t[r],l=this.morphTargetsRelative;for(let c=0,h=o.count;c<h;c++)vn.fromBufferAttribute(o,c),l&&(ps.fromBufferAttribute(e,c),vn.add(ps)),i=Math.max(i,n.distanceToSquared(vn))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=t.position,i=t.normal,r=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new dn(new Float32Array(4*n.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let D=0;D<n.count;D++)o[D]=new I,l[D]=new I;const c=new I,h=new I,d=new I,u=new Ze,f=new Ze,m=new Ze,_=new I,g=new I;function p(D,S,y){c.fromBufferAttribute(n,D),h.fromBufferAttribute(n,S),d.fromBufferAttribute(n,y),u.fromBufferAttribute(r,D),f.fromBufferAttribute(r,S),m.fromBufferAttribute(r,y),h.sub(c),d.sub(c),f.sub(u),m.sub(u);const N=1/(f.x*m.y-m.x*f.y);isFinite(N)&&(_.copy(h).multiplyScalar(m.y).addScaledVector(d,-f.y).multiplyScalar(N),g.copy(d).multiplyScalar(f.x).addScaledVector(h,-m.x).multiplyScalar(N),o[D].add(_),o[S].add(_),o[y].add(_),l[D].add(g),l[S].add(g),l[y].add(g))}let E=this.groups;E.length===0&&(E=[{start:0,count:e.count}]);for(let D=0,S=E.length;D<S;++D){const y=E[D],N=y.start,W=y.count;for(let X=N,Q=N+W;X<Q;X+=3)p(e.getX(X+0),e.getX(X+1),e.getX(X+2))}const b=new I,M=new I,U=new I,C=new I;function P(D){U.fromBufferAttribute(i,D),C.copy(U);const S=o[D];b.copy(S),b.sub(U.multiplyScalar(U.dot(S))).normalize(),M.crossVectors(C,S);const N=M.dot(l[D])<0?-1:1;a.setXYZW(D,b.x,b.y,b.z,N)}for(let D=0,S=E.length;D<S;++D){const y=E[D],N=y.start,W=y.count;for(let X=N,Q=N+W;X<Q;X+=3)P(e.getX(X+0)),P(e.getX(X+1)),P(e.getX(X+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new dn(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let u=0,f=n.count;u<f;u++)n.setXYZ(u,0,0,0);const i=new I,r=new I,a=new I,o=new I,l=new I,c=new I,h=new I,d=new I;if(e)for(let u=0,f=e.count;u<f;u+=3){const m=e.getX(u+0),_=e.getX(u+1),g=e.getX(u+2);i.fromBufferAttribute(t,m),r.fromBufferAttribute(t,_),a.fromBufferAttribute(t,g),h.subVectors(a,r),d.subVectors(i,r),h.cross(d),o.fromBufferAttribute(n,m),l.fromBufferAttribute(n,_),c.fromBufferAttribute(n,g),o.add(h),l.add(h),c.add(h),n.setXYZ(m,o.x,o.y,o.z),n.setXYZ(_,l.x,l.y,l.z),n.setXYZ(g,c.x,c.y,c.z)}else for(let u=0,f=t.count;u<f;u+=3)i.fromBufferAttribute(t,u+0),r.fromBufferAttribute(t,u+1),a.fromBufferAttribute(t,u+2),h.subVectors(a,r),d.subVectors(i,r),h.cross(d),n.setXYZ(u+0,h.x,h.y,h.z),n.setXYZ(u+1,h.x,h.y,h.z),n.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)vn.fromBufferAttribute(e,t),vn.normalize(),e.setXYZ(t,vn.x,vn.y,vn.z)}toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,d=o.normalized,u=new c.constructor(l.length*h);let f=0,m=0;for(let _=0,g=l.length;_<g;_++){o.isInterleavedBufferAttribute?f=l[_]*o.data.stride+o.offset:f=l[_]*h;for(let p=0;p<h;p++)u[m++]=c[f++]}return new dn(u,h,d)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new on,n=this.index.array,i=this.attributes;for(const o in i){const l=i[o],c=e(l,n);t.setAttribute(o,c)}const r=this.morphAttributes;for(const o in r){const l=[],c=r[o];for(let h=0,d=c.length;h<d;h++){const u=c[h],f=e(u,n);l.push(f)}t.morphAttributes[o]=l}t.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const c=a[o];t.addGroup(c.start,c.count,c.materialIndex)}return t}toJSON(){const e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const i={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let d=0,u=c.length;d<u;d++){const f=c[d];h.push(f.toJSON(e.data))}h.length>0&&(i[l]=h,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const i=e.attributes;for(const c in i){const h=i[c];this.setAttribute(c,h.clone(t))}const r=e.morphAttributes;for(const c in r){const h=[],d=r[c];for(let u=0,f=d.length;u<f;u++)h.push(d[u].clone(t));this.morphAttributes[c]=h}this.morphTargetsRelative=e.morphTargetsRelative;const a=e.groups;for(let c=0,h=a.length;c<h;c++){const d=a[c];this.addGroup(d.start,d.count,d.materialIndex)}const o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=e.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const gc=new At,Gi=new Fs,br=new Ei,_c=new I,Er=new I,Ar=new I,wr=new I,Ja=new I,Tr=new I,vc=new I,Cr=new I;class Jt extends nn{constructor(e=new on,t=new zi){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}getVertexPosition(e,t){const n=this.geometry,i=n.attributes.position,r=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(i,e);const o=this.morphTargetInfluences;if(r&&o){Tr.set(0,0,0);for(let l=0,c=r.length;l<c;l++){const h=o[l],d=r[l];h!==0&&(Ja.fromBufferAttribute(d,e),a?Tr.addScaledVector(Ja,h):Tr.addScaledVector(Ja.sub(t),h))}t.add(Tr)}return t}raycast(e,t){const n=this.geometry,i=this.material,r=this.matrixWorld;i!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),br.copy(n.boundingSphere),br.applyMatrix4(r),Gi.copy(e.ray).recast(e.near),!(br.containsPoint(Gi.origin)===!1&&(Gi.intersectSphere(br,_c)===null||Gi.origin.distanceToSquared(_c)>(e.far-e.near)**2))&&(gc.copy(r).invert(),Gi.copy(e.ray).applyMatrix4(gc),!(n.boundingBox!==null&&Gi.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Gi)))}_computeIntersections(e,t,n){let i;const r=this.geometry,a=this.material,o=r.index,l=r.attributes.position,c=r.attributes.uv,h=r.attributes.uv1,d=r.attributes.normal,u=r.groups,f=r.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=u.length;m<_;m++){const g=u[m],p=a[g.materialIndex],E=Math.max(g.start,f.start),b=Math.min(o.count,Math.min(g.start+g.count,f.start+f.count));for(let M=E,U=b;M<U;M+=3){const C=o.getX(M),P=o.getX(M+1),D=o.getX(M+2);i=Rr(this,p,e,n,c,h,d,C,P,D),i&&(i.faceIndex=Math.floor(M/3),i.face.materialIndex=g.materialIndex,t.push(i))}}else{const m=Math.max(0,f.start),_=Math.min(o.count,f.start+f.count);for(let g=m,p=_;g<p;g+=3){const E=o.getX(g),b=o.getX(g+1),M=o.getX(g+2);i=Rr(this,a,e,n,c,h,d,E,b,M),i&&(i.faceIndex=Math.floor(g/3),t.push(i))}}else if(l!==void 0)if(Array.isArray(a))for(let m=0,_=u.length;m<_;m++){const g=u[m],p=a[g.materialIndex],E=Math.max(g.start,f.start),b=Math.min(l.count,Math.min(g.start+g.count,f.start+f.count));for(let M=E,U=b;M<U;M+=3){const C=M,P=M+1,D=M+2;i=Rr(this,p,e,n,c,h,d,C,P,D),i&&(i.faceIndex=Math.floor(M/3),i.face.materialIndex=g.materialIndex,t.push(i))}}else{const m=Math.max(0,f.start),_=Math.min(l.count,f.start+f.count);for(let g=m,p=_;g<p;g+=3){const E=g,b=g+1,M=g+2;i=Rr(this,a,e,n,c,h,d,E,b,M),i&&(i.faceIndex=Math.floor(g/3),t.push(i))}}}}function Nf(s,e,t,n,i,r,a,o){let l;if(e.side===Rn?l=n.intersectTriangle(a,r,i,!0,o):l=n.intersectTriangle(i,r,a,e.side===Xn,o),l===null)return null;Cr.copy(o),Cr.applyMatrix4(s.matrixWorld);const c=t.ray.origin.distanceTo(Cr);return c<t.near||c>t.far?null:{distance:c,point:Cr.clone(),object:s}}function Rr(s,e,t,n,i,r,a,o,l,c){s.getVertexPosition(o,Er),s.getVertexPosition(l,Ar),s.getVertexPosition(c,wr);const h=Nf(s,e,t,n,Er,Ar,wr,vc);if(h){const d=new I;Gn.getBarycoord(vc,Er,Ar,wr,d),i&&(h.uv=Gn.getInterpolatedAttribute(i,o,l,c,d,new Ze)),r&&(h.uv1=Gn.getInterpolatedAttribute(r,o,l,c,d,new Ze)),a&&(h.normal=Gn.getInterpolatedAttribute(a,o,l,c,d,new I),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c,normal:new I,materialIndex:0};Gn.getNormal(Er,Ar,wr,u.normal),h.face=u,h.barycoord=d}return h}class Bi extends on{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const o=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const l=[],c=[],h=[],d=[];let u=0,f=0;m("z","y","x",-1,-1,n,t,e,a,r,0),m("z","y","x",1,-1,n,t,-e,a,r,1),m("x","z","y",1,1,e,n,t,i,a,2),m("x","z","y",1,-1,e,n,-t,i,a,3),m("x","y","z",1,-1,e,t,n,i,r,4),m("x","y","z",-1,-1,e,t,-n,i,r,5),this.setIndex(l),this.setAttribute("position",new Nt(c,3)),this.setAttribute("normal",new Nt(h,3)),this.setAttribute("uv",new Nt(d,2));function m(_,g,p,E,b,M,U,C,P,D,S){const y=M/P,N=U/D,W=M/2,X=U/2,Q=C/2,ne=P+1,G=D+1;let re=0,Z=0;const me=new I;for(let Ee=0;Ee<G;Ee++){const Ce=Ee*N-X;for(let Ne=0;Ne<ne;Ne++){const Ve=Ne*y-W;me[_]=Ve*E,me[g]=Ce*b,me[p]=Q,c.push(me.x,me.y,me.z),me[_]=0,me[g]=0,me[p]=C>0?1:-1,h.push(me.x,me.y,me.z),d.push(Ne/P),d.push(1-Ee/D),re+=1}}for(let Ee=0;Ee<D;Ee++)for(let Ce=0;Ce<P;Ce++){const Ne=u+Ce+ne*Ee,Ve=u+Ce+ne*(Ee+1),K=u+(Ce+1)+ne*(Ee+1),ae=u+(Ce+1)+ne*Ee;l.push(Ne,Ve,ae),l.push(Ve,K,ae),Z+=6}o.addGroup(f,Z,S),f+=Z,u+=re}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Bi(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function Ns(s){const e={};for(const t in s){e[t]={};for(const n in s[t]){const i=s[t][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][n]=null):e[t][n]=i.clone():Array.isArray(i)?e[t][n]=i.slice():e[t][n]=i}}return e}function Cn(s){const e={};for(let t=0;t<s.length;t++){const n=Ns(s[t]);for(const i in n)e[i]=n[i]}return e}function If(s){const e=[];for(let t=0;t<s.length;t++)e.push(s[t].clone());return e}function lu(s){const e=s.getRenderTarget();return e===null?s.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:Vt.workingColorSpace}const Ll={clone:Ns,merge:Cn};var Ff=`void main() {
|
|
6
6
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
7
7
|
}`,Of=`void main() {
|
|
8
8
|
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
|
9
|
-
}`;class bi extends Bn{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Ff,this.fragmentShader=Of,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Ns(e.uniforms),this.uniformsGroups=If(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const i in this.uniforms){const a=this.uniforms[i].value;a&&a.isTexture?t.uniforms[i]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[i]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[i]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[i]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[i]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[i]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[i]={type:"m4",value:a.toArray()}:t.uniforms[i]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class cu extends nn{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new
|
|
9
|
+
}`;class bi extends Bn{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Ff,this.fragmentShader=Of,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Ns(e.uniforms),this.uniformsGroups=If(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const i in this.uniforms){const a=this.uniforms[i].value;a&&a.isTexture?t.uniforms[i]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[i]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[i]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[i]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[i]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[i]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[i]={type:"m4",value:a.toArray()}:t.uniforms[i]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class cu extends nn{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new At,this.projectionMatrix=new At,this.projectionMatrixInverse=new At,this.coordinateSystem=yi}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Pi=new I,xc=new Ze,yc=new Ze;class Sn extends cu{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Us*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Zs*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Us*2*Math.atan(Math.tan(Zs*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){Pi.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Pi.x,Pi.y).multiplyScalar(-e/Pi.z),Pi.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Pi.x,Pi.y).multiplyScalar(-e/Pi.z)}getViewSize(e,t){return this.getViewBounds(e,xc,yc),t.subVectors(yc,xc)}setViewOffset(e,t,n,i,r,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Zs*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;r+=a.offsetX*i/l,t-=a.offsetY*n/c,i*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(r+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const ms=-90,gs=1;class zf extends nn{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new Sn(ms,gs,e,t);i.layers=this.layers,this.add(i);const r=new Sn(ms,gs,e,t);r.layers=this.layers,this.add(r);const a=new Sn(ms,gs,e,t);a.layers=this.layers,this.add(a);const o=new Sn(ms,gs,e,t);o.layers=this.layers,this.add(o);const l=new Sn(ms,gs,e,t);l.layers=this.layers,this.add(l);const c=new Sn(ms,gs,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,i,r,a,o,l]=t;for(const c of t)this.remove(c);if(e===yi)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===fa)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[r,a,o,l,c,h]=this.children,d=e.getRenderTarget(),u=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;const _=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,r),e.setRenderTarget(n,1,i),e.render(t,a),e.setRenderTarget(n,2,i),e.render(t,o),e.setRenderTarget(n,3,i),e.render(t,l),e.setRenderTarget(n,4,i),e.render(t,c),n.texture.generateMipmaps=_,e.setRenderTarget(n,5,i),e.render(t,h),e.setRenderTarget(d,u,f),e.xr.enabled=m,n.texture.needsPMREMUpdate=!0}}class hu extends bn{constructor(e=[],t=Ls,n,i,r,a,o,l,c,h){super(e,t,n,i,r,a,o,l,c,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Bf extends ts{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new hu(i),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:`
|
|
10
10
|
|
|
11
11
|
varying vec3 vWorldDirection;
|
|
12
12
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
gl_FragColor = texture2D( tEquirect, sampleUV );
|
|
42
42
|
|
|
43
43
|
}
|
|
44
|
-
`},i=new ki(5,5,5),r=new bi({name:"CubemapFromEquirect",uniforms:Ns(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:Rn,blending:Oi});r.uniforms.tEquirect.value=t;const a=new $t(i,r),o=t.minFilter;return t.minFilter===xi&&(t.minFilter=Fn),new zf(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,n=!0,i=!0){const r=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,i);e.setRenderTarget(r)}}class Kn extends nn{constructor(){super(),this.isGroup=!0,this.type="Group"}}const kf={type:"move"};class Ka{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Kn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Kn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new I,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new I),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Kn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new I,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new I),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){a=!0;for(const _ of e.hand.values()){const g=t.getJointPose(_,n),p=this._getHandJoint(c,_);g!==null&&(p.matrix.fromArray(g.transform.matrix),p.matrix.decompose(p.position,p.rotation,p.scale),p.matrixWorldNeedsUpdate=!0,p.jointRadius=g.radius),p.visible=g!==null}const h=c.joints["index-finger-tip"],d=c.joints["thumb-tip"],u=h.position.distanceTo(d.position),f=.02,m=.005;c.inputState.pinching&&u>f+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&u<=f-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&r!==null&&(i=r),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(kf)))}return o!==null&&(o.visible=i!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Kn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Pl extends nn{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Ln,this.environmentIntensity=1,this.environmentRotation=new Ln,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class uu{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=ol,this.updateRanges=[],this.version=0,this.uuid=Zn()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Zn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Zn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const Tn=new I;class li{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.applyMatrix4(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.applyNormalMatrix(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.transformDirection(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=$n(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=Qt(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=Qt(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=Qt(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=Qt(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=Qt(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=$n(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=$n(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=$n(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=$n(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array),i=Qt(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=Qt(t,this.array),n=Qt(n,this.array),i=Qt(i,this.array),r=Qt(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const i=n*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)t.push(this.data.array[i+r])}return new dn(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new li(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const i=n*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)t.push(this.data.array[i+r])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class Sa extends Bn{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new gt(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let _s;const Xs=new I,vs=new I,xs=new I,ys=new Ke,qs=new Ke,du=new Et,Lr=new I,js=new I,Pr=new I,Mc=new Ke,Za=new Ke,Sc=new Ke;class Dl extends nn{constructor(e=new Sa){if(super(),this.isSprite=!0,this.type="Sprite",_s===void 0){_s=new an;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),n=new uu(t,5);_s.setIndex([0,1,2,0,2,3]),_s.setAttribute("position",new li(n,3,0,!1)),_s.setAttribute("uv",new li(n,2,3,!1))}this.geometry=_s,this.material=e,this.center=new Ke(.5,.5),this.count=1}raycast(e,t){e.camera===null&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),vs.setFromMatrixScale(this.matrixWorld),du.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),xs.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&vs.multiplyScalar(-xs.z);const n=this.material.rotation;let i,r;n!==0&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;Dr(Lr.set(-.5,-.5,0),xs,a,vs,i,r),Dr(js.set(.5,-.5,0),xs,a,vs,i,r),Dr(Pr.set(.5,.5,0),xs,a,vs,i,r),Mc.set(0,0),Za.set(1,0),Sc.set(1,1);let o=e.ray.intersectTriangle(Lr,js,Pr,!1,Xs);if(o===null&&(Dr(js.set(-.5,.5,0),xs,a,vs,i,r),Za.set(0,1),o=e.ray.intersectTriangle(Lr,Pr,js,!1,Xs),o===null))return;const l=e.ray.origin.distanceTo(Xs);l<e.near||l>e.far||t.push({distance:l,point:Xs.clone(),uv:Gn.getInterpolation(Xs,Lr,js,Pr,Mc,Za,Sc,new Ke),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Dr(s,e,t,n,i,r){ys.subVectors(s,t).addScalar(.5).multiply(n),i!==void 0?(qs.x=r*ys.x-i*ys.y,qs.y=i*ys.x+r*ys.y):qs.copy(ys),s.copy(e),s.x+=qs.x,s.y+=qs.y,s.applyMatrix4(du)}const Ur=new I,bc=new I;class fu extends nn{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,i=t.length;n<i;n++){const r=t[n];this.addLevel(r.object.clone(),r.distance,r.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);const i=this.levels;let r;for(r=0;r<i.length&&!(t<i[r].distance);r++);return i.splice(r,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}removeLevel(e){const t=this.levels;for(let n=0;n<t.length;n++)if(t[n].distance===e){const i=t.splice(n,1);return this.remove(i[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){const t=this.levels;if(t.length>0){let n,i;for(n=1,i=t.length;n<i;n++){let r=t[n].distance;if(t[n].object.visible&&(r-=r*t[n].hysteresis),e<r)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){Ur.setFromMatrixPosition(this.matrixWorld);const i=e.ray.origin.distanceTo(Ur);this.getObjectForDistance(i).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Ur.setFromMatrixPosition(e.matrixWorld),bc.setFromMatrixPosition(this.matrixWorld);const n=Ur.distanceTo(bc)/e.zoom;t[0].object.visible=!0;let i,r;for(i=1,r=t.length;i<r;i++){let a=t[i].distance;if(t[i].object.visible&&(a-=a*t[i].hysteresis),n>=a)t[i-1].object.visible=!1,t[i].object.visible=!0;else break}for(this._currentLevel=i-1;i<r;i++)t[i].object.visible=!1}}toJSON(e){const t=super.toJSON(e);this.autoUpdate===!1&&(t.object.autoUpdate=!1),t.object.levels=[];const n=this.levels;for(let i=0,r=n.length;i<r;i++){const a=n[i];t.object.levels.push({object:a.object.uuid,distance:a.distance,hysteresis:a.hysteresis})}return t}}const Ec=new I,Ac=new Ht,wc=new Ht,Vf=new I,Tc=new Et,Nr=new I,Qa=new Ei,Cc=new Et,eo=new Fs;class Hf extends $t{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=Kl,this.bindMatrix=new Et,this.bindMatrixInverse=new Et,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;this.boundingBox===null&&(this.boundingBox=new ei),this.boundingBox.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Nr),this.boundingBox.expandByPoint(Nr)}computeBoundingSphere(){const e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new Ei),this.boundingSphere.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Nr),this.boundingSphere.expandByPoint(Nr)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){const n=this.material,i=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Qa.copy(this.boundingSphere),Qa.applyMatrix4(i),e.ray.intersectsSphere(Qa)!==!1&&(Cc.copy(i).invert(),eo.copy(e.ray).applyMatrix4(Cc),!(this.boundingBox!==null&&eo.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,eo)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new Ht,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;n<i;n++){e.fromBufferAttribute(t,n);const r=1/e.manhattanLength();r!==1/0?e.multiplyScalar(r):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===Kl?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===Od?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,t){const n=this.skeleton,i=this.geometry;Ac.fromBufferAttribute(i.attributes.skinIndex,e),wc.fromBufferAttribute(i.attributes.skinWeight,e),Ec.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let r=0;r<4;r++){const a=wc.getComponent(r);if(a!==0){const o=Ac.getComponent(r);Tc.multiplyMatrices(n.bones[o].matrixWorld,n.boneInverses[o]),t.addScaledVector(Vf.copy(Ec).applyMatrix4(Tc),a)}}return t.applyMatrix4(this.bindMatrixInverse)}}class pu extends nn{constructor(){super(),this.isBone=!0,this.type="Bone"}}class mu extends bn{constructor(e=null,t=1,n=1,i,r,a,o,l,c=On,h=On,d,u){super(null,a,o,l,c,h,i,r,d,u),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const Rc=new Et,Gf=new Et;class Ul{constructor(e=[],t=[]){this.uuid=Zn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let n=0,i=this.bones.length;n<i;n++)this.boneInverses.push(new Et)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const n=new Et;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&(n.parent&&n.parent.isBone?(n.matrix.copy(n.parent.matrixWorld).invert(),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let r=0,a=e.length;r<a;r++){const o=e[r]?e[r].matrixWorld:Gf;Rc.multiplyMatrices(o,t[r]),Rc.toArray(n,r*16)}i!==null&&(i.needsUpdate=!0)}clone(){return new Ul(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new mu(t,e,e,Wn,oi);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const i=this.bones[t];if(i.name===e)return i}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n<i;n++){const r=e.bones[n];let a=t[r];a===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),a=new pu),this.bones.push(a),this.boneInverses.push(new Et().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.7,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let i=0,r=t.length;i<r;i++){const a=t[i];e.bones.push(a.uuid);const o=n[i];e.boneInverses.push(o.toArray())}return e}}const to=new I,Wf=new I,Xf=new Ft;class Ni{constructor(e=new I(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const i=to.subVectors(n,t).cross(Wf.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(to),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||Xf.getNormalMatrix(e),i=this.coplanarPoint(to).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Wi=new Ei,Ir=new I;class Nl{constructor(e=new Ni,t=new Ni,n=new Ni,i=new Ni,r=new Ni,a=new Ni){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=yi){const n=this.planes,i=e.elements,r=i[0],a=i[1],o=i[2],l=i[3],c=i[4],h=i[5],d=i[6],u=i[7],f=i[8],m=i[9],_=i[10],g=i[11],p=i[12],E=i[13],b=i[14],M=i[15];if(n[0].setComponents(l-r,u-c,g-f,M-p).normalize(),n[1].setComponents(l+r,u+c,g+f,M+p).normalize(),n[2].setComponents(l+a,u+h,g+m,M+E).normalize(),n[3].setComponents(l-a,u-h,g-m,M-E).normalize(),n[4].setComponents(l-o,u-d,g-_,M-b).normalize(),t===yi)n[5].setComponents(l+o,u+d,g+_,M+b).normalize();else if(t===fa)n[5].setComponents(o,d,_,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Wi.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Wi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Wi)}intersectsSprite(e){return Wi.center.set(0,0,0),Wi.radius=.7071067811865476,Wi.applyMatrix4(e.matrixWorld),this.intersectsSphere(Wi)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(n)<i)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const i=t[n];if(Ir.x=i.normal.x>0?e.max.x:e.min.x,Ir.y=i.normal.y>0?e.max.y:e.min.y,Ir.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Ir)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Si extends Bn{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new gt(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const pa=new I,ma=new I,Lc=new Et,Ys=new Fs,Fr=new Ei,no=new I,Pc=new I;class ba extends nn{constructor(e=new an,t=new Si){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[0];for(let i=1,r=t.count;i<r;i++)pa.fromBufferAttribute(t,i-1),ma.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=pa.distanceTo(ma);e.setAttribute("lineDistance",new It(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Fr.copy(n.boundingSphere),Fr.applyMatrix4(i),Fr.radius+=r,e.ray.intersectsSphere(Fr)===!1)return;Lc.copy(i).invert(),Ys.copy(e.ray).applyMatrix4(Lc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=this.isLineSegments?2:1,h=n.index,u=n.attributes.position;if(h!==null){const f=Math.max(0,a.start),m=Math.min(h.count,a.start+a.count);for(let _=f,g=m-1;_<g;_+=c){const p=h.getX(_),E=h.getX(_+1),b=Or(this,e,Ys,l,p,E,_);b&&t.push(b)}if(this.isLineLoop){const _=h.getX(m-1),g=h.getX(f),p=Or(this,e,Ys,l,_,g,m-1);p&&t.push(p)}}else{const f=Math.max(0,a.start),m=Math.min(u.count,a.start+a.count);for(let _=f,g=m-1;_<g;_+=c){const p=Or(this,e,Ys,l,_,_+1,_);p&&t.push(p)}if(this.isLineLoop){const _=Or(this,e,Ys,l,m-1,f,m-1);_&&t.push(_)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function Or(s,e,t,n,i,r,a){const o=s.geometry.attributes.position;if(pa.fromBufferAttribute(o,i),ma.fromBufferAttribute(o,r),t.distanceSqToSegment(pa,ma,no,Pc)>n)return;no.applyMatrix4(s.matrixWorld);const c=e.ray.origin.distanceTo(no);if(!(c<e.near||c>e.far))return{distance:c,point:Pc.clone().applyMatrix4(s.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:s}}const Dc=new I,Uc=new I;class ga extends ba{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let i=0,r=t.count;i<r;i+=2)Dc.fromBufferAttribute(t,i),Uc.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Dc.distanceTo(Uc);e.setAttribute("lineDistance",new It(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class Fi extends Bn{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new gt(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const Nc=new Et,ll=new Fs,zr=new Ei,Br=new I;class Cs extends nn{constructor(e=new an,t=new Fi){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),zr.copy(n.boundingSphere),zr.applyMatrix4(i),zr.radius+=r,e.ray.intersectsSphere(zr)===!1)return;Nc.copy(i).invert(),ll.copy(e.ray).applyMatrix4(Nc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,d=n.attributes.position;if(c!==null){const u=Math.max(0,a.start),f=Math.min(c.count,a.start+a.count);for(let m=u,_=f;m<_;m++){const g=c.getX(m);Br.fromBufferAttribute(d,g),Ic(Br,g,l,i,e,t,this)}}else{const u=Math.max(0,a.start),f=Math.min(d.count,a.start+a.count);for(let m=u,_=f;m<_;m++)Br.fromBufferAttribute(d,m),Ic(Br,m,l,i,e,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function Ic(s,e,t,n,i,r,a){const o=ll.distanceSqToPoint(s);if(o<t){const l=new I;ll.closestPointToPoint(s,l),l.applyMatrix4(n);const c=i.ray.origin.distanceTo(l);if(c<i.near||c>i.far)return;r.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class qf extends bn{constructor(e,t,n,i,r,a,o,l,c){super(e,t,n,i,r,a,o,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class gu extends bn{constructor(e,t,n=es,i,r,a,o=On,l=On,c,h=rr,d=1){if(h!==rr&&h!==ar)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const u={width:e,height:t,depth:d};super(u,i,r,a,o,l,h,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Cl(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class Il extends an{constructor(e=1,t=1,n=1,i=32,r=1,a=!1,o=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:l};const c=this;i=Math.floor(i),r=Math.floor(r);const h=[],d=[],u=[],f=[];let m=0;const _=[],g=n/2;let p=0;E(),a===!1&&(e>0&&b(!0),t>0&&b(!1)),this.setIndex(h),this.setAttribute("position",new It(d,3)),this.setAttribute("normal",new It(u,3)),this.setAttribute("uv",new It(f,2));function E(){const M=new I,U=new I;let C=0;const P=(t-e)/n;for(let D=0;D<=r;D++){const S=[],y=D/r,N=y*(t-e)+e;for(let W=0;W<=i;W++){const X=W/i,Q=X*l+o,ne=Math.sin(Q),G=Math.cos(Q);U.x=N*ne,U.y=-y*n+g,U.z=N*G,d.push(U.x,U.y,U.z),M.set(ne,P,G).normalize(),u.push(M.x,M.y,M.z),f.push(X,1-y),S.push(m++)}_.push(S)}for(let D=0;D<i;D++)for(let S=0;S<r;S++){const y=_[S][D],N=_[S+1][D],W=_[S+1][D+1],X=_[S][D+1];(e>0||S!==0)&&(h.push(y,N,X),C+=3),(t>0||S!==r-1)&&(h.push(N,W,X),C+=3)}c.addGroup(p,C,0),p+=C}function b(M){const U=m,C=new Ke,P=new I;let D=0;const S=M===!0?e:t,y=M===!0?1:-1;for(let W=1;W<=i;W++)d.push(0,g*y,0),u.push(0,y,0),f.push(.5,.5),m++;const N=m;for(let W=0;W<=i;W++){const Q=W/i*l+o,ne=Math.cos(Q),G=Math.sin(Q);P.x=S*G,P.y=g*y,P.z=S*ne,d.push(P.x,P.y,P.z),u.push(0,y,0),C.x=ne*.5+.5,C.y=G*.5*y+.5,f.push(C.x,C.y),m++}for(let W=0;W<i;W++){const X=U+W,Q=N+W;M===!0?h.push(Q,Q+1,X):h.push(Q+1,Q,X),D+=3}c.addGroup(p,D,M===!0?1:2),p+=D}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Il(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Ai{constructor(){this.type="Curve",this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){console.warn("THREE.Curve: .getPoint() not implemented.")}getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)n=this.getPoint(a/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t=null){const n=this.getLengths();let i=0;const r=n.length;let a;t?a=t:a=e*n[r-1];let o=0,l=r-1,c;for(;o<=l;)if(i=Math.floor(o+(l-o)/2),c=n[i]-a,c<0)o=i+1;else if(c>0)l=i-1;else{l=i;break}if(i=l,n[i]===a)return i/(r-1);const h=n[i],u=n[i+1]-h,f=(a-h)/u;return(i+f)/(r-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);const a=this.getPoint(i),o=this.getPoint(r),l=t||(a.isVector2?new Ke:new I);return l.copy(o).sub(a).normalize(),l}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new I,i=[],r=[],a=[],o=new I,l=new Et;for(let f=0;f<=e;f++){const m=f/e;i[f]=this.getTangentAt(m,new I)}r[0]=new I,a[0]=new I;let c=Number.MAX_VALUE;const h=Math.abs(i[0].x),d=Math.abs(i[0].y),u=Math.abs(i[0].z);h<=c&&(c=h,n.set(1,0,0)),d<=c&&(c=d,n.set(0,1,0)),u<=c&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(let f=1;f<=e;f++){if(r[f]=r[f-1].clone(),a[f]=a[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON){o.normalize();const m=Math.acos(Ot(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(l.makeRotationAxis(o,m))}a[f].crossVectors(i[f],r[f])}if(t===!0){let f=Math.acos(Ot(r[0].dot(r[e]),-1,1));f/=e,i[0].dot(o.crossVectors(r[0],r[e]))>0&&(f=-f);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(i[m],f*m)),a[m].crossVectors(i[m],r[m])}return{tangents:i,normals:r,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class _u extends Ai{constructor(e=0,t=0,n=1,i=1,r=0,a=Math.PI*2,o=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=o,this.aRotation=l}getPoint(e,t=new Ke){const n=t,i=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const a=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(a?r=0:r=i),this.aClockwise===!0&&!a&&(r===i?r=-i:r=r-i);const o=this.aStartAngle+e*r;let l=this.aX+this.xRadius*Math.cos(o),c=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){const h=Math.cos(this.aRotation),d=Math.sin(this.aRotation),u=l-this.aX,f=c-this.aY;l=u*h-f*d+this.aX,c=u*d+f*h+this.aY}return n.set(l,c)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class jf extends _u{constructor(e,t,n,i,r,a){super(e,t,n,n,i,r,a),this.isArcCurve=!0,this.type="ArcCurve"}}function Fl(){let s=0,e=0,t=0,n=0;function i(r,a,o,l){s=r,e=o,t=-3*r+3*a-2*o-l,n=2*r-2*a+o+l}return{initCatmullRom:function(r,a,o,l,c){i(a,o,c*(o-r),c*(l-a))},initNonuniformCatmullRom:function(r,a,o,l,c,h,d){let u=(a-r)/c-(o-r)/(c+h)+(o-a)/h,f=(o-a)/h-(l-a)/(h+d)+(l-o)/d;u*=h,f*=h,i(a,o,u,f)},calc:function(r){const a=r*r,o=a*r;return s+e*r+t*a+n*o}}}const kr=new I,io=new Fl,so=new Fl,ro=new Fl;class vu extends Ai{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new I){const n=t,i=this.points,r=i.length,a=(r-(this.closed?0:1))*e;let o=Math.floor(a),l=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:l===0&&o===r-1&&(o=r-2,l=1);let c,h;this.closed||o>0?c=i[(o-1)%r]:(kr.subVectors(i[0],i[1]).add(i[0]),c=kr);const d=i[o%r],u=i[(o+1)%r];if(this.closed||o+2<r?h=i[(o+2)%r]:(kr.subVectors(i[r-1],i[r-2]).add(i[r-1]),h=kr),this.curveType==="centripetal"||this.curveType==="chordal"){const f=this.curveType==="chordal"?.5:.25;let m=Math.pow(c.distanceToSquared(d),f),_=Math.pow(d.distanceToSquared(u),f),g=Math.pow(u.distanceToSquared(h),f);_<1e-4&&(_=1),m<1e-4&&(m=_),g<1e-4&&(g=_),io.initNonuniformCatmullRom(c.x,d.x,u.x,h.x,m,_,g),so.initNonuniformCatmullRom(c.y,d.y,u.y,h.y,m,_,g),ro.initNonuniformCatmullRom(c.z,d.z,u.z,h.z,m,_,g)}else this.curveType==="catmullrom"&&(io.initCatmullRom(c.x,d.x,u.x,h.x,this.tension),so.initCatmullRom(c.y,d.y,u.y,h.y,this.tension),ro.initCatmullRom(c.z,d.z,u.z,h.z,this.tension));return n.set(io.calc(l),so.calc(l),ro.calc(l)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(new I().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function Fc(s,e,t,n,i){const r=(n-e)*.5,a=(i-t)*.5,o=s*s,l=s*o;return(2*t-2*n+r+a)*l+(-3*t+3*n-2*r-a)*o+r*s+t}function Yf(s,e){const t=1-s;return t*t*e}function $f(s,e){return 2*(1-s)*s*e}function Jf(s,e){return s*s*e}function er(s,e,t,n){return Yf(s,e)+$f(s,t)+Jf(s,n)}function Kf(s,e){const t=1-s;return t*t*t*e}function Zf(s,e){const t=1-s;return 3*t*t*s*e}function Qf(s,e){return 3*(1-s)*s*s*e}function ep(s,e){return s*s*s*e}function tr(s,e,t,n,i){return Kf(s,e)+Zf(s,t)+Qf(s,n)+ep(s,i)}class tp extends Ai{constructor(e=new Ke,t=new Ke,n=new Ke,i=new Ke){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new Ke){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(tr(e,i.x,r.x,a.x,o.x),tr(e,i.y,r.y,a.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class np extends Ai{constructor(e=new I,t=new I,n=new I,i=new I){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new I){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(tr(e,i.x,r.x,a.x,o.x),tr(e,i.y,r.y,a.y,o.y),tr(e,i.z,r.z,a.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class ip extends Ai{constructor(e=new Ke,t=new Ke){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new Ke){const n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new Ke){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class sp extends Ai{constructor(e=new I,t=new I){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new I){const n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new I){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class rp extends Ai{constructor(e=new Ke,t=new Ke,n=new Ke){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new Ke){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(er(e,i.x,r.x,a.x),er(e,i.y,r.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class xu extends Ai{constructor(e=new I,t=new I,n=new I){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new I){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(er(e,i.x,r.x,a.x),er(e,i.y,r.y,a.y),er(e,i.z,r.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class ap extends Ai{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new Ke){const n=t,i=this.points,r=(i.length-1)*e,a=Math.floor(r),o=r-a,l=i[a===0?a:a-1],c=i[a],h=i[a>i.length-2?i.length-1:a+1],d=i[a>i.length-3?i.length-1:a+2];return n.set(Fc(o,l.x,c.x,h.x,d.x),Fc(o,l.y,c.y,h.y,d.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(i.clone())}return this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const i=this.points[t];e.points.push(i.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(new Ke().fromArray(i))}return this}}var op=Object.freeze({__proto__:null,ArcCurve:jf,CatmullRomCurve3:vu,CubicBezierCurve:tp,CubicBezierCurve3:np,EllipseCurve:_u,LineCurve:ip,LineCurve3:sp,QuadraticBezierCurve:rp,QuadraticBezierCurve3:xu,SplineCurve:ap});class hr extends an{constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const r=e/2,a=t/2,o=Math.floor(n),l=Math.floor(i),c=o+1,h=l+1,d=e/o,u=t/l,f=[],m=[],_=[],g=[];for(let p=0;p<h;p++){const E=p*u-a;for(let b=0;b<c;b++){const M=b*d-r;m.push(M,-E,0),_.push(0,0,1),g.push(b/o),g.push(1-p/l)}}for(let p=0;p<l;p++)for(let E=0;E<o;E++){const b=E+c*p,M=E+c*(p+1),U=E+1+c*(p+1),C=E+1+c*p;f.push(b,M,C),f.push(M,U,C)}this.setIndex(f),this.setAttribute("position",new It(m,3)),this.setAttribute("normal",new It(_,3)),this.setAttribute("uv",new It(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new hr(e.width,e.height,e.widthSegments,e.heightSegments)}}class Ea extends an{constructor(e=1,t=32,n=16,i=0,r=Math.PI*2,a=0,o=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const l=Math.min(a+o,Math.PI);let c=0;const h=[],d=new I,u=new I,f=[],m=[],_=[],g=[];for(let p=0;p<=n;p++){const E=[],b=p/n;let M=0;p===0&&a===0?M=.5/t:p===n&&l===Math.PI&&(M=-.5/t);for(let U=0;U<=t;U++){const C=U/t;d.x=-e*Math.cos(i+C*r)*Math.sin(a+b*o),d.y=e*Math.cos(a+b*o),d.z=e*Math.sin(i+C*r)*Math.sin(a+b*o),m.push(d.x,d.y,d.z),u.copy(d).normalize(),_.push(u.x,u.y,u.z),g.push(C+M,1-b),E.push(c++)}h.push(E)}for(let p=0;p<n;p++)for(let E=0;E<t;E++){const b=h[p][E+1],M=h[p][E],U=h[p+1][E],C=h[p+1][E+1];(p!==0||a>0)&&f.push(b,M,C),(p!==n-1||l<Math.PI)&&f.push(M,U,C)}this.setIndex(f),this.setAttribute("position",new It(m,3)),this.setAttribute("normal",new It(_,3)),this.setAttribute("uv",new It(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Ea(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class Ol extends an{constructor(e=new xu(new I(-1,-1,0),new I(-1,1,0),new I(1,1,0)),t=64,n=1,i=8,r=!1){super(),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r};const a=e.computeFrenetFrames(t,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;const o=new I,l=new I,c=new Ke;let h=new I;const d=[],u=[],f=[],m=[];_(),this.setIndex(m),this.setAttribute("position",new It(d,3)),this.setAttribute("normal",new It(u,3)),this.setAttribute("uv",new It(f,2));function _(){for(let b=0;b<t;b++)g(b);g(r===!1?t:0),E(),p()}function g(b){h=e.getPointAt(b/t,h);const M=a.normals[b],U=a.binormals[b];for(let C=0;C<=i;C++){const P=C/i*Math.PI*2,D=Math.sin(P),S=-Math.cos(P);l.x=S*M.x+D*U.x,l.y=S*M.y+D*U.y,l.z=S*M.z+D*U.z,l.normalize(),u.push(l.x,l.y,l.z),o.x=h.x+n*l.x,o.y=h.y+n*l.y,o.z=h.z+n*l.z,d.push(o.x,o.y,o.z)}}function p(){for(let b=1;b<=t;b++)for(let M=1;M<=i;M++){const U=(i+1)*(b-1)+(M-1),C=(i+1)*b+(M-1),P=(i+1)*b+M,D=(i+1)*(b-1)+M;m.push(U,C,D),m.push(C,P,D)}}function E(){for(let b=0;b<=t;b++)for(let M=0;M<=i;M++)c.x=b/t,c.y=M/i,f.push(c.x,c.y)}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new Ol(new op[e.path.type]().fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class lp extends an{constructor(e=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:e},e!==null){const t=[],n=new Set,i=new I,r=new I;if(e.index!==null){const a=e.attributes.position,o=e.index;let l=e.groups;l.length===0&&(l=[{start:0,count:o.count,materialIndex:0}]);for(let c=0,h=l.length;c<h;++c){const d=l[c],u=d.start,f=d.count;for(let m=u,_=u+f;m<_;m+=3)for(let g=0;g<3;g++){const p=o.getX(m+g),E=o.getX(m+(g+1)%3);i.fromBufferAttribute(a,p),r.fromBufferAttribute(a,E),Oc(i,r,n)===!0&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}}else{const a=e.attributes.position;for(let o=0,l=a.count/3;o<l;o++)for(let c=0;c<3;c++){const h=3*o+c,d=3*o+(c+1)%3;i.fromBufferAttribute(a,h),r.fromBufferAttribute(a,d),Oc(i,r,n)===!0&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}this.setAttribute("position",new It(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}function Oc(s,e,t){const n=`${s.x},${s.y},${s.z}-${e.x},${e.y},${e.z}`,i=`${e.x},${e.y},${e.z}-${s.x},${s.y},${s.z}`;return t.has(n)===!0||t.has(i)===!0?!1:(t.add(n),t.add(i),!0)}class cp extends Bn{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new gt(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class yu extends Bn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new gt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new gt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Dn extends Bn{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new gt(16777215),this.specular=new gt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new gt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class hp extends Bn{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new gt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new gt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class up extends Bn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=kd,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class dp extends Bn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function Vr(s,e){return!s||s.constructor===e?s:typeof e.BYTES_PER_ELEMENT=="number"?new e(s):Array.prototype.slice.call(s)}function fp(s){return ArrayBuffer.isView(s)&&!(s instanceof DataView)}function pp(s){function e(i,r){return s[i]-s[r]}const t=s.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n}function zc(s,e,t){const n=s.length,i=new s.constructor(n);for(let r=0,a=0;a!==n;++r){const o=t[r]*e;for(let l=0;l!==e;++l)i[a++]=s[o+l]}return i}function Mu(s,e,t,n){let i=1,r=s[0];for(;r!==void 0&&r[n]===void 0;)r=s[i++];if(r===void 0)return;let a=r[n];if(a!==void 0)if(Array.isArray(a))do a=r[n],a!==void 0&&(e.push(r.time),t.push(...a)),r=s[i++];while(r!==void 0);else if(a.toArray!==void 0)do a=r[n],a!==void 0&&(e.push(r.time),a.toArray(t,t.length)),r=s[i++];while(r!==void 0);else do a=r[n],a!==void 0&&(e.push(r.time),t.push(a)),r=s[i++];while(r!==void 0)}class Aa{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,i=t[n],r=t[n-1];n:{e:{let a;t:{i:if(!(e<i)){for(let o=n+2;;){if(i===void 0){if(e<r)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===o)break;if(r=i,i=t[++n],e<i)break e}a=t.length;break t}if(!(e>=r)){const o=t[1];e<o&&(n=2,r=o);for(let l=n-2;;){if(r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(i=r,r=t[--n-1],e>=r)break e}a=n,n=0;break t}break n}for(;n<a;){const o=n+a>>>1;e<t[o]?a=o:n=o+1}if(i=t[n],r=t[n-1],r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i;for(let a=0;a!==i;++a)t[a]=n[r+a];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class mp extends Aa{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Zl,endingEnd:Zl}}intervalChanged_(e,t,n){const i=this.parameterPositions;let r=e-2,a=e+1,o=i[r],l=i[a];if(o===void 0)switch(this.getSettings_().endingStart){case Ql:r=e,o=2*t-n;break;case ec:r=i.length-2,o=t+i[r]-i[r+1];break;default:r=e,o=n}if(l===void 0)switch(this.getSettings_().endingEnd){case Ql:a=e,l=2*n-t;break;case ec:a=1,l=n+i[1]-i[0];break;default:a=e-1,l=t}const c=(n-t)*.5,h=this.valueSize;this._weightPrev=c/(t-o),this._weightNext=c/(l-n),this._offsetPrev=r*h,this._offsetNext=a*h}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=this._offsetPrev,d=this._offsetNext,u=this._weightPrev,f=this._weightNext,m=(n-t)/(i-t),_=m*m,g=_*m,p=-u*g+2*u*_-u*m,E=(1+u)*g+(-1.5-2*u)*_+(-.5+u)*m+1,b=(-1-f)*g+(1.5+f)*_+.5*m,M=f*g-f*_;for(let U=0;U!==o;++U)r[U]=p*a[h+U]+E*a[c+U]+b*a[l+U]+M*a[d+U];return r}}class gp extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=(n-t)/(i-t),d=1-h;for(let u=0;u!==o;++u)r[u]=a[c+u]*d+a[l+u]*h;return r}}class _p extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}}class ti{constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=Vr(t,this.TimeBufferType),this.values=Vr(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:Vr(e.times,Array),values:Vr(e.values,Array)};const i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new _p(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new gp(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new mp(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case ua:t=this.InterpolantFactoryMethodDiscrete;break;case al:t=this.InterpolantFactoryMethodLinear;break;case La:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){const n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ua;case this.InterpolantFactoryMethodLinear:return al;case this.InterpolantFactoryMethodSmooth:return La}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(e!==1){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){const n=this.times,i=n.length;let r=0,a=i-1;for(;r!==i&&n[r]<e;)++r;for(;a!==-1&&n[a]>t;)--a;if(++a,r!==0||a!==i){r>=a&&(a=Math.max(a,1),r=a-1);const o=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*o,a*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,i=this.values,r=n.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==r;o++){const l=n[o];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(i!==void 0&&fp(i))for(let o=0,l=i.length;o!==l;++o){const c=i[o];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===La,r=e.length-1;let a=1;for(let o=1;o<r;++o){let l=!1;const c=e[o],h=e[o+1];if(c!==h&&(o!==1||c!==e[0]))if(i)l=!0;else{const d=o*n,u=d-n,f=d+n;for(let m=0;m!==n;++m){const _=t[d+m];if(_!==t[u+m]||_!==t[f+m]){l=!0;break}}}if(l){if(o!==a){e[a]=e[o];const d=o*n,u=a*n;for(let f=0;f!==n;++f)t[u+f]=t[d+f]}++a}}if(r>0){e[a]=e[r];for(let o=r*n,l=a*n,c=0;c!==n;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}ti.prototype.ValueTypeName="";ti.prototype.TimeBufferType=Float32Array;ti.prototype.ValueBufferType=Float32Array;ti.prototype.DefaultInterpolation=al;class Os extends ti{constructor(e,t,n){super(e,t,n)}}Os.prototype.ValueTypeName="bool";Os.prototype.ValueBufferType=Array;Os.prototype.DefaultInterpolation=ua;Os.prototype.InterpolantFactoryMethodLinear=void 0;Os.prototype.InterpolantFactoryMethodSmooth=void 0;class Su extends ti{constructor(e,t,n,i){super(e,t,n,i)}}Su.prototype.ValueTypeName="color";class _a extends ti{constructor(e,t,n,i){super(e,t,n,i)}}_a.prototype.ValueTypeName="number";class vp extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(n-t)/(i-t);let c=e*o;for(let h=c+o;c!==h;c+=4)zn.slerpFlat(r,0,a,c-o,a,c,l);return r}}class ur extends ti{constructor(e,t,n,i){super(e,t,n,i)}InterpolantFactoryMethodLinear(e){return new vp(this.times,this.values,this.getValueSize(),e)}}ur.prototype.ValueTypeName="quaternion";ur.prototype.InterpolantFactoryMethodSmooth=void 0;class zs extends ti{constructor(e,t,n){super(e,t,n)}}zs.prototype.ValueTypeName="string";zs.prototype.ValueBufferType=Array;zs.prototype.DefaultInterpolation=ua;zs.prototype.InterpolantFactoryMethodLinear=void 0;zs.prototype.InterpolantFactoryMethodSmooth=void 0;class Is extends ti{constructor(e,t,n,i){super(e,t,n,i)}}Is.prototype.ValueTypeName="vector";class Bc{constructor(e="",t=-1,n=[],i=Bd){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Zn(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let a=0,o=n.length;a!==o;++a)t.push(yp(n[a]).scale(i));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,a=n.length;r!==a;++r)t.push(ti.toJSON(n[r]));return i}static CreateFromMorphTargetSequence(e,t,n,i){const r=t.length,a=[];for(let o=0;o<r;o++){let l=[],c=[];l.push((o+r-1)%r,o,(o+1)%r),c.push(0,1,0);const h=pp(l);l=zc(l,1,h),c=zc(c,1,h),!i&&l[0]===0&&(l.push(r),c.push(c[0])),a.push(new _a(".morphTargetInfluences["+t[o].name+"]",l,c).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const i=e;n=i.geometry&&i.geometry.animations||i.animations}for(let i=0;i<n.length;i++)if(n[i].name===t)return n[i];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const i={},r=/^([\w-]*?)([\d]+)$/;for(let o=0,l=e.length;o<l;o++){const c=e[o],h=c.name.match(r);if(h&&h.length>1){const d=h[1];let u=i[d];u||(i[d]=u=[]),u.push(c)}}const a=[];for(const o in i)a.push(this.CreateFromMorphTargetSequence(o,i[o],t,n));return a}static parseAnimation(e,t){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(d,u,f,m,_){if(f.length!==0){const g=[],p=[];Mu(f,g,p,m),g.length!==0&&_.push(new d(u,g,p))}},i=[],r=e.name||"default",a=e.fps||30,o=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let d=0;d<c.length;d++){const u=c[d].keys;if(!(!u||u.length===0))if(u[0].morphTargets){const f={};let m;for(m=0;m<u.length;m++)if(u[m].morphTargets)for(let _=0;_<u[m].morphTargets.length;_++)f[u[m].morphTargets[_]]=-1;for(const _ in f){const g=[],p=[];for(let E=0;E!==u[m].morphTargets.length;++E){const b=u[m];g.push(b.time),p.push(b.morphTarget===_?1:0)}i.push(new _a(".morphTargetInfluence["+_+"]",g,p))}l=f.length*a}else{const f=".bones["+t[d].name+"]";n(Is,f+".position",u,"pos",i),n(ur,f+".quaternion",u,"rot",i),n(Is,f+".scale",u,"scl",i)}}return i.length===0?null:new this(r,l,i,o)}resetDuration(){const e=this.tracks;let t=0;for(let n=0,i=e.length;n!==i;++n){const r=this.tracks[n];t=Math.max(t,r.times[r.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function xp(s){switch(s.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return _a;case"vector":case"vector2":case"vector3":case"vector4":return Is;case"color":return Su;case"quaternion":return ur;case"bool":case"boolean":return Os;case"string":return zs}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+s)}function yp(s){if(s.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=xp(s.type);if(s.times===void 0){const t=[],n=[];Mu(s.keys,t,n,"value"),s.times=t,s.values=n}return e.parse!==void 0?e.parse(s):new e(s.name,s.times,s.values,s.interpolation)}const va={enabled:!1,files:{},add:function(s,e){this.enabled!==!1&&(this.files[s]=e)},get:function(s){if(this.enabled!==!1)return this.files[s]},remove:function(s){delete this.files[s]},clear:function(){this.files={}}};class bu{constructor(e,t,n){const i=this;let r=!1,a=0,o=0,l;const c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(h){o++,r===!1&&i.onStart!==void 0&&i.onStart(h,a,o),r=!0},this.itemEnd=function(h){a++,i.onProgress!==void 0&&i.onProgress(h,a,o),a===o&&(r=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(h){i.onError!==void 0&&i.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,d){return c.push(h,d),this},this.removeHandler=function(h){const d=c.indexOf(h);return d!==-1&&c.splice(d,2),this},this.getHandler=function(h){for(let d=0,u=c.length;d<u;d+=2){const f=c[d],m=c[d+1];if(f.global&&(f.lastIndex=0),f.test(h))return m}return null}}}const zl=new bu;class Qn{constructor(e){this.manager=e!==void 0?e:zl,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise(function(i,r){n.load(e,i,t,r)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}Qn.DEFAULT_MATERIAL_NAME="__DEFAULT";const _i={};class Mp extends Error{constructor(e,t){super(e),this.response=t}}class Bs extends Qn{constructor(e){super(e),this.mimeType="",this.responseType=""}load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=va.get(e);if(r!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(r),this.manager.itemEnd(e)},0),r;if(_i[e]!==void 0){_i[e].push({onLoad:t,onProgress:n,onError:i});return}_i[e]=[],_i[e].push({onLoad:t,onProgress:n,onError:i});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const h=_i[e],d=c.body.getReader(),u=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),f=u?parseInt(u):0,m=f!==0;let _=0;const g=new ReadableStream({start(p){E();function E(){d.read().then(({done:b,value:M})=>{if(b)p.close();else{_+=M.byteLength;const U=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:f});for(let C=0,P=h.length;C<P;C++){const D=h[C];D.onProgress&&D.onProgress(U)}p.enqueue(M),E()}},b=>{p.error(b)})}}});return new Response(g)}else throw new Mp(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(h=>new DOMParser().parseFromString(h,o));case"json":return c.json();default:if(o==="")return c.text();{const d=/charset="?([^;"\s]*)"?/i.exec(o),u=d&&d[1]?d[1].toLowerCase():void 0,f=new TextDecoder(u);return c.arrayBuffer().then(m=>f.decode(m))}}}).then(c=>{va.add(e,c);const h=_i[e];delete _i[e];for(let d=0,u=h.length;d<u;d++){const f=h[d];f.onLoad&&f.onLoad(c)}}).catch(c=>{const h=_i[e];if(h===void 0)throw this.manager.itemError(e),c;delete _i[e];for(let d=0,u=h.length;d<u;d++){const f=h[d];f.onError&&f.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class Sp extends Qn{constructor(e){super(e)}load(e,t,n,i){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,a=va.get(e);if(a!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0),a;const o=or("img");function l(){h(),va.add(e,this),t&&t(this),r.manager.itemEnd(e)}function c(d){h(),i&&i(d),r.manager.itemError(e),r.manager.itemEnd(e)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",c,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(e),o.src=e,o}}class bp extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new mu,o=new Bs(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,function(l){let c;try{c=r.parse(l)}catch(h){if(i!==void 0)i(h);else{console.error(h);return}}c.image!==void 0?a.image=c.image:c.data!==void 0&&(a.image.width=c.width,a.image.height=c.height,a.image.data=c.data),a.wrapS=c.wrapS!==void 0?c.wrapS:Jn,a.wrapT=c.wrapT!==void 0?c.wrapT:Jn,a.magFilter=c.magFilter!==void 0?c.magFilter:Fn,a.minFilter=c.minFilter!==void 0?c.minFilter:Fn,a.anisotropy=c.anisotropy!==void 0?c.anisotropy:1,c.colorSpace!==void 0&&(a.colorSpace=c.colorSpace),c.flipY!==void 0&&(a.flipY=c.flipY),c.format!==void 0&&(a.format=c.format),c.type!==void 0&&(a.type=c.type),c.mipmaps!==void 0&&(a.mipmaps=c.mipmaps,a.minFilter=xi),c.mipmapCount===1&&(a.minFilter=Fn),c.generateMipmaps!==void 0&&(a.generateMipmaps=c.generateMipmaps),a.needsUpdate=!0,t&&t(a,c)},n,i),a}}class Bl extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=new bn,a=new Sp(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(o){r.image=o,r.needsUpdate=!0,t!==void 0&&t(r)},n,i),r}}class dr extends nn{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new gt(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}class Ep extends dr{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.groundColor=new gt(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}const ao=new Et,kc=new I,Vc=new I;class kl{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ke(512,512),this.mapType=ci,this.map=null,this.mapPass=null,this.matrix=new Et,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Nl,this._frameExtents=new Ke(1,1),this._viewportCount=1,this._viewports=[new Ht(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;kc.setFromMatrixPosition(e.matrixWorld),t.position.copy(kc),Vc.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Vc),t.updateMatrixWorld(),ao.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ao),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(ao)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.autoUpdate=e.autoUpdate,this.needsUpdate=e.needsUpdate,this.normalBias=e.normalBias,this.blurSamples=e.blurSamples,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class Ap extends kl{constructor(){super(new Sn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(e){const t=this.camera,n=Us*2*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height*this.aspect,r=e.distance||t.far;(n!==t.fov||i!==t.aspect||r!==t.far)&&(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class wp extends dr{constructor(e,t,n=0,i=Math.PI/3,r=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.target=new nn,this.distance=n,this.angle=i,this.penumbra=r,this.decay=a,this.map=null,this.shadow=new Ap}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const Hc=new Et,$s=new I,oo=new I;class Tp extends kl{constructor(){super(new Sn(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ke(4,2),this._viewportCount=6,this._viewports=[new Ht(2,1,1,1),new Ht(0,1,1,1),new Ht(3,1,1,1),new Ht(1,1,1,1),new Ht(3,0,1,1),new Ht(1,0,1,1)],this._cubeDirections=[new I(1,0,0),new I(-1,0,0),new I(0,0,1),new I(0,0,-1),new I(0,1,0),new I(0,-1,0)],this._cubeUps=[new I(0,1,0),new I(0,1,0),new I(0,1,0),new I(0,1,0),new I(0,0,1),new I(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,i=this.matrix,r=e.distance||n.far;r!==n.far&&(n.far=r,n.updateProjectionMatrix()),$s.setFromMatrixPosition(e.matrixWorld),n.position.copy($s),oo.copy(n.position),oo.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(oo),n.updateMatrixWorld(),i.makeTranslation(-$s.x,-$s.y,-$s.z),Hc.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Hc)}}class Eu extends dr{constructor(e,t,n=0,i=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Tp}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class wa extends cu{constructor(e=-1,t=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-e,a=n+e,o=i+t,l=i-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,a=r+c*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(r,a,o,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Cp extends kl{constructor(){super(new wa(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Au extends dr{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.target=new nn,this.shadow=new Cp}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class wu extends dr{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class Vl{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class Rp extends an{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class Lp extends Sn{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class Pp{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Gc(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=Gc();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function Gc(){return performance.now()}class cl extends uu{constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){const t=super.clone(e);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(e){const t=super.toJSON(e);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}const Wc=new Et;class Dp{constructor(e,t,n=0,i=1/0){this.ray=new Fs(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new Rl,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}setFromXRController(e){return Wc.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(Wc),this}intersectObject(e,t=!0,n=[]){return hl(e,this,n,t),n.sort(Xc),n}intersectObjects(e,t=!0,n=[]){for(let i=0,r=e.length;i<r;i++)hl(e[i],this,n,t);return n.sort(Xc),n}}function Xc(s,e){return s.distance-e.distance}function hl(s,e,t,n){let i=!0;if(s.layers.test(e.layers)&&s.raycast(e,t)===!1&&(i=!1),i===!0&&n===!0){const r=s.children;for(let a=0,o=r.length;a<o;a++)hl(r[a],e,t,!0)}}class Tu{constructor(e=1,t=0,n=0){this.radius=e,this.phi=t,this.theta=n}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Ot(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(Ot(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}const qc=new I,Hr=new I;class Up{constructor(e=new I,t=new I){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){qc.subVectors(e,this.start),Hr.subVectors(this.end,this.start);const n=Hr.dot(Hr);let r=Hr.dot(qc)/n;return t&&(r=Ot(r,0,1)),r}closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}class Np extends ga{constructor(e=10,t=10,n=4473924,i=8947848){n=new gt(n),i=new gt(i);const r=t/2,a=e/t,o=e/2,l=[],c=[];for(let u=0,f=0,m=-o;u<=t;u++,m+=a){l.push(-o,0,m,o,0,m),l.push(m,0,-o,m,0,o);const _=u===r?n:i;_.toArray(c,f),f+=3,_.toArray(c,f),f+=3,_.toArray(c,f),f+=3,_.toArray(c,f),f+=3}const h=new an;h.setAttribute("position",new It(l,3)),h.setAttribute("color",new It(c,3));const d=new Si({vertexColors:!0,toneMapped:!1});super(h,d),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class Ip extends ns{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(e){if(e===void 0){console.warn("THREE.Controls: connect() now requires an element.");return}this.domElement!==null&&this.disconnect(),this.domElement=e}disconnect(){}dispose(){}update(){}}function jc(s,e,t,n){const i=Fp(n);switch(t){case Kh:return s*e;case Qh:return s*e/i.components*i.byteLength;case El:return s*e/i.components*i.byteLength;case eu:return s*e*2/i.components*i.byteLength;case Al:return s*e*2/i.components*i.byteLength;case Zh:return s*e*3/i.components*i.byteLength;case Wn:return s*e*4/i.components*i.byteLength;case wl:return s*e*4/i.components*i.byteLength;case ta:case na:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case ia:case sa:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Io:case Oo:return Math.max(s,16)*Math.max(e,8)/4;case No:case Fo:return Math.max(s,8)*Math.max(e,8)/2;case zo:case Bo:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case ko:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Vo:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Ho:return Math.floor((s+4)/5)*Math.floor((e+3)/4)*16;case Go:return Math.floor((s+4)/5)*Math.floor((e+4)/5)*16;case Wo:return Math.floor((s+5)/6)*Math.floor((e+4)/5)*16;case Xo:return Math.floor((s+5)/6)*Math.floor((e+5)/6)*16;case qo:return Math.floor((s+7)/8)*Math.floor((e+4)/5)*16;case jo:return Math.floor((s+7)/8)*Math.floor((e+5)/6)*16;case Yo:return Math.floor((s+7)/8)*Math.floor((e+7)/8)*16;case $o:return Math.floor((s+9)/10)*Math.floor((e+4)/5)*16;case Jo:return Math.floor((s+9)/10)*Math.floor((e+5)/6)*16;case Ko:return Math.floor((s+9)/10)*Math.floor((e+7)/8)*16;case Zo:return Math.floor((s+9)/10)*Math.floor((e+9)/10)*16;case Qo:return Math.floor((s+11)/12)*Math.floor((e+9)/10)*16;case el:return Math.floor((s+11)/12)*Math.floor((e+11)/12)*16;case ra:case tl:case nl:return Math.ceil(s/4)*Math.ceil(e/4)*16;case tu:case il:return Math.ceil(s/4)*Math.ceil(e/4)*8;case sl:case rl:return Math.ceil(s/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function Fp(s){switch(s){case ci:case Yh:return{byteLength:1,components:1};case ir:case $h:case cr:return{byteLength:2,components:1};case Sl:case bl:return{byteLength:2,components:4};case es:case Ml:case oi:return{byteLength:4,components:1};case Jh:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${s}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:yl}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=yl);/**
|
|
44
|
+
`},i=new Bi(5,5,5),r=new bi({name:"CubemapFromEquirect",uniforms:Ns(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:Rn,blending:Fi});r.uniforms.tEquirect.value=t;const a=new Jt(i,r),o=t.minFilter;return t.minFilter===xi&&(t.minFilter=Fn),new zf(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,n=!0,i=!0){const r=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,i);e.setRenderTarget(r)}}class Kn extends nn{constructor(){super(),this.isGroup=!0,this.type="Group"}}const kf={type:"move"};class Ka{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Kn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Kn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new I,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new I),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Kn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new I,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new I),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){a=!0;for(const _ of e.hand.values()){const g=t.getJointPose(_,n),p=this._getHandJoint(c,_);g!==null&&(p.matrix.fromArray(g.transform.matrix),p.matrix.decompose(p.position,p.rotation,p.scale),p.matrixWorldNeedsUpdate=!0,p.jointRadius=g.radius),p.visible=g!==null}const h=c.joints["index-finger-tip"],d=c.joints["thumb-tip"],u=h.position.distanceTo(d.position),f=.02,m=.005;c.inputState.pinching&&u>f+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&u<=f-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&r!==null&&(i=r),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(kf)))}return o!==null&&(o.visible=i!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Kn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Pl extends nn{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Ln,this.environmentIntensity=1,this.environmentRotation=new Ln,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class uu{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=ol,this.updateRanges=[],this.version=0,this.uuid=Zn()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Zn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Zn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const Tn=new I;class li{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.applyMatrix4(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.applyNormalMatrix(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Tn.fromBufferAttribute(this,t),Tn.transformDirection(e),this.setXYZ(t,Tn.x,Tn.y,Tn.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=$n(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=en(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=en(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=en(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=en(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=en(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=$n(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=$n(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=$n(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=$n(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=en(t,this.array),n=en(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=en(t,this.array),n=en(n,this.array),i=en(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=en(t,this.array),n=en(n,this.array),i=en(i,this.array),r=en(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const i=n*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)t.push(this.data.array[i+r])}return new dn(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new li(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const i=n*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)t.push(this.data.array[i+r])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class Sa extends Bn{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new _t(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let _s;const Xs=new I,vs=new I,xs=new I,ys=new Ze,qs=new Ze,du=new At,Lr=new I,js=new I,Pr=new I,Mc=new Ze,Za=new Ze,Sc=new Ze;class Dl extends nn{constructor(e=new Sa){if(super(),this.isSprite=!0,this.type="Sprite",_s===void 0){_s=new on;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),n=new uu(t,5);_s.setIndex([0,1,2,0,2,3]),_s.setAttribute("position",new li(n,3,0,!1)),_s.setAttribute("uv",new li(n,2,3,!1))}this.geometry=_s,this.material=e,this.center=new Ze(.5,.5),this.count=1}raycast(e,t){e.camera===null&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),vs.setFromMatrixScale(this.matrixWorld),du.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),xs.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&vs.multiplyScalar(-xs.z);const n=this.material.rotation;let i,r;n!==0&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;Dr(Lr.set(-.5,-.5,0),xs,a,vs,i,r),Dr(js.set(.5,-.5,0),xs,a,vs,i,r),Dr(Pr.set(.5,.5,0),xs,a,vs,i,r),Mc.set(0,0),Za.set(1,0),Sc.set(1,1);let o=e.ray.intersectTriangle(Lr,js,Pr,!1,Xs);if(o===null&&(Dr(js.set(-.5,.5,0),xs,a,vs,i,r),Za.set(0,1),o=e.ray.intersectTriangle(Lr,Pr,js,!1,Xs),o===null))return;const l=e.ray.origin.distanceTo(Xs);l<e.near||l>e.far||t.push({distance:l,point:Xs.clone(),uv:Gn.getInterpolation(Xs,Lr,js,Pr,Mc,Za,Sc,new Ze),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Dr(s,e,t,n,i,r){ys.subVectors(s,t).addScalar(.5).multiply(n),i!==void 0?(qs.x=r*ys.x-i*ys.y,qs.y=i*ys.x+r*ys.y):qs.copy(ys),s.copy(e),s.x+=qs.x,s.y+=qs.y,s.applyMatrix4(du)}const Ur=new I,bc=new I;class fu extends nn{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,i=t.length;n<i;n++){const r=t[n];this.addLevel(r.object.clone(),r.distance,r.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);const i=this.levels;let r;for(r=0;r<i.length&&!(t<i[r].distance);r++);return i.splice(r,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}removeLevel(e){const t=this.levels;for(let n=0;n<t.length;n++)if(t[n].distance===e){const i=t.splice(n,1);return this.remove(i[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){const t=this.levels;if(t.length>0){let n,i;for(n=1,i=t.length;n<i;n++){let r=t[n].distance;if(t[n].object.visible&&(r-=r*t[n].hysteresis),e<r)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){Ur.setFromMatrixPosition(this.matrixWorld);const i=e.ray.origin.distanceTo(Ur);this.getObjectForDistance(i).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Ur.setFromMatrixPosition(e.matrixWorld),bc.setFromMatrixPosition(this.matrixWorld);const n=Ur.distanceTo(bc)/e.zoom;t[0].object.visible=!0;let i,r;for(i=1,r=t.length;i<r;i++){let a=t[i].distance;if(t[i].object.visible&&(a-=a*t[i].hysteresis),n>=a)t[i-1].object.visible=!1,t[i].object.visible=!0;else break}for(this._currentLevel=i-1;i<r;i++)t[i].object.visible=!1}}toJSON(e){const t=super.toJSON(e);this.autoUpdate===!1&&(t.object.autoUpdate=!1),t.object.levels=[];const n=this.levels;for(let i=0,r=n.length;i<r;i++){const a=n[i];t.object.levels.push({object:a.object.uuid,distance:a.distance,hysteresis:a.hysteresis})}return t}}const Ec=new I,Ac=new Ht,wc=new Ht,Vf=new I,Tc=new At,Nr=new I,Qa=new Ei,Cc=new At,eo=new Fs;class Hf extends Jt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=Kl,this.bindMatrix=new At,this.bindMatrixInverse=new At,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;this.boundingBox===null&&(this.boundingBox=new ei),this.boundingBox.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Nr),this.boundingBox.expandByPoint(Nr)}computeBoundingSphere(){const e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new Ei),this.boundingSphere.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Nr),this.boundingSphere.expandByPoint(Nr)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){const n=this.material,i=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Qa.copy(this.boundingSphere),Qa.applyMatrix4(i),e.ray.intersectsSphere(Qa)!==!1&&(Cc.copy(i).invert(),eo.copy(e.ray).applyMatrix4(Cc),!(this.boundingBox!==null&&eo.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,eo)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new Ht,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;n<i;n++){e.fromBufferAttribute(t,n);const r=1/e.manhattanLength();r!==1/0?e.multiplyScalar(r):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===Kl?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===Od?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,t){const n=this.skeleton,i=this.geometry;Ac.fromBufferAttribute(i.attributes.skinIndex,e),wc.fromBufferAttribute(i.attributes.skinWeight,e),Ec.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let r=0;r<4;r++){const a=wc.getComponent(r);if(a!==0){const o=Ac.getComponent(r);Tc.multiplyMatrices(n.bones[o].matrixWorld,n.boneInverses[o]),t.addScaledVector(Vf.copy(Ec).applyMatrix4(Tc),a)}}return t.applyMatrix4(this.bindMatrixInverse)}}class pu extends nn{constructor(){super(),this.isBone=!0,this.type="Bone"}}class mu extends bn{constructor(e=null,t=1,n=1,i,r,a,o,l,c=On,h=On,d,u){super(null,a,o,l,c,h,i,r,d,u),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const Rc=new At,Gf=new At;class Ul{constructor(e=[],t=[]){this.uuid=Zn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let n=0,i=this.bones.length;n<i;n++)this.boneInverses.push(new At)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const n=new At;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&(n.parent&&n.parent.isBone?(n.matrix.copy(n.parent.matrixWorld).invert(),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let r=0,a=e.length;r<a;r++){const o=e[r]?e[r].matrixWorld:Gf;Rc.multiplyMatrices(o,t[r]),Rc.toArray(n,r*16)}i!==null&&(i.needsUpdate=!0)}clone(){return new Ul(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new mu(t,e,e,Wn,oi);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const i=this.bones[t];if(i.name===e)return i}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n<i;n++){const r=e.bones[n];let a=t[r];a===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),a=new pu),this.bones.push(a),this.boneInverses.push(new At().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.7,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let i=0,r=t.length;i<r;i++){const a=t[i];e.bones.push(a.uuid);const o=n[i];e.boneInverses.push(o.toArray())}return e}}const to=new I,Wf=new I,Xf=new Ft;class Ui{constructor(e=new I(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const i=to.subVectors(n,t).cross(Wf.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(to),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||Xf.getNormalMatrix(e),i=this.coplanarPoint(to).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Wi=new Ei,Ir=new I;class Nl{constructor(e=new Ui,t=new Ui,n=new Ui,i=new Ui,r=new Ui,a=new Ui){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=yi){const n=this.planes,i=e.elements,r=i[0],a=i[1],o=i[2],l=i[3],c=i[4],h=i[5],d=i[6],u=i[7],f=i[8],m=i[9],_=i[10],g=i[11],p=i[12],E=i[13],b=i[14],M=i[15];if(n[0].setComponents(l-r,u-c,g-f,M-p).normalize(),n[1].setComponents(l+r,u+c,g+f,M+p).normalize(),n[2].setComponents(l+a,u+h,g+m,M+E).normalize(),n[3].setComponents(l-a,u-h,g-m,M-E).normalize(),n[4].setComponents(l-o,u-d,g-_,M-b).normalize(),t===yi)n[5].setComponents(l+o,u+d,g+_,M+b).normalize();else if(t===fa)n[5].setComponents(o,d,_,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Wi.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Wi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Wi)}intersectsSprite(e){return Wi.center.set(0,0,0),Wi.radius=.7071067811865476,Wi.applyMatrix4(e.matrixWorld),this.intersectsSphere(Wi)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(n)<i)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const i=t[n];if(Ir.x=i.normal.x>0?e.max.x:e.min.x,Ir.y=i.normal.y>0?e.max.y:e.min.y,Ir.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Ir)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Si extends Bn{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new _t(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const pa=new I,ma=new I,Lc=new At,Ys=new Fs,Fr=new Ei,no=new I,Pc=new I;class ba extends nn{constructor(e=new on,t=new Si){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[0];for(let i=1,r=t.count;i<r;i++)pa.fromBufferAttribute(t,i-1),ma.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=pa.distanceTo(ma);e.setAttribute("lineDistance",new Nt(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Fr.copy(n.boundingSphere),Fr.applyMatrix4(i),Fr.radius+=r,e.ray.intersectsSphere(Fr)===!1)return;Lc.copy(i).invert(),Ys.copy(e.ray).applyMatrix4(Lc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=this.isLineSegments?2:1,h=n.index,u=n.attributes.position;if(h!==null){const f=Math.max(0,a.start),m=Math.min(h.count,a.start+a.count);for(let _=f,g=m-1;_<g;_+=c){const p=h.getX(_),E=h.getX(_+1),b=Or(this,e,Ys,l,p,E,_);b&&t.push(b)}if(this.isLineLoop){const _=h.getX(m-1),g=h.getX(f),p=Or(this,e,Ys,l,_,g,m-1);p&&t.push(p)}}else{const f=Math.max(0,a.start),m=Math.min(u.count,a.start+a.count);for(let _=f,g=m-1;_<g;_+=c){const p=Or(this,e,Ys,l,_,_+1,_);p&&t.push(p)}if(this.isLineLoop){const _=Or(this,e,Ys,l,m-1,f,m-1);_&&t.push(_)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function Or(s,e,t,n,i,r,a){const o=s.geometry.attributes.position;if(pa.fromBufferAttribute(o,i),ma.fromBufferAttribute(o,r),t.distanceSqToSegment(pa,ma,no,Pc)>n)return;no.applyMatrix4(s.matrixWorld);const c=e.ray.origin.distanceTo(no);if(!(c<e.near||c>e.far))return{distance:c,point:Pc.clone().applyMatrix4(s.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:s}}const Dc=new I,Uc=new I;class ga extends ba{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let i=0,r=t.count;i<r;i+=2)Dc.fromBufferAttribute(t,i),Uc.fromBufferAttribute(t,i+1),n[i]=i===0?0:n[i-1],n[i+1]=n[i]+Dc.distanceTo(Uc);e.setAttribute("lineDistance",new Nt(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class Ii extends Bn{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new _t(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const Nc=new At,ll=new Fs,zr=new Ei,Br=new I;class Cs extends nn{constructor(e=new on,t=new Ii){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),zr.copy(n.boundingSphere),zr.applyMatrix4(i),zr.radius+=r,e.ray.intersectsSphere(zr)===!1)return;Nc.copy(i).invert(),ll.copy(e.ray).applyMatrix4(Nc);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,d=n.attributes.position;if(c!==null){const u=Math.max(0,a.start),f=Math.min(c.count,a.start+a.count);for(let m=u,_=f;m<_;m++){const g=c.getX(m);Br.fromBufferAttribute(d,g),Ic(Br,g,l,i,e,t,this)}}else{const u=Math.max(0,a.start),f=Math.min(d.count,a.start+a.count);for(let m=u,_=f;m<_;m++)Br.fromBufferAttribute(d,m),Ic(Br,m,l,i,e,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=i.length;r<a;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function Ic(s,e,t,n,i,r,a){const o=ll.distanceSqToPoint(s);if(o<t){const l=new I;ll.closestPointToPoint(s,l),l.applyMatrix4(n);const c=i.ray.origin.distanceTo(l);if(c<i.near||c>i.far)return;r.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class qf extends bn{constructor(e,t,n,i,r,a,o,l,c){super(e,t,n,i,r,a,o,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class gu extends bn{constructor(e,t,n=es,i,r,a,o=On,l=On,c,h=rr,d=1){if(h!==rr&&h!==ar)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const u={width:e,height:t,depth:d};super(u,i,r,a,o,l,h,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Cl(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class Il extends on{constructor(e=1,t=1,n=1,i=32,r=1,a=!1,o=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:l};const c=this;i=Math.floor(i),r=Math.floor(r);const h=[],d=[],u=[],f=[];let m=0;const _=[],g=n/2;let p=0;E(),a===!1&&(e>0&&b(!0),t>0&&b(!1)),this.setIndex(h),this.setAttribute("position",new Nt(d,3)),this.setAttribute("normal",new Nt(u,3)),this.setAttribute("uv",new Nt(f,2));function E(){const M=new I,U=new I;let C=0;const P=(t-e)/n;for(let D=0;D<=r;D++){const S=[],y=D/r,N=y*(t-e)+e;for(let W=0;W<=i;W++){const X=W/i,Q=X*l+o,ne=Math.sin(Q),G=Math.cos(Q);U.x=N*ne,U.y=-y*n+g,U.z=N*G,d.push(U.x,U.y,U.z),M.set(ne,P,G).normalize(),u.push(M.x,M.y,M.z),f.push(X,1-y),S.push(m++)}_.push(S)}for(let D=0;D<i;D++)for(let S=0;S<r;S++){const y=_[S][D],N=_[S+1][D],W=_[S+1][D+1],X=_[S][D+1];(e>0||S!==0)&&(h.push(y,N,X),C+=3),(t>0||S!==r-1)&&(h.push(N,W,X),C+=3)}c.addGroup(p,C,0),p+=C}function b(M){const U=m,C=new Ze,P=new I;let D=0;const S=M===!0?e:t,y=M===!0?1:-1;for(let W=1;W<=i;W++)d.push(0,g*y,0),u.push(0,y,0),f.push(.5,.5),m++;const N=m;for(let W=0;W<=i;W++){const Q=W/i*l+o,ne=Math.cos(Q),G=Math.sin(Q);P.x=S*G,P.y=g*y,P.z=S*ne,d.push(P.x,P.y,P.z),u.push(0,y,0),C.x=ne*.5+.5,C.y=G*.5*y+.5,f.push(C.x,C.y),m++}for(let W=0;W<i;W++){const X=U+W,Q=N+W;M===!0?h.push(Q,Q+1,X):h.push(Q+1,Q,X),D+=3}c.addGroup(p,D,M===!0?1:2),p+=D}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Il(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Ai{constructor(){this.type="Curve",this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){console.warn("THREE.Curve: .getPoint() not implemented.")}getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)n=this.getPoint(a/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t=null){const n=this.getLengths();let i=0;const r=n.length;let a;t?a=t:a=e*n[r-1];let o=0,l=r-1,c;for(;o<=l;)if(i=Math.floor(o+(l-o)/2),c=n[i]-a,c<0)o=i+1;else if(c>0)l=i-1;else{l=i;break}if(i=l,n[i]===a)return i/(r-1);const h=n[i],u=n[i+1]-h,f=(a-h)/u;return(i+f)/(r-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);const a=this.getPoint(i),o=this.getPoint(r),l=t||(a.isVector2?new Ze:new I);return l.copy(o).sub(a).normalize(),l}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new I,i=[],r=[],a=[],o=new I,l=new At;for(let f=0;f<=e;f++){const m=f/e;i[f]=this.getTangentAt(m,new I)}r[0]=new I,a[0]=new I;let c=Number.MAX_VALUE;const h=Math.abs(i[0].x),d=Math.abs(i[0].y),u=Math.abs(i[0].z);h<=c&&(c=h,n.set(1,0,0)),d<=c&&(c=d,n.set(0,1,0)),u<=c&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(let f=1;f<=e;f++){if(r[f]=r[f-1].clone(),a[f]=a[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON){o.normalize();const m=Math.acos(Ot(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(l.makeRotationAxis(o,m))}a[f].crossVectors(i[f],r[f])}if(t===!0){let f=Math.acos(Ot(r[0].dot(r[e]),-1,1));f/=e,i[0].dot(o.crossVectors(r[0],r[e]))>0&&(f=-f);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(i[m],f*m)),a[m].crossVectors(i[m],r[m])}return{tangents:i,normals:r,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class _u extends Ai{constructor(e=0,t=0,n=1,i=1,r=0,a=Math.PI*2,o=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=o,this.aRotation=l}getPoint(e,t=new Ze){const n=t,i=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const a=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(a?r=0:r=i),this.aClockwise===!0&&!a&&(r===i?r=-i:r=r-i);const o=this.aStartAngle+e*r;let l=this.aX+this.xRadius*Math.cos(o),c=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){const h=Math.cos(this.aRotation),d=Math.sin(this.aRotation),u=l-this.aX,f=c-this.aY;l=u*h-f*d+this.aX,c=u*d+f*h+this.aY}return n.set(l,c)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class jf extends _u{constructor(e,t,n,i,r,a){super(e,t,n,n,i,r,a),this.isArcCurve=!0,this.type="ArcCurve"}}function Fl(){let s=0,e=0,t=0,n=0;function i(r,a,o,l){s=r,e=o,t=-3*r+3*a-2*o-l,n=2*r-2*a+o+l}return{initCatmullRom:function(r,a,o,l,c){i(a,o,c*(o-r),c*(l-a))},initNonuniformCatmullRom:function(r,a,o,l,c,h,d){let u=(a-r)/c-(o-r)/(c+h)+(o-a)/h,f=(o-a)/h-(l-a)/(h+d)+(l-o)/d;u*=h,f*=h,i(a,o,u,f)},calc:function(r){const a=r*r,o=a*r;return s+e*r+t*a+n*o}}}const kr=new I,io=new Fl,so=new Fl,ro=new Fl;class vu extends Ai{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new I){const n=t,i=this.points,r=i.length,a=(r-(this.closed?0:1))*e;let o=Math.floor(a),l=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:l===0&&o===r-1&&(o=r-2,l=1);let c,h;this.closed||o>0?c=i[(o-1)%r]:(kr.subVectors(i[0],i[1]).add(i[0]),c=kr);const d=i[o%r],u=i[(o+1)%r];if(this.closed||o+2<r?h=i[(o+2)%r]:(kr.subVectors(i[r-1],i[r-2]).add(i[r-1]),h=kr),this.curveType==="centripetal"||this.curveType==="chordal"){const f=this.curveType==="chordal"?.5:.25;let m=Math.pow(c.distanceToSquared(d),f),_=Math.pow(d.distanceToSquared(u),f),g=Math.pow(u.distanceToSquared(h),f);_<1e-4&&(_=1),m<1e-4&&(m=_),g<1e-4&&(g=_),io.initNonuniformCatmullRom(c.x,d.x,u.x,h.x,m,_,g),so.initNonuniformCatmullRom(c.y,d.y,u.y,h.y,m,_,g),ro.initNonuniformCatmullRom(c.z,d.z,u.z,h.z,m,_,g)}else this.curveType==="catmullrom"&&(io.initCatmullRom(c.x,d.x,u.x,h.x,this.tension),so.initCatmullRom(c.y,d.y,u.y,h.y,this.tension),ro.initCatmullRom(c.z,d.z,u.z,h.z,this.tension));return n.set(io.calc(l),so.calc(l),ro.calc(l)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(new I().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function Fc(s,e,t,n,i){const r=(n-e)*.5,a=(i-t)*.5,o=s*s,l=s*o;return(2*t-2*n+r+a)*l+(-3*t+3*n-2*r-a)*o+r*s+t}function Yf(s,e){const t=1-s;return t*t*e}function $f(s,e){return 2*(1-s)*s*e}function Jf(s,e){return s*s*e}function er(s,e,t,n){return Yf(s,e)+$f(s,t)+Jf(s,n)}function Kf(s,e){const t=1-s;return t*t*t*e}function Zf(s,e){const t=1-s;return 3*t*t*s*e}function Qf(s,e){return 3*(1-s)*s*s*e}function ep(s,e){return s*s*s*e}function tr(s,e,t,n,i){return Kf(s,e)+Zf(s,t)+Qf(s,n)+ep(s,i)}class tp extends Ai{constructor(e=new Ze,t=new Ze,n=new Ze,i=new Ze){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new Ze){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(tr(e,i.x,r.x,a.x,o.x),tr(e,i.y,r.y,a.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class np extends Ai{constructor(e=new I,t=new I,n=new I,i=new I){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new I){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(tr(e,i.x,r.x,a.x,o.x),tr(e,i.y,r.y,a.y,o.y),tr(e,i.z,r.z,a.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class ip extends Ai{constructor(e=new Ze,t=new Ze){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new Ze){const n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new Ze){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class sp extends Ai{constructor(e=new I,t=new I){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new I){const n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new I){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class rp extends Ai{constructor(e=new Ze,t=new Ze,n=new Ze){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new Ze){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(er(e,i.x,r.x,a.x),er(e,i.y,r.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class xu extends Ai{constructor(e=new I,t=new I,n=new I){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new I){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(er(e,i.x,r.x,a.x),er(e,i.y,r.y,a.y),er(e,i.z,r.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class ap extends Ai{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new Ze){const n=t,i=this.points,r=(i.length-1)*e,a=Math.floor(r),o=r-a,l=i[a===0?a:a-1],c=i[a],h=i[a>i.length-2?i.length-1:a+1],d=i[a>i.length-3?i.length-1:a+2];return n.set(Fc(o,l.x,c.x,h.x,d.x),Fc(o,l.y,c.y,h.y,d.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(i.clone())}return this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const i=this.points[t];e.points.push(i.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const i=e.points[t];this.points.push(new Ze().fromArray(i))}return this}}var op=Object.freeze({__proto__:null,ArcCurve:jf,CatmullRomCurve3:vu,CubicBezierCurve:tp,CubicBezierCurve3:np,EllipseCurve:_u,LineCurve:ip,LineCurve3:sp,QuadraticBezierCurve:rp,QuadraticBezierCurve3:xu,SplineCurve:ap});class hr extends on{constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const r=e/2,a=t/2,o=Math.floor(n),l=Math.floor(i),c=o+1,h=l+1,d=e/o,u=t/l,f=[],m=[],_=[],g=[];for(let p=0;p<h;p++){const E=p*u-a;for(let b=0;b<c;b++){const M=b*d-r;m.push(M,-E,0),_.push(0,0,1),g.push(b/o),g.push(1-p/l)}}for(let p=0;p<l;p++)for(let E=0;E<o;E++){const b=E+c*p,M=E+c*(p+1),U=E+1+c*(p+1),C=E+1+c*p;f.push(b,M,C),f.push(M,U,C)}this.setIndex(f),this.setAttribute("position",new Nt(m,3)),this.setAttribute("normal",new Nt(_,3)),this.setAttribute("uv",new Nt(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new hr(e.width,e.height,e.widthSegments,e.heightSegments)}}class Ea extends on{constructor(e=1,t=32,n=16,i=0,r=Math.PI*2,a=0,o=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const l=Math.min(a+o,Math.PI);let c=0;const h=[],d=new I,u=new I,f=[],m=[],_=[],g=[];for(let p=0;p<=n;p++){const E=[],b=p/n;let M=0;p===0&&a===0?M=.5/t:p===n&&l===Math.PI&&(M=-.5/t);for(let U=0;U<=t;U++){const C=U/t;d.x=-e*Math.cos(i+C*r)*Math.sin(a+b*o),d.y=e*Math.cos(a+b*o),d.z=e*Math.sin(i+C*r)*Math.sin(a+b*o),m.push(d.x,d.y,d.z),u.copy(d).normalize(),_.push(u.x,u.y,u.z),g.push(C+M,1-b),E.push(c++)}h.push(E)}for(let p=0;p<n;p++)for(let E=0;E<t;E++){const b=h[p][E+1],M=h[p][E],U=h[p+1][E],C=h[p+1][E+1];(p!==0||a>0)&&f.push(b,M,C),(p!==n-1||l<Math.PI)&&f.push(M,U,C)}this.setIndex(f),this.setAttribute("position",new Nt(m,3)),this.setAttribute("normal",new Nt(_,3)),this.setAttribute("uv",new Nt(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Ea(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class Ol extends on{constructor(e=new xu(new I(-1,-1,0),new I(-1,1,0),new I(1,1,0)),t=64,n=1,i=8,r=!1){super(),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r};const a=e.computeFrenetFrames(t,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;const o=new I,l=new I,c=new Ze;let h=new I;const d=[],u=[],f=[],m=[];_(),this.setIndex(m),this.setAttribute("position",new Nt(d,3)),this.setAttribute("normal",new Nt(u,3)),this.setAttribute("uv",new Nt(f,2));function _(){for(let b=0;b<t;b++)g(b);g(r===!1?t:0),E(),p()}function g(b){h=e.getPointAt(b/t,h);const M=a.normals[b],U=a.binormals[b];for(let C=0;C<=i;C++){const P=C/i*Math.PI*2,D=Math.sin(P),S=-Math.cos(P);l.x=S*M.x+D*U.x,l.y=S*M.y+D*U.y,l.z=S*M.z+D*U.z,l.normalize(),u.push(l.x,l.y,l.z),o.x=h.x+n*l.x,o.y=h.y+n*l.y,o.z=h.z+n*l.z,d.push(o.x,o.y,o.z)}}function p(){for(let b=1;b<=t;b++)for(let M=1;M<=i;M++){const U=(i+1)*(b-1)+(M-1),C=(i+1)*b+(M-1),P=(i+1)*b+M,D=(i+1)*(b-1)+M;m.push(U,C,D),m.push(C,P,D)}}function E(){for(let b=0;b<=t;b++)for(let M=0;M<=i;M++)c.x=b/t,c.y=M/i,f.push(c.x,c.y)}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new Ol(new op[e.path.type]().fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class lp extends on{constructor(e=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:e},e!==null){const t=[],n=new Set,i=new I,r=new I;if(e.index!==null){const a=e.attributes.position,o=e.index;let l=e.groups;l.length===0&&(l=[{start:0,count:o.count,materialIndex:0}]);for(let c=0,h=l.length;c<h;++c){const d=l[c],u=d.start,f=d.count;for(let m=u,_=u+f;m<_;m+=3)for(let g=0;g<3;g++){const p=o.getX(m+g),E=o.getX(m+(g+1)%3);i.fromBufferAttribute(a,p),r.fromBufferAttribute(a,E),Oc(i,r,n)===!0&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}}else{const a=e.attributes.position;for(let o=0,l=a.count/3;o<l;o++)for(let c=0;c<3;c++){const h=3*o+c,d=3*o+(c+1)%3;i.fromBufferAttribute(a,h),r.fromBufferAttribute(a,d),Oc(i,r,n)===!0&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}this.setAttribute("position",new Nt(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}function Oc(s,e,t){const n=`${s.x},${s.y},${s.z}-${e.x},${e.y},${e.z}`,i=`${e.x},${e.y},${e.z}-${s.x},${s.y},${s.z}`;return t.has(n)===!0||t.has(i)===!0?!1:(t.add(n),t.add(i),!0)}class cp extends Bn{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new _t(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class yu extends Bn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new _t(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new _t(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Dn extends Bn{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new _t(16777215),this.specular=new _t(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new _t(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class hp extends Bn{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new _t(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new _t(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ma,this.normalScale=new Ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ln,this.combine=xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class up extends Bn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=kd,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class dp extends Bn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function Vr(s,e){return!s||s.constructor===e?s:typeof e.BYTES_PER_ELEMENT=="number"?new e(s):Array.prototype.slice.call(s)}function fp(s){return ArrayBuffer.isView(s)&&!(s instanceof DataView)}function pp(s){function e(i,r){return s[i]-s[r]}const t=s.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n}function zc(s,e,t){const n=s.length,i=new s.constructor(n);for(let r=0,a=0;a!==n;++r){const o=t[r]*e;for(let l=0;l!==e;++l)i[a++]=s[o+l]}return i}function Mu(s,e,t,n){let i=1,r=s[0];for(;r!==void 0&&r[n]===void 0;)r=s[i++];if(r===void 0)return;let a=r[n];if(a!==void 0)if(Array.isArray(a))do a=r[n],a!==void 0&&(e.push(r.time),t.push(...a)),r=s[i++];while(r!==void 0);else if(a.toArray!==void 0)do a=r[n],a!==void 0&&(e.push(r.time),a.toArray(t,t.length)),r=s[i++];while(r!==void 0);else do a=r[n],a!==void 0&&(e.push(r.time),t.push(a)),r=s[i++];while(r!==void 0)}class Aa{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,i=t[n],r=t[n-1];n:{e:{let a;t:{i:if(!(e<i)){for(let o=n+2;;){if(i===void 0){if(e<r)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===o)break;if(r=i,i=t[++n],e<i)break e}a=t.length;break t}if(!(e>=r)){const o=t[1];e<o&&(n=2,r=o);for(let l=n-2;;){if(r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(i=r,r=t[--n-1],e>=r)break e}a=n,n=0;break t}break n}for(;n<a;){const o=n+a>>>1;e<t[o]?a=o:n=o+1}if(i=t[n],r=t[n-1],r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i;for(let a=0;a!==i;++a)t[a]=n[r+a];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class mp extends Aa{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Zl,endingEnd:Zl}}intervalChanged_(e,t,n){const i=this.parameterPositions;let r=e-2,a=e+1,o=i[r],l=i[a];if(o===void 0)switch(this.getSettings_().endingStart){case Ql:r=e,o=2*t-n;break;case ec:r=i.length-2,o=t+i[r]-i[r+1];break;default:r=e,o=n}if(l===void 0)switch(this.getSettings_().endingEnd){case Ql:a=e,l=2*n-t;break;case ec:a=1,l=n+i[1]-i[0];break;default:a=e-1,l=t}const c=(n-t)*.5,h=this.valueSize;this._weightPrev=c/(t-o),this._weightNext=c/(l-n),this._offsetPrev=r*h,this._offsetNext=a*h}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=this._offsetPrev,d=this._offsetNext,u=this._weightPrev,f=this._weightNext,m=(n-t)/(i-t),_=m*m,g=_*m,p=-u*g+2*u*_-u*m,E=(1+u)*g+(-1.5-2*u)*_+(-.5+u)*m+1,b=(-1-f)*g+(1.5+f)*_+.5*m,M=f*g-f*_;for(let U=0;U!==o;++U)r[U]=p*a[h+U]+E*a[c+U]+b*a[l+U]+M*a[d+U];return r}}class gp extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=(n-t)/(i-t),d=1-h;for(let u=0;u!==o;++u)r[u]=a[c+u]*d+a[l+u]*h;return r}}class _p extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}}class ti{constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=Vr(t,this.TimeBufferType),this.values=Vr(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:Vr(e.times,Array),values:Vr(e.values,Array)};const i=e.getInterpolation();i!==e.DefaultInterpolation&&(n.interpolation=i)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new _p(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new gp(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new mp(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case ua:t=this.InterpolantFactoryMethodDiscrete;break;case al:t=this.InterpolantFactoryMethodLinear;break;case La:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){const n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ua;case this.InterpolantFactoryMethodLinear:return al;case this.InterpolantFactoryMethodSmooth:return La}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(e!==1){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){const n=this.times,i=n.length;let r=0,a=i-1;for(;r!==i&&n[r]<e;)++r;for(;a!==-1&&n[a]>t;)--a;if(++a,r!==0||a!==i){r>=a&&(a=Math.max(a,1),r=a-1);const o=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*o,a*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,i=this.values,r=n.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==r;o++){const l=n[o];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(i!==void 0&&fp(i))for(let o=0,l=i.length;o!==l;++o){const c=i[o];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===La,r=e.length-1;let a=1;for(let o=1;o<r;++o){let l=!1;const c=e[o],h=e[o+1];if(c!==h&&(o!==1||c!==e[0]))if(i)l=!0;else{const d=o*n,u=d-n,f=d+n;for(let m=0;m!==n;++m){const _=t[d+m];if(_!==t[u+m]||_!==t[f+m]){l=!0;break}}}if(l){if(o!==a){e[a]=e[o];const d=o*n,u=a*n;for(let f=0;f!==n;++f)t[u+f]=t[d+f]}++a}}if(r>0){e[a]=e[r];for(let o=r*n,l=a*n,c=0;c!==n;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}ti.prototype.ValueTypeName="";ti.prototype.TimeBufferType=Float32Array;ti.prototype.ValueBufferType=Float32Array;ti.prototype.DefaultInterpolation=al;class Os extends ti{constructor(e,t,n){super(e,t,n)}}Os.prototype.ValueTypeName="bool";Os.prototype.ValueBufferType=Array;Os.prototype.DefaultInterpolation=ua;Os.prototype.InterpolantFactoryMethodLinear=void 0;Os.prototype.InterpolantFactoryMethodSmooth=void 0;class Su extends ti{constructor(e,t,n,i){super(e,t,n,i)}}Su.prototype.ValueTypeName="color";class _a extends ti{constructor(e,t,n,i){super(e,t,n,i)}}_a.prototype.ValueTypeName="number";class vp extends Aa{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(n-t)/(i-t);let c=e*o;for(let h=c+o;c!==h;c+=4)zn.slerpFlat(r,0,a,c-o,a,c,l);return r}}class ur extends ti{constructor(e,t,n,i){super(e,t,n,i)}InterpolantFactoryMethodLinear(e){return new vp(this.times,this.values,this.getValueSize(),e)}}ur.prototype.ValueTypeName="quaternion";ur.prototype.InterpolantFactoryMethodSmooth=void 0;class zs extends ti{constructor(e,t,n){super(e,t,n)}}zs.prototype.ValueTypeName="string";zs.prototype.ValueBufferType=Array;zs.prototype.DefaultInterpolation=ua;zs.prototype.InterpolantFactoryMethodLinear=void 0;zs.prototype.InterpolantFactoryMethodSmooth=void 0;class Is extends ti{constructor(e,t,n,i){super(e,t,n,i)}}Is.prototype.ValueTypeName="vector";class Bc{constructor(e="",t=-1,n=[],i=Bd){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Zn(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let a=0,o=n.length;a!==o;++a)t.push(yp(n[a]).scale(i));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,a=n.length;r!==a;++r)t.push(ti.toJSON(n[r]));return i}static CreateFromMorphTargetSequence(e,t,n,i){const r=t.length,a=[];for(let o=0;o<r;o++){let l=[],c=[];l.push((o+r-1)%r,o,(o+1)%r),c.push(0,1,0);const h=pp(l);l=zc(l,1,h),c=zc(c,1,h),!i&&l[0]===0&&(l.push(r),c.push(c[0])),a.push(new _a(".morphTargetInfluences["+t[o].name+"]",l,c).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const i=e;n=i.geometry&&i.geometry.animations||i.animations}for(let i=0;i<n.length;i++)if(n[i].name===t)return n[i];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const i={},r=/^([\w-]*?)([\d]+)$/;for(let o=0,l=e.length;o<l;o++){const c=e[o],h=c.name.match(r);if(h&&h.length>1){const d=h[1];let u=i[d];u||(i[d]=u=[]),u.push(c)}}const a=[];for(const o in i)a.push(this.CreateFromMorphTargetSequence(o,i[o],t,n));return a}static parseAnimation(e,t){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(d,u,f,m,_){if(f.length!==0){const g=[],p=[];Mu(f,g,p,m),g.length!==0&&_.push(new d(u,g,p))}},i=[],r=e.name||"default",a=e.fps||30,o=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let d=0;d<c.length;d++){const u=c[d].keys;if(!(!u||u.length===0))if(u[0].morphTargets){const f={};let m;for(m=0;m<u.length;m++)if(u[m].morphTargets)for(let _=0;_<u[m].morphTargets.length;_++)f[u[m].morphTargets[_]]=-1;for(const _ in f){const g=[],p=[];for(let E=0;E!==u[m].morphTargets.length;++E){const b=u[m];g.push(b.time),p.push(b.morphTarget===_?1:0)}i.push(new _a(".morphTargetInfluence["+_+"]",g,p))}l=f.length*a}else{const f=".bones["+t[d].name+"]";n(Is,f+".position",u,"pos",i),n(ur,f+".quaternion",u,"rot",i),n(Is,f+".scale",u,"scl",i)}}return i.length===0?null:new this(r,l,i,o)}resetDuration(){const e=this.tracks;let t=0;for(let n=0,i=e.length;n!==i;++n){const r=this.tracks[n];t=Math.max(t,r.times[r.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function xp(s){switch(s.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return _a;case"vector":case"vector2":case"vector3":case"vector4":return Is;case"color":return Su;case"quaternion":return ur;case"bool":case"boolean":return Os;case"string":return zs}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+s)}function yp(s){if(s.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=xp(s.type);if(s.times===void 0){const t=[],n=[];Mu(s.keys,t,n,"value"),s.times=t,s.values=n}return e.parse!==void 0?e.parse(s):new e(s.name,s.times,s.values,s.interpolation)}const va={enabled:!1,files:{},add:function(s,e){this.enabled!==!1&&(this.files[s]=e)},get:function(s){if(this.enabled!==!1)return this.files[s]},remove:function(s){delete this.files[s]},clear:function(){this.files={}}};class bu{constructor(e,t,n){const i=this;let r=!1,a=0,o=0,l;const c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(h){o++,r===!1&&i.onStart!==void 0&&i.onStart(h,a,o),r=!0},this.itemEnd=function(h){a++,i.onProgress!==void 0&&i.onProgress(h,a,o),a===o&&(r=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(h){i.onError!==void 0&&i.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,d){return c.push(h,d),this},this.removeHandler=function(h){const d=c.indexOf(h);return d!==-1&&c.splice(d,2),this},this.getHandler=function(h){for(let d=0,u=c.length;d<u;d+=2){const f=c[d],m=c[d+1];if(f.global&&(f.lastIndex=0),f.test(h))return m}return null}}}const zl=new bu;class Qn{constructor(e){this.manager=e!==void 0?e:zl,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise(function(i,r){n.load(e,i,t,r)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}Qn.DEFAULT_MATERIAL_NAME="__DEFAULT";const _i={};class Mp extends Error{constructor(e,t){super(e),this.response=t}}class Bs extends Qn{constructor(e){super(e),this.mimeType="",this.responseType=""}load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=va.get(e);if(r!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(r),this.manager.itemEnd(e)},0),r;if(_i[e]!==void 0){_i[e].push({onLoad:t,onProgress:n,onError:i});return}_i[e]=[],_i[e].push({onLoad:t,onProgress:n,onError:i});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const h=_i[e],d=c.body.getReader(),u=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),f=u?parseInt(u):0,m=f!==0;let _=0;const g=new ReadableStream({start(p){E();function E(){d.read().then(({done:b,value:M})=>{if(b)p.close();else{_+=M.byteLength;const U=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:f});for(let C=0,P=h.length;C<P;C++){const D=h[C];D.onProgress&&D.onProgress(U)}p.enqueue(M),E()}},b=>{p.error(b)})}}});return new Response(g)}else throw new Mp(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(h=>new DOMParser().parseFromString(h,o));case"json":return c.json();default:if(o==="")return c.text();{const d=/charset="?([^;"\s]*)"?/i.exec(o),u=d&&d[1]?d[1].toLowerCase():void 0,f=new TextDecoder(u);return c.arrayBuffer().then(m=>f.decode(m))}}}).then(c=>{va.add(e,c);const h=_i[e];delete _i[e];for(let d=0,u=h.length;d<u;d++){const f=h[d];f.onLoad&&f.onLoad(c)}}).catch(c=>{const h=_i[e];if(h===void 0)throw this.manager.itemError(e),c;delete _i[e];for(let d=0,u=h.length;d<u;d++){const f=h[d];f.onError&&f.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class Sp extends Qn{constructor(e){super(e)}load(e,t,n,i){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,a=va.get(e);if(a!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0),a;const o=or("img");function l(){h(),va.add(e,this),t&&t(this),r.manager.itemEnd(e)}function c(d){h(),i&&i(d),r.manager.itemError(e),r.manager.itemEnd(e)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",c,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(e),o.src=e,o}}class bp extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new mu,o=new Bs(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,function(l){let c;try{c=r.parse(l)}catch(h){if(i!==void 0)i(h);else{console.error(h);return}}c.image!==void 0?a.image=c.image:c.data!==void 0&&(a.image.width=c.width,a.image.height=c.height,a.image.data=c.data),a.wrapS=c.wrapS!==void 0?c.wrapS:Jn,a.wrapT=c.wrapT!==void 0?c.wrapT:Jn,a.magFilter=c.magFilter!==void 0?c.magFilter:Fn,a.minFilter=c.minFilter!==void 0?c.minFilter:Fn,a.anisotropy=c.anisotropy!==void 0?c.anisotropy:1,c.colorSpace!==void 0&&(a.colorSpace=c.colorSpace),c.flipY!==void 0&&(a.flipY=c.flipY),c.format!==void 0&&(a.format=c.format),c.type!==void 0&&(a.type=c.type),c.mipmaps!==void 0&&(a.mipmaps=c.mipmaps,a.minFilter=xi),c.mipmapCount===1&&(a.minFilter=Fn),c.generateMipmaps!==void 0&&(a.generateMipmaps=c.generateMipmaps),a.needsUpdate=!0,t&&t(a,c)},n,i),a}}class Bl extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=new bn,a=new Sp(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(o){r.image=o,r.needsUpdate=!0,t!==void 0&&t(r)},n,i),r}}class dr extends nn{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new _t(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}class Ep extends dr{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.groundColor=new _t(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}const ao=new At,kc=new I,Vc=new I;class kl{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ze(512,512),this.mapType=ci,this.map=null,this.mapPass=null,this.matrix=new At,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Nl,this._frameExtents=new Ze(1,1),this._viewportCount=1,this._viewports=[new Ht(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;kc.setFromMatrixPosition(e.matrixWorld),t.position.copy(kc),Vc.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Vc),t.updateMatrixWorld(),ao.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ao),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(ao)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.autoUpdate=e.autoUpdate,this.needsUpdate=e.needsUpdate,this.normalBias=e.normalBias,this.blurSamples=e.blurSamples,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class Ap extends kl{constructor(){super(new Sn(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(e){const t=this.camera,n=Us*2*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height*this.aspect,r=e.distance||t.far;(n!==t.fov||i!==t.aspect||r!==t.far)&&(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class wp extends dr{constructor(e,t,n=0,i=Math.PI/3,r=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.target=new nn,this.distance=n,this.angle=i,this.penumbra=r,this.decay=a,this.map=null,this.shadow=new Ap}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const Hc=new At,$s=new I,oo=new I;class Tp extends kl{constructor(){super(new Sn(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ze(4,2),this._viewportCount=6,this._viewports=[new Ht(2,1,1,1),new Ht(0,1,1,1),new Ht(3,1,1,1),new Ht(1,1,1,1),new Ht(3,0,1,1),new Ht(1,0,1,1)],this._cubeDirections=[new I(1,0,0),new I(-1,0,0),new I(0,0,1),new I(0,0,-1),new I(0,1,0),new I(0,-1,0)],this._cubeUps=[new I(0,1,0),new I(0,1,0),new I(0,1,0),new I(0,1,0),new I(0,0,1),new I(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,i=this.matrix,r=e.distance||n.far;r!==n.far&&(n.far=r,n.updateProjectionMatrix()),$s.setFromMatrixPosition(e.matrixWorld),n.position.copy($s),oo.copy(n.position),oo.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(oo),n.updateMatrixWorld(),i.makeTranslation(-$s.x,-$s.y,-$s.z),Hc.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Hc)}}class Eu extends dr{constructor(e,t,n=0,i=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Tp}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class wa extends cu{constructor(e=-1,t=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-e,a=n+e,o=i+t,l=i-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,a=r+c*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(r,a,o,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Cp extends kl{constructor(){super(new wa(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Au extends dr{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(nn.DEFAULT_UP),this.updateMatrix(),this.target=new nn,this.shadow=new Cp}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class wu extends dr{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class Vl{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class Rp extends on{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class Lp extends Sn{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class Pp{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Gc(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=Gc();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function Gc(){return performance.now()}class cl extends uu{constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){const t=super.clone(e);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(e){const t=super.toJSON(e);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}const Wc=new At;class Dp{constructor(e,t,n=0,i=1/0){this.ray=new Fs(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new Rl,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}setFromXRController(e){return Wc.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(Wc),this}intersectObject(e,t=!0,n=[]){return hl(e,this,n,t),n.sort(Xc),n}intersectObjects(e,t=!0,n=[]){for(let i=0,r=e.length;i<r;i++)hl(e[i],this,n,t);return n.sort(Xc),n}}function Xc(s,e){return s.distance-e.distance}function hl(s,e,t,n){let i=!0;if(s.layers.test(e.layers)&&s.raycast(e,t)===!1&&(i=!1),i===!0&&n===!0){const r=s.children;for(let a=0,o=r.length;a<o;a++)hl(r[a],e,t,!0)}}class Tu{constructor(e=1,t=0,n=0){this.radius=e,this.phi=t,this.theta=n}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Ot(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(Ot(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}const qc=new I,Hr=new I;class Up{constructor(e=new I,t=new I){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){qc.subVectors(e,this.start),Hr.subVectors(this.end,this.start);const n=Hr.dot(Hr);let r=Hr.dot(qc)/n;return t&&(r=Ot(r,0,1)),r}closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}class Np extends ga{constructor(e=10,t=10,n=4473924,i=8947848){n=new _t(n),i=new _t(i);const r=t/2,a=e/t,o=e/2,l=[],c=[];for(let u=0,f=0,m=-o;u<=t;u++,m+=a){l.push(-o,0,m,o,0,m),l.push(m,0,-o,m,0,o);const _=u===r?n:i;_.toArray(c,f),f+=3,_.toArray(c,f),f+=3,_.toArray(c,f),f+=3,_.toArray(c,f),f+=3}const h=new on;h.setAttribute("position",new Nt(l,3)),h.setAttribute("color",new Nt(c,3));const d=new Si({vertexColors:!0,toneMapped:!1});super(h,d),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class Ip extends ns{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(e){if(e===void 0){console.warn("THREE.Controls: connect() now requires an element.");return}this.domElement!==null&&this.disconnect(),this.domElement=e}disconnect(){}dispose(){}update(){}}function jc(s,e,t,n){const i=Fp(n);switch(t){case Kh:return s*e;case Qh:return s*e/i.components*i.byteLength;case El:return s*e/i.components*i.byteLength;case eu:return s*e*2/i.components*i.byteLength;case Al:return s*e*2/i.components*i.byteLength;case Zh:return s*e*3/i.components*i.byteLength;case Wn:return s*e*4/i.components*i.byteLength;case wl:return s*e*4/i.components*i.byteLength;case ta:case na:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case ia:case sa:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Io:case Oo:return Math.max(s,16)*Math.max(e,8)/4;case No:case Fo:return Math.max(s,8)*Math.max(e,8)/2;case zo:case Bo:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case ko:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Vo:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case Ho:return Math.floor((s+4)/5)*Math.floor((e+3)/4)*16;case Go:return Math.floor((s+4)/5)*Math.floor((e+4)/5)*16;case Wo:return Math.floor((s+5)/6)*Math.floor((e+4)/5)*16;case Xo:return Math.floor((s+5)/6)*Math.floor((e+5)/6)*16;case qo:return Math.floor((s+7)/8)*Math.floor((e+4)/5)*16;case jo:return Math.floor((s+7)/8)*Math.floor((e+5)/6)*16;case Yo:return Math.floor((s+7)/8)*Math.floor((e+7)/8)*16;case $o:return Math.floor((s+9)/10)*Math.floor((e+4)/5)*16;case Jo:return Math.floor((s+9)/10)*Math.floor((e+5)/6)*16;case Ko:return Math.floor((s+9)/10)*Math.floor((e+7)/8)*16;case Zo:return Math.floor((s+9)/10)*Math.floor((e+9)/10)*16;case Qo:return Math.floor((s+11)/12)*Math.floor((e+9)/10)*16;case el:return Math.floor((s+11)/12)*Math.floor((e+11)/12)*16;case ra:case tl:case nl:return Math.ceil(s/4)*Math.ceil(e/4)*16;case tu:case il:return Math.ceil(s/4)*Math.ceil(e/4)*8;case sl:case rl:return Math.ceil(s/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function Fp(s){switch(s){case ci:case Yh:return{byteLength:1,components:1};case ir:case $h:case cr:return{byteLength:2,components:1};case Sl:case bl:return{byteLength:2,components:4};case es:case Ml:case oi:return{byteLength:4,components:1};case Jh:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${s}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:yl}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=yl);/**
|
|
45
45
|
* @license
|
|
46
46
|
* Copyright 2010-2025 Three.js Authors
|
|
47
47
|
* SPDX-License-Identifier: MIT
|
|
@@ -3571,7 +3571,7 @@ void main() {
|
|
|
3571
3571
|
#include <tonemapping_fragment>
|
|
3572
3572
|
#include <colorspace_fragment>
|
|
3573
3573
|
#include <fog_fragment>
|
|
3574
|
-
}`,zt={alphahash_fragment:zp,alphahash_pars_fragment:Bp,alphamap_fragment:kp,alphamap_pars_fragment:Vp,alphatest_fragment:Hp,alphatest_pars_fragment:Gp,aomap_fragment:Wp,aomap_pars_fragment:Xp,batching_pars_vertex:qp,batching_vertex:jp,begin_vertex:Yp,beginnormal_vertex:$p,bsdfs:Jp,iridescence_fragment:Kp,bumpmap_pars_fragment:Zp,clipping_planes_fragment:Qp,clipping_planes_pars_fragment:e0,clipping_planes_pars_vertex:t0,clipping_planes_vertex:n0,color_fragment:i0,color_pars_fragment:s0,color_pars_vertex:r0,color_vertex:a0,common:o0,cube_uv_reflection_fragment:l0,defaultnormal_vertex:c0,displacementmap_pars_vertex:h0,displacementmap_vertex:u0,emissivemap_fragment:d0,emissivemap_pars_fragment:f0,colorspace_fragment:p0,colorspace_pars_fragment:m0,envmap_fragment:g0,envmap_common_pars_fragment:_0,envmap_pars_fragment:v0,envmap_pars_vertex:x0,envmap_physical_pars_fragment:L0,envmap_vertex:y0,fog_vertex:M0,fog_pars_vertex:S0,fog_fragment:b0,fog_pars_fragment:E0,gradientmap_pars_fragment:A0,lightmap_pars_fragment:w0,lights_lambert_fragment:T0,lights_lambert_pars_fragment:C0,lights_pars_begin:R0,lights_toon_fragment:P0,lights_toon_pars_fragment:D0,lights_phong_fragment:U0,lights_phong_pars_fragment:N0,lights_physical_fragment:I0,lights_physical_pars_fragment:F0,lights_fragment_begin:O0,lights_fragment_maps:z0,lights_fragment_end:B0,logdepthbuf_fragment:k0,logdepthbuf_pars_fragment:V0,logdepthbuf_pars_vertex:H0,logdepthbuf_vertex:G0,map_fragment:W0,map_pars_fragment:X0,map_particle_fragment:q0,map_particle_pars_fragment:j0,metalnessmap_fragment:Y0,metalnessmap_pars_fragment:$0,morphinstance_vertex:J0,morphcolor_vertex:K0,morphnormal_vertex:Z0,morphtarget_pars_vertex:Q0,morphtarget_vertex:em,normal_fragment_begin:tm,normal_fragment_maps:nm,normal_pars_fragment:im,normal_pars_vertex:sm,normal_vertex:rm,normalmap_pars_fragment:am,clearcoat_normal_fragment_begin:om,clearcoat_normal_fragment_maps:lm,clearcoat_pars_fragment:cm,iridescence_pars_fragment:hm,opaque_fragment:um,packing:dm,premultiplied_alpha_fragment:fm,project_vertex:pm,dithering_fragment:mm,dithering_pars_fragment:gm,roughnessmap_fragment:_m,roughnessmap_pars_fragment:vm,shadowmap_pars_fragment:xm,shadowmap_pars_vertex:ym,shadowmap_vertex:Mm,shadowmask_pars_fragment:Sm,skinbase_vertex:bm,skinning_pars_vertex:Em,skinning_vertex:Am,skinnormal_vertex:wm,specularmap_fragment:Tm,specularmap_pars_fragment:Cm,tonemapping_fragment:Rm,tonemapping_pars_fragment:Lm,transmission_fragment:Pm,transmission_pars_fragment:Dm,uv_pars_fragment:Um,uv_pars_vertex:Nm,uv_vertex:Im,worldpos_vertex:Fm,background_vert:Om,background_frag:zm,backgroundCube_vert:Bm,backgroundCube_frag:km,cube_vert:Vm,cube_frag:Hm,depth_vert:Gm,depth_frag:Wm,distanceRGBA_vert:Xm,distanceRGBA_frag:qm,equirect_vert:jm,equirect_frag:Ym,linedashed_vert:$m,linedashed_frag:Jm,meshbasic_vert:Km,meshbasic_frag:Zm,meshlambert_vert:Qm,meshlambert_frag:e1,meshmatcap_vert:t1,meshmatcap_frag:n1,meshnormal_vert:i1,meshnormal_frag:s1,meshphong_vert:r1,meshphong_frag:a1,meshphysical_vert:o1,meshphysical_frag:l1,meshtoon_vert:c1,meshtoon_frag:h1,points_vert:u1,points_frag:d1,shadow_vert:f1,shadow_frag:p1,sprite_vert:m1,sprite_frag:g1},Ve={common:{diffuse:{value:new gt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ft},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ft}},envmap:{envMap:{value:null},envMapRotation:{value:new Ft},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ft}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ft}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ft},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ft},normalScale:{value:new Ke(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ft},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ft}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ft}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ft}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new gt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new gt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0},uvTransform:{value:new Ft}},sprite:{diffuse:{value:new gt(16777215)},opacity:{value:1},center:{value:new Ke(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ft},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0}}},Un={basic:{uniforms:Cn([Ve.common,Ve.specularmap,Ve.envmap,Ve.aomap,Ve.lightmap,Ve.fog]),vertexShader:zt.meshbasic_vert,fragmentShader:zt.meshbasic_frag},lambert:{uniforms:Cn([Ve.common,Ve.specularmap,Ve.envmap,Ve.aomap,Ve.lightmap,Ve.emissivemap,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,Ve.fog,Ve.lights,{emissive:{value:new gt(0)}}]),vertexShader:zt.meshlambert_vert,fragmentShader:zt.meshlambert_frag},phong:{uniforms:Cn([Ve.common,Ve.specularmap,Ve.envmap,Ve.aomap,Ve.lightmap,Ve.emissivemap,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,Ve.fog,Ve.lights,{emissive:{value:new gt(0)},specular:{value:new gt(1118481)},shininess:{value:30}}]),vertexShader:zt.meshphong_vert,fragmentShader:zt.meshphong_frag},standard:{uniforms:Cn([Ve.common,Ve.envmap,Ve.aomap,Ve.lightmap,Ve.emissivemap,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,Ve.roughnessmap,Ve.metalnessmap,Ve.fog,Ve.lights,{emissive:{value:new gt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:zt.meshphysical_vert,fragmentShader:zt.meshphysical_frag},toon:{uniforms:Cn([Ve.common,Ve.aomap,Ve.lightmap,Ve.emissivemap,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,Ve.gradientmap,Ve.fog,Ve.lights,{emissive:{value:new gt(0)}}]),vertexShader:zt.meshtoon_vert,fragmentShader:zt.meshtoon_frag},matcap:{uniforms:Cn([Ve.common,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,Ve.fog,{matcap:{value:null}}]),vertexShader:zt.meshmatcap_vert,fragmentShader:zt.meshmatcap_frag},points:{uniforms:Cn([Ve.points,Ve.fog]),vertexShader:zt.points_vert,fragmentShader:zt.points_frag},dashed:{uniforms:Cn([Ve.common,Ve.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:zt.linedashed_vert,fragmentShader:zt.linedashed_frag},depth:{uniforms:Cn([Ve.common,Ve.displacementmap]),vertexShader:zt.depth_vert,fragmentShader:zt.depth_frag},normal:{uniforms:Cn([Ve.common,Ve.bumpmap,Ve.normalmap,Ve.displacementmap,{opacity:{value:1}}]),vertexShader:zt.meshnormal_vert,fragmentShader:zt.meshnormal_frag},sprite:{uniforms:Cn([Ve.sprite,Ve.fog]),vertexShader:zt.sprite_vert,fragmentShader:zt.sprite_frag},background:{uniforms:{uvTransform:{value:new Ft},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:zt.background_vert,fragmentShader:zt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ft}},vertexShader:zt.backgroundCube_vert,fragmentShader:zt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:zt.cube_vert,fragmentShader:zt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:zt.equirect_vert,fragmentShader:zt.equirect_frag},distanceRGBA:{uniforms:Cn([Ve.common,Ve.displacementmap,{referencePosition:{value:new I},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:zt.distanceRGBA_vert,fragmentShader:zt.distanceRGBA_frag},shadow:{uniforms:Cn([Ve.lights,Ve.fog,{color:{value:new gt(0)},opacity:{value:1}}]),vertexShader:zt.shadow_vert,fragmentShader:zt.shadow_frag}};Un.physical={uniforms:Cn([Un.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ft},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ft},clearcoatNormalScale:{value:new Ke(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ft},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ft},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ft},sheen:{value:0},sheenColor:{value:new gt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ft},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ft},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ft},transmissionSamplerSize:{value:new Ke},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ft},attenuationDistance:{value:0},attenuationColor:{value:new gt(0)},specularColor:{value:new gt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ft},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ft},anisotropyVector:{value:new Ke},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ft}}]),vertexShader:zt.meshphysical_vert,fragmentShader:zt.meshphysical_frag};const Gr={r:0,b:0,g:0},Xi=new Ln,_1=new Et;function v1(s,e,t,n,i,r,a){const o=new gt(0);let l=r===!0?0:1,c,h,d=null,u=0,f=null;function m(b){let M=b.isScene===!0?b.background:null;return M&&M.isTexture&&(M=(b.backgroundBlurriness>0?t:e).get(M)),M}function _(b){let M=!1;const U=m(b);U===null?p(o,l):U&&U.isColor&&(p(U,1),M=!0);const C=s.xr.getEnvironmentBlendMode();C==="additive"?n.buffers.color.setClear(0,0,0,1,a):C==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(s.autoClear||M)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil))}function g(b,M){const U=m(M);U&&(U.isCubeTexture||U.mapping===ya)?(h===void 0&&(h=new $t(new ki(1,1,1),new bi({name:"BackgroundCubeMaterial",uniforms:Ns(Un.backgroundCube.uniforms),vertexShader:Un.backgroundCube.vertexShader,fragmentShader:Un.backgroundCube.fragmentShader,side:Rn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(C,P,D){this.matrixWorld.copyPosition(D.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),Xi.copy(M.backgroundRotation),Xi.x*=-1,Xi.y*=-1,Xi.z*=-1,U.isCubeTexture&&U.isRenderTargetTexture===!1&&(Xi.y*=-1,Xi.z*=-1),h.material.uniforms.envMap.value=U,h.material.uniforms.flipEnvMap.value=U.isCubeTexture&&U.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(_1.makeRotationFromEuler(Xi)),h.material.toneMapped=Vt.getTransfer(U.colorSpace)!==tn,(d!==U||u!==U.version||f!==s.toneMapping)&&(h.material.needsUpdate=!0,d=U,u=U.version,f=s.toneMapping),h.layers.enableAll(),b.unshift(h,h.geometry,h.material,0,0,null)):U&&U.isTexture&&(c===void 0&&(c=new $t(new hr(2,2),new bi({name:"BackgroundMaterial",uniforms:Ns(Un.background.uniforms),vertexShader:Un.background.vertexShader,fragmentShader:Un.background.fragmentShader,side:Xn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(c)),c.material.uniforms.t2D.value=U,c.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,c.material.toneMapped=Vt.getTransfer(U.colorSpace)!==tn,U.matrixAutoUpdate===!0&&U.updateMatrix(),c.material.uniforms.uvTransform.value.copy(U.matrix),(d!==U||u!==U.version||f!==s.toneMapping)&&(c.material.needsUpdate=!0,d=U,u=U.version,f=s.toneMapping),c.layers.enableAll(),b.unshift(c,c.geometry,c.material,0,0,null))}function p(b,M){b.getRGB(Gr,lu(s)),n.buffers.color.setClear(Gr.r,Gr.g,Gr.b,M,a)}function E(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(b,M=1){o.set(b),l=M,p(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(b){l=b,p(o,l)},render:_,addToRenderList:g,dispose:E}}function x1(s,e){const t=s.getParameter(s.MAX_VERTEX_ATTRIBS),n={},i=u(null);let r=i,a=!1;function o(y,N,W,X,Q){let ne=!1;const G=d(X,W,N);r!==G&&(r=G,c(r.object)),ne=f(y,X,W,Q),ne&&m(y,X,W,Q),Q!==null&&e.update(Q,s.ELEMENT_ARRAY_BUFFER),(ne||a)&&(a=!1,M(y,N,W,X),Q!==null&&s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,e.get(Q).buffer))}function l(){return s.createVertexArray()}function c(y){return s.bindVertexArray(y)}function h(y){return s.deleteVertexArray(y)}function d(y,N,W){const X=W.wireframe===!0;let Q=n[y.id];Q===void 0&&(Q={},n[y.id]=Q);let ne=Q[N.id];ne===void 0&&(ne={},Q[N.id]=ne);let G=ne[X];return G===void 0&&(G=u(l()),ne[X]=G),G}function u(y){const N=[],W=[],X=[];for(let Q=0;Q<t;Q++)N[Q]=0,W[Q]=0,X[Q]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:N,enabledAttributes:W,attributeDivisors:X,object:y,attributes:{},index:null}}function f(y,N,W,X){const Q=r.attributes,ne=N.attributes;let G=0;const re=W.getAttributes();for(const K in re)if(re[K].location>=0){const be=Q[K];let Ce=ne[K];if(Ce===void 0&&(K==="instanceMatrix"&&y.instanceMatrix&&(Ce=y.instanceMatrix),K==="instanceColor"&&y.instanceColor&&(Ce=y.instanceColor)),be===void 0||be.attribute!==Ce||Ce&&be.data!==Ce.data)return!0;G++}return r.attributesNum!==G||r.index!==X}function m(y,N,W,X){const Q={},ne=N.attributes;let G=0;const re=W.getAttributes();for(const K in re)if(re[K].location>=0){let be=ne[K];be===void 0&&(K==="instanceMatrix"&&y.instanceMatrix&&(be=y.instanceMatrix),K==="instanceColor"&&y.instanceColor&&(be=y.instanceColor));const Ce={};Ce.attribute=be,be&&be.data&&(Ce.data=be.data),Q[K]=Ce,G++}r.attributes=Q,r.attributesNum=G,r.index=X}function _(){const y=r.newAttributes;for(let N=0,W=y.length;N<W;N++)y[N]=0}function g(y){p(y,0)}function p(y,N){const W=r.newAttributes,X=r.enabledAttributes,Q=r.attributeDivisors;W[y]=1,X[y]===0&&(s.enableVertexAttribArray(y),X[y]=1),Q[y]!==N&&(s.vertexAttribDivisor(y,N),Q[y]=N)}function E(){const y=r.newAttributes,N=r.enabledAttributes;for(let W=0,X=N.length;W<X;W++)N[W]!==y[W]&&(s.disableVertexAttribArray(W),N[W]=0)}function b(y,N,W,X,Q,ne,G){G===!0?s.vertexAttribIPointer(y,N,W,Q,ne):s.vertexAttribPointer(y,N,W,X,Q,ne)}function M(y,N,W,X){_();const Q=X.attributes,ne=W.getAttributes(),G=N.defaultAttributeValues;for(const re in ne){const K=ne[re];if(K.location>=0){let ge=Q[re];if(ge===void 0&&(re==="instanceMatrix"&&y.instanceMatrix&&(ge=y.instanceMatrix),re==="instanceColor"&&y.instanceColor&&(ge=y.instanceColor)),ge!==void 0){const be=ge.normalized,Ce=ge.itemSize,Ie=e.get(ge);if(Ie===void 0)continue;const He=Ie.buffer,J=Ie.type,ae=Ie.bytesPerElement,le=J===s.INT||J===s.UNSIGNED_INT||ge.gpuType===Ml;if(ge.isInterleavedBufferAttribute){const ce=ge.data,Le=ce.stride,ve=ge.offset;if(ce.isInstancedInterleavedBuffer){for(let Ae=0;Ae<K.locationSize;Ae++)p(K.location+Ae,ce.meshPerAttribute);y.isInstancedMesh!==!0&&X._maxInstanceCount===void 0&&(X._maxInstanceCount=ce.meshPerAttribute*ce.count)}else for(let Ae=0;Ae<K.locationSize;Ae++)g(K.location+Ae);s.bindBuffer(s.ARRAY_BUFFER,He);for(let Ae=0;Ae<K.locationSize;Ae++)b(K.location+Ae,Ce/K.locationSize,J,be,Le*ae,(ve+Ce/K.locationSize*Ae)*ae,le)}else{if(ge.isInstancedBufferAttribute){for(let ce=0;ce<K.locationSize;ce++)p(K.location+ce,ge.meshPerAttribute);y.isInstancedMesh!==!0&&X._maxInstanceCount===void 0&&(X._maxInstanceCount=ge.meshPerAttribute*ge.count)}else for(let ce=0;ce<K.locationSize;ce++)g(K.location+ce);s.bindBuffer(s.ARRAY_BUFFER,He);for(let ce=0;ce<K.locationSize;ce++)b(K.location+ce,Ce/K.locationSize,J,be,Ce*ae,Ce/K.locationSize*ce*ae,le)}}else if(G!==void 0){const be=G[re];if(be!==void 0)switch(be.length){case 2:s.vertexAttrib2fv(K.location,be);break;case 3:s.vertexAttrib3fv(K.location,be);break;case 4:s.vertexAttrib4fv(K.location,be);break;default:s.vertexAttrib1fv(K.location,be)}}}}E()}function U(){D();for(const y in n){const N=n[y];for(const W in N){const X=N[W];for(const Q in X)h(X[Q].object),delete X[Q];delete N[W]}delete n[y]}}function C(y){if(n[y.id]===void 0)return;const N=n[y.id];for(const W in N){const X=N[W];for(const Q in X)h(X[Q].object),delete X[Q];delete N[W]}delete n[y.id]}function P(y){for(const N in n){const W=n[N];if(W[y.id]===void 0)continue;const X=W[y.id];for(const Q in X)h(X[Q].object),delete X[Q];delete W[y.id]}}function D(){S(),a=!0,r!==i&&(r=i,c(r.object))}function S(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:o,reset:D,resetDefaultState:S,dispose:U,releaseStatesOfGeometry:C,releaseStatesOfProgram:P,initAttributes:_,enableAttribute:g,disableUnusedAttributes:E}}function y1(s,e,t){let n;function i(c){n=c}function r(c,h){s.drawArrays(n,c,h),t.update(h,n,1)}function a(c,h,d){d!==0&&(s.drawArraysInstanced(n,c,h,d),t.update(h,n,d))}function o(c,h,d){if(d===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(n,c,0,h,0,d);let f=0;for(let m=0;m<d;m++)f+=h[m];t.update(f,n,1)}function l(c,h,d,u){if(d===0)return;const f=e.get("WEBGL_multi_draw");if(f===null)for(let m=0;m<c.length;m++)a(c[m],h[m],u[m]);else{f.multiDrawArraysInstancedWEBGL(n,c,0,h,0,u,0,d);let m=0;for(let _=0;_<d;_++)m+=h[_]*u[_];t.update(m,n,1)}}this.setMode=i,this.render=r,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function M1(s,e,t,n){let i;function r(){if(i!==void 0)return i;if(e.has("EXT_texture_filter_anisotropic")===!0){const P=e.get("EXT_texture_filter_anisotropic");i=s.getParameter(P.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i}function a(P){return!(P!==Wn&&n.convert(P)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(P){const D=P===cr&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(P!==ci&&n.convert(P)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_TYPE)&&P!==oi&&!D)}function l(P){if(P==="highp"){if(s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision>0)return"highp";P="mediump"}return P==="mediump"&&s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const d=t.logarithmicDepthBuffer===!0,u=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),f=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),m=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=s.getParameter(s.MAX_TEXTURE_SIZE),g=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),p=s.getParameter(s.MAX_VERTEX_ATTRIBS),E=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),b=s.getParameter(s.MAX_VARYING_VECTORS),M=s.getParameter(s.MAX_FRAGMENT_UNIFORM_VECTORS),U=m>0,C=s.getParameter(s.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reverseDepthBuffer:u,maxTextures:f,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:g,maxAttributes:p,maxVertexUniforms:E,maxVaryings:b,maxFragmentUniforms:M,vertexTextures:U,maxSamples:C}}function S1(s){const e=this;let t=null,n=0,i=!1,r=!1;const a=new Ni,o=new Ft,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,u){const f=d.length!==0||u||n!==0||i;return i=u,n=d.length,f},this.beginShadows=function(){r=!0,h(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(d,u){t=h(d,u,0)},this.setState=function(d,u,f){const m=d.clippingPlanes,_=d.clipIntersection,g=d.clipShadows,p=s.get(d);if(!i||m===null||m.length===0||r&&!g)r?h(null):c();else{const E=r?0:n,b=E*4;let M=p.clippingState||null;l.value=M,M=h(m,u,b,f);for(let U=0;U!==b;++U)M[U]=t[U];p.clippingState=M,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=E}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(d,u,f,m){const _=d!==null?d.length:0;let g=null;if(_!==0){if(g=l.value,m!==!0||g===null){const p=f+_*4,E=u.matrixWorldInverse;o.getNormalMatrix(E),(g===null||g.length<p)&&(g=new Float32Array(p));for(let b=0,M=f;b!==_;++b,M+=4)a.copy(d[b]).applyMatrix4(E,o),a.normal.toArray(g,M),g[M+3]=a.constant}l.value=g,l.needsUpdate=!0}return e.numPlanes=_,e.numIntersection=0,g}}function b1(s){let e=new WeakMap;function t(a,o){return o===Po?a.mapping=Ls:o===Do&&(a.mapping=Ps),a}function n(a){if(a&&a.isTexture){const o=a.mapping;if(o===Po||o===Do)if(e.has(a)){const l=e.get(a).texture;return t(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const c=new Bf(l.height);return c.fromEquirectangularTexture(s,a),e.set(a,c),a.addEventListener("dispose",i),t(c.texture,a.mapping)}else return null}}return a}function i(a){const o=a.target;o.removeEventListener("dispose",i);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function r(){e=new WeakMap}return{get:n,dispose:r}}const Es=4,Yc=[.125,.215,.35,.446,.526,.582],Zi=20,lo=new wa,$c=new gt;let co=null,ho=0,uo=0,fo=!1;const $i=(1+Math.sqrt(5))/2,Ms=1/$i,Jc=[new I(-$i,Ms,0),new I($i,Ms,0),new I(-Ms,0,$i),new I(Ms,0,$i),new I(0,$i,-Ms),new I(0,$i,Ms),new I(-1,1,-1),new I(1,1,-1),new I(-1,1,1),new I(1,1,1)],E1=new I;class Kc{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100,r={}){const{size:a=256,position:o=E1}=r;co=this._renderer.getRenderTarget(),ho=this._renderer.getActiveCubeFace(),uo=this._renderer.getActiveMipmapLevel(),fo=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,i,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=eh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Qc(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(co,ho,uo),this._renderer.xr.enabled=fo,e.scissorTest=!1,Wr(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Ls||e.mapping===Ps?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),co=this._renderer.getRenderTarget(),ho=this._renderer.getActiveCubeFace(),uo=this._renderer.getActiveMipmapLevel(),fo=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:Fn,minFilter:Fn,generateMipmaps:!1,type:cr,format:Wn,colorSpace:Ds,depthBuffer:!1},i=Zc(e,t,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Zc(e,t,n);const{_lodMax:r}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=A1(r)),this._blurMaterial=w1(r,e,t)}return i}_compileMaterial(e){const t=new $t(this._lodPlanes[0],e);this._renderer.compile(t,lo)}_sceneToCubeUV(e,t,n,i,r){const l=new Sn(90,1,t,n),c=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],d=this._renderer,u=d.autoClear,f=d.toneMapping;d.getClearColor($c),d.toneMapping=zi,d.autoClear=!1;const m=new Bi({name:"PMREM.Background",side:Rn,depthWrite:!1,depthTest:!1}),_=new $t(new ki,m);let g=!1;const p=e.background;p?p.isColor&&(m.color.copy(p),e.background=null,g=!0):(m.color.copy($c),g=!0);for(let E=0;E<6;E++){const b=E%3;b===0?(l.up.set(0,c[E],0),l.position.set(r.x,r.y,r.z),l.lookAt(r.x+h[E],r.y,r.z)):b===1?(l.up.set(0,0,c[E]),l.position.set(r.x,r.y,r.z),l.lookAt(r.x,r.y+h[E],r.z)):(l.up.set(0,c[E],0),l.position.set(r.x,r.y,r.z),l.lookAt(r.x,r.y,r.z+h[E]));const M=this._cubeSize;Wr(i,b*M,E>2?M:0,M,M),d.setRenderTarget(i),g&&d.render(_,l),d.render(e,l)}_.geometry.dispose(),_.material.dispose(),d.toneMapping=f,d.autoClear=u,e.background=p}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===Ls||e.mapping===Ps;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=eh()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Qc());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new $t(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=e;const l=this._cubeSize;Wr(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,lo)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const i=this._lodPlanes.length;for(let r=1;r<i;r++){const a=Math.sqrt(this._sigmas[r]*this._sigmas[r]-this._sigmas[r-1]*this._sigmas[r-1]),o=Jc[(i-r-1)%Jc.length];this._blur(e,r-1,r,a,o)}t.autoClear=n}_blur(e,t,n,i,r){const a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}_halfBlur(e,t,n,i,r,a,o){const l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,d=new $t(this._lodPlanes[i],c),u=c.uniforms,f=this._sizeLods[n]-1,m=isFinite(r)?Math.PI/(2*f):2*Math.PI/(2*Zi-1),_=r/m,g=isFinite(r)?1+Math.floor(h*_):Zi;g>Zi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Zi}`);const p=[];let E=0;for(let P=0;P<Zi;++P){const D=P/_,S=Math.exp(-D*D/2);p.push(S),P===0?E+=S:P<g&&(E+=2*S)}for(let P=0;P<p.length;P++)p[P]=p[P]/E;u.envMap.value=e.texture,u.samples.value=g,u.weights.value=p,u.latitudinal.value=a==="latitudinal",o&&(u.poleAxis.value=o);const{_lodMax:b}=this;u.dTheta.value=m,u.mipInt.value=b-n;const M=this._sizeLods[i],U=3*M*(i>b-Es?i-b+Es:0),C=4*(this._cubeSize-M);Wr(t,U,C,3*M,2*M),l.setRenderTarget(t),l.render(d,lo)}}function A1(s){const e=[],t=[],n=[];let i=s;const r=s-Es+1+Yc.length;for(let a=0;a<r;a++){const o=Math.pow(2,i);t.push(o);let l=1/o;a>s-Es?l=Yc[a-s+Es-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,d=1+c,u=[h,h,d,h,d,d,h,h,d,d,h,d],f=6,m=6,_=3,g=2,p=1,E=new Float32Array(_*m*f),b=new Float32Array(g*m*f),M=new Float32Array(p*m*f);for(let C=0;C<f;C++){const P=C%3*2/3-1,D=C>2?0:-1,S=[P,D,0,P+2/3,D,0,P+2/3,D+1,0,P,D,0,P+2/3,D+1,0,P,D+1,0];E.set(S,_*m*C),b.set(u,g*m*C);const y=[C,C,C,C,C,C];M.set(y,p*m*C)}const U=new an;U.setAttribute("position",new dn(E,_)),U.setAttribute("uv",new dn(b,g)),U.setAttribute("faceIndex",new dn(M,p)),e.push(U),i>Es&&i--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Zc(s,e,t){const n=new ts(s,e,t);return n.texture.mapping=ya,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Wr(s,e,t,n,i){s.viewport.set(e,t,n,i),s.scissor.set(e,t,n,i)}function w1(s,e,t){const n=new Float32Array(Zi),i=new I(0,1,0);return new bi({name:"SphericalGaussianBlur",defines:{n:Zi,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:Hl(),fragmentShader:`
|
|
3574
|
+
}`,Bt={alphahash_fragment:zp,alphahash_pars_fragment:Bp,alphamap_fragment:kp,alphamap_pars_fragment:Vp,alphatest_fragment:Hp,alphatest_pars_fragment:Gp,aomap_fragment:Wp,aomap_pars_fragment:Xp,batching_pars_vertex:qp,batching_vertex:jp,begin_vertex:Yp,beginnormal_vertex:$p,bsdfs:Jp,iridescence_fragment:Kp,bumpmap_pars_fragment:Zp,clipping_planes_fragment:Qp,clipping_planes_pars_fragment:e0,clipping_planes_pars_vertex:t0,clipping_planes_vertex:n0,color_fragment:i0,color_pars_fragment:s0,color_pars_vertex:r0,color_vertex:a0,common:o0,cube_uv_reflection_fragment:l0,defaultnormal_vertex:c0,displacementmap_pars_vertex:h0,displacementmap_vertex:u0,emissivemap_fragment:d0,emissivemap_pars_fragment:f0,colorspace_fragment:p0,colorspace_pars_fragment:m0,envmap_fragment:g0,envmap_common_pars_fragment:_0,envmap_pars_fragment:v0,envmap_pars_vertex:x0,envmap_physical_pars_fragment:L0,envmap_vertex:y0,fog_vertex:M0,fog_pars_vertex:S0,fog_fragment:b0,fog_pars_fragment:E0,gradientmap_pars_fragment:A0,lightmap_pars_fragment:w0,lights_lambert_fragment:T0,lights_lambert_pars_fragment:C0,lights_pars_begin:R0,lights_toon_fragment:P0,lights_toon_pars_fragment:D0,lights_phong_fragment:U0,lights_phong_pars_fragment:N0,lights_physical_fragment:I0,lights_physical_pars_fragment:F0,lights_fragment_begin:O0,lights_fragment_maps:z0,lights_fragment_end:B0,logdepthbuf_fragment:k0,logdepthbuf_pars_fragment:V0,logdepthbuf_pars_vertex:H0,logdepthbuf_vertex:G0,map_fragment:W0,map_pars_fragment:X0,map_particle_fragment:q0,map_particle_pars_fragment:j0,metalnessmap_fragment:Y0,metalnessmap_pars_fragment:$0,morphinstance_vertex:J0,morphcolor_vertex:K0,morphnormal_vertex:Z0,morphtarget_pars_vertex:Q0,morphtarget_vertex:em,normal_fragment_begin:tm,normal_fragment_maps:nm,normal_pars_fragment:im,normal_pars_vertex:sm,normal_vertex:rm,normalmap_pars_fragment:am,clearcoat_normal_fragment_begin:om,clearcoat_normal_fragment_maps:lm,clearcoat_pars_fragment:cm,iridescence_pars_fragment:hm,opaque_fragment:um,packing:dm,premultiplied_alpha_fragment:fm,project_vertex:pm,dithering_fragment:mm,dithering_pars_fragment:gm,roughnessmap_fragment:_m,roughnessmap_pars_fragment:vm,shadowmap_pars_fragment:xm,shadowmap_pars_vertex:ym,shadowmap_vertex:Mm,shadowmask_pars_fragment:Sm,skinbase_vertex:bm,skinning_pars_vertex:Em,skinning_vertex:Am,skinnormal_vertex:wm,specularmap_fragment:Tm,specularmap_pars_fragment:Cm,tonemapping_fragment:Rm,tonemapping_pars_fragment:Lm,transmission_fragment:Pm,transmission_pars_fragment:Dm,uv_pars_fragment:Um,uv_pars_vertex:Nm,uv_vertex:Im,worldpos_vertex:Fm,background_vert:Om,background_frag:zm,backgroundCube_vert:Bm,backgroundCube_frag:km,cube_vert:Vm,cube_frag:Hm,depth_vert:Gm,depth_frag:Wm,distanceRGBA_vert:Xm,distanceRGBA_frag:qm,equirect_vert:jm,equirect_frag:Ym,linedashed_vert:$m,linedashed_frag:Jm,meshbasic_vert:Km,meshbasic_frag:Zm,meshlambert_vert:Qm,meshlambert_frag:e1,meshmatcap_vert:t1,meshmatcap_frag:n1,meshnormal_vert:i1,meshnormal_frag:s1,meshphong_vert:r1,meshphong_frag:a1,meshphysical_vert:o1,meshphysical_frag:l1,meshtoon_vert:c1,meshtoon_frag:h1,points_vert:u1,points_frag:d1,shadow_vert:f1,shadow_frag:p1,sprite_vert:m1,sprite_frag:g1},ke={common:{diffuse:{value:new _t(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ft},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ft}},envmap:{envMap:{value:null},envMapRotation:{value:new Ft},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ft}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ft}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ft},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ft},normalScale:{value:new Ze(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ft},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ft}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ft}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ft}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new _t(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new _t(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0},uvTransform:{value:new Ft}},sprite:{diffuse:{value:new _t(16777215)},opacity:{value:1},center:{value:new Ze(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ft},alphaMap:{value:null},alphaMapTransform:{value:new Ft},alphaTest:{value:0}}},Un={basic:{uniforms:Cn([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.fog]),vertexShader:Bt.meshbasic_vert,fragmentShader:Bt.meshbasic_frag},lambert:{uniforms:Cn([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,ke.lights,{emissive:{value:new _t(0)}}]),vertexShader:Bt.meshlambert_vert,fragmentShader:Bt.meshlambert_frag},phong:{uniforms:Cn([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,ke.lights,{emissive:{value:new _t(0)},specular:{value:new _t(1118481)},shininess:{value:30}}]),vertexShader:Bt.meshphong_vert,fragmentShader:Bt.meshphong_frag},standard:{uniforms:Cn([ke.common,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.roughnessmap,ke.metalnessmap,ke.fog,ke.lights,{emissive:{value:new _t(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag},toon:{uniforms:Cn([ke.common,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.gradientmap,ke.fog,ke.lights,{emissive:{value:new _t(0)}}]),vertexShader:Bt.meshtoon_vert,fragmentShader:Bt.meshtoon_frag},matcap:{uniforms:Cn([ke.common,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,{matcap:{value:null}}]),vertexShader:Bt.meshmatcap_vert,fragmentShader:Bt.meshmatcap_frag},points:{uniforms:Cn([ke.points,ke.fog]),vertexShader:Bt.points_vert,fragmentShader:Bt.points_frag},dashed:{uniforms:Cn([ke.common,ke.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Bt.linedashed_vert,fragmentShader:Bt.linedashed_frag},depth:{uniforms:Cn([ke.common,ke.displacementmap]),vertexShader:Bt.depth_vert,fragmentShader:Bt.depth_frag},normal:{uniforms:Cn([ke.common,ke.bumpmap,ke.normalmap,ke.displacementmap,{opacity:{value:1}}]),vertexShader:Bt.meshnormal_vert,fragmentShader:Bt.meshnormal_frag},sprite:{uniforms:Cn([ke.sprite,ke.fog]),vertexShader:Bt.sprite_vert,fragmentShader:Bt.sprite_frag},background:{uniforms:{uvTransform:{value:new Ft},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Bt.background_vert,fragmentShader:Bt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ft}},vertexShader:Bt.backgroundCube_vert,fragmentShader:Bt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Bt.cube_vert,fragmentShader:Bt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Bt.equirect_vert,fragmentShader:Bt.equirect_frag},distanceRGBA:{uniforms:Cn([ke.common,ke.displacementmap,{referencePosition:{value:new I},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Bt.distanceRGBA_vert,fragmentShader:Bt.distanceRGBA_frag},shadow:{uniforms:Cn([ke.lights,ke.fog,{color:{value:new _t(0)},opacity:{value:1}}]),vertexShader:Bt.shadow_vert,fragmentShader:Bt.shadow_frag}};Un.physical={uniforms:Cn([Un.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ft},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ft},clearcoatNormalScale:{value:new Ze(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ft},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ft},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ft},sheen:{value:0},sheenColor:{value:new _t(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ft},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ft},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ft},transmissionSamplerSize:{value:new Ze},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ft},attenuationDistance:{value:0},attenuationColor:{value:new _t(0)},specularColor:{value:new _t(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ft},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ft},anisotropyVector:{value:new Ze},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ft}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag};const Gr={r:0,b:0,g:0},Xi=new Ln,_1=new At;function v1(s,e,t,n,i,r,a){const o=new _t(0);let l=r===!0?0:1,c,h,d=null,u=0,f=null;function m(b){let M=b.isScene===!0?b.background:null;return M&&M.isTexture&&(M=(b.backgroundBlurriness>0?t:e).get(M)),M}function _(b){let M=!1;const U=m(b);U===null?p(o,l):U&&U.isColor&&(p(U,1),M=!0);const C=s.xr.getEnvironmentBlendMode();C==="additive"?n.buffers.color.setClear(0,0,0,1,a):C==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(s.autoClear||M)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil))}function g(b,M){const U=m(M);U&&(U.isCubeTexture||U.mapping===ya)?(h===void 0&&(h=new Jt(new Bi(1,1,1),new bi({name:"BackgroundCubeMaterial",uniforms:Ns(Un.backgroundCube.uniforms),vertexShader:Un.backgroundCube.vertexShader,fragmentShader:Un.backgroundCube.fragmentShader,side:Rn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(C,P,D){this.matrixWorld.copyPosition(D.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),Xi.copy(M.backgroundRotation),Xi.x*=-1,Xi.y*=-1,Xi.z*=-1,U.isCubeTexture&&U.isRenderTargetTexture===!1&&(Xi.y*=-1,Xi.z*=-1),h.material.uniforms.envMap.value=U,h.material.uniforms.flipEnvMap.value=U.isCubeTexture&&U.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(_1.makeRotationFromEuler(Xi)),h.material.toneMapped=Vt.getTransfer(U.colorSpace)!==tn,(d!==U||u!==U.version||f!==s.toneMapping)&&(h.material.needsUpdate=!0,d=U,u=U.version,f=s.toneMapping),h.layers.enableAll(),b.unshift(h,h.geometry,h.material,0,0,null)):U&&U.isTexture&&(c===void 0&&(c=new Jt(new hr(2,2),new bi({name:"BackgroundMaterial",uniforms:Ns(Un.background.uniforms),vertexShader:Un.background.vertexShader,fragmentShader:Un.background.fragmentShader,side:Xn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(c)),c.material.uniforms.t2D.value=U,c.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,c.material.toneMapped=Vt.getTransfer(U.colorSpace)!==tn,U.matrixAutoUpdate===!0&&U.updateMatrix(),c.material.uniforms.uvTransform.value.copy(U.matrix),(d!==U||u!==U.version||f!==s.toneMapping)&&(c.material.needsUpdate=!0,d=U,u=U.version,f=s.toneMapping),c.layers.enableAll(),b.unshift(c,c.geometry,c.material,0,0,null))}function p(b,M){b.getRGB(Gr,lu(s)),n.buffers.color.setClear(Gr.r,Gr.g,Gr.b,M,a)}function E(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(b,M=1){o.set(b),l=M,p(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(b){l=b,p(o,l)},render:_,addToRenderList:g,dispose:E}}function x1(s,e){const t=s.getParameter(s.MAX_VERTEX_ATTRIBS),n={},i=u(null);let r=i,a=!1;function o(y,N,W,X,Q){let ne=!1;const G=d(X,W,N);r!==G&&(r=G,c(r.object)),ne=f(y,X,W,Q),ne&&m(y,X,W,Q),Q!==null&&e.update(Q,s.ELEMENT_ARRAY_BUFFER),(ne||a)&&(a=!1,M(y,N,W,X),Q!==null&&s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,e.get(Q).buffer))}function l(){return s.createVertexArray()}function c(y){return s.bindVertexArray(y)}function h(y){return s.deleteVertexArray(y)}function d(y,N,W){const X=W.wireframe===!0;let Q=n[y.id];Q===void 0&&(Q={},n[y.id]=Q);let ne=Q[N.id];ne===void 0&&(ne={},Q[N.id]=ne);let G=ne[X];return G===void 0&&(G=u(l()),ne[X]=G),G}function u(y){const N=[],W=[],X=[];for(let Q=0;Q<t;Q++)N[Q]=0,W[Q]=0,X[Q]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:N,enabledAttributes:W,attributeDivisors:X,object:y,attributes:{},index:null}}function f(y,N,W,X){const Q=r.attributes,ne=N.attributes;let G=0;const re=W.getAttributes();for(const Z in re)if(re[Z].location>=0){const Ee=Q[Z];let Ce=ne[Z];if(Ce===void 0&&(Z==="instanceMatrix"&&y.instanceMatrix&&(Ce=y.instanceMatrix),Z==="instanceColor"&&y.instanceColor&&(Ce=y.instanceColor)),Ee===void 0||Ee.attribute!==Ce||Ce&&Ee.data!==Ce.data)return!0;G++}return r.attributesNum!==G||r.index!==X}function m(y,N,W,X){const Q={},ne=N.attributes;let G=0;const re=W.getAttributes();for(const Z in re)if(re[Z].location>=0){let Ee=ne[Z];Ee===void 0&&(Z==="instanceMatrix"&&y.instanceMatrix&&(Ee=y.instanceMatrix),Z==="instanceColor"&&y.instanceColor&&(Ee=y.instanceColor));const Ce={};Ce.attribute=Ee,Ee&&Ee.data&&(Ce.data=Ee.data),Q[Z]=Ce,G++}r.attributes=Q,r.attributesNum=G,r.index=X}function _(){const y=r.newAttributes;for(let N=0,W=y.length;N<W;N++)y[N]=0}function g(y){p(y,0)}function p(y,N){const W=r.newAttributes,X=r.enabledAttributes,Q=r.attributeDivisors;W[y]=1,X[y]===0&&(s.enableVertexAttribArray(y),X[y]=1),Q[y]!==N&&(s.vertexAttribDivisor(y,N),Q[y]=N)}function E(){const y=r.newAttributes,N=r.enabledAttributes;for(let W=0,X=N.length;W<X;W++)N[W]!==y[W]&&(s.disableVertexAttribArray(W),N[W]=0)}function b(y,N,W,X,Q,ne,G){G===!0?s.vertexAttribIPointer(y,N,W,Q,ne):s.vertexAttribPointer(y,N,W,X,Q,ne)}function M(y,N,W,X){_();const Q=X.attributes,ne=W.getAttributes(),G=N.defaultAttributeValues;for(const re in ne){const Z=ne[re];if(Z.location>=0){let me=Q[re];if(me===void 0&&(re==="instanceMatrix"&&y.instanceMatrix&&(me=y.instanceMatrix),re==="instanceColor"&&y.instanceColor&&(me=y.instanceColor)),me!==void 0){const Ee=me.normalized,Ce=me.itemSize,Ne=e.get(me);if(Ne===void 0)continue;const Ve=Ne.buffer,K=Ne.type,ae=Ne.bytesPerElement,le=K===s.INT||K===s.UNSIGNED_INT||me.gpuType===Ml;if(me.isInterleavedBufferAttribute){const ce=me.data,Le=ce.stride,xe=me.offset;if(ce.isInstancedInterleavedBuffer){for(let we=0;we<Z.locationSize;we++)p(Z.location+we,ce.meshPerAttribute);y.isInstancedMesh!==!0&&X._maxInstanceCount===void 0&&(X._maxInstanceCount=ce.meshPerAttribute*ce.count)}else for(let we=0;we<Z.locationSize;we++)g(Z.location+we);s.bindBuffer(s.ARRAY_BUFFER,Ve);for(let we=0;we<Z.locationSize;we++)b(Z.location+we,Ce/Z.locationSize,K,Ee,Le*ae,(xe+Ce/Z.locationSize*we)*ae,le)}else{if(me.isInstancedBufferAttribute){for(let ce=0;ce<Z.locationSize;ce++)p(Z.location+ce,me.meshPerAttribute);y.isInstancedMesh!==!0&&X._maxInstanceCount===void 0&&(X._maxInstanceCount=me.meshPerAttribute*me.count)}else for(let ce=0;ce<Z.locationSize;ce++)g(Z.location+ce);s.bindBuffer(s.ARRAY_BUFFER,Ve);for(let ce=0;ce<Z.locationSize;ce++)b(Z.location+ce,Ce/Z.locationSize,K,Ee,Ce*ae,Ce/Z.locationSize*ce*ae,le)}}else if(G!==void 0){const Ee=G[re];if(Ee!==void 0)switch(Ee.length){case 2:s.vertexAttrib2fv(Z.location,Ee);break;case 3:s.vertexAttrib3fv(Z.location,Ee);break;case 4:s.vertexAttrib4fv(Z.location,Ee);break;default:s.vertexAttrib1fv(Z.location,Ee)}}}}E()}function U(){D();for(const y in n){const N=n[y];for(const W in N){const X=N[W];for(const Q in X)h(X[Q].object),delete X[Q];delete N[W]}delete n[y]}}function C(y){if(n[y.id]===void 0)return;const N=n[y.id];for(const W in N){const X=N[W];for(const Q in X)h(X[Q].object),delete X[Q];delete N[W]}delete n[y.id]}function P(y){for(const N in n){const W=n[N];if(W[y.id]===void 0)continue;const X=W[y.id];for(const Q in X)h(X[Q].object),delete X[Q];delete W[y.id]}}function D(){S(),a=!0,r!==i&&(r=i,c(r.object))}function S(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:o,reset:D,resetDefaultState:S,dispose:U,releaseStatesOfGeometry:C,releaseStatesOfProgram:P,initAttributes:_,enableAttribute:g,disableUnusedAttributes:E}}function y1(s,e,t){let n;function i(c){n=c}function r(c,h){s.drawArrays(n,c,h),t.update(h,n,1)}function a(c,h,d){d!==0&&(s.drawArraysInstanced(n,c,h,d),t.update(h,n,d))}function o(c,h,d){if(d===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(n,c,0,h,0,d);let f=0;for(let m=0;m<d;m++)f+=h[m];t.update(f,n,1)}function l(c,h,d,u){if(d===0)return;const f=e.get("WEBGL_multi_draw");if(f===null)for(let m=0;m<c.length;m++)a(c[m],h[m],u[m]);else{f.multiDrawArraysInstancedWEBGL(n,c,0,h,0,u,0,d);let m=0;for(let _=0;_<d;_++)m+=h[_]*u[_];t.update(m,n,1)}}this.setMode=i,this.render=r,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function M1(s,e,t,n){let i;function r(){if(i!==void 0)return i;if(e.has("EXT_texture_filter_anisotropic")===!0){const P=e.get("EXT_texture_filter_anisotropic");i=s.getParameter(P.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i}function a(P){return!(P!==Wn&&n.convert(P)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(P){const D=P===cr&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(P!==ci&&n.convert(P)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_TYPE)&&P!==oi&&!D)}function l(P){if(P==="highp"){if(s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision>0)return"highp";P="mediump"}return P==="mediump"&&s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const d=t.logarithmicDepthBuffer===!0,u=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),f=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),m=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=s.getParameter(s.MAX_TEXTURE_SIZE),g=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),p=s.getParameter(s.MAX_VERTEX_ATTRIBS),E=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),b=s.getParameter(s.MAX_VARYING_VECTORS),M=s.getParameter(s.MAX_FRAGMENT_UNIFORM_VECTORS),U=m>0,C=s.getParameter(s.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reverseDepthBuffer:u,maxTextures:f,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:g,maxAttributes:p,maxVertexUniforms:E,maxVaryings:b,maxFragmentUniforms:M,vertexTextures:U,maxSamples:C}}function S1(s){const e=this;let t=null,n=0,i=!1,r=!1;const a=new Ui,o=new Ft,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,u){const f=d.length!==0||u||n!==0||i;return i=u,n=d.length,f},this.beginShadows=function(){r=!0,h(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(d,u){t=h(d,u,0)},this.setState=function(d,u,f){const m=d.clippingPlanes,_=d.clipIntersection,g=d.clipShadows,p=s.get(d);if(!i||m===null||m.length===0||r&&!g)r?h(null):c();else{const E=r?0:n,b=E*4;let M=p.clippingState||null;l.value=M,M=h(m,u,b,f);for(let U=0;U!==b;++U)M[U]=t[U];p.clippingState=M,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=E}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(d,u,f,m){const _=d!==null?d.length:0;let g=null;if(_!==0){if(g=l.value,m!==!0||g===null){const p=f+_*4,E=u.matrixWorldInverse;o.getNormalMatrix(E),(g===null||g.length<p)&&(g=new Float32Array(p));for(let b=0,M=f;b!==_;++b,M+=4)a.copy(d[b]).applyMatrix4(E,o),a.normal.toArray(g,M),g[M+3]=a.constant}l.value=g,l.needsUpdate=!0}return e.numPlanes=_,e.numIntersection=0,g}}function b1(s){let e=new WeakMap;function t(a,o){return o===Po?a.mapping=Ls:o===Do&&(a.mapping=Ps),a}function n(a){if(a&&a.isTexture){const o=a.mapping;if(o===Po||o===Do)if(e.has(a)){const l=e.get(a).texture;return t(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const c=new Bf(l.height);return c.fromEquirectangularTexture(s,a),e.set(a,c),a.addEventListener("dispose",i),t(c.texture,a.mapping)}else return null}}return a}function i(a){const o=a.target;o.removeEventListener("dispose",i);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function r(){e=new WeakMap}return{get:n,dispose:r}}const Es=4,Yc=[.125,.215,.35,.446,.526,.582],Zi=20,lo=new wa,$c=new _t;let co=null,ho=0,uo=0,fo=!1;const $i=(1+Math.sqrt(5))/2,Ms=1/$i,Jc=[new I(-$i,Ms,0),new I($i,Ms,0),new I(-Ms,0,$i),new I(Ms,0,$i),new I(0,$i,-Ms),new I(0,$i,Ms),new I(-1,1,-1),new I(1,1,-1),new I(-1,1,1),new I(1,1,1)],E1=new I;class Kc{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100,r={}){const{size:a=256,position:o=E1}=r;co=this._renderer.getRenderTarget(),ho=this._renderer.getActiveCubeFace(),uo=this._renderer.getActiveMipmapLevel(),fo=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,i,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=eh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Qc(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(co,ho,uo),this._renderer.xr.enabled=fo,e.scissorTest=!1,Wr(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Ls||e.mapping===Ps?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),co=this._renderer.getRenderTarget(),ho=this._renderer.getActiveCubeFace(),uo=this._renderer.getActiveMipmapLevel(),fo=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:Fn,minFilter:Fn,generateMipmaps:!1,type:cr,format:Wn,colorSpace:Ds,depthBuffer:!1},i=Zc(e,t,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Zc(e,t,n);const{_lodMax:r}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=A1(r)),this._blurMaterial=w1(r,e,t)}return i}_compileMaterial(e){const t=new Jt(this._lodPlanes[0],e);this._renderer.compile(t,lo)}_sceneToCubeUV(e,t,n,i,r){const l=new Sn(90,1,t,n),c=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],d=this._renderer,u=d.autoClear,f=d.toneMapping;d.getClearColor($c),d.toneMapping=Oi,d.autoClear=!1;const m=new zi({name:"PMREM.Background",side:Rn,depthWrite:!1,depthTest:!1}),_=new Jt(new Bi,m);let g=!1;const p=e.background;p?p.isColor&&(m.color.copy(p),e.background=null,g=!0):(m.color.copy($c),g=!0);for(let E=0;E<6;E++){const b=E%3;b===0?(l.up.set(0,c[E],0),l.position.set(r.x,r.y,r.z),l.lookAt(r.x+h[E],r.y,r.z)):b===1?(l.up.set(0,0,c[E]),l.position.set(r.x,r.y,r.z),l.lookAt(r.x,r.y+h[E],r.z)):(l.up.set(0,c[E],0),l.position.set(r.x,r.y,r.z),l.lookAt(r.x,r.y,r.z+h[E]));const M=this._cubeSize;Wr(i,b*M,E>2?M:0,M,M),d.setRenderTarget(i),g&&d.render(_,l),d.render(e,l)}_.geometry.dispose(),_.material.dispose(),d.toneMapping=f,d.autoClear=u,e.background=p}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===Ls||e.mapping===Ps;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=eh()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Qc());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new Jt(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=e;const l=this._cubeSize;Wr(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,lo)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const i=this._lodPlanes.length;for(let r=1;r<i;r++){const a=Math.sqrt(this._sigmas[r]*this._sigmas[r]-this._sigmas[r-1]*this._sigmas[r-1]),o=Jc[(i-r-1)%Jc.length];this._blur(e,r-1,r,a,o)}t.autoClear=n}_blur(e,t,n,i,r){const a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}_halfBlur(e,t,n,i,r,a,o){const l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,d=new Jt(this._lodPlanes[i],c),u=c.uniforms,f=this._sizeLods[n]-1,m=isFinite(r)?Math.PI/(2*f):2*Math.PI/(2*Zi-1),_=r/m,g=isFinite(r)?1+Math.floor(h*_):Zi;g>Zi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Zi}`);const p=[];let E=0;for(let P=0;P<Zi;++P){const D=P/_,S=Math.exp(-D*D/2);p.push(S),P===0?E+=S:P<g&&(E+=2*S)}for(let P=0;P<p.length;P++)p[P]=p[P]/E;u.envMap.value=e.texture,u.samples.value=g,u.weights.value=p,u.latitudinal.value=a==="latitudinal",o&&(u.poleAxis.value=o);const{_lodMax:b}=this;u.dTheta.value=m,u.mipInt.value=b-n;const M=this._sizeLods[i],U=3*M*(i>b-Es?i-b+Es:0),C=4*(this._cubeSize-M);Wr(t,U,C,3*M,2*M),l.setRenderTarget(t),l.render(d,lo)}}function A1(s){const e=[],t=[],n=[];let i=s;const r=s-Es+1+Yc.length;for(let a=0;a<r;a++){const o=Math.pow(2,i);t.push(o);let l=1/o;a>s-Es?l=Yc[a-s+Es-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,d=1+c,u=[h,h,d,h,d,d,h,h,d,d,h,d],f=6,m=6,_=3,g=2,p=1,E=new Float32Array(_*m*f),b=new Float32Array(g*m*f),M=new Float32Array(p*m*f);for(let C=0;C<f;C++){const P=C%3*2/3-1,D=C>2?0:-1,S=[P,D,0,P+2/3,D,0,P+2/3,D+1,0,P,D,0,P+2/3,D+1,0,P,D+1,0];E.set(S,_*m*C),b.set(u,g*m*C);const y=[C,C,C,C,C,C];M.set(y,p*m*C)}const U=new on;U.setAttribute("position",new dn(E,_)),U.setAttribute("uv",new dn(b,g)),U.setAttribute("faceIndex",new dn(M,p)),e.push(U),i>Es&&i--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Zc(s,e,t){const n=new ts(s,e,t);return n.texture.mapping=ya,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Wr(s,e,t,n,i){s.viewport.set(e,t,n,i),s.scissor.set(e,t,n,i)}function w1(s,e,t){const n=new Float32Array(Zi),i=new I(0,1,0);return new bi({name:"SphericalGaussianBlur",defines:{n:Zi,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:Hl(),fragmentShader:`
|
|
3575
3575
|
|
|
3576
3576
|
precision mediump float;
|
|
3577
3577
|
precision mediump int;
|
|
@@ -3631,7 +3631,7 @@ void main() {
|
|
|
3631
3631
|
}
|
|
3632
3632
|
|
|
3633
3633
|
}
|
|
3634
|
-
`,blending:
|
|
3634
|
+
`,blending:Fi,depthTest:!1,depthWrite:!1})}function Qc(){return new bi({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Hl(),fragmentShader:`
|
|
3635
3635
|
|
|
3636
3636
|
precision mediump float;
|
|
3637
3637
|
precision mediump int;
|
|
@@ -3650,7 +3650,7 @@ void main() {
|
|
|
3650
3650
|
gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
|
|
3651
3651
|
|
|
3652
3652
|
}
|
|
3653
|
-
`,blending:
|
|
3653
|
+
`,blending:Fi,depthTest:!1,depthWrite:!1})}function eh(){return new bi({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Hl(),fragmentShader:`
|
|
3654
3654
|
|
|
3655
3655
|
precision mediump float;
|
|
3656
3656
|
precision mediump int;
|
|
@@ -3666,7 +3666,7 @@ void main() {
|
|
|
3666
3666
|
gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
|
|
3667
3667
|
|
|
3668
3668
|
}
|
|
3669
|
-
`,blending:
|
|
3669
|
+
`,blending:Fi,depthTest:!1,depthWrite:!1})}function Hl(){return`
|
|
3670
3670
|
|
|
3671
3671
|
precision mediump float;
|
|
3672
3672
|
precision mediump int;
|
|
@@ -3721,7 +3721,7 @@ void main() {
|
|
|
3721
3721
|
gl_Position = vec4( position, 1.0 );
|
|
3722
3722
|
|
|
3723
3723
|
}
|
|
3724
|
-
`}function T1(s){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===Po||l===Do,h=l===Ls||l===Ps;if(c||h){let d=e.get(o);const u=d!==void 0?d.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==u)return t===null&&(t=new Kc(s)),d=c?t.fromEquirectangular(o,d):t.fromCubemap(o,d),d.texture.pmremVersion=o.pmremVersion,e.set(o,d),d.texture;if(d!==void 0)return d.texture;{const f=o.image;return c&&f&&f.height>0||h&&f&&i(f)?(t===null&&(t=new Kc(s)),d=c?t.fromEquirectangular(o):t.fromCubemap(o),d.texture.pmremVersion=o.pmremVersion,e.set(o,d),o.addEventListener("dispose",r),d.texture):null}}}return o}function i(o){let l=0;const c=6;for(let h=0;h<c;h++)o[h]!==void 0&&l++;return l===c}function r(o){const l=o.target;l.removeEventListener("dispose",r);const c=e.get(l);c!==void 0&&(e.delete(l),c.dispose())}function a(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:n,dispose:a}}function C1(s){const e={};function t(n){if(e[n]!==void 0)return e[n];let i;switch(n){case"WEBGL_depth_texture":i=s.getExtension("WEBGL_depth_texture")||s.getExtension("MOZ_WEBGL_depth_texture")||s.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=s.getExtension("EXT_texture_filter_anisotropic")||s.getExtension("MOZ_EXT_texture_filter_anisotropic")||s.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=s.getExtension("WEBGL_compressed_texture_s3tc")||s.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=s.getExtension("WEBGL_compressed_texture_pvrtc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=s.getExtension(n)}return e[n]=i,i}return{has:function(n){return t(n)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(n){const i=t(n);return i===null&&ws("THREE.WebGLRenderer: "+n+" extension not supported."),i}}}function R1(s,e,t,n){const i={},r=new WeakMap;function a(d){const u=d.target;u.index!==null&&e.remove(u.index);for(const m in u.attributes)e.remove(u.attributes[m]);u.removeEventListener("dispose",a),delete i[u.id];const f=r.get(u);f&&(e.remove(f),r.delete(u)),n.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,t.memory.geometries--}function o(d,u){return i[u.id]===!0||(u.addEventListener("dispose",a),i[u.id]=!0,t.memory.geometries++),u}function l(d){const u=d.attributes;for(const f in u)e.update(u[f],s.ARRAY_BUFFER)}function c(d){const u=[],f=d.index,m=d.attributes.position;let _=0;if(f!==null){const E=f.array;_=f.version;for(let b=0,M=E.length;b<M;b+=3){const U=E[b+0],C=E[b+1],P=E[b+2];u.push(U,C,C,P,P,U)}}else if(m!==void 0){const E=m.array;_=m.version;for(let b=0,M=E.length/3-1;b<M;b+=3){const U=b+0,C=b+1,P=b+2;u.push(U,C,C,P,P,U)}}else return;const g=new(iu(u)?ou:au)(u,1);g.version=_;const p=r.get(d);p&&e.remove(p),r.set(d,g)}function h(d){const u=r.get(d);if(u){const f=d.index;f!==null&&u.version<f.version&&c(d)}else c(d);return r.get(d)}return{get:o,update:l,getWireframeAttribute:h}}function L1(s,e,t){let n;function i(u){n=u}let r,a;function o(u){r=u.type,a=u.bytesPerElement}function l(u,f){s.drawElements(n,f,r,u*a),t.update(f,n,1)}function c(u,f,m){m!==0&&(s.drawElementsInstanced(n,f,r,u*a,m),t.update(f,n,m))}function h(u,f,m){if(m===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(n,f,0,r,u,0,m);let g=0;for(let p=0;p<m;p++)g+=f[p];t.update(g,n,1)}function d(u,f,m,_){if(m===0)return;const g=e.get("WEBGL_multi_draw");if(g===null)for(let p=0;p<u.length;p++)c(u[p]/a,f[p],_[p]);else{g.multiDrawElementsInstancedWEBGL(n,f,0,r,u,0,_,0,m);let p=0;for(let E=0;E<m;E++)p+=f[E]*_[E];t.update(p,n,1)}}this.setMode=i,this.setIndex=o,this.render=l,this.renderInstances=c,this.renderMultiDraw=h,this.renderMultiDrawInstances=d}function P1(s){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function n(r,a,o){switch(t.calls++,a){case s.TRIANGLES:t.triangles+=o*(r/3);break;case s.LINES:t.lines+=o*(r/2);break;case s.LINE_STRIP:t.lines+=o*(r-1);break;case s.LINE_LOOP:t.lines+=o*r;break;case s.POINTS:t.points+=o*r;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function i(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:i,update:n}}function D1(s,e,t){const n=new WeakMap,i=new Ht;function r(a,o,l){const c=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,d=h!==void 0?h.length:0;let u=n.get(o);if(u===void 0||u.count!==d){let S=function(){P.dispose(),n.delete(o),o.removeEventListener("dispose",S)};u!==void 0&&u.texture.dispose();const f=o.morphAttributes.position!==void 0,m=o.morphAttributes.normal!==void 0,_=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],p=o.morphAttributes.normal||[],E=o.morphAttributes.color||[];let b=0;f===!0&&(b=1),m===!0&&(b=2),_===!0&&(b=3);let M=o.attributes.position.count*b,U=1;M>e.maxTextureSize&&(U=Math.ceil(M/e.maxTextureSize),M=e.maxTextureSize);const C=new Float32Array(M*U*4*d),P=new su(C,M,U,d);P.type=oi,P.needsUpdate=!0;const D=b*4;for(let y=0;y<d;y++){const N=g[y],W=p[y],X=E[y],Q=M*U*4*y;for(let ne=0;ne<N.count;ne++){const G=ne*D;f===!0&&(i.fromBufferAttribute(N,ne),C[Q+G+0]=i.x,C[Q+G+1]=i.y,C[Q+G+2]=i.z,C[Q+G+3]=0),m===!0&&(i.fromBufferAttribute(W,ne),C[Q+G+4]=i.x,C[Q+G+5]=i.y,C[Q+G+6]=i.z,C[Q+G+7]=0),_===!0&&(i.fromBufferAttribute(X,ne),C[Q+G+8]=i.x,C[Q+G+9]=i.y,C[Q+G+10]=i.z,C[Q+G+11]=X.itemSize===4?i.w:1)}}u={count:d,texture:P,size:new Ke(M,U)},n.set(o,u),o.addEventListener("dispose",S)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(s,"morphTexture",a.morphTexture,t);else{let f=0;for(let _=0;_<c.length;_++)f+=c[_];const m=o.morphTargetsRelative?1:1-f;l.getUniforms().setValue(s,"morphTargetBaseInfluence",m),l.getUniforms().setValue(s,"morphTargetInfluences",c)}l.getUniforms().setValue(s,"morphTargetsTexture",u.texture,t),l.getUniforms().setValue(s,"morphTargetsTextureSize",u.size)}return{update:r}}function U1(s,e,t,n){let i=new WeakMap;function r(l){const c=n.render.frame,h=l.geometry,d=e.get(l,h);if(i.get(d)!==c&&(e.update(d),i.set(d,c)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),i.get(l)!==c&&(t.update(l.instanceMatrix,s.ARRAY_BUFFER),l.instanceColor!==null&&t.update(l.instanceColor,s.ARRAY_BUFFER),i.set(l,c))),l.isSkinnedMesh){const u=l.skeleton;i.get(u)!==c&&(u.update(),i.set(u,c))}return d}function a(){i=new WeakMap}function o(l){const c=l.target;c.removeEventListener("dispose",o),t.remove(c.instanceMatrix),c.instanceColor!==null&&t.remove(c.instanceColor)}return{update:r,dispose:a}}const Ru=new bn,th=new gu(1,1),Lu=new su,Pu=new Sf,Du=new hu,nh=[],ih=[],sh=new Float32Array(16),rh=new Float32Array(9),ah=new Float32Array(4);function ks(s,e,t){const n=s[0];if(n<=0||n>0)return s;const i=e*t;let r=nh[i];if(r===void 0&&(r=new Float32Array(i),nh[i]=r),e!==0){n.toArray(r,0);for(let a=1,o=0;a!==e;++a)o+=t,s[a].toArray(r,o)}return r}function gn(s,e){if(s.length!==e.length)return!1;for(let t=0,n=s.length;t<n;t++)if(s[t]!==e[t])return!1;return!0}function _n(s,e){for(let t=0,n=e.length;t<n;t++)s[t]=e[t]}function Ta(s,e){let t=ih[e];t===void 0&&(t=new Int32Array(e),ih[e]=t);for(let n=0;n!==e;++n)t[n]=s.allocateTextureUnit();return t}function N1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1f(this.addr,e),t[0]=e)}function I1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(gn(t,e))return;s.uniform2fv(this.addr,e),_n(t,e)}}function F1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(s.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(gn(t,e))return;s.uniform3fv(this.addr,e),_n(t,e)}}function O1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(gn(t,e))return;s.uniform4fv(this.addr,e),_n(t,e)}}function z1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(gn(t,e))return;s.uniformMatrix2fv(this.addr,!1,e),_n(t,e)}else{if(gn(t,n))return;ah.set(n),s.uniformMatrix2fv(this.addr,!1,ah),_n(t,n)}}function B1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(gn(t,e))return;s.uniformMatrix3fv(this.addr,!1,e),_n(t,e)}else{if(gn(t,n))return;rh.set(n),s.uniformMatrix3fv(this.addr,!1,rh),_n(t,n)}}function k1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(gn(t,e))return;s.uniformMatrix4fv(this.addr,!1,e),_n(t,e)}else{if(gn(t,n))return;sh.set(n),s.uniformMatrix4fv(this.addr,!1,sh),_n(t,n)}}function V1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1i(this.addr,e),t[0]=e)}function H1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(gn(t,e))return;s.uniform2iv(this.addr,e),_n(t,e)}}function G1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(gn(t,e))return;s.uniform3iv(this.addr,e),_n(t,e)}}function W1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(gn(t,e))return;s.uniform4iv(this.addr,e),_n(t,e)}}function X1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1ui(this.addr,e),t[0]=e)}function q1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(gn(t,e))return;s.uniform2uiv(this.addr,e),_n(t,e)}}function j1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(gn(t,e))return;s.uniform3uiv(this.addr,e),_n(t,e)}}function Y1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(gn(t,e))return;s.uniform4uiv(this.addr,e),_n(t,e)}}function $1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i);let r;this.type===s.SAMPLER_2D_SHADOW?(th.compareFunction=nu,r=th):r=Ru,t.setTexture2D(e||r,i)}function J1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTexture3D(e||Pu,i)}function K1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTextureCube(e||Du,i)}function Z1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTexture2DArray(e||Lu,i)}function Q1(s){switch(s){case 5126:return N1;case 35664:return I1;case 35665:return F1;case 35666:return O1;case 35674:return z1;case 35675:return B1;case 35676:return k1;case 5124:case 35670:return V1;case 35667:case 35671:return H1;case 35668:case 35672:return G1;case 35669:case 35673:return W1;case 5125:return X1;case 36294:return q1;case 36295:return j1;case 36296:return Y1;case 35678:case 36198:case 36298:case 36306:case 35682:return $1;case 35679:case 36299:case 36307:return J1;case 35680:case 36300:case 36308:case 36293:return K1;case 36289:case 36303:case 36311:case 36292:return Z1}}function e2(s,e){s.uniform1fv(this.addr,e)}function t2(s,e){const t=ks(e,this.size,2);s.uniform2fv(this.addr,t)}function n2(s,e){const t=ks(e,this.size,3);s.uniform3fv(this.addr,t)}function i2(s,e){const t=ks(e,this.size,4);s.uniform4fv(this.addr,t)}function s2(s,e){const t=ks(e,this.size,4);s.uniformMatrix2fv(this.addr,!1,t)}function r2(s,e){const t=ks(e,this.size,9);s.uniformMatrix3fv(this.addr,!1,t)}function a2(s,e){const t=ks(e,this.size,16);s.uniformMatrix4fv(this.addr,!1,t)}function o2(s,e){s.uniform1iv(this.addr,e)}function l2(s,e){s.uniform2iv(this.addr,e)}function c2(s,e){s.uniform3iv(this.addr,e)}function h2(s,e){s.uniform4iv(this.addr,e)}function u2(s,e){s.uniform1uiv(this.addr,e)}function d2(s,e){s.uniform2uiv(this.addr,e)}function f2(s,e){s.uniform3uiv(this.addr,e)}function p2(s,e){s.uniform4uiv(this.addr,e)}function m2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);gn(n,r)||(s.uniform1iv(this.addr,r),_n(n,r));for(let a=0;a!==i;++a)t.setTexture2D(e[a]||Ru,r[a])}function g2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);gn(n,r)||(s.uniform1iv(this.addr,r),_n(n,r));for(let a=0;a!==i;++a)t.setTexture3D(e[a]||Pu,r[a])}function _2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);gn(n,r)||(s.uniform1iv(this.addr,r),_n(n,r));for(let a=0;a!==i;++a)t.setTextureCube(e[a]||Du,r[a])}function v2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);gn(n,r)||(s.uniform1iv(this.addr,r),_n(n,r));for(let a=0;a!==i;++a)t.setTexture2DArray(e[a]||Lu,r[a])}function x2(s){switch(s){case 5126:return e2;case 35664:return t2;case 35665:return n2;case 35666:return i2;case 35674:return s2;case 35675:return r2;case 35676:return a2;case 5124:case 35670:return o2;case 35667:case 35671:return l2;case 35668:case 35672:return c2;case 35669:case 35673:return h2;case 5125:return u2;case 36294:return d2;case 36295:return f2;case 36296:return p2;case 35678:case 36198:case 36298:case 36306:case 35682:return m2;case 35679:case 36299:case 36307:return g2;case 35680:case 36300:case 36308:case 36293:return _2;case 36289:case 36303:case 36311:case 36292:return v2}}class y2{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=Q1(t.type)}}class M2{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=x2(t.type)}}class S2{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const i=this.seq;for(let r=0,a=i.length;r!==a;++r){const o=i[r];o.setValue(e,t[o.id],n)}}}const po=/(\w+)(\])?(\[|\.)?/g;function oh(s,e){s.seq.push(e),s.map[e.id]=e}function b2(s,e,t){const n=s.name,i=n.length;for(po.lastIndex=0;;){const r=po.exec(n),a=po.lastIndex;let o=r[1];const l=r[2]==="]",c=r[3];if(l&&(o=o|0),c===void 0||c==="["&&a+2===i){oh(t,c===void 0?new y2(o,s,e):new M2(o,s,e));break}else{let d=t.map[o];d===void 0&&(d=new S2(o),oh(t,d)),t=d}}}class aa{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let i=0;i<n;++i){const r=e.getActiveUniform(t,i),a=e.getUniformLocation(t,r.name);b2(r,a,this)}}setValue(e,t,n,i){const r=this.map[t];r!==void 0&&r.setValue(e,n,i)}setOptional(e,t,n){const i=t[n];i!==void 0&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let r=0,a=t.length;r!==a;++r){const o=t[r],l=n[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,i)}}static seqWithValue(e,t){const n=[];for(let i=0,r=e.length;i!==r;++i){const a=e[i];a.id in t&&n.push(a)}return n}}function lh(s,e,t){const n=s.createShader(e);return s.shaderSource(n,t),s.compileShader(n),n}const E2=37297;let A2=0;function w2(s,e){const t=s.split(`
|
|
3724
|
+
`}function T1(s){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===Po||l===Do,h=l===Ls||l===Ps;if(c||h){let d=e.get(o);const u=d!==void 0?d.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==u)return t===null&&(t=new Kc(s)),d=c?t.fromEquirectangular(o,d):t.fromCubemap(o,d),d.texture.pmremVersion=o.pmremVersion,e.set(o,d),d.texture;if(d!==void 0)return d.texture;{const f=o.image;return c&&f&&f.height>0||h&&f&&i(f)?(t===null&&(t=new Kc(s)),d=c?t.fromEquirectangular(o):t.fromCubemap(o),d.texture.pmremVersion=o.pmremVersion,e.set(o,d),o.addEventListener("dispose",r),d.texture):null}}}return o}function i(o){let l=0;const c=6;for(let h=0;h<c;h++)o[h]!==void 0&&l++;return l===c}function r(o){const l=o.target;l.removeEventListener("dispose",r);const c=e.get(l);c!==void 0&&(e.delete(l),c.dispose())}function a(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:n,dispose:a}}function C1(s){const e={};function t(n){if(e[n]!==void 0)return e[n];let i;switch(n){case"WEBGL_depth_texture":i=s.getExtension("WEBGL_depth_texture")||s.getExtension("MOZ_WEBGL_depth_texture")||s.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=s.getExtension("EXT_texture_filter_anisotropic")||s.getExtension("MOZ_EXT_texture_filter_anisotropic")||s.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=s.getExtension("WEBGL_compressed_texture_s3tc")||s.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=s.getExtension("WEBGL_compressed_texture_pvrtc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=s.getExtension(n)}return e[n]=i,i}return{has:function(n){return t(n)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(n){const i=t(n);return i===null&&ws("THREE.WebGLRenderer: "+n+" extension not supported."),i}}}function R1(s,e,t,n){const i={},r=new WeakMap;function a(d){const u=d.target;u.index!==null&&e.remove(u.index);for(const m in u.attributes)e.remove(u.attributes[m]);u.removeEventListener("dispose",a),delete i[u.id];const f=r.get(u);f&&(e.remove(f),r.delete(u)),n.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,t.memory.geometries--}function o(d,u){return i[u.id]===!0||(u.addEventListener("dispose",a),i[u.id]=!0,t.memory.geometries++),u}function l(d){const u=d.attributes;for(const f in u)e.update(u[f],s.ARRAY_BUFFER)}function c(d){const u=[],f=d.index,m=d.attributes.position;let _=0;if(f!==null){const E=f.array;_=f.version;for(let b=0,M=E.length;b<M;b+=3){const U=E[b+0],C=E[b+1],P=E[b+2];u.push(U,C,C,P,P,U)}}else if(m!==void 0){const E=m.array;_=m.version;for(let b=0,M=E.length/3-1;b<M;b+=3){const U=b+0,C=b+1,P=b+2;u.push(U,C,C,P,P,U)}}else return;const g=new(iu(u)?ou:au)(u,1);g.version=_;const p=r.get(d);p&&e.remove(p),r.set(d,g)}function h(d){const u=r.get(d);if(u){const f=d.index;f!==null&&u.version<f.version&&c(d)}else c(d);return r.get(d)}return{get:o,update:l,getWireframeAttribute:h}}function L1(s,e,t){let n;function i(u){n=u}let r,a;function o(u){r=u.type,a=u.bytesPerElement}function l(u,f){s.drawElements(n,f,r,u*a),t.update(f,n,1)}function c(u,f,m){m!==0&&(s.drawElementsInstanced(n,f,r,u*a,m),t.update(f,n,m))}function h(u,f,m){if(m===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(n,f,0,r,u,0,m);let g=0;for(let p=0;p<m;p++)g+=f[p];t.update(g,n,1)}function d(u,f,m,_){if(m===0)return;const g=e.get("WEBGL_multi_draw");if(g===null)for(let p=0;p<u.length;p++)c(u[p]/a,f[p],_[p]);else{g.multiDrawElementsInstancedWEBGL(n,f,0,r,u,0,_,0,m);let p=0;for(let E=0;E<m;E++)p+=f[E]*_[E];t.update(p,n,1)}}this.setMode=i,this.setIndex=o,this.render=l,this.renderInstances=c,this.renderMultiDraw=h,this.renderMultiDrawInstances=d}function P1(s){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function n(r,a,o){switch(t.calls++,a){case s.TRIANGLES:t.triangles+=o*(r/3);break;case s.LINES:t.lines+=o*(r/2);break;case s.LINE_STRIP:t.lines+=o*(r-1);break;case s.LINE_LOOP:t.lines+=o*r;break;case s.POINTS:t.points+=o*r;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function i(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:i,update:n}}function D1(s,e,t){const n=new WeakMap,i=new Ht;function r(a,o,l){const c=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,d=h!==void 0?h.length:0;let u=n.get(o);if(u===void 0||u.count!==d){let S=function(){P.dispose(),n.delete(o),o.removeEventListener("dispose",S)};u!==void 0&&u.texture.dispose();const f=o.morphAttributes.position!==void 0,m=o.morphAttributes.normal!==void 0,_=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],p=o.morphAttributes.normal||[],E=o.morphAttributes.color||[];let b=0;f===!0&&(b=1),m===!0&&(b=2),_===!0&&(b=3);let M=o.attributes.position.count*b,U=1;M>e.maxTextureSize&&(U=Math.ceil(M/e.maxTextureSize),M=e.maxTextureSize);const C=new Float32Array(M*U*4*d),P=new su(C,M,U,d);P.type=oi,P.needsUpdate=!0;const D=b*4;for(let y=0;y<d;y++){const N=g[y],W=p[y],X=E[y],Q=M*U*4*y;for(let ne=0;ne<N.count;ne++){const G=ne*D;f===!0&&(i.fromBufferAttribute(N,ne),C[Q+G+0]=i.x,C[Q+G+1]=i.y,C[Q+G+2]=i.z,C[Q+G+3]=0),m===!0&&(i.fromBufferAttribute(W,ne),C[Q+G+4]=i.x,C[Q+G+5]=i.y,C[Q+G+6]=i.z,C[Q+G+7]=0),_===!0&&(i.fromBufferAttribute(X,ne),C[Q+G+8]=i.x,C[Q+G+9]=i.y,C[Q+G+10]=i.z,C[Q+G+11]=X.itemSize===4?i.w:1)}}u={count:d,texture:P,size:new Ze(M,U)},n.set(o,u),o.addEventListener("dispose",S)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(s,"morphTexture",a.morphTexture,t);else{let f=0;for(let _=0;_<c.length;_++)f+=c[_];const m=o.morphTargetsRelative?1:1-f;l.getUniforms().setValue(s,"morphTargetBaseInfluence",m),l.getUniforms().setValue(s,"morphTargetInfluences",c)}l.getUniforms().setValue(s,"morphTargetsTexture",u.texture,t),l.getUniforms().setValue(s,"morphTargetsTextureSize",u.size)}return{update:r}}function U1(s,e,t,n){let i=new WeakMap;function r(l){const c=n.render.frame,h=l.geometry,d=e.get(l,h);if(i.get(d)!==c&&(e.update(d),i.set(d,c)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),i.get(l)!==c&&(t.update(l.instanceMatrix,s.ARRAY_BUFFER),l.instanceColor!==null&&t.update(l.instanceColor,s.ARRAY_BUFFER),i.set(l,c))),l.isSkinnedMesh){const u=l.skeleton;i.get(u)!==c&&(u.update(),i.set(u,c))}return d}function a(){i=new WeakMap}function o(l){const c=l.target;c.removeEventListener("dispose",o),t.remove(c.instanceMatrix),c.instanceColor!==null&&t.remove(c.instanceColor)}return{update:r,dispose:a}}const Ru=new bn,th=new gu(1,1),Lu=new su,Pu=new Sf,Du=new hu,nh=[],ih=[],sh=new Float32Array(16),rh=new Float32Array(9),ah=new Float32Array(4);function ks(s,e,t){const n=s[0];if(n<=0||n>0)return s;const i=e*t;let r=nh[i];if(r===void 0&&(r=new Float32Array(i),nh[i]=r),e!==0){n.toArray(r,0);for(let a=1,o=0;a!==e;++a)o+=t,s[a].toArray(r,o)}return r}function mn(s,e){if(s.length!==e.length)return!1;for(let t=0,n=s.length;t<n;t++)if(s[t]!==e[t])return!1;return!0}function gn(s,e){for(let t=0,n=e.length;t<n;t++)s[t]=e[t]}function Ta(s,e){let t=ih[e];t===void 0&&(t=new Int32Array(e),ih[e]=t);for(let n=0;n!==e;++n)t[n]=s.allocateTextureUnit();return t}function N1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1f(this.addr,e),t[0]=e)}function I1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(mn(t,e))return;s.uniform2fv(this.addr,e),gn(t,e)}}function F1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(s.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(mn(t,e))return;s.uniform3fv(this.addr,e),gn(t,e)}}function O1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(mn(t,e))return;s.uniform4fv(this.addr,e),gn(t,e)}}function z1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,e))return;s.uniformMatrix2fv(this.addr,!1,e),gn(t,e)}else{if(mn(t,n))return;ah.set(n),s.uniformMatrix2fv(this.addr,!1,ah),gn(t,n)}}function B1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,e))return;s.uniformMatrix3fv(this.addr,!1,e),gn(t,e)}else{if(mn(t,n))return;rh.set(n),s.uniformMatrix3fv(this.addr,!1,rh),gn(t,n)}}function k1(s,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,e))return;s.uniformMatrix4fv(this.addr,!1,e),gn(t,e)}else{if(mn(t,n))return;sh.set(n),s.uniformMatrix4fv(this.addr,!1,sh),gn(t,n)}}function V1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1i(this.addr,e),t[0]=e)}function H1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(mn(t,e))return;s.uniform2iv(this.addr,e),gn(t,e)}}function G1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(mn(t,e))return;s.uniform3iv(this.addr,e),gn(t,e)}}function W1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(mn(t,e))return;s.uniform4iv(this.addr,e),gn(t,e)}}function X1(s,e){const t=this.cache;t[0]!==e&&(s.uniform1ui(this.addr,e),t[0]=e)}function q1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(mn(t,e))return;s.uniform2uiv(this.addr,e),gn(t,e)}}function j1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(mn(t,e))return;s.uniform3uiv(this.addr,e),gn(t,e)}}function Y1(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(mn(t,e))return;s.uniform4uiv(this.addr,e),gn(t,e)}}function $1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i);let r;this.type===s.SAMPLER_2D_SHADOW?(th.compareFunction=nu,r=th):r=Ru,t.setTexture2D(e||r,i)}function J1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTexture3D(e||Pu,i)}function K1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTextureCube(e||Du,i)}function Z1(s,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i&&(s.uniform1i(this.addr,i),n[0]=i),t.setTexture2DArray(e||Lu,i)}function Q1(s){switch(s){case 5126:return N1;case 35664:return I1;case 35665:return F1;case 35666:return O1;case 35674:return z1;case 35675:return B1;case 35676:return k1;case 5124:case 35670:return V1;case 35667:case 35671:return H1;case 35668:case 35672:return G1;case 35669:case 35673:return W1;case 5125:return X1;case 36294:return q1;case 36295:return j1;case 36296:return Y1;case 35678:case 36198:case 36298:case 36306:case 35682:return $1;case 35679:case 36299:case 36307:return J1;case 35680:case 36300:case 36308:case 36293:return K1;case 36289:case 36303:case 36311:case 36292:return Z1}}function e2(s,e){s.uniform1fv(this.addr,e)}function t2(s,e){const t=ks(e,this.size,2);s.uniform2fv(this.addr,t)}function n2(s,e){const t=ks(e,this.size,3);s.uniform3fv(this.addr,t)}function i2(s,e){const t=ks(e,this.size,4);s.uniform4fv(this.addr,t)}function s2(s,e){const t=ks(e,this.size,4);s.uniformMatrix2fv(this.addr,!1,t)}function r2(s,e){const t=ks(e,this.size,9);s.uniformMatrix3fv(this.addr,!1,t)}function a2(s,e){const t=ks(e,this.size,16);s.uniformMatrix4fv(this.addr,!1,t)}function o2(s,e){s.uniform1iv(this.addr,e)}function l2(s,e){s.uniform2iv(this.addr,e)}function c2(s,e){s.uniform3iv(this.addr,e)}function h2(s,e){s.uniform4iv(this.addr,e)}function u2(s,e){s.uniform1uiv(this.addr,e)}function d2(s,e){s.uniform2uiv(this.addr,e)}function f2(s,e){s.uniform3uiv(this.addr,e)}function p2(s,e){s.uniform4uiv(this.addr,e)}function m2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);mn(n,r)||(s.uniform1iv(this.addr,r),gn(n,r));for(let a=0;a!==i;++a)t.setTexture2D(e[a]||Ru,r[a])}function g2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);mn(n,r)||(s.uniform1iv(this.addr,r),gn(n,r));for(let a=0;a!==i;++a)t.setTexture3D(e[a]||Pu,r[a])}function _2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);mn(n,r)||(s.uniform1iv(this.addr,r),gn(n,r));for(let a=0;a!==i;++a)t.setTextureCube(e[a]||Du,r[a])}function v2(s,e,t){const n=this.cache,i=e.length,r=Ta(t,i);mn(n,r)||(s.uniform1iv(this.addr,r),gn(n,r));for(let a=0;a!==i;++a)t.setTexture2DArray(e[a]||Lu,r[a])}function x2(s){switch(s){case 5126:return e2;case 35664:return t2;case 35665:return n2;case 35666:return i2;case 35674:return s2;case 35675:return r2;case 35676:return a2;case 5124:case 35670:return o2;case 35667:case 35671:return l2;case 35668:case 35672:return c2;case 35669:case 35673:return h2;case 5125:return u2;case 36294:return d2;case 36295:return f2;case 36296:return p2;case 35678:case 36198:case 36298:case 36306:case 35682:return m2;case 35679:case 36299:case 36307:return g2;case 35680:case 36300:case 36308:case 36293:return _2;case 36289:case 36303:case 36311:case 36292:return v2}}class y2{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=Q1(t.type)}}class M2{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=x2(t.type)}}class S2{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const i=this.seq;for(let r=0,a=i.length;r!==a;++r){const o=i[r];o.setValue(e,t[o.id],n)}}}const po=/(\w+)(\])?(\[|\.)?/g;function oh(s,e){s.seq.push(e),s.map[e.id]=e}function b2(s,e,t){const n=s.name,i=n.length;for(po.lastIndex=0;;){const r=po.exec(n),a=po.lastIndex;let o=r[1];const l=r[2]==="]",c=r[3];if(l&&(o=o|0),c===void 0||c==="["&&a+2===i){oh(t,c===void 0?new y2(o,s,e):new M2(o,s,e));break}else{let d=t.map[o];d===void 0&&(d=new S2(o),oh(t,d)),t=d}}}class aa{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let i=0;i<n;++i){const r=e.getActiveUniform(t,i),a=e.getUniformLocation(t,r.name);b2(r,a,this)}}setValue(e,t,n,i){const r=this.map[t];r!==void 0&&r.setValue(e,n,i)}setOptional(e,t,n){const i=t[n];i!==void 0&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let r=0,a=t.length;r!==a;++r){const o=t[r],l=n[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,i)}}static seqWithValue(e,t){const n=[];for(let i=0,r=e.length;i!==r;++i){const a=e[i];a.id in t&&n.push(a)}return n}}function lh(s,e,t){const n=s.createShader(e);return s.shaderSource(n,t),s.compileShader(n),n}const E2=37297;let A2=0;function w2(s,e){const t=s.split(`
|
|
3725
3725
|
`),n=[],i=Math.max(e-6,0),r=Math.min(e+6,t.length);for(let a=i;a<r;a++){const o=a+1;n.push(`${o===e?">":" "} ${o}: ${t[a]}`)}return n.join(`
|
|
3726
3726
|
`)}const ch=new Ft;function T2(s){Vt._getMatrix(ch,Vt.workingColorSpace,s);const e=`mat3( ${ch.elements.map(t=>t.toFixed(4))} )`;switch(Vt.getTransfer(s)){case da:return[e,"LinearTransferOETF"];case tn:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",s),[e,"LinearTransferOETF"]}}function hh(s,e,t){const n=s.getShaderParameter(e,s.COMPILE_STATUS),i=s.getShaderInfoLog(e).trim();if(n&&i==="")return"";const r=/ERROR: 0:(\d+)/.exec(i);if(r){const a=parseInt(r[1]);return t.toUpperCase()+`
|
|
3727
3727
|
|
|
@@ -3731,7 +3731,7 @@ void main() {
|
|
|
3731
3731
|
`)}function R2(s,e){let t;switch(e){case Pd:t="Linear";break;case Dd:t="Reinhard";break;case Ud:t="Cineon";break;case qh:t="ACESFilmic";break;case Id:t="AgX";break;case Fd:t="Neutral";break;case Nd:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+s+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const Xr=new I;function L2(){Vt.getLuminanceCoefficients(Xr);const s=Xr.x.toFixed(4),e=Xr.y.toFixed(4),t=Xr.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${s}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(`
|
|
3732
3732
|
`)}function P2(s){return[s.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",s.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Ks).join(`
|
|
3733
3733
|
`)}function D2(s){const e=[];for(const t in s){const n=s[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(`
|
|
3734
|
-
`)}function U2(s,e){const t={},n=s.getProgramParameter(e,s.ACTIVE_ATTRIBUTES);for(let i=0;i<n;i++){const r=s.getActiveAttrib(e,i),a=r.name;let o=1;r.type===s.FLOAT_MAT2&&(o=2),r.type===s.FLOAT_MAT3&&(o=3),r.type===s.FLOAT_MAT4&&(o=4),t[a]={type:r.type,location:s.getAttribLocation(e,a),locationSize:o}}return t}function Ks(s){return s!==""}function uh(s,e){const t=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return s.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function dh(s,e){return s.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const N2=/^[ \t]*#include +<([\w\d./]+)>/gm;function ul(s){return s.replace(N2,F2)}const I2=new Map;function F2(s,e){let t=
|
|
3734
|
+
`)}function U2(s,e){const t={},n=s.getProgramParameter(e,s.ACTIVE_ATTRIBUTES);for(let i=0;i<n;i++){const r=s.getActiveAttrib(e,i),a=r.name;let o=1;r.type===s.FLOAT_MAT2&&(o=2),r.type===s.FLOAT_MAT3&&(o=3),r.type===s.FLOAT_MAT4&&(o=4),t[a]={type:r.type,location:s.getAttribLocation(e,a),locationSize:o}}return t}function Ks(s){return s!==""}function uh(s,e){const t=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return s.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function dh(s,e){return s.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const N2=/^[ \t]*#include +<([\w\d./]+)>/gm;function ul(s){return s.replace(N2,F2)}const I2=new Map;function F2(s,e){let t=Bt[e];if(t===void 0){const n=I2.get(e);if(n!==void 0)t=Bt[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return ul(t)}const O2=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function fh(s){return s.replace(O2,z2)}function z2(s,e,t,n){let i="";for(let r=parseInt(e);r<parseInt(t);r++)i+=n.replace(/\[\s*i\s*\]/g,"[ "+r+" ]").replace(/UNROLLED_LOOP_INDEX/g,r);return i}function ph(s){let e=`precision ${s.precision} float;
|
|
3735
3735
|
precision ${s.precision} int;
|
|
3736
3736
|
precision ${s.precision} sampler2D;
|
|
3737
3737
|
precision ${s.precision} samplerCube;
|
|
@@ -3758,21 +3758,21 @@ void main() {
|
|
|
3758
3758
|
`),p.length>0&&(p+=`
|
|
3759
3759
|
`)):(g=[ph(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",`
|
|
3760
3760
|
`].filter(Ks).join(`
|
|
3761
|
-
`),p=[ph(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",t.envMap?"#define "+d:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==
|
|
3761
|
+
`),p=[ph(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",t.envMap?"#define "+d:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Oi?"#define TONE_MAPPING":"",t.toneMapping!==Oi?Bt.tonemapping_pars_fragment:"",t.toneMapping!==Oi?R2("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Bt.colorspace_pars_fragment,C2("linearToOutputTexel",t.outputColorSpace),L2(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",`
|
|
3762
3762
|
`].filter(Ks).join(`
|
|
3763
3763
|
`)),a=ul(a),a=uh(a,t),a=dh(a,t),o=ul(o),o=uh(o,t),o=dh(o,t),a=fh(a),o=fh(o),t.isRawShaderMaterial!==!0&&(E=`#version 300 es
|
|
3764
3764
|
`,g=[f,"#define attribute in","#define varying out","#define texture2D texture"].join(`
|
|
3765
3765
|
`)+`
|
|
3766
3766
|
`+g,p=["#define varying in",t.glslVersion===nc?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===nc?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
|
|
3767
3767
|
`)+`
|
|
3768
|
-
`+p);const b=E+g+a,M=E+p+o,U=lh(i,i.VERTEX_SHADER,b),C=lh(i,i.FRAGMENT_SHADER,M);i.attachShader(_,U),i.attachShader(_,C),t.index0AttributeName!==void 0?i.bindAttribLocation(_,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(_,0,"position"),i.linkProgram(_);function P(N){if(s.debug.checkShaderErrors){const W=i.getProgramInfoLog(_).trim(),X=i.getShaderInfoLog(U).trim(),Q=i.getShaderInfoLog(C).trim();let ne=!0,G=!0;if(i.getProgramParameter(_,i.LINK_STATUS)===!1)if(ne=!1,typeof s.debug.onShaderError=="function")s.debug.onShaderError(i,_,U,C);else{const re=hh(i,U,"vertex"),
|
|
3768
|
+
`+p);const b=E+g+a,M=E+p+o,U=lh(i,i.VERTEX_SHADER,b),C=lh(i,i.FRAGMENT_SHADER,M);i.attachShader(_,U),i.attachShader(_,C),t.index0AttributeName!==void 0?i.bindAttribLocation(_,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(_,0,"position"),i.linkProgram(_);function P(N){if(s.debug.checkShaderErrors){const W=i.getProgramInfoLog(_).trim(),X=i.getShaderInfoLog(U).trim(),Q=i.getShaderInfoLog(C).trim();let ne=!0,G=!0;if(i.getProgramParameter(_,i.LINK_STATUS)===!1)if(ne=!1,typeof s.debug.onShaderError=="function")s.debug.onShaderError(i,_,U,C);else{const re=hh(i,U,"vertex"),Z=hh(i,C,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(_,i.VALIDATE_STATUS)+`
|
|
3769
3769
|
|
|
3770
3770
|
Material Name: `+N.name+`
|
|
3771
3771
|
Material Type: `+N.type+`
|
|
3772
3772
|
|
|
3773
3773
|
Program Info Log: `+W+`
|
|
3774
3774
|
`+re+`
|
|
3775
|
-
`+K)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(X===""||Q==="")&&(G=!1);G&&(N.diagnostics={runnable:ne,programLog:W,vertexShader:{log:X,prefix:g},fragmentShader:{log:Q,prefix:p}})}i.deleteShader(U),i.deleteShader(C),D=new aa(i,_),S=U2(i,_)}let D;this.getUniforms=function(){return D===void 0&&P(this),D};let S;this.getAttributes=function(){return S===void 0&&P(this),S};let y=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return y===!1&&(y=i.getProgramParameter(_,E2)),y},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=A2++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=U,this.fragmentShader=C,this}let X2=0;class q2{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(i)===!1&&(a.add(i),i.usedTimes++),a.has(r)===!1&&(a.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new j2(e),t.set(e,n)),n}}class j2{constructor(e){this.id=X2++,this.code=e,this.usedTimes=0}}function Y2(s,e,t,n,i,r,a){const o=new Rl,l=new q2,c=new Set,h=[],d=i.logarithmicDepthBuffer,u=i.vertexTextures;let f=i.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function _(S){return c.add(S),S===0?"uv":`uv${S}`}function g(S,y,N,W,X){const Q=W.fog,ne=X.geometry,G=S.isMeshStandardMaterial?W.environment:null,re=(S.isMeshStandardMaterial?t:e).get(S.envMap||G),K=re&&re.mapping===ya?re.image.height:null,ge=m[S.type];S.precision!==null&&(f=i.getMaxPrecision(S.precision),f!==S.precision&&console.warn("THREE.WebGLProgram.getParameters:",S.precision,"not supported, using",f,"instead."));const be=ne.morphAttributes.position||ne.morphAttributes.normal||ne.morphAttributes.color,Ce=be!==void 0?be.length:0;let Ie=0;ne.morphAttributes.position!==void 0&&(Ie=1),ne.morphAttributes.normal!==void 0&&(Ie=2),ne.morphAttributes.color!==void 0&&(Ie=3);let He,J,ae,le;if(ge){const ue=Un[ge];He=ue.vertexShader,J=ue.fragmentShader}else He=S.vertexShader,J=S.fragmentShader,l.update(S),ae=l.getVertexShaderID(S),le=l.getFragmentShaderID(S);const ce=s.getRenderTarget(),Le=s.state.buffers.depth.getReversed(),ve=X.isInstancedMesh===!0,Ae=X.isBatchedMesh===!0,st=!!S.map,wt=!!S.matcap,yt=!!re,O=!!S.aoMap,Gt=!!S.lightMap,Lt=!!S.bumpMap,Tt=!!S.normalMap,Ge=!!S.displacementMap,pt=!!S.emissiveMap,Xe=!!S.metalnessMap,ut=!!S.roughnessMap,rn=S.anisotropy>0,F=S.clearcoat>0,A=S.dispersion>0,ee=S.iridescence>0,fe=S.sheen>0,xe=S.transmission>0,he=rn&&!!S.anisotropyMap,rt=F&&!!S.clearcoatMap,Be=F&&!!S.clearcoatNormalMap,Ze=F&&!!S.clearcoatRoughnessMap,at=ee&&!!S.iridescenceMap,ye=ee&&!!S.iridescenceThicknessMap,Ye=fe&&!!S.sheenColorMap,_t=fe&&!!S.sheenRoughnessMap,mt=!!S.specularMap,ke=!!S.specularColorMap,Mt=!!S.specularIntensityMap,q=xe&&!!S.transmissionMap,qe=xe&&!!S.thicknessMap,Me=!!S.gradientMap,z=!!S.alphaMap,B=S.alphaTest>0,k=!!S.alphaHash,te=!!S.extensions;let se=zi;S.toneMapped&&(ce===null||ce.isXRRenderTarget===!0)&&(se=s.toneMapping);const oe={shaderID:ge,shaderType:S.type,shaderName:S.name,vertexShader:He,fragmentShader:J,defines:S.defines,customVertexShaderID:ae,customFragmentShaderID:le,isRawShaderMaterial:S.isRawShaderMaterial===!0,glslVersion:S.glslVersion,precision:f,batching:Ae,batchingColor:Ae&&X._colorsTexture!==null,instancing:ve,instancingColor:ve&&X.instanceColor!==null,instancingMorph:ve&&X.morphTexture!==null,supportsVertexTextures:u,outputColorSpace:ce===null?s.outputColorSpace:ce.isXRRenderTarget===!0?ce.texture.colorSpace:Ds,alphaToCoverage:!!S.alphaToCoverage,map:st,matcap:wt,envMap:yt,envMapMode:yt&&re.mapping,envMapCubeUVHeight:K,aoMap:O,lightMap:Gt,bumpMap:Lt,normalMap:Tt,displacementMap:u&&Ge,emissiveMap:pt,normalMapObjectSpace:Tt&&S.normalMapType===Hd,normalMapTangentSpace:Tt&&S.normalMapType===Ma,metalnessMap:Xe,roughnessMap:ut,anisotropy:rn,anisotropyMap:he,clearcoat:F,clearcoatMap:rt,clearcoatNormalMap:Be,clearcoatRoughnessMap:Ze,dispersion:A,iridescence:ee,iridescenceMap:at,iridescenceThicknessMap:ye,sheen:fe,sheenColorMap:Ye,sheenRoughnessMap:_t,specularMap:mt,specularColorMap:ke,specularIntensityMap:Mt,transmission:xe,transmissionMap:q,thicknessMap:qe,gradientMap:Me,opaque:S.transparent===!1&&S.blending===As&&S.alphaToCoverage===!1,alphaMap:z,alphaTest:B,alphaHash:k,combine:S.combine,mapUv:st&&_(S.map.channel),aoMapUv:O&&_(S.aoMap.channel),lightMapUv:Gt&&_(S.lightMap.channel),bumpMapUv:Lt&&_(S.bumpMap.channel),normalMapUv:Tt&&_(S.normalMap.channel),displacementMapUv:Ge&&_(S.displacementMap.channel),emissiveMapUv:pt&&_(S.emissiveMap.channel),metalnessMapUv:Xe&&_(S.metalnessMap.channel),roughnessMapUv:ut&&_(S.roughnessMap.channel),anisotropyMapUv:he&&_(S.anisotropyMap.channel),clearcoatMapUv:rt&&_(S.clearcoatMap.channel),clearcoatNormalMapUv:Be&&_(S.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ze&&_(S.clearcoatRoughnessMap.channel),iridescenceMapUv:at&&_(S.iridescenceMap.channel),iridescenceThicknessMapUv:ye&&_(S.iridescenceThicknessMap.channel),sheenColorMapUv:Ye&&_(S.sheenColorMap.channel),sheenRoughnessMapUv:_t&&_(S.sheenRoughnessMap.channel),specularMapUv:mt&&_(S.specularMap.channel),specularColorMapUv:ke&&_(S.specularColorMap.channel),specularIntensityMapUv:Mt&&_(S.specularIntensityMap.channel),transmissionMapUv:q&&_(S.transmissionMap.channel),thicknessMapUv:qe&&_(S.thicknessMap.channel),alphaMapUv:z&&_(S.alphaMap.channel),vertexTangents:!!ne.attributes.tangent&&(Tt||rn),vertexColors:S.vertexColors,vertexAlphas:S.vertexColors===!0&&!!ne.attributes.color&&ne.attributes.color.itemSize===4,pointsUvs:X.isPoints===!0&&!!ne.attributes.uv&&(st||z),fog:!!Q,useFog:S.fog===!0,fogExp2:!!Q&&Q.isFogExp2,flatShading:S.flatShading===!0,sizeAttenuation:S.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:Le,skinning:X.isSkinnedMesh===!0,morphTargets:ne.morphAttributes.position!==void 0,morphNormals:ne.morphAttributes.normal!==void 0,morphColors:ne.morphAttributes.color!==void 0,morphTargetsCount:Ce,morphTextureStride:Ie,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:S.dithering,shadowMapEnabled:s.shadowMap.enabled&&N.length>0,shadowMapType:s.shadowMap.type,toneMapping:se,decodeVideoTexture:st&&S.map.isVideoTexture===!0&&Vt.getTransfer(S.map.colorSpace)===tn,decodeVideoTextureEmissive:pt&&S.emissiveMap.isVideoTexture===!0&&Vt.getTransfer(S.emissiveMap.colorSpace)===tn,premultipliedAlpha:S.premultipliedAlpha,doubleSided:S.side===wn,flipSided:S.side===Rn,useDepthPacking:S.depthPacking>=0,depthPacking:S.depthPacking||0,index0AttributeName:S.index0AttributeName,extensionClipCullDistance:te&&S.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(te&&S.extensions.multiDraw===!0||Ae)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:S.customProgramCacheKey()};return oe.vertexUv1s=c.has(1),oe.vertexUv2s=c.has(2),oe.vertexUv3s=c.has(3),c.clear(),oe}function p(S){const y=[];if(S.shaderID?y.push(S.shaderID):(y.push(S.customVertexShaderID),y.push(S.customFragmentShaderID)),S.defines!==void 0)for(const N in S.defines)y.push(N),y.push(S.defines[N]);return S.isRawShaderMaterial===!1&&(E(y,S),b(y,S),y.push(s.outputColorSpace)),y.push(S.customProgramCacheKey),y.join()}function E(S,y){S.push(y.precision),S.push(y.outputColorSpace),S.push(y.envMapMode),S.push(y.envMapCubeUVHeight),S.push(y.mapUv),S.push(y.alphaMapUv),S.push(y.lightMapUv),S.push(y.aoMapUv),S.push(y.bumpMapUv),S.push(y.normalMapUv),S.push(y.displacementMapUv),S.push(y.emissiveMapUv),S.push(y.metalnessMapUv),S.push(y.roughnessMapUv),S.push(y.anisotropyMapUv),S.push(y.clearcoatMapUv),S.push(y.clearcoatNormalMapUv),S.push(y.clearcoatRoughnessMapUv),S.push(y.iridescenceMapUv),S.push(y.iridescenceThicknessMapUv),S.push(y.sheenColorMapUv),S.push(y.sheenRoughnessMapUv),S.push(y.specularMapUv),S.push(y.specularColorMapUv),S.push(y.specularIntensityMapUv),S.push(y.transmissionMapUv),S.push(y.thicknessMapUv),S.push(y.combine),S.push(y.fogExp2),S.push(y.sizeAttenuation),S.push(y.morphTargetsCount),S.push(y.morphAttributeCount),S.push(y.numDirLights),S.push(y.numPointLights),S.push(y.numSpotLights),S.push(y.numSpotLightMaps),S.push(y.numHemiLights),S.push(y.numRectAreaLights),S.push(y.numDirLightShadows),S.push(y.numPointLightShadows),S.push(y.numSpotLightShadows),S.push(y.numSpotLightShadowsWithMaps),S.push(y.numLightProbes),S.push(y.shadowMapType),S.push(y.toneMapping),S.push(y.numClippingPlanes),S.push(y.numClipIntersection),S.push(y.depthPacking)}function b(S,y){o.disableAll(),y.supportsVertexTextures&&o.enable(0),y.instancing&&o.enable(1),y.instancingColor&&o.enable(2),y.instancingMorph&&o.enable(3),y.matcap&&o.enable(4),y.envMap&&o.enable(5),y.normalMapObjectSpace&&o.enable(6),y.normalMapTangentSpace&&o.enable(7),y.clearcoat&&o.enable(8),y.iridescence&&o.enable(9),y.alphaTest&&o.enable(10),y.vertexColors&&o.enable(11),y.vertexAlphas&&o.enable(12),y.vertexUv1s&&o.enable(13),y.vertexUv2s&&o.enable(14),y.vertexUv3s&&o.enable(15),y.vertexTangents&&o.enable(16),y.anisotropy&&o.enable(17),y.alphaHash&&o.enable(18),y.batching&&o.enable(19),y.dispersion&&o.enable(20),y.batchingColor&&o.enable(21),S.push(o.mask),o.disableAll(),y.fog&&o.enable(0),y.useFog&&o.enable(1),y.flatShading&&o.enable(2),y.logarithmicDepthBuffer&&o.enable(3),y.reverseDepthBuffer&&o.enable(4),y.skinning&&o.enable(5),y.morphTargets&&o.enable(6),y.morphNormals&&o.enable(7),y.morphColors&&o.enable(8),y.premultipliedAlpha&&o.enable(9),y.shadowMapEnabled&&o.enable(10),y.doubleSided&&o.enable(11),y.flipSided&&o.enable(12),y.useDepthPacking&&o.enable(13),y.dithering&&o.enable(14),y.transmission&&o.enable(15),y.sheen&&o.enable(16),y.opaque&&o.enable(17),y.pointsUvs&&o.enable(18),y.decodeVideoTexture&&o.enable(19),y.decodeVideoTextureEmissive&&o.enable(20),y.alphaToCoverage&&o.enable(21),S.push(o.mask)}function M(S){const y=m[S.type];let N;if(y){const W=Un[y];N=Ll.clone(W.uniforms)}else N=S.uniforms;return N}function U(S,y){let N;for(let W=0,X=h.length;W<X;W++){const Q=h[W];if(Q.cacheKey===y){N=Q,++N.usedTimes;break}}return N===void 0&&(N=new W2(s,y,S,r),h.push(N)),N}function C(S){if(--S.usedTimes===0){const y=h.indexOf(S);h[y]=h[h.length-1],h.pop(),S.destroy()}}function P(S){l.remove(S)}function D(){l.dispose()}return{getParameters:g,getProgramCacheKey:p,getUniforms:M,acquireProgram:U,releaseProgram:C,releaseShaderCache:P,programs:h,dispose:D}}function $2(){let s=new WeakMap;function e(a){return s.has(a)}function t(a){let o=s.get(a);return o===void 0&&(o={},s.set(a,o)),o}function n(a){s.delete(a)}function i(a,o,l){s.get(a)[o]=l}function r(){s=new WeakMap}return{has:e,get:t,remove:n,update:i,dispose:r}}function J2(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.material.id!==e.material.id?s.material.id-e.material.id:s.z!==e.z?s.z-e.z:s.id-e.id}function mh(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?e.z-s.z:s.id-e.id}function gh(){const s=[];let e=0;const t=[],n=[],i=[];function r(){e=0,t.length=0,n.length=0,i.length=0}function a(d,u,f,m,_,g){let p=s[e];return p===void 0?(p={id:d.id,object:d,geometry:u,material:f,groupOrder:m,renderOrder:d.renderOrder,z:_,group:g},s[e]=p):(p.id=d.id,p.object=d,p.geometry=u,p.material=f,p.groupOrder=m,p.renderOrder=d.renderOrder,p.z=_,p.group=g),e++,p}function o(d,u,f,m,_,g){const p=a(d,u,f,m,_,g);f.transmission>0?n.push(p):f.transparent===!0?i.push(p):t.push(p)}function l(d,u,f,m,_,g){const p=a(d,u,f,m,_,g);f.transmission>0?n.unshift(p):f.transparent===!0?i.unshift(p):t.unshift(p)}function c(d,u){t.length>1&&t.sort(d||J2),n.length>1&&n.sort(u||mh),i.length>1&&i.sort(u||mh)}function h(){for(let d=e,u=s.length;d<u;d++){const f=s[d];if(f.id===null)break;f.id=null,f.object=null,f.geometry=null,f.material=null,f.group=null}}return{opaque:t,transmissive:n,transparent:i,init:r,push:o,unshift:l,finish:h,sort:c}}function K2(){let s=new WeakMap;function e(n,i){const r=s.get(n);let a;return r===void 0?(a=new gh,s.set(n,[a])):i>=r.length?(a=new gh,r.push(a)):a=r[i],a}function t(){s=new WeakMap}return{get:e,dispose:t}}function Z2(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new I,color:new gt};break;case"SpotLight":t={position:new I,direction:new I,color:new gt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new I,color:new gt,distance:0,decay:0};break;case"HemisphereLight":t={direction:new I,skyColor:new gt,groundColor:new gt};break;case"RectAreaLight":t={color:new gt,position:new I,halfWidth:new I,halfHeight:new I};break}return s[e.id]=t,t}}}function Q2(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ke};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ke};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ke,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}let eg=0;function tg(s,e){return(e.castShadow?2:0)-(s.castShadow?2:0)+(e.map?1:0)-(s.map?1:0)}function ng(s){const e=new Z2,t=Q2(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new I);const i=new I,r=new Et,a=new Et;function o(c){let h=0,d=0,u=0;for(let S=0;S<9;S++)n.probe[S].set(0,0,0);let f=0,m=0,_=0,g=0,p=0,E=0,b=0,M=0,U=0,C=0,P=0;c.sort(tg);for(let S=0,y=c.length;S<y;S++){const N=c[S],W=N.color,X=N.intensity,Q=N.distance,ne=N.shadow&&N.shadow.map?N.shadow.map.texture:null;if(N.isAmbientLight)h+=W.r*X,d+=W.g*X,u+=W.b*X;else if(N.isLightProbe){for(let G=0;G<9;G++)n.probe[G].addScaledVector(N.sh.coefficients[G],X);P++}else if(N.isDirectionalLight){const G=e.get(N);if(G.color.copy(N.color).multiplyScalar(N.intensity),N.castShadow){const re=N.shadow,K=t.get(N);K.shadowIntensity=re.intensity,K.shadowBias=re.bias,K.shadowNormalBias=re.normalBias,K.shadowRadius=re.radius,K.shadowMapSize=re.mapSize,n.directionalShadow[f]=K,n.directionalShadowMap[f]=ne,n.directionalShadowMatrix[f]=N.shadow.matrix,E++}n.directional[f]=G,f++}else if(N.isSpotLight){const G=e.get(N);G.position.setFromMatrixPosition(N.matrixWorld),G.color.copy(W).multiplyScalar(X),G.distance=Q,G.coneCos=Math.cos(N.angle),G.penumbraCos=Math.cos(N.angle*(1-N.penumbra)),G.decay=N.decay,n.spot[_]=G;const re=N.shadow;if(N.map&&(n.spotLightMap[U]=N.map,U++,re.updateMatrices(N),N.castShadow&&C++),n.spotLightMatrix[_]=re.matrix,N.castShadow){const K=t.get(N);K.shadowIntensity=re.intensity,K.shadowBias=re.bias,K.shadowNormalBias=re.normalBias,K.shadowRadius=re.radius,K.shadowMapSize=re.mapSize,n.spotShadow[_]=K,n.spotShadowMap[_]=ne,M++}_++}else if(N.isRectAreaLight){const G=e.get(N);G.color.copy(W).multiplyScalar(X),G.halfWidth.set(N.width*.5,0,0),G.halfHeight.set(0,N.height*.5,0),n.rectArea[g]=G,g++}else if(N.isPointLight){const G=e.get(N);if(G.color.copy(N.color).multiplyScalar(N.intensity),G.distance=N.distance,G.decay=N.decay,N.castShadow){const re=N.shadow,K=t.get(N);K.shadowIntensity=re.intensity,K.shadowBias=re.bias,K.shadowNormalBias=re.normalBias,K.shadowRadius=re.radius,K.shadowMapSize=re.mapSize,K.shadowCameraNear=re.camera.near,K.shadowCameraFar=re.camera.far,n.pointShadow[m]=K,n.pointShadowMap[m]=ne,n.pointShadowMatrix[m]=N.shadow.matrix,b++}n.point[m]=G,m++}else if(N.isHemisphereLight){const G=e.get(N);G.skyColor.copy(N.color).multiplyScalar(X),G.groundColor.copy(N.groundColor).multiplyScalar(X),n.hemi[p]=G,p++}}g>0&&(s.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=Ve.LTC_FLOAT_1,n.rectAreaLTC2=Ve.LTC_FLOAT_2):(n.rectAreaLTC1=Ve.LTC_HALF_1,n.rectAreaLTC2=Ve.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=d,n.ambient[2]=u;const D=n.hash;(D.directionalLength!==f||D.pointLength!==m||D.spotLength!==_||D.rectAreaLength!==g||D.hemiLength!==p||D.numDirectionalShadows!==E||D.numPointShadows!==b||D.numSpotShadows!==M||D.numSpotMaps!==U||D.numLightProbes!==P)&&(n.directional.length=f,n.spot.length=_,n.rectArea.length=g,n.point.length=m,n.hemi.length=p,n.directionalShadow.length=E,n.directionalShadowMap.length=E,n.pointShadow.length=b,n.pointShadowMap.length=b,n.spotShadow.length=M,n.spotShadowMap.length=M,n.directionalShadowMatrix.length=E,n.pointShadowMatrix.length=b,n.spotLightMatrix.length=M+U-C,n.spotLightMap.length=U,n.numSpotLightShadowsWithMaps=C,n.numLightProbes=P,D.directionalLength=f,D.pointLength=m,D.spotLength=_,D.rectAreaLength=g,D.hemiLength=p,D.numDirectionalShadows=E,D.numPointShadows=b,D.numSpotShadows=M,D.numSpotMaps=U,D.numLightProbes=P,n.version=eg++)}function l(c,h){let d=0,u=0,f=0,m=0,_=0;const g=h.matrixWorldInverse;for(let p=0,E=c.length;p<E;p++){const b=c[p];if(b.isDirectionalLight){const M=n.directional[d];M.direction.setFromMatrixPosition(b.matrixWorld),i.setFromMatrixPosition(b.target.matrixWorld),M.direction.sub(i),M.direction.transformDirection(g),d++}else if(b.isSpotLight){const M=n.spot[f];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),M.direction.setFromMatrixPosition(b.matrixWorld),i.setFromMatrixPosition(b.target.matrixWorld),M.direction.sub(i),M.direction.transformDirection(g),f++}else if(b.isRectAreaLight){const M=n.rectArea[m];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),a.identity(),r.copy(b.matrixWorld),r.premultiply(g),a.extractRotation(r),M.halfWidth.set(b.width*.5,0,0),M.halfHeight.set(0,b.height*.5,0),M.halfWidth.applyMatrix4(a),M.halfHeight.applyMatrix4(a),m++}else if(b.isPointLight){const M=n.point[u];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),u++}else if(b.isHemisphereLight){const M=n.hemi[_];M.direction.setFromMatrixPosition(b.matrixWorld),M.direction.transformDirection(g),_++}}}return{setup:o,setupView:l,state:n}}function _h(s){const e=new ng(s),t=[],n=[];function i(h){c.camera=h,t.length=0,n.length=0}function r(h){t.push(h)}function a(h){n.push(h)}function o(){e.setup(t)}function l(h){e.setupView(t,h)}const c={lightsArray:t,shadowsArray:n,camera:null,lights:e,transmissionRenderTarget:{}};return{init:i,state:c,setupLights:o,setupLightsView:l,pushLight:r,pushShadow:a}}function ig(s){let e=new WeakMap;function t(i,r=0){const a=e.get(i);let o;return a===void 0?(o=new _h(s),e.set(i,[o])):r>=a.length?(o=new _h(s),a.push(o)):o=a[r],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const sg=`void main() {
|
|
3775
|
+
`+Z)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(X===""||Q==="")&&(G=!1);G&&(N.diagnostics={runnable:ne,programLog:W,vertexShader:{log:X,prefix:g},fragmentShader:{log:Q,prefix:p}})}i.deleteShader(U),i.deleteShader(C),D=new aa(i,_),S=U2(i,_)}let D;this.getUniforms=function(){return D===void 0&&P(this),D};let S;this.getAttributes=function(){return S===void 0&&P(this),S};let y=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return y===!1&&(y=i.getProgramParameter(_,E2)),y},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=A2++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=U,this.fragmentShader=C,this}let X2=0;class q2{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(i)===!1&&(a.add(i),i.usedTimes++),a.has(r)===!1&&(a.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new j2(e),t.set(e,n)),n}}class j2{constructor(e){this.id=X2++,this.code=e,this.usedTimes=0}}function Y2(s,e,t,n,i,r,a){const o=new Rl,l=new q2,c=new Set,h=[],d=i.logarithmicDepthBuffer,u=i.vertexTextures;let f=i.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function _(S){return c.add(S),S===0?"uv":`uv${S}`}function g(S,y,N,W,X){const Q=W.fog,ne=X.geometry,G=S.isMeshStandardMaterial?W.environment:null,re=(S.isMeshStandardMaterial?t:e).get(S.envMap||G),Z=re&&re.mapping===ya?re.image.height:null,me=m[S.type];S.precision!==null&&(f=i.getMaxPrecision(S.precision),f!==S.precision&&console.warn("THREE.WebGLProgram.getParameters:",S.precision,"not supported, using",f,"instead."));const Ee=ne.morphAttributes.position||ne.morphAttributes.normal||ne.morphAttributes.color,Ce=Ee!==void 0?Ee.length:0;let Ne=0;ne.morphAttributes.position!==void 0&&(Ne=1),ne.morphAttributes.normal!==void 0&&(Ne=2),ne.morphAttributes.color!==void 0&&(Ne=3);let Ve,K,ae,le;if(me){const ue=Un[me];Ve=ue.vertexShader,K=ue.fragmentShader}else Ve=S.vertexShader,K=S.fragmentShader,l.update(S),ae=l.getVertexShaderID(S),le=l.getFragmentShaderID(S);const ce=s.getRenderTarget(),Le=s.state.buffers.depth.getReversed(),xe=X.isInstancedMesh===!0,we=X.isBatchedMesh===!0,st=!!S.map,Tt=!!S.matcap,Mt=!!re,O=!!S.aoMap,Gt=!!S.lightMap,Lt=!!S.bumpMap,Ct=!!S.normalMap,He=!!S.displacementMap,mt=!!S.emissiveMap,We=!!S.metalnessMap,dt=!!S.roughnessMap,rn=S.anisotropy>0,F=S.clearcoat>0,A=S.dispersion>0,ee=S.iridescence>0,fe=S.sheen>0,ye=S.transmission>0,he=rn&&!!S.anisotropyMap,rt=F&&!!S.clearcoatMap,ze=F&&!!S.clearcoatNormalMap,Qe=F&&!!S.clearcoatRoughnessMap,at=ee&&!!S.iridescenceMap,Me=ee&&!!S.iridescenceThicknessMap,Ye=fe&&!!S.sheenColorMap,vt=fe&&!!S.sheenRoughnessMap,gt=!!S.specularMap,Be=!!S.specularColorMap,St=!!S.specularIntensityMap,q=ye&&!!S.transmissionMap,Xe=ye&&!!S.thicknessMap,Se=!!S.gradientMap,z=!!S.alphaMap,B=S.alphaTest>0,k=!!S.alphaHash,te=!!S.extensions;let se=Oi;S.toneMapped&&(ce===null||ce.isXRRenderTarget===!0)&&(se=s.toneMapping);const oe={shaderID:me,shaderType:S.type,shaderName:S.name,vertexShader:Ve,fragmentShader:K,defines:S.defines,customVertexShaderID:ae,customFragmentShaderID:le,isRawShaderMaterial:S.isRawShaderMaterial===!0,glslVersion:S.glslVersion,precision:f,batching:we,batchingColor:we&&X._colorsTexture!==null,instancing:xe,instancingColor:xe&&X.instanceColor!==null,instancingMorph:xe&&X.morphTexture!==null,supportsVertexTextures:u,outputColorSpace:ce===null?s.outputColorSpace:ce.isXRRenderTarget===!0?ce.texture.colorSpace:Ds,alphaToCoverage:!!S.alphaToCoverage,map:st,matcap:Tt,envMap:Mt,envMapMode:Mt&&re.mapping,envMapCubeUVHeight:Z,aoMap:O,lightMap:Gt,bumpMap:Lt,normalMap:Ct,displacementMap:u&&He,emissiveMap:mt,normalMapObjectSpace:Ct&&S.normalMapType===Hd,normalMapTangentSpace:Ct&&S.normalMapType===Ma,metalnessMap:We,roughnessMap:dt,anisotropy:rn,anisotropyMap:he,clearcoat:F,clearcoatMap:rt,clearcoatNormalMap:ze,clearcoatRoughnessMap:Qe,dispersion:A,iridescence:ee,iridescenceMap:at,iridescenceThicknessMap:Me,sheen:fe,sheenColorMap:Ye,sheenRoughnessMap:vt,specularMap:gt,specularColorMap:Be,specularIntensityMap:St,transmission:ye,transmissionMap:q,thicknessMap:Xe,gradientMap:Se,opaque:S.transparent===!1&&S.blending===As&&S.alphaToCoverage===!1,alphaMap:z,alphaTest:B,alphaHash:k,combine:S.combine,mapUv:st&&_(S.map.channel),aoMapUv:O&&_(S.aoMap.channel),lightMapUv:Gt&&_(S.lightMap.channel),bumpMapUv:Lt&&_(S.bumpMap.channel),normalMapUv:Ct&&_(S.normalMap.channel),displacementMapUv:He&&_(S.displacementMap.channel),emissiveMapUv:mt&&_(S.emissiveMap.channel),metalnessMapUv:We&&_(S.metalnessMap.channel),roughnessMapUv:dt&&_(S.roughnessMap.channel),anisotropyMapUv:he&&_(S.anisotropyMap.channel),clearcoatMapUv:rt&&_(S.clearcoatMap.channel),clearcoatNormalMapUv:ze&&_(S.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Qe&&_(S.clearcoatRoughnessMap.channel),iridescenceMapUv:at&&_(S.iridescenceMap.channel),iridescenceThicknessMapUv:Me&&_(S.iridescenceThicknessMap.channel),sheenColorMapUv:Ye&&_(S.sheenColorMap.channel),sheenRoughnessMapUv:vt&&_(S.sheenRoughnessMap.channel),specularMapUv:gt&&_(S.specularMap.channel),specularColorMapUv:Be&&_(S.specularColorMap.channel),specularIntensityMapUv:St&&_(S.specularIntensityMap.channel),transmissionMapUv:q&&_(S.transmissionMap.channel),thicknessMapUv:Xe&&_(S.thicknessMap.channel),alphaMapUv:z&&_(S.alphaMap.channel),vertexTangents:!!ne.attributes.tangent&&(Ct||rn),vertexColors:S.vertexColors,vertexAlphas:S.vertexColors===!0&&!!ne.attributes.color&&ne.attributes.color.itemSize===4,pointsUvs:X.isPoints===!0&&!!ne.attributes.uv&&(st||z),fog:!!Q,useFog:S.fog===!0,fogExp2:!!Q&&Q.isFogExp2,flatShading:S.flatShading===!0,sizeAttenuation:S.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:Le,skinning:X.isSkinnedMesh===!0,morphTargets:ne.morphAttributes.position!==void 0,morphNormals:ne.morphAttributes.normal!==void 0,morphColors:ne.morphAttributes.color!==void 0,morphTargetsCount:Ce,morphTextureStride:Ne,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:S.dithering,shadowMapEnabled:s.shadowMap.enabled&&N.length>0,shadowMapType:s.shadowMap.type,toneMapping:se,decodeVideoTexture:st&&S.map.isVideoTexture===!0&&Vt.getTransfer(S.map.colorSpace)===tn,decodeVideoTextureEmissive:mt&&S.emissiveMap.isVideoTexture===!0&&Vt.getTransfer(S.emissiveMap.colorSpace)===tn,premultipliedAlpha:S.premultipliedAlpha,doubleSided:S.side===wn,flipSided:S.side===Rn,useDepthPacking:S.depthPacking>=0,depthPacking:S.depthPacking||0,index0AttributeName:S.index0AttributeName,extensionClipCullDistance:te&&S.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(te&&S.extensions.multiDraw===!0||we)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:S.customProgramCacheKey()};return oe.vertexUv1s=c.has(1),oe.vertexUv2s=c.has(2),oe.vertexUv3s=c.has(3),c.clear(),oe}function p(S){const y=[];if(S.shaderID?y.push(S.shaderID):(y.push(S.customVertexShaderID),y.push(S.customFragmentShaderID)),S.defines!==void 0)for(const N in S.defines)y.push(N),y.push(S.defines[N]);return S.isRawShaderMaterial===!1&&(E(y,S),b(y,S),y.push(s.outputColorSpace)),y.push(S.customProgramCacheKey),y.join()}function E(S,y){S.push(y.precision),S.push(y.outputColorSpace),S.push(y.envMapMode),S.push(y.envMapCubeUVHeight),S.push(y.mapUv),S.push(y.alphaMapUv),S.push(y.lightMapUv),S.push(y.aoMapUv),S.push(y.bumpMapUv),S.push(y.normalMapUv),S.push(y.displacementMapUv),S.push(y.emissiveMapUv),S.push(y.metalnessMapUv),S.push(y.roughnessMapUv),S.push(y.anisotropyMapUv),S.push(y.clearcoatMapUv),S.push(y.clearcoatNormalMapUv),S.push(y.clearcoatRoughnessMapUv),S.push(y.iridescenceMapUv),S.push(y.iridescenceThicknessMapUv),S.push(y.sheenColorMapUv),S.push(y.sheenRoughnessMapUv),S.push(y.specularMapUv),S.push(y.specularColorMapUv),S.push(y.specularIntensityMapUv),S.push(y.transmissionMapUv),S.push(y.thicknessMapUv),S.push(y.combine),S.push(y.fogExp2),S.push(y.sizeAttenuation),S.push(y.morphTargetsCount),S.push(y.morphAttributeCount),S.push(y.numDirLights),S.push(y.numPointLights),S.push(y.numSpotLights),S.push(y.numSpotLightMaps),S.push(y.numHemiLights),S.push(y.numRectAreaLights),S.push(y.numDirLightShadows),S.push(y.numPointLightShadows),S.push(y.numSpotLightShadows),S.push(y.numSpotLightShadowsWithMaps),S.push(y.numLightProbes),S.push(y.shadowMapType),S.push(y.toneMapping),S.push(y.numClippingPlanes),S.push(y.numClipIntersection),S.push(y.depthPacking)}function b(S,y){o.disableAll(),y.supportsVertexTextures&&o.enable(0),y.instancing&&o.enable(1),y.instancingColor&&o.enable(2),y.instancingMorph&&o.enable(3),y.matcap&&o.enable(4),y.envMap&&o.enable(5),y.normalMapObjectSpace&&o.enable(6),y.normalMapTangentSpace&&o.enable(7),y.clearcoat&&o.enable(8),y.iridescence&&o.enable(9),y.alphaTest&&o.enable(10),y.vertexColors&&o.enable(11),y.vertexAlphas&&o.enable(12),y.vertexUv1s&&o.enable(13),y.vertexUv2s&&o.enable(14),y.vertexUv3s&&o.enable(15),y.vertexTangents&&o.enable(16),y.anisotropy&&o.enable(17),y.alphaHash&&o.enable(18),y.batching&&o.enable(19),y.dispersion&&o.enable(20),y.batchingColor&&o.enable(21),S.push(o.mask),o.disableAll(),y.fog&&o.enable(0),y.useFog&&o.enable(1),y.flatShading&&o.enable(2),y.logarithmicDepthBuffer&&o.enable(3),y.reverseDepthBuffer&&o.enable(4),y.skinning&&o.enable(5),y.morphTargets&&o.enable(6),y.morphNormals&&o.enable(7),y.morphColors&&o.enable(8),y.premultipliedAlpha&&o.enable(9),y.shadowMapEnabled&&o.enable(10),y.doubleSided&&o.enable(11),y.flipSided&&o.enable(12),y.useDepthPacking&&o.enable(13),y.dithering&&o.enable(14),y.transmission&&o.enable(15),y.sheen&&o.enable(16),y.opaque&&o.enable(17),y.pointsUvs&&o.enable(18),y.decodeVideoTexture&&o.enable(19),y.decodeVideoTextureEmissive&&o.enable(20),y.alphaToCoverage&&o.enable(21),S.push(o.mask)}function M(S){const y=m[S.type];let N;if(y){const W=Un[y];N=Ll.clone(W.uniforms)}else N=S.uniforms;return N}function U(S,y){let N;for(let W=0,X=h.length;W<X;W++){const Q=h[W];if(Q.cacheKey===y){N=Q,++N.usedTimes;break}}return N===void 0&&(N=new W2(s,y,S,r),h.push(N)),N}function C(S){if(--S.usedTimes===0){const y=h.indexOf(S);h[y]=h[h.length-1],h.pop(),S.destroy()}}function P(S){l.remove(S)}function D(){l.dispose()}return{getParameters:g,getProgramCacheKey:p,getUniforms:M,acquireProgram:U,releaseProgram:C,releaseShaderCache:P,programs:h,dispose:D}}function $2(){let s=new WeakMap;function e(a){return s.has(a)}function t(a){let o=s.get(a);return o===void 0&&(o={},s.set(a,o)),o}function n(a){s.delete(a)}function i(a,o,l){s.get(a)[o]=l}function r(){s=new WeakMap}return{has:e,get:t,remove:n,update:i,dispose:r}}function J2(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.material.id!==e.material.id?s.material.id-e.material.id:s.z!==e.z?s.z-e.z:s.id-e.id}function mh(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?e.z-s.z:s.id-e.id}function gh(){const s=[];let e=0;const t=[],n=[],i=[];function r(){e=0,t.length=0,n.length=0,i.length=0}function a(d,u,f,m,_,g){let p=s[e];return p===void 0?(p={id:d.id,object:d,geometry:u,material:f,groupOrder:m,renderOrder:d.renderOrder,z:_,group:g},s[e]=p):(p.id=d.id,p.object=d,p.geometry=u,p.material=f,p.groupOrder=m,p.renderOrder=d.renderOrder,p.z=_,p.group=g),e++,p}function o(d,u,f,m,_,g){const p=a(d,u,f,m,_,g);f.transmission>0?n.push(p):f.transparent===!0?i.push(p):t.push(p)}function l(d,u,f,m,_,g){const p=a(d,u,f,m,_,g);f.transmission>0?n.unshift(p):f.transparent===!0?i.unshift(p):t.unshift(p)}function c(d,u){t.length>1&&t.sort(d||J2),n.length>1&&n.sort(u||mh),i.length>1&&i.sort(u||mh)}function h(){for(let d=e,u=s.length;d<u;d++){const f=s[d];if(f.id===null)break;f.id=null,f.object=null,f.geometry=null,f.material=null,f.group=null}}return{opaque:t,transmissive:n,transparent:i,init:r,push:o,unshift:l,finish:h,sort:c}}function K2(){let s=new WeakMap;function e(n,i){const r=s.get(n);let a;return r===void 0?(a=new gh,s.set(n,[a])):i>=r.length?(a=new gh,r.push(a)):a=r[i],a}function t(){s=new WeakMap}return{get:e,dispose:t}}function Z2(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new I,color:new _t};break;case"SpotLight":t={position:new I,direction:new I,color:new _t,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new I,color:new _t,distance:0,decay:0};break;case"HemisphereLight":t={direction:new I,skyColor:new _t,groundColor:new _t};break;case"RectAreaLight":t={color:new _t,position:new I,halfWidth:new I,halfHeight:new I};break}return s[e.id]=t,t}}}function Q2(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}let eg=0;function tg(s,e){return(e.castShadow?2:0)-(s.castShadow?2:0)+(e.map?1:0)-(s.map?1:0)}function ng(s){const e=new Z2,t=Q2(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new I);const i=new I,r=new At,a=new At;function o(c){let h=0,d=0,u=0;for(let S=0;S<9;S++)n.probe[S].set(0,0,0);let f=0,m=0,_=0,g=0,p=0,E=0,b=0,M=0,U=0,C=0,P=0;c.sort(tg);for(let S=0,y=c.length;S<y;S++){const N=c[S],W=N.color,X=N.intensity,Q=N.distance,ne=N.shadow&&N.shadow.map?N.shadow.map.texture:null;if(N.isAmbientLight)h+=W.r*X,d+=W.g*X,u+=W.b*X;else if(N.isLightProbe){for(let G=0;G<9;G++)n.probe[G].addScaledVector(N.sh.coefficients[G],X);P++}else if(N.isDirectionalLight){const G=e.get(N);if(G.color.copy(N.color).multiplyScalar(N.intensity),N.castShadow){const re=N.shadow,Z=t.get(N);Z.shadowIntensity=re.intensity,Z.shadowBias=re.bias,Z.shadowNormalBias=re.normalBias,Z.shadowRadius=re.radius,Z.shadowMapSize=re.mapSize,n.directionalShadow[f]=Z,n.directionalShadowMap[f]=ne,n.directionalShadowMatrix[f]=N.shadow.matrix,E++}n.directional[f]=G,f++}else if(N.isSpotLight){const G=e.get(N);G.position.setFromMatrixPosition(N.matrixWorld),G.color.copy(W).multiplyScalar(X),G.distance=Q,G.coneCos=Math.cos(N.angle),G.penumbraCos=Math.cos(N.angle*(1-N.penumbra)),G.decay=N.decay,n.spot[_]=G;const re=N.shadow;if(N.map&&(n.spotLightMap[U]=N.map,U++,re.updateMatrices(N),N.castShadow&&C++),n.spotLightMatrix[_]=re.matrix,N.castShadow){const Z=t.get(N);Z.shadowIntensity=re.intensity,Z.shadowBias=re.bias,Z.shadowNormalBias=re.normalBias,Z.shadowRadius=re.radius,Z.shadowMapSize=re.mapSize,n.spotShadow[_]=Z,n.spotShadowMap[_]=ne,M++}_++}else if(N.isRectAreaLight){const G=e.get(N);G.color.copy(W).multiplyScalar(X),G.halfWidth.set(N.width*.5,0,0),G.halfHeight.set(0,N.height*.5,0),n.rectArea[g]=G,g++}else if(N.isPointLight){const G=e.get(N);if(G.color.copy(N.color).multiplyScalar(N.intensity),G.distance=N.distance,G.decay=N.decay,N.castShadow){const re=N.shadow,Z=t.get(N);Z.shadowIntensity=re.intensity,Z.shadowBias=re.bias,Z.shadowNormalBias=re.normalBias,Z.shadowRadius=re.radius,Z.shadowMapSize=re.mapSize,Z.shadowCameraNear=re.camera.near,Z.shadowCameraFar=re.camera.far,n.pointShadow[m]=Z,n.pointShadowMap[m]=ne,n.pointShadowMatrix[m]=N.shadow.matrix,b++}n.point[m]=G,m++}else if(N.isHemisphereLight){const G=e.get(N);G.skyColor.copy(N.color).multiplyScalar(X),G.groundColor.copy(N.groundColor).multiplyScalar(X),n.hemi[p]=G,p++}}g>0&&(s.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=ke.LTC_FLOAT_1,n.rectAreaLTC2=ke.LTC_FLOAT_2):(n.rectAreaLTC1=ke.LTC_HALF_1,n.rectAreaLTC2=ke.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=d,n.ambient[2]=u;const D=n.hash;(D.directionalLength!==f||D.pointLength!==m||D.spotLength!==_||D.rectAreaLength!==g||D.hemiLength!==p||D.numDirectionalShadows!==E||D.numPointShadows!==b||D.numSpotShadows!==M||D.numSpotMaps!==U||D.numLightProbes!==P)&&(n.directional.length=f,n.spot.length=_,n.rectArea.length=g,n.point.length=m,n.hemi.length=p,n.directionalShadow.length=E,n.directionalShadowMap.length=E,n.pointShadow.length=b,n.pointShadowMap.length=b,n.spotShadow.length=M,n.spotShadowMap.length=M,n.directionalShadowMatrix.length=E,n.pointShadowMatrix.length=b,n.spotLightMatrix.length=M+U-C,n.spotLightMap.length=U,n.numSpotLightShadowsWithMaps=C,n.numLightProbes=P,D.directionalLength=f,D.pointLength=m,D.spotLength=_,D.rectAreaLength=g,D.hemiLength=p,D.numDirectionalShadows=E,D.numPointShadows=b,D.numSpotShadows=M,D.numSpotMaps=U,D.numLightProbes=P,n.version=eg++)}function l(c,h){let d=0,u=0,f=0,m=0,_=0;const g=h.matrixWorldInverse;for(let p=0,E=c.length;p<E;p++){const b=c[p];if(b.isDirectionalLight){const M=n.directional[d];M.direction.setFromMatrixPosition(b.matrixWorld),i.setFromMatrixPosition(b.target.matrixWorld),M.direction.sub(i),M.direction.transformDirection(g),d++}else if(b.isSpotLight){const M=n.spot[f];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),M.direction.setFromMatrixPosition(b.matrixWorld),i.setFromMatrixPosition(b.target.matrixWorld),M.direction.sub(i),M.direction.transformDirection(g),f++}else if(b.isRectAreaLight){const M=n.rectArea[m];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),a.identity(),r.copy(b.matrixWorld),r.premultiply(g),a.extractRotation(r),M.halfWidth.set(b.width*.5,0,0),M.halfHeight.set(0,b.height*.5,0),M.halfWidth.applyMatrix4(a),M.halfHeight.applyMatrix4(a),m++}else if(b.isPointLight){const M=n.point[u];M.position.setFromMatrixPosition(b.matrixWorld),M.position.applyMatrix4(g),u++}else if(b.isHemisphereLight){const M=n.hemi[_];M.direction.setFromMatrixPosition(b.matrixWorld),M.direction.transformDirection(g),_++}}}return{setup:o,setupView:l,state:n}}function _h(s){const e=new ng(s),t=[],n=[];function i(h){c.camera=h,t.length=0,n.length=0}function r(h){t.push(h)}function a(h){n.push(h)}function o(){e.setup(t)}function l(h){e.setupView(t,h)}const c={lightsArray:t,shadowsArray:n,camera:null,lights:e,transmissionRenderTarget:{}};return{init:i,state:c,setupLights:o,setupLightsView:l,pushLight:r,pushShadow:a}}function ig(s){let e=new WeakMap;function t(i,r=0){const a=e.get(i);let o;return a===void 0?(o=new _h(s),e.set(i,[o])):r>=a.length?(o=new _h(s),a.push(o)):o=a[r],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const sg=`void main() {
|
|
3776
3776
|
gl_Position = vec4( position, 1.0 );
|
|
3777
3777
|
}`,rg=`uniform sampler2D shadow_pass;
|
|
3778
3778
|
uniform vec2 resolution;
|
|
@@ -3800,7 +3800,7 @@ void main() {
|
|
|
3800
3800
|
squared_mean = squared_mean / samples;
|
|
3801
3801
|
float std_dev = sqrt( squared_mean - mean * mean );
|
|
3802
3802
|
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
|
|
3803
|
-
}`;function ag(s,e,t){let n=new Nl;const i=new Ke,r=new Ke,a=new Ht,o=new up({depthPacking:Vd}),l=new dp,c={},h=t.maxTextureSize,d={[Xn]:Rn,[Rn]:Xn,[wn]:wn},u=new bi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ke},radius:{value:4}},vertexShader:sg,fragmentShader:rg}),f=u.clone();f.defines.HORIZONTAL_PASS=1;const m=new an;m.setAttribute("position",new dn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const _=new $t(m,u),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Wh;let p=this.type;this.render=function(C,P,D){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||C.length===0)return;const S=s.getRenderTarget(),y=s.getActiveCubeFace(),N=s.getActiveMipmapLevel(),W=s.state;W.setBlending(Oi),W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const X=p!==vi&&this.type===vi,Q=p===vi&&this.type!==vi;for(let ne=0,G=C.length;ne<G;ne++){const re=C[ne],K=re.shadow;if(K===void 0){console.warn("THREE.WebGLShadowMap:",re,"has no shadow.");continue}if(K.autoUpdate===!1&&K.needsUpdate===!1)continue;i.copy(K.mapSize);const ge=K.getFrameExtents();if(i.multiply(ge),r.copy(K.mapSize),(i.x>h||i.y>h)&&(i.x>h&&(r.x=Math.floor(h/ge.x),i.x=r.x*ge.x,K.mapSize.x=r.x),i.y>h&&(r.y=Math.floor(h/ge.y),i.y=r.y*ge.y,K.mapSize.y=r.y)),K.map===null||X===!0||Q===!0){const Ce=this.type!==vi?{minFilter:On,magFilter:On}:{};K.map!==null&&K.map.dispose(),K.map=new ts(i.x,i.y,Ce),K.map.texture.name=re.name+".shadowMap",K.camera.updateProjectionMatrix()}s.setRenderTarget(K.map),s.clear();const be=K.getViewportCount();for(let Ce=0;Ce<be;Ce++){const Ie=K.getViewport(Ce);a.set(r.x*Ie.x,r.y*Ie.y,r.x*Ie.z,r.y*Ie.w),W.viewport(a),K.updateMatrices(re,Ce),n=K.getFrustum(),M(P,D,K.camera,re,this.type)}K.isPointLightShadow!==!0&&this.type===vi&&E(K,D),K.needsUpdate=!1}p=this.type,g.needsUpdate=!1,s.setRenderTarget(S,y,N)};function E(C,P){const D=e.update(_);u.defines.VSM_SAMPLES!==C.blurSamples&&(u.defines.VSM_SAMPLES=C.blurSamples,f.defines.VSM_SAMPLES=C.blurSamples,u.needsUpdate=!0,f.needsUpdate=!0),C.mapPass===null&&(C.mapPass=new ts(i.x,i.y)),u.uniforms.shadow_pass.value=C.map.texture,u.uniforms.resolution.value=C.mapSize,u.uniforms.radius.value=C.radius,s.setRenderTarget(C.mapPass),s.clear(),s.renderBufferDirect(P,null,D,u,_,null),f.uniforms.shadow_pass.value=C.mapPass.texture,f.uniforms.resolution.value=C.mapSize,f.uniforms.radius.value=C.radius,s.setRenderTarget(C.map),s.clear(),s.renderBufferDirect(P,null,D,f,_,null)}function b(C,P,D,S){let y=null;const N=D.isPointLight===!0?C.customDistanceMaterial:C.customDepthMaterial;if(N!==void 0)y=N;else if(y=D.isPointLight===!0?l:o,s.localClippingEnabled&&P.clipShadows===!0&&Array.isArray(P.clippingPlanes)&&P.clippingPlanes.length!==0||P.displacementMap&&P.displacementScale!==0||P.alphaMap&&P.alphaTest>0||P.map&&P.alphaTest>0||P.alphaToCoverage===!0){const W=y.uuid,X=P.uuid;let Q=c[W];Q===void 0&&(Q={},c[W]=Q);let ne=Q[X];ne===void 0&&(ne=y.clone(),Q[X]=ne,P.addEventListener("dispose",U)),y=ne}if(y.visible=P.visible,y.wireframe=P.wireframe,S===vi?y.side=P.shadowSide!==null?P.shadowSide:P.side:y.side=P.shadowSide!==null?P.shadowSide:d[P.side],y.alphaMap=P.alphaMap,y.alphaTest=P.alphaToCoverage===!0?.5:P.alphaTest,y.map=P.map,y.clipShadows=P.clipShadows,y.clippingPlanes=P.clippingPlanes,y.clipIntersection=P.clipIntersection,y.displacementMap=P.displacementMap,y.displacementScale=P.displacementScale,y.displacementBias=P.displacementBias,y.wireframeLinewidth=P.wireframeLinewidth,y.linewidth=P.linewidth,D.isPointLight===!0&&y.isMeshDistanceMaterial===!0){const W=s.properties.get(y);W.light=D}return y}function M(C,P,D,S,y){if(C.visible===!1)return;if(C.layers.test(P.layers)&&(C.isMesh||C.isLine||C.isPoints)&&(C.castShadow||C.receiveShadow&&y===vi)&&(!C.frustumCulled||n.intersectsObject(C))){C.modelViewMatrix.multiplyMatrices(D.matrixWorldInverse,C.matrixWorld);const X=e.update(C),Q=C.material;if(Array.isArray(Q)){const ne=X.groups;for(let G=0,re=ne.length;G<re;G++){const K=ne[G],ge=Q[K.materialIndex];if(ge&&ge.visible){const be=b(C,ge,S,y);C.onBeforeShadow(s,C,P,D,X,be,K),s.renderBufferDirect(D,null,X,be,C,K),C.onAfterShadow(s,C,P,D,X,be,K)}}}else if(Q.visible){const ne=b(C,Q,S,y);C.onBeforeShadow(s,C,P,D,X,ne,null),s.renderBufferDirect(D,null,X,ne,C,null),C.onAfterShadow(s,C,P,D,X,ne,null)}}const W=C.children;for(let X=0,Q=W.length;X<Q;X++)M(W[X],P,D,S,y)}function U(C){C.target.removeEventListener("dispose",U);for(const D in c){const S=c[D],y=C.target.uuid;y in S&&(S[y].dispose(),delete S[y])}}}const og={[Eo]:Ao,[wo]:Ro,[To]:Lo,[Rs]:Co,[Ao]:Eo,[Ro]:wo,[Lo]:To,[Co]:Rs};function lg(s,e){function t(){let q=!1;const qe=new Ht;let Me=null;const z=new Ht(0,0,0,0);return{setMask:function(B){Me!==B&&!q&&(s.colorMask(B,B,B,B),Me=B)},setLocked:function(B){q=B},setClear:function(B,k,te,se,oe){oe===!0&&(B*=se,k*=se,te*=se),qe.set(B,k,te,se),z.equals(qe)===!1&&(s.clearColor(B,k,te,se),z.copy(qe))},reset:function(){q=!1,Me=null,z.set(-1,0,0,0)}}}function n(){let q=!1,qe=!1,Me=null,z=null,B=null;return{setReversed:function(k){if(qe!==k){const te=e.get("EXT_clip_control");k?te.clipControlEXT(te.LOWER_LEFT_EXT,te.ZERO_TO_ONE_EXT):te.clipControlEXT(te.LOWER_LEFT_EXT,te.NEGATIVE_ONE_TO_ONE_EXT),qe=k;const se=B;B=null,this.setClear(se)}},getReversed:function(){return qe},setTest:function(k){k?ce(s.DEPTH_TEST):Le(s.DEPTH_TEST)},setMask:function(k){Me!==k&&!q&&(s.depthMask(k),Me=k)},setFunc:function(k){if(qe&&(k=og[k]),z!==k){switch(k){case Eo:s.depthFunc(s.NEVER);break;case Ao:s.depthFunc(s.ALWAYS);break;case wo:s.depthFunc(s.LESS);break;case Rs:s.depthFunc(s.LEQUAL);break;case To:s.depthFunc(s.EQUAL);break;case Co:s.depthFunc(s.GEQUAL);break;case Ro:s.depthFunc(s.GREATER);break;case Lo:s.depthFunc(s.NOTEQUAL);break;default:s.depthFunc(s.LEQUAL)}z=k}},setLocked:function(k){q=k},setClear:function(k){B!==k&&(qe&&(k=1-k),s.clearDepth(k),B=k)},reset:function(){q=!1,Me=null,z=null,B=null,qe=!1}}}function i(){let q=!1,qe=null,Me=null,z=null,B=null,k=null,te=null,se=null,oe=null;return{setTest:function(ue){q||(ue?ce(s.STENCIL_TEST):Le(s.STENCIL_TEST))},setMask:function(ue){qe!==ue&&!q&&(s.stencilMask(ue),qe=ue)},setFunc:function(ue,_e,Se){(Me!==ue||z!==_e||B!==Se)&&(s.stencilFunc(ue,_e,Se),Me=ue,z=_e,B=Se)},setOp:function(ue,_e,Se){(k!==ue||te!==_e||se!==Se)&&(s.stencilOp(ue,_e,Se),k=ue,te=_e,se=Se)},setLocked:function(ue){q=ue},setClear:function(ue){oe!==ue&&(s.clearStencil(ue),oe=ue)},reset:function(){q=!1,qe=null,Me=null,z=null,B=null,k=null,te=null,se=null,oe=null}}}const r=new t,a=new n,o=new i,l=new WeakMap,c=new WeakMap;let h={},d={},u=new WeakMap,f=[],m=null,_=!1,g=null,p=null,E=null,b=null,M=null,U=null,C=null,P=new gt(0,0,0),D=0,S=!1,y=null,N=null,W=null,X=null,Q=null;const ne=s.getParameter(s.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let G=!1,re=0;const K=s.getParameter(s.VERSION);K.indexOf("WebGL")!==-1?(re=parseFloat(/^WebGL (\d)/.exec(K)[1]),G=re>=1):K.indexOf("OpenGL ES")!==-1&&(re=parseFloat(/^OpenGL ES (\d)/.exec(K)[1]),G=re>=2);let ge=null,be={};const Ce=s.getParameter(s.SCISSOR_BOX),Ie=s.getParameter(s.VIEWPORT),He=new Ht().fromArray(Ce),J=new Ht().fromArray(Ie);function ae(q,qe,Me,z){const B=new Uint8Array(4),k=s.createTexture();s.bindTexture(q,k),s.texParameteri(q,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(q,s.TEXTURE_MAG_FILTER,s.NEAREST);for(let te=0;te<Me;te++)q===s.TEXTURE_3D||q===s.TEXTURE_2D_ARRAY?s.texImage3D(qe,0,s.RGBA,1,1,z,0,s.RGBA,s.UNSIGNED_BYTE,B):s.texImage2D(qe+te,0,s.RGBA,1,1,0,s.RGBA,s.UNSIGNED_BYTE,B);return k}const le={};le[s.TEXTURE_2D]=ae(s.TEXTURE_2D,s.TEXTURE_2D,1),le[s.TEXTURE_CUBE_MAP]=ae(s.TEXTURE_CUBE_MAP,s.TEXTURE_CUBE_MAP_POSITIVE_X,6),le[s.TEXTURE_2D_ARRAY]=ae(s.TEXTURE_2D_ARRAY,s.TEXTURE_2D_ARRAY,1,1),le[s.TEXTURE_3D]=ae(s.TEXTURE_3D,s.TEXTURE_3D,1,1),r.setClear(0,0,0,1),a.setClear(1),o.setClear(0),ce(s.DEPTH_TEST),a.setFunc(Rs),Lt(!1),Tt(jl),ce(s.CULL_FACE),O(Oi);function ce(q){h[q]!==!0&&(s.enable(q),h[q]=!0)}function Le(q){h[q]!==!1&&(s.disable(q),h[q]=!1)}function ve(q,qe){return d[q]!==qe?(s.bindFramebuffer(q,qe),d[q]=qe,q===s.DRAW_FRAMEBUFFER&&(d[s.FRAMEBUFFER]=qe),q===s.FRAMEBUFFER&&(d[s.DRAW_FRAMEBUFFER]=qe),!0):!1}function Ae(q,qe){let Me=f,z=!1;if(q){Me=u.get(qe),Me===void 0&&(Me=[],u.set(qe,Me));const B=q.textures;if(Me.length!==B.length||Me[0]!==s.COLOR_ATTACHMENT0){for(let k=0,te=B.length;k<te;k++)Me[k]=s.COLOR_ATTACHMENT0+k;Me.length=B.length,z=!0}}else Me[0]!==s.BACK&&(Me[0]=s.BACK,z=!0);z&&s.drawBuffers(Me)}function st(q){return m!==q?(s.useProgram(q),m=q,!0):!1}const wt={[Ji]:s.FUNC_ADD,[dd]:s.FUNC_SUBTRACT,[fd]:s.FUNC_REVERSE_SUBTRACT};wt[pd]=s.MIN,wt[md]=s.MAX;const yt={[gd]:s.ZERO,[_d]:s.ONE,[vd]:s.SRC_COLOR,[So]:s.SRC_ALPHA,[Ed]:s.SRC_ALPHA_SATURATE,[Sd]:s.DST_COLOR,[yd]:s.DST_ALPHA,[xd]:s.ONE_MINUS_SRC_COLOR,[bo]:s.ONE_MINUS_SRC_ALPHA,[bd]:s.ONE_MINUS_DST_COLOR,[Md]:s.ONE_MINUS_DST_ALPHA,[Ad]:s.CONSTANT_COLOR,[wd]:s.ONE_MINUS_CONSTANT_COLOR,[Td]:s.CONSTANT_ALPHA,[Cd]:s.ONE_MINUS_CONSTANT_ALPHA};function O(q,qe,Me,z,B,k,te,se,oe,ue){if(q===Oi){_===!0&&(Le(s.BLEND),_=!1);return}if(_===!1&&(ce(s.BLEND),_=!0),q!==ud){if(q!==g||ue!==S){if((p!==Ji||M!==Ji)&&(s.blendEquation(s.FUNC_ADD),p=Ji,M=Ji),ue)switch(q){case As:s.blendFuncSeparate(s.ONE,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Yl:s.blendFunc(s.ONE,s.ONE);break;case $l:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Jl:s.blendFuncSeparate(s.ZERO,s.SRC_COLOR,s.ZERO,s.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",q);break}else switch(q){case As:s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Yl:s.blendFunc(s.SRC_ALPHA,s.ONE);break;case $l:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Jl:s.blendFunc(s.ZERO,s.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",q);break}E=null,b=null,U=null,C=null,P.set(0,0,0),D=0,g=q,S=ue}return}B=B||qe,k=k||Me,te=te||z,(qe!==p||B!==M)&&(s.blendEquationSeparate(wt[qe],wt[B]),p=qe,M=B),(Me!==E||z!==b||k!==U||te!==C)&&(s.blendFuncSeparate(yt[Me],yt[z],yt[k],yt[te]),E=Me,b=z,U=k,C=te),(se.equals(P)===!1||oe!==D)&&(s.blendColor(se.r,se.g,se.b,oe),P.copy(se),D=oe),g=q,S=!1}function Gt(q,qe){q.side===wn?Le(s.CULL_FACE):ce(s.CULL_FACE);let Me=q.side===Rn;qe&&(Me=!Me),Lt(Me),q.blending===As&&q.transparent===!1?O(Oi):O(q.blending,q.blendEquation,q.blendSrc,q.blendDst,q.blendEquationAlpha,q.blendSrcAlpha,q.blendDstAlpha,q.blendColor,q.blendAlpha,q.premultipliedAlpha),a.setFunc(q.depthFunc),a.setTest(q.depthTest),a.setMask(q.depthWrite),r.setMask(q.colorWrite);const z=q.stencilWrite;o.setTest(z),z&&(o.setMask(q.stencilWriteMask),o.setFunc(q.stencilFunc,q.stencilRef,q.stencilFuncMask),o.setOp(q.stencilFail,q.stencilZFail,q.stencilZPass)),pt(q.polygonOffset,q.polygonOffsetFactor,q.polygonOffsetUnits),q.alphaToCoverage===!0?ce(s.SAMPLE_ALPHA_TO_COVERAGE):Le(s.SAMPLE_ALPHA_TO_COVERAGE)}function Lt(q){y!==q&&(q?s.frontFace(s.CW):s.frontFace(s.CCW),y=q)}function Tt(q){q!==cd?(ce(s.CULL_FACE),q!==N&&(q===jl?s.cullFace(s.BACK):q===hd?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK))):Le(s.CULL_FACE),N=q}function Ge(q){q!==W&&(G&&s.lineWidth(q),W=q)}function pt(q,qe,Me){q?(ce(s.POLYGON_OFFSET_FILL),(X!==qe||Q!==Me)&&(s.polygonOffset(qe,Me),X=qe,Q=Me)):Le(s.POLYGON_OFFSET_FILL)}function Xe(q){q?ce(s.SCISSOR_TEST):Le(s.SCISSOR_TEST)}function ut(q){q===void 0&&(q=s.TEXTURE0+ne-1),ge!==q&&(s.activeTexture(q),ge=q)}function rn(q,qe,Me){Me===void 0&&(ge===null?Me=s.TEXTURE0+ne-1:Me=ge);let z=be[Me];z===void 0&&(z={type:void 0,texture:void 0},be[Me]=z),(z.type!==q||z.texture!==qe)&&(ge!==Me&&(s.activeTexture(Me),ge=Me),s.bindTexture(q,qe||le[q]),z.type=q,z.texture=qe)}function F(){const q=be[ge];q!==void 0&&q.type!==void 0&&(s.bindTexture(q.type,null),q.type=void 0,q.texture=void 0)}function A(){try{s.compressedTexImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function ee(){try{s.compressedTexImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function fe(){try{s.texSubImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function xe(){try{s.texSubImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function he(){try{s.compressedTexSubImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function rt(){try{s.compressedTexSubImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Be(){try{s.texStorage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Ze(){try{s.texStorage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function at(){try{s.texImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function ye(){try{s.texImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Ye(q){He.equals(q)===!1&&(s.scissor(q.x,q.y,q.z,q.w),He.copy(q))}function _t(q){J.equals(q)===!1&&(s.viewport(q.x,q.y,q.z,q.w),J.copy(q))}function mt(q,qe){let Me=c.get(qe);Me===void 0&&(Me=new WeakMap,c.set(qe,Me));let z=Me.get(q);z===void 0&&(z=s.getUniformBlockIndex(qe,q.name),Me.set(q,z))}function ke(q,qe){const z=c.get(qe).get(q);l.get(qe)!==z&&(s.uniformBlockBinding(qe,z,q.__bindingPointIndex),l.set(qe,z))}function Mt(){s.disable(s.BLEND),s.disable(s.CULL_FACE),s.disable(s.DEPTH_TEST),s.disable(s.POLYGON_OFFSET_FILL),s.disable(s.SCISSOR_TEST),s.disable(s.STENCIL_TEST),s.disable(s.SAMPLE_ALPHA_TO_COVERAGE),s.blendEquation(s.FUNC_ADD),s.blendFunc(s.ONE,s.ZERO),s.blendFuncSeparate(s.ONE,s.ZERO,s.ONE,s.ZERO),s.blendColor(0,0,0,0),s.colorMask(!0,!0,!0,!0),s.clearColor(0,0,0,0),s.depthMask(!0),s.depthFunc(s.LESS),a.setReversed(!1),s.clearDepth(1),s.stencilMask(4294967295),s.stencilFunc(s.ALWAYS,0,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.KEEP),s.clearStencil(0),s.cullFace(s.BACK),s.frontFace(s.CCW),s.polygonOffset(0,0),s.activeTexture(s.TEXTURE0),s.bindFramebuffer(s.FRAMEBUFFER,null),s.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),s.bindFramebuffer(s.READ_FRAMEBUFFER,null),s.useProgram(null),s.lineWidth(1),s.scissor(0,0,s.canvas.width,s.canvas.height),s.viewport(0,0,s.canvas.width,s.canvas.height),h={},ge=null,be={},d={},u=new WeakMap,f=[],m=null,_=!1,g=null,p=null,E=null,b=null,M=null,U=null,C=null,P=new gt(0,0,0),D=0,S=!1,y=null,N=null,W=null,X=null,Q=null,He.set(0,0,s.canvas.width,s.canvas.height),J.set(0,0,s.canvas.width,s.canvas.height),r.reset(),a.reset(),o.reset()}return{buffers:{color:r,depth:a,stencil:o},enable:ce,disable:Le,bindFramebuffer:ve,drawBuffers:Ae,useProgram:st,setBlending:O,setMaterial:Gt,setFlipSided:Lt,setCullFace:Tt,setLineWidth:Ge,setPolygonOffset:pt,setScissorTest:Xe,activeTexture:ut,bindTexture:rn,unbindTexture:F,compressedTexImage2D:A,compressedTexImage3D:ee,texImage2D:at,texImage3D:ye,updateUBOMapping:mt,uniformBlockBinding:ke,texStorage2D:Be,texStorage3D:Ze,texSubImage2D:fe,texSubImage3D:xe,compressedTexSubImage2D:he,compressedTexSubImage3D:rt,scissor:Ye,viewport:_t,reset:Mt}}function cg(s,e,t,n,i,r,a){const o=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ke,h=new WeakMap;let d;const u=new WeakMap;let f=!1;try{f=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function m(F,A){return f?new OffscreenCanvas(F,A):or("canvas")}function _(F,A,ee){let fe=1;const xe=rn(F);if((xe.width>ee||xe.height>ee)&&(fe=ee/Math.max(xe.width,xe.height)),fe<1)if(typeof HTMLImageElement<"u"&&F instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&F instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&F instanceof ImageBitmap||typeof VideoFrame<"u"&&F instanceof VideoFrame){const he=Math.floor(fe*xe.width),rt=Math.floor(fe*xe.height);d===void 0&&(d=m(he,rt));const Be=A?m(he,rt):d;return Be.width=he,Be.height=rt,Be.getContext("2d").drawImage(F,0,0,he,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+xe.width+"x"+xe.height+") to ("+he+"x"+rt+")."),Be}else return"data"in F&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+xe.width+"x"+xe.height+")."),F;return F}function g(F){return F.generateMipmaps}function p(F){s.generateMipmap(F)}function E(F){return F.isWebGLCubeRenderTarget?s.TEXTURE_CUBE_MAP:F.isWebGL3DRenderTarget?s.TEXTURE_3D:F.isWebGLArrayRenderTarget||F.isCompressedArrayTexture?s.TEXTURE_2D_ARRAY:s.TEXTURE_2D}function b(F,A,ee,fe,xe=!1){if(F!==null){if(s[F]!==void 0)return s[F];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+F+"'")}let he=A;if(A===s.RED&&(ee===s.FLOAT&&(he=s.R32F),ee===s.HALF_FLOAT&&(he=s.R16F),ee===s.UNSIGNED_BYTE&&(he=s.R8)),A===s.RED_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.R8UI),ee===s.UNSIGNED_SHORT&&(he=s.R16UI),ee===s.UNSIGNED_INT&&(he=s.R32UI),ee===s.BYTE&&(he=s.R8I),ee===s.SHORT&&(he=s.R16I),ee===s.INT&&(he=s.R32I)),A===s.RG&&(ee===s.FLOAT&&(he=s.RG32F),ee===s.HALF_FLOAT&&(he=s.RG16F),ee===s.UNSIGNED_BYTE&&(he=s.RG8)),A===s.RG_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RG8UI),ee===s.UNSIGNED_SHORT&&(he=s.RG16UI),ee===s.UNSIGNED_INT&&(he=s.RG32UI),ee===s.BYTE&&(he=s.RG8I),ee===s.SHORT&&(he=s.RG16I),ee===s.INT&&(he=s.RG32I)),A===s.RGB_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RGB8UI),ee===s.UNSIGNED_SHORT&&(he=s.RGB16UI),ee===s.UNSIGNED_INT&&(he=s.RGB32UI),ee===s.BYTE&&(he=s.RGB8I),ee===s.SHORT&&(he=s.RGB16I),ee===s.INT&&(he=s.RGB32I)),A===s.RGBA_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RGBA8UI),ee===s.UNSIGNED_SHORT&&(he=s.RGBA16UI),ee===s.UNSIGNED_INT&&(he=s.RGBA32UI),ee===s.BYTE&&(he=s.RGBA8I),ee===s.SHORT&&(he=s.RGBA16I),ee===s.INT&&(he=s.RGBA32I)),A===s.RGB&&ee===s.UNSIGNED_INT_5_9_9_9_REV&&(he=s.RGB9_E5),A===s.RGBA){const rt=xe?da:Vt.getTransfer(fe);ee===s.FLOAT&&(he=s.RGBA32F),ee===s.HALF_FLOAT&&(he=s.RGBA16F),ee===s.UNSIGNED_BYTE&&(he=rt===tn?s.SRGB8_ALPHA8:s.RGBA8),ee===s.UNSIGNED_SHORT_4_4_4_4&&(he=s.RGBA4),ee===s.UNSIGNED_SHORT_5_5_5_1&&(he=s.RGB5_A1)}return(he===s.R16F||he===s.R32F||he===s.RG16F||he===s.RG32F||he===s.RGBA16F||he===s.RGBA32F)&&e.get("EXT_color_buffer_float"),he}function M(F,A){let ee;return F?A===null||A===es||A===sr?ee=s.DEPTH24_STENCIL8:A===oi?ee=s.DEPTH32F_STENCIL8:A===ir&&(ee=s.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):A===null||A===es||A===sr?ee=s.DEPTH_COMPONENT24:A===oi?ee=s.DEPTH_COMPONENT32F:A===ir&&(ee=s.DEPTH_COMPONENT16),ee}function U(F,A){return g(F)===!0||F.isFramebufferTexture&&F.minFilter!==On&&F.minFilter!==Fn?Math.log2(Math.max(A.width,A.height))+1:F.mipmaps!==void 0&&F.mipmaps.length>0?F.mipmaps.length:F.isCompressedTexture&&Array.isArray(F.image)?A.mipmaps.length:1}function C(F){const A=F.target;A.removeEventListener("dispose",C),D(A),A.isVideoTexture&&h.delete(A)}function P(F){const A=F.target;A.removeEventListener("dispose",P),y(A)}function D(F){const A=n.get(F);if(A.__webglInit===void 0)return;const ee=F.source,fe=u.get(ee);if(fe){const xe=fe[A.__cacheKey];xe.usedTimes--,xe.usedTimes===0&&S(F),Object.keys(fe).length===0&&u.delete(ee)}n.remove(F)}function S(F){const A=n.get(F);s.deleteTexture(A.__webglTexture);const ee=F.source,fe=u.get(ee);delete fe[A.__cacheKey],a.memory.textures--}function y(F){const A=n.get(F);if(F.depthTexture&&(F.depthTexture.dispose(),n.remove(F.depthTexture)),F.isWebGLCubeRenderTarget)for(let fe=0;fe<6;fe++){if(Array.isArray(A.__webglFramebuffer[fe]))for(let xe=0;xe<A.__webglFramebuffer[fe].length;xe++)s.deleteFramebuffer(A.__webglFramebuffer[fe][xe]);else s.deleteFramebuffer(A.__webglFramebuffer[fe]);A.__webglDepthbuffer&&s.deleteRenderbuffer(A.__webglDepthbuffer[fe])}else{if(Array.isArray(A.__webglFramebuffer))for(let fe=0;fe<A.__webglFramebuffer.length;fe++)s.deleteFramebuffer(A.__webglFramebuffer[fe]);else s.deleteFramebuffer(A.__webglFramebuffer);if(A.__webglDepthbuffer&&s.deleteRenderbuffer(A.__webglDepthbuffer),A.__webglMultisampledFramebuffer&&s.deleteFramebuffer(A.__webglMultisampledFramebuffer),A.__webglColorRenderbuffer)for(let fe=0;fe<A.__webglColorRenderbuffer.length;fe++)A.__webglColorRenderbuffer[fe]&&s.deleteRenderbuffer(A.__webglColorRenderbuffer[fe]);A.__webglDepthRenderbuffer&&s.deleteRenderbuffer(A.__webglDepthRenderbuffer)}const ee=F.textures;for(let fe=0,xe=ee.length;fe<xe;fe++){const he=n.get(ee[fe]);he.__webglTexture&&(s.deleteTexture(he.__webglTexture),a.memory.textures--),n.remove(ee[fe])}n.remove(F)}let N=0;function W(){N=0}function X(){const F=N;return F>=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+F+" texture units while this GPU supports only "+i.maxTextures),N+=1,F}function Q(F){const A=[];return A.push(F.wrapS),A.push(F.wrapT),A.push(F.wrapR||0),A.push(F.magFilter),A.push(F.minFilter),A.push(F.anisotropy),A.push(F.internalFormat),A.push(F.format),A.push(F.type),A.push(F.generateMipmaps),A.push(F.premultiplyAlpha),A.push(F.flipY),A.push(F.unpackAlignment),A.push(F.colorSpace),A.join()}function ne(F,A){const ee=n.get(F);if(F.isVideoTexture&&Xe(F),F.isRenderTargetTexture===!1&&F.version>0&&ee.__version!==F.version){const fe=F.image;if(fe===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(fe.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{le(ee,F,A);return}}t.bindTexture(s.TEXTURE_2D,ee.__webglTexture,s.TEXTURE0+A)}function G(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){le(ee,F,A);return}t.bindTexture(s.TEXTURE_2D_ARRAY,ee.__webglTexture,s.TEXTURE0+A)}function re(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){le(ee,F,A);return}t.bindTexture(s.TEXTURE_3D,ee.__webglTexture,s.TEXTURE0+A)}function K(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){ce(ee,F,A);return}t.bindTexture(s.TEXTURE_CUBE_MAP,ee.__webglTexture,s.TEXTURE0+A)}const ge={[ai]:s.REPEAT,[Jn]:s.CLAMP_TO_EDGE,[Uo]:s.MIRRORED_REPEAT},be={[On]:s.NEAREST,[zd]:s.NEAREST_MIPMAP_NEAREST,[fr]:s.NEAREST_MIPMAP_LINEAR,[Fn]:s.LINEAR,[Ra]:s.LINEAR_MIPMAP_NEAREST,[xi]:s.LINEAR_MIPMAP_LINEAR},Ce={[Gd]:s.NEVER,[$d]:s.ALWAYS,[Wd]:s.LESS,[nu]:s.LEQUAL,[Xd]:s.EQUAL,[Yd]:s.GEQUAL,[qd]:s.GREATER,[jd]:s.NOTEQUAL};function Ie(F,A){if(A.type===oi&&e.has("OES_texture_float_linear")===!1&&(A.magFilter===Fn||A.magFilter===Ra||A.magFilter===fr||A.magFilter===xi||A.minFilter===Fn||A.minFilter===Ra||A.minFilter===fr||A.minFilter===xi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),s.texParameteri(F,s.TEXTURE_WRAP_S,ge[A.wrapS]),s.texParameteri(F,s.TEXTURE_WRAP_T,ge[A.wrapT]),(F===s.TEXTURE_3D||F===s.TEXTURE_2D_ARRAY)&&s.texParameteri(F,s.TEXTURE_WRAP_R,ge[A.wrapR]),s.texParameteri(F,s.TEXTURE_MAG_FILTER,be[A.magFilter]),s.texParameteri(F,s.TEXTURE_MIN_FILTER,be[A.minFilter]),A.compareFunction&&(s.texParameteri(F,s.TEXTURE_COMPARE_MODE,s.COMPARE_REF_TO_TEXTURE),s.texParameteri(F,s.TEXTURE_COMPARE_FUNC,Ce[A.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(A.magFilter===On||A.minFilter!==fr&&A.minFilter!==xi||A.type===oi&&e.has("OES_texture_float_linear")===!1)return;if(A.anisotropy>1||n.get(A).__currentAnisotropy){const ee=e.get("EXT_texture_filter_anisotropic");s.texParameterf(F,ee.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(A.anisotropy,i.getMaxAnisotropy())),n.get(A).__currentAnisotropy=A.anisotropy}}}function He(F,A){let ee=!1;F.__webglInit===void 0&&(F.__webglInit=!0,A.addEventListener("dispose",C));const fe=A.source;let xe=u.get(fe);xe===void 0&&(xe={},u.set(fe,xe));const he=Q(A);if(he!==F.__cacheKey){xe[he]===void 0&&(xe[he]={texture:s.createTexture(),usedTimes:0},a.memory.textures++,ee=!0),xe[he].usedTimes++;const rt=xe[F.__cacheKey];rt!==void 0&&(xe[F.__cacheKey].usedTimes--,rt.usedTimes===0&&S(A)),F.__cacheKey=he,F.__webglTexture=xe[he].texture}return ee}function J(F,A,ee){return Math.floor(Math.floor(F/ee)/A)}function ae(F,A,ee,fe){const he=F.updateRanges;if(he.length===0)t.texSubImage2D(s.TEXTURE_2D,0,0,0,A.width,A.height,ee,fe,A.data);else{he.sort((ye,Ye)=>ye.start-Ye.start);let rt=0;for(let ye=1;ye<he.length;ye++){const Ye=he[rt],_t=he[ye],mt=Ye.start+Ye.count,ke=J(_t.start,A.width,4),Mt=J(Ye.start,A.width,4);_t.start<=mt+1&&ke===Mt&&J(_t.start+_t.count-1,A.width,4)===ke?Ye.count=Math.max(Ye.count,_t.start+_t.count-Ye.start):(++rt,he[rt]=_t)}he.length=rt+1;const Be=s.getParameter(s.UNPACK_ROW_LENGTH),Ze=s.getParameter(s.UNPACK_SKIP_PIXELS),at=s.getParameter(s.UNPACK_SKIP_ROWS);s.pixelStorei(s.UNPACK_ROW_LENGTH,A.width);for(let ye=0,Ye=he.length;ye<Ye;ye++){const _t=he[ye],mt=Math.floor(_t.start/4),ke=Math.ceil(_t.count/4),Mt=mt%A.width,q=Math.floor(mt/A.width),qe=ke,Me=1;s.pixelStorei(s.UNPACK_SKIP_PIXELS,Mt),s.pixelStorei(s.UNPACK_SKIP_ROWS,q),t.texSubImage2D(s.TEXTURE_2D,0,Mt,q,qe,Me,ee,fe,A.data)}F.clearUpdateRanges(),s.pixelStorei(s.UNPACK_ROW_LENGTH,Be),s.pixelStorei(s.UNPACK_SKIP_PIXELS,Ze),s.pixelStorei(s.UNPACK_SKIP_ROWS,at)}}function le(F,A,ee){let fe=s.TEXTURE_2D;(A.isDataArrayTexture||A.isCompressedArrayTexture)&&(fe=s.TEXTURE_2D_ARRAY),A.isData3DTexture&&(fe=s.TEXTURE_3D);const xe=He(F,A),he=A.source;t.bindTexture(fe,F.__webglTexture,s.TEXTURE0+ee);const rt=n.get(he);if(he.version!==rt.__version||xe===!0){t.activeTexture(s.TEXTURE0+ee);const Be=Vt.getPrimaries(Vt.workingColorSpace),Ze=A.colorSpace===Ii?null:Vt.getPrimaries(A.colorSpace),at=A.colorSpace===Ii||Be===Ze?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,A.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,A.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,at);let ye=_(A.image,!1,i.maxTextureSize);ye=ut(A,ye);const Ye=r.convert(A.format,A.colorSpace),_t=r.convert(A.type);let mt=b(A.internalFormat,Ye,_t,A.colorSpace,A.isVideoTexture);Ie(fe,A);let ke;const Mt=A.mipmaps,q=A.isVideoTexture!==!0,qe=rt.__version===void 0||xe===!0,Me=he.dataReady,z=U(A,ye);if(A.isDepthTexture)mt=M(A.format===ar,A.type),qe&&(q?t.texStorage2D(s.TEXTURE_2D,1,mt,ye.width,ye.height):t.texImage2D(s.TEXTURE_2D,0,mt,ye.width,ye.height,0,Ye,_t,null));else if(A.isDataTexture)if(Mt.length>0){q&&qe&&t.texStorage2D(s.TEXTURE_2D,z,mt,Mt[0].width,Mt[0].height);for(let B=0,k=Mt.length;B<k;B++)ke=Mt[B],q?Me&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,ke.width,ke.height,Ye,_t,ke.data):t.texImage2D(s.TEXTURE_2D,B,mt,ke.width,ke.height,0,Ye,_t,ke.data);A.generateMipmaps=!1}else q?(qe&&t.texStorage2D(s.TEXTURE_2D,z,mt,ye.width,ye.height),Me&&ae(A,ye,Ye,_t)):t.texImage2D(s.TEXTURE_2D,0,mt,ye.width,ye.height,0,Ye,_t,ye.data);else if(A.isCompressedTexture)if(A.isCompressedArrayTexture){q&&qe&&t.texStorage3D(s.TEXTURE_2D_ARRAY,z,mt,Mt[0].width,Mt[0].height,ye.depth);for(let B=0,k=Mt.length;B<k;B++)if(ke=Mt[B],A.format!==Wn)if(Ye!==null)if(q){if(Me)if(A.layerUpdates.size>0){const te=jc(ke.width,ke.height,A.format,A.type);for(const se of A.layerUpdates){const oe=ke.data.subarray(se*te/ke.data.BYTES_PER_ELEMENT,(se+1)*te/ke.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,se,ke.width,ke.height,1,Ye,oe)}A.clearLayerUpdates()}else t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,0,ke.width,ke.height,ye.depth,Ye,ke.data)}else t.compressedTexImage3D(s.TEXTURE_2D_ARRAY,B,mt,ke.width,ke.height,ye.depth,0,ke.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else q?Me&&t.texSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,0,ke.width,ke.height,ye.depth,Ye,_t,ke.data):t.texImage3D(s.TEXTURE_2D_ARRAY,B,mt,ke.width,ke.height,ye.depth,0,Ye,_t,ke.data)}else{q&&qe&&t.texStorage2D(s.TEXTURE_2D,z,mt,Mt[0].width,Mt[0].height);for(let B=0,k=Mt.length;B<k;B++)ke=Mt[B],A.format!==Wn?Ye!==null?q?Me&&t.compressedTexSubImage2D(s.TEXTURE_2D,B,0,0,ke.width,ke.height,Ye,ke.data):t.compressedTexImage2D(s.TEXTURE_2D,B,mt,ke.width,ke.height,0,ke.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):q?Me&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,ke.width,ke.height,Ye,_t,ke.data):t.texImage2D(s.TEXTURE_2D,B,mt,ke.width,ke.height,0,Ye,_t,ke.data)}else if(A.isDataArrayTexture)if(q){if(qe&&t.texStorage3D(s.TEXTURE_2D_ARRAY,z,mt,ye.width,ye.height,ye.depth),Me)if(A.layerUpdates.size>0){const B=jc(ye.width,ye.height,A.format,A.type);for(const k of A.layerUpdates){const te=ye.data.subarray(k*B/ye.data.BYTES_PER_ELEMENT,(k+1)*B/ye.data.BYTES_PER_ELEMENT);t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,k,ye.width,ye.height,1,Ye,_t,te)}A.clearLayerUpdates()}else t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,0,ye.width,ye.height,ye.depth,Ye,_t,ye.data)}else t.texImage3D(s.TEXTURE_2D_ARRAY,0,mt,ye.width,ye.height,ye.depth,0,Ye,_t,ye.data);else if(A.isData3DTexture)q?(qe&&t.texStorage3D(s.TEXTURE_3D,z,mt,ye.width,ye.height,ye.depth),Me&&t.texSubImage3D(s.TEXTURE_3D,0,0,0,0,ye.width,ye.height,ye.depth,Ye,_t,ye.data)):t.texImage3D(s.TEXTURE_3D,0,mt,ye.width,ye.height,ye.depth,0,Ye,_t,ye.data);else if(A.isFramebufferTexture){if(qe)if(q)t.texStorage2D(s.TEXTURE_2D,z,mt,ye.width,ye.height);else{let B=ye.width,k=ye.height;for(let te=0;te<z;te++)t.texImage2D(s.TEXTURE_2D,te,mt,B,k,0,Ye,_t,null),B>>=1,k>>=1}}else if(Mt.length>0){if(q&&qe){const B=rn(Mt[0]);t.texStorage2D(s.TEXTURE_2D,z,mt,B.width,B.height)}for(let B=0,k=Mt.length;B<k;B++)ke=Mt[B],q?Me&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,Ye,_t,ke):t.texImage2D(s.TEXTURE_2D,B,mt,Ye,_t,ke);A.generateMipmaps=!1}else if(q){if(qe){const B=rn(ye);t.texStorage2D(s.TEXTURE_2D,z,mt,B.width,B.height)}Me&&t.texSubImage2D(s.TEXTURE_2D,0,0,0,Ye,_t,ye)}else t.texImage2D(s.TEXTURE_2D,0,mt,Ye,_t,ye);g(A)&&p(fe),rt.__version=he.version,A.onUpdate&&A.onUpdate(A)}F.__version=A.version}function ce(F,A,ee){if(A.image.length!==6)return;const fe=He(F,A),xe=A.source;t.bindTexture(s.TEXTURE_CUBE_MAP,F.__webglTexture,s.TEXTURE0+ee);const he=n.get(xe);if(xe.version!==he.__version||fe===!0){t.activeTexture(s.TEXTURE0+ee);const rt=Vt.getPrimaries(Vt.workingColorSpace),Be=A.colorSpace===Ii?null:Vt.getPrimaries(A.colorSpace),Ze=A.colorSpace===Ii||rt===Be?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,A.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,A.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ze);const at=A.isCompressedTexture||A.image[0].isCompressedTexture,ye=A.image[0]&&A.image[0].isDataTexture,Ye=[];for(let k=0;k<6;k++)!at&&!ye?Ye[k]=_(A.image[k],!0,i.maxCubemapSize):Ye[k]=ye?A.image[k].image:A.image[k],Ye[k]=ut(A,Ye[k]);const _t=Ye[0],mt=r.convert(A.format,A.colorSpace),ke=r.convert(A.type),Mt=b(A.internalFormat,mt,ke,A.colorSpace),q=A.isVideoTexture!==!0,qe=he.__version===void 0||fe===!0,Me=xe.dataReady;let z=U(A,_t);Ie(s.TEXTURE_CUBE_MAP,A);let B;if(at){q&&qe&&t.texStorage2D(s.TEXTURE_CUBE_MAP,z,Mt,_t.width,_t.height);for(let k=0;k<6;k++){B=Ye[k].mipmaps;for(let te=0;te<B.length;te++){const se=B[te];A.format!==Wn?mt!==null?q?Me&&t.compressedTexSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,0,0,se.width,se.height,mt,se.data):t.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,Mt,se.width,se.height,0,se.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):q?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,0,0,se.width,se.height,mt,ke,se.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,Mt,se.width,se.height,0,mt,ke,se.data)}}}else{if(B=A.mipmaps,q&&qe){B.length>0&&z++;const k=rn(Ye[0]);t.texStorage2D(s.TEXTURE_CUBE_MAP,z,Mt,k.width,k.height)}for(let k=0;k<6;k++)if(ye){q?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,0,0,Ye[k].width,Ye[k].height,mt,ke,Ye[k].data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,Mt,Ye[k].width,Ye[k].height,0,mt,ke,Ye[k].data);for(let te=0;te<B.length;te++){const oe=B[te].image[k].image;q?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,0,0,oe.width,oe.height,mt,ke,oe.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,Mt,oe.width,oe.height,0,mt,ke,oe.data)}}else{q?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,0,0,mt,ke,Ye[k]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,Mt,mt,ke,Ye[k]);for(let te=0;te<B.length;te++){const se=B[te];q?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,0,0,mt,ke,se.image[k]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,Mt,mt,ke,se.image[k])}}}g(A)&&p(s.TEXTURE_CUBE_MAP),he.__version=xe.version,A.onUpdate&&A.onUpdate(A)}F.__version=A.version}function Le(F,A,ee,fe,xe,he){const rt=r.convert(ee.format,ee.colorSpace),Be=r.convert(ee.type),Ze=b(ee.internalFormat,rt,Be,ee.colorSpace),at=n.get(A),ye=n.get(ee);if(ye.__renderTarget=A,!at.__hasExternalTextures){const Ye=Math.max(1,A.width>>he),_t=Math.max(1,A.height>>he);xe===s.TEXTURE_3D||xe===s.TEXTURE_2D_ARRAY?t.texImage3D(xe,he,Ze,Ye,_t,A.depth,0,rt,Be,null):t.texImage2D(xe,he,Ze,Ye,_t,0,rt,Be,null)}t.bindFramebuffer(s.FRAMEBUFFER,F),pt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,fe,xe,ye.__webglTexture,0,Ge(A)):(xe===s.TEXTURE_2D||xe>=s.TEXTURE_CUBE_MAP_POSITIVE_X&&xe<=s.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&s.framebufferTexture2D(s.FRAMEBUFFER,fe,xe,ye.__webglTexture,he),t.bindFramebuffer(s.FRAMEBUFFER,null)}function ve(F,A,ee){if(s.bindRenderbuffer(s.RENDERBUFFER,F),A.depthBuffer){const fe=A.depthTexture,xe=fe&&fe.isDepthTexture?fe.type:null,he=M(A.stencilBuffer,xe),rt=A.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Be=Ge(A);pt(A)?o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,Be,he,A.width,A.height):ee?s.renderbufferStorageMultisample(s.RENDERBUFFER,Be,he,A.width,A.height):s.renderbufferStorage(s.RENDERBUFFER,he,A.width,A.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,rt,s.RENDERBUFFER,F)}else{const fe=A.textures;for(let xe=0;xe<fe.length;xe++){const he=fe[xe],rt=r.convert(he.format,he.colorSpace),Be=r.convert(he.type),Ze=b(he.internalFormat,rt,Be,he.colorSpace),at=Ge(A);ee&&pt(A)===!1?s.renderbufferStorageMultisample(s.RENDERBUFFER,at,Ze,A.width,A.height):pt(A)?o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,at,Ze,A.width,A.height):s.renderbufferStorage(s.RENDERBUFFER,Ze,A.width,A.height)}}s.bindRenderbuffer(s.RENDERBUFFER,null)}function Ae(F,A){if(A&&A.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(s.FRAMEBUFFER,F),!(A.depthTexture&&A.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const fe=n.get(A.depthTexture);fe.__renderTarget=A,(!fe.__webglTexture||A.depthTexture.image.width!==A.width||A.depthTexture.image.height!==A.height)&&(A.depthTexture.image.width=A.width,A.depthTexture.image.height=A.height,A.depthTexture.needsUpdate=!0),ne(A.depthTexture,0);const xe=fe.__webglTexture,he=Ge(A);if(A.depthTexture.format===rr)pt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,xe,0,he):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,xe,0);else if(A.depthTexture.format===ar)pt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,xe,0,he):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,xe,0);else throw new Error("Unknown depthTexture format")}function st(F){const A=n.get(F),ee=F.isWebGLCubeRenderTarget===!0;if(A.__boundDepthTexture!==F.depthTexture){const fe=F.depthTexture;if(A.__depthDisposeCallback&&A.__depthDisposeCallback(),fe){const xe=()=>{delete A.__boundDepthTexture,delete A.__depthDisposeCallback,fe.removeEventListener("dispose",xe)};fe.addEventListener("dispose",xe),A.__depthDisposeCallback=xe}A.__boundDepthTexture=fe}if(F.depthTexture&&!A.__autoAllocateDepthBuffer){if(ee)throw new Error("target.depthTexture not supported in Cube render targets");const fe=F.texture.mipmaps;fe&&fe.length>0?Ae(A.__webglFramebuffer[0],F):Ae(A.__webglFramebuffer,F)}else if(ee){A.__webglDepthbuffer=[];for(let fe=0;fe<6;fe++)if(t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer[fe]),A.__webglDepthbuffer[fe]===void 0)A.__webglDepthbuffer[fe]=s.createRenderbuffer(),ve(A.__webglDepthbuffer[fe],F,!1);else{const xe=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,he=A.__webglDepthbuffer[fe];s.bindRenderbuffer(s.RENDERBUFFER,he),s.framebufferRenderbuffer(s.FRAMEBUFFER,xe,s.RENDERBUFFER,he)}}else{const fe=F.texture.mipmaps;if(fe&&fe.length>0?t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer[0]):t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer),A.__webglDepthbuffer===void 0)A.__webglDepthbuffer=s.createRenderbuffer(),ve(A.__webglDepthbuffer,F,!1);else{const xe=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,he=A.__webglDepthbuffer;s.bindRenderbuffer(s.RENDERBUFFER,he),s.framebufferRenderbuffer(s.FRAMEBUFFER,xe,s.RENDERBUFFER,he)}}t.bindFramebuffer(s.FRAMEBUFFER,null)}function wt(F,A,ee){const fe=n.get(F);A!==void 0&&Le(fe.__webglFramebuffer,F,F.texture,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,0),ee!==void 0&&st(F)}function yt(F){const A=F.texture,ee=n.get(F),fe=n.get(A);F.addEventListener("dispose",P);const xe=F.textures,he=F.isWebGLCubeRenderTarget===!0,rt=xe.length>1;if(rt||(fe.__webglTexture===void 0&&(fe.__webglTexture=s.createTexture()),fe.__version=A.version,a.memory.textures++),he){ee.__webglFramebuffer=[];for(let Be=0;Be<6;Be++)if(A.mipmaps&&A.mipmaps.length>0){ee.__webglFramebuffer[Be]=[];for(let Ze=0;Ze<A.mipmaps.length;Ze++)ee.__webglFramebuffer[Be][Ze]=s.createFramebuffer()}else ee.__webglFramebuffer[Be]=s.createFramebuffer()}else{if(A.mipmaps&&A.mipmaps.length>0){ee.__webglFramebuffer=[];for(let Be=0;Be<A.mipmaps.length;Be++)ee.__webglFramebuffer[Be]=s.createFramebuffer()}else ee.__webglFramebuffer=s.createFramebuffer();if(rt)for(let Be=0,Ze=xe.length;Be<Ze;Be++){const at=n.get(xe[Be]);at.__webglTexture===void 0&&(at.__webglTexture=s.createTexture(),a.memory.textures++)}if(F.samples>0&&pt(F)===!1){ee.__webglMultisampledFramebuffer=s.createFramebuffer(),ee.__webglColorRenderbuffer=[],t.bindFramebuffer(s.FRAMEBUFFER,ee.__webglMultisampledFramebuffer);for(let Be=0;Be<xe.length;Be++){const Ze=xe[Be];ee.__webglColorRenderbuffer[Be]=s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,ee.__webglColorRenderbuffer[Be]);const at=r.convert(Ze.format,Ze.colorSpace),ye=r.convert(Ze.type),Ye=b(Ze.internalFormat,at,ye,Ze.colorSpace,F.isXRRenderTarget===!0),_t=Ge(F);s.renderbufferStorageMultisample(s.RENDERBUFFER,_t,Ye,F.width,F.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+Be,s.RENDERBUFFER,ee.__webglColorRenderbuffer[Be])}s.bindRenderbuffer(s.RENDERBUFFER,null),F.depthBuffer&&(ee.__webglDepthRenderbuffer=s.createRenderbuffer(),ve(ee.__webglDepthRenderbuffer,F,!0)),t.bindFramebuffer(s.FRAMEBUFFER,null)}}if(he){t.bindTexture(s.TEXTURE_CUBE_MAP,fe.__webglTexture),Ie(s.TEXTURE_CUBE_MAP,A);for(let Be=0;Be<6;Be++)if(A.mipmaps&&A.mipmaps.length>0)for(let Ze=0;Ze<A.mipmaps.length;Ze++)Le(ee.__webglFramebuffer[Be][Ze],F,A,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+Be,Ze);else Le(ee.__webglFramebuffer[Be],F,A,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+Be,0);g(A)&&p(s.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(rt){for(let Be=0,Ze=xe.length;Be<Ze;Be++){const at=xe[Be],ye=n.get(at);t.bindTexture(s.TEXTURE_2D,ye.__webglTexture),Ie(s.TEXTURE_2D,at),Le(ee.__webglFramebuffer,F,at,s.COLOR_ATTACHMENT0+Be,s.TEXTURE_2D,0),g(at)&&p(s.TEXTURE_2D)}t.unbindTexture()}else{let Be=s.TEXTURE_2D;if((F.isWebGL3DRenderTarget||F.isWebGLArrayRenderTarget)&&(Be=F.isWebGL3DRenderTarget?s.TEXTURE_3D:s.TEXTURE_2D_ARRAY),t.bindTexture(Be,fe.__webglTexture),Ie(Be,A),A.mipmaps&&A.mipmaps.length>0)for(let Ze=0;Ze<A.mipmaps.length;Ze++)Le(ee.__webglFramebuffer[Ze],F,A,s.COLOR_ATTACHMENT0,Be,Ze);else Le(ee.__webglFramebuffer,F,A,s.COLOR_ATTACHMENT0,Be,0);g(A)&&p(Be),t.unbindTexture()}F.depthBuffer&&st(F)}function O(F){const A=F.textures;for(let ee=0,fe=A.length;ee<fe;ee++){const xe=A[ee];if(g(xe)){const he=E(F),rt=n.get(xe).__webglTexture;t.bindTexture(he,rt),p(he),t.unbindTexture()}}}const Gt=[],Lt=[];function Tt(F){if(F.samples>0){if(pt(F)===!1){const A=F.textures,ee=F.width,fe=F.height;let xe=s.COLOR_BUFFER_BIT;const he=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,rt=n.get(F),Be=A.length>1;if(Be)for(let at=0;at<A.length;at++)t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.RENDERBUFFER,null),t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.TEXTURE_2D,null,0);t.bindFramebuffer(s.READ_FRAMEBUFFER,rt.__webglMultisampledFramebuffer);const Ze=F.texture.mipmaps;Ze&&Ze.length>0?t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglFramebuffer[0]):t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglFramebuffer);for(let at=0;at<A.length;at++){if(F.resolveDepthBuffer&&(F.depthBuffer&&(xe|=s.DEPTH_BUFFER_BIT),F.stencilBuffer&&F.resolveStencilBuffer&&(xe|=s.STENCIL_BUFFER_BIT)),Be){s.framebufferRenderbuffer(s.READ_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.RENDERBUFFER,rt.__webglColorRenderbuffer[at]);const ye=n.get(A[at]).__webglTexture;s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,ye,0)}s.blitFramebuffer(0,0,ee,fe,0,0,ee,fe,xe,s.NEAREST),l===!0&&(Gt.length=0,Lt.length=0,Gt.push(s.COLOR_ATTACHMENT0+at),F.depthBuffer&&F.resolveDepthBuffer===!1&&(Gt.push(he),Lt.push(he),s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,Lt)),s.invalidateFramebuffer(s.READ_FRAMEBUFFER,Gt))}if(t.bindFramebuffer(s.READ_FRAMEBUFFER,null),t.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),Be)for(let at=0;at<A.length;at++){t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.RENDERBUFFER,rt.__webglColorRenderbuffer[at]);const ye=n.get(A[at]).__webglTexture;t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.TEXTURE_2D,ye,0)}t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglMultisampledFramebuffer)}else if(F.depthBuffer&&F.resolveDepthBuffer===!1&&l){const A=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT;s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,[A])}}}function Ge(F){return Math.min(i.maxSamples,F.samples)}function pt(F){const A=n.get(F);return F.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&A.__useRenderToTexture!==!1}function Xe(F){const A=a.render.frame;h.get(F)!==A&&(h.set(F,A),F.update())}function ut(F,A){const ee=F.colorSpace,fe=F.format,xe=F.type;return F.isCompressedTexture===!0||F.isVideoTexture===!0||ee!==Ds&&ee!==Ii&&(Vt.getTransfer(ee)===tn?(fe!==Wn||xe!==ci)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ee)),A}function rn(F){return typeof HTMLImageElement<"u"&&F instanceof HTMLImageElement?(c.width=F.naturalWidth||F.width,c.height=F.naturalHeight||F.height):typeof VideoFrame<"u"&&F instanceof VideoFrame?(c.width=F.displayWidth,c.height=F.displayHeight):(c.width=F.width,c.height=F.height),c}this.allocateTextureUnit=X,this.resetTextureUnits=W,this.setTexture2D=ne,this.setTexture2DArray=G,this.setTexture3D=re,this.setTextureCube=K,this.rebindTextures=wt,this.setupRenderTarget=yt,this.updateRenderTargetMipmap=O,this.updateMultisampleRenderTarget=Tt,this.setupDepthRenderbuffer=st,this.setupFrameBufferTexture=Le,this.useMultisampledRTT=pt}function hg(s,e){function t(n,i=Ii){let r;const a=Vt.getTransfer(i);if(n===ci)return s.UNSIGNED_BYTE;if(n===Sl)return s.UNSIGNED_SHORT_4_4_4_4;if(n===bl)return s.UNSIGNED_SHORT_5_5_5_1;if(n===Jh)return s.UNSIGNED_INT_5_9_9_9_REV;if(n===Yh)return s.BYTE;if(n===$h)return s.SHORT;if(n===ir)return s.UNSIGNED_SHORT;if(n===Ml)return s.INT;if(n===es)return s.UNSIGNED_INT;if(n===oi)return s.FLOAT;if(n===cr)return s.HALF_FLOAT;if(n===Kh)return s.ALPHA;if(n===Zh)return s.RGB;if(n===Wn)return s.RGBA;if(n===rr)return s.DEPTH_COMPONENT;if(n===ar)return s.DEPTH_STENCIL;if(n===Qh)return s.RED;if(n===El)return s.RED_INTEGER;if(n===eu)return s.RG;if(n===Al)return s.RG_INTEGER;if(n===wl)return s.RGBA_INTEGER;if(n===ta||n===na||n===ia||n===sa)if(a===tn)if(r=e.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(n===ta)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===na)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===ia)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===sa)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=e.get("WEBGL_compressed_texture_s3tc"),r!==null){if(n===ta)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===na)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===ia)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===sa)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===No||n===Io||n===Fo||n===Oo)if(r=e.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(n===No)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Io)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Fo)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Oo)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===zo||n===Bo||n===ko)if(r=e.get("WEBGL_compressed_texture_etc"),r!==null){if(n===zo||n===Bo)return a===tn?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(n===ko)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Vo||n===Ho||n===Go||n===Wo||n===Xo||n===qo||n===jo||n===Yo||n===$o||n===Jo||n===Ko||n===Zo||n===Qo||n===el)if(r=e.get("WEBGL_compressed_texture_astc"),r!==null){if(n===Vo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Ho)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Go)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Wo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Xo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===qo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===jo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Yo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===$o)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Jo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Ko)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Zo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Qo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===el)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===ra||n===tl||n===nl)if(r=e.get("EXT_texture_compression_bptc"),r!==null){if(n===ra)return a===tn?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===tl)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===nl)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===tu||n===il||n===sl||n===rl)if(r=e.get("EXT_texture_compression_rgtc"),r!==null){if(n===ra)return r.COMPRESSED_RED_RGTC1_EXT;if(n===il)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===sl)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===rl)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===sr?s.UNSIGNED_INT_24_8:s[n]!==void 0?s[n]:null}return{convert:t}}const ug=`
|
|
3803
|
+
}`;function ag(s,e,t){let n=new Nl;const i=new Ze,r=new Ze,a=new Ht,o=new up({depthPacking:Vd}),l=new dp,c={},h=t.maxTextureSize,d={[Xn]:Rn,[Rn]:Xn,[wn]:wn},u=new bi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ze},radius:{value:4}},vertexShader:sg,fragmentShader:rg}),f=u.clone();f.defines.HORIZONTAL_PASS=1;const m=new on;m.setAttribute("position",new dn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const _=new Jt(m,u),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Wh;let p=this.type;this.render=function(C,P,D){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||C.length===0)return;const S=s.getRenderTarget(),y=s.getActiveCubeFace(),N=s.getActiveMipmapLevel(),W=s.state;W.setBlending(Fi),W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const X=p!==vi&&this.type===vi,Q=p===vi&&this.type!==vi;for(let ne=0,G=C.length;ne<G;ne++){const re=C[ne],Z=re.shadow;if(Z===void 0){console.warn("THREE.WebGLShadowMap:",re,"has no shadow.");continue}if(Z.autoUpdate===!1&&Z.needsUpdate===!1)continue;i.copy(Z.mapSize);const me=Z.getFrameExtents();if(i.multiply(me),r.copy(Z.mapSize),(i.x>h||i.y>h)&&(i.x>h&&(r.x=Math.floor(h/me.x),i.x=r.x*me.x,Z.mapSize.x=r.x),i.y>h&&(r.y=Math.floor(h/me.y),i.y=r.y*me.y,Z.mapSize.y=r.y)),Z.map===null||X===!0||Q===!0){const Ce=this.type!==vi?{minFilter:On,magFilter:On}:{};Z.map!==null&&Z.map.dispose(),Z.map=new ts(i.x,i.y,Ce),Z.map.texture.name=re.name+".shadowMap",Z.camera.updateProjectionMatrix()}s.setRenderTarget(Z.map),s.clear();const Ee=Z.getViewportCount();for(let Ce=0;Ce<Ee;Ce++){const Ne=Z.getViewport(Ce);a.set(r.x*Ne.x,r.y*Ne.y,r.x*Ne.z,r.y*Ne.w),W.viewport(a),Z.updateMatrices(re,Ce),n=Z.getFrustum(),M(P,D,Z.camera,re,this.type)}Z.isPointLightShadow!==!0&&this.type===vi&&E(Z,D),Z.needsUpdate=!1}p=this.type,g.needsUpdate=!1,s.setRenderTarget(S,y,N)};function E(C,P){const D=e.update(_);u.defines.VSM_SAMPLES!==C.blurSamples&&(u.defines.VSM_SAMPLES=C.blurSamples,f.defines.VSM_SAMPLES=C.blurSamples,u.needsUpdate=!0,f.needsUpdate=!0),C.mapPass===null&&(C.mapPass=new ts(i.x,i.y)),u.uniforms.shadow_pass.value=C.map.texture,u.uniforms.resolution.value=C.mapSize,u.uniforms.radius.value=C.radius,s.setRenderTarget(C.mapPass),s.clear(),s.renderBufferDirect(P,null,D,u,_,null),f.uniforms.shadow_pass.value=C.mapPass.texture,f.uniforms.resolution.value=C.mapSize,f.uniforms.radius.value=C.radius,s.setRenderTarget(C.map),s.clear(),s.renderBufferDirect(P,null,D,f,_,null)}function b(C,P,D,S){let y=null;const N=D.isPointLight===!0?C.customDistanceMaterial:C.customDepthMaterial;if(N!==void 0)y=N;else if(y=D.isPointLight===!0?l:o,s.localClippingEnabled&&P.clipShadows===!0&&Array.isArray(P.clippingPlanes)&&P.clippingPlanes.length!==0||P.displacementMap&&P.displacementScale!==0||P.alphaMap&&P.alphaTest>0||P.map&&P.alphaTest>0||P.alphaToCoverage===!0){const W=y.uuid,X=P.uuid;let Q=c[W];Q===void 0&&(Q={},c[W]=Q);let ne=Q[X];ne===void 0&&(ne=y.clone(),Q[X]=ne,P.addEventListener("dispose",U)),y=ne}if(y.visible=P.visible,y.wireframe=P.wireframe,S===vi?y.side=P.shadowSide!==null?P.shadowSide:P.side:y.side=P.shadowSide!==null?P.shadowSide:d[P.side],y.alphaMap=P.alphaMap,y.alphaTest=P.alphaToCoverage===!0?.5:P.alphaTest,y.map=P.map,y.clipShadows=P.clipShadows,y.clippingPlanes=P.clippingPlanes,y.clipIntersection=P.clipIntersection,y.displacementMap=P.displacementMap,y.displacementScale=P.displacementScale,y.displacementBias=P.displacementBias,y.wireframeLinewidth=P.wireframeLinewidth,y.linewidth=P.linewidth,D.isPointLight===!0&&y.isMeshDistanceMaterial===!0){const W=s.properties.get(y);W.light=D}return y}function M(C,P,D,S,y){if(C.visible===!1)return;if(C.layers.test(P.layers)&&(C.isMesh||C.isLine||C.isPoints)&&(C.castShadow||C.receiveShadow&&y===vi)&&(!C.frustumCulled||n.intersectsObject(C))){C.modelViewMatrix.multiplyMatrices(D.matrixWorldInverse,C.matrixWorld);const X=e.update(C),Q=C.material;if(Array.isArray(Q)){const ne=X.groups;for(let G=0,re=ne.length;G<re;G++){const Z=ne[G],me=Q[Z.materialIndex];if(me&&me.visible){const Ee=b(C,me,S,y);C.onBeforeShadow(s,C,P,D,X,Ee,Z),s.renderBufferDirect(D,null,X,Ee,C,Z),C.onAfterShadow(s,C,P,D,X,Ee,Z)}}}else if(Q.visible){const ne=b(C,Q,S,y);C.onBeforeShadow(s,C,P,D,X,ne,null),s.renderBufferDirect(D,null,X,ne,C,null),C.onAfterShadow(s,C,P,D,X,ne,null)}}const W=C.children;for(let X=0,Q=W.length;X<Q;X++)M(W[X],P,D,S,y)}function U(C){C.target.removeEventListener("dispose",U);for(const D in c){const S=c[D],y=C.target.uuid;y in S&&(S[y].dispose(),delete S[y])}}}const og={[Eo]:Ao,[wo]:Ro,[To]:Lo,[Rs]:Co,[Ao]:Eo,[Ro]:wo,[Lo]:To,[Co]:Rs};function lg(s,e){function t(){let q=!1;const Xe=new Ht;let Se=null;const z=new Ht(0,0,0,0);return{setMask:function(B){Se!==B&&!q&&(s.colorMask(B,B,B,B),Se=B)},setLocked:function(B){q=B},setClear:function(B,k,te,se,oe){oe===!0&&(B*=se,k*=se,te*=se),Xe.set(B,k,te,se),z.equals(Xe)===!1&&(s.clearColor(B,k,te,se),z.copy(Xe))},reset:function(){q=!1,Se=null,z.set(-1,0,0,0)}}}function n(){let q=!1,Xe=!1,Se=null,z=null,B=null;return{setReversed:function(k){if(Xe!==k){const te=e.get("EXT_clip_control");k?te.clipControlEXT(te.LOWER_LEFT_EXT,te.ZERO_TO_ONE_EXT):te.clipControlEXT(te.LOWER_LEFT_EXT,te.NEGATIVE_ONE_TO_ONE_EXT),Xe=k;const se=B;B=null,this.setClear(se)}},getReversed:function(){return Xe},setTest:function(k){k?ce(s.DEPTH_TEST):Le(s.DEPTH_TEST)},setMask:function(k){Se!==k&&!q&&(s.depthMask(k),Se=k)},setFunc:function(k){if(Xe&&(k=og[k]),z!==k){switch(k){case Eo:s.depthFunc(s.NEVER);break;case Ao:s.depthFunc(s.ALWAYS);break;case wo:s.depthFunc(s.LESS);break;case Rs:s.depthFunc(s.LEQUAL);break;case To:s.depthFunc(s.EQUAL);break;case Co:s.depthFunc(s.GEQUAL);break;case Ro:s.depthFunc(s.GREATER);break;case Lo:s.depthFunc(s.NOTEQUAL);break;default:s.depthFunc(s.LEQUAL)}z=k}},setLocked:function(k){q=k},setClear:function(k){B!==k&&(Xe&&(k=1-k),s.clearDepth(k),B=k)},reset:function(){q=!1,Se=null,z=null,B=null,Xe=!1}}}function i(){let q=!1,Xe=null,Se=null,z=null,B=null,k=null,te=null,se=null,oe=null;return{setTest:function(ue){q||(ue?ce(s.STENCIL_TEST):Le(s.STENCIL_TEST))},setMask:function(ue){Xe!==ue&&!q&&(s.stencilMask(ue),Xe=ue)},setFunc:function(ue,ge,be){(Se!==ue||z!==ge||B!==be)&&(s.stencilFunc(ue,ge,be),Se=ue,z=ge,B=be)},setOp:function(ue,ge,be){(k!==ue||te!==ge||se!==be)&&(s.stencilOp(ue,ge,be),k=ue,te=ge,se=be)},setLocked:function(ue){q=ue},setClear:function(ue){oe!==ue&&(s.clearStencil(ue),oe=ue)},reset:function(){q=!1,Xe=null,Se=null,z=null,B=null,k=null,te=null,se=null,oe=null}}}const r=new t,a=new n,o=new i,l=new WeakMap,c=new WeakMap;let h={},d={},u=new WeakMap,f=[],m=null,_=!1,g=null,p=null,E=null,b=null,M=null,U=null,C=null,P=new _t(0,0,0),D=0,S=!1,y=null,N=null,W=null,X=null,Q=null;const ne=s.getParameter(s.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let G=!1,re=0;const Z=s.getParameter(s.VERSION);Z.indexOf("WebGL")!==-1?(re=parseFloat(/^WebGL (\d)/.exec(Z)[1]),G=re>=1):Z.indexOf("OpenGL ES")!==-1&&(re=parseFloat(/^OpenGL ES (\d)/.exec(Z)[1]),G=re>=2);let me=null,Ee={};const Ce=s.getParameter(s.SCISSOR_BOX),Ne=s.getParameter(s.VIEWPORT),Ve=new Ht().fromArray(Ce),K=new Ht().fromArray(Ne);function ae(q,Xe,Se,z){const B=new Uint8Array(4),k=s.createTexture();s.bindTexture(q,k),s.texParameteri(q,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(q,s.TEXTURE_MAG_FILTER,s.NEAREST);for(let te=0;te<Se;te++)q===s.TEXTURE_3D||q===s.TEXTURE_2D_ARRAY?s.texImage3D(Xe,0,s.RGBA,1,1,z,0,s.RGBA,s.UNSIGNED_BYTE,B):s.texImage2D(Xe+te,0,s.RGBA,1,1,0,s.RGBA,s.UNSIGNED_BYTE,B);return k}const le={};le[s.TEXTURE_2D]=ae(s.TEXTURE_2D,s.TEXTURE_2D,1),le[s.TEXTURE_CUBE_MAP]=ae(s.TEXTURE_CUBE_MAP,s.TEXTURE_CUBE_MAP_POSITIVE_X,6),le[s.TEXTURE_2D_ARRAY]=ae(s.TEXTURE_2D_ARRAY,s.TEXTURE_2D_ARRAY,1,1),le[s.TEXTURE_3D]=ae(s.TEXTURE_3D,s.TEXTURE_3D,1,1),r.setClear(0,0,0,1),a.setClear(1),o.setClear(0),ce(s.DEPTH_TEST),a.setFunc(Rs),Lt(!1),Ct(jl),ce(s.CULL_FACE),O(Fi);function ce(q){h[q]!==!0&&(s.enable(q),h[q]=!0)}function Le(q){h[q]!==!1&&(s.disable(q),h[q]=!1)}function xe(q,Xe){return d[q]!==Xe?(s.bindFramebuffer(q,Xe),d[q]=Xe,q===s.DRAW_FRAMEBUFFER&&(d[s.FRAMEBUFFER]=Xe),q===s.FRAMEBUFFER&&(d[s.DRAW_FRAMEBUFFER]=Xe),!0):!1}function we(q,Xe){let Se=f,z=!1;if(q){Se=u.get(Xe),Se===void 0&&(Se=[],u.set(Xe,Se));const B=q.textures;if(Se.length!==B.length||Se[0]!==s.COLOR_ATTACHMENT0){for(let k=0,te=B.length;k<te;k++)Se[k]=s.COLOR_ATTACHMENT0+k;Se.length=B.length,z=!0}}else Se[0]!==s.BACK&&(Se[0]=s.BACK,z=!0);z&&s.drawBuffers(Se)}function st(q){return m!==q?(s.useProgram(q),m=q,!0):!1}const Tt={[Ji]:s.FUNC_ADD,[dd]:s.FUNC_SUBTRACT,[fd]:s.FUNC_REVERSE_SUBTRACT};Tt[pd]=s.MIN,Tt[md]=s.MAX;const Mt={[gd]:s.ZERO,[_d]:s.ONE,[vd]:s.SRC_COLOR,[So]:s.SRC_ALPHA,[Ed]:s.SRC_ALPHA_SATURATE,[Sd]:s.DST_COLOR,[yd]:s.DST_ALPHA,[xd]:s.ONE_MINUS_SRC_COLOR,[bo]:s.ONE_MINUS_SRC_ALPHA,[bd]:s.ONE_MINUS_DST_COLOR,[Md]:s.ONE_MINUS_DST_ALPHA,[Ad]:s.CONSTANT_COLOR,[wd]:s.ONE_MINUS_CONSTANT_COLOR,[Td]:s.CONSTANT_ALPHA,[Cd]:s.ONE_MINUS_CONSTANT_ALPHA};function O(q,Xe,Se,z,B,k,te,se,oe,ue){if(q===Fi){_===!0&&(Le(s.BLEND),_=!1);return}if(_===!1&&(ce(s.BLEND),_=!0),q!==ud){if(q!==g||ue!==S){if((p!==Ji||M!==Ji)&&(s.blendEquation(s.FUNC_ADD),p=Ji,M=Ji),ue)switch(q){case As:s.blendFuncSeparate(s.ONE,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Yl:s.blendFunc(s.ONE,s.ONE);break;case $l:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Jl:s.blendFuncSeparate(s.ZERO,s.SRC_COLOR,s.ZERO,s.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",q);break}else switch(q){case As:s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Yl:s.blendFunc(s.SRC_ALPHA,s.ONE);break;case $l:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Jl:s.blendFunc(s.ZERO,s.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",q);break}E=null,b=null,U=null,C=null,P.set(0,0,0),D=0,g=q,S=ue}return}B=B||Xe,k=k||Se,te=te||z,(Xe!==p||B!==M)&&(s.blendEquationSeparate(Tt[Xe],Tt[B]),p=Xe,M=B),(Se!==E||z!==b||k!==U||te!==C)&&(s.blendFuncSeparate(Mt[Se],Mt[z],Mt[k],Mt[te]),E=Se,b=z,U=k,C=te),(se.equals(P)===!1||oe!==D)&&(s.blendColor(se.r,se.g,se.b,oe),P.copy(se),D=oe),g=q,S=!1}function Gt(q,Xe){q.side===wn?Le(s.CULL_FACE):ce(s.CULL_FACE);let Se=q.side===Rn;Xe&&(Se=!Se),Lt(Se),q.blending===As&&q.transparent===!1?O(Fi):O(q.blending,q.blendEquation,q.blendSrc,q.blendDst,q.blendEquationAlpha,q.blendSrcAlpha,q.blendDstAlpha,q.blendColor,q.blendAlpha,q.premultipliedAlpha),a.setFunc(q.depthFunc),a.setTest(q.depthTest),a.setMask(q.depthWrite),r.setMask(q.colorWrite);const z=q.stencilWrite;o.setTest(z),z&&(o.setMask(q.stencilWriteMask),o.setFunc(q.stencilFunc,q.stencilRef,q.stencilFuncMask),o.setOp(q.stencilFail,q.stencilZFail,q.stencilZPass)),mt(q.polygonOffset,q.polygonOffsetFactor,q.polygonOffsetUnits),q.alphaToCoverage===!0?ce(s.SAMPLE_ALPHA_TO_COVERAGE):Le(s.SAMPLE_ALPHA_TO_COVERAGE)}function Lt(q){y!==q&&(q?s.frontFace(s.CW):s.frontFace(s.CCW),y=q)}function Ct(q){q!==cd?(ce(s.CULL_FACE),q!==N&&(q===jl?s.cullFace(s.BACK):q===hd?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK))):Le(s.CULL_FACE),N=q}function He(q){q!==W&&(G&&s.lineWidth(q),W=q)}function mt(q,Xe,Se){q?(ce(s.POLYGON_OFFSET_FILL),(X!==Xe||Q!==Se)&&(s.polygonOffset(Xe,Se),X=Xe,Q=Se)):Le(s.POLYGON_OFFSET_FILL)}function We(q){q?ce(s.SCISSOR_TEST):Le(s.SCISSOR_TEST)}function dt(q){q===void 0&&(q=s.TEXTURE0+ne-1),me!==q&&(s.activeTexture(q),me=q)}function rn(q,Xe,Se){Se===void 0&&(me===null?Se=s.TEXTURE0+ne-1:Se=me);let z=Ee[Se];z===void 0&&(z={type:void 0,texture:void 0},Ee[Se]=z),(z.type!==q||z.texture!==Xe)&&(me!==Se&&(s.activeTexture(Se),me=Se),s.bindTexture(q,Xe||le[q]),z.type=q,z.texture=Xe)}function F(){const q=Ee[me];q!==void 0&&q.type!==void 0&&(s.bindTexture(q.type,null),q.type=void 0,q.texture=void 0)}function A(){try{s.compressedTexImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function ee(){try{s.compressedTexImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function fe(){try{s.texSubImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function ye(){try{s.texSubImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function he(){try{s.compressedTexSubImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function rt(){try{s.compressedTexSubImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function ze(){try{s.texStorage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Qe(){try{s.texStorage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function at(){try{s.texImage2D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Me(){try{s.texImage3D(...arguments)}catch(q){console.error("THREE.WebGLState:",q)}}function Ye(q){Ve.equals(q)===!1&&(s.scissor(q.x,q.y,q.z,q.w),Ve.copy(q))}function vt(q){K.equals(q)===!1&&(s.viewport(q.x,q.y,q.z,q.w),K.copy(q))}function gt(q,Xe){let Se=c.get(Xe);Se===void 0&&(Se=new WeakMap,c.set(Xe,Se));let z=Se.get(q);z===void 0&&(z=s.getUniformBlockIndex(Xe,q.name),Se.set(q,z))}function Be(q,Xe){const z=c.get(Xe).get(q);l.get(Xe)!==z&&(s.uniformBlockBinding(Xe,z,q.__bindingPointIndex),l.set(Xe,z))}function St(){s.disable(s.BLEND),s.disable(s.CULL_FACE),s.disable(s.DEPTH_TEST),s.disable(s.POLYGON_OFFSET_FILL),s.disable(s.SCISSOR_TEST),s.disable(s.STENCIL_TEST),s.disable(s.SAMPLE_ALPHA_TO_COVERAGE),s.blendEquation(s.FUNC_ADD),s.blendFunc(s.ONE,s.ZERO),s.blendFuncSeparate(s.ONE,s.ZERO,s.ONE,s.ZERO),s.blendColor(0,0,0,0),s.colorMask(!0,!0,!0,!0),s.clearColor(0,0,0,0),s.depthMask(!0),s.depthFunc(s.LESS),a.setReversed(!1),s.clearDepth(1),s.stencilMask(4294967295),s.stencilFunc(s.ALWAYS,0,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.KEEP),s.clearStencil(0),s.cullFace(s.BACK),s.frontFace(s.CCW),s.polygonOffset(0,0),s.activeTexture(s.TEXTURE0),s.bindFramebuffer(s.FRAMEBUFFER,null),s.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),s.bindFramebuffer(s.READ_FRAMEBUFFER,null),s.useProgram(null),s.lineWidth(1),s.scissor(0,0,s.canvas.width,s.canvas.height),s.viewport(0,0,s.canvas.width,s.canvas.height),h={},me=null,Ee={},d={},u=new WeakMap,f=[],m=null,_=!1,g=null,p=null,E=null,b=null,M=null,U=null,C=null,P=new _t(0,0,0),D=0,S=!1,y=null,N=null,W=null,X=null,Q=null,Ve.set(0,0,s.canvas.width,s.canvas.height),K.set(0,0,s.canvas.width,s.canvas.height),r.reset(),a.reset(),o.reset()}return{buffers:{color:r,depth:a,stencil:o},enable:ce,disable:Le,bindFramebuffer:xe,drawBuffers:we,useProgram:st,setBlending:O,setMaterial:Gt,setFlipSided:Lt,setCullFace:Ct,setLineWidth:He,setPolygonOffset:mt,setScissorTest:We,activeTexture:dt,bindTexture:rn,unbindTexture:F,compressedTexImage2D:A,compressedTexImage3D:ee,texImage2D:at,texImage3D:Me,updateUBOMapping:gt,uniformBlockBinding:Be,texStorage2D:ze,texStorage3D:Qe,texSubImage2D:fe,texSubImage3D:ye,compressedTexSubImage2D:he,compressedTexSubImage3D:rt,scissor:Ye,viewport:vt,reset:St}}function cg(s,e,t,n,i,r,a){const o=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ze,h=new WeakMap;let d;const u=new WeakMap;let f=!1;try{f=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function m(F,A){return f?new OffscreenCanvas(F,A):or("canvas")}function _(F,A,ee){let fe=1;const ye=rn(F);if((ye.width>ee||ye.height>ee)&&(fe=ee/Math.max(ye.width,ye.height)),fe<1)if(typeof HTMLImageElement<"u"&&F instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&F instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&F instanceof ImageBitmap||typeof VideoFrame<"u"&&F instanceof VideoFrame){const he=Math.floor(fe*ye.width),rt=Math.floor(fe*ye.height);d===void 0&&(d=m(he,rt));const ze=A?m(he,rt):d;return ze.width=he,ze.height=rt,ze.getContext("2d").drawImage(F,0,0,he,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+ye.width+"x"+ye.height+") to ("+he+"x"+rt+")."),ze}else return"data"in F&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+ye.width+"x"+ye.height+")."),F;return F}function g(F){return F.generateMipmaps}function p(F){s.generateMipmap(F)}function E(F){return F.isWebGLCubeRenderTarget?s.TEXTURE_CUBE_MAP:F.isWebGL3DRenderTarget?s.TEXTURE_3D:F.isWebGLArrayRenderTarget||F.isCompressedArrayTexture?s.TEXTURE_2D_ARRAY:s.TEXTURE_2D}function b(F,A,ee,fe,ye=!1){if(F!==null){if(s[F]!==void 0)return s[F];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+F+"'")}let he=A;if(A===s.RED&&(ee===s.FLOAT&&(he=s.R32F),ee===s.HALF_FLOAT&&(he=s.R16F),ee===s.UNSIGNED_BYTE&&(he=s.R8)),A===s.RED_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.R8UI),ee===s.UNSIGNED_SHORT&&(he=s.R16UI),ee===s.UNSIGNED_INT&&(he=s.R32UI),ee===s.BYTE&&(he=s.R8I),ee===s.SHORT&&(he=s.R16I),ee===s.INT&&(he=s.R32I)),A===s.RG&&(ee===s.FLOAT&&(he=s.RG32F),ee===s.HALF_FLOAT&&(he=s.RG16F),ee===s.UNSIGNED_BYTE&&(he=s.RG8)),A===s.RG_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RG8UI),ee===s.UNSIGNED_SHORT&&(he=s.RG16UI),ee===s.UNSIGNED_INT&&(he=s.RG32UI),ee===s.BYTE&&(he=s.RG8I),ee===s.SHORT&&(he=s.RG16I),ee===s.INT&&(he=s.RG32I)),A===s.RGB_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RGB8UI),ee===s.UNSIGNED_SHORT&&(he=s.RGB16UI),ee===s.UNSIGNED_INT&&(he=s.RGB32UI),ee===s.BYTE&&(he=s.RGB8I),ee===s.SHORT&&(he=s.RGB16I),ee===s.INT&&(he=s.RGB32I)),A===s.RGBA_INTEGER&&(ee===s.UNSIGNED_BYTE&&(he=s.RGBA8UI),ee===s.UNSIGNED_SHORT&&(he=s.RGBA16UI),ee===s.UNSIGNED_INT&&(he=s.RGBA32UI),ee===s.BYTE&&(he=s.RGBA8I),ee===s.SHORT&&(he=s.RGBA16I),ee===s.INT&&(he=s.RGBA32I)),A===s.RGB&&ee===s.UNSIGNED_INT_5_9_9_9_REV&&(he=s.RGB9_E5),A===s.RGBA){const rt=ye?da:Vt.getTransfer(fe);ee===s.FLOAT&&(he=s.RGBA32F),ee===s.HALF_FLOAT&&(he=s.RGBA16F),ee===s.UNSIGNED_BYTE&&(he=rt===tn?s.SRGB8_ALPHA8:s.RGBA8),ee===s.UNSIGNED_SHORT_4_4_4_4&&(he=s.RGBA4),ee===s.UNSIGNED_SHORT_5_5_5_1&&(he=s.RGB5_A1)}return(he===s.R16F||he===s.R32F||he===s.RG16F||he===s.RG32F||he===s.RGBA16F||he===s.RGBA32F)&&e.get("EXT_color_buffer_float"),he}function M(F,A){let ee;return F?A===null||A===es||A===sr?ee=s.DEPTH24_STENCIL8:A===oi?ee=s.DEPTH32F_STENCIL8:A===ir&&(ee=s.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):A===null||A===es||A===sr?ee=s.DEPTH_COMPONENT24:A===oi?ee=s.DEPTH_COMPONENT32F:A===ir&&(ee=s.DEPTH_COMPONENT16),ee}function U(F,A){return g(F)===!0||F.isFramebufferTexture&&F.minFilter!==On&&F.minFilter!==Fn?Math.log2(Math.max(A.width,A.height))+1:F.mipmaps!==void 0&&F.mipmaps.length>0?F.mipmaps.length:F.isCompressedTexture&&Array.isArray(F.image)?A.mipmaps.length:1}function C(F){const A=F.target;A.removeEventListener("dispose",C),D(A),A.isVideoTexture&&h.delete(A)}function P(F){const A=F.target;A.removeEventListener("dispose",P),y(A)}function D(F){const A=n.get(F);if(A.__webglInit===void 0)return;const ee=F.source,fe=u.get(ee);if(fe){const ye=fe[A.__cacheKey];ye.usedTimes--,ye.usedTimes===0&&S(F),Object.keys(fe).length===0&&u.delete(ee)}n.remove(F)}function S(F){const A=n.get(F);s.deleteTexture(A.__webglTexture);const ee=F.source,fe=u.get(ee);delete fe[A.__cacheKey],a.memory.textures--}function y(F){const A=n.get(F);if(F.depthTexture&&(F.depthTexture.dispose(),n.remove(F.depthTexture)),F.isWebGLCubeRenderTarget)for(let fe=0;fe<6;fe++){if(Array.isArray(A.__webglFramebuffer[fe]))for(let ye=0;ye<A.__webglFramebuffer[fe].length;ye++)s.deleteFramebuffer(A.__webglFramebuffer[fe][ye]);else s.deleteFramebuffer(A.__webglFramebuffer[fe]);A.__webglDepthbuffer&&s.deleteRenderbuffer(A.__webglDepthbuffer[fe])}else{if(Array.isArray(A.__webglFramebuffer))for(let fe=0;fe<A.__webglFramebuffer.length;fe++)s.deleteFramebuffer(A.__webglFramebuffer[fe]);else s.deleteFramebuffer(A.__webglFramebuffer);if(A.__webglDepthbuffer&&s.deleteRenderbuffer(A.__webglDepthbuffer),A.__webglMultisampledFramebuffer&&s.deleteFramebuffer(A.__webglMultisampledFramebuffer),A.__webglColorRenderbuffer)for(let fe=0;fe<A.__webglColorRenderbuffer.length;fe++)A.__webglColorRenderbuffer[fe]&&s.deleteRenderbuffer(A.__webglColorRenderbuffer[fe]);A.__webglDepthRenderbuffer&&s.deleteRenderbuffer(A.__webglDepthRenderbuffer)}const ee=F.textures;for(let fe=0,ye=ee.length;fe<ye;fe++){const he=n.get(ee[fe]);he.__webglTexture&&(s.deleteTexture(he.__webglTexture),a.memory.textures--),n.remove(ee[fe])}n.remove(F)}let N=0;function W(){N=0}function X(){const F=N;return F>=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+F+" texture units while this GPU supports only "+i.maxTextures),N+=1,F}function Q(F){const A=[];return A.push(F.wrapS),A.push(F.wrapT),A.push(F.wrapR||0),A.push(F.magFilter),A.push(F.minFilter),A.push(F.anisotropy),A.push(F.internalFormat),A.push(F.format),A.push(F.type),A.push(F.generateMipmaps),A.push(F.premultiplyAlpha),A.push(F.flipY),A.push(F.unpackAlignment),A.push(F.colorSpace),A.join()}function ne(F,A){const ee=n.get(F);if(F.isVideoTexture&&We(F),F.isRenderTargetTexture===!1&&F.version>0&&ee.__version!==F.version){const fe=F.image;if(fe===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(fe.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{le(ee,F,A);return}}t.bindTexture(s.TEXTURE_2D,ee.__webglTexture,s.TEXTURE0+A)}function G(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){le(ee,F,A);return}t.bindTexture(s.TEXTURE_2D_ARRAY,ee.__webglTexture,s.TEXTURE0+A)}function re(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){le(ee,F,A);return}t.bindTexture(s.TEXTURE_3D,ee.__webglTexture,s.TEXTURE0+A)}function Z(F,A){const ee=n.get(F);if(F.version>0&&ee.__version!==F.version){ce(ee,F,A);return}t.bindTexture(s.TEXTURE_CUBE_MAP,ee.__webglTexture,s.TEXTURE0+A)}const me={[ai]:s.REPEAT,[Jn]:s.CLAMP_TO_EDGE,[Uo]:s.MIRRORED_REPEAT},Ee={[On]:s.NEAREST,[zd]:s.NEAREST_MIPMAP_NEAREST,[fr]:s.NEAREST_MIPMAP_LINEAR,[Fn]:s.LINEAR,[Ra]:s.LINEAR_MIPMAP_NEAREST,[xi]:s.LINEAR_MIPMAP_LINEAR},Ce={[Gd]:s.NEVER,[$d]:s.ALWAYS,[Wd]:s.LESS,[nu]:s.LEQUAL,[Xd]:s.EQUAL,[Yd]:s.GEQUAL,[qd]:s.GREATER,[jd]:s.NOTEQUAL};function Ne(F,A){if(A.type===oi&&e.has("OES_texture_float_linear")===!1&&(A.magFilter===Fn||A.magFilter===Ra||A.magFilter===fr||A.magFilter===xi||A.minFilter===Fn||A.minFilter===Ra||A.minFilter===fr||A.minFilter===xi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),s.texParameteri(F,s.TEXTURE_WRAP_S,me[A.wrapS]),s.texParameteri(F,s.TEXTURE_WRAP_T,me[A.wrapT]),(F===s.TEXTURE_3D||F===s.TEXTURE_2D_ARRAY)&&s.texParameteri(F,s.TEXTURE_WRAP_R,me[A.wrapR]),s.texParameteri(F,s.TEXTURE_MAG_FILTER,Ee[A.magFilter]),s.texParameteri(F,s.TEXTURE_MIN_FILTER,Ee[A.minFilter]),A.compareFunction&&(s.texParameteri(F,s.TEXTURE_COMPARE_MODE,s.COMPARE_REF_TO_TEXTURE),s.texParameteri(F,s.TEXTURE_COMPARE_FUNC,Ce[A.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(A.magFilter===On||A.minFilter!==fr&&A.minFilter!==xi||A.type===oi&&e.has("OES_texture_float_linear")===!1)return;if(A.anisotropy>1||n.get(A).__currentAnisotropy){const ee=e.get("EXT_texture_filter_anisotropic");s.texParameterf(F,ee.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(A.anisotropy,i.getMaxAnisotropy())),n.get(A).__currentAnisotropy=A.anisotropy}}}function Ve(F,A){let ee=!1;F.__webglInit===void 0&&(F.__webglInit=!0,A.addEventListener("dispose",C));const fe=A.source;let ye=u.get(fe);ye===void 0&&(ye={},u.set(fe,ye));const he=Q(A);if(he!==F.__cacheKey){ye[he]===void 0&&(ye[he]={texture:s.createTexture(),usedTimes:0},a.memory.textures++,ee=!0),ye[he].usedTimes++;const rt=ye[F.__cacheKey];rt!==void 0&&(ye[F.__cacheKey].usedTimes--,rt.usedTimes===0&&S(A)),F.__cacheKey=he,F.__webglTexture=ye[he].texture}return ee}function K(F,A,ee){return Math.floor(Math.floor(F/ee)/A)}function ae(F,A,ee,fe){const he=F.updateRanges;if(he.length===0)t.texSubImage2D(s.TEXTURE_2D,0,0,0,A.width,A.height,ee,fe,A.data);else{he.sort((Me,Ye)=>Me.start-Ye.start);let rt=0;for(let Me=1;Me<he.length;Me++){const Ye=he[rt],vt=he[Me],gt=Ye.start+Ye.count,Be=K(vt.start,A.width,4),St=K(Ye.start,A.width,4);vt.start<=gt+1&&Be===St&&K(vt.start+vt.count-1,A.width,4)===Be?Ye.count=Math.max(Ye.count,vt.start+vt.count-Ye.start):(++rt,he[rt]=vt)}he.length=rt+1;const ze=s.getParameter(s.UNPACK_ROW_LENGTH),Qe=s.getParameter(s.UNPACK_SKIP_PIXELS),at=s.getParameter(s.UNPACK_SKIP_ROWS);s.pixelStorei(s.UNPACK_ROW_LENGTH,A.width);for(let Me=0,Ye=he.length;Me<Ye;Me++){const vt=he[Me],gt=Math.floor(vt.start/4),Be=Math.ceil(vt.count/4),St=gt%A.width,q=Math.floor(gt/A.width),Xe=Be,Se=1;s.pixelStorei(s.UNPACK_SKIP_PIXELS,St),s.pixelStorei(s.UNPACK_SKIP_ROWS,q),t.texSubImage2D(s.TEXTURE_2D,0,St,q,Xe,Se,ee,fe,A.data)}F.clearUpdateRanges(),s.pixelStorei(s.UNPACK_ROW_LENGTH,ze),s.pixelStorei(s.UNPACK_SKIP_PIXELS,Qe),s.pixelStorei(s.UNPACK_SKIP_ROWS,at)}}function le(F,A,ee){let fe=s.TEXTURE_2D;(A.isDataArrayTexture||A.isCompressedArrayTexture)&&(fe=s.TEXTURE_2D_ARRAY),A.isData3DTexture&&(fe=s.TEXTURE_3D);const ye=Ve(F,A),he=A.source;t.bindTexture(fe,F.__webglTexture,s.TEXTURE0+ee);const rt=n.get(he);if(he.version!==rt.__version||ye===!0){t.activeTexture(s.TEXTURE0+ee);const ze=Vt.getPrimaries(Vt.workingColorSpace),Qe=A.colorSpace===Ni?null:Vt.getPrimaries(A.colorSpace),at=A.colorSpace===Ni||ze===Qe?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,A.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,A.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,at);let Me=_(A.image,!1,i.maxTextureSize);Me=dt(A,Me);const Ye=r.convert(A.format,A.colorSpace),vt=r.convert(A.type);let gt=b(A.internalFormat,Ye,vt,A.colorSpace,A.isVideoTexture);Ne(fe,A);let Be;const St=A.mipmaps,q=A.isVideoTexture!==!0,Xe=rt.__version===void 0||ye===!0,Se=he.dataReady,z=U(A,Me);if(A.isDepthTexture)gt=M(A.format===ar,A.type),Xe&&(q?t.texStorage2D(s.TEXTURE_2D,1,gt,Me.width,Me.height):t.texImage2D(s.TEXTURE_2D,0,gt,Me.width,Me.height,0,Ye,vt,null));else if(A.isDataTexture)if(St.length>0){q&&Xe&&t.texStorage2D(s.TEXTURE_2D,z,gt,St[0].width,St[0].height);for(let B=0,k=St.length;B<k;B++)Be=St[B],q?Se&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,Be.width,Be.height,Ye,vt,Be.data):t.texImage2D(s.TEXTURE_2D,B,gt,Be.width,Be.height,0,Ye,vt,Be.data);A.generateMipmaps=!1}else q?(Xe&&t.texStorage2D(s.TEXTURE_2D,z,gt,Me.width,Me.height),Se&&ae(A,Me,Ye,vt)):t.texImage2D(s.TEXTURE_2D,0,gt,Me.width,Me.height,0,Ye,vt,Me.data);else if(A.isCompressedTexture)if(A.isCompressedArrayTexture){q&&Xe&&t.texStorage3D(s.TEXTURE_2D_ARRAY,z,gt,St[0].width,St[0].height,Me.depth);for(let B=0,k=St.length;B<k;B++)if(Be=St[B],A.format!==Wn)if(Ye!==null)if(q){if(Se)if(A.layerUpdates.size>0){const te=jc(Be.width,Be.height,A.format,A.type);for(const se of A.layerUpdates){const oe=Be.data.subarray(se*te/Be.data.BYTES_PER_ELEMENT,(se+1)*te/Be.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,se,Be.width,Be.height,1,Ye,oe)}A.clearLayerUpdates()}else t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,0,Be.width,Be.height,Me.depth,Ye,Be.data)}else t.compressedTexImage3D(s.TEXTURE_2D_ARRAY,B,gt,Be.width,Be.height,Me.depth,0,Be.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else q?Se&&t.texSubImage3D(s.TEXTURE_2D_ARRAY,B,0,0,0,Be.width,Be.height,Me.depth,Ye,vt,Be.data):t.texImage3D(s.TEXTURE_2D_ARRAY,B,gt,Be.width,Be.height,Me.depth,0,Ye,vt,Be.data)}else{q&&Xe&&t.texStorage2D(s.TEXTURE_2D,z,gt,St[0].width,St[0].height);for(let B=0,k=St.length;B<k;B++)Be=St[B],A.format!==Wn?Ye!==null?q?Se&&t.compressedTexSubImage2D(s.TEXTURE_2D,B,0,0,Be.width,Be.height,Ye,Be.data):t.compressedTexImage2D(s.TEXTURE_2D,B,gt,Be.width,Be.height,0,Be.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):q?Se&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,Be.width,Be.height,Ye,vt,Be.data):t.texImage2D(s.TEXTURE_2D,B,gt,Be.width,Be.height,0,Ye,vt,Be.data)}else if(A.isDataArrayTexture)if(q){if(Xe&&t.texStorage3D(s.TEXTURE_2D_ARRAY,z,gt,Me.width,Me.height,Me.depth),Se)if(A.layerUpdates.size>0){const B=jc(Me.width,Me.height,A.format,A.type);for(const k of A.layerUpdates){const te=Me.data.subarray(k*B/Me.data.BYTES_PER_ELEMENT,(k+1)*B/Me.data.BYTES_PER_ELEMENT);t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,k,Me.width,Me.height,1,Ye,vt,te)}A.clearLayerUpdates()}else t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,0,Me.width,Me.height,Me.depth,Ye,vt,Me.data)}else t.texImage3D(s.TEXTURE_2D_ARRAY,0,gt,Me.width,Me.height,Me.depth,0,Ye,vt,Me.data);else if(A.isData3DTexture)q?(Xe&&t.texStorage3D(s.TEXTURE_3D,z,gt,Me.width,Me.height,Me.depth),Se&&t.texSubImage3D(s.TEXTURE_3D,0,0,0,0,Me.width,Me.height,Me.depth,Ye,vt,Me.data)):t.texImage3D(s.TEXTURE_3D,0,gt,Me.width,Me.height,Me.depth,0,Ye,vt,Me.data);else if(A.isFramebufferTexture){if(Xe)if(q)t.texStorage2D(s.TEXTURE_2D,z,gt,Me.width,Me.height);else{let B=Me.width,k=Me.height;for(let te=0;te<z;te++)t.texImage2D(s.TEXTURE_2D,te,gt,B,k,0,Ye,vt,null),B>>=1,k>>=1}}else if(St.length>0){if(q&&Xe){const B=rn(St[0]);t.texStorage2D(s.TEXTURE_2D,z,gt,B.width,B.height)}for(let B=0,k=St.length;B<k;B++)Be=St[B],q?Se&&t.texSubImage2D(s.TEXTURE_2D,B,0,0,Ye,vt,Be):t.texImage2D(s.TEXTURE_2D,B,gt,Ye,vt,Be);A.generateMipmaps=!1}else if(q){if(Xe){const B=rn(Me);t.texStorage2D(s.TEXTURE_2D,z,gt,B.width,B.height)}Se&&t.texSubImage2D(s.TEXTURE_2D,0,0,0,Ye,vt,Me)}else t.texImage2D(s.TEXTURE_2D,0,gt,Ye,vt,Me);g(A)&&p(fe),rt.__version=he.version,A.onUpdate&&A.onUpdate(A)}F.__version=A.version}function ce(F,A,ee){if(A.image.length!==6)return;const fe=Ve(F,A),ye=A.source;t.bindTexture(s.TEXTURE_CUBE_MAP,F.__webglTexture,s.TEXTURE0+ee);const he=n.get(ye);if(ye.version!==he.__version||fe===!0){t.activeTexture(s.TEXTURE0+ee);const rt=Vt.getPrimaries(Vt.workingColorSpace),ze=A.colorSpace===Ni?null:Vt.getPrimaries(A.colorSpace),Qe=A.colorSpace===Ni||rt===ze?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,A.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,A.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,Qe);const at=A.isCompressedTexture||A.image[0].isCompressedTexture,Me=A.image[0]&&A.image[0].isDataTexture,Ye=[];for(let k=0;k<6;k++)!at&&!Me?Ye[k]=_(A.image[k],!0,i.maxCubemapSize):Ye[k]=Me?A.image[k].image:A.image[k],Ye[k]=dt(A,Ye[k]);const vt=Ye[0],gt=r.convert(A.format,A.colorSpace),Be=r.convert(A.type),St=b(A.internalFormat,gt,Be,A.colorSpace),q=A.isVideoTexture!==!0,Xe=he.__version===void 0||fe===!0,Se=ye.dataReady;let z=U(A,vt);Ne(s.TEXTURE_CUBE_MAP,A);let B;if(at){q&&Xe&&t.texStorage2D(s.TEXTURE_CUBE_MAP,z,St,vt.width,vt.height);for(let k=0;k<6;k++){B=Ye[k].mipmaps;for(let te=0;te<B.length;te++){const se=B[te];A.format!==Wn?gt!==null?q?Se&&t.compressedTexSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,0,0,se.width,se.height,gt,se.data):t.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,St,se.width,se.height,0,se.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):q?Se&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,0,0,se.width,se.height,gt,Be,se.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te,St,se.width,se.height,0,gt,Be,se.data)}}}else{if(B=A.mipmaps,q&&Xe){B.length>0&&z++;const k=rn(Ye[0]);t.texStorage2D(s.TEXTURE_CUBE_MAP,z,St,k.width,k.height)}for(let k=0;k<6;k++)if(Me){q?Se&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,0,0,Ye[k].width,Ye[k].height,gt,Be,Ye[k].data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,St,Ye[k].width,Ye[k].height,0,gt,Be,Ye[k].data);for(let te=0;te<B.length;te++){const oe=B[te].image[k].image;q?Se&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,0,0,oe.width,oe.height,gt,Be,oe.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,St,oe.width,oe.height,0,gt,Be,oe.data)}}else{q?Se&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,0,0,gt,Be,Ye[k]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,0,St,gt,Be,Ye[k]);for(let te=0;te<B.length;te++){const se=B[te];q?Se&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,0,0,gt,Be,se.image[k]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+k,te+1,St,gt,Be,se.image[k])}}}g(A)&&p(s.TEXTURE_CUBE_MAP),he.__version=ye.version,A.onUpdate&&A.onUpdate(A)}F.__version=A.version}function Le(F,A,ee,fe,ye,he){const rt=r.convert(ee.format,ee.colorSpace),ze=r.convert(ee.type),Qe=b(ee.internalFormat,rt,ze,ee.colorSpace),at=n.get(A),Me=n.get(ee);if(Me.__renderTarget=A,!at.__hasExternalTextures){const Ye=Math.max(1,A.width>>he),vt=Math.max(1,A.height>>he);ye===s.TEXTURE_3D||ye===s.TEXTURE_2D_ARRAY?t.texImage3D(ye,he,Qe,Ye,vt,A.depth,0,rt,ze,null):t.texImage2D(ye,he,Qe,Ye,vt,0,rt,ze,null)}t.bindFramebuffer(s.FRAMEBUFFER,F),mt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,fe,ye,Me.__webglTexture,0,He(A)):(ye===s.TEXTURE_2D||ye>=s.TEXTURE_CUBE_MAP_POSITIVE_X&&ye<=s.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&s.framebufferTexture2D(s.FRAMEBUFFER,fe,ye,Me.__webglTexture,he),t.bindFramebuffer(s.FRAMEBUFFER,null)}function xe(F,A,ee){if(s.bindRenderbuffer(s.RENDERBUFFER,F),A.depthBuffer){const fe=A.depthTexture,ye=fe&&fe.isDepthTexture?fe.type:null,he=M(A.stencilBuffer,ye),rt=A.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,ze=He(A);mt(A)?o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,ze,he,A.width,A.height):ee?s.renderbufferStorageMultisample(s.RENDERBUFFER,ze,he,A.width,A.height):s.renderbufferStorage(s.RENDERBUFFER,he,A.width,A.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,rt,s.RENDERBUFFER,F)}else{const fe=A.textures;for(let ye=0;ye<fe.length;ye++){const he=fe[ye],rt=r.convert(he.format,he.colorSpace),ze=r.convert(he.type),Qe=b(he.internalFormat,rt,ze,he.colorSpace),at=He(A);ee&&mt(A)===!1?s.renderbufferStorageMultisample(s.RENDERBUFFER,at,Qe,A.width,A.height):mt(A)?o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,at,Qe,A.width,A.height):s.renderbufferStorage(s.RENDERBUFFER,Qe,A.width,A.height)}}s.bindRenderbuffer(s.RENDERBUFFER,null)}function we(F,A){if(A&&A.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(s.FRAMEBUFFER,F),!(A.depthTexture&&A.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const fe=n.get(A.depthTexture);fe.__renderTarget=A,(!fe.__webglTexture||A.depthTexture.image.width!==A.width||A.depthTexture.image.height!==A.height)&&(A.depthTexture.image.width=A.width,A.depthTexture.image.height=A.height,A.depthTexture.needsUpdate=!0),ne(A.depthTexture,0);const ye=fe.__webglTexture,he=He(A);if(A.depthTexture.format===rr)mt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,ye,0,he):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,ye,0);else if(A.depthTexture.format===ar)mt(A)?o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,ye,0,he):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,ye,0);else throw new Error("Unknown depthTexture format")}function st(F){const A=n.get(F),ee=F.isWebGLCubeRenderTarget===!0;if(A.__boundDepthTexture!==F.depthTexture){const fe=F.depthTexture;if(A.__depthDisposeCallback&&A.__depthDisposeCallback(),fe){const ye=()=>{delete A.__boundDepthTexture,delete A.__depthDisposeCallback,fe.removeEventListener("dispose",ye)};fe.addEventListener("dispose",ye),A.__depthDisposeCallback=ye}A.__boundDepthTexture=fe}if(F.depthTexture&&!A.__autoAllocateDepthBuffer){if(ee)throw new Error("target.depthTexture not supported in Cube render targets");const fe=F.texture.mipmaps;fe&&fe.length>0?we(A.__webglFramebuffer[0],F):we(A.__webglFramebuffer,F)}else if(ee){A.__webglDepthbuffer=[];for(let fe=0;fe<6;fe++)if(t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer[fe]),A.__webglDepthbuffer[fe]===void 0)A.__webglDepthbuffer[fe]=s.createRenderbuffer(),xe(A.__webglDepthbuffer[fe],F,!1);else{const ye=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,he=A.__webglDepthbuffer[fe];s.bindRenderbuffer(s.RENDERBUFFER,he),s.framebufferRenderbuffer(s.FRAMEBUFFER,ye,s.RENDERBUFFER,he)}}else{const fe=F.texture.mipmaps;if(fe&&fe.length>0?t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer[0]):t.bindFramebuffer(s.FRAMEBUFFER,A.__webglFramebuffer),A.__webglDepthbuffer===void 0)A.__webglDepthbuffer=s.createRenderbuffer(),xe(A.__webglDepthbuffer,F,!1);else{const ye=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,he=A.__webglDepthbuffer;s.bindRenderbuffer(s.RENDERBUFFER,he),s.framebufferRenderbuffer(s.FRAMEBUFFER,ye,s.RENDERBUFFER,he)}}t.bindFramebuffer(s.FRAMEBUFFER,null)}function Tt(F,A,ee){const fe=n.get(F);A!==void 0&&Le(fe.__webglFramebuffer,F,F.texture,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,0),ee!==void 0&&st(F)}function Mt(F){const A=F.texture,ee=n.get(F),fe=n.get(A);F.addEventListener("dispose",P);const ye=F.textures,he=F.isWebGLCubeRenderTarget===!0,rt=ye.length>1;if(rt||(fe.__webglTexture===void 0&&(fe.__webglTexture=s.createTexture()),fe.__version=A.version,a.memory.textures++),he){ee.__webglFramebuffer=[];for(let ze=0;ze<6;ze++)if(A.mipmaps&&A.mipmaps.length>0){ee.__webglFramebuffer[ze]=[];for(let Qe=0;Qe<A.mipmaps.length;Qe++)ee.__webglFramebuffer[ze][Qe]=s.createFramebuffer()}else ee.__webglFramebuffer[ze]=s.createFramebuffer()}else{if(A.mipmaps&&A.mipmaps.length>0){ee.__webglFramebuffer=[];for(let ze=0;ze<A.mipmaps.length;ze++)ee.__webglFramebuffer[ze]=s.createFramebuffer()}else ee.__webglFramebuffer=s.createFramebuffer();if(rt)for(let ze=0,Qe=ye.length;ze<Qe;ze++){const at=n.get(ye[ze]);at.__webglTexture===void 0&&(at.__webglTexture=s.createTexture(),a.memory.textures++)}if(F.samples>0&&mt(F)===!1){ee.__webglMultisampledFramebuffer=s.createFramebuffer(),ee.__webglColorRenderbuffer=[],t.bindFramebuffer(s.FRAMEBUFFER,ee.__webglMultisampledFramebuffer);for(let ze=0;ze<ye.length;ze++){const Qe=ye[ze];ee.__webglColorRenderbuffer[ze]=s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,ee.__webglColorRenderbuffer[ze]);const at=r.convert(Qe.format,Qe.colorSpace),Me=r.convert(Qe.type),Ye=b(Qe.internalFormat,at,Me,Qe.colorSpace,F.isXRRenderTarget===!0),vt=He(F);s.renderbufferStorageMultisample(s.RENDERBUFFER,vt,Ye,F.width,F.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+ze,s.RENDERBUFFER,ee.__webglColorRenderbuffer[ze])}s.bindRenderbuffer(s.RENDERBUFFER,null),F.depthBuffer&&(ee.__webglDepthRenderbuffer=s.createRenderbuffer(),xe(ee.__webglDepthRenderbuffer,F,!0)),t.bindFramebuffer(s.FRAMEBUFFER,null)}}if(he){t.bindTexture(s.TEXTURE_CUBE_MAP,fe.__webglTexture),Ne(s.TEXTURE_CUBE_MAP,A);for(let ze=0;ze<6;ze++)if(A.mipmaps&&A.mipmaps.length>0)for(let Qe=0;Qe<A.mipmaps.length;Qe++)Le(ee.__webglFramebuffer[ze][Qe],F,A,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+ze,Qe);else Le(ee.__webglFramebuffer[ze],F,A,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+ze,0);g(A)&&p(s.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(rt){for(let ze=0,Qe=ye.length;ze<Qe;ze++){const at=ye[ze],Me=n.get(at);t.bindTexture(s.TEXTURE_2D,Me.__webglTexture),Ne(s.TEXTURE_2D,at),Le(ee.__webglFramebuffer,F,at,s.COLOR_ATTACHMENT0+ze,s.TEXTURE_2D,0),g(at)&&p(s.TEXTURE_2D)}t.unbindTexture()}else{let ze=s.TEXTURE_2D;if((F.isWebGL3DRenderTarget||F.isWebGLArrayRenderTarget)&&(ze=F.isWebGL3DRenderTarget?s.TEXTURE_3D:s.TEXTURE_2D_ARRAY),t.bindTexture(ze,fe.__webglTexture),Ne(ze,A),A.mipmaps&&A.mipmaps.length>0)for(let Qe=0;Qe<A.mipmaps.length;Qe++)Le(ee.__webglFramebuffer[Qe],F,A,s.COLOR_ATTACHMENT0,ze,Qe);else Le(ee.__webglFramebuffer,F,A,s.COLOR_ATTACHMENT0,ze,0);g(A)&&p(ze),t.unbindTexture()}F.depthBuffer&&st(F)}function O(F){const A=F.textures;for(let ee=0,fe=A.length;ee<fe;ee++){const ye=A[ee];if(g(ye)){const he=E(F),rt=n.get(ye).__webglTexture;t.bindTexture(he,rt),p(he),t.unbindTexture()}}}const Gt=[],Lt=[];function Ct(F){if(F.samples>0){if(mt(F)===!1){const A=F.textures,ee=F.width,fe=F.height;let ye=s.COLOR_BUFFER_BIT;const he=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,rt=n.get(F),ze=A.length>1;if(ze)for(let at=0;at<A.length;at++)t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.RENDERBUFFER,null),t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.TEXTURE_2D,null,0);t.bindFramebuffer(s.READ_FRAMEBUFFER,rt.__webglMultisampledFramebuffer);const Qe=F.texture.mipmaps;Qe&&Qe.length>0?t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglFramebuffer[0]):t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglFramebuffer);for(let at=0;at<A.length;at++){if(F.resolveDepthBuffer&&(F.depthBuffer&&(ye|=s.DEPTH_BUFFER_BIT),F.stencilBuffer&&F.resolveStencilBuffer&&(ye|=s.STENCIL_BUFFER_BIT)),ze){s.framebufferRenderbuffer(s.READ_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.RENDERBUFFER,rt.__webglColorRenderbuffer[at]);const Me=n.get(A[at]).__webglTexture;s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,Me,0)}s.blitFramebuffer(0,0,ee,fe,0,0,ee,fe,ye,s.NEAREST),l===!0&&(Gt.length=0,Lt.length=0,Gt.push(s.COLOR_ATTACHMENT0+at),F.depthBuffer&&F.resolveDepthBuffer===!1&&(Gt.push(he),Lt.push(he),s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,Lt)),s.invalidateFramebuffer(s.READ_FRAMEBUFFER,Gt))}if(t.bindFramebuffer(s.READ_FRAMEBUFFER,null),t.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),ze)for(let at=0;at<A.length;at++){t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.RENDERBUFFER,rt.__webglColorRenderbuffer[at]);const Me=n.get(A[at]).__webglTexture;t.bindFramebuffer(s.FRAMEBUFFER,rt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+at,s.TEXTURE_2D,Me,0)}t.bindFramebuffer(s.DRAW_FRAMEBUFFER,rt.__webglMultisampledFramebuffer)}else if(F.depthBuffer&&F.resolveDepthBuffer===!1&&l){const A=F.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT;s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,[A])}}}function He(F){return Math.min(i.maxSamples,F.samples)}function mt(F){const A=n.get(F);return F.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&A.__useRenderToTexture!==!1}function We(F){const A=a.render.frame;h.get(F)!==A&&(h.set(F,A),F.update())}function dt(F,A){const ee=F.colorSpace,fe=F.format,ye=F.type;return F.isCompressedTexture===!0||F.isVideoTexture===!0||ee!==Ds&&ee!==Ni&&(Vt.getTransfer(ee)===tn?(fe!==Wn||ye!==ci)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ee)),A}function rn(F){return typeof HTMLImageElement<"u"&&F instanceof HTMLImageElement?(c.width=F.naturalWidth||F.width,c.height=F.naturalHeight||F.height):typeof VideoFrame<"u"&&F instanceof VideoFrame?(c.width=F.displayWidth,c.height=F.displayHeight):(c.width=F.width,c.height=F.height),c}this.allocateTextureUnit=X,this.resetTextureUnits=W,this.setTexture2D=ne,this.setTexture2DArray=G,this.setTexture3D=re,this.setTextureCube=Z,this.rebindTextures=Tt,this.setupRenderTarget=Mt,this.updateRenderTargetMipmap=O,this.updateMultisampleRenderTarget=Ct,this.setupDepthRenderbuffer=st,this.setupFrameBufferTexture=Le,this.useMultisampledRTT=mt}function hg(s,e){function t(n,i=Ni){let r;const a=Vt.getTransfer(i);if(n===ci)return s.UNSIGNED_BYTE;if(n===Sl)return s.UNSIGNED_SHORT_4_4_4_4;if(n===bl)return s.UNSIGNED_SHORT_5_5_5_1;if(n===Jh)return s.UNSIGNED_INT_5_9_9_9_REV;if(n===Yh)return s.BYTE;if(n===$h)return s.SHORT;if(n===ir)return s.UNSIGNED_SHORT;if(n===Ml)return s.INT;if(n===es)return s.UNSIGNED_INT;if(n===oi)return s.FLOAT;if(n===cr)return s.HALF_FLOAT;if(n===Kh)return s.ALPHA;if(n===Zh)return s.RGB;if(n===Wn)return s.RGBA;if(n===rr)return s.DEPTH_COMPONENT;if(n===ar)return s.DEPTH_STENCIL;if(n===Qh)return s.RED;if(n===El)return s.RED_INTEGER;if(n===eu)return s.RG;if(n===Al)return s.RG_INTEGER;if(n===wl)return s.RGBA_INTEGER;if(n===ta||n===na||n===ia||n===sa)if(a===tn)if(r=e.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(n===ta)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===na)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===ia)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===sa)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=e.get("WEBGL_compressed_texture_s3tc"),r!==null){if(n===ta)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===na)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===ia)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===sa)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===No||n===Io||n===Fo||n===Oo)if(r=e.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(n===No)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Io)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Fo)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Oo)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===zo||n===Bo||n===ko)if(r=e.get("WEBGL_compressed_texture_etc"),r!==null){if(n===zo||n===Bo)return a===tn?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(n===ko)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Vo||n===Ho||n===Go||n===Wo||n===Xo||n===qo||n===jo||n===Yo||n===$o||n===Jo||n===Ko||n===Zo||n===Qo||n===el)if(r=e.get("WEBGL_compressed_texture_astc"),r!==null){if(n===Vo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Ho)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Go)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Wo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Xo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===qo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===jo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Yo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===$o)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Jo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Ko)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Zo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Qo)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===el)return a===tn?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===ra||n===tl||n===nl)if(r=e.get("EXT_texture_compression_bptc"),r!==null){if(n===ra)return a===tn?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===tl)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===nl)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===tu||n===il||n===sl||n===rl)if(r=e.get("EXT_texture_compression_rgtc"),r!==null){if(n===ra)return r.COMPRESSED_RED_RGTC1_EXT;if(n===il)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===sl)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===rl)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===sr?s.UNSIGNED_INT_24_8:s[n]!==void 0?s[n]:null}return{convert:t}}const ug=`
|
|
3804
3804
|
void main() {
|
|
3805
3805
|
|
|
3806
3806
|
gl_Position = vec4( position, 1.0 );
|
|
@@ -3824,7 +3824,7 @@ void main() {
|
|
|
3824
3824
|
|
|
3825
3825
|
}
|
|
3826
3826
|
|
|
3827
|
-
}`;class fg{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){const i=new bn,r=e.properties.get(i);r.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new bi({vertexShader:ug,fragmentShader:dg,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new $t(new hr(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class pg extends ns{constructor(e,t){super();const n=this;let i=null,r=1,a=null,o="local-floor",l=1,c=null,h=null,d=null,u=null,f=null,m=null;const _=new fg,g=t.getContextAttributes();let p=null,E=null;const b=[],M=[],U=new Ke;let C=null;const P=new Sn;P.viewport=new Ht;const D=new Sn;D.viewport=new Ht;const S=[P,D],y=new Lp;let N=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(J){let ae=b[J];return ae===void 0&&(ae=new Ka,b[J]=ae),ae.getTargetRaySpace()},this.getControllerGrip=function(J){let ae=b[J];return ae===void 0&&(ae=new Ka,b[J]=ae),ae.getGripSpace()},this.getHand=function(J){let ae=b[J];return ae===void 0&&(ae=new Ka,b[J]=ae),ae.getHandSpace()};function X(J){const ae=M.indexOf(J.inputSource);if(ae===-1)return;const le=b[ae];le!==void 0&&(le.update(J.inputSource,J.frame,c||a),le.dispatchEvent({type:J.type,data:J.inputSource}))}function Q(){i.removeEventListener("select",X),i.removeEventListener("selectstart",X),i.removeEventListener("selectend",X),i.removeEventListener("squeeze",X),i.removeEventListener("squeezestart",X),i.removeEventListener("squeezeend",X),i.removeEventListener("end",Q),i.removeEventListener("inputsourceschange",ne);for(let J=0;J<b.length;J++){const ae=M[J];ae!==null&&(M[J]=null,b[J].disconnect(ae))}N=null,W=null,_.reset(),e.setRenderTarget(p),f=null,u=null,d=null,i=null,E=null,He.stop(),n.isPresenting=!1,e.setPixelRatio(C),e.setSize(U.width,U.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(J){r=J,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(J){o=J,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(J){c=J},this.getBaseLayer=function(){return u!==null?u:f},this.getBinding=function(){return d},this.getFrame=function(){return m},this.getSession=function(){return i},this.setSession=async function(J){if(i=J,i!==null){if(p=e.getRenderTarget(),i.addEventListener("select",X),i.addEventListener("selectstart",X),i.addEventListener("selectend",X),i.addEventListener("squeeze",X),i.addEventListener("squeezestart",X),i.addEventListener("squeezeend",X),i.addEventListener("end",Q),i.addEventListener("inputsourceschange",ne),g.xrCompatible!==!0&&await t.makeXRCompatible(),C=e.getPixelRatio(),e.getSize(U),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let le=null,ce=null,Le=null;g.depth&&(Le=g.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,le=g.stencil?ar:rr,ce=g.stencil?sr:es);const ve={colorFormat:t.RGBA8,depthFormat:Le,scaleFactor:r};d=new XRWebGLBinding(i,t),u=d.createProjectionLayer(ve),i.updateRenderState({layers:[u]}),e.setPixelRatio(1),e.setSize(u.textureWidth,u.textureHeight,!1),E=new ts(u.textureWidth,u.textureHeight,{format:Wn,type:ci,depthTexture:new gu(u.textureWidth,u.textureHeight,ce,void 0,void 0,void 0,void 0,void 0,void 0,le),stencilBuffer:g.stencil,colorSpace:e.outputColorSpace,samples:g.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1})}else{const le={antialias:g.antialias,alpha:!0,depth:g.depth,stencil:g.stencil,framebufferScaleFactor:r};f=new XRWebGLLayer(i,t,le),i.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),E=new ts(f.framebufferWidth,f.framebufferHeight,{format:Wn,type:ci,colorSpace:e.outputColorSpace,stencilBuffer:g.stencil,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}E.isXRRenderTarget=!0,this.setFoveation(l),c=null,a=await i.requestReferenceSpace(o),He.setContext(i),He.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function ne(J){for(let ae=0;ae<J.removed.length;ae++){const le=J.removed[ae],ce=M.indexOf(le);ce>=0&&(M[ce]=null,b[ce].disconnect(le))}for(let ae=0;ae<J.added.length;ae++){const le=J.added[ae];let ce=M.indexOf(le);if(ce===-1){for(let ve=0;ve<b.length;ve++)if(ve>=M.length){M.push(le),ce=ve;break}else if(M[ve]===null){M[ve]=le,ce=ve;break}if(ce===-1)break}const Le=b[ce];Le&&Le.connect(le)}}const G=new I,re=new I;function K(J,ae,le){G.setFromMatrixPosition(ae.matrixWorld),re.setFromMatrixPosition(le.matrixWorld);const ce=G.distanceTo(re),Le=ae.projectionMatrix.elements,ve=le.projectionMatrix.elements,Ae=Le[14]/(Le[10]-1),st=Le[14]/(Le[10]+1),wt=(Le[9]+1)/Le[5],yt=(Le[9]-1)/Le[5],O=(Le[8]-1)/Le[0],Gt=(ve[8]+1)/ve[0],Lt=Ae*O,Tt=Ae*Gt,Ge=ce/(-O+Gt),pt=Ge*-O;if(ae.matrixWorld.decompose(J.position,J.quaternion,J.scale),J.translateX(pt),J.translateZ(Ge),J.matrixWorld.compose(J.position,J.quaternion,J.scale),J.matrixWorldInverse.copy(J.matrixWorld).invert(),Le[10]===-1)J.projectionMatrix.copy(ae.projectionMatrix),J.projectionMatrixInverse.copy(ae.projectionMatrixInverse);else{const Xe=Ae+Ge,ut=st+Ge,rn=Lt-pt,F=Tt+(ce-pt),A=wt*st/ut*Xe,ee=yt*st/ut*Xe;J.projectionMatrix.makePerspective(rn,F,A,ee,Xe,ut),J.projectionMatrixInverse.copy(J.projectionMatrix).invert()}}function ge(J,ae){ae===null?J.matrixWorld.copy(J.matrix):J.matrixWorld.multiplyMatrices(ae.matrixWorld,J.matrix),J.matrixWorldInverse.copy(J.matrixWorld).invert()}this.updateCamera=function(J){if(i===null)return;let ae=J.near,le=J.far;_.texture!==null&&(_.depthNear>0&&(ae=_.depthNear),_.depthFar>0&&(le=_.depthFar)),y.near=D.near=P.near=ae,y.far=D.far=P.far=le,(N!==y.near||W!==y.far)&&(i.updateRenderState({depthNear:y.near,depthFar:y.far}),N=y.near,W=y.far),P.layers.mask=J.layers.mask|2,D.layers.mask=J.layers.mask|4,y.layers.mask=P.layers.mask|D.layers.mask;const ce=J.parent,Le=y.cameras;ge(y,ce);for(let ve=0;ve<Le.length;ve++)ge(Le[ve],ce);Le.length===2?K(y,P,D):y.projectionMatrix.copy(P.projectionMatrix),be(J,y,ce)};function be(J,ae,le){le===null?J.matrix.copy(ae.matrixWorld):(J.matrix.copy(le.matrixWorld),J.matrix.invert(),J.matrix.multiply(ae.matrixWorld)),J.matrix.decompose(J.position,J.quaternion,J.scale),J.updateMatrixWorld(!0),J.projectionMatrix.copy(ae.projectionMatrix),J.projectionMatrixInverse.copy(ae.projectionMatrixInverse),J.isPerspectiveCamera&&(J.fov=Us*2*Math.atan(1/J.projectionMatrix.elements[5]),J.zoom=1)}this.getCamera=function(){return y},this.getFoveation=function(){if(!(u===null&&f===null))return l},this.setFoveation=function(J){l=J,u!==null&&(u.fixedFoveation=J),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=J)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(y)};let Ce=null;function Ie(J,ae){if(h=ae.getViewerPose(c||a),m=ae,h!==null){const le=h.views;f!==null&&(e.setRenderTargetFramebuffer(E,f.framebuffer),e.setRenderTarget(E));let ce=!1;le.length!==y.cameras.length&&(y.cameras.length=0,ce=!0);for(let Ae=0;Ae<le.length;Ae++){const st=le[Ae];let wt=null;if(f!==null)wt=f.getViewport(st);else{const O=d.getViewSubImage(u,st);wt=O.viewport,Ae===0&&(e.setRenderTargetTextures(E,O.colorTexture,O.depthStencilTexture),e.setRenderTarget(E))}let yt=S[Ae];yt===void 0&&(yt=new Sn,yt.layers.enable(Ae),yt.viewport=new Ht,S[Ae]=yt),yt.matrix.fromArray(st.transform.matrix),yt.matrix.decompose(yt.position,yt.quaternion,yt.scale),yt.projectionMatrix.fromArray(st.projectionMatrix),yt.projectionMatrixInverse.copy(yt.projectionMatrix).invert(),yt.viewport.set(wt.x,wt.y,wt.width,wt.height),Ae===0&&(y.matrix.copy(yt.matrix),y.matrix.decompose(y.position,y.quaternion,y.scale)),ce===!0&&y.cameras.push(yt)}const Le=i.enabledFeatures;if(Le&&Le.includes("depth-sensing")&&i.depthUsage=="gpu-optimized"&&d){const Ae=d.getDepthInformation(le[0]);Ae&&Ae.isValid&&Ae.texture&&_.init(e,Ae,i.renderState)}}for(let le=0;le<b.length;le++){const ce=M[le],Le=b[le];ce!==null&&Le!==void 0&&Le.update(ce,ae,c||a)}Ce&&Ce(J,ae),ae.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:ae}),m=null}const He=new Cu;He.setAnimationLoop(Ie),this.setAnimationLoop=function(J){Ce=J},this.dispose=function(){}}}const qi=new Ln,mg=new Et;function gg(s,e){function t(g,p){g.matrixAutoUpdate===!0&&g.updateMatrix(),p.value.copy(g.matrix)}function n(g,p){p.color.getRGB(g.fogColor.value,lu(s)),p.isFog?(g.fogNear.value=p.near,g.fogFar.value=p.far):p.isFogExp2&&(g.fogDensity.value=p.density)}function i(g,p,E,b,M){p.isMeshBasicMaterial||p.isMeshLambertMaterial?r(g,p):p.isMeshToonMaterial?(r(g,p),d(g,p)):p.isMeshPhongMaterial?(r(g,p),h(g,p)):p.isMeshStandardMaterial?(r(g,p),u(g,p),p.isMeshPhysicalMaterial&&f(g,p,M)):p.isMeshMatcapMaterial?(r(g,p),m(g,p)):p.isMeshDepthMaterial?r(g,p):p.isMeshDistanceMaterial?(r(g,p),_(g,p)):p.isMeshNormalMaterial?r(g,p):p.isLineBasicMaterial?(a(g,p),p.isLineDashedMaterial&&o(g,p)):p.isPointsMaterial?l(g,p,E,b):p.isSpriteMaterial?c(g,p):p.isShadowMaterial?(g.color.value.copy(p.color),g.opacity.value=p.opacity):p.isShaderMaterial&&(p.uniformsNeedUpdate=!1)}function r(g,p){g.opacity.value=p.opacity,p.color&&g.diffuse.value.copy(p.color),p.emissive&&g.emissive.value.copy(p.emissive).multiplyScalar(p.emissiveIntensity),p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.bumpMap&&(g.bumpMap.value=p.bumpMap,t(p.bumpMap,g.bumpMapTransform),g.bumpScale.value=p.bumpScale,p.side===Rn&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,t(p.normalMap,g.normalMapTransform),g.normalScale.value.copy(p.normalScale),p.side===Rn&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,t(p.displacementMap,g.displacementMapTransform),g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap,t(p.emissiveMap,g.emissiveMapTransform)),p.specularMap&&(g.specularMap.value=p.specularMap,t(p.specularMap,g.specularMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest);const E=e.get(p),b=E.envMap,M=E.envMapRotation;b&&(g.envMap.value=b,qi.copy(M),qi.x*=-1,qi.y*=-1,qi.z*=-1,b.isCubeTexture&&b.isRenderTargetTexture===!1&&(qi.y*=-1,qi.z*=-1),g.envMapRotation.value.setFromMatrix4(mg.makeRotationFromEuler(qi)),g.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=p.reflectivity,g.ior.value=p.ior,g.refractionRatio.value=p.refractionRatio),p.lightMap&&(g.lightMap.value=p.lightMap,g.lightMapIntensity.value=p.lightMapIntensity,t(p.lightMap,g.lightMapTransform)),p.aoMap&&(g.aoMap.value=p.aoMap,g.aoMapIntensity.value=p.aoMapIntensity,t(p.aoMap,g.aoMapTransform))}function a(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform))}function o(g,p){g.dashSize.value=p.dashSize,g.totalSize.value=p.dashSize+p.gapSize,g.scale.value=p.scale}function l(g,p,E,b){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.size.value=p.size*E,g.scale.value=b*.5,p.map&&(g.map.value=p.map,t(p.map,g.uvTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function c(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.rotation.value=p.rotation,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function h(g,p){g.specular.value.copy(p.specular),g.shininess.value=Math.max(p.shininess,1e-4)}function d(g,p){p.gradientMap&&(g.gradientMap.value=p.gradientMap)}function u(g,p){g.metalness.value=p.metalness,p.metalnessMap&&(g.metalnessMap.value=p.metalnessMap,t(p.metalnessMap,g.metalnessMapTransform)),g.roughness.value=p.roughness,p.roughnessMap&&(g.roughnessMap.value=p.roughnessMap,t(p.roughnessMap,g.roughnessMapTransform)),p.envMap&&(g.envMapIntensity.value=p.envMapIntensity)}function f(g,p,E){g.ior.value=p.ior,p.sheen>0&&(g.sheenColor.value.copy(p.sheenColor).multiplyScalar(p.sheen),g.sheenRoughness.value=p.sheenRoughness,p.sheenColorMap&&(g.sheenColorMap.value=p.sheenColorMap,t(p.sheenColorMap,g.sheenColorMapTransform)),p.sheenRoughnessMap&&(g.sheenRoughnessMap.value=p.sheenRoughnessMap,t(p.sheenRoughnessMap,g.sheenRoughnessMapTransform))),p.clearcoat>0&&(g.clearcoat.value=p.clearcoat,g.clearcoatRoughness.value=p.clearcoatRoughness,p.clearcoatMap&&(g.clearcoatMap.value=p.clearcoatMap,t(p.clearcoatMap,g.clearcoatMapTransform)),p.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=p.clearcoatRoughnessMap,t(p.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),p.clearcoatNormalMap&&(g.clearcoatNormalMap.value=p.clearcoatNormalMap,t(p.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(p.clearcoatNormalScale),p.side===Rn&&g.clearcoatNormalScale.value.negate())),p.dispersion>0&&(g.dispersion.value=p.dispersion),p.iridescence>0&&(g.iridescence.value=p.iridescence,g.iridescenceIOR.value=p.iridescenceIOR,g.iridescenceThicknessMinimum.value=p.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=p.iridescenceThicknessRange[1],p.iridescenceMap&&(g.iridescenceMap.value=p.iridescenceMap,t(p.iridescenceMap,g.iridescenceMapTransform)),p.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=p.iridescenceThicknessMap,t(p.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),p.transmission>0&&(g.transmission.value=p.transmission,g.transmissionSamplerMap.value=E.texture,g.transmissionSamplerSize.value.set(E.width,E.height),p.transmissionMap&&(g.transmissionMap.value=p.transmissionMap,t(p.transmissionMap,g.transmissionMapTransform)),g.thickness.value=p.thickness,p.thicknessMap&&(g.thicknessMap.value=p.thicknessMap,t(p.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=p.attenuationDistance,g.attenuationColor.value.copy(p.attenuationColor)),p.anisotropy>0&&(g.anisotropyVector.value.set(p.anisotropy*Math.cos(p.anisotropyRotation),p.anisotropy*Math.sin(p.anisotropyRotation)),p.anisotropyMap&&(g.anisotropyMap.value=p.anisotropyMap,t(p.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=p.specularIntensity,g.specularColor.value.copy(p.specularColor),p.specularColorMap&&(g.specularColorMap.value=p.specularColorMap,t(p.specularColorMap,g.specularColorMapTransform)),p.specularIntensityMap&&(g.specularIntensityMap.value=p.specularIntensityMap,t(p.specularIntensityMap,g.specularIntensityMapTransform))}function m(g,p){p.matcap&&(g.matcap.value=p.matcap)}function _(g,p){const E=e.get(p).light;g.referencePosition.value.setFromMatrixPosition(E.matrixWorld),g.nearDistance.value=E.shadow.camera.near,g.farDistance.value=E.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function _g(s,e,t,n){let i={},r={},a=[];const o=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function l(E,b){const M=b.program;n.uniformBlockBinding(E,M)}function c(E,b){let M=i[E.id];M===void 0&&(m(E),M=h(E),i[E.id]=M,E.addEventListener("dispose",g));const U=b.program;n.updateUBOMapping(E,U);const C=e.render.frame;r[E.id]!==C&&(u(E),r[E.id]=C)}function h(E){const b=d();E.__bindingPointIndex=b;const M=s.createBuffer(),U=E.__size,C=E.usage;return s.bindBuffer(s.UNIFORM_BUFFER,M),s.bufferData(s.UNIFORM_BUFFER,U,C),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,b,M),M}function d(){for(let E=0;E<o;E++)if(a.indexOf(E)===-1)return a.push(E),E;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(E){const b=i[E.id],M=E.uniforms,U=E.__cache;s.bindBuffer(s.UNIFORM_BUFFER,b);for(let C=0,P=M.length;C<P;C++){const D=Array.isArray(M[C])?M[C]:[M[C]];for(let S=0,y=D.length;S<y;S++){const N=D[S];if(f(N,C,S,U)===!0){const W=N.__offset,X=Array.isArray(N.value)?N.value:[N.value];let Q=0;for(let ne=0;ne<X.length;ne++){const G=X[ne],re=_(G);typeof G=="number"||typeof G=="boolean"?(N.__data[0]=G,s.bufferSubData(s.UNIFORM_BUFFER,W+Q,N.__data)):G.isMatrix3?(N.__data[0]=G.elements[0],N.__data[1]=G.elements[1],N.__data[2]=G.elements[2],N.__data[3]=0,N.__data[4]=G.elements[3],N.__data[5]=G.elements[4],N.__data[6]=G.elements[5],N.__data[7]=0,N.__data[8]=G.elements[6],N.__data[9]=G.elements[7],N.__data[10]=G.elements[8],N.__data[11]=0):(G.toArray(N.__data,Q),Q+=re.storage/Float32Array.BYTES_PER_ELEMENT)}s.bufferSubData(s.UNIFORM_BUFFER,W,N.__data)}}}s.bindBuffer(s.UNIFORM_BUFFER,null)}function f(E,b,M,U){const C=E.value,P=b+"_"+M;if(U[P]===void 0)return typeof C=="number"||typeof C=="boolean"?U[P]=C:U[P]=C.clone(),!0;{const D=U[P];if(typeof C=="number"||typeof C=="boolean"){if(D!==C)return U[P]=C,!0}else if(D.equals(C)===!1)return D.copy(C),!0}return!1}function m(E){const b=E.uniforms;let M=0;const U=16;for(let P=0,D=b.length;P<D;P++){const S=Array.isArray(b[P])?b[P]:[b[P]];for(let y=0,N=S.length;y<N;y++){const W=S[y],X=Array.isArray(W.value)?W.value:[W.value];for(let Q=0,ne=X.length;Q<ne;Q++){const G=X[Q],re=_(G),K=M%U,ge=K%re.boundary,be=K+ge;M+=ge,be!==0&&U-be<re.storage&&(M+=U-be),W.__data=new Float32Array(re.storage/Float32Array.BYTES_PER_ELEMENT),W.__offset=M,M+=re.storage}}}const C=M%U;return C>0&&(M+=U-C),E.__size=M,E.__cache={},this}function _(E){const b={boundary:0,storage:0};return typeof E=="number"||typeof E=="boolean"?(b.boundary=4,b.storage=4):E.isVector2?(b.boundary=8,b.storage=8):E.isVector3||E.isColor?(b.boundary=16,b.storage=12):E.isVector4?(b.boundary=16,b.storage=16):E.isMatrix3?(b.boundary=48,b.storage=48):E.isMatrix4?(b.boundary=64,b.storage=64):E.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",E),b}function g(E){const b=E.target;b.removeEventListener("dispose",g);const M=a.indexOf(b.__bindingPointIndex);a.splice(M,1),s.deleteBuffer(i[b.id]),delete i[b.id],delete r[b.id]}function p(){for(const E in i)s.deleteBuffer(i[E]);a=[],i={},r={}}return{bind:l,update:c,dispose:p}}class vg{constructor(e={}){const{canvas:t=ff(),context:n=null,depth:i=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:d=!1,reverseDepthBuffer:u=!1}=e;this.isWebGLRenderer=!0;let f;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");f=n.getContextAttributes().alpha}else f=a;const m=new Uint32Array(4),_=new Int32Array(4);let g=null,p=null;const E=[],b=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=zi,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const M=this;let U=!1;this._outputColorSpace=Yt;let C=0,P=0,D=null,S=-1,y=null;const N=new Ht,W=new Ht;let X=null;const Q=new gt(0);let ne=0,G=t.width,re=t.height,K=1,ge=null,be=null;const Ce=new Ht(0,0,G,re),Ie=new Ht(0,0,G,re);let He=!1;const J=new Nl;let ae=!1,le=!1;const ce=new Et,Le=new Et,ve=new I,Ae=new Ht,st={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let wt=!1;function yt(){return D===null?K:1}let O=n;function Gt(w,H){return t.getContext(w,H)}try{const w={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:d};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${yl}`),t.addEventListener("webglcontextlost",z,!1),t.addEventListener("webglcontextrestored",B,!1),t.addEventListener("webglcontextcreationerror",k,!1),O===null){const H="webgl2";if(O=Gt(H,w),O===null)throw Gt(H)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(w){throw console.error("THREE.WebGLRenderer: "+w.message),w}let Lt,Tt,Ge,pt,Xe,ut,rn,F,A,ee,fe,xe,he,rt,Be,Ze,at,ye,Ye,_t,mt,ke,Mt,q;function qe(){Lt=new C1(O),Lt.init(),ke=new hg(O,Lt),Tt=new M1(O,Lt,e,ke),Ge=new lg(O,Lt),Tt.reverseDepthBuffer&&u&&Ge.buffers.depth.setReversed(!0),pt=new P1(O),Xe=new $2,ut=new cg(O,Lt,Ge,Xe,Tt,ke,pt),rn=new b1(M),F=new T1(M),A=new Op(O),Mt=new x1(O,A),ee=new R1(O,A,pt,Mt),fe=new U1(O,ee,A,pt),Ye=new D1(O,Tt,ut),Ze=new S1(Xe),xe=new Y2(M,rn,F,Lt,Tt,Mt,Ze),he=new gg(M,Xe),rt=new K2,Be=new ig(Lt),ye=new v1(M,rn,F,Ge,fe,f,l),at=new ag(M,fe,Tt),q=new _g(O,pt,Tt,Ge),_t=new y1(O,Lt,pt),mt=new L1(O,Lt,pt),pt.programs=xe.programs,M.capabilities=Tt,M.extensions=Lt,M.properties=Xe,M.renderLists=rt,M.shadowMap=at,M.state=Ge,M.info=pt}qe();const Me=new pg(M,O);this.xr=Me,this.getContext=function(){return O},this.getContextAttributes=function(){return O.getContextAttributes()},this.forceContextLoss=function(){const w=Lt.get("WEBGL_lose_context");w&&w.loseContext()},this.forceContextRestore=function(){const w=Lt.get("WEBGL_lose_context");w&&w.restoreContext()},this.getPixelRatio=function(){return K},this.setPixelRatio=function(w){w!==void 0&&(K=w,this.setSize(G,re,!1))},this.getSize=function(w){return w.set(G,re)},this.setSize=function(w,H,$=!0){if(Me.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}G=w,re=H,t.width=Math.floor(w*K),t.height=Math.floor(H*K),$===!0&&(t.style.width=w+"px",t.style.height=H+"px"),this.setViewport(0,0,w,H)},this.getDrawingBufferSize=function(w){return w.set(G*K,re*K).floor()},this.setDrawingBufferSize=function(w,H,$){G=w,re=H,K=$,t.width=Math.floor(w*$),t.height=Math.floor(H*$),this.setViewport(0,0,w,H)},this.getCurrentViewport=function(w){return w.copy(N)},this.getViewport=function(w){return w.copy(Ce)},this.setViewport=function(w,H,$,Y){w.isVector4?Ce.set(w.x,w.y,w.z,w.w):Ce.set(w,H,$,Y),Ge.viewport(N.copy(Ce).multiplyScalar(K).round())},this.getScissor=function(w){return w.copy(Ie)},this.setScissor=function(w,H,$,Y){w.isVector4?Ie.set(w.x,w.y,w.z,w.w):Ie.set(w,H,$,Y),Ge.scissor(W.copy(Ie).multiplyScalar(K).round())},this.getScissorTest=function(){return He},this.setScissorTest=function(w){Ge.setScissorTest(He=w)},this.setOpaqueSort=function(w){ge=w},this.setTransparentSort=function(w){be=w},this.getClearColor=function(w){return w.copy(ye.getClearColor())},this.setClearColor=function(){ye.setClearColor(...arguments)},this.getClearAlpha=function(){return ye.getClearAlpha()},this.setClearAlpha=function(){ye.setClearAlpha(...arguments)},this.clear=function(w=!0,H=!0,$=!0){let Y=0;if(w){let j=!1;if(D!==null){const me=D.texture.format;j=me===wl||me===Al||me===El}if(j){const me=D.texture.type,Te=me===ci||me===es||me===ir||me===sr||me===Sl||me===bl,We=ye.getClearColor(),Oe=ye.getClearAlpha(),nt=We.r,lt=We.g,tt=We.b;Te?(m[0]=nt,m[1]=lt,m[2]=tt,m[3]=Oe,O.clearBufferuiv(O.COLOR,0,m)):(_[0]=nt,_[1]=lt,_[2]=tt,_[3]=Oe,O.clearBufferiv(O.COLOR,0,_))}else Y|=O.COLOR_BUFFER_BIT}H&&(Y|=O.DEPTH_BUFFER_BIT),$&&(Y|=O.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),O.clear(Y)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",z,!1),t.removeEventListener("webglcontextrestored",B,!1),t.removeEventListener("webglcontextcreationerror",k,!1),ye.dispose(),rt.dispose(),Be.dispose(),Xe.dispose(),rn.dispose(),F.dispose(),fe.dispose(),Mt.dispose(),q.dispose(),xe.dispose(),Me.dispose(),Me.removeEventListener("sessionstart",je),Me.removeEventListener("sessionend",Z),Ne.stop()};function z(w){w.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),U=!0}function B(){console.log("THREE.WebGLRenderer: Context Restored."),U=!1;const w=pt.autoReset,H=at.enabled,$=at.autoUpdate,Y=at.needsUpdate,j=at.type;qe(),pt.autoReset=w,at.enabled=H,at.autoUpdate=$,at.needsUpdate=Y,at.type=j}function k(w){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",w.statusMessage)}function te(w){const H=w.target;H.removeEventListener("dispose",te),se(H)}function se(w){oe(w),Xe.remove(w)}function oe(w){const H=Xe.get(w).programs;H!==void 0&&(H.forEach(function($){xe.releaseProgram($)}),w.isShaderMaterial&&xe.releaseShaderCache(w))}this.renderBufferDirect=function(w,H,$,Y,j,me){H===null&&(H=st);const Te=j.isMesh&&j.matrixWorld.determinant()<0,We=Fe(w,H,$,Y,j);Ge.setMaterial(Y,Te);let Oe=$.index,nt=1;if(Y.wireframe===!0){if(Oe=ee.getWireframeAttribute($),Oe===void 0)return;nt=2}const lt=$.drawRange,tt=$.attributes.position;let bt=lt.start*nt,pe=(lt.start+lt.count)*nt;me!==null&&(bt=Math.max(bt,me.start*nt),pe=Math.min(pe,(me.start+me.count)*nt)),Oe!==null?(bt=Math.max(bt,0),pe=Math.min(pe,Oe.count)):tt!=null&&(bt=Math.max(bt,0),pe=Math.min(pe,tt.count));const ht=pe-bt;if(ht<0||ht===1/0)return;Mt.setup(j,Y,We,$,Oe);let Dt,Rt=_t;if(Oe!==null&&(Dt=A.get(Oe),Rt=mt,Rt.setIndex(Dt)),j.isMesh)Y.wireframe===!0?(Ge.setLineWidth(Y.wireframeLinewidth*yt()),Rt.setMode(O.LINES)):Rt.setMode(O.TRIANGLES);else if(j.isLine){let Qe=Y.linewidth;Qe===void 0&&(Qe=1),Ge.setLineWidth(Qe*yt()),j.isLineSegments?Rt.setMode(O.LINES):j.isLineLoop?Rt.setMode(O.LINE_LOOP):Rt.setMode(O.LINE_STRIP)}else j.isPoints?Rt.setMode(O.POINTS):j.isSprite&&Rt.setMode(O.TRIANGLES);if(j.isBatchedMesh)if(j._multiDrawInstances!==null)ws("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Rt.renderMultiDrawInstances(j._multiDrawStarts,j._multiDrawCounts,j._multiDrawCount,j._multiDrawInstances);else if(Lt.get("WEBGL_multi_draw"))Rt.renderMultiDraw(j._multiDrawStarts,j._multiDrawCounts,j._multiDrawCount);else{const Qe=j._multiDrawStarts,sn=j._multiDrawCounts,De=j._multiDrawCount,we=Oe?A.get(Oe).bytesPerElement:1,Ut=Xe.get(Y).currentProgram.getUniforms();for(let en=0;en<De;en++)Ut.setValue(O,"_gl_DrawID",en),Rt.render(Qe[en]/we,sn[en])}else if(j.isInstancedMesh)Rt.renderInstances(bt,ht,j.count);else if($.isInstancedBufferGeometry){const Qe=$._maxInstanceCount!==void 0?$._maxInstanceCount:1/0,sn=Math.min($.instanceCount,Qe);Rt.renderInstances(bt,ht,sn)}else Rt.render(bt,ht)};function ue(w,H,$){w.transparent===!0&&w.side===wn&&w.forceSinglePass===!1?(w.side=Rn,w.needsUpdate=!0,Pt(w,H,$),w.side=Xn,w.needsUpdate=!0,Pt(w,H,$),w.side=wn):Pt(w,H,$)}this.compile=function(w,H,$=null){$===null&&($=w),p=Be.get($),p.init(H),b.push(p),$.traverseVisible(function(j){j.isLight&&j.layers.test(H.layers)&&(p.pushLight(j),j.castShadow&&p.pushShadow(j))}),w!==$&&w.traverseVisible(function(j){j.isLight&&j.layers.test(H.layers)&&(p.pushLight(j),j.castShadow&&p.pushShadow(j))}),p.setupLights();const Y=new Set;return w.traverse(function(j){if(!(j.isMesh||j.isPoints||j.isLine||j.isSprite))return;const me=j.material;if(me)if(Array.isArray(me))for(let Te=0;Te<me.length;Te++){const We=me[Te];ue(We,$,j),Y.add(We)}else ue(me,$,j),Y.add(me)}),p=b.pop(),Y},this.compileAsync=function(w,H,$=null){const Y=this.compile(w,H,$);return new Promise(j=>{function me(){if(Y.forEach(function(Te){Xe.get(Te).currentProgram.isReady()&&Y.delete(Te)}),Y.size===0){j(w);return}setTimeout(me,10)}Lt.get("KHR_parallel_shader_compile")!==null?me():setTimeout(me,10)})};let _e=null;function Se(w){_e&&_e(w)}function je(){Ne.stop()}function Z(){Ne.start()}const Ne=new Cu;Ne.setAnimationLoop(Se),typeof self<"u"&&Ne.setContext(self),this.setAnimationLoop=function(w){_e=w,Me.setAnimationLoop(w),w===null?Ne.stop():Ne.start()},Me.addEventListener("sessionstart",je),Me.addEventListener("sessionend",Z),this.render=function(w,H){if(H!==void 0&&H.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(U===!0)return;if(w.matrixWorldAutoUpdate===!0&&w.updateMatrixWorld(),H.parent===null&&H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),Me.enabled===!0&&Me.isPresenting===!0&&(Me.cameraAutoUpdate===!0&&Me.updateCamera(H),H=Me.getCamera()),w.isScene===!0&&w.onBeforeRender(M,w,H,D),p=Be.get(w,b.length),p.init(H),b.push(p),Le.multiplyMatrices(H.projectionMatrix,H.matrixWorldInverse),J.setFromProjectionMatrix(Le),le=this.localClippingEnabled,ae=Ze.init(this.clippingPlanes,le),g=rt.get(w,E.length),g.init(),E.push(g),Me.enabled===!0&&Me.isPresenting===!0){const me=M.xr.getDepthSensingMesh();me!==null&&At(me,H,-1/0,M.sortObjects)}At(w,H,0,M.sortObjects),g.finish(),M.sortObjects===!0&&g.sort(ge,be),wt=Me.enabled===!1||Me.isPresenting===!1||Me.hasDepthSensing()===!1,wt&&ye.addToRenderList(g,w),this.info.render.frame++,ae===!0&&Ze.beginShadows();const $=p.state.shadowsArray;at.render($,w,H),ae===!0&&Ze.endShadows(),this.info.autoReset===!0&&this.info.reset();const Y=g.opaque,j=g.transmissive;if(p.setupLights(),H.isArrayCamera){const me=H.cameras;if(j.length>0)for(let Te=0,We=me.length;Te<We;Te++){const Oe=me[Te];Wt(Y,j,w,Oe)}wt&&ye.render(w);for(let Te=0,We=me.length;Te<We;Te++){const Oe=me[Te];Nt(g,w,Oe,Oe.viewport)}}else j.length>0&&Wt(Y,j,w,H),wt&&ye.render(w),Nt(g,w,H);D!==null&&P===0&&(ut.updateMultisampleRenderTarget(D),ut.updateRenderTargetMipmap(D)),w.isScene===!0&&w.onAfterRender(M,w,H),Mt.resetDefaultState(),S=-1,y=null,b.pop(),b.length>0?(p=b[b.length-1],ae===!0&&Ze.setGlobalState(M.clippingPlanes,p.state.camera)):p=null,E.pop(),E.length>0?g=E[E.length-1]:g=null};function At(w,H,$,Y){if(w.visible===!1)return;if(w.layers.test(H.layers)){if(w.isGroup)$=w.renderOrder;else if(w.isLOD)w.autoUpdate===!0&&w.update(H);else if(w.isLight)p.pushLight(w),w.castShadow&&p.pushShadow(w);else if(w.isSprite){if(!w.frustumCulled||J.intersectsSprite(w)){Y&&Ae.setFromMatrixPosition(w.matrixWorld).applyMatrix4(Le);const Te=fe.update(w),We=w.material;We.visible&&g.push(w,Te,We,$,Ae.z,null)}}else if((w.isMesh||w.isLine||w.isPoints)&&(!w.frustumCulled||J.intersectsObject(w))){const Te=fe.update(w),We=w.material;if(Y&&(w.boundingSphere!==void 0?(w.boundingSphere===null&&w.computeBoundingSphere(),Ae.copy(w.boundingSphere.center)):(Te.boundingSphere===null&&Te.computeBoundingSphere(),Ae.copy(Te.boundingSphere.center)),Ae.applyMatrix4(w.matrixWorld).applyMatrix4(Le)),Array.isArray(We)){const Oe=Te.groups;for(let nt=0,lt=Oe.length;nt<lt;nt++){const tt=Oe[nt],bt=We[tt.materialIndex];bt&&bt.visible&&g.push(w,Te,bt,$,Ae.z,tt)}}else We.visible&&g.push(w,Te,We,$,Ae.z,null)}}const me=w.children;for(let Te=0,We=me.length;Te<We;Te++)At(me[Te],H,$,Y)}function Nt(w,H,$,Y){const j=w.opaque,me=w.transmissive,Te=w.transparent;p.setupLightsView($),ae===!0&&Ze.setGlobalState(M.clippingPlanes,$),Y&&Ge.viewport(N.copy(Y)),j.length>0&&Kt(j,H,$),me.length>0&&Kt(me,H,$),Te.length>0&&Kt(Te,H,$),Ge.buffers.depth.setTest(!0),Ge.buffers.depth.setMask(!0),Ge.buffers.color.setMask(!0),Ge.setPolygonOffset(!1)}function Wt(w,H,$,Y){if(($.isScene===!0?$.overrideMaterial:null)!==null)return;p.state.transmissionRenderTarget[Y.id]===void 0&&(p.state.transmissionRenderTarget[Y.id]=new ts(1,1,{generateMipmaps:!0,type:Lt.has("EXT_color_buffer_half_float")||Lt.has("EXT_color_buffer_float")?cr:ci,minFilter:xi,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Vt.workingColorSpace}));const me=p.state.transmissionRenderTarget[Y.id],Te=Y.viewport||N;me.setSize(Te.z*M.transmissionResolutionScale,Te.w*M.transmissionResolutionScale);const We=M.getRenderTarget();M.setRenderTarget(me),M.getClearColor(Q),ne=M.getClearAlpha(),ne<1&&M.setClearColor(16777215,.5),M.clear(),wt&&ye.render($);const Oe=M.toneMapping;M.toneMapping=zi;const nt=Y.viewport;if(Y.viewport!==void 0&&(Y.viewport=void 0),p.setupLightsView(Y),ae===!0&&Ze.setGlobalState(M.clippingPlanes,Y),Kt(w,$,Y),ut.updateMultisampleRenderTarget(me),ut.updateRenderTargetMipmap(me),Lt.has("WEBGL_multisampled_render_to_texture")===!1){let lt=!1;for(let tt=0,bt=H.length;tt<bt;tt++){const pe=H[tt],ht=pe.object,Dt=pe.geometry,Rt=pe.material,Qe=pe.group;if(Rt.side===wn&&ht.layers.test(Y.layers)){const sn=Rt.side;Rt.side=Rn,Rt.needsUpdate=!0,dt(ht,$,Y,Dt,Rt,Qe),Rt.side=sn,Rt.needsUpdate=!0,lt=!0}}lt===!0&&(ut.updateMultisampleRenderTarget(me),ut.updateRenderTargetMipmap(me))}M.setRenderTarget(We),M.setClearColor(Q,ne),nt!==void 0&&(Y.viewport=nt),M.toneMapping=Oe}function Kt(w,H,$){const Y=H.isScene===!0?H.overrideMaterial:null;for(let j=0,me=w.length;j<me;j++){const Te=w[j],We=Te.object,Oe=Te.geometry,nt=Te.group;let lt=Te.material;lt.allowOverride===!0&&Y!==null&&(lt=Y),We.layers.test($.layers)&&dt(We,H,$,Oe,lt,nt)}}function dt(w,H,$,Y,j,me){w.onBeforeRender(M,H,$,Y,j,me),w.modelViewMatrix.multiplyMatrices($.matrixWorldInverse,w.matrixWorld),w.normalMatrix.getNormalMatrix(w.modelViewMatrix),j.onBeforeRender(M,H,$,Y,w,me),j.transparent===!0&&j.side===wn&&j.forceSinglePass===!1?(j.side=Rn,j.needsUpdate=!0,M.renderBufferDirect($,H,Y,j,w,me),j.side=Xn,j.needsUpdate=!0,M.renderBufferDirect($,H,Y,j,w,me),j.side=wn):M.renderBufferDirect($,H,Y,j,w,me),w.onAfterRender(M,H,$,Y,j,me)}function Pt(w,H,$){H.isScene!==!0&&(H=st);const Y=Xe.get(w),j=p.state.lights,me=p.state.shadowsArray,Te=j.state.version,We=xe.getParameters(w,j.state,me,H,$),Oe=xe.getProgramCacheKey(We);let nt=Y.programs;Y.environment=w.isMeshStandardMaterial?H.environment:null,Y.fog=H.fog,Y.envMap=(w.isMeshStandardMaterial?F:rn).get(w.envMap||Y.environment),Y.envMapRotation=Y.environment!==null&&w.envMap===null?H.environmentRotation:w.envMapRotation,nt===void 0&&(w.addEventListener("dispose",te),nt=new Map,Y.programs=nt);let lt=nt.get(Oe);if(lt!==void 0){if(Y.currentProgram===lt&&Y.lightsStateVersion===Te)return Xt(w,We),lt}else We.uniforms=xe.getUniforms(w),w.onBeforeCompile(We,M),lt=xe.acquireProgram(We,Oe),nt.set(Oe,lt),Y.uniforms=We.uniforms;const tt=Y.uniforms;return(!w.isShaderMaterial&&!w.isRawShaderMaterial||w.clipping===!0)&&(tt.clippingPlanes=Ze.uniform),Xt(w,We),Y.needsLights=Pe(w),Y.lightsStateVersion=Te,Y.needsLights&&(tt.ambientLightColor.value=j.state.ambient,tt.lightProbe.value=j.state.probe,tt.directionalLights.value=j.state.directional,tt.directionalLightShadows.value=j.state.directionalShadow,tt.spotLights.value=j.state.spot,tt.spotLightShadows.value=j.state.spotShadow,tt.rectAreaLights.value=j.state.rectArea,tt.ltc_1.value=j.state.rectAreaLTC1,tt.ltc_2.value=j.state.rectAreaLTC2,tt.pointLights.value=j.state.point,tt.pointLightShadows.value=j.state.pointShadow,tt.hemisphereLights.value=j.state.hemi,tt.directionalShadowMap.value=j.state.directionalShadowMap,tt.directionalShadowMatrix.value=j.state.directionalShadowMatrix,tt.spotShadowMap.value=j.state.spotShadowMap,tt.spotLightMatrix.value=j.state.spotLightMatrix,tt.spotLightMap.value=j.state.spotLightMap,tt.pointShadowMap.value=j.state.pointShadowMap,tt.pointShadowMatrix.value=j.state.pointShadowMatrix),Y.currentProgram=lt,Y.uniformsList=null,lt}function Re(w){if(w.uniformsList===null){const H=w.currentProgram.getUniforms();w.uniformsList=aa.seqWithValue(H.seq,w.uniforms)}return w.uniformsList}function Xt(w,H){const $=Xe.get(w);$.outputColorSpace=H.outputColorSpace,$.batching=H.batching,$.batchingColor=H.batchingColor,$.instancing=H.instancing,$.instancingColor=H.instancingColor,$.instancingMorph=H.instancingMorph,$.skinning=H.skinning,$.morphTargets=H.morphTargets,$.morphNormals=H.morphNormals,$.morphColors=H.morphColors,$.morphTargetsCount=H.morphTargetsCount,$.numClippingPlanes=H.numClippingPlanes,$.numIntersection=H.numClipIntersection,$.vertexAlphas=H.vertexAlphas,$.vertexTangents=H.vertexTangents,$.toneMapping=H.toneMapping}function Fe(w,H,$,Y,j){H.isScene!==!0&&(H=st),ut.resetTextureUnits();const me=H.fog,Te=Y.isMeshStandardMaterial?H.environment:null,We=D===null?M.outputColorSpace:D.isXRRenderTarget===!0?D.texture.colorSpace:Ds,Oe=(Y.isMeshStandardMaterial?F:rn).get(Y.envMap||Te),nt=Y.vertexColors===!0&&!!$.attributes.color&&$.attributes.color.itemSize===4,lt=!!$.attributes.tangent&&(!!Y.normalMap||Y.anisotropy>0),tt=!!$.morphAttributes.position,bt=!!$.morphAttributes.normal,pe=!!$.morphAttributes.color;let ht=zi;Y.toneMapped&&(D===null||D.isXRRenderTarget===!0)&&(ht=M.toneMapping);const Dt=$.morphAttributes.position||$.morphAttributes.normal||$.morphAttributes.color,Rt=Dt!==void 0?Dt.length:0,Qe=Xe.get(Y),sn=p.state.lights;if(ae===!0&&(le===!0||w!==y)){const cn=w===y&&Y.id===S;Ze.setState(Y,w,cn)}let De=!1;Y.version===Qe.__version?(Qe.needsLights&&Qe.lightsStateVersion!==sn.state.version||Qe.outputColorSpace!==We||j.isBatchedMesh&&Qe.batching===!1||!j.isBatchedMesh&&Qe.batching===!0||j.isBatchedMesh&&Qe.batchingColor===!0&&j.colorTexture===null||j.isBatchedMesh&&Qe.batchingColor===!1&&j.colorTexture!==null||j.isInstancedMesh&&Qe.instancing===!1||!j.isInstancedMesh&&Qe.instancing===!0||j.isSkinnedMesh&&Qe.skinning===!1||!j.isSkinnedMesh&&Qe.skinning===!0||j.isInstancedMesh&&Qe.instancingColor===!0&&j.instanceColor===null||j.isInstancedMesh&&Qe.instancingColor===!1&&j.instanceColor!==null||j.isInstancedMesh&&Qe.instancingMorph===!0&&j.morphTexture===null||j.isInstancedMesh&&Qe.instancingMorph===!1&&j.morphTexture!==null||Qe.envMap!==Oe||Y.fog===!0&&Qe.fog!==me||Qe.numClippingPlanes!==void 0&&(Qe.numClippingPlanes!==Ze.numPlanes||Qe.numIntersection!==Ze.numIntersection)||Qe.vertexAlphas!==nt||Qe.vertexTangents!==lt||Qe.morphTargets!==tt||Qe.morphNormals!==bt||Qe.morphColors!==pe||Qe.toneMapping!==ht||Qe.morphTargetsCount!==Rt)&&(De=!0):(De=!0,Qe.__version=Y.version);let we=Qe.currentProgram;De===!0&&(we=Pt(Y,H,j));let Ut=!1,en=!1,ln=!1;const kt=we.getUniforms(),on=Qe.uniforms;if(Ge.useProgram(we.program)&&(Ut=!0,en=!0,ln=!0),Y.id!==S&&(S=Y.id,en=!0),Ut||y!==w){Ge.buffers.depth.getReversed()?(ce.copy(w.projectionMatrix),mf(ce),gf(ce),kt.setValue(O,"projectionMatrix",ce)):kt.setValue(O,"projectionMatrix",w.projectionMatrix),kt.setValue(O,"viewMatrix",w.matrixWorldInverse);const un=kt.map.cameraPosition;un!==void 0&&un.setValue(O,ve.setFromMatrixPosition(w.matrixWorld)),Tt.logarithmicDepthBuffer&&kt.setValue(O,"logDepthBufFC",2/(Math.log(w.far+1)/Math.LN2)),(Y.isMeshPhongMaterial||Y.isMeshToonMaterial||Y.isMeshLambertMaterial||Y.isMeshBasicMaterial||Y.isMeshStandardMaterial||Y.isShaderMaterial)&&kt.setValue(O,"isOrthographic",w.isOrthographicCamera===!0),y!==w&&(y=w,en=!0,ln=!0)}if(j.isSkinnedMesh){kt.setOptional(O,j,"bindMatrix"),kt.setOptional(O,j,"bindMatrixInverse");const cn=j.skeleton;cn&&(cn.boneTexture===null&&cn.computeBoneTexture(),kt.setValue(O,"boneTexture",cn.boneTexture,ut))}j.isBatchedMesh&&(kt.setOptional(O,j,"batchingTexture"),kt.setValue(O,"batchingTexture",j._matricesTexture,ut),kt.setOptional(O,j,"batchingIdTexture"),kt.setValue(O,"batchingIdTexture",j._indirectTexture,ut),kt.setOptional(O,j,"batchingColorTexture"),j._colorsTexture!==null&&kt.setValue(O,"batchingColorTexture",j._colorsTexture,ut));const mn=$.morphAttributes;if((mn.position!==void 0||mn.normal!==void 0||mn.color!==void 0)&&Ye.update(j,$,we),(en||Qe.receiveShadow!==j.receiveShadow)&&(Qe.receiveShadow=j.receiveShadow,kt.setValue(O,"receiveShadow",j.receiveShadow)),Y.isMeshGouraudMaterial&&Y.envMap!==null&&(on.envMap.value=Oe,on.flipEnvMap.value=Oe.isCubeTexture&&Oe.isRenderTargetTexture===!1?-1:1),Y.isMeshStandardMaterial&&Y.envMap===null&&H.environment!==null&&(on.envMapIntensity.value=H.environmentIntensity),en&&(kt.setValue(O,"toneMappingExposure",M.toneMappingExposure),Qe.needsLights&&Ct(on,ln),me&&Y.fog===!0&&he.refreshFogUniforms(on,me),he.refreshMaterialUniforms(on,Y,K,re,p.state.transmissionRenderTarget[w.id]),aa.upload(O,Re(Qe),on,ut)),Y.isShaderMaterial&&Y.uniformsNeedUpdate===!0&&(aa.upload(O,Re(Qe),on,ut),Y.uniformsNeedUpdate=!1),Y.isSpriteMaterial&&kt.setValue(O,"center",j.center),kt.setValue(O,"modelViewMatrix",j.modelViewMatrix),kt.setValue(O,"normalMatrix",j.normalMatrix),kt.setValue(O,"modelMatrix",j.matrixWorld),Y.isShaderMaterial||Y.isRawShaderMaterial){const cn=Y.uniformsGroups;for(let un=0,hi=cn.length;un<hi;un++){const kn=cn[un];q.update(kn,we),q.bind(kn,we)}}return we}function Ct(w,H){w.ambientLightColor.needsUpdate=H,w.lightProbe.needsUpdate=H,w.directionalLights.needsUpdate=H,w.directionalLightShadows.needsUpdate=H,w.pointLights.needsUpdate=H,w.pointLightShadows.needsUpdate=H,w.spotLights.needsUpdate=H,w.spotLightShadows.needsUpdate=H,w.rectAreaLights.needsUpdate=H,w.hemisphereLights.needsUpdate=H}function Pe(w){return w.isMeshLambertMaterial||w.isMeshToonMaterial||w.isMeshPhongMaterial||w.isMeshStandardMaterial||w.isShadowMaterial||w.isShaderMaterial&&w.lights===!0}this.getActiveCubeFace=function(){return C},this.getActiveMipmapLevel=function(){return P},this.getRenderTarget=function(){return D},this.setRenderTargetTextures=function(w,H,$){const Y=Xe.get(w);Y.__autoAllocateDepthBuffer=w.resolveDepthBuffer===!1,Y.__autoAllocateDepthBuffer===!1&&(Y.__useRenderToTexture=!1),Xe.get(w.texture).__webglTexture=H,Xe.get(w.depthTexture).__webglTexture=Y.__autoAllocateDepthBuffer?void 0:$,Y.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(w,H){const $=Xe.get(w);$.__webglFramebuffer=H,$.__useDefaultFramebuffer=H===void 0};const Bt=O.createFramebuffer();this.setRenderTarget=function(w,H=0,$=0){D=w,C=H,P=$;let Y=!0,j=null,me=!1,Te=!1;if(w){const Oe=Xe.get(w);if(Oe.__useDefaultFramebuffer!==void 0)Ge.bindFramebuffer(O.FRAMEBUFFER,null),Y=!1;else if(Oe.__webglFramebuffer===void 0)ut.setupRenderTarget(w);else if(Oe.__hasExternalTextures)ut.rebindTextures(w,Xe.get(w.texture).__webglTexture,Xe.get(w.depthTexture).__webglTexture);else if(w.depthBuffer){const tt=w.depthTexture;if(Oe.__boundDepthTexture!==tt){if(tt!==null&&Xe.has(tt)&&(w.width!==tt.image.width||w.height!==tt.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");ut.setupDepthRenderbuffer(w)}}const nt=w.texture;(nt.isData3DTexture||nt.isDataArrayTexture||nt.isCompressedArrayTexture)&&(Te=!0);const lt=Xe.get(w).__webglFramebuffer;w.isWebGLCubeRenderTarget?(Array.isArray(lt[H])?j=lt[H][$]:j=lt[H],me=!0):w.samples>0&&ut.useMultisampledRTT(w)===!1?j=Xe.get(w).__webglMultisampledFramebuffer:Array.isArray(lt)?j=lt[$]:j=lt,N.copy(w.viewport),W.copy(w.scissor),X=w.scissorTest}else N.copy(Ce).multiplyScalar(K).floor(),W.copy(Ie).multiplyScalar(K).floor(),X=He;if($!==0&&(j=Bt),Ge.bindFramebuffer(O.FRAMEBUFFER,j)&&Y&&Ge.drawBuffers(w,j),Ge.viewport(N),Ge.scissor(W),Ge.setScissorTest(X),me){const Oe=Xe.get(w.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_CUBE_MAP_POSITIVE_X+H,Oe.__webglTexture,$)}else if(Te){const Oe=Xe.get(w.texture),nt=H;O.framebufferTextureLayer(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,Oe.__webglTexture,$,nt)}else if(w!==null&&$!==0){const Oe=Xe.get(w.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,Oe.__webglTexture,$)}S=-1},this.readRenderTargetPixels=function(w,H,$,Y,j,me,Te,We=0){if(!(w&&w.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Oe=Xe.get(w).__webglFramebuffer;if(w.isWebGLCubeRenderTarget&&Te!==void 0&&(Oe=Oe[Te]),Oe){Ge.bindFramebuffer(O.FRAMEBUFFER,Oe);try{const nt=w.textures[We],lt=nt.format,tt=nt.type;if(!Tt.textureFormatReadable(lt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Tt.textureTypeReadable(tt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}H>=0&&H<=w.width-Y&&$>=0&&$<=w.height-j&&(w.textures.length>1&&O.readBuffer(O.COLOR_ATTACHMENT0+We),O.readPixels(H,$,Y,j,ke.convert(lt),ke.convert(tt),me))}finally{const nt=D!==null?Xe.get(D).__webglFramebuffer:null;Ge.bindFramebuffer(O.FRAMEBUFFER,nt)}}},this.readRenderTargetPixelsAsync=async function(w,H,$,Y,j,me,Te,We=0){if(!(w&&w.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Oe=Xe.get(w).__webglFramebuffer;if(w.isWebGLCubeRenderTarget&&Te!==void 0&&(Oe=Oe[Te]),Oe)if(H>=0&&H<=w.width-Y&&$>=0&&$<=w.height-j){Ge.bindFramebuffer(O.FRAMEBUFFER,Oe);const nt=w.textures[We],lt=nt.format,tt=nt.type;if(!Tt.textureFormatReadable(lt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Tt.textureTypeReadable(tt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const bt=O.createBuffer();O.bindBuffer(O.PIXEL_PACK_BUFFER,bt),O.bufferData(O.PIXEL_PACK_BUFFER,me.byteLength,O.STREAM_READ),w.textures.length>1&&O.readBuffer(O.COLOR_ATTACHMENT0+We),O.readPixels(H,$,Y,j,ke.convert(lt),ke.convert(tt),0);const pe=D!==null?Xe.get(D).__webglFramebuffer:null;Ge.bindFramebuffer(O.FRAMEBUFFER,pe);const ht=O.fenceSync(O.SYNC_GPU_COMMANDS_COMPLETE,0);return O.flush(),await pf(O,ht,4),O.bindBuffer(O.PIXEL_PACK_BUFFER,bt),O.getBufferSubData(O.PIXEL_PACK_BUFFER,0,me),O.deleteBuffer(bt),O.deleteSync(ht),me}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(w,H=null,$=0){const Y=Math.pow(2,-$),j=Math.floor(w.image.width*Y),me=Math.floor(w.image.height*Y),Te=H!==null?H.x:0,We=H!==null?H.y:0;ut.setTexture2D(w,0),O.copyTexSubImage2D(O.TEXTURE_2D,$,0,0,Te,We,j,me),Ge.unbindTexture()};const Je=O.createFramebuffer(),St=O.createFramebuffer();this.copyTextureToTexture=function(w,H,$=null,Y=null,j=0,me=null){me===null&&(j!==0?(ws("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),me=j,j=0):me=0);let Te,We,Oe,nt,lt,tt,bt,pe,ht;const Dt=w.isCompressedTexture?w.mipmaps[me]:w.image;if($!==null)Te=$.max.x-$.min.x,We=$.max.y-$.min.y,Oe=$.isBox3?$.max.z-$.min.z:1,nt=$.min.x,lt=$.min.y,tt=$.isBox3?$.min.z:0;else{const mn=Math.pow(2,-j);Te=Math.floor(Dt.width*mn),We=Math.floor(Dt.height*mn),w.isDataArrayTexture?Oe=Dt.depth:w.isData3DTexture?Oe=Math.floor(Dt.depth*mn):Oe=1,nt=0,lt=0,tt=0}Y!==null?(bt=Y.x,pe=Y.y,ht=Y.z):(bt=0,pe=0,ht=0);const Rt=ke.convert(H.format),Qe=ke.convert(H.type);let sn;H.isData3DTexture?(ut.setTexture3D(H,0),sn=O.TEXTURE_3D):H.isDataArrayTexture||H.isCompressedArrayTexture?(ut.setTexture2DArray(H,0),sn=O.TEXTURE_2D_ARRAY):(ut.setTexture2D(H,0),sn=O.TEXTURE_2D),O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,H.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,H.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,H.unpackAlignment);const De=O.getParameter(O.UNPACK_ROW_LENGTH),we=O.getParameter(O.UNPACK_IMAGE_HEIGHT),Ut=O.getParameter(O.UNPACK_SKIP_PIXELS),en=O.getParameter(O.UNPACK_SKIP_ROWS),ln=O.getParameter(O.UNPACK_SKIP_IMAGES);O.pixelStorei(O.UNPACK_ROW_LENGTH,Dt.width),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Dt.height),O.pixelStorei(O.UNPACK_SKIP_PIXELS,nt),O.pixelStorei(O.UNPACK_SKIP_ROWS,lt),O.pixelStorei(O.UNPACK_SKIP_IMAGES,tt);const kt=w.isDataArrayTexture||w.isData3DTexture,on=H.isDataArrayTexture||H.isData3DTexture;if(w.isDepthTexture){const mn=Xe.get(w),cn=Xe.get(H),un=Xe.get(mn.__renderTarget),hi=Xe.get(cn.__renderTarget);Ge.bindFramebuffer(O.READ_FRAMEBUFFER,un.__webglFramebuffer),Ge.bindFramebuffer(O.DRAW_FRAMEBUFFER,hi.__webglFramebuffer);for(let kn=0;kn<Oe;kn++)kt&&(O.framebufferTextureLayer(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,Xe.get(w).__webglTexture,j,tt+kn),O.framebufferTextureLayer(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,Xe.get(H).__webglTexture,me,ht+kn)),O.blitFramebuffer(nt,lt,Te,We,bt,pe,Te,We,O.DEPTH_BUFFER_BIT,O.NEAREST);Ge.bindFramebuffer(O.READ_FRAMEBUFFER,null),Ge.bindFramebuffer(O.DRAW_FRAMEBUFFER,null)}else if(j!==0||w.isRenderTargetTexture||Xe.has(w)){const mn=Xe.get(w),cn=Xe.get(H);Ge.bindFramebuffer(O.READ_FRAMEBUFFER,Je),Ge.bindFramebuffer(O.DRAW_FRAMEBUFFER,St);for(let un=0;un<Oe;un++)kt?O.framebufferTextureLayer(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,mn.__webglTexture,j,tt+un):O.framebufferTexture2D(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,mn.__webglTexture,j),on?O.framebufferTextureLayer(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,cn.__webglTexture,me,ht+un):O.framebufferTexture2D(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,cn.__webglTexture,me),j!==0?O.blitFramebuffer(nt,lt,Te,We,bt,pe,Te,We,O.COLOR_BUFFER_BIT,O.NEAREST):on?O.copyTexSubImage3D(sn,me,bt,pe,ht+un,nt,lt,Te,We):O.copyTexSubImage2D(sn,me,bt,pe,nt,lt,Te,We);Ge.bindFramebuffer(O.READ_FRAMEBUFFER,null),Ge.bindFramebuffer(O.DRAW_FRAMEBUFFER,null)}else on?w.isDataTexture||w.isData3DTexture?O.texSubImage3D(sn,me,bt,pe,ht,Te,We,Oe,Rt,Qe,Dt.data):H.isCompressedArrayTexture?O.compressedTexSubImage3D(sn,me,bt,pe,ht,Te,We,Oe,Rt,Dt.data):O.texSubImage3D(sn,me,bt,pe,ht,Te,We,Oe,Rt,Qe,Dt):w.isDataTexture?O.texSubImage2D(O.TEXTURE_2D,me,bt,pe,Te,We,Rt,Qe,Dt.data):w.isCompressedTexture?O.compressedTexSubImage2D(O.TEXTURE_2D,me,bt,pe,Dt.width,Dt.height,Rt,Dt.data):O.texSubImage2D(O.TEXTURE_2D,me,bt,pe,Te,We,Rt,Qe,Dt);O.pixelStorei(O.UNPACK_ROW_LENGTH,De),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,we),O.pixelStorei(O.UNPACK_SKIP_PIXELS,Ut),O.pixelStorei(O.UNPACK_SKIP_ROWS,en),O.pixelStorei(O.UNPACK_SKIP_IMAGES,ln),me===0&&H.generateMipmaps&&O.generateMipmap(sn),Ge.unbindTexture()},this.copyTextureToTexture3D=function(w,H,$=null,Y=null,j=0){return ws('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(w,H,$,Y,j)},this.initRenderTarget=function(w){Xe.get(w).__webglFramebuffer===void 0&&ut.setupRenderTarget(w)},this.initTexture=function(w){w.isCubeTexture?ut.setTextureCube(w,0):w.isData3DTexture?ut.setTexture3D(w,0):w.isDataArrayTexture||w.isCompressedArrayTexture?ut.setTexture2DArray(w,0):ut.setTexture2D(w,0),Ge.unbindTexture()},this.resetState=function(){C=0,P=0,D=null,Ge.reset(),Mt.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return yi}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Vt._getDrawingBufferColorSpace(e),t.unpackColorSpace=Vt._getUnpackColorSpace()}}var xg=Object.defineProperty,yg=(s,e,t)=>e in s?xg(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Jt=(s,e,t)=>yg(s,typeof e!="symbol"?e+"":e,t);const Uu=(s,e)=>{const[t,n]=e.split("-");return Object.assign(s.style,{left:n==="left"?"0":n==="center"?"50%":"",right:n==="right"?"0":"",top:t==="top"?"0":t==="bottom"?"":"50%",bottom:t==="bottom"?"0":"",transform:`${n==="center"?"translateX(-50%)":""} ${t==="center"?"translateY(-50%)":""}`}),e},Mg=({placement:s,size:e,offset:t,id:n,className:i})=>{const r=document.createElement("div"),{top:a,left:o,right:l,bottom:c}=t;return Object.assign(r.style,{id:n,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${a}px ${l}px ${c}px ${o}px`,borderRadius:"100%"}),Uu(r,s),n&&(r.id=n),i&&(r.className=i),r},Sg=s=>{const e=typeof s=="string"?document.querySelector(s):s;if(!e)throw Error("Invalid DOM element");return e};function dl(s,e,t){return Math.max(e,Math.min(t,s))}const bg=[["x",0,3],["y",1,4],["z",2,5]],vh=new I;function xh({isSphere:s},e,t){s&&(vh.set(0,0,1).applyQuaternion(t.quaternion),bg.forEach(([n,i,r])=>{const a=vh[n];let o=e[i],l=o.userData.opacity;o.material.opacity=dl(a>=0?l:l/2,0,1),o=e[r],l=o.userData.opacity,o.material.opacity=dl(a>=0?l/2:l,0,1)}))}const Eg=(s,e,t=10)=>Math.abs(s.clientX-e.x)<t&&Math.abs(s.clientY-e.y)<t,yh=new Dp,Mh=new Ke,Sh=(s,e,t,n)=>{Mh.set((s.clientX-e.left)/e.width*2-1,-((s.clientY-e.top)/e.height)*2+1),yh.setFromCamera(Mh,t);const i=yh.intersectObjects(n,!1),r=i.length?i[0]:null;return!r||!r.object.visible?null:r},mo=1e-6,Ag=2*Math.PI,Nu=["x","y","z"],lr=[...Nu,"nx","ny","nz"],wg=["x","z","y","nx","nz","ny"],Tg=["z","x","y","nz","nx","ny"],fl="Right",oa="Top",pl="Front",ml="Left",la="Bottom",gl="Back",Cg=[fl,oa,pl,ml,la,gl].map(s=>s.toLocaleLowerCase()),Iu=1.3,bh=(s,e=!0)=>{const{material:t,userData:n}=s,{color:i,opacity:r}=e?n.hover:n;t.color.set(i),t.opacity=r},ji=s=>JSON.parse(JSON.stringify(s)),Rg=s=>{const e=s.type||"sphere",t=e==="sphere",n=s.resolution||t?64:128,i=nn.DEFAULT_UP,r=i.z===1,a=i.x===1,{container:o}=s;s.container=void 0,s=JSON.parse(JSON.stringify(s)),s.container=o;const l=r?wg:a?Tg:lr;Cg.forEach((u,f)=>{s[u]&&(s[l[f]]=s[u])});const c={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:t?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},h={line:!1,scale:t?.45:.7,hover:{scale:t?.5:.7}},d={type:e,container:document.body,size:128,placement:"top-right",resolution:n,lineWidth:4,radius:t?1:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:t?16777215:14739180,opacity:t?0:1,hover:{color:t?16777215:14739180,opacity:t?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!t,color:t?15915362:16777215,opacity:1,scale:t?.15:.2,radius:1,smoothness:18,hover:{color:t?16777215:9688043,opacity:1,scale:t?.2:.225}},edges:{enabled:!t,color:t?15915362:16777215,opacity:t?1:0,radius:t?1:.125,smoothness:18,scale:t?.15:1,hover:{color:t?16777215:9688043,opacity:1,scale:t?.2:1}},x:{...ji(c),...t?{label:"X",color:16725587,line:!0}:{label:a?oa:fl}},y:{...ji(c),...t?{label:"Y",color:9100032,line:!0}:{label:r||a?pl:oa}},z:{...ji(c),...t?{label:"Z",color:2920447,line:!0}:{label:r?oa:a?fl:pl}},nx:{...ji(h),label:t?"":a?la:ml},ny:{...ji(h),label:t?"":r||a?gl:la},nz:{...ji(h),label:t?"":r?la:a?ml:gl}};return _l(s,d),Nu.forEach(u=>_l(s[`n${u}`],ji(s[u]))),{...s,isSphere:t}};function _l(s,...e){if(s instanceof HTMLElement||typeof s!="object"||s===null)return s;for(const t of e)for(const n in t)n!=="container"&&n in t&&(s[n]===void 0?s[n]=t[n]:typeof t[n]=="object"&&!Array.isArray(t[n])&&(s[n]=_l(s[n]||{},t[n])));return s}const Lg=(s,e=2)=>{const t=new gt,n=e*2,{isSphere:i,resolution:r,radius:a,font:o,corners:l,edges:c}=s,h=lr.map(P=>({...s[P],radius:a}));i&&l.enabled&&h.push(l),i&&c.enabled&&h.push(c);const d=document.createElement("canvas"),u=d.getContext("2d");d.width=r*2+n*2,d.height=r*h.length+n*h.length;const[f,m]=U(h,r,o);h.forEach(({radius:P,label:D,color:S,labelColor:y,border:N,hover:{color:W,labelColor:X,border:Q}},ne)=>{const G=r*ne+ne*n+e;M(e,G,e,r,P,D,N,S,y),M(r+e*3,G,e,r,P,D,Q??N,W??S,X??y)});const _=h.length,g=e/(r*2),p=e/(r*6),E=1/_,b=new qf(d);return b.repeat.set(.5-2*g,E-2*p),b.offset.set(g,1-p),Object.assign(b,{colorSpace:Yt,wrapS:ai,wrapT:ai,userData:{offsetX:g,offsetY:p,cellHeight:E}}),b;function M(P,D,S,y,N,W,X,Q,ne){if(N=N*(y/2),Q!=null&&Q!==""&&(G(),u.fillStyle=t.set(Q).getStyle(),u.fill()),X&&X.size){const re=X.size*y/2;P+=re,D+=re,y-=X.size*y,N=Math.max(0,N-re),G(),u.strokeStyle=t.set(X.color).getStyle(),u.lineWidth=X.size*y,u.stroke()}W&&C(u,P+y/2,D+(y+S)/2,W,t.set(ne).getStyle());function G(){u.beginPath(),u.moveTo(P+N,D),u.lineTo(P+y-N,D),u.arcTo(P+y,D,P+y,D+N,N),u.lineTo(P+y,D+y-N),u.arcTo(P+y,D+y,P+y-N,D+y,N),u.lineTo(P+N,D+y),u.arcTo(P,D+y,P,D+y-N,N),u.lineTo(P,D+N),u.arcTo(P,D,P+N,D,N),u.closePath()}}function U(P,D,S){const y=[...P].sort((be,Ce)=>{var Ie,He;return(((Ie=be.label)==null?void 0:Ie.length)||0)-(((He=Ce.label)==null?void 0:He.length)||0)}).pop().label,{family:N,weight:W}=S,X=i?Math.sqrt(Math.pow(D*.7,2)/2):D;let Q=X,ne=0,G=0;do{u.font=`${W} ${Q}px ${N}`;const be=u.measureText(y);ne=be.width,G=be.fontBoundingBoxDescent,Q--}while(ne>X&&Q>0);const re=X/G,K=Math.min(X/ne,re),ge=Math.floor(Q*K);return[`${W} ${ge}px ${N}`,re]}function C(P,D,S,y,N){P.font=f,P.textAlign="center",P.textBaseline="middle",P.fillStyle=N,P.fillText(y,D,S+(i?m:0))}},Pg=(s,e)=>s.offset.x=(e?.5:0)+s.userData.offsetX,Gl=(s,e)=>{const{offset:t,userData:{offsetY:n,cellHeight:i}}=s;t.y=1-(e+1)*i+n};function Wl(s,e,t=2,n=2){const i=t/2-s,r=n/2-s,a=s/t,o=(t-s)/t,l=s/n,c=(n-s)/n,h=[i,r,0,-i,r,0,-i,-r,0,i,-r,0],d=[o,c,a,c,a,l,o,l],u=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],f=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(C=>u[C]);let m,_,g,p,E,b,M,U;for(let C=0;C<4;C++){p=C<1||C>2?i:-i,E=C<2?r:-r,b=C<1||C>2?o:a,M=C<2?c:l;for(let P=0;P<=e;P++)m=Math.PI/2*(C+P/e),_=Math.cos(m),g=Math.sin(m),h.push(p+s*_,E+s*g,0),d.push(b+a*_,M+l*g),P<e&&(U=(e+1)*C+P+4,f.push(C,U,U+1))}return new an().setIndex(new dn(new Uint32Array(f),1)).setAttribute("position",new dn(new Float32Array(h),3)).setAttribute("uv",new dn(new Float32Array(d),2))}const Dg=(s,e)=>{const t=new I,{isSphere:n,radius:i,smoothness:r}=s,a=Wl(i,r);return lr.map((o,l)=>{const c=l<3,h=lr[l],d=l?e.clone():e;Gl(d,l);const{enabled:u,scale:f,opacity:m,hover:_}=s[h],g={map:d,opacity:m,transparent:!0},p=n?new Dl(new Sa(g)):new $t(a,new Bi(g)),E=c?h:h[1];return p.position[E]=(c?1:-1)*(n?Iu:1),n||p.lookAt(t.copy(p.position).multiplyScalar(1.7)),p.scale.setScalar(f),p.renderOrder=1,p.visible=u,p.userData={scale:f,opacity:m,hover:_},p})},Ug=(s,e)=>{const{isSphere:t,corners:n}=s;if(!n.enabled)return[];const{color:i,opacity:r,scale:a,radius:o,smoothness:l,hover:c}=n,h=t?null:Wl(o,l),d={transparent:!0,opacity:r},u=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(m=>m*.85),f=new I;return Array(u.length/3).fill(0).map((m,_)=>{if(t){const E=e.clone();Gl(E,6),d.map=E}else d.color=i;const g=t?new Dl(new Sa(d)):new $t(h,new Bi(d)),p=_*3;return g.position.set(u[p],u[p+1],u[p+2]),t&&g.position.normalize().multiplyScalar(1.7),g.scale.setScalar(a),g.lookAt(f.copy(g.position).multiplyScalar(2)),g.renderOrder=1,g.userData={color:i,opacity:r,scale:a,hover:c},g})},Ng=(s,e,t)=>{const{isSphere:n,edges:i}=s;if(!i.enabled)return[];const{color:r,opacity:a,scale:o,hover:l,radius:c,smoothness:h}=i,d=n?null:Wl(c,h,1.2,.25),u={transparent:!0,opacity:a},f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(g=>g*.925),m=new I,_=new I(0,1,0);return Array(f.length/3).fill(0).map((g,p)=>{if(n){const M=e.clone();Gl(M,t),u.map=M}else u.color=r;const E=n?new Dl(new Sa(u)):new $t(d,new Bi(u)),b=p*3;return E.position.set(f[b],f[b+1],f[b+2]),n&&E.position.normalize().multiplyScalar(1.7),E.scale.setScalar(o),E.up.copy(_),E.lookAt(m.copy(E.position).multiplyScalar(2)),!n&&!E.position.y&&(E.rotation.z=Math.PI/2),E.renderOrder=1,E.userData={color:r,opacity:a,scale:o,hover:l},E})};function Ig(s,e=!1){const t=s[0].index!==null,n=new Set(Object.keys(s[0].attributes)),i=new Set(Object.keys(s[0].morphAttributes)),r={},a={},o=s[0].morphTargetsRelative,l=new an;let c=0;for(let h=0;h<s.length;++h){const d=s[h];let u=0;if(t!==(d.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const f in d.attributes){if(!n.has(f))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.'),null;r[f]===void 0&&(r[f]=[]),r[f].push(d.attributes[f]),u++}if(u!==n.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(o!==d.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const f in d.morphAttributes){if(!i.has(f))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[f]===void 0&&(a[f]=[]),a[f].push(d.morphAttributes[f])}if(e){let f;if(t)f=d.index.count;else if(d.attributes.position!==void 0)f=d.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;l.addGroup(c,f,h),c+=f}}if(t){let h=0;const d=[];for(let u=0;u<s.length;++u){const f=s[u].index;for(let m=0;m<f.count;++m)d.push(f.getX(m)+h);h+=s[u].attributes.position.count}l.setIndex(d)}for(const h in r){const d=Eh(r[h]);if(!d)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" attribute."),null;l.setAttribute(h,d)}for(const h in a){const d=a[h][0].length;if(d===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[h]=[];for(let u=0;u<d;++u){const f=[];for(let _=0;_<a[h].length;++_)f.push(a[h][_][u]);const m=Eh(f);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" morphAttribute."),null;l.morphAttributes[h].push(m)}}return l}function Eh(s){let e,t,n,i=-1,r=0;for(let c=0;c<s.length;++c){const h=s[c];if(e===void 0&&(e=h.array.constructor),e!==h.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=h.itemSize),t!==h.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(n===void 0&&(n=h.normalized),n!==h.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(i===-1&&(i=h.gpuType),i!==h.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;r+=h.count*t}const a=new e(r),o=new dn(a,t,n);let l=0;for(let c=0;c<s.length;++c){const h=s[c];if(h.isInterleavedBufferAttribute){const d=l/t;for(let u=0,f=h.count;u<f;u++)for(let m=0;m<t;m++){const _=h.getComponent(u,m);o.setComponent(u+d,m,_)}}else a.set(h.array,l);l+=h.count*t}return i!==void 0&&(o.gpuType=i),o}const Fg=(s,e)=>{const{isSphere:t,background:{enabled:n,color:i,opacity:r,hover:a}}=e;let o;const l=new Bi({color:i,side:Rn,opacity:r,transparent:!0,depthWrite:!1});if(!n)return null;if(t)o=new $t(new Ea(1.8,64,64),l);else{let c;s.forEach(h=>{const d=h.scale.x;h.scale.setScalar(.9),h.updateMatrix();const u=h.geometry.clone();u.applyMatrix4(h.matrix),c=c?Ig([c,u]):u,h.scale.setScalar(d)}),o=new $t(c,l)}return o.userData={color:i,opacity:r,hover:a},o},Ah=new ei,qr=new I;class Fu extends Rp{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],t=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],n=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(n),this.setAttribute("position",new It(e,3)),this.setAttribute("uv",new It(t,2))}applyMatrix4(e){const t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new cl(t,6,1);return this.setAttribute("instanceStart",new li(n,3,0)),this.setAttribute("instanceEnd",new li(n,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new cl(t,6,1);return this.setAttribute("instanceColorStart",new li(n,3,0)),this.setAttribute("instanceColorEnd",new li(n,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new lp(e.geometry)),this}fromLineSegments(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ei);const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;e!==void 0&&t!==void 0&&(this.boundingBox.setFromBufferAttribute(e),Ah.setFromBufferAttribute(t),this.boundingBox.union(Ah))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ei),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){const n=this.boundingSphere.center;this.boundingBox.getCenter(n);let i=0;for(let r=0,a=e.count;r<a;r++)qr.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(qr)),qr.fromBufferAttribute(t,r),i=Math.max(i,n.distanceToSquared(qr));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}Ve.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new Ke(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}};Un.line={uniforms:Ll.merge([Ve.common,Ve.fog,Ve.line]),vertexShader:`
|
|
3827
|
+
}`;class fg{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){const i=new bn,r=e.properties.get(i);r.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new bi({vertexShader:ug,fragmentShader:dg,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Jt(new hr(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class pg extends ns{constructor(e,t){super();const n=this;let i=null,r=1,a=null,o="local-floor",l=1,c=null,h=null,d=null,u=null,f=null,m=null;const _=new fg,g=t.getContextAttributes();let p=null,E=null;const b=[],M=[],U=new Ze;let C=null;const P=new Sn;P.viewport=new Ht;const D=new Sn;D.viewport=new Ht;const S=[P,D],y=new Lp;let N=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(K){let ae=b[K];return ae===void 0&&(ae=new Ka,b[K]=ae),ae.getTargetRaySpace()},this.getControllerGrip=function(K){let ae=b[K];return ae===void 0&&(ae=new Ka,b[K]=ae),ae.getGripSpace()},this.getHand=function(K){let ae=b[K];return ae===void 0&&(ae=new Ka,b[K]=ae),ae.getHandSpace()};function X(K){const ae=M.indexOf(K.inputSource);if(ae===-1)return;const le=b[ae];le!==void 0&&(le.update(K.inputSource,K.frame,c||a),le.dispatchEvent({type:K.type,data:K.inputSource}))}function Q(){i.removeEventListener("select",X),i.removeEventListener("selectstart",X),i.removeEventListener("selectend",X),i.removeEventListener("squeeze",X),i.removeEventListener("squeezestart",X),i.removeEventListener("squeezeend",X),i.removeEventListener("end",Q),i.removeEventListener("inputsourceschange",ne);for(let K=0;K<b.length;K++){const ae=M[K];ae!==null&&(M[K]=null,b[K].disconnect(ae))}N=null,W=null,_.reset(),e.setRenderTarget(p),f=null,u=null,d=null,i=null,E=null,Ve.stop(),n.isPresenting=!1,e.setPixelRatio(C),e.setSize(U.width,U.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(K){r=K,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(K){o=K,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(K){c=K},this.getBaseLayer=function(){return u!==null?u:f},this.getBinding=function(){return d},this.getFrame=function(){return m},this.getSession=function(){return i},this.setSession=async function(K){if(i=K,i!==null){if(p=e.getRenderTarget(),i.addEventListener("select",X),i.addEventListener("selectstart",X),i.addEventListener("selectend",X),i.addEventListener("squeeze",X),i.addEventListener("squeezestart",X),i.addEventListener("squeezeend",X),i.addEventListener("end",Q),i.addEventListener("inputsourceschange",ne),g.xrCompatible!==!0&&await t.makeXRCompatible(),C=e.getPixelRatio(),e.getSize(U),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let le=null,ce=null,Le=null;g.depth&&(Le=g.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,le=g.stencil?ar:rr,ce=g.stencil?sr:es);const xe={colorFormat:t.RGBA8,depthFormat:Le,scaleFactor:r};d=new XRWebGLBinding(i,t),u=d.createProjectionLayer(xe),i.updateRenderState({layers:[u]}),e.setPixelRatio(1),e.setSize(u.textureWidth,u.textureHeight,!1),E=new ts(u.textureWidth,u.textureHeight,{format:Wn,type:ci,depthTexture:new gu(u.textureWidth,u.textureHeight,ce,void 0,void 0,void 0,void 0,void 0,void 0,le),stencilBuffer:g.stencil,colorSpace:e.outputColorSpace,samples:g.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1})}else{const le={antialias:g.antialias,alpha:!0,depth:g.depth,stencil:g.stencil,framebufferScaleFactor:r};f=new XRWebGLLayer(i,t,le),i.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),E=new ts(f.framebufferWidth,f.framebufferHeight,{format:Wn,type:ci,colorSpace:e.outputColorSpace,stencilBuffer:g.stencil,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}E.isXRRenderTarget=!0,this.setFoveation(l),c=null,a=await i.requestReferenceSpace(o),Ve.setContext(i),Ve.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function ne(K){for(let ae=0;ae<K.removed.length;ae++){const le=K.removed[ae],ce=M.indexOf(le);ce>=0&&(M[ce]=null,b[ce].disconnect(le))}for(let ae=0;ae<K.added.length;ae++){const le=K.added[ae];let ce=M.indexOf(le);if(ce===-1){for(let xe=0;xe<b.length;xe++)if(xe>=M.length){M.push(le),ce=xe;break}else if(M[xe]===null){M[xe]=le,ce=xe;break}if(ce===-1)break}const Le=b[ce];Le&&Le.connect(le)}}const G=new I,re=new I;function Z(K,ae,le){G.setFromMatrixPosition(ae.matrixWorld),re.setFromMatrixPosition(le.matrixWorld);const ce=G.distanceTo(re),Le=ae.projectionMatrix.elements,xe=le.projectionMatrix.elements,we=Le[14]/(Le[10]-1),st=Le[14]/(Le[10]+1),Tt=(Le[9]+1)/Le[5],Mt=(Le[9]-1)/Le[5],O=(Le[8]-1)/Le[0],Gt=(xe[8]+1)/xe[0],Lt=we*O,Ct=we*Gt,He=ce/(-O+Gt),mt=He*-O;if(ae.matrixWorld.decompose(K.position,K.quaternion,K.scale),K.translateX(mt),K.translateZ(He),K.matrixWorld.compose(K.position,K.quaternion,K.scale),K.matrixWorldInverse.copy(K.matrixWorld).invert(),Le[10]===-1)K.projectionMatrix.copy(ae.projectionMatrix),K.projectionMatrixInverse.copy(ae.projectionMatrixInverse);else{const We=we+He,dt=st+He,rn=Lt-mt,F=Ct+(ce-mt),A=Tt*st/dt*We,ee=Mt*st/dt*We;K.projectionMatrix.makePerspective(rn,F,A,ee,We,dt),K.projectionMatrixInverse.copy(K.projectionMatrix).invert()}}function me(K,ae){ae===null?K.matrixWorld.copy(K.matrix):K.matrixWorld.multiplyMatrices(ae.matrixWorld,K.matrix),K.matrixWorldInverse.copy(K.matrixWorld).invert()}this.updateCamera=function(K){if(i===null)return;let ae=K.near,le=K.far;_.texture!==null&&(_.depthNear>0&&(ae=_.depthNear),_.depthFar>0&&(le=_.depthFar)),y.near=D.near=P.near=ae,y.far=D.far=P.far=le,(N!==y.near||W!==y.far)&&(i.updateRenderState({depthNear:y.near,depthFar:y.far}),N=y.near,W=y.far),P.layers.mask=K.layers.mask|2,D.layers.mask=K.layers.mask|4,y.layers.mask=P.layers.mask|D.layers.mask;const ce=K.parent,Le=y.cameras;me(y,ce);for(let xe=0;xe<Le.length;xe++)me(Le[xe],ce);Le.length===2?Z(y,P,D):y.projectionMatrix.copy(P.projectionMatrix),Ee(K,y,ce)};function Ee(K,ae,le){le===null?K.matrix.copy(ae.matrixWorld):(K.matrix.copy(le.matrixWorld),K.matrix.invert(),K.matrix.multiply(ae.matrixWorld)),K.matrix.decompose(K.position,K.quaternion,K.scale),K.updateMatrixWorld(!0),K.projectionMatrix.copy(ae.projectionMatrix),K.projectionMatrixInverse.copy(ae.projectionMatrixInverse),K.isPerspectiveCamera&&(K.fov=Us*2*Math.atan(1/K.projectionMatrix.elements[5]),K.zoom=1)}this.getCamera=function(){return y},this.getFoveation=function(){if(!(u===null&&f===null))return l},this.setFoveation=function(K){l=K,u!==null&&(u.fixedFoveation=K),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=K)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(y)};let Ce=null;function Ne(K,ae){if(h=ae.getViewerPose(c||a),m=ae,h!==null){const le=h.views;f!==null&&(e.setRenderTargetFramebuffer(E,f.framebuffer),e.setRenderTarget(E));let ce=!1;le.length!==y.cameras.length&&(y.cameras.length=0,ce=!0);for(let we=0;we<le.length;we++){const st=le[we];let Tt=null;if(f!==null)Tt=f.getViewport(st);else{const O=d.getViewSubImage(u,st);Tt=O.viewport,we===0&&(e.setRenderTargetTextures(E,O.colorTexture,O.depthStencilTexture),e.setRenderTarget(E))}let Mt=S[we];Mt===void 0&&(Mt=new Sn,Mt.layers.enable(we),Mt.viewport=new Ht,S[we]=Mt),Mt.matrix.fromArray(st.transform.matrix),Mt.matrix.decompose(Mt.position,Mt.quaternion,Mt.scale),Mt.projectionMatrix.fromArray(st.projectionMatrix),Mt.projectionMatrixInverse.copy(Mt.projectionMatrix).invert(),Mt.viewport.set(Tt.x,Tt.y,Tt.width,Tt.height),we===0&&(y.matrix.copy(Mt.matrix),y.matrix.decompose(y.position,y.quaternion,y.scale)),ce===!0&&y.cameras.push(Mt)}const Le=i.enabledFeatures;if(Le&&Le.includes("depth-sensing")&&i.depthUsage=="gpu-optimized"&&d){const we=d.getDepthInformation(le[0]);we&&we.isValid&&we.texture&&_.init(e,we,i.renderState)}}for(let le=0;le<b.length;le++){const ce=M[le],Le=b[le];ce!==null&&Le!==void 0&&Le.update(ce,ae,c||a)}Ce&&Ce(K,ae),ae.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:ae}),m=null}const Ve=new Cu;Ve.setAnimationLoop(Ne),this.setAnimationLoop=function(K){Ce=K},this.dispose=function(){}}}const qi=new Ln,mg=new At;function gg(s,e){function t(g,p){g.matrixAutoUpdate===!0&&g.updateMatrix(),p.value.copy(g.matrix)}function n(g,p){p.color.getRGB(g.fogColor.value,lu(s)),p.isFog?(g.fogNear.value=p.near,g.fogFar.value=p.far):p.isFogExp2&&(g.fogDensity.value=p.density)}function i(g,p,E,b,M){p.isMeshBasicMaterial||p.isMeshLambertMaterial?r(g,p):p.isMeshToonMaterial?(r(g,p),d(g,p)):p.isMeshPhongMaterial?(r(g,p),h(g,p)):p.isMeshStandardMaterial?(r(g,p),u(g,p),p.isMeshPhysicalMaterial&&f(g,p,M)):p.isMeshMatcapMaterial?(r(g,p),m(g,p)):p.isMeshDepthMaterial?r(g,p):p.isMeshDistanceMaterial?(r(g,p),_(g,p)):p.isMeshNormalMaterial?r(g,p):p.isLineBasicMaterial?(a(g,p),p.isLineDashedMaterial&&o(g,p)):p.isPointsMaterial?l(g,p,E,b):p.isSpriteMaterial?c(g,p):p.isShadowMaterial?(g.color.value.copy(p.color),g.opacity.value=p.opacity):p.isShaderMaterial&&(p.uniformsNeedUpdate=!1)}function r(g,p){g.opacity.value=p.opacity,p.color&&g.diffuse.value.copy(p.color),p.emissive&&g.emissive.value.copy(p.emissive).multiplyScalar(p.emissiveIntensity),p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.bumpMap&&(g.bumpMap.value=p.bumpMap,t(p.bumpMap,g.bumpMapTransform),g.bumpScale.value=p.bumpScale,p.side===Rn&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,t(p.normalMap,g.normalMapTransform),g.normalScale.value.copy(p.normalScale),p.side===Rn&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,t(p.displacementMap,g.displacementMapTransform),g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap,t(p.emissiveMap,g.emissiveMapTransform)),p.specularMap&&(g.specularMap.value=p.specularMap,t(p.specularMap,g.specularMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest);const E=e.get(p),b=E.envMap,M=E.envMapRotation;b&&(g.envMap.value=b,qi.copy(M),qi.x*=-1,qi.y*=-1,qi.z*=-1,b.isCubeTexture&&b.isRenderTargetTexture===!1&&(qi.y*=-1,qi.z*=-1),g.envMapRotation.value.setFromMatrix4(mg.makeRotationFromEuler(qi)),g.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=p.reflectivity,g.ior.value=p.ior,g.refractionRatio.value=p.refractionRatio),p.lightMap&&(g.lightMap.value=p.lightMap,g.lightMapIntensity.value=p.lightMapIntensity,t(p.lightMap,g.lightMapTransform)),p.aoMap&&(g.aoMap.value=p.aoMap,g.aoMapIntensity.value=p.aoMapIntensity,t(p.aoMap,g.aoMapTransform))}function a(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform))}function o(g,p){g.dashSize.value=p.dashSize,g.totalSize.value=p.dashSize+p.gapSize,g.scale.value=p.scale}function l(g,p,E,b){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.size.value=p.size*E,g.scale.value=b*.5,p.map&&(g.map.value=p.map,t(p.map,g.uvTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function c(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.rotation.value=p.rotation,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function h(g,p){g.specular.value.copy(p.specular),g.shininess.value=Math.max(p.shininess,1e-4)}function d(g,p){p.gradientMap&&(g.gradientMap.value=p.gradientMap)}function u(g,p){g.metalness.value=p.metalness,p.metalnessMap&&(g.metalnessMap.value=p.metalnessMap,t(p.metalnessMap,g.metalnessMapTransform)),g.roughness.value=p.roughness,p.roughnessMap&&(g.roughnessMap.value=p.roughnessMap,t(p.roughnessMap,g.roughnessMapTransform)),p.envMap&&(g.envMapIntensity.value=p.envMapIntensity)}function f(g,p,E){g.ior.value=p.ior,p.sheen>0&&(g.sheenColor.value.copy(p.sheenColor).multiplyScalar(p.sheen),g.sheenRoughness.value=p.sheenRoughness,p.sheenColorMap&&(g.sheenColorMap.value=p.sheenColorMap,t(p.sheenColorMap,g.sheenColorMapTransform)),p.sheenRoughnessMap&&(g.sheenRoughnessMap.value=p.sheenRoughnessMap,t(p.sheenRoughnessMap,g.sheenRoughnessMapTransform))),p.clearcoat>0&&(g.clearcoat.value=p.clearcoat,g.clearcoatRoughness.value=p.clearcoatRoughness,p.clearcoatMap&&(g.clearcoatMap.value=p.clearcoatMap,t(p.clearcoatMap,g.clearcoatMapTransform)),p.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=p.clearcoatRoughnessMap,t(p.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),p.clearcoatNormalMap&&(g.clearcoatNormalMap.value=p.clearcoatNormalMap,t(p.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(p.clearcoatNormalScale),p.side===Rn&&g.clearcoatNormalScale.value.negate())),p.dispersion>0&&(g.dispersion.value=p.dispersion),p.iridescence>0&&(g.iridescence.value=p.iridescence,g.iridescenceIOR.value=p.iridescenceIOR,g.iridescenceThicknessMinimum.value=p.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=p.iridescenceThicknessRange[1],p.iridescenceMap&&(g.iridescenceMap.value=p.iridescenceMap,t(p.iridescenceMap,g.iridescenceMapTransform)),p.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=p.iridescenceThicknessMap,t(p.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),p.transmission>0&&(g.transmission.value=p.transmission,g.transmissionSamplerMap.value=E.texture,g.transmissionSamplerSize.value.set(E.width,E.height),p.transmissionMap&&(g.transmissionMap.value=p.transmissionMap,t(p.transmissionMap,g.transmissionMapTransform)),g.thickness.value=p.thickness,p.thicknessMap&&(g.thicknessMap.value=p.thicknessMap,t(p.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=p.attenuationDistance,g.attenuationColor.value.copy(p.attenuationColor)),p.anisotropy>0&&(g.anisotropyVector.value.set(p.anisotropy*Math.cos(p.anisotropyRotation),p.anisotropy*Math.sin(p.anisotropyRotation)),p.anisotropyMap&&(g.anisotropyMap.value=p.anisotropyMap,t(p.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=p.specularIntensity,g.specularColor.value.copy(p.specularColor),p.specularColorMap&&(g.specularColorMap.value=p.specularColorMap,t(p.specularColorMap,g.specularColorMapTransform)),p.specularIntensityMap&&(g.specularIntensityMap.value=p.specularIntensityMap,t(p.specularIntensityMap,g.specularIntensityMapTransform))}function m(g,p){p.matcap&&(g.matcap.value=p.matcap)}function _(g,p){const E=e.get(p).light;g.referencePosition.value.setFromMatrixPosition(E.matrixWorld),g.nearDistance.value=E.shadow.camera.near,g.farDistance.value=E.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function _g(s,e,t,n){let i={},r={},a=[];const o=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function l(E,b){const M=b.program;n.uniformBlockBinding(E,M)}function c(E,b){let M=i[E.id];M===void 0&&(m(E),M=h(E),i[E.id]=M,E.addEventListener("dispose",g));const U=b.program;n.updateUBOMapping(E,U);const C=e.render.frame;r[E.id]!==C&&(u(E),r[E.id]=C)}function h(E){const b=d();E.__bindingPointIndex=b;const M=s.createBuffer(),U=E.__size,C=E.usage;return s.bindBuffer(s.UNIFORM_BUFFER,M),s.bufferData(s.UNIFORM_BUFFER,U,C),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,b,M),M}function d(){for(let E=0;E<o;E++)if(a.indexOf(E)===-1)return a.push(E),E;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(E){const b=i[E.id],M=E.uniforms,U=E.__cache;s.bindBuffer(s.UNIFORM_BUFFER,b);for(let C=0,P=M.length;C<P;C++){const D=Array.isArray(M[C])?M[C]:[M[C]];for(let S=0,y=D.length;S<y;S++){const N=D[S];if(f(N,C,S,U)===!0){const W=N.__offset,X=Array.isArray(N.value)?N.value:[N.value];let Q=0;for(let ne=0;ne<X.length;ne++){const G=X[ne],re=_(G);typeof G=="number"||typeof G=="boolean"?(N.__data[0]=G,s.bufferSubData(s.UNIFORM_BUFFER,W+Q,N.__data)):G.isMatrix3?(N.__data[0]=G.elements[0],N.__data[1]=G.elements[1],N.__data[2]=G.elements[2],N.__data[3]=0,N.__data[4]=G.elements[3],N.__data[5]=G.elements[4],N.__data[6]=G.elements[5],N.__data[7]=0,N.__data[8]=G.elements[6],N.__data[9]=G.elements[7],N.__data[10]=G.elements[8],N.__data[11]=0):(G.toArray(N.__data,Q),Q+=re.storage/Float32Array.BYTES_PER_ELEMENT)}s.bufferSubData(s.UNIFORM_BUFFER,W,N.__data)}}}s.bindBuffer(s.UNIFORM_BUFFER,null)}function f(E,b,M,U){const C=E.value,P=b+"_"+M;if(U[P]===void 0)return typeof C=="number"||typeof C=="boolean"?U[P]=C:U[P]=C.clone(),!0;{const D=U[P];if(typeof C=="number"||typeof C=="boolean"){if(D!==C)return U[P]=C,!0}else if(D.equals(C)===!1)return D.copy(C),!0}return!1}function m(E){const b=E.uniforms;let M=0;const U=16;for(let P=0,D=b.length;P<D;P++){const S=Array.isArray(b[P])?b[P]:[b[P]];for(let y=0,N=S.length;y<N;y++){const W=S[y],X=Array.isArray(W.value)?W.value:[W.value];for(let Q=0,ne=X.length;Q<ne;Q++){const G=X[Q],re=_(G),Z=M%U,me=Z%re.boundary,Ee=Z+me;M+=me,Ee!==0&&U-Ee<re.storage&&(M+=U-Ee),W.__data=new Float32Array(re.storage/Float32Array.BYTES_PER_ELEMENT),W.__offset=M,M+=re.storage}}}const C=M%U;return C>0&&(M+=U-C),E.__size=M,E.__cache={},this}function _(E){const b={boundary:0,storage:0};return typeof E=="number"||typeof E=="boolean"?(b.boundary=4,b.storage=4):E.isVector2?(b.boundary=8,b.storage=8):E.isVector3||E.isColor?(b.boundary=16,b.storage=12):E.isVector4?(b.boundary=16,b.storage=16):E.isMatrix3?(b.boundary=48,b.storage=48):E.isMatrix4?(b.boundary=64,b.storage=64):E.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",E),b}function g(E){const b=E.target;b.removeEventListener("dispose",g);const M=a.indexOf(b.__bindingPointIndex);a.splice(M,1),s.deleteBuffer(i[b.id]),delete i[b.id],delete r[b.id]}function p(){for(const E in i)s.deleteBuffer(i[E]);a=[],i={},r={}}return{bind:l,update:c,dispose:p}}class vg{constructor(e={}){const{canvas:t=ff(),context:n=null,depth:i=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:d=!1,reverseDepthBuffer:u=!1}=e;this.isWebGLRenderer=!0;let f;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");f=n.getContextAttributes().alpha}else f=a;const m=new Uint32Array(4),_=new Int32Array(4);let g=null,p=null;const E=[],b=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=Oi,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const M=this;let U=!1;this._outputColorSpace=$t;let C=0,P=0,D=null,S=-1,y=null;const N=new Ht,W=new Ht;let X=null;const Q=new _t(0);let ne=0,G=t.width,re=t.height,Z=1,me=null,Ee=null;const Ce=new Ht(0,0,G,re),Ne=new Ht(0,0,G,re);let Ve=!1;const K=new Nl;let ae=!1,le=!1;const ce=new At,Le=new At,xe=new I,we=new Ht,st={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Tt=!1;function Mt(){return D===null?Z:1}let O=n;function Gt(w,H){return t.getContext(w,H)}try{const w={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:d};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${yl}`),t.addEventListener("webglcontextlost",z,!1),t.addEventListener("webglcontextrestored",B,!1),t.addEventListener("webglcontextcreationerror",k,!1),O===null){const H="webgl2";if(O=Gt(H,w),O===null)throw Gt(H)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(w){throw console.error("THREE.WebGLRenderer: "+w.message),w}let Lt,Ct,He,mt,We,dt,rn,F,A,ee,fe,ye,he,rt,ze,Qe,at,Me,Ye,vt,gt,Be,St,q;function Xe(){Lt=new C1(O),Lt.init(),Be=new hg(O,Lt),Ct=new M1(O,Lt,e,Be),He=new lg(O,Lt),Ct.reverseDepthBuffer&&u&&He.buffers.depth.setReversed(!0),mt=new P1(O),We=new $2,dt=new cg(O,Lt,He,We,Ct,Be,mt),rn=new b1(M),F=new T1(M),A=new Op(O),St=new x1(O,A),ee=new R1(O,A,mt,St),fe=new U1(O,ee,A,mt),Ye=new D1(O,Ct,dt),Qe=new S1(We),ye=new Y2(M,rn,F,Lt,Ct,St,Qe),he=new gg(M,We),rt=new K2,ze=new ig(Lt),Me=new v1(M,rn,F,He,fe,f,l),at=new ag(M,fe,Ct),q=new _g(O,mt,Ct,He),vt=new y1(O,Lt,mt),gt=new L1(O,Lt,mt),mt.programs=ye.programs,M.capabilities=Ct,M.extensions=Lt,M.properties=We,M.renderLists=rt,M.shadowMap=at,M.state=He,M.info=mt}Xe();const Se=new pg(M,O);this.xr=Se,this.getContext=function(){return O},this.getContextAttributes=function(){return O.getContextAttributes()},this.forceContextLoss=function(){const w=Lt.get("WEBGL_lose_context");w&&w.loseContext()},this.forceContextRestore=function(){const w=Lt.get("WEBGL_lose_context");w&&w.restoreContext()},this.getPixelRatio=function(){return Z},this.setPixelRatio=function(w){w!==void 0&&(Z=w,this.setSize(G,re,!1))},this.getSize=function(w){return w.set(G,re)},this.setSize=function(w,H,$=!0){if(Se.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}G=w,re=H,t.width=Math.floor(w*Z),t.height=Math.floor(H*Z),$===!0&&(t.style.width=w+"px",t.style.height=H+"px"),this.setViewport(0,0,w,H)},this.getDrawingBufferSize=function(w){return w.set(G*Z,re*Z).floor()},this.setDrawingBufferSize=function(w,H,$){G=w,re=H,Z=$,t.width=Math.floor(w*$),t.height=Math.floor(H*$),this.setViewport(0,0,w,H)},this.getCurrentViewport=function(w){return w.copy(N)},this.getViewport=function(w){return w.copy(Ce)},this.setViewport=function(w,H,$,Y){w.isVector4?Ce.set(w.x,w.y,w.z,w.w):Ce.set(w,H,$,Y),He.viewport(N.copy(Ce).multiplyScalar(Z).round())},this.getScissor=function(w){return w.copy(Ne)},this.setScissor=function(w,H,$,Y){w.isVector4?Ne.set(w.x,w.y,w.z,w.w):Ne.set(w,H,$,Y),He.scissor(W.copy(Ne).multiplyScalar(Z).round())},this.getScissorTest=function(){return Ve},this.setScissorTest=function(w){He.setScissorTest(Ve=w)},this.setOpaqueSort=function(w){me=w},this.setTransparentSort=function(w){Ee=w},this.getClearColor=function(w){return w.copy(Me.getClearColor())},this.setClearColor=function(){Me.setClearColor(...arguments)},this.getClearAlpha=function(){return Me.getClearAlpha()},this.setClearAlpha=function(){Me.setClearAlpha(...arguments)},this.clear=function(w=!0,H=!0,$=!0){let Y=0;if(w){let j=!1;if(D!==null){const pe=D.texture.format;j=pe===wl||pe===Al||pe===El}if(j){const pe=D.texture.type,Te=pe===ci||pe===es||pe===ir||pe===sr||pe===Sl||pe===bl,Ge=Me.getClearColor(),Fe=Me.getClearAlpha(),nt=Ge.r,ct=Ge.g,tt=Ge.b;Te?(m[0]=nt,m[1]=ct,m[2]=tt,m[3]=Fe,O.clearBufferuiv(O.COLOR,0,m)):(_[0]=nt,_[1]=ct,_[2]=tt,_[3]=Fe,O.clearBufferiv(O.COLOR,0,_))}else Y|=O.COLOR_BUFFER_BIT}H&&(Y|=O.DEPTH_BUFFER_BIT),$&&(Y|=O.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),O.clear(Y)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",z,!1),t.removeEventListener("webglcontextrestored",B,!1),t.removeEventListener("webglcontextcreationerror",k,!1),Me.dispose(),rt.dispose(),ze.dispose(),We.dispose(),rn.dispose(),F.dispose(),fe.dispose(),St.dispose(),q.dispose(),ye.dispose(),Se.dispose(),Se.removeEventListener("sessionstart",qe),Se.removeEventListener("sessionend",J),Ue.stop()};function z(w){w.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),U=!0}function B(){console.log("THREE.WebGLRenderer: Context Restored."),U=!1;const w=mt.autoReset,H=at.enabled,$=at.autoUpdate,Y=at.needsUpdate,j=at.type;Xe(),mt.autoReset=w,at.enabled=H,at.autoUpdate=$,at.needsUpdate=Y,at.type=j}function k(w){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",w.statusMessage)}function te(w){const H=w.target;H.removeEventListener("dispose",te),se(H)}function se(w){oe(w),We.remove(w)}function oe(w){const H=We.get(w).programs;H!==void 0&&(H.forEach(function($){ye.releaseProgram($)}),w.isShaderMaterial&&ye.releaseShaderCache(w))}this.renderBufferDirect=function(w,H,$,Y,j,pe){H===null&&(H=st);const Te=j.isMesh&&j.matrixWorld.determinant()<0,Ge=Ie(w,H,$,Y,j);He.setMaterial(Y,Te);let Fe=$.index,nt=1;if(Y.wireframe===!0){if(Fe=ee.getWireframeAttribute($),Fe===void 0)return;nt=2}const ct=$.drawRange,tt=$.attributes.position;let Et=ct.start*nt,Dt=(ct.start+ct.count)*nt;pe!==null&&(Et=Math.max(Et,pe.start*nt),Dt=Math.min(Dt,(pe.start+pe.count)*nt)),Fe!==null?(Et=Math.max(Et,0),Dt=Math.min(Dt,Fe.count)):tt!=null&&(Et=Math.max(Et,0),Dt=Math.min(Dt,tt.count));const ve=Dt-Et;if(ve<0||ve===1/0)return;St.setup(j,Y,Ge,$,Fe);let ot,ut=vt;if(Fe!==null&&(ot=A.get(Fe),ut=gt,ut.setIndex(ot)),j.isMesh)Y.wireframe===!0?(He.setLineWidth(Y.wireframeLinewidth*Mt()),ut.setMode(O.LINES)):ut.setMode(O.TRIANGLES);else if(j.isLine){let je=Y.linewidth;je===void 0&&(je=1),He.setLineWidth(je*Mt()),j.isLineSegments?ut.setMode(O.LINES):j.isLineLoop?ut.setMode(O.LINE_LOOP):ut.setMode(O.LINE_STRIP)}else j.isPoints?ut.setMode(O.POINTS):j.isSprite&&ut.setMode(O.TRIANGLES);if(j.isBatchedMesh)if(j._multiDrawInstances!==null)ws("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),ut.renderMultiDrawInstances(j._multiDrawStarts,j._multiDrawCounts,j._multiDrawCount,j._multiDrawInstances);else if(Lt.get("WEBGL_multi_draw"))ut.renderMultiDraw(j._multiDrawStarts,j._multiDrawCounts,j._multiDrawCount);else{const je=j._multiDrawStarts,ln=j._multiDrawCounts,zt=j._multiDrawCount,Ke=Fe?A.get(Fe).bytesPerElement:1,_e=We.get(Y).currentProgram.getUniforms();for(let qt=0;qt<zt;qt++)_e.setValue(O,"_gl_DrawID",qt),ut.render(je[qt]/Ke,ln[qt])}else if(j.isInstancedMesh)ut.renderInstances(Et,ve,j.count);else if($.isInstancedBufferGeometry){const je=$._maxInstanceCount!==void 0?$._maxInstanceCount:1/0,ln=Math.min($.instanceCount,je);ut.renderInstances(Et,ve,ln)}else ut.render(Et,ve)};function ue(w,H,$){w.transparent===!0&&w.side===wn&&w.forceSinglePass===!1?(w.side=Rn,w.needsUpdate=!0,Pt(w,H,$),w.side=Xn,w.needsUpdate=!0,Pt(w,H,$),w.side=wn):Pt(w,H,$)}this.compile=function(w,H,$=null){$===null&&($=w),p=ze.get($),p.init(H),b.push(p),$.traverseVisible(function(j){j.isLight&&j.layers.test(H.layers)&&(p.pushLight(j),j.castShadow&&p.pushShadow(j))}),w!==$&&w.traverseVisible(function(j){j.isLight&&j.layers.test(H.layers)&&(p.pushLight(j),j.castShadow&&p.pushShadow(j))}),p.setupLights();const Y=new Set;return w.traverse(function(j){if(!(j.isMesh||j.isPoints||j.isLine||j.isSprite))return;const pe=j.material;if(pe)if(Array.isArray(pe))for(let Te=0;Te<pe.length;Te++){const Ge=pe[Te];ue(Ge,$,j),Y.add(Ge)}else ue(pe,$,j),Y.add(pe)}),p=b.pop(),Y},this.compileAsync=function(w,H,$=null){const Y=this.compile(w,H,$);return new Promise(j=>{function pe(){if(Y.forEach(function(Te){We.get(Te).currentProgram.isReady()&&Y.delete(Te)}),Y.size===0){j(w);return}setTimeout(pe,10)}Lt.get("KHR_parallel_shader_compile")!==null?pe():setTimeout(pe,10)})};let ge=null;function be(w){ge&&ge(w)}function qe(){Ue.stop()}function J(){Ue.start()}const Ue=new Cu;Ue.setAnimationLoop(be),typeof self<"u"&&Ue.setContext(self),this.setAnimationLoop=function(w){ge=w,Se.setAnimationLoop(w),w===null?Ue.stop():Ue.start()},Se.addEventListener("sessionstart",qe),Se.addEventListener("sessionend",J),this.render=function(w,H){if(H!==void 0&&H.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(U===!0)return;if(w.matrixWorldAutoUpdate===!0&&w.updateMatrixWorld(),H.parent===null&&H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),Se.enabled===!0&&Se.isPresenting===!0&&(Se.cameraAutoUpdate===!0&&Se.updateCamera(H),H=Se.getCamera()),w.isScene===!0&&w.onBeforeRender(M,w,H,D),p=ze.get(w,b.length),p.init(H),b.push(p),Le.multiplyMatrices(H.projectionMatrix,H.matrixWorldInverse),K.setFromProjectionMatrix(Le),le=this.localClippingEnabled,ae=Qe.init(this.clippingPlanes,le),g=rt.get(w,E.length),g.init(),E.push(g),Se.enabled===!0&&Se.isPresenting===!0){const pe=M.xr.getDepthSensingMesh();pe!==null&&wt(pe,H,-1/0,M.sortObjects)}wt(w,H,0,M.sortObjects),g.finish(),M.sortObjects===!0&&g.sort(me,Ee),Tt=Se.enabled===!1||Se.isPresenting===!1||Se.hasDepthSensing()===!1,Tt&&Me.addToRenderList(g,w),this.info.render.frame++,ae===!0&&Qe.beginShadows();const $=p.state.shadowsArray;at.render($,w,H),ae===!0&&Qe.endShadows(),this.info.autoReset===!0&&this.info.reset();const Y=g.opaque,j=g.transmissive;if(p.setupLights(),H.isArrayCamera){const pe=H.cameras;if(j.length>0)for(let Te=0,Ge=pe.length;Te<Ge;Te++){const Fe=pe[Te];Wt(Y,j,w,Fe)}Tt&&Me.render(w);for(let Te=0,Ge=pe.length;Te<Ge;Te++){const Fe=pe[Te];Ut(g,w,Fe,Fe.viewport)}}else j.length>0&&Wt(Y,j,w,H),Tt&&Me.render(w),Ut(g,w,H);D!==null&&P===0&&(dt.updateMultisampleRenderTarget(D),dt.updateRenderTargetMipmap(D)),w.isScene===!0&&w.onAfterRender(M,w,H),St.resetDefaultState(),S=-1,y=null,b.pop(),b.length>0?(p=b[b.length-1],ae===!0&&Qe.setGlobalState(M.clippingPlanes,p.state.camera)):p=null,E.pop(),E.length>0?g=E[E.length-1]:g=null};function wt(w,H,$,Y){if(w.visible===!1)return;if(w.layers.test(H.layers)){if(w.isGroup)$=w.renderOrder;else if(w.isLOD)w.autoUpdate===!0&&w.update(H);else if(w.isLight)p.pushLight(w),w.castShadow&&p.pushShadow(w);else if(w.isSprite){if(!w.frustumCulled||K.intersectsSprite(w)){Y&&we.setFromMatrixPosition(w.matrixWorld).applyMatrix4(Le);const Te=fe.update(w),Ge=w.material;Ge.visible&&g.push(w,Te,Ge,$,we.z,null)}}else if((w.isMesh||w.isLine||w.isPoints)&&(!w.frustumCulled||K.intersectsObject(w))){const Te=fe.update(w),Ge=w.material;if(Y&&(w.boundingSphere!==void 0?(w.boundingSphere===null&&w.computeBoundingSphere(),we.copy(w.boundingSphere.center)):(Te.boundingSphere===null&&Te.computeBoundingSphere(),we.copy(Te.boundingSphere.center)),we.applyMatrix4(w.matrixWorld).applyMatrix4(Le)),Array.isArray(Ge)){const Fe=Te.groups;for(let nt=0,ct=Fe.length;nt<ct;nt++){const tt=Fe[nt],Et=Ge[tt.materialIndex];Et&&Et.visible&&g.push(w,Te,Et,$,we.z,tt)}}else Ge.visible&&g.push(w,Te,Ge,$,we.z,null)}}const pe=w.children;for(let Te=0,Ge=pe.length;Te<Ge;Te++)wt(pe[Te],H,$,Y)}function Ut(w,H,$,Y){const j=w.opaque,pe=w.transmissive,Te=w.transparent;p.setupLightsView($),ae===!0&&Qe.setGlobalState(M.clippingPlanes,$),Y&&He.viewport(N.copy(Y)),j.length>0&&Zt(j,H,$),pe.length>0&&Zt(pe,H,$),Te.length>0&&Zt(Te,H,$),He.buffers.depth.setTest(!0),He.buffers.depth.setMask(!0),He.buffers.color.setMask(!0),He.setPolygonOffset(!1)}function Wt(w,H,$,Y){if(($.isScene===!0?$.overrideMaterial:null)!==null)return;p.state.transmissionRenderTarget[Y.id]===void 0&&(p.state.transmissionRenderTarget[Y.id]=new ts(1,1,{generateMipmaps:!0,type:Lt.has("EXT_color_buffer_half_float")||Lt.has("EXT_color_buffer_float")?cr:ci,minFilter:xi,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Vt.workingColorSpace}));const pe=p.state.transmissionRenderTarget[Y.id],Te=Y.viewport||N;pe.setSize(Te.z*M.transmissionResolutionScale,Te.w*M.transmissionResolutionScale);const Ge=M.getRenderTarget();M.setRenderTarget(pe),M.getClearColor(Q),ne=M.getClearAlpha(),ne<1&&M.setClearColor(16777215,.5),M.clear(),Tt&&Me.render($);const Fe=M.toneMapping;M.toneMapping=Oi;const nt=Y.viewport;if(Y.viewport!==void 0&&(Y.viewport=void 0),p.setupLightsView(Y),ae===!0&&Qe.setGlobalState(M.clippingPlanes,Y),Zt(w,$,Y),dt.updateMultisampleRenderTarget(pe),dt.updateRenderTargetMipmap(pe),Lt.has("WEBGL_multisampled_render_to_texture")===!1){let ct=!1;for(let tt=0,Et=H.length;tt<Et;tt++){const Dt=H[tt],ve=Dt.object,ot=Dt.geometry,ut=Dt.material,je=Dt.group;if(ut.side===wn&&ve.layers.test(Y.layers)){const ln=ut.side;ut.side=Rn,ut.needsUpdate=!0,ft(ve,$,Y,ot,ut,je),ut.side=ln,ut.needsUpdate=!0,ct=!0}}ct===!0&&(dt.updateMultisampleRenderTarget(pe),dt.updateRenderTargetMipmap(pe))}M.setRenderTarget(Ge),M.setClearColor(Q,ne),nt!==void 0&&(Y.viewport=nt),M.toneMapping=Fe}function Zt(w,H,$){const Y=H.isScene===!0?H.overrideMaterial:null;for(let j=0,pe=w.length;j<pe;j++){const Te=w[j],Ge=Te.object,Fe=Te.geometry,nt=Te.group;let ct=Te.material;ct.allowOverride===!0&&Y!==null&&(ct=Y),Ge.layers.test($.layers)&&ft(Ge,H,$,Fe,ct,nt)}}function ft(w,H,$,Y,j,pe){w.onBeforeRender(M,H,$,Y,j,pe),w.modelViewMatrix.multiplyMatrices($.matrixWorldInverse,w.matrixWorld),w.normalMatrix.getNormalMatrix(w.modelViewMatrix),j.onBeforeRender(M,H,$,Y,w,pe),j.transparent===!0&&j.side===wn&&j.forceSinglePass===!1?(j.side=Rn,j.needsUpdate=!0,M.renderBufferDirect($,H,Y,j,w,pe),j.side=Xn,j.needsUpdate=!0,M.renderBufferDirect($,H,Y,j,w,pe),j.side=wn):M.renderBufferDirect($,H,Y,j,w,pe),w.onAfterRender(M,H,$,Y,j,pe)}function Pt(w,H,$){H.isScene!==!0&&(H=st);const Y=We.get(w),j=p.state.lights,pe=p.state.shadowsArray,Te=j.state.version,Ge=ye.getParameters(w,j.state,pe,H,$),Fe=ye.getProgramCacheKey(Ge);let nt=Y.programs;Y.environment=w.isMeshStandardMaterial?H.environment:null,Y.fog=H.fog,Y.envMap=(w.isMeshStandardMaterial?F:rn).get(w.envMap||Y.environment),Y.envMapRotation=Y.environment!==null&&w.envMap===null?H.environmentRotation:w.envMapRotation,nt===void 0&&(w.addEventListener("dispose",te),nt=new Map,Y.programs=nt);let ct=nt.get(Fe);if(ct!==void 0){if(Y.currentProgram===ct&&Y.lightsStateVersion===Te)return Xt(w,Ge),ct}else Ge.uniforms=ye.getUniforms(w),w.onBeforeCompile(Ge,M),ct=ye.acquireProgram(Ge,Fe),nt.set(Fe,ct),Y.uniforms=Ge.uniforms;const tt=Y.uniforms;return(!w.isShaderMaterial&&!w.isRawShaderMaterial||w.clipping===!0)&&(tt.clippingPlanes=Qe.uniform),Xt(w,Ge),Y.needsLights=Pe(w),Y.lightsStateVersion=Te,Y.needsLights&&(tt.ambientLightColor.value=j.state.ambient,tt.lightProbe.value=j.state.probe,tt.directionalLights.value=j.state.directional,tt.directionalLightShadows.value=j.state.directionalShadow,tt.spotLights.value=j.state.spot,tt.spotLightShadows.value=j.state.spotShadow,tt.rectAreaLights.value=j.state.rectArea,tt.ltc_1.value=j.state.rectAreaLTC1,tt.ltc_2.value=j.state.rectAreaLTC2,tt.pointLights.value=j.state.point,tt.pointLightShadows.value=j.state.pointShadow,tt.hemisphereLights.value=j.state.hemi,tt.directionalShadowMap.value=j.state.directionalShadowMap,tt.directionalShadowMatrix.value=j.state.directionalShadowMatrix,tt.spotShadowMap.value=j.state.spotShadowMap,tt.spotLightMatrix.value=j.state.spotLightMatrix,tt.spotLightMap.value=j.state.spotLightMap,tt.pointShadowMap.value=j.state.pointShadowMap,tt.pointShadowMatrix.value=j.state.pointShadowMatrix),Y.currentProgram=ct,Y.uniformsList=null,ct}function Re(w){if(w.uniformsList===null){const H=w.currentProgram.getUniforms();w.uniformsList=aa.seqWithValue(H.seq,w.uniforms)}return w.uniformsList}function Xt(w,H){const $=We.get(w);$.outputColorSpace=H.outputColorSpace,$.batching=H.batching,$.batchingColor=H.batchingColor,$.instancing=H.instancing,$.instancingColor=H.instancingColor,$.instancingMorph=H.instancingMorph,$.skinning=H.skinning,$.morphTargets=H.morphTargets,$.morphNormals=H.morphNormals,$.morphColors=H.morphColors,$.morphTargetsCount=H.morphTargetsCount,$.numClippingPlanes=H.numClippingPlanes,$.numIntersection=H.numClipIntersection,$.vertexAlphas=H.vertexAlphas,$.vertexTangents=H.vertexTangents,$.toneMapping=H.toneMapping}function Ie(w,H,$,Y,j){H.isScene!==!0&&(H=st),dt.resetTextureUnits();const pe=H.fog,Te=Y.isMeshStandardMaterial?H.environment:null,Ge=D===null?M.outputColorSpace:D.isXRRenderTarget===!0?D.texture.colorSpace:Ds,Fe=(Y.isMeshStandardMaterial?F:rn).get(Y.envMap||Te),nt=Y.vertexColors===!0&&!!$.attributes.color&&$.attributes.color.itemSize===4,ct=!!$.attributes.tangent&&(!!Y.normalMap||Y.anisotropy>0),tt=!!$.morphAttributes.position,Et=!!$.morphAttributes.normal,Dt=!!$.morphAttributes.color;let ve=Oi;Y.toneMapped&&(D===null||D.isXRRenderTarget===!0)&&(ve=M.toneMapping);const ot=$.morphAttributes.position||$.morphAttributes.normal||$.morphAttributes.color,ut=ot!==void 0?ot.length:0,je=We.get(Y),ln=p.state.lights;if(ae===!0&&(le===!0||w!==y)){const cn=w===y&&Y.id===S;Qe.setState(Y,w,cn)}let zt=!1;Y.version===je.__version?(je.needsLights&&je.lightsStateVersion!==ln.state.version||je.outputColorSpace!==Ge||j.isBatchedMesh&&je.batching===!1||!j.isBatchedMesh&&je.batching===!0||j.isBatchedMesh&&je.batchingColor===!0&&j.colorTexture===null||j.isBatchedMesh&&je.batchingColor===!1&&j.colorTexture!==null||j.isInstancedMesh&&je.instancing===!1||!j.isInstancedMesh&&je.instancing===!0||j.isSkinnedMesh&&je.skinning===!1||!j.isSkinnedMesh&&je.skinning===!0||j.isInstancedMesh&&je.instancingColor===!0&&j.instanceColor===null||j.isInstancedMesh&&je.instancingColor===!1&&j.instanceColor!==null||j.isInstancedMesh&&je.instancingMorph===!0&&j.morphTexture===null||j.isInstancedMesh&&je.instancingMorph===!1&&j.morphTexture!==null||je.envMap!==Fe||Y.fog===!0&&je.fog!==pe||je.numClippingPlanes!==void 0&&(je.numClippingPlanes!==Qe.numPlanes||je.numIntersection!==Qe.numIntersection)||je.vertexAlphas!==nt||je.vertexTangents!==ct||je.morphTargets!==tt||je.morphNormals!==Et||je.morphColors!==Dt||je.toneMapping!==ve||je.morphTargetsCount!==ut)&&(zt=!0):(zt=!0,je.__version=Y.version);let Ke=je.currentProgram;zt===!0&&(Ke=Pt(Y,H,j));let _e=!1,qt=!1,_n=!1;const It=Ke.getUniforms(),sn=je.uniforms;if(He.useProgram(Ke.program)&&(_e=!0,qt=!0,_n=!0),Y.id!==S&&(S=Y.id,qt=!0),_e||y!==w){He.buffers.depth.getReversed()?(ce.copy(w.projectionMatrix),mf(ce),gf(ce),It.setValue(O,"projectionMatrix",ce)):It.setValue(O,"projectionMatrix",w.projectionMatrix),It.setValue(O,"viewMatrix",w.matrixWorldInverse);const un=It.map.cameraPosition;un!==void 0&&un.setValue(O,xe.setFromMatrixPosition(w.matrixWorld)),Ct.logarithmicDepthBuffer&&It.setValue(O,"logDepthBufFC",2/(Math.log(w.far+1)/Math.LN2)),(Y.isMeshPhongMaterial||Y.isMeshToonMaterial||Y.isMeshLambertMaterial||Y.isMeshBasicMaterial||Y.isMeshStandardMaterial||Y.isShaderMaterial)&&It.setValue(O,"isOrthographic",w.isOrthographicCamera===!0),y!==w&&(y=w,qt=!0,_n=!0)}if(j.isSkinnedMesh){It.setOptional(O,j,"bindMatrix"),It.setOptional(O,j,"bindMatrixInverse");const cn=j.skeleton;cn&&(cn.boneTexture===null&&cn.computeBoneTexture(),It.setValue(O,"boneTexture",cn.boneTexture,dt))}j.isBatchedMesh&&(It.setOptional(O,j,"batchingTexture"),It.setValue(O,"batchingTexture",j._matricesTexture,dt),It.setOptional(O,j,"batchingIdTexture"),It.setValue(O,"batchingIdTexture",j._indirectTexture,dt),It.setOptional(O,j,"batchingColorTexture"),j._colorsTexture!==null&&It.setValue(O,"batchingColorTexture",j._colorsTexture,dt));const an=$.morphAttributes;if((an.position!==void 0||an.normal!==void 0||an.color!==void 0)&&Ye.update(j,$,Ke),(qt||je.receiveShadow!==j.receiveShadow)&&(je.receiveShadow=j.receiveShadow,It.setValue(O,"receiveShadow",j.receiveShadow)),Y.isMeshGouraudMaterial&&Y.envMap!==null&&(sn.envMap.value=Fe,sn.flipEnvMap.value=Fe.isCubeTexture&&Fe.isRenderTargetTexture===!1?-1:1),Y.isMeshStandardMaterial&&Y.envMap===null&&H.environment!==null&&(sn.envMapIntensity.value=H.environmentIntensity),qt&&(It.setValue(O,"toneMappingExposure",M.toneMappingExposure),je.needsLights&&Rt(sn,_n),pe&&Y.fog===!0&&he.refreshFogUniforms(sn,pe),he.refreshMaterialUniforms(sn,Y,Z,re,p.state.transmissionRenderTarget[w.id]),aa.upload(O,Re(je),sn,dt)),Y.isShaderMaterial&&Y.uniformsNeedUpdate===!0&&(aa.upload(O,Re(je),sn,dt),Y.uniformsNeedUpdate=!1),Y.isSpriteMaterial&&It.setValue(O,"center",j.center),It.setValue(O,"modelViewMatrix",j.modelViewMatrix),It.setValue(O,"normalMatrix",j.normalMatrix),It.setValue(O,"modelMatrix",j.matrixWorld),Y.isShaderMaterial||Y.isRawShaderMaterial){const cn=Y.uniformsGroups;for(let un=0,hi=cn.length;un<hi;un++){const kn=cn[un];q.update(kn,Ke),q.bind(kn,Ke)}}return Ke}function Rt(w,H){w.ambientLightColor.needsUpdate=H,w.lightProbe.needsUpdate=H,w.directionalLights.needsUpdate=H,w.directionalLightShadows.needsUpdate=H,w.pointLights.needsUpdate=H,w.pointLightShadows.needsUpdate=H,w.spotLights.needsUpdate=H,w.spotLightShadows.needsUpdate=H,w.rectAreaLights.needsUpdate=H,w.hemisphereLights.needsUpdate=H}function Pe(w){return w.isMeshLambertMaterial||w.isMeshToonMaterial||w.isMeshPhongMaterial||w.isMeshStandardMaterial||w.isShadowMaterial||w.isShaderMaterial&&w.lights===!0}this.getActiveCubeFace=function(){return C},this.getActiveMipmapLevel=function(){return P},this.getRenderTarget=function(){return D},this.setRenderTargetTextures=function(w,H,$){const Y=We.get(w);Y.__autoAllocateDepthBuffer=w.resolveDepthBuffer===!1,Y.__autoAllocateDepthBuffer===!1&&(Y.__useRenderToTexture=!1),We.get(w.texture).__webglTexture=H,We.get(w.depthTexture).__webglTexture=Y.__autoAllocateDepthBuffer?void 0:$,Y.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(w,H){const $=We.get(w);$.__webglFramebuffer=H,$.__useDefaultFramebuffer=H===void 0};const kt=O.createFramebuffer();this.setRenderTarget=function(w,H=0,$=0){D=w,C=H,P=$;let Y=!0,j=null,pe=!1,Te=!1;if(w){const Fe=We.get(w);if(Fe.__useDefaultFramebuffer!==void 0)He.bindFramebuffer(O.FRAMEBUFFER,null),Y=!1;else if(Fe.__webglFramebuffer===void 0)dt.setupRenderTarget(w);else if(Fe.__hasExternalTextures)dt.rebindTextures(w,We.get(w.texture).__webglTexture,We.get(w.depthTexture).__webglTexture);else if(w.depthBuffer){const tt=w.depthTexture;if(Fe.__boundDepthTexture!==tt){if(tt!==null&&We.has(tt)&&(w.width!==tt.image.width||w.height!==tt.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");dt.setupDepthRenderbuffer(w)}}const nt=w.texture;(nt.isData3DTexture||nt.isDataArrayTexture||nt.isCompressedArrayTexture)&&(Te=!0);const ct=We.get(w).__webglFramebuffer;w.isWebGLCubeRenderTarget?(Array.isArray(ct[H])?j=ct[H][$]:j=ct[H],pe=!0):w.samples>0&&dt.useMultisampledRTT(w)===!1?j=We.get(w).__webglMultisampledFramebuffer:Array.isArray(ct)?j=ct[$]:j=ct,N.copy(w.viewport),W.copy(w.scissor),X=w.scissorTest}else N.copy(Ce).multiplyScalar(Z).floor(),W.copy(Ne).multiplyScalar(Z).floor(),X=Ve;if($!==0&&(j=kt),He.bindFramebuffer(O.FRAMEBUFFER,j)&&Y&&He.drawBuffers(w,j),He.viewport(N),He.scissor(W),He.setScissorTest(X),pe){const Fe=We.get(w.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_CUBE_MAP_POSITIVE_X+H,Fe.__webglTexture,$)}else if(Te){const Fe=We.get(w.texture),nt=H;O.framebufferTextureLayer(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,Fe.__webglTexture,$,nt)}else if(w!==null&&$!==0){const Fe=We.get(w.texture);O.framebufferTexture2D(O.FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,Fe.__webglTexture,$)}S=-1},this.readRenderTargetPixels=function(w,H,$,Y,j,pe,Te,Ge=0){if(!(w&&w.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Fe=We.get(w).__webglFramebuffer;if(w.isWebGLCubeRenderTarget&&Te!==void 0&&(Fe=Fe[Te]),Fe){He.bindFramebuffer(O.FRAMEBUFFER,Fe);try{const nt=w.textures[Ge],ct=nt.format,tt=nt.type;if(!Ct.textureFormatReadable(ct)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Ct.textureTypeReadable(tt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}H>=0&&H<=w.width-Y&&$>=0&&$<=w.height-j&&(w.textures.length>1&&O.readBuffer(O.COLOR_ATTACHMENT0+Ge),O.readPixels(H,$,Y,j,Be.convert(ct),Be.convert(tt),pe))}finally{const nt=D!==null?We.get(D).__webglFramebuffer:null;He.bindFramebuffer(O.FRAMEBUFFER,nt)}}},this.readRenderTargetPixelsAsync=async function(w,H,$,Y,j,pe,Te,Ge=0){if(!(w&&w.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Fe=We.get(w).__webglFramebuffer;if(w.isWebGLCubeRenderTarget&&Te!==void 0&&(Fe=Fe[Te]),Fe)if(H>=0&&H<=w.width-Y&&$>=0&&$<=w.height-j){He.bindFramebuffer(O.FRAMEBUFFER,Fe);const nt=w.textures[Ge],ct=nt.format,tt=nt.type;if(!Ct.textureFormatReadable(ct))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ct.textureTypeReadable(tt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Et=O.createBuffer();O.bindBuffer(O.PIXEL_PACK_BUFFER,Et),O.bufferData(O.PIXEL_PACK_BUFFER,pe.byteLength,O.STREAM_READ),w.textures.length>1&&O.readBuffer(O.COLOR_ATTACHMENT0+Ge),O.readPixels(H,$,Y,j,Be.convert(ct),Be.convert(tt),0);const Dt=D!==null?We.get(D).__webglFramebuffer:null;He.bindFramebuffer(O.FRAMEBUFFER,Dt);const ve=O.fenceSync(O.SYNC_GPU_COMMANDS_COMPLETE,0);return O.flush(),await pf(O,ve,4),O.bindBuffer(O.PIXEL_PACK_BUFFER,Et),O.getBufferSubData(O.PIXEL_PACK_BUFFER,0,pe),O.deleteBuffer(Et),O.deleteSync(ve),pe}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(w,H=null,$=0){const Y=Math.pow(2,-$),j=Math.floor(w.image.width*Y),pe=Math.floor(w.image.height*Y),Te=H!==null?H.x:0,Ge=H!==null?H.y:0;dt.setTexture2D(w,0),O.copyTexSubImage2D(O.TEXTURE_2D,$,0,0,Te,Ge,j,pe),He.unbindTexture()};const Je=O.createFramebuffer(),bt=O.createFramebuffer();this.copyTextureToTexture=function(w,H,$=null,Y=null,j=0,pe=null){pe===null&&(j!==0?(ws("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),pe=j,j=0):pe=0);let Te,Ge,Fe,nt,ct,tt,Et,Dt,ve;const ot=w.isCompressedTexture?w.mipmaps[pe]:w.image;if($!==null)Te=$.max.x-$.min.x,Ge=$.max.y-$.min.y,Fe=$.isBox3?$.max.z-$.min.z:1,nt=$.min.x,ct=$.min.y,tt=$.isBox3?$.min.z:0;else{const an=Math.pow(2,-j);Te=Math.floor(ot.width*an),Ge=Math.floor(ot.height*an),w.isDataArrayTexture?Fe=ot.depth:w.isData3DTexture?Fe=Math.floor(ot.depth*an):Fe=1,nt=0,ct=0,tt=0}Y!==null?(Et=Y.x,Dt=Y.y,ve=Y.z):(Et=0,Dt=0,ve=0);const ut=Be.convert(H.format),je=Be.convert(H.type);let ln;H.isData3DTexture?(dt.setTexture3D(H,0),ln=O.TEXTURE_3D):H.isDataArrayTexture||H.isCompressedArrayTexture?(dt.setTexture2DArray(H,0),ln=O.TEXTURE_2D_ARRAY):(dt.setTexture2D(H,0),ln=O.TEXTURE_2D),O.pixelStorei(O.UNPACK_FLIP_Y_WEBGL,H.flipY),O.pixelStorei(O.UNPACK_PREMULTIPLY_ALPHA_WEBGL,H.premultiplyAlpha),O.pixelStorei(O.UNPACK_ALIGNMENT,H.unpackAlignment);const zt=O.getParameter(O.UNPACK_ROW_LENGTH),Ke=O.getParameter(O.UNPACK_IMAGE_HEIGHT),_e=O.getParameter(O.UNPACK_SKIP_PIXELS),qt=O.getParameter(O.UNPACK_SKIP_ROWS),_n=O.getParameter(O.UNPACK_SKIP_IMAGES);O.pixelStorei(O.UNPACK_ROW_LENGTH,ot.width),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,ot.height),O.pixelStorei(O.UNPACK_SKIP_PIXELS,nt),O.pixelStorei(O.UNPACK_SKIP_ROWS,ct),O.pixelStorei(O.UNPACK_SKIP_IMAGES,tt);const It=w.isDataArrayTexture||w.isData3DTexture,sn=H.isDataArrayTexture||H.isData3DTexture;if(w.isDepthTexture){const an=We.get(w),cn=We.get(H),un=We.get(an.__renderTarget),hi=We.get(cn.__renderTarget);He.bindFramebuffer(O.READ_FRAMEBUFFER,un.__webglFramebuffer),He.bindFramebuffer(O.DRAW_FRAMEBUFFER,hi.__webglFramebuffer);for(let kn=0;kn<Fe;kn++)It&&(O.framebufferTextureLayer(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,We.get(w).__webglTexture,j,tt+kn),O.framebufferTextureLayer(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,We.get(H).__webglTexture,pe,ve+kn)),O.blitFramebuffer(nt,ct,Te,Ge,Et,Dt,Te,Ge,O.DEPTH_BUFFER_BIT,O.NEAREST);He.bindFramebuffer(O.READ_FRAMEBUFFER,null),He.bindFramebuffer(O.DRAW_FRAMEBUFFER,null)}else if(j!==0||w.isRenderTargetTexture||We.has(w)){const an=We.get(w),cn=We.get(H);He.bindFramebuffer(O.READ_FRAMEBUFFER,Je),He.bindFramebuffer(O.DRAW_FRAMEBUFFER,bt);for(let un=0;un<Fe;un++)It?O.framebufferTextureLayer(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,an.__webglTexture,j,tt+un):O.framebufferTexture2D(O.READ_FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,an.__webglTexture,j),sn?O.framebufferTextureLayer(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,cn.__webglTexture,pe,ve+un):O.framebufferTexture2D(O.DRAW_FRAMEBUFFER,O.COLOR_ATTACHMENT0,O.TEXTURE_2D,cn.__webglTexture,pe),j!==0?O.blitFramebuffer(nt,ct,Te,Ge,Et,Dt,Te,Ge,O.COLOR_BUFFER_BIT,O.NEAREST):sn?O.copyTexSubImage3D(ln,pe,Et,Dt,ve+un,nt,ct,Te,Ge):O.copyTexSubImage2D(ln,pe,Et,Dt,nt,ct,Te,Ge);He.bindFramebuffer(O.READ_FRAMEBUFFER,null),He.bindFramebuffer(O.DRAW_FRAMEBUFFER,null)}else sn?w.isDataTexture||w.isData3DTexture?O.texSubImage3D(ln,pe,Et,Dt,ve,Te,Ge,Fe,ut,je,ot.data):H.isCompressedArrayTexture?O.compressedTexSubImage3D(ln,pe,Et,Dt,ve,Te,Ge,Fe,ut,ot.data):O.texSubImage3D(ln,pe,Et,Dt,ve,Te,Ge,Fe,ut,je,ot):w.isDataTexture?O.texSubImage2D(O.TEXTURE_2D,pe,Et,Dt,Te,Ge,ut,je,ot.data):w.isCompressedTexture?O.compressedTexSubImage2D(O.TEXTURE_2D,pe,Et,Dt,ot.width,ot.height,ut,ot.data):O.texSubImage2D(O.TEXTURE_2D,pe,Et,Dt,Te,Ge,ut,je,ot);O.pixelStorei(O.UNPACK_ROW_LENGTH,zt),O.pixelStorei(O.UNPACK_IMAGE_HEIGHT,Ke),O.pixelStorei(O.UNPACK_SKIP_PIXELS,_e),O.pixelStorei(O.UNPACK_SKIP_ROWS,qt),O.pixelStorei(O.UNPACK_SKIP_IMAGES,_n),pe===0&&H.generateMipmaps&&O.generateMipmap(ln),He.unbindTexture()},this.copyTextureToTexture3D=function(w,H,$=null,Y=null,j=0){return ws('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(w,H,$,Y,j)},this.initRenderTarget=function(w){We.get(w).__webglFramebuffer===void 0&&dt.setupRenderTarget(w)},this.initTexture=function(w){w.isCubeTexture?dt.setTextureCube(w,0):w.isData3DTexture?dt.setTexture3D(w,0):w.isDataArrayTexture||w.isCompressedArrayTexture?dt.setTexture2DArray(w,0):dt.setTexture2D(w,0),He.unbindTexture()},this.resetState=function(){C=0,P=0,D=null,He.reset(),St.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return yi}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Vt._getDrawingBufferColorSpace(e),t.unpackColorSpace=Vt._getUnpackColorSpace()}}var xg=Object.defineProperty,yg=(s,e,t)=>e in s?xg(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Kt=(s,e,t)=>yg(s,typeof e!="symbol"?e+"":e,t);const Uu=(s,e)=>{const[t,n]=e.split("-");return Object.assign(s.style,{left:n==="left"?"0":n==="center"?"50%":"",right:n==="right"?"0":"",top:t==="top"?"0":t==="bottom"?"":"50%",bottom:t==="bottom"?"0":"",transform:`${n==="center"?"translateX(-50%)":""} ${t==="center"?"translateY(-50%)":""}`}),e},Mg=({placement:s,size:e,offset:t,id:n,className:i})=>{const r=document.createElement("div"),{top:a,left:o,right:l,bottom:c}=t;return Object.assign(r.style,{id:n,position:"absolute",zIndex:"1000",height:`${e}px`,width:`${e}px`,margin:`${a}px ${l}px ${c}px ${o}px`,borderRadius:"100%"}),Uu(r,s),n&&(r.id=n),i&&(r.className=i),r},Sg=s=>{const e=typeof s=="string"?document.querySelector(s):s;if(!e)throw Error("Invalid DOM element");return e};function dl(s,e,t){return Math.max(e,Math.min(t,s))}const bg=[["x",0,3],["y",1,4],["z",2,5]],vh=new I;function xh({isSphere:s},e,t){s&&(vh.set(0,0,1).applyQuaternion(t.quaternion),bg.forEach(([n,i,r])=>{const a=vh[n];let o=e[i],l=o.userData.opacity;o.material.opacity=dl(a>=0?l:l/2,0,1),o=e[r],l=o.userData.opacity,o.material.opacity=dl(a>=0?l/2:l,0,1)}))}const Eg=(s,e,t=10)=>Math.abs(s.clientX-e.x)<t&&Math.abs(s.clientY-e.y)<t,yh=new Dp,Mh=new Ze,Sh=(s,e,t,n)=>{Mh.set((s.clientX-e.left)/e.width*2-1,-((s.clientY-e.top)/e.height)*2+1),yh.setFromCamera(Mh,t);const i=yh.intersectObjects(n,!1),r=i.length?i[0]:null;return!r||!r.object.visible?null:r},mo=1e-6,Ag=2*Math.PI,Nu=["x","y","z"],lr=[...Nu,"nx","ny","nz"],wg=["x","z","y","nx","nz","ny"],Tg=["z","x","y","nz","nx","ny"],fl="Right",oa="Top",pl="Front",ml="Left",la="Bottom",gl="Back",Cg=[fl,oa,pl,ml,la,gl].map(s=>s.toLocaleLowerCase()),Iu=1.3,bh=(s,e=!0)=>{const{material:t,userData:n}=s,{color:i,opacity:r}=e?n.hover:n;t.color.set(i),t.opacity=r},ji=s=>JSON.parse(JSON.stringify(s)),Rg=s=>{const e=s.type||"sphere",t=e==="sphere",n=s.resolution||t?64:128,i=nn.DEFAULT_UP,r=i.z===1,a=i.x===1,{container:o}=s;s.container=void 0,s=JSON.parse(JSON.stringify(s)),s.container=o;const l=r?wg:a?Tg:lr;Cg.forEach((u,f)=>{s[u]&&(s[l[f]]=s[u])});const c={enabled:!0,color:16777215,opacity:1,scale:.7,labelColor:2236962,line:!1,border:{size:0,color:14540253},hover:{color:t?16777215:9688043,labelColor:2236962,opacity:1,scale:.7,border:{size:0,color:14540253}}},h={line:!1,scale:t?.45:.7,hover:{scale:t?.5:.7}},d={type:e,container:document.body,size:128,placement:"top-right",resolution:n,lineWidth:4,radius:t?1:.2,smoothness:18,animated:!0,speed:1,background:{enabled:!0,color:t?16777215:14739180,opacity:t?0:1,hover:{color:t?16777215:14739180,opacity:t?.2:1}},font:{family:"sans-serif",weight:900},offset:{top:10,left:10,bottom:10,right:10},corners:{enabled:!t,color:t?15915362:16777215,opacity:1,scale:t?.15:.2,radius:1,smoothness:18,hover:{color:t?16777215:9688043,opacity:1,scale:t?.2:.225}},edges:{enabled:!t,color:t?15915362:16777215,opacity:t?1:0,radius:t?1:.125,smoothness:18,scale:t?.15:1,hover:{color:t?16777215:9688043,opacity:1,scale:t?.2:1}},x:{...ji(c),...t?{label:"X",color:16725587,line:!0}:{label:a?oa:fl}},y:{...ji(c),...t?{label:"Y",color:9100032,line:!0}:{label:r||a?pl:oa}},z:{...ji(c),...t?{label:"Z",color:2920447,line:!0}:{label:r?oa:a?fl:pl}},nx:{...ji(h),label:t?"":a?la:ml},ny:{...ji(h),label:t?"":r||a?gl:la},nz:{...ji(h),label:t?"":r?la:a?ml:gl}};return _l(s,d),Nu.forEach(u=>_l(s[`n${u}`],ji(s[u]))),{...s,isSphere:t}};function _l(s,...e){if(s instanceof HTMLElement||typeof s!="object"||s===null)return s;for(const t of e)for(const n in t)n!=="container"&&n in t&&(s[n]===void 0?s[n]=t[n]:typeof t[n]=="object"&&!Array.isArray(t[n])&&(s[n]=_l(s[n]||{},t[n])));return s}const Lg=(s,e=2)=>{const t=new _t,n=e*2,{isSphere:i,resolution:r,radius:a,font:o,corners:l,edges:c}=s,h=lr.map(P=>({...s[P],radius:a}));i&&l.enabled&&h.push(l),i&&c.enabled&&h.push(c);const d=document.createElement("canvas"),u=d.getContext("2d");d.width=r*2+n*2,d.height=r*h.length+n*h.length;const[f,m]=U(h,r,o);h.forEach(({radius:P,label:D,color:S,labelColor:y,border:N,hover:{color:W,labelColor:X,border:Q}},ne)=>{const G=r*ne+ne*n+e;M(e,G,e,r,P,D,N,S,y),M(r+e*3,G,e,r,P,D,Q??N,W??S,X??y)});const _=h.length,g=e/(r*2),p=e/(r*6),E=1/_,b=new qf(d);return b.repeat.set(.5-2*g,E-2*p),b.offset.set(g,1-p),Object.assign(b,{colorSpace:$t,wrapS:ai,wrapT:ai,userData:{offsetX:g,offsetY:p,cellHeight:E}}),b;function M(P,D,S,y,N,W,X,Q,ne){if(N=N*(y/2),Q!=null&&Q!==""&&(G(),u.fillStyle=t.set(Q).getStyle(),u.fill()),X&&X.size){const re=X.size*y/2;P+=re,D+=re,y-=X.size*y,N=Math.max(0,N-re),G(),u.strokeStyle=t.set(X.color).getStyle(),u.lineWidth=X.size*y,u.stroke()}W&&C(u,P+y/2,D+(y+S)/2,W,t.set(ne).getStyle());function G(){u.beginPath(),u.moveTo(P+N,D),u.lineTo(P+y-N,D),u.arcTo(P+y,D,P+y,D+N,N),u.lineTo(P+y,D+y-N),u.arcTo(P+y,D+y,P+y-N,D+y,N),u.lineTo(P+N,D+y),u.arcTo(P,D+y,P,D+y-N,N),u.lineTo(P,D+N),u.arcTo(P,D,P+N,D,N),u.closePath()}}function U(P,D,S){const y=[...P].sort((Ee,Ce)=>{var Ne,Ve;return(((Ne=Ee.label)==null?void 0:Ne.length)||0)-(((Ve=Ce.label)==null?void 0:Ve.length)||0)}).pop().label,{family:N,weight:W}=S,X=i?Math.sqrt(Math.pow(D*.7,2)/2):D;let Q=X,ne=0,G=0;do{u.font=`${W} ${Q}px ${N}`;const Ee=u.measureText(y);ne=Ee.width,G=Ee.fontBoundingBoxDescent,Q--}while(ne>X&&Q>0);const re=X/G,Z=Math.min(X/ne,re),me=Math.floor(Q*Z);return[`${W} ${me}px ${N}`,re]}function C(P,D,S,y,N){P.font=f,P.textAlign="center",P.textBaseline="middle",P.fillStyle=N,P.fillText(y,D,S+(i?m:0))}},Pg=(s,e)=>s.offset.x=(e?.5:0)+s.userData.offsetX,Gl=(s,e)=>{const{offset:t,userData:{offsetY:n,cellHeight:i}}=s;t.y=1-(e+1)*i+n};function Wl(s,e,t=2,n=2){const i=t/2-s,r=n/2-s,a=s/t,o=(t-s)/t,l=s/n,c=(n-s)/n,h=[i,r,0,-i,r,0,-i,-r,0,i,-r,0],d=[o,c,a,c,a,l,o,l],u=[3*(e+1)+3,3*(e+1)+4,e+4,e+5,2*(e+1)+4,2,1,2*(e+1)+3,3,4*(e+1)+3,4,0],f=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11].map(C=>u[C]);let m,_,g,p,E,b,M,U;for(let C=0;C<4;C++){p=C<1||C>2?i:-i,E=C<2?r:-r,b=C<1||C>2?o:a,M=C<2?c:l;for(let P=0;P<=e;P++)m=Math.PI/2*(C+P/e),_=Math.cos(m),g=Math.sin(m),h.push(p+s*_,E+s*g,0),d.push(b+a*_,M+l*g),P<e&&(U=(e+1)*C+P+4,f.push(C,U,U+1))}return new on().setIndex(new dn(new Uint32Array(f),1)).setAttribute("position",new dn(new Float32Array(h),3)).setAttribute("uv",new dn(new Float32Array(d),2))}const Dg=(s,e)=>{const t=new I,{isSphere:n,radius:i,smoothness:r}=s,a=Wl(i,r);return lr.map((o,l)=>{const c=l<3,h=lr[l],d=l?e.clone():e;Gl(d,l);const{enabled:u,scale:f,opacity:m,hover:_}=s[h],g={map:d,opacity:m,transparent:!0},p=n?new Dl(new Sa(g)):new Jt(a,new zi(g)),E=c?h:h[1];return p.position[E]=(c?1:-1)*(n?Iu:1),n||p.lookAt(t.copy(p.position).multiplyScalar(1.7)),p.scale.setScalar(f),p.renderOrder=1,p.visible=u,p.userData={scale:f,opacity:m,hover:_},p})},Ug=(s,e)=>{const{isSphere:t,corners:n}=s;if(!n.enabled)return[];const{color:i,opacity:r,scale:a,radius:o,smoothness:l,hover:c}=n,h=t?null:Wl(o,l),d={transparent:!0,opacity:r},u=[1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1].map(m=>m*.85),f=new I;return Array(u.length/3).fill(0).map((m,_)=>{if(t){const E=e.clone();Gl(E,6),d.map=E}else d.color=i;const g=t?new Dl(new Sa(d)):new Jt(h,new zi(d)),p=_*3;return g.position.set(u[p],u[p+1],u[p+2]),t&&g.position.normalize().multiplyScalar(1.7),g.scale.setScalar(a),g.lookAt(f.copy(g.position).multiplyScalar(2)),g.renderOrder=1,g.userData={color:i,opacity:r,scale:a,hover:c},g})},Ng=(s,e,t)=>{const{isSphere:n,edges:i}=s;if(!i.enabled)return[];const{color:r,opacity:a,scale:o,hover:l,radius:c,smoothness:h}=i,d=n?null:Wl(c,h,1.2,.25),u={transparent:!0,opacity:a},f=[0,1,1,0,-1,1,1,0,1,-1,0,1,0,1,-1,0,-1,-1,1,0,-1,-1,0,-1,1,1,0,1,-1,0,-1,1,0,-1,-1,0].map(g=>g*.925),m=new I,_=new I(0,1,0);return Array(f.length/3).fill(0).map((g,p)=>{if(n){const M=e.clone();Gl(M,t),u.map=M}else u.color=r;const E=n?new Dl(new Sa(u)):new Jt(d,new zi(u)),b=p*3;return E.position.set(f[b],f[b+1],f[b+2]),n&&E.position.normalize().multiplyScalar(1.7),E.scale.setScalar(o),E.up.copy(_),E.lookAt(m.copy(E.position).multiplyScalar(2)),!n&&!E.position.y&&(E.rotation.z=Math.PI/2),E.renderOrder=1,E.userData={color:r,opacity:a,scale:o,hover:l},E})};function Ig(s,e=!1){const t=s[0].index!==null,n=new Set(Object.keys(s[0].attributes)),i=new Set(Object.keys(s[0].morphAttributes)),r={},a={},o=s[0].morphTargetsRelative,l=new on;let c=0;for(let h=0;h<s.length;++h){const d=s[h];let u=0;if(t!==(d.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const f in d.attributes){if(!n.has(f))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.'),null;r[f]===void 0&&(r[f]=[]),r[f].push(d.attributes[f]),u++}if(u!==n.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(o!==d.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const f in d.morphAttributes){if(!i.has(f))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[f]===void 0&&(a[f]=[]),a[f].push(d.morphAttributes[f])}if(e){let f;if(t)f=d.index.count;else if(d.attributes.position!==void 0)f=d.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;l.addGroup(c,f,h),c+=f}}if(t){let h=0;const d=[];for(let u=0;u<s.length;++u){const f=s[u].index;for(let m=0;m<f.count;++m)d.push(f.getX(m)+h);h+=s[u].attributes.position.count}l.setIndex(d)}for(const h in r){const d=Eh(r[h]);if(!d)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" attribute."),null;l.setAttribute(h,d)}for(const h in a){const d=a[h][0].length;if(d===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[h]=[];for(let u=0;u<d;++u){const f=[];for(let _=0;_<a[h].length;++_)f.push(a[h][_][u]);const m=Eh(f);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" morphAttribute."),null;l.morphAttributes[h].push(m)}}return l}function Eh(s){let e,t,n,i=-1,r=0;for(let c=0;c<s.length;++c){const h=s[c];if(e===void 0&&(e=h.array.constructor),e!==h.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=h.itemSize),t!==h.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(n===void 0&&(n=h.normalized),n!==h.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(i===-1&&(i=h.gpuType),i!==h.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;r+=h.count*t}const a=new e(r),o=new dn(a,t,n);let l=0;for(let c=0;c<s.length;++c){const h=s[c];if(h.isInterleavedBufferAttribute){const d=l/t;for(let u=0,f=h.count;u<f;u++)for(let m=0;m<t;m++){const _=h.getComponent(u,m);o.setComponent(u+d,m,_)}}else a.set(h.array,l);l+=h.count*t}return i!==void 0&&(o.gpuType=i),o}const Fg=(s,e)=>{const{isSphere:t,background:{enabled:n,color:i,opacity:r,hover:a}}=e;let o;const l=new zi({color:i,side:Rn,opacity:r,transparent:!0,depthWrite:!1});if(!n)return null;if(t)o=new Jt(new Ea(1.8,64,64),l);else{let c;s.forEach(h=>{const d=h.scale.x;h.scale.setScalar(.9),h.updateMatrix();const u=h.geometry.clone();u.applyMatrix4(h.matrix),c=c?Ig([c,u]):u,h.scale.setScalar(d)}),o=new Jt(c,l)}return o.userData={color:i,opacity:r,hover:a},o},Ah=new ei,qr=new I;class Fu extends Rp{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],t=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],n=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(n),this.setAttribute("position",new Nt(e,3)),this.setAttribute("uv",new Nt(t,2))}applyMatrix4(e){const t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new cl(t,6,1);return this.setAttribute("instanceStart",new li(n,3,0)),this.setAttribute("instanceEnd",new li(n,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new cl(t,6,1);return this.setAttribute("instanceColorStart",new li(n,3,0)),this.setAttribute("instanceColorEnd",new li(n,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new lp(e.geometry)),this}fromLineSegments(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ei);const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;e!==void 0&&t!==void 0&&(this.boundingBox.setFromBufferAttribute(e),Ah.setFromBufferAttribute(t),this.boundingBox.union(Ah))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ei),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){const n=this.boundingSphere.center;this.boundingBox.getCenter(n);let i=0;for(let r=0,a=e.count;r<a;r++)qr.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(qr)),qr.fromBufferAttribute(t,r),i=Math.max(i,n.distanceToSquared(qr));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}ke.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new Ze(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}};Un.line={uniforms:Ll.merge([ke.common,ke.fog,ke.line]),vertexShader:`
|
|
3828
3828
|
#include <common>
|
|
3829
3829
|
#include <color_pars_vertex>
|
|
3830
3830
|
#include <fog_pars_vertex>
|
|
@@ -4194,14 +4194,14 @@ void main() {
|
|
|
4194
4194
|
#include <premultiplied_alpha_fragment>
|
|
4195
4195
|
|
|
4196
4196
|
}
|
|
4197
|
-
`};class Xl extends bi{constructor(e){super({type:"LineMaterial",uniforms:Ll.clone(Un.line.uniforms),vertexShader:Un.line.vertexShader,fragmentShader:Un.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const go=new Ht,wh=new I,Th=new I,xn=new Ht,yn=new Ht,ni=new Ht,_o=new I,vo=new Et,Mn=new Up,Ch=new I,jr=new ei,Yr=new Ei,ii=new Ht;let ri,Qi;function Rh(s,e,t){return ii.set(0,0,-e,1).applyMatrix4(s.projectionMatrix),ii.multiplyScalar(1/ii.w),ii.x=Qi/t.width,ii.y=Qi/t.height,ii.applyMatrix4(s.projectionMatrixInverse),ii.multiplyScalar(1/ii.w),Math.abs(Math.max(ii.x,ii.y))}function Og(s,e){const t=s.matrixWorld,n=s.geometry,i=n.attributes.instanceStart,r=n.attributes.instanceEnd,a=Math.min(n.instanceCount,i.count);for(let o=0,l=a;o<l;o++){Mn.start.fromBufferAttribute(i,o),Mn.end.fromBufferAttribute(r,o),Mn.applyMatrix4(t);const c=new I,h=new I;ri.distanceSqToSegment(Mn.start,Mn.end,h,c),h.distanceTo(c)<Qi*.5&&e.push({point:h,pointOnLine:c,distance:ri.origin.distanceTo(h),object:s,face:null,faceIndex:o,uv:null,uv1:null})}}function zg(s,e,t){const n=e.projectionMatrix,i=s.material.resolution,r=s.matrixWorld,a=s.geometry,o=a.attributes.instanceStart,l=a.attributes.instanceEnd,c=Math.min(a.instanceCount,o.count),h=-e.near;ri.at(1,ni),ni.w=1,ni.applyMatrix4(e.matrixWorldInverse),ni.applyMatrix4(n),ni.multiplyScalar(1/ni.w),ni.x*=i.x/2,ni.y*=i.y/2,ni.z=0,_o.copy(ni),vo.multiplyMatrices(e.matrixWorldInverse,r);for(let d=0,u=c;d<u;d++){if(xn.fromBufferAttribute(o,d),yn.fromBufferAttribute(l,d),xn.w=1,yn.w=1,xn.applyMatrix4(vo),yn.applyMatrix4(vo),xn.z>h&&yn.z>h)continue;if(xn.z>h){const p=xn.z-yn.z,E=(xn.z-h)/p;xn.lerp(yn,E)}else if(yn.z>h){const p=yn.z-xn.z,E=(yn.z-h)/p;yn.lerp(xn,E)}xn.applyMatrix4(n),yn.applyMatrix4(n),xn.multiplyScalar(1/xn.w),yn.multiplyScalar(1/yn.w),xn.x*=i.x/2,xn.y*=i.y/2,yn.x*=i.x/2,yn.y*=i.y/2,Mn.start.copy(xn),Mn.start.z=0,Mn.end.copy(yn),Mn.end.z=0;const f=Mn.closestPointToPointParameter(_o,!0);Mn.at(f,Ch);const m=Ki.lerp(xn.z,yn.z,f),_=m>=-1&&m<=1,g=_o.distanceTo(Ch)<Qi*.5;if(_&&g){Mn.start.fromBufferAttribute(o,d),Mn.end.fromBufferAttribute(l,d),Mn.start.applyMatrix4(r),Mn.end.applyMatrix4(r);const p=new I,E=new I;ri.distanceSqToSegment(Mn.start,Mn.end,E,p),t.push({point:E,pointOnLine:p,distance:ri.origin.distanceTo(E),object:s,face:null,faceIndex:d,uv:null,uv1:null})}}}class Bg extends $t{constructor(e=new Fu,t=new Xl({color:Math.random()*16777215})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let a=0,o=0,l=t.count;a<l;a++,o+=2)wh.fromBufferAttribute(t,a),Th.fromBufferAttribute(n,a),i[o]=o===0?0:i[o-1],i[o+1]=i[o]+wh.distanceTo(Th);const r=new cl(i,2,1);return e.setAttribute("instanceDistanceStart",new li(r,1,0)),e.setAttribute("instanceDistanceEnd",new li(r,1,1)),this}raycast(e,t){const n=this.material.worldUnits,i=e.camera;i===null&&!n&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const r=e.params.Line2!==void 0&&e.params.Line2.threshold||0;ri=e.ray;const a=this.matrixWorld,o=this.geometry,l=this.material;Qi=l.linewidth+r,o.boundingSphere===null&&o.computeBoundingSphere(),Yr.copy(o.boundingSphere).applyMatrix4(a);let c;if(n)c=Qi*.5;else{const d=Math.max(i.near,Yr.distanceToPoint(ri.origin));c=Rh(i,d,l.resolution)}if(Yr.radius+=c,ri.intersectsSphere(Yr)===!1)return;o.boundingBox===null&&o.computeBoundingBox(),jr.copy(o.boundingBox).applyMatrix4(a);let h;if(n)h=Qi*.5;else{const d=Math.max(i.near,jr.distanceToPoint(ri.origin));h=Rh(i,d,l.resolution)}jr.expandByScalar(h),ri.intersectsBox(jr)!==!1&&(n?Og(this,t):zg(this,i,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(go),this.material.uniforms.resolution.value.set(go.z,go.w))}}class Ou extends Fu{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setPositions(n),this}setColors(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setColors(n),this}setFromPoints(e){const t=e.length-1,n=new Float32Array(6*t);for(let i=0;i<t;i++)n[6*i]=e[i].x,n[6*i+1]=e[i].y,n[6*i+2]=e[i].z||0,n[6*i+3]=e[i+1].x,n[6*i+4]=e[i+1].y,n[6*i+5]=e[i+1].z||0;return super.setPositions(n),this}fromLine(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}}class kg extends Bg{constructor(e=new Ou,t=new Xl({color:Math.random()*16777215})){super(e,t),this.isLine2=!0,this.type="Line2"}}const Vg=s=>{const e=new gt,t=[],n=[],{isSphere:i}=s;if(lr.forEach((o,l)=>{const{enabled:c,line:h,scale:d,color:u}=s[o];if(!c||!h)return;const f=l<3?1:-1,m=(i?Iu-d/2:.975)*f;t.push(o.includes("x")?m:0,o.includes("y")?m:0,o.includes("z")?m:0,0,0,0);const _=e.set(u).toArray();n.push(..._,..._)}),!t.length)return null;const r=new Ou().setPositions(t).setColors(n),a=new Xl({linewidth:s.lineWidth,vertexColors:!0,resolution:new Ke(window.innerWidth,window.innerHeight)});return new kg(r,a).computeLineDistances()},Hg=s=>{const{corners:e,edges:t}=s,n=[],i=Lg(s),r=Dg(s,i);n.push(...r),e.enabled&&n.push(...Ug(s,i)),t.enabled&&n.push(...Ng(s,i,e.enabled?7:6));const a=Fg(r,s),o=Vg(s);return[n,a,o]},Js=(s,e=!0)=>{const{material:t,userData:n}=s,{opacity:i,color:r,scale:a}=e?n.hover:n;s.scale.setScalar(a),t.opacity=i,t.map?Pg(t.map,e):t.color.set(r)},Ss=new Et,Lh=new Tu,Gg=new Ke,Yi=new I,Ph=new Ht;class Wg extends nn{constructor(e,t,n={}){super(),Jt(this,"enabled",!0),Jt(this,"camera"),Jt(this,"renderer"),Jt(this,"options"),Jt(this,"target",new I),Jt(this,"animated",!0),Jt(this,"speed",1),Jt(this,"animating",!1),Jt(this,"_options"),Jt(this,"_intersections"),Jt(this,"_background",null),Jt(this,"_viewport",[0,0,0,0]),Jt(this,"_originalViewport",[0,0,0,0]),Jt(this,"_originalScissor",[0,0,0,0]),Jt(this,"_scene"),Jt(this,"_camera"),Jt(this,"_container"),Jt(this,"_domElement"),Jt(this,"_domRect"),Jt(this,"_dragging",!1),Jt(this,"_distance",0),Jt(this,"_clock",new Pp),Jt(this,"_targetQuaternion",new zn),Jt(this,"_quaternionStart",new zn),Jt(this,"_quaternionEnd",new zn),Jt(this,"_pointerStart",new Ke),Jt(this,"_focus",null),Jt(this,"_placement"),Jt(this,"_controls"),Jt(this,"_controlsListeners"),this.camera=e,this.renderer=t,this._scene=new Pl().add(this),this.set(n)}get placement(){return this._placement}set placement(e){this._placement=Uu(this._domElement,e),this.domUpdate()}set(e={}){this.dispose(),this.options=e,this._options=Rg(e),this._camera=this._options.isSphere?new wa(-1.8,1.8,1.8,-1.8,5,10):new Sn(26,1,5,10),this._camera.position.set(0,0,7);const[t,n,i]=Hg(this._options);n&&this.add(n),i&&this.add(i),this.add(...t),this._background=n,this._intersections=t;const{container:r,animated:a,speed:o}=this._options;return this.animated=a,this.speed=o,this._container=r?Sg(r):document.body,this._domElement=Mg(this._options),this._domElement.onpointerdown=l=>this._onPointerDown(l),this._domElement.onpointermove=l=>this._onPointerMove(l),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this._updateOrientation(!0),this}render(){this.animating&&this._animate();const{renderer:e,_viewport:t}=this,n=e.getScissorTest(),i=e.autoClear;return e.autoClear=!1,e.setViewport(...t),n&&e.setScissor(...t),e.clear(!1,!0,!1),e.render(this._scene,this._camera),e.setViewport(...this._originalViewport),n&&e.setScissor(...this._originalScissor),e.autoClear=i,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const e=this.renderer,t=this._domRect,n=e.domElement.getBoundingClientRect();return this._viewport.splice(0,4,t.left-n.left,e.domElement.clientHeight-(t.top-n.top+t.height),t.width,t.height),e.getViewport(Ph).toArray(this._originalViewport),e.getScissorTest()&&e.getScissor(Ph).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(e=!0){return e&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(e){return this.detachControls(),this.target=e.target,this._controlsListeners={start:()=>e.enabled=!1,end:()=>e.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),e.addEventListener("change",this._controlsListeners.change),this._controls=e,this}detachControls(){if(!(!this._controlsListeners||!this._controls))return this.target=new I().copy(this._controls.target),this.removeEventListener("start",this._controlsListeners.start),this.removeEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){var e;this.detachControls(),this.children.forEach(t=>{var n,i,r,a;this.remove(t);const o=t;(n=o.material)==null||n.dispose(),(r=(i=o.material)==null?void 0:i.map)==null||r.dispose(),(a=o.geometry)==null||a.dispose()}),(e=this._domElement)==null||e.remove()}_updateOrientation(e=!0){e&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),xh(this._options,this._intersections,this.camera)}_animate(){const{position:e,quaternion:t}=this.camera;if(e.set(0,0,1),!this.animated){e.applyQuaternion(this._quaternionEnd).multiplyScalar(this._distance).add(this.target),t.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),this.dispatchEvent({type:"end"});return}this._controls&&(this._controls.enabled=!1);const n=this._clock.getDelta()*Ag*this.speed;this._quaternionStart.rotateTowards(this._quaternionEnd,n),e.applyQuaternion(this._quaternionStart).multiplyScalar(this._distance).add(this.target),t.rotateTowards(this._targetQuaternion,n),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<mo&&(this._controls&&(this._controls.enabled=!0),this.animating=!1,this.dispatchEvent({type:"end"}))}_setOrientation(e){const t=this.camera,n=this.target;Yi.copy(e).multiplyScalar(this._distance),Ss.setPosition(Yi).lookAt(Yi,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(Ss),Yi.add(n),Ss.lookAt(Yi,n,this.up),this._quaternionEnd.setFromRotationMatrix(Ss),Ss.setPosition(t.position).lookAt(t.position,n,this.up),this._quaternionStart.setFromRotationMatrix(Ss),this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const t=l=>{if(!this._dragging){if(Eg(l,this._pointerStart))return;this._dragging=!0}const c=Gg.set(l.clientX,l.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),h=this.coordinateConversion(Yi.subVectors(this.camera.position,this.target)),d=Lh.setFromVector3(h);d.theta=a-c.x,d.phi=dl(o-c.y,mo,Math.PI-mo),this.coordinateConversion(this.camera.position.setFromSpherical(d),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},n=()=>{if(document.removeEventListener("pointermove",t,!1),document.removeEventListener("pointerup",n,!1),!this._dragging)return this._handleClick(e);this._focus&&(Js(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const i=this.coordinateConversion(Yi.subVectors(this.camera.position,this.target)),r=Lh.setFromVector3(i),a=r.theta,o=r.phi;this._distance=r.radius,document.addEventListener("pointermove",t,!1),document.addEventListener("pointerup",n,!1),this.dispatchEvent({type:"start"})}coordinateConversion(e,t=!1){const{x:n,y:i,z:r}=e,a=nn.DEFAULT_UP;return a.x===1?t?e.set(i,r,n):e.set(r,n,i):a.z===1?t?e.set(r,n,i):e.set(i,r,n):e}_onPointerMove(e){!this.enabled||this._dragging||(this._background&&bh(this._background,!0),this._handleHover(e))}_onPointerLeave(){!this.enabled||this._dragging||(this._background&&bh(this._background,!1),this._focus&&Js(this._focus,!1),this._domElement.style.cursor="")}_handleClick(e){const t=Sh(e,this._domRect,this._camera,this._intersections);this._focus&&(Js(this._focus,!1),this._focus=null),t&&(this._setOrientation(t.object.position),this.dispatchEvent({type:"change"}))}_handleHover(e){const t=Sh(e,this._domRect,this._camera,this._intersections),n=(t==null?void 0:t.object)||null;this._focus!==n&&(this._domElement.style.cursor=n?"pointer":"",this._focus&&Js(this._focus,!1),(this._focus=n)?Js(n,!0):xh(this._options,this._intersections,this.camera))}}const Xg=/^[og]\s*(.+)?/,qg=/^mtllib /,jg=/^usemtl /,Yg=/^usemap /,Dh=/\s+/,Uh=new I,xo=new I,Nh=new I,Ih=new I,Hn=new I,$r=new gt;function $g(){const s={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}const n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(i,r){const a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);const o={index:this.materials.length,name:i||"",mtllib:Array.isArray(r)&&r.length>0?r[r.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){const c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(i){const r=this.currentMaterial();if(r&&r.groupEnd===-1&&(r.groupEnd=this.geometry.vertices.length/3,r.groupCount=r.groupEnd-r.groupStart,r.inherited=!1),i&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return i&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),r}},n&&n.name&&typeof n.clone=="function"){const i=n.clone(0);i.inherited=!0,this.object.materials.push(i)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){const i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){const i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){const i=this.vertices,r=this.object.geometry.normals;Uh.fromArray(i,e),xo.fromArray(i,t),Nh.fromArray(i,n),Hn.subVectors(Nh,xo),Ih.subVectors(Uh,xo),Hn.cross(Ih),Hn.normalize(),r.push(Hn.x,Hn.y,Hn.z),r.push(Hn.x,Hn.y,Hn.z),r.push(Hn.x,Hn.y,Hn.z)},addColor:function(e,t,n){const i=this.colors,r=this.object.geometry.colors;i[e]!==void 0&&r.push(i[e+0],i[e+1],i[e+2]),i[t]!==void 0&&r.push(i[t+0],i[t+1],i[t+2]),i[n]!==void 0&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){const i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){const e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){const t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,a,o,l,c){const h=this.vertices.length;let d=this.parseVertexIndex(e,h),u=this.parseVertexIndex(t,h),f=this.parseVertexIndex(n,h);if(this.addVertex(d,u,f),this.addColor(d,u,f),o!==void 0&&o!==""){const m=this.normals.length;d=this.parseNormalIndex(o,m),u=this.parseNormalIndex(l,m),f=this.parseNormalIndex(c,m),this.addNormal(d,u,f)}else this.addFaceNormal(d,u,f);if(i!==void 0&&i!==""){const m=this.uvs.length;d=this.parseUVIndex(i,m),u=this.parseUVIndex(r,m),f=this.parseUVIndex(a,m),this.addUV(d,u,f),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";const t=this.vertices.length;for(let n=0,i=e.length;n<i;n++){const r=this.parseVertexIndex(e[n],t);this.addVertexPoint(r),this.addColor(r)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";const n=this.vertices.length,i=this.uvs.length;for(let r=0,a=e.length;r<a;r++)this.addVertexLine(this.parseVertexIndex(e[r],n));for(let r=0,a=t.length;r<a;r++)this.addUVLine(this.parseUVIndex(t[r],i))}};return s.startObject("",!1),s}class ca extends Qn{constructor(e){super(e),this.materials=null}load(e,t,n,i){const r=this,a=new Bs(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(r.parse(o))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}setMaterials(e){return this.materials=e,this}parse(e){const t=new $g;e.indexOf(`\r
|
|
4197
|
+
`};class Xl extends bi{constructor(e){super({type:"LineMaterial",uniforms:Ll.clone(Un.line.uniforms),vertexShader:Un.line.vertexShader,fragmentShader:Un.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const go=new Ht,wh=new I,Th=new I,xn=new Ht,yn=new Ht,ni=new Ht,_o=new I,vo=new At,Mn=new Up,Ch=new I,jr=new ei,Yr=new Ei,ii=new Ht;let ri,Qi;function Rh(s,e,t){return ii.set(0,0,-e,1).applyMatrix4(s.projectionMatrix),ii.multiplyScalar(1/ii.w),ii.x=Qi/t.width,ii.y=Qi/t.height,ii.applyMatrix4(s.projectionMatrixInverse),ii.multiplyScalar(1/ii.w),Math.abs(Math.max(ii.x,ii.y))}function Og(s,e){const t=s.matrixWorld,n=s.geometry,i=n.attributes.instanceStart,r=n.attributes.instanceEnd,a=Math.min(n.instanceCount,i.count);for(let o=0,l=a;o<l;o++){Mn.start.fromBufferAttribute(i,o),Mn.end.fromBufferAttribute(r,o),Mn.applyMatrix4(t);const c=new I,h=new I;ri.distanceSqToSegment(Mn.start,Mn.end,h,c),h.distanceTo(c)<Qi*.5&&e.push({point:h,pointOnLine:c,distance:ri.origin.distanceTo(h),object:s,face:null,faceIndex:o,uv:null,uv1:null})}}function zg(s,e,t){const n=e.projectionMatrix,i=s.material.resolution,r=s.matrixWorld,a=s.geometry,o=a.attributes.instanceStart,l=a.attributes.instanceEnd,c=Math.min(a.instanceCount,o.count),h=-e.near;ri.at(1,ni),ni.w=1,ni.applyMatrix4(e.matrixWorldInverse),ni.applyMatrix4(n),ni.multiplyScalar(1/ni.w),ni.x*=i.x/2,ni.y*=i.y/2,ni.z=0,_o.copy(ni),vo.multiplyMatrices(e.matrixWorldInverse,r);for(let d=0,u=c;d<u;d++){if(xn.fromBufferAttribute(o,d),yn.fromBufferAttribute(l,d),xn.w=1,yn.w=1,xn.applyMatrix4(vo),yn.applyMatrix4(vo),xn.z>h&&yn.z>h)continue;if(xn.z>h){const p=xn.z-yn.z,E=(xn.z-h)/p;xn.lerp(yn,E)}else if(yn.z>h){const p=yn.z-xn.z,E=(yn.z-h)/p;yn.lerp(xn,E)}xn.applyMatrix4(n),yn.applyMatrix4(n),xn.multiplyScalar(1/xn.w),yn.multiplyScalar(1/yn.w),xn.x*=i.x/2,xn.y*=i.y/2,yn.x*=i.x/2,yn.y*=i.y/2,Mn.start.copy(xn),Mn.start.z=0,Mn.end.copy(yn),Mn.end.z=0;const f=Mn.closestPointToPointParameter(_o,!0);Mn.at(f,Ch);const m=Ki.lerp(xn.z,yn.z,f),_=m>=-1&&m<=1,g=_o.distanceTo(Ch)<Qi*.5;if(_&&g){Mn.start.fromBufferAttribute(o,d),Mn.end.fromBufferAttribute(l,d),Mn.start.applyMatrix4(r),Mn.end.applyMatrix4(r);const p=new I,E=new I;ri.distanceSqToSegment(Mn.start,Mn.end,E,p),t.push({point:E,pointOnLine:p,distance:ri.origin.distanceTo(E),object:s,face:null,faceIndex:d,uv:null,uv1:null})}}}class Bg extends Jt{constructor(e=new Fu,t=new Xl({color:Math.random()*16777215})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let a=0,o=0,l=t.count;a<l;a++,o+=2)wh.fromBufferAttribute(t,a),Th.fromBufferAttribute(n,a),i[o]=o===0?0:i[o-1],i[o+1]=i[o]+wh.distanceTo(Th);const r=new cl(i,2,1);return e.setAttribute("instanceDistanceStart",new li(r,1,0)),e.setAttribute("instanceDistanceEnd",new li(r,1,1)),this}raycast(e,t){const n=this.material.worldUnits,i=e.camera;i===null&&!n&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const r=e.params.Line2!==void 0&&e.params.Line2.threshold||0;ri=e.ray;const a=this.matrixWorld,o=this.geometry,l=this.material;Qi=l.linewidth+r,o.boundingSphere===null&&o.computeBoundingSphere(),Yr.copy(o.boundingSphere).applyMatrix4(a);let c;if(n)c=Qi*.5;else{const d=Math.max(i.near,Yr.distanceToPoint(ri.origin));c=Rh(i,d,l.resolution)}if(Yr.radius+=c,ri.intersectsSphere(Yr)===!1)return;o.boundingBox===null&&o.computeBoundingBox(),jr.copy(o.boundingBox).applyMatrix4(a);let h;if(n)h=Qi*.5;else{const d=Math.max(i.near,jr.distanceToPoint(ri.origin));h=Rh(i,d,l.resolution)}jr.expandByScalar(h),ri.intersectsBox(jr)!==!1&&(n?Og(this,t):zg(this,i,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(go),this.material.uniforms.resolution.value.set(go.z,go.w))}}class Ou extends Fu{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setPositions(n),this}setColors(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setColors(n),this}setFromPoints(e){const t=e.length-1,n=new Float32Array(6*t);for(let i=0;i<t;i++)n[6*i]=e[i].x,n[6*i+1]=e[i].y,n[6*i+2]=e[i].z||0,n[6*i+3]=e[i+1].x,n[6*i+4]=e[i+1].y,n[6*i+5]=e[i+1].z||0;return super.setPositions(n),this}fromLine(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}}class kg extends Bg{constructor(e=new Ou,t=new Xl({color:Math.random()*16777215})){super(e,t),this.isLine2=!0,this.type="Line2"}}const Vg=s=>{const e=new _t,t=[],n=[],{isSphere:i}=s;if(lr.forEach((o,l)=>{const{enabled:c,line:h,scale:d,color:u}=s[o];if(!c||!h)return;const f=l<3?1:-1,m=(i?Iu-d/2:.975)*f;t.push(o.includes("x")?m:0,o.includes("y")?m:0,o.includes("z")?m:0,0,0,0);const _=e.set(u).toArray();n.push(..._,..._)}),!t.length)return null;const r=new Ou().setPositions(t).setColors(n),a=new Xl({linewidth:s.lineWidth,vertexColors:!0,resolution:new Ze(window.innerWidth,window.innerHeight)});return new kg(r,a).computeLineDistances()},Hg=s=>{const{corners:e,edges:t}=s,n=[],i=Lg(s),r=Dg(s,i);n.push(...r),e.enabled&&n.push(...Ug(s,i)),t.enabled&&n.push(...Ng(s,i,e.enabled?7:6));const a=Fg(r,s),o=Vg(s);return[n,a,o]},Js=(s,e=!0)=>{const{material:t,userData:n}=s,{opacity:i,color:r,scale:a}=e?n.hover:n;s.scale.setScalar(a),t.opacity=i,t.map?Pg(t.map,e):t.color.set(r)},Ss=new At,Lh=new Tu,Gg=new Ze,Yi=new I,Ph=new Ht;class Wg extends nn{constructor(e,t,n={}){super(),Kt(this,"enabled",!0),Kt(this,"camera"),Kt(this,"renderer"),Kt(this,"options"),Kt(this,"target",new I),Kt(this,"animated",!0),Kt(this,"speed",1),Kt(this,"animating",!1),Kt(this,"_options"),Kt(this,"_intersections"),Kt(this,"_background",null),Kt(this,"_viewport",[0,0,0,0]),Kt(this,"_originalViewport",[0,0,0,0]),Kt(this,"_originalScissor",[0,0,0,0]),Kt(this,"_scene"),Kt(this,"_camera"),Kt(this,"_container"),Kt(this,"_domElement"),Kt(this,"_domRect"),Kt(this,"_dragging",!1),Kt(this,"_distance",0),Kt(this,"_clock",new Pp),Kt(this,"_targetQuaternion",new zn),Kt(this,"_quaternionStart",new zn),Kt(this,"_quaternionEnd",new zn),Kt(this,"_pointerStart",new Ze),Kt(this,"_focus",null),Kt(this,"_placement"),Kt(this,"_controls"),Kt(this,"_controlsListeners"),this.camera=e,this.renderer=t,this._scene=new Pl().add(this),this.set(n)}get placement(){return this._placement}set placement(e){this._placement=Uu(this._domElement,e),this.domUpdate()}set(e={}){this.dispose(),this.options=e,this._options=Rg(e),this._camera=this._options.isSphere?new wa(-1.8,1.8,1.8,-1.8,5,10):new Sn(26,1,5,10),this._camera.position.set(0,0,7);const[t,n,i]=Hg(this._options);n&&this.add(n),i&&this.add(i),this.add(...t),this._background=n,this._intersections=t;const{container:r,animated:a,speed:o}=this._options;return this.animated=a,this.speed=o,this._container=r?Sg(r):document.body,this._domElement=Mg(this._options),this._domElement.onpointerdown=l=>this._onPointerDown(l),this._domElement.onpointermove=l=>this._onPointerMove(l),this._domElement.onpointerleave=()=>this._onPointerLeave(),this._container.appendChild(this._domElement),this._controls&&this.attachControls(this._controls),this.update(),this._updateOrientation(!0),this}render(){this.animating&&this._animate();const{renderer:e,_viewport:t}=this,n=e.getScissorTest(),i=e.autoClear;return e.autoClear=!1,e.setViewport(...t),n&&e.setScissor(...t),e.clear(!1,!0,!1),e.render(this._scene,this._camera),e.setViewport(...this._originalViewport),n&&e.setScissor(...this._originalScissor),e.autoClear=i,this}domUpdate(){this._domRect=this._domElement.getBoundingClientRect();const e=this.renderer,t=this._domRect,n=e.domElement.getBoundingClientRect();return this._viewport.splice(0,4,t.left-n.left,e.domElement.clientHeight-(t.top-n.top+t.height),t.width,t.height),e.getViewport(Ph).toArray(this._originalViewport),e.getScissorTest()&&e.getScissor(Ph).toArray(this._originalScissor),this}cameraUpdate(){return this._updateOrientation(),this}update(e=!0){return e&&this._controls&&this._controls.update(),this.domUpdate().cameraUpdate()}attachControls(e){return this.detachControls(),this.target=e.target,this._controlsListeners={start:()=>e.enabled=!1,end:()=>e.enabled=!0,change:()=>this.update(!1)},this.addEventListener("start",this._controlsListeners.start),this.addEventListener("end",this._controlsListeners.end),e.addEventListener("change",this._controlsListeners.change),this._controls=e,this}detachControls(){if(!(!this._controlsListeners||!this._controls))return this.target=new I().copy(this._controls.target),this.removeEventListener("start",this._controlsListeners.start),this.removeEventListener("end",this._controlsListeners.end),this._controls.removeEventListener("change",this._controlsListeners.change),this._controlsListeners=void 0,this._controls=void 0,this}dispose(){var e;this.detachControls(),this.children.forEach(t=>{var n,i,r,a;this.remove(t);const o=t;(n=o.material)==null||n.dispose(),(r=(i=o.material)==null?void 0:i.map)==null||r.dispose(),(a=o.geometry)==null||a.dispose()}),(e=this._domElement)==null||e.remove()}_updateOrientation(e=!0){e&&(this.quaternion.copy(this.camera.quaternion).invert(),this.updateMatrixWorld()),xh(this._options,this._intersections,this.camera)}_animate(){const{position:e,quaternion:t}=this.camera;if(e.set(0,0,1),!this.animated){e.applyQuaternion(this._quaternionEnd).multiplyScalar(this._distance).add(this.target),t.copy(this._targetQuaternion),this._updateOrientation(),this.animating=!1,this.dispatchEvent({type:"change"}),this.dispatchEvent({type:"end"});return}this._controls&&(this._controls.enabled=!1);const n=this._clock.getDelta()*Ag*this.speed;this._quaternionStart.rotateTowards(this._quaternionEnd,n),e.applyQuaternion(this._quaternionStart).multiplyScalar(this._distance).add(this.target),t.rotateTowards(this._targetQuaternion,n),this._updateOrientation(),requestAnimationFrame(()=>this.dispatchEvent({type:"change"})),this._quaternionStart.angleTo(this._quaternionEnd)<mo&&(this._controls&&(this._controls.enabled=!0),this.animating=!1,this.dispatchEvent({type:"end"}))}_setOrientation(e){const t=this.camera,n=this.target;Yi.copy(e).multiplyScalar(this._distance),Ss.setPosition(Yi).lookAt(Yi,this.position,this.up),this._targetQuaternion.setFromRotationMatrix(Ss),Yi.add(n),Ss.lookAt(Yi,n,this.up),this._quaternionEnd.setFromRotationMatrix(Ss),Ss.setPosition(t.position).lookAt(t.position,n,this.up),this._quaternionStart.setFromRotationMatrix(Ss),this.animating=!0,this._clock.start(),this.dispatchEvent({type:"start"})}_onPointerDown(e){if(!this.enabled)return;const t=l=>{if(!this._dragging){if(Eg(l,this._pointerStart))return;this._dragging=!0}const c=Gg.set(l.clientX,l.clientY).sub(this._pointerStart).multiplyScalar(1/this._domRect.width*Math.PI),h=this.coordinateConversion(Yi.subVectors(this.camera.position,this.target)),d=Lh.setFromVector3(h);d.theta=a-c.x,d.phi=dl(o-c.y,mo,Math.PI-mo),this.coordinateConversion(this.camera.position.setFromSpherical(d),!0).add(this.target),this.camera.lookAt(this.target),this.quaternion.copy(this.camera.quaternion).invert(),this._updateOrientation(!1),this.dispatchEvent({type:"change"})},n=()=>{if(document.removeEventListener("pointermove",t,!1),document.removeEventListener("pointerup",n,!1),!this._dragging)return this._handleClick(e);this._focus&&(Js(this._focus,!1),this._focus=null),this._dragging=!1,this.dispatchEvent({type:"end"})};if(this.animating)return;e.preventDefault(),this._pointerStart.set(e.clientX,e.clientY);const i=this.coordinateConversion(Yi.subVectors(this.camera.position,this.target)),r=Lh.setFromVector3(i),a=r.theta,o=r.phi;this._distance=r.radius,document.addEventListener("pointermove",t,!1),document.addEventListener("pointerup",n,!1),this.dispatchEvent({type:"start"})}coordinateConversion(e,t=!1){const{x:n,y:i,z:r}=e,a=nn.DEFAULT_UP;return a.x===1?t?e.set(i,r,n):e.set(r,n,i):a.z===1?t?e.set(r,n,i):e.set(i,r,n):e}_onPointerMove(e){!this.enabled||this._dragging||(this._background&&bh(this._background,!0),this._handleHover(e))}_onPointerLeave(){!this.enabled||this._dragging||(this._background&&bh(this._background,!1),this._focus&&Js(this._focus,!1),this._domElement.style.cursor="")}_handleClick(e){const t=Sh(e,this._domRect,this._camera,this._intersections);this._focus&&(Js(this._focus,!1),this._focus=null),t&&(this._setOrientation(t.object.position),this.dispatchEvent({type:"change"}))}_handleHover(e){const t=Sh(e,this._domRect,this._camera,this._intersections),n=(t==null?void 0:t.object)||null;this._focus!==n&&(this._domElement.style.cursor=n?"pointer":"",this._focus&&Js(this._focus,!1),(this._focus=n)?Js(n,!0):xh(this._options,this._intersections,this.camera))}}const Xg=/^[og]\s*(.+)?/,qg=/^mtllib /,jg=/^usemtl /,Yg=/^usemap /,Dh=/\s+/,Uh=new I,xo=new I,Nh=new I,Ih=new I,Hn=new I,$r=new _t;function $g(){const s={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}const n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(i,r){const a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);const o={index:this.materials.length,name:i||"",mtllib:Array.isArray(r)&&r.length>0?r[r.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){const c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(i){const r=this.currentMaterial();if(r&&r.groupEnd===-1&&(r.groupEnd=this.geometry.vertices.length/3,r.groupCount=r.groupEnd-r.groupStart,r.inherited=!1),i&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return i&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),r}},n&&n.name&&typeof n.clone=="function"){const i=n.clone(0);i.inherited=!0,this.object.materials.push(i)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){const i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){const i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){const i=this.vertices,r=this.object.geometry.normals;Uh.fromArray(i,e),xo.fromArray(i,t),Nh.fromArray(i,n),Hn.subVectors(Nh,xo),Ih.subVectors(Uh,xo),Hn.cross(Ih),Hn.normalize(),r.push(Hn.x,Hn.y,Hn.z),r.push(Hn.x,Hn.y,Hn.z),r.push(Hn.x,Hn.y,Hn.z)},addColor:function(e,t,n){const i=this.colors,r=this.object.geometry.colors;i[e]!==void 0&&r.push(i[e+0],i[e+1],i[e+2]),i[t]!==void 0&&r.push(i[t+0],i[t+1],i[t+2]),i[n]!==void 0&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){const i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){const e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){const t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,a,o,l,c){const h=this.vertices.length;let d=this.parseVertexIndex(e,h),u=this.parseVertexIndex(t,h),f=this.parseVertexIndex(n,h);if(this.addVertex(d,u,f),this.addColor(d,u,f),o!==void 0&&o!==""){const m=this.normals.length;d=this.parseNormalIndex(o,m),u=this.parseNormalIndex(l,m),f=this.parseNormalIndex(c,m),this.addNormal(d,u,f)}else this.addFaceNormal(d,u,f);if(i!==void 0&&i!==""){const m=this.uvs.length;d=this.parseUVIndex(i,m),u=this.parseUVIndex(r,m),f=this.parseUVIndex(a,m),this.addUV(d,u,f),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";const t=this.vertices.length;for(let n=0,i=e.length;n<i;n++){const r=this.parseVertexIndex(e[n],t);this.addVertexPoint(r),this.addColor(r)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";const n=this.vertices.length,i=this.uvs.length;for(let r=0,a=e.length;r<a;r++)this.addVertexLine(this.parseVertexIndex(e[r],n));for(let r=0,a=t.length;r<a;r++)this.addUVLine(this.parseUVIndex(t[r],i))}};return s.startObject("",!1),s}class ca extends Qn{constructor(e){super(e),this.materials=null}load(e,t,n,i){const r=this,a=new Bs(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(r.parse(o))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}setMaterials(e){return this.materials=e,this}parse(e){const t=new $g;e.indexOf(`\r
|
|
4198
4198
|
`)!==-1&&(e=e.replace(/\r\n/g,`
|
|
4199
4199
|
`)),e.indexOf(`\\
|
|
4200
4200
|
`)!==-1&&(e=e.replace(/\\\n/g,""));const n=e.split(`
|
|
4201
|
-
`);let i=[];for(let o=0,l=n.length;o<l;o++){const c=n[o].trimStart();if(c.length===0)continue;const h=c.charAt(0);if(h!=="#")if(h==="v"){const d=c.split(Dh);switch(d[0]){case"v":t.vertices.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3])),d.length>=7?($r.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6])
|
|
4202
|
-
`);let i={};const r=/\s+/,a={};for(let l=0;l<n.length;l++){let c=n[l];if(c=c.trim(),c.length===0||c.charAt(0)==="#")continue;const h=c.indexOf(" ");let d=h>=0?c.substring(0,h):c;d=d.toLowerCase();let u=h>=0?c.substring(h+1):"";if(u=u.trim(),d==="newmtl")i={name:u},a[u]=i;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){const f=u.split(r,3);i[d]=[parseFloat(f[0]),parseFloat(f[1]),parseFloat(f[2])]}else i[d]=u}const o=new Jg(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}}class Jg{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Xn,this.wrap=this.options.wrap!==void 0?this.options.wrap:ai}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;const t={};for(const n in e){const i=e[n],r={};t[n]=r;for(const a in i){let o=!0,l=i[a];const c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break}o&&(r[c]=l)}}return t}preload(){for(const e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(const t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){const t=this,n=this.materialsInfo[e],i={name:e,side:this.side};function r(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(i[o])return;const c=t.getTextureParams(l,i),h=t.loadTexture(r(t.baseUrl,c.url));h.repeat.copy(c.scale),h.offset.copy(c.offset),h.wrapS=t.wrap,h.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(h.colorSpace
|
|
4203
|
-
`||D==="\r"?(p.trim().toLowerCase().startsWith("data")&&(b=!0),p=""):p+=D,g+=D}const U=g.search(/[\r\n]DATA\s(\S*)\s/i),C=/[\r\n]DATA\s(\S*)\s/i.exec(g.slice(U-1));if(m.data=C[1],m.headerLen=C[0].length+U,m.str=g.slice(0,m.headerLen),m.str=m.str.replace(/#.*/gi,""),m.version=/^VERSION (.*)/im.exec(m.str),m.fields=/^FIELDS (.*)/im.exec(m.str),m.size=/^SIZE (.*)/im.exec(m.str),m.type=/^TYPE (.*)/im.exec(m.str),m.count=/^COUNT (.*)/im.exec(m.str),m.width=/^WIDTH (.*)/im.exec(m.str),m.height=/^HEIGHT (.*)/im.exec(m.str),m.viewpoint=/^VIEWPOINT (.*)/im.exec(m.str),m.points=/^POINTS (.*)/im.exec(m.str),m.version!==null&&(m.version=parseFloat(m.version[1])),m.fields=m.fields!==null?m.fields[1].split(" "):[],m.type!==null&&(m.type=m.type[1].split(" ")),m.width!==null&&(m.width=parseInt(m.width[1])),m.height!==null&&(m.height=parseInt(m.height[1])),m.viewpoint!==null&&(m.viewpoint=m.viewpoint[1]),m.points!==null&&(m.points=parseInt(m.points[1],10)),m.points===null&&(m.points=m.width*m.height),m.size!==null&&(m.size=m.size[1].split(" ").map(function(D){return parseInt(D,10)})),m.count!==null)m.count=m.count[1].split(" ").map(function(D){return parseInt(D,10)});else{m.count=[];for(let D=0,S=m.fields.length;D<S;D++)m.count.push(1)}m.offset={};let P=0;for(let D=0,S=m.fields.length;D<S;D++)m.data==="ascii"?m.offset[m.fields[D]]=D:(m.offset[m.fields[D]]=P,P+=m.size[D]*m.count[D]);return m.rowSize=P,m}const i=n(e),r=[],a=[],o=[],l=[],c=[],h=new
|
|
4204
|
-
`);for(let p=0,E=g.length;p<E;p++){if(g[p]==="")continue;const b=g[p].split(" ");if(f.x!==void 0&&(r.push(parseFloat(b[f.x])),r.push(parseFloat(b[f.y])),r.push(parseFloat(b[f.z]))),f.rgb!==void 0){const M=i.fields.findIndex(N=>N==="rgb"),U=i.type[M],C=parseFloat(b[f.rgb]);let P=C;if(U==="F"){const N=new Float32Array(1);N[0]=C,P=new Int32Array(N.buffer)[0]}const D=(P>>16&255)/255,S=(P>>8&255)/255,y=(P>>0&255)/255;h.setRGB(D,S,y,Yt),o.push(h.r,h.g,h.b)}f.normal_x!==void 0&&(a.push(parseFloat(b[f.normal_x])),a.push(parseFloat(b[f.normal_y])),a.push(parseFloat(b[f.normal_z]))),f.intensity!==void 0&&l.push(parseFloat(b[f.intensity])),f.label!==void 0&&c.push(parseInt(b[f.label]))}}if(i.data==="binary_compressed"){const f=new Uint32Array(e.slice(i.headerLen,i.headerLen+8)),m=f[0],_=f[1],g=t(new Uint8Array(e,i.headerLen+8,m),_),p=new DataView(g.buffer),E=i.offset;for(let b=0;b<i.points;b++){if(E.x!==void 0){const M=i.fields.indexOf("x"),U=i.fields.indexOf("y"),C=i.fields.indexOf("z");r.push(this._getDataView(p,i.points*E.x+i.size[M]*b,i.type[M],i.size[M])),r.push(this._getDataView(p,i.points*E.y+i.size[U]*b,i.type[U],i.size[U])),r.push(this._getDataView(p,i.points*E.z+i.size[C]*b,i.type[C],i.size[C]))}if(E.rgb!==void 0){const M=i.fields.indexOf("rgb"),U=p.getUint8(i.points*E.rgb+i.size[M]*b+2)/255,C=p.getUint8(i.points*E.rgb+i.size[M]*b+1)/255,P=p.getUint8(i.points*E.rgb+i.size[M]*b+0)/255;h.setRGB(U,C,P,Yt),o.push(h.r,h.g,h.b)}if(E.normal_x!==void 0){const M=i.fields.indexOf("normal_x"),U=i.fields.indexOf("normal_y"),C=i.fields.indexOf("normal_z");a.push(this._getDataView(p,i.points*E.normal_x+i.size[M]*b,i.type[M],i.size[M])),a.push(this._getDataView(p,i.points*E.normal_y+i.size[U]*b,i.type[U],i.size[U])),a.push(this._getDataView(p,i.points*E.normal_z+i.size[C]*b,i.type[C],i.size[C]))}if(E.intensity!==void 0){const M=i.fields.indexOf("intensity");l.push(this._getDataView(p,i.points*E.intensity+i.size[M]*b,i.type[M],i.size[M]))}if(E.label!==void 0){const M=i.fields.indexOf("label");c.push(p.getInt32(i.points*E.label+i.size[M]*b,this.littleEndian))}}}if(i.data==="binary"){const f=new DataView(e,i.headerLen),m=i.offset;for(let _=0,g=0;_<i.points;_++,g+=i.rowSize){if(m.x!==void 0){const p=i.fields.indexOf("x"),E=i.fields.indexOf("y"),b=i.fields.indexOf("z");r.push(this._getDataView(f,g+m.x,i.type[p],i.size[p])),r.push(this._getDataView(f,g+m.y,i.type[E],i.size[E])),r.push(this._getDataView(f,g+m.z,i.type[b],i.size[b]))}if(m.rgb!==void 0){const p=f.getUint8(g+m.rgb+2)/255,E=f.getUint8(g+m.rgb+1)/255,b=f.getUint8(g+m.rgb+0)/255;h.setRGB(p,E,b,Yt),o.push(h.r,h.g,h.b)}if(m.normal_x!==void 0){const p=i.fields.indexOf("normal_x"),E=i.fields.indexOf("normal_y"),b=i.fields.indexOf("normal_z");a.push(this._getDataView(f,g+m.normal_x,i.type[p],i.size[p])),a.push(this._getDataView(f,g+m.normal_y,i.type[E],i.size[E])),a.push(this._getDataView(f,g+m.normal_z,i.type[b],i.size[b]))}if(m.intensity!==void 0){const p=i.fields.indexOf("intensity");l.push(this._getDataView(f,g+m.intensity,i.type[p],i.size[p]))}m.label!==void 0&&c.push(f.getInt32(g+m.label,this.littleEndian))}}const d=new an;r.length>0&&d.setAttribute("position",new It(r,3)),a.length>0&&d.setAttribute("normal",new It(a,3)),o.length>0&&d.setAttribute("color",new It(o,3)),l.length>0&&d.setAttribute("intensity",new It(l,1)),c.length>0&&d.setAttribute("label",new Df(c,1)),d.computeBoundingSphere();const u=new Fi({size:.005});return o.length>0&&(u.vertexColors=!0),new Cs(d,u)}}class Fh extends bp{constructor(e){super(e)}parse(e){function t(G){switch(G.image_type){case u:case _:if(G.colormap_length>256||G.colormap_size!==24||G.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case f:case m:case g:case p:if(G.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case d:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+G.image_type)}if(G.width<=0||G.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(G.pixel_size!==8&&G.pixel_size!==16&&G.pixel_size!==24&&G.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+G.pixel_size)}function n(G,re,K,ge,be){let Ce,Ie;const He=K.pixel_size>>3,J=K.width*K.height*He;if(re&&(Ie=be.subarray(ge,ge+=K.colormap_length*(K.colormap_size>>3))),G){Ce=new Uint8Array(J);let ae,le,ce,Le=0;const ve=new Uint8Array(He);for(;Le<J;)if(ae=be[ge++],le=(ae&127)+1,ae&128){for(ce=0;ce<He;++ce)ve[ce]=be[ge++];for(ce=0;ce<le;++ce)Ce.set(ve,Le+ce*He);Le+=He*le}else{for(le*=He,ce=0;ce<le;++ce)Ce[Le+ce]=be[ge++];Le+=le}}else Ce=be.subarray(ge,ge+=re?K.width*K.height:J);return{pixel_data:Ce,palettes:Ie}}function i(G,re,K,ge,be,Ce,Ie,He,J){const ae=J;let le,ce=0,Le,ve;const Ae=y.width;for(ve=re;ve!==ge;ve+=K)for(Le=be;Le!==Ie;Le+=Ce,ce++)le=He[ce],G[(Le+Ae*ve)*4+3]=255,G[(Le+Ae*ve)*4+2]=ae[le*3+0],G[(Le+Ae*ve)*4+1]=ae[le*3+1],G[(Le+Ae*ve)*4+0]=ae[le*3+2];return G}function r(G,re,K,ge,be,Ce,Ie,He){let J,ae=0,le,ce;const Le=y.width;for(ce=re;ce!==ge;ce+=K)for(le=be;le!==Ie;le+=Ce,ae+=2)J=He[ae+0]+(He[ae+1]<<8),G[(le+Le*ce)*4+0]=(J&31744)>>7,G[(le+Le*ce)*4+1]=(J&992)>>2,G[(le+Le*ce)*4+2]=(J&31)<<3,G[(le+Le*ce)*4+3]=J&32768?0:255;return G}function a(G,re,K,ge,be,Ce,Ie,He){let J=0,ae,le;const ce=y.width;for(le=re;le!==ge;le+=K)for(ae=be;ae!==Ie;ae+=Ce,J+=3)G[(ae+ce*le)*4+3]=255,G[(ae+ce*le)*4+2]=He[J+0],G[(ae+ce*le)*4+1]=He[J+1],G[(ae+ce*le)*4+0]=He[J+2];return G}function o(G,re,K,ge,be,Ce,Ie,He){let J=0,ae,le;const ce=y.width;for(le=re;le!==ge;le+=K)for(ae=be;ae!==Ie;ae+=Ce,J+=4)G[(ae+ce*le)*4+2]=He[J+0],G[(ae+ce*le)*4+1]=He[J+1],G[(ae+ce*le)*4+0]=He[J+2],G[(ae+ce*le)*4+3]=He[J+3];return G}function l(G,re,K,ge,be,Ce,Ie,He){let J,ae=0,le,ce;const Le=y.width;for(ce=re;ce!==ge;ce+=K)for(le=be;le!==Ie;le+=Ce,ae++)J=He[ae],G[(le+Le*ce)*4+0]=J,G[(le+Le*ce)*4+1]=J,G[(le+Le*ce)*4+2]=J,G[(le+Le*ce)*4+3]=255;return G}function c(G,re,K,ge,be,Ce,Ie,He){let J=0,ae,le;const ce=y.width;for(le=re;le!==ge;le+=K)for(ae=be;ae!==Ie;ae+=Ce,J+=2)G[(ae+ce*le)*4+0]=He[J+0],G[(ae+ce*le)*4+1]=He[J+0],G[(ae+ce*le)*4+2]=He[J+0],G[(ae+ce*le)*4+3]=He[J+1];return G}function h(G,re,K,ge,be){let Ce,Ie,He,J,ae,le;switch((y.flags&E)>>b){default:case C:Ce=0,He=1,ae=re,Ie=0,J=1,le=K;break;case M:Ce=0,He=1,ae=re,Ie=K-1,J=-1,le=-1;break;case P:Ce=re-1,He=-1,ae=-1,Ie=0,J=1,le=K;break;case U:Ce=re-1,He=-1,ae=-1,Ie=K-1,J=-1,le=-1;break}if(X)switch(y.pixel_size){case 8:l(G,Ie,J,le,Ce,He,ae,ge);break;case 16:c(G,Ie,J,le,Ce,He,ae,ge);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(y.pixel_size){case 8:i(G,Ie,J,le,Ce,He,ae,ge,be);break;case 16:r(G,Ie,J,le,Ce,He,ae,ge);break;case 24:a(G,Ie,J,le,Ce,He,ae,ge);break;case 32:o(G,Ie,J,le,Ce,He,ae,ge);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return G}const d=0,u=1,f=2,m=3,_=9,g=10,p=11,E=48,b=4,M=0,U=1,C=2,P=3;if(e.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let D=0;const S=new Uint8Array(e),y={id_length:S[D++],colormap_type:S[D++],image_type:S[D++],colormap_index:S[D++]|S[D++]<<8,colormap_length:S[D++]|S[D++]<<8,colormap_size:S[D++],origin:[S[D++]|S[D++]<<8,S[D++]|S[D++]<<8],width:S[D++]|S[D++]<<8,height:S[D++]|S[D++]<<8,pixel_size:S[D++],flags:S[D++]};if(t(y),y.id_length+D>e.length)throw new Error("THREE.TGALoader: No data.");D+=y.id_length;let N=!1,W=!1,X=!1;switch(y.image_type){case _:N=!0,W=!0;break;case u:W=!0;break;case g:N=!0;break;case f:break;case p:N=!0,X=!0;break;case m:X=!0;break}const Q=new Uint8Array(y.width*y.height*4),ne=n(N,W,y,D,S);return h(Q,y.width,y.height,ne.pixel_data,ne.palettes),{data:Q,width:y.width,height:y.height,flipY:!0,generateMipmaps:!0,minFilter:xi}}}class Kg extends Qn{load(e,t,n,i){const r=this,a=r.path===""?Vl.extractUrlBase(e):r.path,o=new Bs(r.manager);o.setPath(r.path),o.setRequestHeader(r.requestHeader),o.setWithCredentials(r.withCredentials),o.load(e,function(l){try{t(r.parse(l,a))}catch(c){i?i(c):console.error(c),r.manager.itemError(e)}},n,i)}parse(e,t){function n(x,v){const R=[],T=x.childNodes;for(let L=0,ie=T.length;L<ie;L++){const de=T[L];de.nodeName===v&&R.push(de)}return R}function i(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=v[T];return R}function r(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=parseFloat(v[T]);return R}function a(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=parseInt(v[T]);return R}function o(x){return x.substring(1)}function l(){return"three_default_"+kn++}function c(x){return Object.keys(x).length===0}function h(x){return{unit:d(n(x,"unit")[0]),upAxis:u(n(x,"up_axis")[0])}}function d(x){return x!==void 0&&x.hasAttribute("meter")===!0?parseFloat(x.getAttribute("meter")):1}function u(x){return x!==void 0?x.textContent:"Y_UP"}function f(x,v,R,T){const L=n(x,v)[0];if(L!==void 0){const ie=n(L,R);for(let de=0;de<ie.length;de++)T(ie[de])}}function m(x,v){for(const R in x){const T=x[R];T.build=v(x[R])}}function _(x,v){return x.build!==void 0||(x.build=v(x)),x.build}function g(x){const v={sources:{},samplers:{},channels:{}};let R=!1;for(let T=0,L=x.childNodes.length;T<L;T++){const ie=x.childNodes[T];if(ie.nodeType!==1)continue;let de;switch(ie.nodeName){case"source":de=ie.getAttribute("id"),v.sources[de]=Me(ie);break;case"sampler":de=ie.getAttribute("id"),v.samplers[de]=p(ie);break;case"channel":de=ie.getAttribute("target"),v.channels[de]=E(ie);break;case"animation":g(ie),R=!0;break;default:console.log(ie)}}R===!1&&(vt.animations[x.getAttribute("id")||Ki.generateUUID()]=v)}function p(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=o(L.getAttribute("source")),de=L.getAttribute("semantic");v.inputs[de]=ie;break}}return v}function E(x){const v={};let T=x.getAttribute("target").split("/");const L=T.shift();let ie=T.shift();const de=ie.indexOf("(")!==-1,et=ie.indexOf(".")!==-1;if(et)T=ie.split("."),ie=T.shift(),v.member=T.shift();else if(de){const ze=ie.split("(");ie=ze.shift();for(let $e=0;$e<ze.length;$e++)ze[$e]=parseInt(ze[$e].replace(/\)/,""));v.indices=ze}return v.id=L,v.sid=ie,v.arraySyntax=de,v.memberSyntax=et,v.sampler=o(x.getAttribute("source")),v}function b(x){const v=[],R=x.channels,T=x.samplers,L=x.sources;for(const ie in R)if(R.hasOwnProperty(ie)){const de=R[ie],et=T[de.sampler],ze=et.inputs.INPUT,$e=et.inputs.OUTPUT,ct=L[ze],Ee=L[$e],ot=U(de,ct,Ee);y(ot,v)}return v}function M(x){return _(vt.animations[x],b)}function U(x,v,R){const T=vt.nodes[x.id],L=bt(T.id),ie=T.transforms[x.sid],de=T.matrix.clone().transpose();let et,ze,$e,ct,Ee,ot;const it={};switch(ie){case"matrix":for($e=0,ct=v.array.length;$e<ct;$e++)if(et=v.array[$e],ze=$e*R.stride,it[et]===void 0&&(it[et]={}),x.arraySyntax===!0){const hn=R.array[ze],Zt=x.indices[0]+4*x.indices[1];it[et][Zt]=hn}else for(Ee=0,ot=R.stride;Ee<ot;Ee++)it[et][Ee]=R.array[ze+Ee];break;case"translate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break;case"rotate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break;case"scale":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break}const xt=C(it,de);return{name:L.uuid,keyframes:xt}}function C(x,v){const R=[];for(const L in x)R.push({time:parseFloat(L),value:x[L]});R.sort(T);for(let L=0;L<16;L++)N(R,L,v.elements[L]);return R;function T(L,ie){return L.time-ie.time}}const P=new I,D=new I,S=new zn;function y(x,v){const R=x.keyframes,T=x.name,L=[],ie=[],de=[],et=[];for(let ze=0,$e=R.length;ze<$e;ze++){const ct=R[ze],Ee=ct.time,ot=ct.value;H.fromArray(ot).transpose(),H.decompose(P,S,D),L.push(Ee),ie.push(P.x,P.y,P.z),de.push(S.x,S.y,S.z,S.w),et.push(D.x,D.y,D.z)}return ie.length>0&&v.push(new Is(T+".position",L,ie)),de.length>0&&v.push(new ur(T+".quaternion",L,de)),et.length>0&&v.push(new Is(T+".scale",L,et)),v}function N(x,v,R){let T,L=!0,ie,de;for(ie=0,de=x.length;ie<de;ie++)T=x[ie],T.value[v]===void 0?T.value[v]=null:L=!1;if(L===!0)for(ie=0,de=x.length;ie<de;ie++)T=x[ie],T.value[v]=R;else W(x,v)}function W(x,v){let R,T;for(let L=0,ie=x.length;L<ie;L++){const de=x[L];if(de.value[v]===null){if(R=X(x,L,v),T=Q(x,L,v),R===null){de.value[v]=T.value[v];continue}if(T===null){de.value[v]=R.value[v];continue}ne(de,R,T,v)}}}function X(x,v,R){for(;v>=0;){const T=x[v];if(T.value[R]!==null)return T;v--}return null}function Q(x,v,R){for(;v<x.length;){const T=x[v];if(T.value[R]!==null)return T;v++}return null}function ne(x,v,R,T){if(R.time-v.time===0){x.value[T]=v.value[T];return}x.value[T]=(x.time-v.time)*(R.value[T]-v.value[T])/(R.time-v.time)+v.value[T]}function G(x){const v={name:x.getAttribute("id")||"default",start:parseFloat(x.getAttribute("start")||0),end:parseFloat(x.getAttribute("end")||0),animations:[]};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"instance_animation":v.animations.push(o(L.getAttribute("url")));break}}vt.clips[x.getAttribute("id")]=v}function re(x){const v=[],R=x.name,T=x.end-x.start||-1,L=x.animations;for(let ie=0,de=L.length;ie<de;ie++){const et=M(L[ie]);for(let ze=0,$e=et.length;ze<$e;ze++)v.push(et[ze])}return new Bc(R,T,v)}function K(x){return _(vt.clips[x],re)}function ge(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"skin":v.id=o(L.getAttribute("source")),v.skin=be(L);break;case"morph":v.id=o(L.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}vt.controllers[x.getAttribute("id")]=v}function be(x){const v={sources:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"bind_shape_matrix":v.bindShapeMatrix=r(L.textContent);break;case"source":const ie=L.getAttribute("id");v.sources[ie]=Me(L);break;case"joints":v.joints=Ce(L);break;case"vertex_weights":v.vertexWeights=Ie(L);break}}return v}function Ce(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=L.getAttribute("semantic"),de=o(L.getAttribute("source"));v.inputs[ie]=de;break}}return v}function Ie(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=L.getAttribute("semantic"),de=o(L.getAttribute("source")),et=parseInt(L.getAttribute("offset"));v.inputs[ie]={id:de,offset:et};break;case"vcount":v.vcount=a(L.textContent);break;case"v":v.v=a(L.textContent);break}}return v}function He(x){const v={id:x.id},R=vt.geometries[v.id];return x.skin!==void 0&&(v.skin=J(x.skin),R.sources.skinIndices=v.skin.indices,R.sources.skinWeights=v.skin.weights),v}function J(x){const R={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},T=x.sources,L=x.vertexWeights,ie=L.vcount,de=L.v,et=L.inputs.JOINT.offset,ze=L.inputs.WEIGHT.offset,$e=x.sources[x.joints.inputs.JOINT],ct=x.sources[x.joints.inputs.INV_BIND_MATRIX],Ee=T[L.inputs.WEIGHT.id].array;let ot=0,it,xt,ft;for(it=0,ft=ie.length;it<ft;it++){const Zt=ie[it],qt=[];for(xt=0;xt<Zt;xt++){const jt=de[ot+et],ui=de[ot+ze],Pn=Ee[ui];qt.push({index:jt,weight:Pn}),ot+=2}for(qt.sort(hn),xt=0;xt<4;xt++){const jt=qt[xt];jt!==void 0?(R.indices.array.push(jt.index),R.weights.array.push(jt.weight)):(R.indices.array.push(0),R.weights.array.push(0))}}for(x.bindShapeMatrix?R.bindMatrix=new Et().fromArray(x.bindShapeMatrix).transpose():R.bindMatrix=new Et().identity(),it=0,ft=$e.array.length;it<ft;it++){const Zt=$e.array[it],qt=new Et().fromArray(ct.array,it*ct.stride).transpose();R.joints.push({name:Zt,boneInverse:qt})}return R;function hn(Zt,qt){return qt.weight-Zt.weight}}function ae(x){return _(vt.controllers[x],He)}function le(x){const v={init_from:n(x,"init_from")[0].textContent};vt.images[x.getAttribute("id")]=v}function ce(x){return x.build!==void 0?x.build:x.init_from}function Le(x){const v=vt.images[x];return v!==void 0?_(v,ce):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",x),null)}function ve(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"profile_COMMON":v.profile=Ae(L);break}}vt.effects[x.getAttribute("id")]=v}function Ae(x){const v={surfaces:{},samplers:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"newparam":st(L,v);break;case"technique":v.technique=O(L);break;case"extra":v.extra=Xe(L);break}}return v}function st(x,v){const R=x.getAttribute("sid");for(let T=0,L=x.childNodes.length;T<L;T++){const ie=x.childNodes[T];if(ie.nodeType===1)switch(ie.nodeName){case"surface":v.surfaces[R]=wt(ie);break;case"sampler2D":v.samplers[R]=yt(ie);break}}}function wt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"init_from":v.init_from=L.textContent;break}}return v}function yt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"source":v.source=L.textContent;break}}return v}function O(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"constant":case"lambert":case"blinn":case"phong":v.type=L.nodeName,v.parameters=Gt(L);break;case"extra":v.extra=Xe(L);break}}return v}function Gt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":v[L.nodeName]=Lt(L);break;case"transparent":v[L.nodeName]={opaque:L.hasAttribute("opaque")?L.getAttribute("opaque"):"A_ONE",data:Lt(L)};break}}return v}function Lt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"color":v[L.nodeName]=r(L.textContent);break;case"float":v[L.nodeName]=parseFloat(L.textContent);break;case"texture":v[L.nodeName]={id:L.getAttribute("texture"),extra:Tt(L)};break}}return v}function Tt(x){const v={technique:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"extra":Ge(L,v);break}}return v}function Ge(x,v){for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique":pt(L,v);break}}}function pt(x,v){for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":v.technique[L.nodeName]=parseFloat(L.textContent);break;case"wrapU":case"wrapV":L.textContent.toUpperCase()==="TRUE"?v.technique[L.nodeName]=1:L.textContent.toUpperCase()==="FALSE"?v.technique[L.nodeName]=0:v.technique[L.nodeName]=parseInt(L.textContent);break;case"bump":v[L.nodeName]=rn(L);break}}}function Xe(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique":v.technique=ut(L);break}}return v}function ut(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"double_sided":v[L.nodeName]=parseInt(L.textContent);break;case"bump":v[L.nodeName]=rn(L);break}}return v}function rn(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"texture":v[L.nodeName]={id:L.getAttribute("texture"),texcoord:L.getAttribute("texcoord"),extra:Tt(L)};break}}return v}function F(x){return x}function A(x){return _(vt.effects[x],F)}function ee(x){const v={name:x.getAttribute("name")};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"instance_effect":v.url=o(L.getAttribute("url"));break}}vt.materials[x.getAttribute("id")]=v}function fe(x){let v,R=x.slice((x.lastIndexOf(".")-1>>>0)+2);switch(R=R.toLowerCase(),R){case"tga":v=mn;break;default:v=on}return v}function xe(x){const v=A(x.url),R=v.profile.technique;let T;switch(R.type){case"phong":case"blinn":T=new Dn;break;case"lambert":T=new hp;break;default:T=new Bi;break}T.name=x.name||"";function L(ze,$e=null){const ct=v.profile.samplers[ze.id];let Ee=null;if(ct!==void 0){const ot=v.profile.surfaces[ct.source];Ee=Le(ot.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),Ee=Le(ze.id);if(Ee!==null){const ot=fe(Ee);if(ot!==void 0){const it=ot.load(Ee),xt=ze.extra;if(xt!==void 0&&xt.technique!==void 0&&c(xt.technique)===!1){const ft=xt.technique;it.wrapS=ft.wrapU?ai:Jn,it.wrapT=ft.wrapV?ai:Jn,it.offset.set(ft.offsetU||0,ft.offsetV||0),it.repeat.set(ft.repeatU||1,ft.repeatV||1)}else it.wrapS=ai,it.wrapT=ai;return $e!==null&&(it.colorSpace=$e),it}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",Ee),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",ze.id),null}const ie=R.parameters;for(const ze in ie){const $e=ie[ze];switch(ze){case"diffuse":$e.color&&T.color.fromArray($e.color),$e.texture&&(T.map=L($e.texture,Yt));break;case"specular":$e.color&&T.specular&&T.specular.fromArray($e.color),$e.texture&&(T.specularMap=L($e.texture));break;case"bump":$e.texture&&(T.normalMap=L($e.texture));break;case"ambient":$e.texture&&(T.lightMap=L($e.texture,Yt));break;case"shininess":$e.float&&T.shininess&&(T.shininess=$e.float);break;case"emission":$e.color&&T.emissive&&T.emissive.fromArray($e.color),$e.texture&&(T.emissiveMap=L($e.texture,Yt));break}}Vt.colorSpaceToWorking(T.color,Yt),T.specular&&Vt.colorSpaceToWorking(T.specular,Yt),T.emissive&&Vt.colorSpaceToWorking(T.emissive,Yt);let de=ie.transparent,et=ie.transparency;if(et===void 0&&de&&(et={float:1}),de===void 0&&et&&(de={opaque:"A_ONE",data:{color:[1,1,1,1]}}),de&&et)if(de.data.texture)T.transparent=!0;else{const ze=de.data.color;switch(de.opaque){case"A_ONE":T.opacity=ze[3]*et.float;break;case"RGB_ZERO":T.opacity=1-ze[0]*et.float;break;case"A_ZERO":T.opacity=1-ze[3]*et.float;break;case"RGB_ONE":T.opacity=ze[0]*et.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',de.opaque)}T.opacity<1&&(T.transparent=!0)}if(R.extra!==void 0&&R.extra.technique!==void 0){const ze=R.extra.technique;for(const $e in ze){const ct=ze[$e];switch($e){case"double_sided":T.side=ct===1?wn:Xn;break;case"bump":T.normalMap=L(ct.texture),T.normalScale=new Ke(1,1);break}}}return T}function he(x){return _(vt.materials[x],xe)}function rt(x){const v={name:x.getAttribute("name")};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"optics":v.optics=Be(L);break}}vt.cameras[x.getAttribute("id")]=v}function Be(x){for(let v=0;v<x.childNodes.length;v++){const R=x.childNodes[v];switch(R.nodeName){case"technique_common":return Ze(R)}}return{}}function Ze(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"perspective":case"orthographic":v.technique=T.nodeName,v.parameters=at(T);break}}return v}function at(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":v[T.nodeName]=parseFloat(T.textContent);break}}return v}function ye(x){let v;switch(x.optics.technique){case"perspective":v=new Sn(x.optics.parameters.yfov,x.optics.parameters.aspect_ratio,x.optics.parameters.znear,x.optics.parameters.zfar);break;case"orthographic":let R=x.optics.parameters.ymag,T=x.optics.parameters.xmag;const L=x.optics.parameters.aspect_ratio;T=T===void 0?R*L:T,R=R===void 0?T/L:R,T*=.5,R*=.5,v=new wa(-T,T,R,-R,x.optics.parameters.znear,x.optics.parameters.zfar);break;default:v=new Sn;break}return v.name=x.name||"",v}function Ye(x){const v=vt.cameras[x];return v!==void 0?_(v,ye):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",x),null)}function _t(x){let v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique_common":v=mt(L);break}}vt.lights[x.getAttribute("id")]=v}function mt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"directional":case"point":case"spot":case"ambient":v.technique=L.nodeName,v.parameters=ke(L)}}return v}function ke(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"color":const ie=r(L.textContent);v.color=new gt().fromArray(ie),Vt.colorSpaceToWorking(v.color,Yt);break;case"falloff_angle":v.falloffAngle=parseFloat(L.textContent);break;case"quadratic_attenuation":const de=parseFloat(L.textContent);v.distance=de?Math.sqrt(1/de):0;break}}return v}function Mt(x){let v;switch(x.technique){case"directional":v=new Au;break;case"point":v=new Eu;break;case"spot":v=new wp;break;case"ambient":v=new wu;break}return x.parameters.color&&v.color.copy(x.parameters.color),x.parameters.distance&&(v.distance=x.parameters.distance),v}function q(x){const v=vt.lights[x];return v!==void 0?_(v,Mt):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",x),null)}function qe(x){const v={name:x.getAttribute("name"),sources:{},vertices:{},primitives:[]},R=n(x,"mesh")[0];if(R!==void 0){for(let T=0;T<R.childNodes.length;T++){const L=R.childNodes[T];if(L.nodeType!==1)continue;const ie=L.getAttribute("id");switch(L.nodeName){case"source":v.sources[ie]=Me(L);break;case"vertices":v.vertices=z(L);break;case"polygons":console.warn("THREE.ColladaLoader: Unsupported primitive type: ",L.nodeName);break;case"lines":case"linestrips":case"polylist":case"triangles":v.primitives.push(B(L));break;default:console.log(L)}}vt.geometries[x.getAttribute("id")]=v}}function Me(x){const v={array:[],stride:3};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"float_array":v.array=r(T.textContent);break;case"Name_array":v.array=i(T.textContent);break;case"technique_common":const L=n(T,"accessor")[0];L!==void 0&&(v.stride=parseInt(L.getAttribute("stride")));break}}return v}function z(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];T.nodeType===1&&(v[T.getAttribute("semantic")]=o(T.getAttribute("source")))}return v}function B(x){const v={type:x.nodeName,material:x.getAttribute("material"),count:parseInt(x.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=o(L.getAttribute("source")),de=L.getAttribute("semantic"),et=parseInt(L.getAttribute("offset")),ze=parseInt(L.getAttribute("set")),$e=ze>0?de+ze:de;v.inputs[$e]={id:ie,offset:et},v.stride=Math.max(v.stride,et+1),de==="TEXCOORD"&&(v.hasUV=!0);break;case"vcount":v.vcount=a(L.textContent);break;case"p":v.p=a(L.textContent);break}}return v}function k(x){const v={};for(let R=0;R<x.length;R++){const T=x[R];v[T.type]===void 0&&(v[T.type]=[]),v[T.type].push(T)}return v}function te(x){let v=0;for(let R=0,T=x.length;R<T;R++)x[R].hasUV===!0&&v++;v>0&&v<x.length&&(x.uvsNeedsFix=!0)}function se(x){const v={},R=x.sources,T=x.vertices,L=x.primitives;if(L.length===0)return{};const ie=k(L);for(const de in ie){const et=ie[de];te(et),v[de]=oe(et,R,T)}return v}function oe(x,v,R){const T={},L={array:[],stride:0},ie={array:[],stride:0},de={array:[],stride:0},et={array:[],stride:0},ze={array:[],stride:0},$e={array:[],stride:4},ct={array:[],stride:4},Ee=new an,ot=[];let it=0;for(let xt=0;xt<x.length;xt++){const ft=x[xt],hn=ft.inputs;let Zt=0;switch(ft.type){case"lines":case"linestrips":Zt=ft.count*2;break;case"triangles":Zt=ft.count*3;break;case"polylist":for(let qt=0;qt<ft.count;qt++){const jt=ft.vcount[qt];switch(jt){case 3:Zt+=3;break;case 4:Zt+=6;break;default:Zt+=(jt-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknown primitive type:",ft.type)}Ee.addGroup(it,Zt,xt),it+=Zt,ft.material&&ot.push(ft.material);for(const qt in hn){const jt=hn[qt];switch(qt){case"VERTEX":for(const ui in R){const Pn=R[ui];switch(ui){case"POSITION":const is=L.array.length;if(ue(ft,v[Pn],jt.offset,L.array),L.stride=v[Pn].stride,v.skinWeights&&v.skinIndices&&(ue(ft,v.skinIndices,jt.offset,$e.array),ue(ft,v.skinWeights,jt.offset,ct.array)),ft.hasUV===!1&&x.uvsNeedsFix===!0){const $u=(L.array.length-is)/L.stride;for(let ql=0;ql<$u;ql++)de.array.push(0,0)}break;case"NORMAL":ue(ft,v[Pn],jt.offset,ie.array),ie.stride=v[Pn].stride;break;case"COLOR":ue(ft,v[Pn],jt.offset,ze.array),ze.stride=v[Pn].stride;break;case"TEXCOORD":ue(ft,v[Pn],jt.offset,de.array),de.stride=v[Pn].stride;break;case"TEXCOORD1":ue(ft,v[Pn],jt.offset,et.array),de.stride=v[Pn].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',ui)}}break;case"NORMAL":ue(ft,v[jt.id],jt.offset,ie.array),ie.stride=v[jt.id].stride;break;case"COLOR":ue(ft,v[jt.id],jt.offset,ze.array,!0),ze.stride=v[jt.id].stride;break;case"TEXCOORD":ue(ft,v[jt.id],jt.offset,de.array),de.stride=v[jt.id].stride;break;case"TEXCOORD1":ue(ft,v[jt.id],jt.offset,et.array),et.stride=v[jt.id].stride;break}}}return L.array.length>0&&Ee.setAttribute("position",new It(L.array,L.stride)),ie.array.length>0&&Ee.setAttribute("normal",new It(ie.array,ie.stride)),ze.array.length>0&&Ee.setAttribute("color",new It(ze.array,ze.stride)),de.array.length>0&&Ee.setAttribute("uv",new It(de.array,de.stride)),et.array.length>0&&Ee.setAttribute("uv1",new It(et.array,et.stride)),$e.array.length>0&&Ee.setAttribute("skinIndex",new It($e.array,$e.stride)),ct.array.length>0&&Ee.setAttribute("skinWeight",new It(ct.array,ct.stride)),T.data=Ee,T.type=x[0].type,T.materialKeys=ot,T}function ue(x,v,R,T,L=!1){const ie=x.p,de=x.stride,et=x.vcount;function ze(Ee){let ot=ie[Ee+R]*ct;const it=ot+ct;for(;ot<it;ot++)T.push($e[ot]);if(L){const xt=T.length-ct-1;cn.setRGB(T[xt+0],T[xt+1],T[xt+2],Yt),T[xt+0]=cn.r,T[xt+1]=cn.g,T[xt+2]=cn.b}}const $e=v.array,ct=v.stride;if(x.vcount!==void 0){let Ee=0;for(let ot=0,it=et.length;ot<it;ot++){const xt=et[ot];if(xt===4){const ft=Ee+de*0,hn=Ee+de*1,Zt=Ee+de*2,qt=Ee+de*3;ze(ft),ze(hn),ze(qt),ze(hn),ze(Zt),ze(qt)}else if(xt===3){const ft=Ee+de*0,hn=Ee+de*1,Zt=Ee+de*2;ze(ft),ze(hn),ze(Zt)}else if(xt>4)for(let ft=1,hn=xt-2;ft<=hn;ft++){const Zt=Ee+de*0,qt=Ee+de*ft,jt=Ee+de*(ft+1);ze(Zt),ze(qt),ze(jt)}Ee+=de*xt}}else for(let Ee=0,ot=ie.length;Ee<ot;Ee+=de)ze(Ee)}function _e(x){return _(vt.geometries[x],se)}function Se(x){const v={name:x.getAttribute("name")||"",joints:{},links:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"technique_common":Ne(T,v);break}}vt.kinematicsModels[x.getAttribute("id")]=v}function je(x){return x.build!==void 0?x.build:x}function Z(x){return _(vt.kinematicsModels[x],je)}function Ne(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"joint":v.joints[T.getAttribute("sid")]=At(T);break;case"link":v.links.push(Wt(T));break}}}function At(x){let v;for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"prismatic":case"revolute":v=Nt(T);break}}return v}function Nt(x){const v={sid:x.getAttribute("sid"),name:x.getAttribute("name")||"",axis:new I,limits:{min:0,max:0},type:x.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"axis":const L=r(T.textContent);v.axis.fromArray(L);break;case"limits":const ie=T.getElementsByTagName("max")[0],de=T.getElementsByTagName("min")[0];v.limits.max=parseFloat(ie.textContent),v.limits.min=parseFloat(de.textContent);break}}return v.limits.min>=v.limits.max&&(v.static=!0),v.middlePosition=(v.limits.min+v.limits.max)/2,v}function Wt(x){const v={sid:x.getAttribute("sid"),name:x.getAttribute("name")||"",attachments:[],transforms:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"attachment_full":v.attachments.push(Kt(T));break;case"matrix":case"translate":case"rotate":v.transforms.push(dt(T));break}}return v}function Kt(x){const v={joint:x.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"link":v.links.push(Wt(T));break;case"matrix":case"translate":case"rotate":v.transforms.push(dt(T));break}}return v}function dt(x){const v={type:x.nodeName},R=r(x.textContent);switch(v.type){case"matrix":v.obj=new Et,v.obj.fromArray(R).transpose();break;case"translate":v.obj=new I,v.obj.fromArray(R);break;case"rotate":v.obj=new I,v.obj.fromArray(R),v.angle=Ki.degToRad(R[3]);break}return v}function Pt(x){const v={name:x.getAttribute("name")||"",rigidBodies:{}};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"rigid_body":v.rigidBodies[T.getAttribute("name")]={},Re(T,v.rigidBodies[T.getAttribute("name")]);break}}vt.physicsModels[x.getAttribute("id")]=v}function Re(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"technique_common":Xt(T,v);break}}}function Xt(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"inertia":v.inertia=r(T.textContent);break;case"mass":v.mass=r(T.textContent)[0];break}}}function Fe(x){const v={bindJointAxis:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"bind_joint_axis":v.bindJointAxis.push(Ct(T));break}}vt.kinematicsScenes[o(x.getAttribute("url"))]=v}function Ct(x){const v={target:x.getAttribute("target").split("/").pop()};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"axis":const L=T.getElementsByTagName("param")[0];v.axis=L.textContent;const ie=v.axis.split("inst_").pop().split("axis")[0];v.jointIndex=ie.substring(0,ie.length-1);break}}return v}function Pe(x){return x.build!==void 0?x.build:x}function Bt(x){return _(vt.kinematicsScenes[x],Pe)}function Je(){const x=Object.keys(vt.kinematicsModels)[0],v=Object.keys(vt.kinematicsScenes)[0],R=Object.keys(vt.visualScenes)[0];if(x===void 0||v===void 0)return;const T=Z(x),L=Bt(v),ie=Rt(R),de=L.bindJointAxis,et={};for(let ct=0,Ee=de.length;ct<Ee;ct++){const ot=de[ct],it=Ut.querySelector('[sid="'+ot.target+'"]');if(it){const xt=it.parentElement;ze(ot.jointIndex,xt)}}function ze(ct,Ee){const ot=Ee.getAttribute("name"),it=T.joints[ct];ie.traverse(function(xt){xt.name===ot&&(et[ct]={object:xt,transforms:St(Ee),joint:it,position:it.zeroPosition})})}const $e=new Et;hi={joints:T&&T.joints,getJointValue:function(ct){const Ee=et[ct];if(Ee)return Ee.position;console.warn("THREE.ColladaLoader: Joint "+ct+" doesn't exist.")},setJointValue:function(ct,Ee){const ot=et[ct];if(ot){const it=ot.joint;if(Ee>it.limits.max||Ee<it.limits.min)console.warn("THREE.ColladaLoader: Joint "+ct+" value "+Ee+" outside of limits (min: "+it.limits.min+", max: "+it.limits.max+").");else if(it.static)console.warn("THREE.ColladaLoader: Joint "+ct+" is static.");else{const xt=ot.object,ft=it.axis,hn=ot.transforms;H.identity();for(let Zt=0;Zt<hn.length;Zt++){const qt=hn[Zt];if(qt.sid&&qt.sid.indexOf(ct)!==-1)switch(it.type){case"revolute":H.multiply($e.makeRotationAxis(ft,Ki.degToRad(Ee)));break;case"prismatic":H.multiply($e.makeTranslation(ft.x*Ee,ft.y*Ee,ft.z*Ee));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+it.type);break}else switch(qt.type){case"matrix":H.multiply(qt.obj);break;case"translate":H.multiply($e.makeTranslation(qt.obj.x,qt.obj.y,qt.obj.z));break;case"scale":H.scale(qt.obj);break;case"rotate":H.multiply($e.makeRotationAxis(qt.obj,qt.angle));break}}xt.matrix.copy(H),xt.matrix.decompose(xt.position,xt.quaternion,xt.scale),et[ct].position=Ee}}else console.log("THREE.ColladaLoader: "+ct+" does not exist.")}}}function St(x){const v=[],R=Ut.querySelector('[id="'+x.id+'"]');for(let T=0;T<R.childNodes.length;T++){const L=R.childNodes[T];if(L.nodeType!==1)continue;let ie,de;switch(L.nodeName){case"matrix":ie=r(L.textContent);const et=new Et().fromArray(ie).transpose();v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:et});break;case"translate":case"scale":ie=r(L.textContent),de=new I().fromArray(ie),v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:de});break;case"rotate":ie=r(L.textContent),de=new I().fromArray(ie);const ze=Ki.degToRad(ie[3]);v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:de,angle:ze});break}}return v}function w(x){const v=x.getElementsByTagName("node");for(let R=0;R<v.length;R++){const T=v[R];T.hasAttribute("id")===!1&&T.setAttribute("id",l())}}const H=new Et,$=new I;function Y(x){const v={name:x.getAttribute("name")||"",type:x.getAttribute("type"),id:x.getAttribute("id"),sid:x.getAttribute("sid"),matrix:new Et,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{}};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType!==1)continue;let L;switch(T.nodeName){case"node":v.nodes.push(T.getAttribute("id")),Y(T);break;case"instance_camera":v.instanceCameras.push(o(T.getAttribute("url")));break;case"instance_controller":v.instanceControllers.push(j(T));break;case"instance_light":v.instanceLights.push(o(T.getAttribute("url")));break;case"instance_geometry":v.instanceGeometries.push(j(T));break;case"instance_node":v.instanceNodes.push(o(T.getAttribute("url")));break;case"matrix":L=r(T.textContent),v.matrix.multiply(H.fromArray(L).transpose()),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"translate":L=r(T.textContent),$.fromArray(L),v.matrix.multiply(H.makeTranslation($.x,$.y,$.z)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"rotate":L=r(T.textContent);const ie=Ki.degToRad(L[3]);v.matrix.multiply(H.makeRotationAxis($.fromArray(L),ie)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"scale":L=r(T.textContent),v.matrix.scale($.fromArray(L)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"extra":break;default:console.log(T)}}return tt(v.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",v.id):vt.nodes[v.id]=v,v}function j(x){const v={id:o(x.getAttribute("url")),materials:{},skeletons:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"bind_material":const L=T.getElementsByTagName("instance_material");for(let ie=0;ie<L.length;ie++){const de=L[ie],et=de.getAttribute("symbol"),ze=de.getAttribute("target");v.materials[et]=o(ze)}break;case"skeleton":v.skeletons.push(o(T.textContent));break}}return v}function me(x,v){const R=[],T=[];let L,ie,de;for(L=0;L<x.length;L++){const $e=x[L];let ct;if(tt($e))ct=bt($e),Te(ct,v,R);else if(Dt($e)){const ot=vt.visualScenes[$e].children;for(let it=0;it<ot.length;it++){const xt=ot[it];if(xt.type==="JOINT"){const ft=bt(xt.id);Te(ft,v,R)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",$e)}for(L=0;L<v.length;L++)for(ie=0;ie<R.length;ie++)if(de=R[ie],de.bone.name===v[L].name){T[L]=de,de.processed=!0;break}for(L=0;L<R.length;L++)de=R[L],de.processed===!1&&(T.push(de),de.processed=!0);const et=[],ze=[];for(L=0;L<T.length;L++)de=T[L],et.push(de.bone),ze.push(de.boneInverse);return new Ul(et,ze)}function Te(x,v,R){x.traverse(function(T){if(T.isBone===!0){let L;for(let ie=0;ie<v.length;ie++){const de=v[ie];if(de.name===T.name){L=de.boneInverse;break}}L===void 0&&(L=new Et),R.push({bone:T,boneInverse:L,processed:!1})}})}function We(x){const v=[],R=x.matrix,T=x.nodes,L=x.type,ie=x.instanceCameras,de=x.instanceControllers,et=x.instanceLights,ze=x.instanceGeometries,$e=x.instanceNodes;for(let Ee=0,ot=T.length;Ee<ot;Ee++)v.push(bt(T[Ee]));for(let Ee=0,ot=ie.length;Ee<ot;Ee++){const it=Ye(ie[Ee]);it!==null&&v.push(it.clone())}for(let Ee=0,ot=de.length;Ee<ot;Ee++){const it=de[Ee],xt=ae(it.id),ft=_e(xt.id),hn=lt(ft,it.materials),Zt=it.skeletons,qt=xt.skin.joints,jt=me(Zt,qt);for(let ui=0,Pn=hn.length;ui<Pn;ui++){const is=hn[ui];is.isSkinnedMesh&&(is.bind(jt,xt.skin.bindMatrix),is.normalizeSkinWeights()),v.push(is)}}for(let Ee=0,ot=et.length;Ee<ot;Ee++){const it=q(et[Ee]);it!==null&&v.push(it.clone())}for(let Ee=0,ot=ze.length;Ee<ot;Ee++){const it=ze[Ee],xt=_e(it.id),ft=lt(xt,it.materials);for(let hn=0,Zt=ft.length;hn<Zt;hn++)v.push(ft[hn])}for(let Ee=0,ot=$e.length;Ee<ot;Ee++)v.push(bt($e[Ee]).clone());let ct;if(T.length===0&&v.length===1)ct=v[0];else{ct=L==="JOINT"?new pu:new Kn;for(let Ee=0;Ee<v.length;Ee++)ct.add(v[Ee])}return ct.name=L==="JOINT"?x.sid:x.name,ct.matrix.copy(R),ct.matrix.decompose(ct.position,ct.quaternion,ct.scale),ct}const Oe=new Bi({name:Qn.DEFAULT_MATERIAL_NAME,color:16711935});function nt(x,v){const R=[];for(let T=0,L=x.length;T<L;T++){const ie=v[x[T]];ie===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",x[T]),R.push(Oe)):R.push(he(ie))}return R}function lt(x,v){const R=[];for(const T in x){const L=x[T],ie=nt(L.materialKeys,v);if(ie.length===0&&(T==="lines"||T==="linestrips"?ie.push(new Si):ie.push(new Dn)),T==="lines"||T==="linestrips")for(let $e=0,ct=ie.length;$e<ct;$e++){const Ee=ie[$e];if(Ee.isMeshPhongMaterial===!0||Ee.isMeshLambertMaterial===!0){const ot=new Si;ot.color.copy(Ee.color),ot.opacity=Ee.opacity,ot.transparent=Ee.transparent,ie[$e]=ot}}const de=L.data.attributes.skinIndex!==void 0,et=ie.length===1?ie[0]:ie;let ze;switch(T){case"lines":ze=new ga(L.data,et);break;case"linestrips":ze=new ba(L.data,et);break;case"triangles":case"polylist":de?ze=new Hf(L.data,et):ze=new $t(L.data,et);break}R.push(ze)}return R}function tt(x){return vt.nodes[x]!==void 0}function bt(x){return _(vt.nodes[x],We)}function pe(x){const v={name:x.getAttribute("name"),children:[]};w(x);const R=n(x,"node");for(let T=0;T<R.length;T++)v.children.push(Y(R[T]));vt.visualScenes[x.getAttribute("id")]=v}function ht(x){const v=new Kn;v.name=x.name;const R=x.children;for(let T=0;T<R.length;T++){const L=R[T];v.add(bt(L.id))}return v}function Dt(x){return vt.visualScenes[x]!==void 0}function Rt(x){return _(vt.visualScenes[x],ht)}function Qe(x){const v=n(x,"instance_visual_scene")[0];return Rt(o(v.getAttribute("url")))}function sn(){const x=vt.clips;if(c(x)===!0){if(c(vt.animations)===!1){const v=[];for(const R in vt.animations){const T=M(R);for(let L=0,ie=T.length;L<ie;L++)v.push(T[L])}un.push(new Bc("default",-1,v))}}else for(const v in x)un.push(K(v))}function De(x){let v="";const R=[x];for(;R.length;){const T=R.shift();T.nodeType===Node.TEXT_NODE?v+=T.textContent:(v+=`
|
|
4205
|
-
`,R.push(...T.childNodes))}return v.trim()}if(e.length===0)return{scene:new Pl};const
|
|
4206
|
-
`,v),null}const ln=Ut.getAttribute("version");console.debug("THREE.ColladaLoader: File version",ln);const kt=h(n(Ut,"asset")[0]),on=new Bl(this.manager);on.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);let mn;Fh&&(mn=new Fh(this.manager),mn.setPath(this.resourcePath||t));const cn=new gt,un=[];let hi={},kn=0;const vt={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{}};f(Ut,"library_animations","animation",g),f(Ut,"library_animation_clips","animation_clip",G),f(Ut,"library_controllers","controller",ge),f(Ut,"library_images","image",le),f(Ut,"library_effects","effect",ve),f(Ut,"library_materials","material",ee),f(Ut,"library_cameras","camera",rt),f(Ut,"library_lights","light",_t),f(Ut,"library_geometries","geometry",qe),f(Ut,"library_nodes","node",Y),f(Ut,"library_visual_scenes","visual_scene",pe),f(Ut,"library_kinematics_models","kinematics_model",Se),f(Ut,"library_physics_models","physics_model",Pt),f(Ut,"scene","instance_kinematics_scene",Fe),m(vt.animations,b),m(vt.clips,re),m(vt.controllers,He),m(vt.images,ce),m(vt.effects,F),m(vt.materials,xe),m(vt.cameras,ye),m(vt.lights,Mt),m(vt.geometries,se),m(vt.visualScenes,ht),sn(),Je();const wi=Qe(n(Ut,"scene")[0]);return wi.animations=un,kt.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),wi.rotation.set(-Math.PI/2,0,0)),wi.scale.multiplyScalar(kt.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),un},kinematics:hi,library:vt,scene:wi}}}const Oh=new I,Zg=new Ln,Jr=new Et,Ui=new Et,Kr=new zn,Zr=new I(1,1,1),Qr=new I;class Ca extends nn{constructor(...e){super(...e),this.urdfNode=null,this.urdfName=""}copy(e,t){return super.copy(e,t),this.urdfNode=e.urdfNode,this.urdfName=e.urdfName,this}}class Qg extends Ca{constructor(...e){super(...e),this.isURDFCollider=!0,this.type="URDFCollider"}}class e3 extends Ca{constructor(...e){super(...e),this.isURDFVisual=!0,this.type="URDFVisual"}}class Bu extends Ca{constructor(...e){super(...e),this.isURDFLink=!0,this.type="URDFLink"}}class ku extends Ca{get jointType(){return this._jointType}set jointType(e){if(this.jointType!==e)switch(this._jointType=e,this.matrixWorldNeedsUpdate=!0,e){case"fixed":this.jointValue=[];break;case"continuous":case"revolute":case"prismatic":this.jointValue=new Array(1).fill(0);break;case"planar":this.jointValue=new Array(3).fill(0),this.axis=new I(0,0,1);break;case"floating":this.jointValue=new Array(6).fill(0);break}}get angle(){return this.jointValue[0]}constructor(...e){super(...e),this.isURDFJoint=!0,this.type="URDFJoint",this.jointValue=null,this.jointType="fixed",this.axis=new I(1,0,0),this.limit={lower:0,upper:0},this.ignoreLimits=!1,this.origPosition=null,this.origQuaternion=null,this.mimicJoints=[]}copy(e,t){return super.copy(e,t),this.jointType=e.jointType,this.axis=e.axis.clone(),this.limit.lower=e.limit.lower,this.limit.upper=e.limit.upper,this.ignoreLimits=!1,this.jointValue=[...e.jointValue],this.origPosition=e.origPosition?e.origPosition.clone():null,this.origQuaternion=e.origQuaternion?e.origQuaternion.clone():null,this.mimicJoints=[...e.mimicJoints],this}setJointValue(...e){e=e.map(n=>n===null?null:parseFloat(n)),(!this.origPosition||!this.origQuaternion)&&(this.origPosition=this.position.clone(),this.origQuaternion=this.quaternion.clone());let t=!1;switch(this.mimicJoints.forEach(n=>{t=n.updateFromMimickedJoint(...e)||t}),this.jointType){case"fixed":return t;case"continuous":case"revolute":{let n=e[0];return n==null||n===this.jointValue[0]?t:(!this.ignoreLimits&&this.jointType==="revolute"&&(n=Math.min(this.limit.upper,n),n=Math.max(this.limit.lower,n)),this.quaternion.setFromAxisAngle(this.axis,n).premultiply(this.origQuaternion),this.jointValue[0]!==n?(this.jointValue[0]=n,this.matrixWorldNeedsUpdate=!0,!0):t)}case"prismatic":{let n=e[0];return n==null||n===this.jointValue[0]?t:(this.ignoreLimits||(n=Math.min(this.limit.upper,n),n=Math.max(this.limit.lower,n)),this.position.copy(this.origPosition),Oh.copy(this.axis).applyEuler(this.rotation),this.position.addScaledVector(Oh,n),this.jointValue[0]!==n?(this.jointValue[0]=n,this.matrixWorldNeedsUpdate=!0,!0):t)}case"floating":return this.jointValue.every((n,i)=>e[i]===n||e[i]===null)?t:(this.jointValue[0]=e[0]!==null?e[0]:this.jointValue[0],this.jointValue[1]=e[1]!==null?e[1]:this.jointValue[1],this.jointValue[2]=e[2]!==null?e[2]:this.jointValue[2],this.jointValue[3]=e[3]!==null?e[3]:this.jointValue[3],this.jointValue[4]=e[4]!==null?e[4]:this.jointValue[4],this.jointValue[5]=e[5]!==null?e[5]:this.jointValue[5],Ui.compose(this.origPosition,this.origQuaternion,Zr),Kr.setFromEuler(Zg.set(this.jointValue[3],this.jointValue[4],this.jointValue[5],"XYZ")),Qr.set(this.jointValue[0],this.jointValue[1],this.jointValue[2]),Jr.compose(Qr,Kr,Zr),Ui.premultiply(Jr),this.position.setFromMatrixPosition(Ui),this.rotation.setFromRotationMatrix(Ui),this.matrixWorldNeedsUpdate=!0,!0);case"planar":return this.jointValue.every((n,i)=>e[i]===n||e[i]===null)?t:(this.jointValue[0]=e[0]!==null?e[0]:this.jointValue[0],this.jointValue[1]=e[1]!==null?e[1]:this.jointValue[1],this.jointValue[2]=e[2]!==null?e[2]:this.jointValue[2],Ui.compose(this.origPosition,this.origQuaternion,Zr),Kr.setFromAxisAngle(this.axis,this.jointValue[2]),Qr.set(this.jointValue[0],this.jointValue[1],0),Jr.compose(Qr,Kr,Zr),Ui.premultiply(Jr),this.position.setFromMatrixPosition(Ui),this.rotation.setFromRotationMatrix(Ui),this.matrixWorldNeedsUpdate=!0,!0)}return t}}class zh extends ku{constructor(...e){super(...e),this.type="URDFMimicJoint",this.mimicJoint=null,this.offset=0,this.multiplier=1}updateFromMimickedJoint(...e){const t=e.map(n=>n*this.multiplier+this.offset);return super.setJointValue(...t)}copy(e,t){return super.copy(e,t),this.mimicJoint=e.mimicJoint,this.offset=e.offset,this.multiplier=e.multiplier,this}}class t3 extends Bu{constructor(...e){super(...e),this.isURDFRobot=!0,this.urdfNode=null,this.urdfRobotNode=null,this.robotName=null,this.links=null,this.joints=null,this.colliders=null,this.visual=null,this.frames=null}copy(e,t){super.copy(e,t),this.urdfRobotNode=e.urdfRobotNode,this.robotName=e.robotName,this.links={},this.joints={},this.colliders={},this.visual={},this.traverse(n=>{n.isURDFJoint&&n.urdfName in e.joints&&(this.joints[n.urdfName]=n),n.isURDFLink&&n.urdfName in e.links&&(this.links[n.urdfName]=n),n.isURDFCollider&&n.urdfName in e.colliders&&(this.colliders[n.urdfName]=n),n.isURDFVisual&&n.urdfName in e.visual&&(this.visual[n.urdfName]=n)});for(const n in this.joints)this.joints[n].mimicJoints=this.joints[n].mimicJoints.map(i=>this.joints[i.name]);return this.frames={...this.colliders,...this.visual,...this.links,...this.joints},this}getFrame(e){return this.frames[e]}setJointValue(e,...t){const n=this.joints[e];return n?n.setJointValue(...t):!1}setJointValues(e){let t=!1;for(const n in e){const i=e[n];Array.isArray(i)?t=this.setJointValue(n,...i)||t:t=this.setJointValue(n,i)||t}return t}}const yo=new zn,Bh=new Ln;function bs(s){return s?s.trim().split(/\s+/g).map(e=>parseFloat(e)):[0,0,0]}function kh(s,e,t=!1){t||s.rotation.set(0,0,0),Bh.set(e[0],e[1],e[2],"ZYX"),yo.setFromEuler(Bh),yo.multiply(s.quaternion),s.quaternion.copy(yo)}class Vu{constructor(e){this.manager=e||zl,this.loadMeshCb=this.defaultMeshLoader.bind(this),this.parseVisual=!0,this.parseCollision=!1,this.packages="",this.workingPath="",this.fetchOptions={}}loadAsync(e){return new Promise((t,n)=>{this.load(e,t,null,n)})}load(e,t,n,i){const r=this.manager,a=Vl.extractUrlBase(e),o=this.manager.resolveURL(e);r.itemStart(o),fetch(o,this.fetchOptions).then(l=>{if(l.ok)return n&&n(null),l.text();throw new Error(`URDFLoader: Failed to load url '${o}' with error code ${l.status} : ${l.statusText}.`)}).then(l=>{const c=this.parse(l,this.workingPath||a);t(c),r.itemEnd(o)}).catch(l=>{i?i(l):console.error("URDFLoader: Error loading file.",l),r.itemError(o),r.itemEnd(o)})}parse(e,t=this.workingPath){const n=this.packages,i=this.loadMeshCb,r=this.parseVisual,a=this.parseCollision,o=this.manager,l={},c={},h={};function d(E){if(!/^package:\/\//.test(E))return t?t+E:E;const[b,M]=E.replace(/^package:\/\//,"").split(/\/(.+)/);if(typeof n=="string")return n.endsWith(b)?n+"/"+M:n+"/"+b+"/"+M;if(n instanceof Function)return n(b)+"/"+M;if(typeof n=="object")return b in n?n[b]+"/"+M:(console.error(`URDFLoader : ${b} not found in provided package list.`),null)}function u(E){let b;E instanceof Document?b=[...E.children]:E instanceof Element?b=[E]:b=[...new DOMParser().parseFromString(E,"text/xml").children];const M=b.filter(U=>U.nodeName==="robot").pop();return f(M)}function f(E){const b=[...E.children],M=b.filter(N=>N.nodeName.toLowerCase()==="link"),U=b.filter(N=>N.nodeName.toLowerCase()==="joint"),C=b.filter(N=>N.nodeName.toLowerCase()==="material"),P=new t3;P.robotName=E.getAttribute("name"),P.urdfRobotNode=E,C.forEach(N=>{const W=N.getAttribute("name");h[W]=g(N)});const D={},S={};M.forEach(N=>{const W=N.getAttribute("name"),X=E.querySelector(`child[link="${W}"]`)===null;l[W]=_(N,D,S,X?P:null)}),U.forEach(N=>{const W=N.getAttribute("name");c[W]=m(N)}),P.joints=c,P.links=l,P.colliders=S,P.visual=D;const y=Object.values(c);return y.forEach(N=>{N instanceof zh&&c[N.mimicJoint].mimicJoints.push(N)}),y.forEach(N=>{const W=new Set,X=Q=>{if(W.has(Q))throw new Error("URDFLoader: Detected an infinite loop of mimic joints.");W.add(Q),Q.mimicJoints.forEach(ne=>{X(ne)})};X(N)}),P.frames={...S,...D,...l,...c},P}function m(E){const b=[...E.children],M=E.getAttribute("type");let U;const C=b.find(W=>W.nodeName.toLowerCase()==="mimic");C?(U=new zh,U.mimicJoint=C.getAttribute("joint"),U.multiplier=parseFloat(C.getAttribute("multiplier")||1),U.offset=parseFloat(C.getAttribute("offset")||0)):U=new ku,U.urdfNode=E,U.name=E.getAttribute("name"),U.urdfName=U.name,U.jointType=M;let P=null,D=null,S=[0,0,0],y=[0,0,0];b.forEach(W=>{const X=W.nodeName.toLowerCase();X==="origin"?(S=bs(W.getAttribute("xyz")),y=bs(W.getAttribute("rpy"))):X==="child"?D=l[W.getAttribute("link")]:X==="parent"?P=l[W.getAttribute("link")]:X==="limit"&&(U.limit.lower=parseFloat(W.getAttribute("lower")||U.limit.lower),U.limit.upper=parseFloat(W.getAttribute("upper")||U.limit.upper))}),P.add(U),U.add(D),kh(U,y),U.position.set(S[0],S[1],S[2]);const N=b.filter(W=>W.nodeName.toLowerCase()==="axis")[0];if(N){const W=N.getAttribute("xyz").split(/\s+/g).map(X=>parseFloat(X));U.axis=new I(W[0],W[1],W[2]),U.axis.normalize()}return U}function _(E,b,M,U=null){U===null&&(U=new Bu);const C=[...E.children];return U.name=E.getAttribute("name"),U.urdfName=U.name,U.urdfNode=E,r&&C.filter(D=>D.nodeName.toLowerCase()==="visual").forEach(D=>{const S=p(D,h);if(U.add(S),D.hasAttribute("name")){const y=D.getAttribute("name");S.name=y,S.urdfName=y,b[y]=S}}),a&&C.filter(D=>D.nodeName.toLowerCase()==="collision").forEach(D=>{const S=p(D);if(U.add(S),D.hasAttribute("name")){const y=D.getAttribute("name");S.name=y,S.urdfName=y,M[y]=S}}),U}function g(E){const b=[...E.children],M=new Dn;return M.name=E.getAttribute("name")||"",b.forEach(U=>{const C=U.nodeName.toLowerCase();if(C==="color"){const P=U.getAttribute("rgba").split(/\s/g).map(D=>parseFloat(D));M.color.setRGB(P[0],P[1],P[2]),M.opacity=P[3],M.transparent=P[3]<1,M.depthWrite=!M.transparent}else if(C==="texture"){const P=U.getAttribute("filename");if(P){const D=new Bl(o),S=d(P);M.map=D.load(S),M.map.colorSpace=Yt}}}),M}function p(E,b={}){const M=E.nodeName.toLowerCase()==="collision",U=[...E.children];let C=null;const P=U.filter(S=>S.nodeName.toLowerCase()==="material")[0];if(P){const S=P.getAttribute("name");S&&S in b?C=b[S]:C=g(P)}else C=new Dn;const D=M?new Qg:new e3;return D.urdfNode=E,U.forEach(S=>{const y=S.nodeName.toLowerCase();if(y==="geometry"){const N=S.children[0].nodeName.toLowerCase();if(N==="mesh"){const W=S.children[0].getAttribute("filename"),X=d(W);if(X!==null){const Q=S.children[0].getAttribute("scale");if(Q){const ne=bs(Q);D.scale.set(ne[0],ne[1],ne[2])}i(X,o,(ne,G)=>{G?console.error("URDFLoader: Error loading mesh.",G):ne&&(ne instanceof $t&&(ne.material=C),ne.position.set(0,0,0),ne.quaternion.identity(),D.add(ne))})}}else if(N==="box"){const W=new $t;W.geometry=new ki(1,1,1),W.material=C;const X=bs(S.children[0].getAttribute("size"));W.scale.set(X[0],X[1],X[2]),D.add(W)}else if(N==="sphere"){const W=new $t;W.geometry=new Ea(1,30,30),W.material=C;const X=parseFloat(S.children[0].getAttribute("radius"))||0;W.scale.set(X,X,X),D.add(W)}else if(N==="cylinder"){const W=new $t;W.geometry=new Il(1,1,1,30),W.material=C;const X=parseFloat(S.children[0].getAttribute("radius"))||0,Q=parseFloat(S.children[0].getAttribute("length"))||0;W.scale.set(X,Q,X),W.rotation.set(Math.PI/2,0,0),D.add(W)}}else if(y==="origin"){const N=bs(S.getAttribute("xyz")),W=bs(S.getAttribute("rpy"));D.position.set(N[0],N[1],N[2]),D.rotation.set(0,0,0),kh(D,W)}}),D}return u(e)}defaultMeshLoader(e,t,n){/\.stl$/i.test(e)?new nr(t).load(e,r=>{const a=new $t(r,new Dn);n(a)}):/\.dae$/i.test(e)?new Kg(t).load(e,r=>n(r.scene)):console.warn(`URDFLoader: Could not load model at ${e}.
|
|
4207
|
-
No loader available`)}}const n3=Gh.useModelComp(Ue.pinia),{systemPath:Vh}=Ue.storeToRefs(n3),ea=V.ref(),Hh=new Map;function i3(s,e,t,n,i){const r=async u=>{try{const f=await si.downloadAvatarApi({url:u});if(f.status!==200)throw new Error(`下载失败: ${f.status}`);return f.data}catch(f){throw console.error("addModelFromUrl失败:",f),f}},a=u=>new Promise((f,m)=>{const _=new FileReader;_.onload=g=>{try{const p=g.target.result,b=new ha().parse(p);b.preload(),f(b)}catch(p){m(p)}},_.onerror=()=>{m(new Error("MTL文件读取失败"))},_.readAsText(u)}),o=async u=>{const f={materials:{},create:function(m){return this.materials[m]?this.materials[m]:(console.warn(`Material '${m}' not found, using default material`),new Dn({color:8947848,side:wn}))},getAsArray:function(){const m=[];for(const _ in this.materials)m.push(this.materials[_]);return m},preload:function(){for(const m in this.materials)this.materials[m].map&&(this.materials[m].map.needsUpdate=!0)}};for(const m of u){const _=await a(m);Object.assign(f.materials,_.materials)}return f.preload(),f},l=async(u,f=[])=>new Promise((m,_)=>{const g=new FileReader;g.onload=async p=>{try{const E=p.target.result;let b=null;f&&f.length>0&&(f.length===1?b=await a(f[0]):b=await o(f));const M=new ca;b&&M.setMaterials(b);const U=M.parse(E);b||U.traverse(C=>{C.isMesh&&(C.material=new Dn({color:8947848,side:wn}))}),m(U)}catch(E){_(E)}},g.onerror=()=>{_(new Error("OBJ文件读取失败"))},g.readAsText(u)}),c=async u=>{var f;try{t.value=!0;const{scene:m}=s();if(!m)throw new Error("Scene not initialized");i();const _=[];for(let g=0;g<u.length;g++){const p=u[g];n.value=`正在加载模型 ${g+1}/${u.length}...`;const E=await r(p.objUrl),b=((f=p.objUrl)==null?void 0:f.split("/").pop())||`model_${g}.obj`,M=new File([E],b,{type:E.type});let U=[];if(p.mtlUrls){const P=Array.isArray(p.mtlUrls)?p.mtlUrls:[p.mtlUrls];for(let D=0;D<P.length;D++){const S=P[D],y=await r(S),N=(S==null?void 0:S.split("/").pop())||`material_${g}_${D}.mtl`,W=new File([y],N,{type:y.type});U.push(W)}}const C=await l(M,U);m.add(C),e.value.push(C),_.push(C)}return t.value=!1,_}catch(m){throw console.error("加载模型失败:",m),t.value=!1,m}},h=async(u,f,m=[],_=[])=>{let g;const p=u.toLowerCase();switch(p){case".txt":case".cpt":case".obj":const E=await f.text();if(p===".txt"||p===".cpt"){const ve=/^(?!.*\bf\b)[^\n]*?(-?\d*\.?\d+)[^\n]*?(-?\d*\.?\d+)[^\n]*?(-?\d*\.?\d+)[^\n]*?$/gm,st=[...E.matchAll(ve)].map(O=>({x:parseFloat(O[1]),y:parseFloat(O[2]),z:parseFloat(O[3])})),wt=new an,yt=st.flatMap(O=>[O.x,O.y,O.z]);if(wt.setAttribute("position",new It(yt,3)),p===".txt"){const O=new Fi({color:"#5B5C99",size:1,sizeAttenuation:!1});g=new Cs(wt,O)}else if(p===".cpt"){const O=new Si({color:"#5B5C99",linewidth:100});g=new ba(wt,O)}}else if(p===".obj"){const ve=new ca;if(m&&m.length>0){const Ae=new ha;for(const st of m){const wt=await st.text(),yt=Ae.parse(wt);yt.preload(),ve.setMaterials(yt);break}}g=ve.parse(E),(!m||m.length===0)&&g.traverse(Ae=>{Ae.isMesh&&(Ae.material=new Dn({color:"#B3B3D4"})),Ae instanceof $t&&(Ae.material.side=wn)})}break;case".stl":const b=await f.arrayBuffer(),U=new nr().parse(b),C=new Dn({color:"#B3B3D4",side:wn});g=new $t(U,C);break;case".nc":const P=["Mach_B_Axis_0.STL","Mach_C_Axis_0.STL","Mach_X_Axis_0.STL","Mach_Y_Axis_0.STL","Mach_Z_Axis_0.STL","Mach_Spindle_0.STL"],D={"Mach_Y_Axis_0.STL":"rgb(128,118,152)","Mach_B_Axis_0.STL":"rgb(204,143,89)","Mach_C_Axis_0.STL":"rgb(145,245,251)","Mach_X_Axis_0.STL":"rgb(125,158,192)","Mach_Z_Axis_0.STL":"rgb(248,228,118)","Mach_Spindle_0.STL":"rgb(145,145,145)"},S=new Kn,y=P.map(ve=>new Promise((Ae,st)=>{new nr().load(Vh.value===""?`/model/${ve}`:`${Vh.value}\\${ve}`,yt=>{const O=new Dn({color:D[ve]||"#B3B3D4",side:wn}),Gt=new $t(yt,O);Ae(Gt)},void 0,st)}));try{(await Promise.all(y)).forEach(Ae=>S.add(Ae)),g=S}catch(ve){throw console.error("加载NC文件对应的STL文件失败:",ve),new Error("无法加载.NC文件对应的STL文件")}break;case".pcd":const N=new zu,W=new Kn;try{const ve=await Ue.axios.get("http://139.196.154.85:20026/chfs/shared/重大专项/重大专项文件/target.pcd",{responseType:"blob",headers:{"Content-Type":"application/json"}}),Ae=new Blob([ve.data],{type:"application/octet-stream;charset=UTF-8"}),st=await Ue.axios.get("http://139.196.154.85:20026/chfs/shared/重大专项/重大专项文件/final.pcd",{responseType:"blob",headers:{"Content-Type":"application/json"}}),wt=new Blob([st.data],{type:"application/octet-stream;charset=UTF-8"}),yt=await new Promise((Gt,Lt)=>{const Tt=URL.createObjectURL(Ae);N.load(Tt,Ge=>{const pt=new Float32Array(Ge.geometry.attributes.position.count*3);for(let Xe=0;Xe<Ge.geometry.attributes.position.count;Xe++)pt[Xe*3]=1,pt[Xe*3+1]=0,pt[Xe*3+2]=0;Ge.geometry.setAttribute("color",new dn(pt,3)),Ge.material.vertexColors=!0,Ge.scale.set(.3,.3,.3),URL.revokeObjectURL(Tt),Gt(Ge)},void 0,Lt)}),O=await new Promise((Gt,Lt)=>{const Tt=URL.createObjectURL(wt);N.load(Tt,Ge=>{const pt=new Float32Array(Ge.geometry.attributes.position.count*3);for(let Xe=0;Xe<Ge.geometry.attributes.position.count;Xe++)pt[Xe*3]=0,pt[Xe*3+1]=1,pt[Xe*3+2]=0;Ge.geometry.setAttribute("color",new dn(pt,3)),Ge.material.vertexColors=!0,Ge.scale.set(.3,.3,.3),URL.revokeObjectURL(Tt),Gt(Ge)},void 0,Lt)});W.add(yt),W.add(O),g=W}catch(ve){throw console.error("PCD文件加载失败:",ve),new Error("无法加载PCD文件")}break;case".urdf":const X=URL.createObjectURL(f),Q=new Vu,ne="http://139.196.154.85:20026/chfs/shared/机器人/urdf/SmallBender_R-2000iC-165F/meshes",G={maxConcurrentLoads:4,enableCache:!0,enableLOD:!0,simplifyGeometry:!0,shareMaterials:!0,enableInstancing:!0},re=new Map,K=new Map,ge=new Map,be=async ve=>{if(re.has(ve))return console.log(`从缓存加载: ${ve}`),re.get(ve);try{const Ae=await Ue.axios.get(`${ne}/${ve}`,{responseType:"blob",headers:{"Content-Type":"application/json"},timeout:6e5}),st=new Blob([Ae.data],{type:"application/octet-stream;charset=UTF-8"});return G.enableCache&&re.set(ve,st),st}catch(Ae){throw console.error(`加载文件失败: ${ve}`,Ae),new Error(`无法加载文件: ${ve}`)}},Ce=(ve="default")=>{if(K.has(ve))return K.get(ve);const Ae=new Dn({color:12303291,shininess:30,transparent:!1,alphaTest:.1,side:Xn});return K.set(ve,Ae),Ae},Ie=ve=>{try{ve.isBufferGeometry&&ve.mergeVertices&&ve.mergeVertices(),ve.computeVertexNormals&&ve.computeVertexNormals(),ve.computeBoundingSphere&&ve.computeBoundingSphere(),ve.deleteAttribute&&ve.deleteAttribute("uv2")}catch(Ae){console.warn("几何体优化失败,使用原始几何体:",Ae)}return ve},He=async(ve,Ae,st)=>{const wt=`stl_${Ae}`;if(ge.has(wt)){const Lt=ge.get(wt);return new $t(Lt,Ce())}const yt=await ve.arrayBuffer();let Gt=new nr(st).parse(yt);return Gt=Ie(Gt),ge.set(wt,Gt),new $t(Gt,Ce())},J=async(ve,Ae,st)=>{const wt=`obj_${Ae}`;if(re.has(wt))return re.get(wt).clone();const yt=await ve.text(),O=new ca(st),Gt=Ae.replace(".obj",".mtl");try{const Ge=await(await be(Gt)).text(),Xe=new ha(st).parse(Ge);Xe.preload(),O.setMaterials(Xe)}catch{console.warn(`MTL文件加载失败,使用默认材质: ${Gt}`)}const Lt=O.parse(yt);return Lt.traverse(Tt=>{Tt.isMesh&&(Tt.geometry=Ie(Tt.geometry),Tt.castShadow=!0,Tt.receiveShadow=!0,Tt.renderOrder=1)}),re.set(wt,Lt),Lt},ae=(ve,Ae)=>{const st=new fu;if(st.addLevel(ve,0),ve.geometry){const wt=ve.geometry.clone(),yt=new $t(wt,ve.material);st.addLevel(yt,50)}return st};let le=0,ce=0;const Le=[];Q.loadMeshCb=async(ve,Ae,st,wt,yt)=>{const O=ve.split("/").pop(),Gt=st||(()=>{});le++;const Lt=new Promise(async(Tt,Ge)=>{try{const pt=await be(O);if(!pt||pt.size===0)throw new Error(`文件为空: ${O}`);const Xe=O.split(".").pop().toLowerCase();let ut;switch(Xe){case"stl":ut=await He(pt,O,Ae);break;case"obj":ut=await J(pt,O,Ae);break;default:throw new Error(`不支持的文件格式: ${Xe}`)}G.enableLOD&&ut.isMesh&&(ut=ae(ut,O)),Gt(ut),ce++,wt&&wt({loaded:ce,total:le,progress:ce/le}),Tt(ut)}catch(pt){console.error(`mesh文件加载失败: ${O}`,pt);const Xe=new Kn;Gt(Xe),Tt(Xe);const ut=new ki(.1,.1,.1),rn=new yu({color:16711680,wireframe:!0});return new $t(ut,rn)}});Le.push(Lt)};try{if(!X){ea.value=void 0;break}if(g=await Q.loadAsync(X),console.log(`URDF文件加载完成,等待${le}个mesh文件加载...`),Le.length>0)try{await Promise.allSettled(Le),console.log(`所有mesh文件处理完成,成功加载: ${ce}/${le}`)}catch(st){console.warn("部分mesh文件加载失败,但继续显示模型",st)}g.traverse(st=>{st.isMesh&&(st.castShadow=!0,st.receiveShadow=!0,st.renderOrder=1,st.material&&(st.material.needsUpdate=!0))}),console.time("计算包围盒");const ve=new ei;ve.expandByObject(g);const Ae=`urdf_${Date.now()}`;g.userData.boundingBox=ve.clone(),g.userData.modelId=Ae,Hh.set(Ae,{box:ve.clone(),center:ve.getCenter(new I),size:ve.getSize(new I),maxSize:Math.max(...ve.getSize(new I).toArray())}),ea.value=g,console.log("URDF模型加载完成并优化")}catch(ve){console.error("URDF加载失败:",ve),ea.value=void 0}finally{X&&URL.revokeObjectURL(X)}break;default:throw new Error(`不支持的文件格式: ${u}`)}return g};return{addModelsFromUrls:c,loadModelByDefaultPath:async u=>{console.log(u);try{t.value=!0,n.value="正在加载模型...";const{scene:f}=s();if(!f)throw new Error("Scene not initialized");i(),await new Promise(_=>setTimeout(_,100));const m=[];for(let _=0;_<u.length;_++){const g=u[_],p=await h(g.suffix,g.blob,g.mtlBlobs||[],g.meshFiles||[]);p&&(f.add(p),e.value.push(p),m.push(p))}return t.value=!1,n.value="",m}catch(f){throw console.error("加载模型失败:",f),t.value=!1,n.value="",f}},urdfModel:ea,modelBoundingBoxes:Hh}}window._iconfont_svg_string_4634042='<svg><symbol id="icon-lookAround" viewBox="0 0 1041 1024"><path d="M520.685026 798.355937c-10.788594 0-21.577187-2.790872-31.241101-8.372615l-291.583615-168.36871A62.482203 62.482203 0 0 1 166.619208 567.505024V230.850913c0-22.368629 11.913273-42.987756 31.241102-54.109588l291.583615-168.36871a62.482203 62.482203 0 0 1 62.482203 0l291.583615 168.36871c19.327828 11.121832 31.241102 31.740959 31.241101 54.109588v336.654111a62.482203 62.482203 0 0 1-31.241101 54.109588l-291.583615 168.36871a62.857096 62.857096 0 0 1-31.241102 8.372615zM291.583615 531.39031l229.101411 132.295652 229.101412-132.295652v-264.507993l-229.101412-132.295651L291.583615 266.923972v264.466338z m520.685026 36.114714h0.416548-0.416548z" fill="#aaaaaa" ></path><path d="M520.685026 461.660172c-10.788594 0-21.577187-2.790872-31.241101-8.372616l-291.583615-168.327055a62.482203 62.482203 0 0 1 62.482203-108.219176L520.685026 326.990196l260.342513-150.248871a62.482203 62.482203 0 1 1 62.482204 108.219176l-291.583615 168.327055a62.857096 62.857096 0 0 1-31.241102 8.372616z" fill="#aaaaaa" ></path><path d="M520.685026 798.355937a62.482203 62.482203 0 0 1-62.482203-62.482203V399.177969a62.482203 62.482203 0 1 1 124.964406 0v336.695765a62.482203 62.482203 0 0 1-62.482203 62.482203z" fill="#aaaaaa" ></path><path d="M520.685026 1003.172599c-53.276492 0-520.685026-5.248505-520.685026-187.446609 0-62.982061 54.776065-111.259976 162.870276-143.584103 33.073913-9.622259 67.855673 8.914128 77.769516 41.98804s-8.872473 67.897327-41.946386 77.769516c-30.324696 9.080747-49.194321 17.619981-60.649392 24.11813 46.32014 26.242525 178.657446 62.19062 382.641012 62.19062s336.320872-35.948094 382.641012-62.19062c-11.455071-6.498149-30.324696-15.037384-60.649392-24.11813a62.482203 62.482203 0 1 1 35.82313-119.757556c108.094211 32.324126 162.870276 80.643697 162.870276 143.584103 0 182.198104-467.408534 187.446609-520.685026 187.446609z m398.886385-175.366717h0.416548-0.416548z" fill="#72B02D" ></path></symbol><symbol id="icon-xuanzhuan" viewBox="0 0 1024 1024"><path d="M378.963454 724.443778l91.182641 163.473426c6.246088 11.212239 2.252687 25.39393-9.010749 31.691216l-163.473427 91.18264c-18.123894 10.085896-39.422029-6.758062-33.739113-26.673866l72.290786-254.707264c5.682916-19.967002 32.663967-23.090045 42.749862-4.966152z" fill="#FC794B" ></path><path d="M414.64807 903.9932c-1.228739 0-2.40628-0.051197-3.635018-0.204789C169.002752 879.367232 0.000003 771.443028 0.000003 641.452727c0-52.221389 27.032248-102.19009 78.127293-144.581571a35.827969 35.827969 0 0 1 50.480676 4.710165 35.827969 35.827969 0 0 1-4.710164 50.480676C100.090998 571.824209 71.727616 603.310634 71.727616 641.452727c0 88.929954 148.984551 171.050647 346.504275 191.068847 19.711014 1.9967 34.046298 19.557422 32.049597 39.268436a35.879166 35.879166 0 0 1-35.633418 32.20319zM608.430381 904.095595c-18.175091 0-33.79031-13.772111-35.633418-32.254387-1.945503-19.711014 12.389781-37.271736 32.100795-39.217239 198.134093-19.813409 347.528224-101.985301 347.528223-191.171242 0-23.550822-10.649068-47.050447-31.58882-69.935703-13.362532-14.59127-12.389781-37.271736 2.20149-50.634268 14.59127-13.362532 37.271736-12.389781 50.634268 2.20149 32.971151 35.9918 50.429479 76.898555 50.429478 118.368481 0 130.297485-169.463527 238.221689-412.088195 262.489276-1.177541 0.102395-2.40628 0.153592-3.583821 0.153592z" fill="#FC794B" ></path><path d="M846.703267 184.413179l-325.308534 184.464377L196.137396 184.413179 521.394733 0z" fill="#BEC5CB" ></path><path d="M521.394733 737.703915l325.308534-184.41318V184.413179l-325.308534 184.464377z" fill="#808487" ></path><path d="M521.394733 737.703915L196.137396 553.290735V184.413179l325.257337 184.464377z" fill="#9CA3A9" ></path></symbol><symbol id="icon-clipping" viewBox="0 0 1024 1024"><path d="M341.930667 201.770667l353.706666 204.245333v408.448l-353.706666-204.245333z" fill="#4A80FF" fill-opacity="0.15" ></path><path d="M320.853333 165.248l396.117334 228.608v457.173333l-395.946667-228.608z m353.749334 252.970667L362.837333 238.336v359.722667l311.466667 179.882666z" fill="#72B02D" ></path><path d="M544.384 746.453333l-211.669333-211.669333 18.688-18.688 211.669333 211.669333z" fill="#72B02D" ></path><path d="M693.717333 530.261333l-266.453333-266.325333 20.906667-20.906667 266.325333 266.453334z" fill="#72B02D" ></path><path d="M688.853333 621.098667l-366.933333-366.933334 24.448-24.704 366.933333 366.933334z" fill="#72B02D" ></path><path d="M689.664 713.856L321.578667 345.770667l24.618666-24.618667 368.085334 368.128z" fill="#72B02D" ></path><path d="M683.605333 799.317333l-355.712-355.712 24.234667-24.234666 355.712 355.712z" fill="#72B02D" ></path><path d="M537.770667 944.938667h-51.2v-418.602667l-362.666667-209.28 25.6-44.330667 362.666667 209.066667 362.666666-209.066667 25.6 44.330667-362.666666 209.066667z" fill="#AAAAAA" ></path><path d="M512.170667 53.461333a31.146667 31.146667 0 0 1 15.488 4.266667l370.090666 213.632a31.232 31.232 0 0 1 15.317334 26.794667v426.922666a31.274667 31.274667 0 0 1-15.317334 26.837334l-369.834666 213.333333a31.488 31.488 0 0 1-31.061334 0l-369.834666-213.333333a31.146667 31.146667 0 0 1-15.914667-26.837334V298.069333a31.146667 31.146667 0 0 1 15.573333-27.008l369.792-213.333333a30.976 30.976 0 0 1 15.701334-4.266667z m349.866666 256l-349.866666-201.642666-349.866667 201.856v403.84l349.866667 201.813333 349.866666-201.898667z" fill="#AAAAAA" ></path></symbol><symbol id="icon-viewReset" viewBox="0 0 1024 1024"><path d="M643.2 515.2c-89.6-67.2-179.2-60.8-268.8 0-32 22.4-67.2 57.6-105.6 89.6 38.4 32 70.4 70.4 108.8 96 28.8 19.2 60.8 32 96 38.4 118.4 19.2 188.8-57.6 268.8-137.6-35.2-28.8-60.8-64-99.2-86.4zM508.8 704c-51.2 0-96-41.6-96-99.2s41.6-105.6 96-105.6 96 41.6 96 99.2c0 64-38.4 105.6-96 105.6z" fill="#AAAAAA" ></path><path d="M515.2 544c-3.2 41.6 12.8 60.8 51.2 51.2 0 32-19.2 57.6-51.2 57.6s-57.6-22.4-51.2-57.6c-6.4-32 16-51.2 51.2-51.2" fill="#AAAAAA" ></path><path d="M652.8 3.2c9.6-3.2 19.2-3.2 28.8 0 9.6 3.2 12.8 12.8 12.8 22.4v108.8c70.4 28.8 131.2 70.4 179.2 128 80 89.6 118.4 214.4 108.8 336-9.6 124.8-70.4 236.8-166.4 313.6-96 80-224 118.4-345.6 108.8-124.8-9.6-243.2-67.2-323.2-160S32 649.6 41.6 524.8c9.6-118.4 70.4-233.6 160-307.2 22.4-19.2 60.8-19.2 80 3.2 19.2 22.4 19.2 57.6-3.2 80-70.4 57.6-115.2 140.8-124.8 233.6s22.4 185.6 80 249.6c60.8 70.4 147.2 115.2 243.2 124.8 96 9.6 188.8-19.2 259.2-80s118.4-140.8 124.8-236.8c9.6-89.6-22.4-185.6-80-249.6-28.8-28.8-57.6-57.6-89.6-76.8v89.6c0 9.6-3.2 19.2-12.8 22.4-9.6 3.2-19.2 3.2-28.8 0l-227.2-160c-3.2-3.2-9.6-12.8-9.6-19.2 0-9.6 3.2-12.8 9.6-19.2L652.8 3.2z" fill="#72B02D" ></path></symbol><symbol id="icon-donghuafangzhen" viewBox="0 0 1024 1024"><path d="M868.864 228.864c-19.968 0-38.912 7.68-53.248 20.992l-291.328-170.496c-7.168-5.12-16.896-5.12-24.064 0L208.896 248.832c-14.336-12.8-33.28-20.48-53.76-20.48-43.52 0-79.872 36.864-79.872 80.896 0 33.792 21.504 63.488 53.248 74.24v318.976c0 9.216 4.608 17.408 12.288 22.016L437.248 896c11.776 30.72 41.472 51.712 74.752 52.224 33.28-0.512 62.464-20.992 74.752-52.224l296.448-171.52c7.68-4.608 12.288-13.312 12.288-22.016V386.048c31.744-11.776 53.248-42.496 53.248-76.288 0-44.032-36.352-80.896-79.872-80.896zM155.136 339.456c-16.896 0-29.184-12.288-29.184-29.696v-2.048c0.512-15.36 13.312-27.648 29.184-27.136h2.048c15.36 0.512 27.648 13.824 27.136 29.696 0 15.872-12.8 28.672-29.184 29.184zM512 897.024c-16.896 0-29.184-12.288-29.184-29.696 0-14.848 12.288-29.696 29.184-29.696h2.048c15.36 0.512 27.648 13.824 27.136 29.696 0 14.848-14.848 29.696-29.184 29.696z m74.752-58.368c-11.776-30.208-40.96-51.712-74.752-51.712-27.136 0-52.224 14.336-67.072 37.376l-3.072 1.024c-4.608 2.048-8.704 5.632-9.728 10.752l-252.416-146.944V384.512C212.48 373.76 234.496 343.04 235.52 308.736l3.072 0.512h2.048c3.584 0 7.168-1.536 10.24-3.584 7.168-5.632 8.192-16.384 2.048-23.552L512 130.56l278.528 162.816c-7.68 36.864 11.264 74.24 45.568 90.624 0.512 5.632 3.584 10.24 8.704 13.312v291.328l-258.048 150.016z m282.112-499.2c-16.896 0-29.184-12.288-29.184-29.696v-2.048c0.512-15.36 13.312-27.648 29.184-27.136h2.048c15.36 0.512 27.648 13.824 27.136 29.696v2.56c-1.024 14.848-13.824 27.136-29.184 26.624z" fill="#AAAAAA" ></path><path d="M422.912 724.992c-3.072-8.704-12.288-12.8-20.992-9.728-8.704 3.072-12.8 12.8-9.728 21.504l19.968 54.784c2.56 6.656 8.192 10.752 15.36 10.752 2.048 0 3.584-0.512 5.12-1.024 8.704-3.072 12.8-12.8 9.728-21.504l-19.456-54.784zM706.048 507.392c0-107.52-86.016-195.072-192-196.096-2.048-1.536-4.608-2.56-7.68-3.072l-24.064-3.072c-8.192-1.024-15.872 4.096-17.92 11.776-5.632 1.536-11.776 3.584-16.896 5.632 0.512-1.536 1.024-3.072 1.536-5.12 1.024-9.216-5.12-17.408-14.336-18.432l-48.128-5.632c-5.632-1.024-11.776 1.536-15.36 6.144-3.584 4.608-4.608 11.264-2.048 16.896 2.56 5.632 7.68 9.216 13.312 9.728l44.032 5.12C384 353.28 351.232 388.608 333.312 432.64c-25.088 60.928-17.92 130.048 18.432 184.832-1.024 3.584-1.024 7.168 0.512 10.24l19.968 54.784c1.024 3.072 3.072 5.632 6.144 7.68 7.168 5.12 17.408 3.072 22.528-4.096 3.072-4.608 3.584-10.24 2.048-15.36l-0.512-1.536c53.76 37.888 123.392 45.568 184.32 19.968 46.08-19.456 82.944-55.808 102.912-101.376l12.8-14.336c6.144-6.656 5.632-17.408-0.512-23.04 2.56-14.336 4.096-28.672 4.096-43.008z m-193.536 156.16C427.52 663.552 358.4 593.92 358.4 507.392c0-86.016 69.12-156.16 154.112-156.16s154.112 69.632 154.112 156.16c0 86.016-69.12 156.16-154.112 156.16z" fill="#72B02D" ></path><path d="M765.44 478.72c-6.144-5.632-15.872-5.632-22.016 0l-32.256 35.84c-4.096 4.608-5.632 11.776-3.072 17.92 2.56 6.144 8.192 9.728 14.848 9.728 4.608 0 8.704-2.048 11.776-5.12l32.256-35.84c5.12-7.168 4.608-16.896-1.536-22.528zM823.296 401.92c-5.632-1.024-11.776 0.512-15.872 5.12l-32.256 35.84c-4.608 4.608-5.632 11.776-3.072 17.92 1.024 2.048 2.56 4.096 4.096 5.632 6.656 6.144 16.896 5.632 23.04-1.536l32.256-35.84c4.096-4.096 5.632-10.752 3.584-16.384-1.024-5.632-5.632-9.728-11.776-10.752zM336.384 321.024c8.704 0 15.872-6.656 16.384-15.36 0.512-8.704-5.632-16.384-14.336-17.408l-48.128-5.632c-5.632-1.024-11.776 1.536-15.36 6.144-3.584 4.608-4.096 11.264-2.048 16.896 2.56 5.632 7.68 9.216 13.312 9.728l48.128 5.632h2.048z" fill="#72B02D" ></path></symbol><symbol id="icon-guanjianjiexi" viewBox="0 0 1024 1024"><path d="M298.496 200.704v83.456h-39.936v177.664h137.728V389.12h47.104v245.76h-47.104v-79.872H211.456c-10.752-3.584-54.272-14.336-54.272-57.856V280.064h-32.768V200.704h174.08m47.104-47.104H77.824v177.152h36.352v169.984c0 68.608 61.44 97.792 97.792 104.96H353.28v79.872h141.312V342.016H349.184v72.192h-43.52v-87.04h39.936V153.6zM627.712 389.12v79.872H812.544c10.752 3.584 54.272 14.336 54.272 54.272V740.352h32.768v83.456h-173.568v-83.456h39.936v-177.664h-137.728V634.88h-47.104V389.12h46.592m47.104-47.104h-141.312v340.48h141.312v-72.192h43.52v83.456h-39.936V870.4h267.776v-177.152h-36.352v-169.984c0-68.608-61.44-97.792-97.792-104.96H670.72V342.528h4.096z" fill="#AAAAAA" ></path></symbol><symbol id="icon-gongyishengcheng" viewBox="0 0 1024 1024"><path d="M889.344 391.68h29.696v-43.008h-208.896l1.024 45.056 28.16 3.072v20.992c55.808 5.632 108.032 28.672 150.016 66.56-0.512 0 0-92.672 0-92.672z m-366.592 102.912c13.312-13.312 27.648-24.576 43.008-34.816-2.048-70.144-5.632-153.088-8.704-179.712-5.632-48.64-34.816-204.288-226.816-202.752-191.488 1.536-223.744 164.864-230.912 207.36s-11.776 197.632-11.776 197.632h-24.576v43.008l208.896 1.024v-40.96h-24.064V316.928S245.76 230.912 335.36 231.424C424.448 232.448 415.232 327.68 414.72 327.68v313.856c4.608 0 6.144 77.824 50.176 144.896-13.312-32.256-20.48-67.072-20.48-102.912 0-71.168 27.648-138.24 78.336-188.928z" fill="#AAAAAA" ></path><path d="M75.264 601.6h31.232v281.088s41.984 29.184 141.824 0v-274.944l29.184-2.56v-44.032H75.264v40.448zM906.24 263.168h-29.184l1.024-188.416s-53.76-27.648-144.384 0l1.024 192-31.744 1.024V307.2h203.776l-0.512-44.032z" fill="#AAAAAA" ></path><path d="M934.912 627.712c-9.216-4.608-20.48-2.048-29.184 6.656l-21.504 21.504c-9.216 9.216-20.992 13.824-33.792 13.824s-24.576-5.12-33.792-13.824c-9.216-9.216-13.824-20.992-13.824-33.792s5.12-24.576 13.824-33.792l21.504-21.504c8.704-8.704 11.264-19.968 6.656-29.184-5.632-10.752-18.432-15.36-34.304-13.312-25.6 4.096-48.64 15.36-66.56 33.792-27.136 27.136-39.424 65.536-33.792 103.936l-178.176 178.176c-13.312 13.312-20.992 31.232-20.992 50.176s7.168 36.864 20.992 50.176c13.312 13.312 31.232 20.992 50.176 20.992 18.944 0 36.864-7.168 50.176-20.992l178.176-178.176c37.888 6.144 76.288-6.656 103.936-33.792 17.92-17.92 29.696-41.472 33.792-66.56 2.048-15.872-2.56-28.672-13.312-34.304z m-9.728 30.72c-3.072 20.48-12.8 38.912-27.136 53.76-23.04 23.04-56.32 33.28-89.088 26.624l-6.144-1.536-186.88 186.88c-8.704 9.216-20.992 13.824-33.792 13.824s-24.576-5.12-33.792-13.824c-9.216-9.216-13.824-20.992-13.824-33.792s5.12-24.576 13.824-33.792l186.88-186.88-1.536-6.144c-6.656-32.256 3.072-65.536 26.624-89.088 14.848-14.848 33.28-24.064 53.76-27.136 1.536-0.512 3.072-0.512 4.608-0.512 2.56 0 4.608 0.512 5.12 1.024-0.512 0.512-1.024 1.536-2.048 2.56l-21.504 21.504c-13.312 13.312-20.992 31.232-20.992 50.176s7.168 36.864 20.992 50.176c13.312 13.312 31.232 20.992 50.176 20.992 18.944 0 36.864-7.168 50.176-20.992l21.504-21.504c1.024-1.024 2.048-1.536 2.56-2.048 0.512 1.536 1.024 4.608 0.512 9.728z" fill="#72B02D" ></path><path d="M560.64 870.912c-12.8 12.8-12.8 33.28 0 45.568 6.144 6.144 14.336 9.216 23.04 9.216s16.896-3.072 23.04-9.216c6.144-6.144 9.728-14.336 9.728-23.04 0-8.704-3.584-16.896-9.728-23.04-12.8-12.288-33.792-12.288-46.08 0.512z m28.672 28.672c-3.072 3.072-8.704 3.072-11.776 0-3.072-3.072-3.072-8.704 0-11.776 1.536-1.536 3.584-2.56 6.144-2.56 2.048 0 4.096 1.024 6.144 2.56 1.536 1.536 2.56 3.584 2.56 6.144-0.512 2.048-1.536 4.096-3.072 5.632z m225.28-107.008c-4.096-4.096-10.24-4.096-14.336 0l-43.52 43.52c-4.096 4.096-4.096 10.24 0 14.336l102.4 102.4c15.872 15.872 41.984 15.872 57.856 0 15.872-15.872 15.872-41.984 0-57.856l-102.4-102.4z m-237.056-150.528l70.656 70.656 28.672-28.672-70.656-70.656-15.872-30.208-50.688-36.352-28.672 28.672 36.352 50.688 30.208 15.872z" fill="#72B02D" ></path></symbol><symbol id="icon-mojupipei" viewBox="0 0 1024 1024"><path d="M880.64 117.248c32.768 0 58.88 23.04 64.512 54.784l1.024 7.68v663.04c0.512 31.744-22.528 58.368-53.76 62.464l-7.68 1.024H151.552c-34.816 0-66.048-22.528-72.192-53.248l-1.024-6.656V183.296c0-31.744 27.648-59.904 61.952-65.024l7.168-1.024h142.848c24.064 0 44.032 16.896 48.64 39.936l1.024 6.656V406.528c0 7.68 5.12 14.848 12.288 16.896l3.584 0.512H424.96c13.312 0 25.088 9.216 29.184 22.528 6.144 23.552 33.792 46.08 58.368 46.08 22.528 0 48.128-19.456 55.808-39.424l2.048-5.632c2.048-10.24 9.216-18.432 19.456-21.504l5.12-1.024 3.072-0.512h71.168c6.144 0 11.776-3.584 14.336-9.728l1.024-3.584V164.864c0-23.04 15.872-41.984 37.888-46.592l6.144-1.024H880.64zM273.92 184.32H151.552l-2.048 0.512-2.048 0.512-2.56 1.536-1.536 649.728 3.072 1.536 3.072 1.024h1.024l328.192 3.072 2.048-286.72-2.048-0.512-10.24-3.584c-24.576-10.24-45.568-27.136-60.928-49.152l-6.144-9.216 1.024-1.536H349.184c-37.888-4.096-68.608-33.792-74.24-71.68l-1.024-8.192v-4.096V184.32z m476.16-3.072V409.6l-0.512 8.704c-3.584 36.864-32.256 66.56-68.608 72.192l-8.192 1.024h-4.096l-45.568-1.536-6.144 9.728c-14.848 22.528-36.352 40.448-61.44 51.2l-10.752 4.096-3.072 284.16h337.408v-655.36l-129.024-2.56z" fill="#AAAAAA" ></path></symbol><symbol id="icon-buchangshezhi" viewBox="0 0 1024 1024"><path d="M792.576 75.264h-686.08c-17.408 0-31.232 13.824-31.232 31.232v686.08c0 17.408 13.824 31.232 31.232 31.232h436.736c17.408 0 31.232-13.824 31.232-31.232s-13.824-31.232-31.232-31.232H137.728V262.656h624.128v280.576c0 17.408 13.824 31.232 31.232 31.232s31.232-13.824 31.232-31.232V106.496c-0.512-17.408-14.336-31.232-31.744-31.232z" fill="#AAAAAA" ></path><path d="M792.576 948.736c-17.408 0-31.232-13.824-31.232-31.232v-93.696h-93.696c-17.408 0-31.232-13.824-31.232-31.232 0-17.408 13.824-31.232 31.232-31.232h93.696v-93.696c0-17.408 13.824-31.232 31.232-31.232 17.408 0 31.232 13.824 31.232 31.232v93.696h93.696c17.408 0 31.232 13.824 31.232 31.232 0 17.408-13.824 31.232-31.232 31.232h-93.696v93.696c0 17.408-13.824 31.232-31.232 31.232z" fill="#72B02D" ></path><path d="M372.224 518.144l-110.08 110.08c-20.992 20.992-20.992 55.296 0 76.288s55.296 20.992 76.288 0l110.08-110.08c-16.896-6.144-32.768-15.872-46.592-29.696-13.824-13.312-23.552-29.696-29.696-46.592z m-57.856 162.304c-7.68 7.68-20.48 7.68-28.672 0-7.68-7.68-7.68-20.48 0-28.672 7.68-7.68 20.48-7.68 28.672 0 7.68 8.192 7.68 20.992 0 28.672z m340.48-292.864L592.384 450.56c-20.992 20.992-55.296 20.992-76.288 0s-20.992-55.296 0-76.288l62.976-62.976c-51.712-8.704-116.224 14.848-151.552 50.176-49.152 49.152-49.152 128.512 0 177.664s129.024 49.152 177.664 0c35.328-35.328 58.368-99.84 49.664-151.552z" fill="#AAAAAA" ></path></symbol><symbol id="icon-shuchujiagongchengxu" viewBox="0 0 1024 1024"><path d="M876.544 473.6v374.272c0 16.384-13.312 29.696-29.696 29.696h-522.24c-16.384 0-29.696-13.312-29.696-29.696V503.296c0-16.384 13.312-29.696 29.696-29.696h551.936m40.96-70.656H253.952c-16.384 0-29.696 13.312-29.696 29.696v486.4c0 16.384 13.312 29.696 29.696 29.696h663.552c16.384 0 29.696-13.312 29.696-29.696v-486.4c0-16.384-13.312-29.696-29.696-29.696z" fill="#AAAAAA" ></path><path d="M489.984 211.968H814.08l-41.984-41.984c-13.824-13.824-13.824-36.352 0-50.176 13.824-13.824 36.352-13.824 50.176 0L947.712 245.76l-0.512 0.512 0.512 0.512-125.952 125.952c-13.824 13.824-36.352 13.824-50.176 0-13.824-13.824-13.824-36.352 0-50.176l38.912-38.912H489.472c-19.456 0-35.328-15.872-35.328-35.328 0.512-20.48 16.384-36.352 35.84-36.352z" fill="#72B02D" ></path><path d="M531.456 717.824c0-11.776-7.68-22.016-18.944-25.6l-55.808-16.896-14.848-4.608 14.848-4.608 55.808-16.896c11.264-3.584 18.944-13.824 18.944-25.6v-2.048c0-18.432-17.92-31.232-35.328-25.088L363.52 641.024c-10.752 3.584-17.92 13.824-17.92 25.088v8.192c0 11.264 7.168 21.504 17.92 25.088l132.608 45.568c17.408 6.144 35.328-7.168 35.328-25.088v-2.048z m123.392-96.768v2.048c0 11.776 7.68 22.016 18.944 25.6l56.32 16.896 14.848 4.608-14.848 4.608-56.32 16.896c-11.264 3.584-18.944 13.824-18.944 25.6v2.56c0 18.432 17.92 31.232 35.328 25.088l132.608-45.568c10.752-3.584 17.92-13.824 17.92-25.088v-8.192c0-11.264-7.168-21.504-17.92-25.088l-132.608-45.568c-17.408-6.144-35.328 7.168-35.328 25.6z m-54.784-64l-70.144 248.32c-4.608 16.896 8.192 33.792 25.6 33.792 11.776 0 22.528-8.192 25.6-19.456l70.144-248.32c4.608-16.896-8.192-33.792-25.6-33.792-11.776 0-22.016 8.192-25.6 19.456zM147.456 814.08V173.056c0-14.848 11.776-26.624 26.624-26.624h463.872c19.456 0 35.328-15.872 35.328-35.328 0-19.456-15.872-35.328-35.328-35.328H107.008c-16.896 0-30.72 13.824-30.72 30.72v748.032c0 16.896 13.824 30.72 30.72 30.72h40.448c19.456 0 35.328-15.872 35.328-35.328 0.512-19.968-15.36-35.84-35.328-35.84z" fill="#AAAAAA" ></path></symbol><symbol id="icon-guanjiekongzhi" viewBox="0 0 1024 1024"><path d="M648.192 377.344h-71.68c-18.432 0-33.792-14.848-33.792-33.792H366.592c12.288-30.72 25.088-80.896 0-134.656H542.72c0-18.432 15.36-33.792 33.792-33.792h67.584c1.536 0 2.56 0 4.096 0.512L719.36 87.04c10.752-13.312 29.184-16.384 44.032-7.68l168.96 100.864c15.872 9.728 20.992 30.208 11.776 46.08-9.728 15.872-30.208 20.992-46.592 11.264l-143.872-85.504L677.888 245.76v61.44l75.776 93.696 143.872-85.504c15.872-9.728 36.864-4.608 46.592 11.776 9.728 15.872 4.608 36.352-11.264 46.08h-0.512l-168.96 100.864c-14.336 8.704-33.28 5.12-44.032-7.68l-71.168-89.088zM319.488 780.8L102.912 415.744c76.8 69.632 185.344 48.64 231.424-13.312l222.72 378.368H711.68c18.432 0 33.792 14.848 33.792 33.792v100.864c0 18.432-15.36 33.792-33.792 33.792H170.496c-18.432 0-33.792-14.848-33.792-33.792v-100.864c0-18.432 15.36-33.792 33.792-33.792h148.992z" fill="#AAAAAA" ></path><path d="M204.288 148.48C133.12 148.48 75.264 205.824 75.264 276.48S133.12 404.48 204.288 404.48c71.168 0 129.024-57.344 129.024-128S275.456 148.48 204.288 148.48z m0 202.752c-41.472 0-74.752-33.28-74.752-74.752 0-40.96 33.792-74.24 74.752-74.24C245.76 202.24 279.04 235.52 279.04 276.48c0 41.472-33.792 75.264-74.752 74.752z" fill="#72B02D" ></path></symbol><symbol id="icon-jiegoushu" viewBox="0 0 1024 1024"><path d="M233.984 472.064h317.44c0-44.032 35.328-79.36 79.36-79.36h238.08c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-238.08c-44.032 0-79.36-35.328-79.36-79.36h-317.44v238.08h317.44c0-44.032 35.328-79.36 79.36-79.36h238.08c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-238.08c-44.032 0-79.36-35.328-79.36-79.36h-317.44c-44.032 0-79.36-35.328-79.36-79.36V233.984h-39.936c-22.016 0-39.936-17.92-39.936-39.936V115.2c0-22.016 17.92-39.936 39.936-39.936h158.72c22.016 0 39.936 17.92 39.936 39.936V194.56c0 22.016-17.92 39.936-39.936 39.936h-39.936v237.568z" fill="#AAAAAA" ></path><path d="M551.936 75.264h317.44c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-317.44c-44.032 0-79.36-35.328-79.36-79.36V154.624c-0.512-44.032 35.328-79.36 79.36-79.36z" fill="#72B02D" ></path></symbol><symbol id="icon-kuaitui" viewBox="0 0 1024 1024"><path d="M512 148.992c199.68 0 361.984 162.304 361.984 361.984S711.68 872.448 512 872.448s-361.984-162.304-361.984-361.984S312.32 148.992 512 148.992m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M670.72 456.192v109.056l-75.264-54.784L670.72 456.192m25.6-102.912c-10.24 0-20.992 3.072-30.208 10.24l-144.896 105.472c-28.672 20.48-28.672 62.976 0 83.968l144.896 105.472c9.216 6.656 19.968 10.24 30.208 10.24 27.136 0 52.224-21.504 52.224-51.712V405.504c0-30.72-25.088-52.224-52.224-52.224z" fill="#72B02D" ></path><path d="M499.712 456.192v109.056L424.96 510.976l74.752-54.784m26.112-102.912c-10.24 0-20.992 3.072-30.208 10.24L350.208 468.992c-28.672 20.48-28.672 62.976 0 83.968l144.896 105.472c9.216 6.656 19.968 10.24 30.208 10.24 27.136 0 52.224-21.504 52.224-51.712V405.504c0-30.72-25.088-52.224-51.712-52.224z" fill="#72B02D" ></path><path d="M314.368 381.44c-21.504 0-38.912 17.408-38.912 38.912v181.248c0 21.504 17.408 38.912 38.912 38.912s38.912-17.408 38.912-38.912V420.352c0-21.504-17.408-38.912-38.912-38.912z" fill="#72B02D" ></path></symbol><symbol id="icon-bofang" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M491.008 445.952l115.712 66.048-115.712 66.048V445.952m-23.552-87.04c-24.576 0-46.592 19.456-46.592 46.592v212.48c0 27.136 22.528 46.592 46.592 46.592 7.68 0 15.36-2.048 23.04-6.144l185.856-106.496c31.232-17.92 31.232-62.976 0-80.896L490.496 365.056c-7.168-4.096-15.36-6.144-23.04-6.144z" fill="#72B02D" ></path></symbol><symbol id="icon-kuaijin" viewBox="0 0 1024 1024"><path d="M515.584 151.04c199.168 0 360.96 161.792 360.96 360.96s-161.792 360.96-360.96 360.96-360.96-161.792-360.96-360.96 161.792-360.96 360.96-360.96m0-74.752c-240.64 0-435.712 195.072-435.712 435.712s195.072 435.712 435.712 435.712 435.712-195.072 435.712-435.712-195.072-435.712-435.712-435.712z" fill="#AAAAAA" ></path><path d="M358.912 458.24L433.152 512l-74.24 53.76v-107.52m-25.088-101.376c-26.624 0-51.2 20.992-51.2 51.2v207.872c0 30.208 24.576 51.2 51.2 51.2 10.24 0 20.48-3.072 29.696-9.728l142.848-103.936c28.16-20.48 28.16-61.952 0-82.432L363.52 366.592c-9.216-6.656-19.456-9.728-29.696-9.728z" fill="#72B02D" ></path><path d="M527.36 458.24l74.24 53.76-74.24 53.76v-107.52m-25.088-101.376c-26.624 0-51.2 20.992-51.2 51.2v207.872c0 30.208 24.576 51.2 51.2 51.2 10.24 0 20.48-3.072 29.696-9.728l142.848-103.936c28.16-20.48 28.16-61.952 0-82.432l-142.848-103.936c-9.216-7.168-19.968-10.24-29.696-10.24z" fill="#72B02D" ></path><path d="M710.144 384.512c-20.992 0-38.4 17.408-38.4 38.4v178.688c0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4V422.912c0-21.504-17.408-38.4-38.4-38.4z" fill="#72B02D" ></path></symbol><symbol id="icon-zanting" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M416.768 353.28c-22.016 0-39.936 17.92-39.936 39.936v238.08c0 22.016 17.92 39.936 39.936 39.936s39.936-17.92 39.936-39.936V392.704c-0.512-21.504-17.92-39.424-39.936-39.424z m190.464 0c-22.016 0-39.936 17.92-39.936 39.936v238.08c0 22.016 17.92 39.936 39.936 39.936s39.936-17.92 39.936-39.936V392.704c0-21.504-17.92-39.424-39.936-39.424z" fill="#72B02D" ></path></symbol><symbol id="icon-zhongzhi" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M580.096 421.376c12.288 0 22.528 10.24 22.528 22.528v136.192c0 12.288-10.24 22.528-22.528 22.528H443.904c-12.288 0-22.528-10.24-22.528-22.528V443.904c0-12.288 10.24-22.528 22.528-22.528h136.192m0-68.096H443.904C393.728 353.28 353.28 393.728 353.28 443.904v136.192c0 50.176 40.448 90.624 90.624 90.624h136.192c50.176 0 90.624-40.448 90.624-90.624V443.904c0-50.176-40.448-90.624-90.624-90.624z" fill="#72B02D" ></path></symbol><symbol id="icon-suoxiao" viewBox="0 0 1024 1024"><path d="M491.008 463.36c32.256 0 58.88-26.112 58.88-58.88s-26.112-58.88-58.88-58.88H285.696c-32.256 0-58.88 26.112-58.88 58.88s26.112 58.88 58.88 58.88h205.312z" fill="#72B02D" ></path><path d="M810.496 720.384l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 143.36-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848 13.312 0 26.112-5.12 36.352-14.848 19.968-19.968 19.968-52.736 0-72.704z m-431.104-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-97.28 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M811.008 106.496h-109.056V209.92h109.056c29.696 0 53.76 24.064 53.76 53.76v81.408H967.68v-81.92c0-86.016-70.144-156.672-156.672-156.672zM864.768 791.552c0 29.696-24.064 53.76-53.76 53.76h-109.056v102.912h109.056c86.528 0 156.672-70.144 156.672-156.672v-81.92h-102.912v81.92z m-690.176 0v-81.92H71.68v81.92c0 86.528 70.144 156.672 156.672 156.672h109.056v-102.912H228.352c-29.696 0-53.76-24.064-53.76-53.76z" fill="#AAAAAA" ></path></symbol><symbol id="icon-fangda" viewBox="0 0 1024 1024"><path d="M488.96 333.824h-47.104V286.72c0-34.816-28.16-62.976-62.976-62.976-34.816 0-62.976 28.16-62.976 62.976v47.104h-47.104c-34.816 0-62.976 28.16-62.976 62.976s28.16 62.976 62.976 62.976h47.104V506.88c0 34.816 28.16 62.976 62.976 62.976 34.816 0 62.976-28.16 62.976-62.976v-47.104h47.104c34.816 0 62.976-28.16 62.976-62.976 0-34.304-28.16-62.976-62.976-62.976z" fill="#72B02D" ></path><path d="M810.496 720.384l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 143.36-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848s26.112-5.12 36.352-14.848c19.968-19.968 19.968-52.736 0-72.704z m-431.104-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-97.28 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M811.008 106.496h-109.056V209.92h109.056c29.696 0 53.76 24.064 53.76 53.76v81.408H967.68v-81.92c0-86.016-70.144-156.672-156.672-156.672zM864.768 791.552c0 29.696-24.064 53.76-53.76 53.76h-109.056v102.912h109.056c86.528 0 156.672-70.144 156.672-156.672v-81.92h-102.912v81.92z m-690.176 0v-81.92H71.68v81.92c0 86.528 70.144 156.672 156.672 156.672h109.056v-102.912H228.352c-29.696 0-53.76-24.064-53.76-53.76z" fill="#AAAAAA" ></path></symbol><symbol id="icon-fangdazhichuangkou" viewBox="0 0 1024 1024"><path d="M949.248 858.624l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 142.848-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848s26.112-5.12 36.352-14.848c19.968-19.968 19.968-52.736 0-72.704z m-431.616-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-96.768 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M216.576 919.04h109.056v-102.912H216.576c-29.696 0-53.76-24.064-53.76-53.76V233.984c0-29.696 24.064-53.76 53.76-53.76H798.72c29.696 0 53.76 24.064 53.76 53.76v81.92h102.912v-81.92c0-86.528-70.144-156.672-156.672-156.672H216.576c-86.528 0-156.672 70.144-156.672 156.672v528.384c0 86.528 70.144 156.672 156.672 156.672z" fill="#AAAAAA" ></path></symbol><symbol id="icon-shiyingpingmu" viewBox="0 0 1024 1024"><path d="M876.032 75.264H147.968c-39.936 0-72.704 32.768-72.704 72.704v728.064c0 39.936 32.768 72.704 72.704 72.704h728.064c39.936 0 72.704-32.768 72.704-72.704V147.968c0-39.936-32.768-72.704-72.704-72.704z m0 764.416c0 22.016-14.336 36.352-36.352 36.352H184.32c-22.016 0-36.352-14.336-36.352-36.352V184.32c0-22.016 14.336-36.352 36.352-36.352h655.36c22.016 0 36.352 14.336 36.352 36.352v655.36z" fill="#AAAAAA" ></path><path d="M329.728 184.32H220.672c-3.584 0-10.752 0-14.336 3.584-7.168 3.584-14.336 10.752-18.432 18.432-3.584 3.584-3.584 10.752-3.584 14.336v109.056c0 22.016 14.336 36.352 36.352 36.352s36.352-14.336 36.352-36.352v-22.016l47.104 47.104c7.168 7.168 14.336 10.752 25.6 10.752 10.752 0 18.432-3.584 25.6-10.752 14.336-14.336 14.336-36.352 0-51.2l-47.104-47.104h22.016c22.016 0 36.352-14.336 36.352-36.352 0-21.504-14.848-35.84-36.864-35.84zM329.728 766.976h-22.016l47.104-47.104c14.336-14.336 14.336-36.352 0-51.2-14.336-14.336-36.352-14.336-51.2 0l-47.104 47.104v-22.016c0-22.016-14.336-36.352-36.352-36.352s-36.352 14.336-36.352 36.352v109.056c0 3.584 0 10.752 3.584 14.336 3.584 7.168 10.752 14.336 18.432 18.432 3.584 3.584 10.752 3.584 14.336 3.584h109.056c22.016 0 36.352-14.336 36.352-36.352s-13.824-35.84-35.84-35.84zM817.664 187.904c-3.584-3.584-10.752-3.584-14.336-3.584h-109.056c-22.016 0-36.352 14.336-36.352 36.352s14.336 36.352 36.352 36.352h22.016l-47.104 47.104c-14.336 14.336-14.336 36.352 0 51.2 7.168 7.168 14.336 10.752 25.6 10.752s18.432-3.584 25.6-10.752l47.104-47.104v22.016c0 22.016 14.336 36.352 36.352 36.352s36.352-14.336 36.352-36.352V220.672c0-3.584 0-10.752-3.584-14.336-4.096-7.68-11.264-14.848-18.944-18.432zM803.328 657.408c-22.016 0-36.352 14.336-36.352 36.352v22.016l-47.104-47.104c-14.336-14.336-36.352-14.336-51.2 0-14.336 14.336-14.336 36.352 0 51.2l47.104 47.104h-22.016c-22.016 0-36.352 14.336-36.352 36.352s14.336 36.352 36.352 36.352h109.056c3.584 0 10.752 0 14.336-3.584 7.168-3.584 14.336-10.752 18.432-18.432 3.584-3.584 3.584-10.752 3.584-14.336v-109.056c0.512-22.016-13.824-36.864-35.84-36.864z" fill="#72B02D" ></path></symbol><symbol id="icon-yangshitu-01" viewBox="0 0 1024 1024"><path d="M645.632 882.688H150.528l252.928-204.8 477.696 0.512z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512z m-542.72 23.552H880.64l-234.496 203.264-228.864 0.512V140.8z m0 247.296l217.088-0.512-1.024 247.296H417.28V388.096z m-43.008-223.744v180.736l-225.792 1.024 225.792-181.76zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m532.48 493.568H150.528l252.928-204.288 477.696 0.512-235.52 203.776z m271.36-247.808h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-zuoshitu-01" viewBox="0 0 1024 1024"><path d="M374.272 644.096l-262.656 211.968L112.64 373.76l261.632-209.408z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM112.64 373.76l261.632-209.408v479.744l-263.168 211.968L112.64 373.76z m520.192 507.904l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-228.864 0.512V140.8H880.64l-234.496 203.776z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-qianshitu-01" viewBox="0 0 1024 1024"><path d="M112.64 389.12h520.704v493.056H112.64z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76z m259.584 717.824H112.64V389.12h520.704v493.056z m12.288-537.6l-228.864 0.512V140.8H880.64l-234.496 203.776z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-youshitu-01" viewBox="0 0 1024 1024"><path d="M916.992 659.456l-239.616 196.096V375.808l239.616-208.896z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m519.68 492.544l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-228.864 0.512V140.8H880.64l-234.496 203.776z m270.848 314.88l-239.104 196.096V375.808l239.104-208.896v492.544z" fill="#AAAAAA" ></path></symbol><symbol id="icon-houshitu-01" viewBox="0 0 1024 1024"><path d="M960 118.784V117.76v-1.024-1.024-1.024-0.512-0.512c1.536 7.68-1.024 15.872-6.656 20.992L677.376 373.76v299.52h-43.008V389.12H374.272v254.976l-262.656 211.968L112.64 389.12l261.632-0.512v-42.496h269.824l280.064-243.2c3.072-2.56 6.656-4.096 10.752-5.12H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c-0.512 0.512-0.512 1.024-1.024 2.048 0 0.512 0 0.512-0.512 1.024 0 0.512 0 0.512-0.512 1.024 0 0.512 0 1.024-0.512 1.536v0.512c0 0.512 0 1.024-0.512 1.536V907.264c0 0.512 0 1.024 0.512 2.048v0.512s0 0.512 0.512 1.024c0 0.512 0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.024s0 0.512 0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512c0.512 0.512 1.024 1.024 1.536 1.024 0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512c0.512 0 1.024 0 1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-242.176 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024 0-0.512 0.512-1.024 0.512-1.536v-0.512V658.944v-2.048V118.272c1.536 1.024 1.536 1.024 1.536 0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76z m258.56 717.312l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m44.544-26.112v-177.664H880.64l-203.264 177.664z m281.6-741.376v-0.512-0.512 1.024z" fill="#AAAAAA" ></path><path d="M916.992 634.88h-239.616V375.808l239.616-211.456zM644.096 346.112H417.28V141.824h462.336zM417.28 389.12H634.88v245.76H417.28z" fill="#72B02D" ></path><path d="M958.976 114.176c0 0.512 0.512 0.512 0 0z m-20.48-16.384H945.152l0.512 0.512 0.512 0.512h1.024l0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512c0 0.512 0.512 0.512 0.512 1.024s0 0.512 0.512 0.512c0 0.512 0.512 1.024 0.512 1.536 0 0.512 0.512 1.024 0.512 1.024-3.072-10.24-13.312-16.896-24.064-14.848h4.608v1.024z" fill="#C1272D" ></path></symbol><symbol id="icon-dingshitu-01" viewBox="0 0 1024 1024"><path d="M880.64 140.8l-234.496 203.776-497.664 1.536 256-206.336z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m519.68 492.544l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-497.664 1.536 256-205.824 476.16 1.024-234.496 203.264z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-toushitu-01" viewBox="0 0 1024 1024"><path d="M965.632 114.176V112.64v-1.024-0.512-1.024-0.512s0-0.512-0.512-1.024v-0.512c-0.512-1.024-0.512-2.048-1.024-3.072v-0.512c0-0.512-0.512-0.512-0.512-1.024s0-0.512-0.512-0.512l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512s-0.512-1.024-1.024-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024s-0.512 0-0.512-0.512c0 0-0.512 0-0.512-0.512H950.784h-0.512H392.704c-5.12 0-9.728 1.536-13.312 4.608l-312.32 251.392-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536 0 0 0 0.512-0.512 0.512 0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024c0 0.512 0 0.512-0.512 1.024s0 0.512 0 1.024 0 1.024-0.512 1.536v0.512c0 0.512 0 1.024-0.512 1.536V912.896c0 0.512 0 1.024 0.512 2.048v0.512s0 0.512 0.512 1.024l0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.024l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512 0 0.512 0.512 0.512 1.024 1.024l0.512 0.512 1.024 1.024 0.512 0.512c0.512 0.512 1.024 1.024 1.536 1.024 0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512c0.512 0 1.024 0 1.024 0.512h583.168c7.68 0 14.848-4.096 18.432-10.752L957.44 675.84l1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024 0-0.512 0.512-1.024 0.512-1.536v-0.512V661.504v-1.536V658.432l1.024-544.256zM372.736 343.04l-229.888 0.512L372.736 158.72v184.32z m43.008 43.008l220.672-0.512-0.512 251.392h-220.16v-250.88z m-43.008 0v260.096l-267.264 215.552 1.536-474.624 265.728-1.024z m-227.84 502.272l257.024-208.384h233.984l-0.512 206.848-490.496 1.536z m503.296-545.792l-172.544 0.512H415.232V135.68h471.04l-238.08 206.848z m31.232 337.408h207.36l-207.36 181.248v-181.248z m0-43.008V373.76l243.2-212.48v475.648h-243.2z" fill="#AAAAAA" ></path></symbol><symbol id="icon-a-jixiebi3" viewBox="0 0 1024 1024"><path d="M483.386004 821.695719H164.779715l29.075502-22.648286h260.455285l29.075502 22.648286z" fill="#3F3F3F" ></path><path d="M483.386004 776.399147H164.779715l29.075502 22.648286h260.455285l29.075502-22.648286z" fill="#7A807D" ></path><path d="M483.386004 776.399147H164.779715l29.075502-22.648285h260.455285l29.075502 22.648285z" fill="#3F3F3F" ></path><path d="M483.386004 730.796518H164.779715l29.075502 22.954344h260.455285l29.075502-22.954344zM483.386004 685.499947H164.779715l29.075502 22.648285h260.455285l29.075502-22.648285z" fill="#7A807D" ></path><path d="M483.386004 730.796518H164.779715l29.075502-22.648286h260.455285l29.075502 22.648286z" fill="#3F3F3F" ></path><path d="M150.701051 623.064132h339.418227v62.435815H150.701051z" fill="#F7A53F" ></path><path d="M150.701051 821.695719h339.418227v31.217907H150.701051z" fill="#FFFFFF" ></path><path d="M607.951575 339.654504a74.984189 74.984189 0 0 1-23.872517 103.447575 75.290247 75.290247 0 0 1-103.753633-23.872518L293.324039 120.823095A75.290247 75.290247 0 0 1 317.196557 17.069462a75.290247 75.290247 0 0 1 103.753633 23.872517zM441.762128 517.474152v105.58998H198.752144v-105.58998a122.423166 122.423166 0 1 1 244.846331 0z" fill="#FFC200" ></path><path d="M627.233224 377.605685a103.141517 103.141517 0 0 1-52.948019 82.635637l-165.88339 118.750471-2.448463 1.836347a112.93537 112.93537 0 1 1-112.017197-194.346775l195.571007-84.471985a132.523077 132.523077 0 0 1 48.357151-12.854432A89.062853 89.062853 0 0 1 627.233224 377.605685z" fill="#FFE610" ></path><path d="M401.056425 493.601635a71.005436 71.005436 0 1 1-71.005436-71.311494 71.005436 71.005436 0 0 1 71.005436 71.311494z" fill="#FFFFFF" ></path><path d="M375.34756 493.601635a45.296571 45.296571 0 1 1-45.296571-45.60263 45.296571 45.296571 0 0 1 45.296571 45.60263z" fill="#48B8BF" ></path><path d="M592.342622 376.381453a49.88744 49.88744 0 1 1-49.581382-49.88744 49.88744 49.88744 0 0 1 49.581382 49.88744z" fill="#FFFFFF" ></path><path d="M574.285205 376.381453a30.605791 30.605791 0 1 1-30.605792-30.605791 30.605791 30.605791 0 0 1 30.605792 30.605791z" fill="#48B8BF" ></path><path d="M731.048068 230.789704l165.975207-62.099151 18.883774 50.46895-165.975207 62.068545z" fill="#FFE610" ></path><path d="M734.047436 202.785404l145.836596-54.294674 9.426584 25.31099-145.867202 54.294674z" fill="#F7A53F" ></path><path d="M808.419509 259.161272l23.872517 63.353988 31.523966 35.808776-19.893765 18.057417-48.051092-38.257239-27.851271-63.660046 40.399645-15.302896zM854.940312 242.022029l23.56646 63.04793-0.306058 47.745035 26.627038 0.612116 11.324143-60.293409-20.811938-66.414568-40.399645 15.302896zM716.173654 94.379691l102.345766-38.257239 37.216643 99.468822-102.345767 38.257239z" fill="#7A807D" ></path><path d="M841.473764 83.790087a66.108509 66.108509 0 0 1-65.802452 66.10851l-407.669142 15.608953a67.944857 67.944857 0 0 1-11.324142 0 82.635637 82.635637 0 0 1 0-165.271273 67.944857 67.944857 0 0 1 11.324142 0l407.669142 17.445301A66.108509 66.108509 0 0 1 841.473764 83.790087z" fill="#FFE610" ></path><path d="M402.892773 83.790087a46.520803 46.520803 0 1 1-46.520803-46.214745A46.520803 46.520803 0 0 1 402.892773 83.790087z" fill="#FFFFFF" ></path><path d="M386.059587 83.790087a30.605791 30.605791 0 1 1-30.605791-30.605791 30.605791 30.605791 0 0 1 30.605791 30.605791z" fill="#48B8BF" ></path><path d="M810.867972 83.790087a38.257239 38.257239 0 1 1-39.787528-38.257239A38.257239 38.257239 0 0 1 810.867972 83.790087z" fill="#FFFFFF" ></path><path d="M795.565077 83.790087a24.484633 24.484633 0 1 1-24.484633-24.484633 24.484633 24.484633 0 0 1 24.484633 24.484633z" fill="#48B8BF" ></path><path d="M106.93477 852.913626h639.66104v171.086374H106.93477z" fill="#FFE610" ></path><path d="M383.305066 709.678522h337.275822v207.201208H383.305066z" fill="#4D4D4D" ></path><path d="M407.177584 732.02075h291.061076v161.904636H407.177584z" fill="#FFFFFF" ></path><path d="M429.825869 755.893267h159.150116v16.22107h-159.150116zM429.825869 784.356653h131.604903v16.22107h-131.604903zM429.825869 812.820039h199.855818v16.22107h-199.855818zM429.825869 841.283425h146.601741v16.22107h-146.601741z" fill="#92D5D2" ></path><path d="M507.564579 732.326808l-31.830023 161.904636H407.177584v-161.904636h100.386995z" fill="#F5F5F5" opacity=".5" ></path><path d="M474.816383 916.87973h155.783478v31.830023h-155.783478z" fill="#7A807D" ></path><path d="M106.93477 977.173139h639.66104v46.826861H106.93477z" fill="#F7A53F" ></path><path d="M252.006221 899.740487h66.414567v48.969266H252.006221z" fill="#7A807D" ></path><path d="M319.64502 817.716966l-3.672695 11.324143-21.730112 70.699378h-21.730112l23.872518-76.820537 3.366637-11.324143 19.893764 6.121159z" fill="#999999" ></path><path d="M341.069074 809.147344A28.463386 28.463386 0 1 1 321.17531 773.950684a28.463386 28.463386 0 0 1 19.893764 35.19666z" fill="#48B8BF" ></path><path d="M322.705599 793.538391a13.16049 13.16049 0 1 1-26.014923 0 13.16049 13.16049 0 0 1 26.014923 0z" fill="#FFFFFF" ></path><path d="M165.085773 899.740487h66.414568v49.275324H165.085773z" fill="#7A807D" ></path><path d="M163.861542 817.716966l3.366637 11.324143 22.03617 70.699378h21.730111l-23.872517-76.820537-3.672695-11.324143-19.587706 6.121159z" fill="#999999" ></path><path d="M142.437488 809.147344a28.157328 28.157328 0 1 0 18.669532-35.19666 28.157328 28.157328 0 0 0-18.669532 35.19666z" fill="#F7A53F" ></path><path d="M160.800963 793.538391a13.16049 13.16049 0 1 0 12.854432-12.854433 12.854432 12.854432 0 0 0-12.854432 12.854433z" fill="#FFFFFF" ></path></symbol><symbol id="icon-jixiebi2" viewBox="0 0 1164 1024"><path d="M848.55632 485.108049h233.370249v430.146938h-233.370249z" fill="#FFE610" ></path><path d="M974.217224 605.245396h154.314351v64.211341h-154.314351zM974.217224 689.82485h154.314351v64.211341h-154.314351zM974.217224 774.749527h154.314351v64.211341h-154.314351z" fill="#54D9D9" ></path><path d="M306.557369 245.869021l99.078789 31.760448 69.389675 22.094225 145.683794 46.259783 69.734897 22.094225 119.101681 37.974449 66.627896 21.058558 1.035667-2.761778 21.749003-69.044453 23.129891-72.151453-22.784669-7.249667-79.746343-25.201225-20.368113-6.559223-337.972595-107.364124-21.40378-6.904445-87.686455-27.617781-45.224116 142.576794-0.345222 1.035667z" fill="#FFE610" ></path><path d="M412.33347 357.755556l10.70189-33.555604 441.470229 140.401894-10.667368 33.555604z" fill="#A3A3A3" ></path><path d="M380.331366 357.686512l25.408359-79.953476 69.424197 22.094225-25.408359 79.918953zM595.508402 425.626253l25.408359-79.953476 69.389674 22.059703-25.373836 79.953476z" fill="#3F3F3F" ></path><path d="M809.200982 411.575707a144.302906 144.302906 0 0 0 4.833112 37.284004 138.088905 138.088905 0 0 0 18.987224 43.152783 144.302906 144.302906 0 0 0 15.535002 19.677669 146.719461 146.719461 0 0 0 256.154919-100.114456 144.648128 144.648128 0 0 0-34.522226-94.5909 180.206021 180.206021 0 0 0-15.880224-16.570668 146.719461 146.719461 0 0 0-96.317012-34.522227 148.445573 148.445573 0 0 0-58.687784 10.356668 146.719461 146.719461 0 0 0-89.757788 129.803571 34.522226 34.522226 0 0 0-0.345223 5.523556z" fill="#FFC200" ></path><path d="M876.174101 411.575707A80.091565 80.091565 0 1 0 956.265666 331.484142a80.091565 80.091565 0 0 0-80.091565 80.091565z" fill="#FFFFFF" ></path><path d="M904.827549 411.575707a51.438117 51.438117 0 1 0 51.438117-51.092895 51.438117 51.438117 0 0 0-51.438117 51.092895z" fill="#54D9D9" ></path><path d="M218.076903 216.594173l37.007826-117.202958 88.894733 28.06657L306.902591 244.660743zM86.512699 119.345062l92.450522-16.467102 19.401491 108.745013-92.450522 16.467102z" fill="#8A8A8A" ></path><path d="M0 65.317778l45.224116 254.083585 21.058558-3.797445 31.415226-5.523556 22.094225-4.142667-13.808891-77.675009-19.332446-109.090235-12.082779-67.318341-14.499335 2.761778-21.403781 3.797445-38.664893 6.904445z" fill="#292929" ></path><path d="M95.626567 436.43171l16.570668-3.107-14.499335-123.244348-31.415226 5.523556 29.343893 120.827792z" fill="#7A807D" ></path><path d="M138.088905 153.349455a80.782009 80.782009 0 0 0 31.070003 63.520896 79.40112 79.40112 0 0 0 49.021562 16.915891 75.258453 75.258453 0 0 0 32.10567-6.904445 80.091565 80.091565 0 0 0 48.331117-73.532342 78.710676 78.710676 0 0 0-13.808891-44.18845 76.984564 76.984564 0 0 0-31.760448-27.617781l-7.59489-3.452222a83.543787 83.543787 0 0 0-12.428001-3.452223H217.835247A80.091565 80.091565 0 0 0 138.088905 153.349455z" fill="#FFC200" ></path><path d="M167.087575 153.694677A51.092895 51.092895 0 1 0 217.835247 103.637449a50.747673 50.747673 0 0 0-50.747672 50.057228z" fill="#FFFFFF" ></path><path d="M185.384355 153.694677a32.450893 32.450893 0 1 0 32.450892-34.522226 32.450893 32.450893 0 0 0-32.450892 34.522226z" fill="#54D9D9" ></path><path d="M38.664893 58.413333l21.403781-3.797445C66.627897 19.74844 108.745013 11.117883 141.88635 14.915328a89.757788 89.757788 0 0 1 81.472454 58.687784h9.321001a83.543787 83.543787 0 0 1 12.428001 3.452223l7.59489 3.452223c53.854673-42.807561 165.016241-17.951558 187.110466 48.331116l21.40378 6.904446C439.813162 59.449 307.593036 24.581551 241.655583 69.115223a113.923346 113.923346 0 0 0-108.745012-69.044452C90.793455 0.070771 41.081449 10.772661 38.664893 58.413333zM799.189537 244.14291l20.368113 6.559223a345.222262 345.222262 0 0 0 89.412566-34.522226c48.331117-22.784669 133.601015-34.522226 144.99335 34.522226a114.613791 114.613791 0 0 1 0 48.676339 180.206021 180.206021 0 0 1 15.880224 16.570668c15.880224-50.057228 3.797445-107.364124-54.545117-124.280014-83.198565-22.439447-141.541127 45.569339-216.109136 52.473784z" fill="#3F3F3F" ></path><path d="M44.18845 731.251522a105.638012 105.638012 0 0 0 105.638012 105.638012h698.729858v-31.415226H149.826462a74.222786 74.222786 0 0 1 0-148.445573h698.729858v-31.415225H149.826462a105.638012 105.638012 0 0 0-105.638012 105.638012z" fill="#8A8A8A" ></path><path d="M75.603675 731.251522a74.222786 74.222786 0 0 0 74.222787 74.222786h698.729858V655.993069H149.826462a74.222786 74.222786 0 0 0-74.222787 75.258453z" fill="#FFE610" ></path><path d="M103.566679 731.251522a51.092895 51.092895 0 1 0 50.747672-50.747673A50.747673 50.747673 0 0 0 103.566679 731.251522z" fill="#FFFFFF" ></path><path d="M121.863459 731.251522a32.450893 32.450893 0 1 0 32.450892-32.450893 32.450893 32.450893 0 0 0-32.450892 32.450893zM290.331922 731.251522a34.522226 34.522226 0 0 0 34.522227 34.522226h414.266714a34.522226 34.522226 0 0 0 34.522226-34.522226 34.522226 34.522226 0 0 0-34.522226-34.522226h-414.266714a34.522226 34.522226 0 0 0-34.522227 34.522226z" fill="#54D9D9" ></path><path d="M827.15254 877.625761h276.523032v61.794785h-276.523032z" fill="#F7A53F" ></path><path d="M839.925764 939.765768h250.976584v31.070004h-250.976584z" fill="#707070" ></path><path d="M747.75142 657.028735v148.445573h43.152783v31.415226h57.652117v-211.276024h-57.652117v31.415225h-43.152783z" fill="#B3B3B3" opacity=".76" ></path><path d="M14.499335 970.490549h1149.590133v53.509451H14.499335z" fill="#B86805" ></path><path d="M154.314351 836.889534H272.725587v133.601015H154.314351zM614.150404 836.889534h118.411236v133.601015h-118.411236z" fill="#F7A53F" ></path><path d="M614.150404 836.889534h118.411236v78.365453h-118.411236zM154.314351 836.889534H272.725587v78.365453H154.314351z" fill="#B3B3B3" opacity=".76" ></path></symbol><symbol id="icon-jixiebi4" viewBox="0 0 1123 1024"><path d="M502.569098 505.335276h543.234824v85.15391H502.569098z" fill="#FFE610" ></path><path d="M483.047648 203.089382a81.451566 81.451566 0 0 1-41.06236 73.373725l-302.919047 173.33701a82.124719 82.124719 0 0 1-81.788143-143.045105l302.919047-173.33701a82.124719 82.124719 0 0 1 83.807603 0 79.768682 79.768682 0 0 1 27.935868 28.945597A77.412645 77.412645 0 0 1 483.047648 203.089382z" fill="#FFC200" ></path><path d="M39.776109 803.542249h1082.094151v220.121174H39.776109z" fill="#FFE610" ></path><path d="M39.776109 971.830609h1082.094151v52.169391H39.776109zM466.218812 723.43699v146.747449H219.844654v-146.747449a123.187079 123.187079 0 0 1 246.374158 0z" fill="#FFC200" ></path><path d="M396.210854 790.415757a100.973016 100.973016 0 0 1-141.698798-23.896947l-235.603704-331.864645a100.973016 100.973016 0 0 1 23.896947-141.362222 100.973016 100.973016 0 0 1 141.698799 23.896947l235.603703 331.528068a100.973016 100.973016 0 0 1-24.233523 141.698799z" fill="#FFE610" ></path><path d="M146.470929 451.146424a86.16364 86.16364 0 1 1 29.282174-118.138428 86.16364 86.16364 0 0 1-29.282174 118.138428z" fill="#B8B8B8" ></path><path d="M131.661553 424.556864a56.881466 56.881466 0 1 1 19.52145-78.085799 56.544889 56.544889 0 0 1-19.52145 78.085799z" fill="#B8B8B8" ></path><path d="M120.554522 405.035414a35.677132 35.677132 0 0 1-36.686863-60.920386A35.677132 35.677132 0 1 1 120.554522 405.035414z" fill="#FFFFFF" ></path><path d="M370.9676 757.767815a56.881466 56.881466 0 1 1 19.184873-78.085798 56.881466 56.881466 0 0 1-19.184873 78.085798z" fill="#B8B8B8" ></path><path d="M358.850839 739.592672a35.677132 35.677132 0 1 1 12.116761-48.803624 35.677132 35.677132 0 0 1-12.116761 48.803624z" fill="#FFFFFF" ></path><path d="M423.136992 384.167657l-112.416624 66.305614-32.984519-55.871735 112.753201-65.969037 9.760725 16.492259 13.463069 22.887217 9.424148 16.155682z" fill="#8A8A8A" ></path><path d="M400.18246 345.023785l70.512822-41.398937 13.463069 22.887217-70.512823 41.432594z" fill="#C4C4C4" ></path><path d="M489.442606 313.823123a21.877487 21.877487 0 0 1-11.780186 27.935868 21.54091 21.54091 0 0 1-27.935867-12.116762l-29.955328-73.373725a21.54091 21.54091 0 0 1 12.116762-27.935868 21.204333 21.204333 0 0 1 27.599291 11.780186z" fill="#F7A53F" ></path><path d="M482.037918 318.19862a12.453339 12.453339 0 0 1-9.424148 14.809376 12.789915 12.789915 0 0 1-14.809376-9.424148 12.789915 12.789915 0 0 1 9.424148-14.809376 12.453339 12.453339 0 0 1 14.809376 9.424148z" fill="#707070" ></path><path d="M303.652257 388.543155a24.5701 24.5701 0 0 0-7.404688 8.077841l-24.906677 45.10128 32.311365 44.764704 36.350285-65.63246a24.906677 24.906677 0 0 0-36.013709-33.657672z m12.453338 6.394957a14.472799 14.472799 0 0 1 16.155683 12.116762 14.136222 14.136222 0 0 1-12.116762 16.155683 13.799645 13.799645 0 0 1-16.155683-11.780185 14.136222 14.136222 0 0 1 13.463069-16.49226z" fill="#B86805" ></path><path d="M305.33514 411.430372a13.799645 13.799645 0 0 0 16.155683 11.780185 14.136222 14.136222 0 0 0 12.116762-16.155683 14.472799 14.472799 0 0 0-16.155683-12.116762 14.136222 14.136222 0 0 0-12.116762 16.49226z" fill="#5E5E5E" ></path><path d="M625.4196 163.709906l-19.858026 12.116762-37.360016 22.55064-19.858027 12.116762-20.867756-34.667402-40.389207-66.64219-19.184872-31.301635 9.424148-5.721804 58.227772-35.340556 9.424148-5.385227 80.441836 132.27465z" fill="#8A8A8A" ></path><path d="M568.066927 198.276335l37.124412-22.516982 36.484917 60.14626-37.15807 22.55064z" fill="#4D4D4D" ></path><path d="M931.031261 336.373763l-85.15391 217.765137h-128.572307l-46.447587-118.811581-30.965058-79.768683-7.404688-19.184873 46.111011-46.447587h205.648375l46.784164 46.447587z" fill="#AEBABD" ></path><path d="M744.668732 483.861681l105.954351-43.182793 2.423352 5.890093-105.988009 43.182793zM840.8287 361.953594l-120.157889-26.252984 1.682884-6.058381 119.821312 26.252984-1.346307 6.058381zM683.916634 363.838423l6.125696-1.851172 32.984518 109.252803-6.159353 1.851172z" fill="#6A5060" ></path><path d="M880.544753 403.015954a49.813354 49.813354 0 1 1-49.813354-49.813355 50.149931 50.149931 0 0 1 49.813354 49.813355zM746.923796 359.597557a33.657672 33.657672 0 1 1-33.657672-33.657672 33.657672 33.657672 0 0 1 33.657672 33.657672zM767.454975 465.282647a26.589561 26.589561 0 0 1-26.58956 26.252984A26.252984 26.252984 0 0 1 741.201991 438.693086a26.589561 26.589561 0 0 1 26.252984 26.589561z" fill="#FFFFFF" ></path><path d="M846.887081 403.015954a16.155683 16.155683 0 1 1-16.155682-16.155683 16.155683 16.155683 0 0 1 16.155682 16.155683zM724.709732 359.597557a10.097302 10.097302 0 0 1-10.097302 9.760725 9.760725 9.760725 0 1 1 0-19.52145 10.097302 10.097302 0 0 1 10.097302 9.760725zM748.943256 465.282647A7.741265 7.741265 0 0 1 741.201991 472.350758a8.077841 8.077841 0 0 1-8.077841-8.077842 8.077841 8.077841 0 0 1 8.077841-8.077841 8.077841 8.077841 0 0 1 7.741265 9.087572z" fill="#788B90" opacity=".37" ></path><path d="M698.456748 219.581642h166.268899v46.11101h-166.268899z" fill="#F7A53F" ></path><path d="M702.159092 223.620562h5.048651v38.03317h-5.048651zM711.246663 223.620562h5.048651v38.03317h-5.048651zM720.334235 223.620562h5.048651v38.03317h-5.048651zM729.421806 223.620562h5.048651v38.03317h-5.048651zM738.509378 223.620562h5.04865v38.03317h-5.04865zM747.596949 223.620562h5.048651v38.03317h-5.048651zM756.68452 223.620562h5.048651v38.03317h-5.048651zM765.772092 223.620562h5.048651v38.03317h-5.048651zM774.859663 223.620562h5.048651v38.03317H774.859663zM783.610658 223.620562h5.048651v38.03317h-5.048651zM792.698229 223.620562h5.048651v38.03317h-5.048651zM801.785801 223.620562h5.04865v38.03317h-5.04865zM810.873372 223.620562h5.048651v38.03317h-5.048651zM819.960944 223.620562h5.04865v38.03317h-5.04865zM829.048515 223.620562h5.048651v38.03317h-5.048651zM838.136086 223.620562h5.048651v38.03317h-5.048651zM847.223658 223.620562h5.048651v38.03317h-5.048651zM856.311229 223.620562h5.048651v38.03317h-5.048651z" fill="#788B90" opacity=".38" ></path><path d="M738.845954 265.692652h85.490487v23.896947h-85.490487z" fill="#707070" ></path><path d="M735.816764 288.916446h-1.682884L640.228976 355.558636l-39.0429 26.926138-4.712074 3.365767-16.492259-23.896947a25.916407 25.916407 0 0 1 6.731534-36.013709l97.270672-67.315344a25.916407 25.916407 0 0 1 36.013709 6.731534z" fill="#58BFD2" ></path><path d="M670.857457 435.327319h-33.657672a12.116762 12.116762 0 0 1-10.433878-8.414418l-24.906677-44.428127 39.042899-26.926138z" fill="#8A8A8A" ></path><path d="M827.365631 288.916446h1.682884l94.241481 65.63246 39.0429 26.926138 4.712074 3.365767 16.492259-23.896947a25.916407 25.916407 0 0 0-6.731534-35.003979l-97.270672-67.315344a25.916407 25.916407 0 0 0-36.013709 6.731534z" fill="#58BFD2" ></path><path d="M892.324938 435.327319h33.657672a12.116762 12.116762 0 0 0 10.433878-8.414418l24.906677-44.428127-39.042899-26.926138z" fill="#8A8A8A" ></path><path d="M738.845954 265.692652h85.490487v12.116762h-85.490487zM922.95342 355.558636l-31.301635 79.768683-46.447588 118.811581 49.140201-194.541343-70.007957-69.671381h4.038921l94.578058 65.63246z" fill="#848484" opacity=".25" ></path><path d="M661.433309 321.900964l-48.467048-67.988497 21.204334-12.789915 38.033169 74.383455-10.770455 6.394957z" fill="#7A807D" ></path><path d="M535.553616 36.820483l-58.227772 33.657672-11.780186-19.184873A33.657672 33.657672 0 0 1 502.905674 1.143351a33.657672 33.657672 0 0 1 21.204334 15.482529z" fill="#F7A53F" ></path><path d="M527.475775 175.826668L483.047648 203.089382A77.412645 77.412645 0 0 0 471.940616 164.046483a79.768682 79.768682 0 0 0-27.599291-28.272444l42.745243-25.916408zM527.475775 175.826668l-40.389207-66.64219 40.389207 66.64219z" fill="#C4C4C4" ></path><path d="M956.274515 854.028757H600.512923l32.311365-25.243254h290.802285l32.647942 25.243254z" fill="#999999" ></path><path d="M650.999431 304.062398l-70.007958 14.809376 69.671381 8.414418-4.712074 38.033169 25.243254-25.243254 22.887217 25.243254-3.702344-36.350286 35.003979-1.682883-31.974789-19.52145 14.809376-35.677132-33.657672 24.906677-26.252984-43.754973 2.692614 50.823084z" fill="#FFFFFF" ></path><path d="M956.274515 803.542249H600.512923l32.311365 25.243254h290.802285l32.647942-25.243254z" fill="#7A807D" ></path><path d="M956.274515 803.542249H600.512923l32.311365-25.579831h290.802285l32.647942 25.579831z" fill="#999999" ></path><path d="M956.274515 752.719165H600.512923l32.311365 25.243253h290.802285l32.647942-25.243253zM956.274515 702.232657H600.512923l32.311365 25.243254h290.802285l32.647942-25.243254z" fill="#7A807D" ></path><path d="M956.274515 752.719165H600.512923l32.311365-25.243254h290.802285l32.647942 25.243254z" fill="#999999" ></path><path d="M584.693817 632.561276h378.985386v69.671381H584.693817zM584.693817 854.028757h378.985386v34.667402H584.693817z" fill="#FFC200" ></path><path d="M502.569098 590.489186h543.234824v42.07209H502.569098z" fill="#F7A53F" ></path><path d="M273.696929 882.637778h80.441836v59.574079H273.696929z" fill="#7A807D" ></path><path d="M355.821648 783.011069l-4.375497 13.799646-26.589561 85.827063h-26.252984l28.945598-93.231751 4.375497-13.799646 23.896947 7.404688z" fill="#999999" ></path><path d="M381.738055 772.913768a33.657672 33.657672 0 1 1-22.55064-43.08182 33.657672 33.657672 0 0 1 22.55064 43.08182z" fill="#F7A53F" ></path><path d="M359.523992 753.728895a15.819106 15.819106 0 1 1-15.819106-15.819106 15.819106 15.819106 0 0 1 15.819106 15.819106z" fill="#FFFFFF" ></path><path d="M168.348416 882.637778h80.441835v59.574079H168.348416z" fill="#7A807D" ></path><path d="M166.665532 783.011069l4.375497 13.799646 26.589561 85.827063h26.252984l-28.945598-93.231751-4.03892-13.799646-24.233524 7.404688z" fill="#999999" ></path><path d="M140.749125 772.913768a33.657672 33.657672 0 1 0 67.315343-20.53118 33.657672 33.657672 0 0 0-43.08182-22.55064 33.657672 33.657672 0 0 0-24.233523 43.08182z" fill="#68FF4B" ></path><path d="M162.963188 753.728895a15.819106 15.819106 0 1 0 15.819106-15.819106 15.819106 15.819106 0 0 0-15.819106 15.819106z" fill="#FFFFFF" ></path></symbol></svg>',(s=>{var e=(t=(t=document.getElementsByTagName("script"))[t.length-1]).getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var n,i,r,a,o,l=function(d,u){u.parentNode.insertBefore(d,u)};if(e&&!s.__iconfont__svg__cssinject__){s.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(d){console&&console.log(d)}}n=function(){var d,u=document.createElement("div");u.innerHTML=s._iconfont_svg_string_4634042,(u=u.getElementsByTagName("svg")[0])&&(u.setAttribute("aria-hidden","true"),u.style.position="absolute",u.style.width=0,u.style.height=0,u.style.overflow="hidden",u=u,(d=document.body).firstChild?l(u,d.firstChild):d.appendChild(u))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(n,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),n()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(r=n,a=s.document,o=!1,h(),a.onreadystatechange=function(){a.readyState=="complete"&&(a.onreadystatechange=null,c())})}function c(){o||(o=!0,r())}function h(){try{a.documentElement.doScroll("left")}catch{return void setTimeout(h,50)}c()}})(window);const Hu=Ue.defineStore("formToTableComp",{state:()=>({selectArray:[],selectString:""}),actions:{setSelectArray(s){this.selectArray=s},setSelectString(s){this.selectString=s}}}),s3={class:"calculator-content"},r3={class:"calculator-child"},a3={class:"calculator-child"},o3=V.defineComponent({__name:"calculator",setup(s){const e=V.ref(),t=V.ref();return V.onMounted(()=>{e.value=[{type:"Upload",label:"输入",name:"input"}],t.value=[{type:"Upload",label:"输出",name:"output"}]}),(n,i)=>(V.openBlock(),V.createElementBlock("div",s3,[V.createElementVNode("div",r3,[V.createVNode(si.ssForm,{rowContents:e.value,isRowFlex:!0},null,8,["rowContents"])]),V.createElementVNode("div",a3,[V.createVNode(si.ssForm,{rowContents:t.value,isEdit:!1,isRowFlex:!0},null,8,["rowContents"])])]))}}),l3=xl._export_sfc(o3,[["__scopeId","data-v-73db0fe7"]]),Gu=Ue.defineStore("unit",{state:()=>({selectIndex:"",selectMenu:"",selectTitle:[]}),actions:{setSelectIndex(s){this.selectIndex=s},setSelectMenu(s){this.selectMenu=s},setSelectTitle(s){this.selectTitle=s}}}),Wu=(s,e)=>{let t=s,n=e;return Array.isArray(t)&&(t=t==null?void 0:t.map((i,r)=>{if(Array.isArray(i)){let a={};return i=i==null?void 0:i.forEach((o,l)=>{var c;(c=n==null?void 0:n[l])!=null&&c.prop?a[n[l].prop]=o:Array.isArray(o)&&(a.children=Wu(o,n))}),Object.assign(a,{id:r})}else return i})),t},Xu=(s,e,t)=>{let n=s,i=e;return n=n==null?void 0:n.map((r,a)=>{var o,l;return!Array.isArray(r)||!((o=i==null?void 0:i[a])!=null&&o.label)&&!t||(r.unshift(((l=i==null?void 0:i[a])==null?void 0:l.label)??""),r.some(c=>Array.isArray(c))&&(r=r==null?void 0:r.map(c=>{var h;return Array.isArray(c)&&(c=Xu(c,(h=i==null?void 0:i[a])==null?void 0:h.children,t)),c}))),r}),n},c3=(s,e,t)=>{if(e==="")return s==null?void 0:s.filter(n=>(n==null?void 0:n.id)!==t);{const n=e.split("-");return h3(s,n,t)}},h3=(s,e,t)=>{let n=s,i=e;return(i==null?void 0:i.length)===0?n=n==null?void 0:n.filter(r=>r.id!==t):n=n==null?void 0:n.map(r=>(r.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),r=qu(r,i,t)),r)),n},qu=(s,e,t)=>{var r,a;let n=s,i=e;return(i==null?void 0:i.length)===0?n.children=(r=n.children)==null?void 0:r.filter(o=>o.id!==t):n.children=(a=n.children)==null?void 0:a.map(o=>(o.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),o=qu(o,i,t)),o)),n},u3=(s,e,t)=>{if(e==="")return t;{const n=e.split("-");return d3(s,n,t)}},d3=(s,e,t)=>{let n=s,i=e;return(i==null?void 0:i.length)===0?n=t:n=n==null?void 0:n.map(r=>(r.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),r=ju(r,i,t)),r)),n},ju=(s,e,t)=>{var r;let n=s,i=e;return(i==null?void 0:i.length)===0?n.children=t:n.children=(r=n.children)==null?void 0:r.map(a=>(a.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),a=ju(a,i,t)),a)),n},Yu=Ue.defineStore("modelTableComp",{state:()=>({tableIndex:0,tableShowThree:""}),actions:{setTableIndex(s){this.tableIndex=s},setTableShowThree(s){this.tableShowThree=s}}}),vl=async s=>{var r,a,o,l,c,h,d;let e=(a=(r=Ue.cloneDeep(s))==null?void 0:r.optionUrl)==null?void 0:a.menuSelect,t=[];e==null||e.forEach(u=>{});let n="";const i=await pn.menuToParent(e);if(i==null||i.forEach(u=>{var f,m,_,g;(u==null?void 0:u.name)===(((g=(_=(m=(f=Ue.cloneDeep(s))==null?void 0:f.optionUrl)==null?void 0:m.groupSelect)==null?void 0:_[0])==null?void 0:g.replaceAll("'",""))??"")&&(n=u==null?void 0:u.id)}),n!==""){const u=(o=i==null?void 0:i[0])==null?void 0:o.compData;let f=(c=(l=u==null?void 0:u.find(_=>(_==null?void 0:_.key)==="header"))==null?void 0:l.contents)==null?void 0:c.map(_=>_==null?void 0:_.label),m=(d=(h=u==null?void 0:u.find(_=>(_==null?void 0:_.key)==="tableContents"))==null?void 0:h.contents)==null?void 0:d.map(_=>(_=_==null?void 0:_.filter(g=>!(g!=null&&g.id)),_));m==null||m.forEach(_=>{t.push(pn.getValueToObjectValue(_,f))})}return t},f3={class:"table-content"},p3={class:"menu-config-wrap"},m3=["onClick"],g3={key:0,class:"viewport-wrap"},_3=["onClick"],v3={title:"选择显示列信息"},x3={class:"menu-config-wrap",style:{padding:"0 0 0 16px","box-sizing":"border-box","max-height":"300px",width:"300px",overflow:"auto"}},y3={class:"form-content"},M3={key:0,class:"dialog-footer"},S3={class:"dialog-footer"},b3={__name:"index",props:{compName:{type:String,default:"",required:!1},operatingForm:{type:Object,default:()=>{}},itemData:{type:Array,default:()=>[]},childItemData:{type:Array,default:()=>[]},index:Number,changedContent:{type:Object,default:()=>{}},showHeader:{type:Boolean,default:!0}},emits:["change","contentChange","onButtonClick","contentClick","pageChange","rowClick"],setup(s,{emit:e}){const t=V.ref(null),n=V.ref([]),i=s,r=e,a=V.ref([]),o=V.ref([]),l=V.ref([]),c=V.ref(!1),h=V.ref(),d=Ue.useMenuState(),{activeMenuPath:u}=Ue.storeToRefs(d),f=Yu(Ue.pinia),m=Gh.useModelComp(Ue.pinia),{extraContents:_}=Ue.storeToRefs(m),g=V.ref([]);V.ref(!1);const p=V.ref("");V.ref();const E=V.ref(!0),b=V.ref(0),M=V.ref(!1),U=V.ref(""),C=V.ref(!1),P=V.ref({label:"查看三维模型"}),D=V.ref(!1),S=V.ref(),y=V.ref([]),N=V.ref([]),W=V.ref(!1),X=V.ref([]),Q=V.ref([]),ne=V.ref([]),G=V.ref(),re=V.ref(),K=Hu(Ue.pinia),ge=V.ref(),be=Gu(Ue.pinia),{selectIndex:Ce,selectMenu:Ie,selectTitle:He}=Ue.storeToRefs(be),{selectString:J}=Ue.storeToRefs(K),ae=Ju.useLoginState(Ue.pinia),{loginUserInfo:le}=Ue.storeToRefs(ae),ce=V.ref(720),Le=V.ref("read"),ve=V.ref([]),Ae=V.ref(),st=V.ref(!0),wt=z=>{ve.value=z},yt=(z,B)=>{Ae.value===B?st.value=!1:st.value=!0,Ae.value=B==null?void 0:B.changeProp},O=V.computed(()=>{var z;return(z=a.value)==null?void 0:z.filter(B=>(B==null?void 0:B.label)!=="操作")}),Gt=()=>{C.value=!1},Lt=z=>{r("clickTrigger",z)},Tt=(z,B)=>{if(Object.values(B).length!==0)return Object.values(B).find(k=>{var te,se,oe;return((te=k==null?void 0:k.toString())==null?void 0:te.includes(".txt"))||((se=k==null?void 0:k.toString())==null?void 0:se.includes(".cpt"))||((oe=k==null?void 0:k.toString())==null?void 0:oe.includes(".obj"))})?[...z,P.value]:z},Ge=z=>{var se;J.value===""?z==null||z[0]:(z==null?void 0:z.find(oe=>(oe==null?void 0:oe.selectLabel)==="("+J.value+")"))??(z==null||z.find(oe=>!(oe!=null&&oe.selectLabel)));let B=z;(se=a.value)!=null&&se.find(oe=>oe.prop==="index");let k=G.value;const te=[];return B==null||B.forEach((oe,ue)=>{var Se;let _e={};if(Array.isArray(oe)){let je=[];oe==null||oe.filter(Z=>!(Z!=null&&Z.id)).forEach((Z,Ne)=>{var At,Nt,Wt,Kt,dt;if((At=k==null?void 0:k[Ne])!=null&&At.prop&&!Array.isArray(Z)){let Pt={};Pt[k[Ne].column]=Z,_!=null&&_.value&&((Nt=_==null?void 0:_.value)==null?void 0:Nt.length)>0&&((Wt=_==null?void 0:_.value)!=null&&Wt.find(Re=>JSON.stringify(Re==null?void 0:Re[0])===JSON.stringify(Pt)))&&(je=(Kt=_==null?void 0:_.value)==null?void 0:Kt.find(Re=>JSON.stringify(Re==null?void 0:Re[0])===JSON.stringify(Pt))),je&&je.length>0?_e[k[Ne].prop]=je!=null&&je.find(Re=>{var Xt;return((Xt=Object.keys(Re))==null?void 0:Xt[0])===k[Ne].column})?(dt=je==null?void 0:je.find(Re=>{var Xt;return((Xt=Object.keys(Re))==null?void 0:Xt[0])===k[Ne].column}))==null?void 0:dt[k[Ne].column]:Z:_e[k[Ne].prop]=Z}})}else _e=oe;Array.isArray(oe)&&oe.some(je=>je==null?void 0:je.id)?te.push(Object.assign(_e,{id:(Se=oe==null?void 0:oe.find(je=>je.id))==null?void 0:Se.id})):_e.id?te.push(_e):te.push(Object.assign(_e,{id:ue}))}),te},pt=async z=>{var se,oe,ue,_e,Se;let B={};for(let je in z)z[je]!==""&&(B["tableData."+je]=z[je]);const k=await pn.filterContents({type:"data",tableId:i==null?void 0:i.index,systemKey:sessionStorage.getItem("systemKey"),pageKey:u.value},B),te=(ue=(oe=(se=Ue.cloneDeep(k))==null?void 0:se.data)==null?void 0:oe.result)==null?void 0:ue.map(je=>{var Ne;let Z=[];return Z.push({id:je.id}),Z.push((Ne=je==null?void 0:je.value)==null?void 0:Ne.tableData),Z});g.value=Ge(pn.getTableContents(te,(Se=(_e=Ue.cloneDeep(a.value))==null?void 0:_e.map(je=>je.label))==null?void 0:Se.filter(je=>je!=="操作")))},Xe=async z=>{var te,se,oe,ue,_e,Se,je,Z,Ne,At,Nt;const B=(te=Ue.cloneDeep(a.value))==null?void 0:te.filter(Wt=>Wt==null?void 0:Wt.isRoute);if((B==null?void 0:B.length)>0){let Wt=(se=B==null?void 0:B[0])==null?void 0:se.prop,Kt=Ue.cloneDeep(u).value+"/"+(z==null?void 0:z[Wt]),dt=Ue.cloneDeep(u).value,Pt=await pn.getItemData(Kt,sessionStorage.getItem("systemKey"),"");(Pt==null?void 0:Pt.length)>0&&(await pn.loadingConstruct(Kt,Kt+`/updateLoading${(oe=le.value)==null?void 0:oe.account}`),m.setRouteToChildPath(dt),d.setActiveMenuPath(Kt+`/updateLoading${(ue=le.value)==null?void 0:ue.account}`))}let k=await pn.getItemData(u.value,sessionStorage.getItem("systemKey"),z.id);if(k=k==null?void 0:k.filter(Wt=>Wt.comp!=="methodButton"),k&&k.length>0){const Wt=!Array.isArray(He.value)&&((_e=He.value)==null?void 0:_e.key)!=="main"?[]:He.value;Wt.push({key:Ie.value===""?(Se=z==null?void 0:z.id)==null?void 0:Se.toString():Ie.value+"-"+((je=z==null?void 0:z.id)==null?void 0:je.toString()),value:z[(Z=Object.keys(z))==null?void 0:Z.filter(Kt=>Kt!=="index"&&Kt!=="id")[0]]}),be.setSelectMenu(Ie.value===""?(Ne=z==null?void 0:z.id)==null?void 0:Ne.toString():Ie.value+"-"+((At=z==null?void 0:z.id)==null?void 0:At.toString())),be.setSelectTitle(Wt),be.setSelectIndex((Nt=z==null?void 0:z.id)==null?void 0:Nt.toString()),r("pageChange",k)}},ut=z=>{var B;(B=Ue.cloneDeep(i.itemData))==null||B.map(k=>((k==null?void 0:k.key)==="tableContents"&&(k.contents=z),k))},rn=async(z,B,k,te)=>{var se;if((te==null?void 0:te.data)==="查看"&&(z!=null&&z.every(oe=>(oe==null?void 0:oe.url)&&(oe==null?void 0:oe.name)))){let oe=Ue.cloneDeep(z);oe=await((se=Ue.cloneDeep(oe))==null?void 0:se.map(async _e=>{var Z,Ne,At,Nt;const Se=await si.downloadAvatarApi({url:_e==null?void 0:_e.url});let je=URL.createObjectURL(Se.data);return{name:(_e==null?void 0:_e.name)+"."+((Nt=(Z=_e==null?void 0:_e.url)==null?void 0:Z.split("."))==null?void 0:Nt[((At=(Ne=_e==null?void 0:_e.url)==null?void 0:Ne.split("."))==null?void 0:At.length)-1]),blobUrl:je}}));let ue=await Promise.all(oe);h.value=ue,c.value=!0}r("contentClick",z,B,k,{id:i==null?void 0:i.index,type:"table"})},F=()=>{c.value=!1},A=z=>{r("rowClick",z)};V.watch(()=>i.changedContent,()=>{var k,te;if(!i.changedContent)return;let z=(k=g.value)==null?void 0:k.map(se=>{var oe;return se.id===((oe=i.changedContent)==null?void 0:oe.id)&&(se={...i.changedContent,id:i.changedContent.newId?i.changedContent.newId:i.changedContent.id},delete se.newId),se});const B=(te=i.itemData)==null?void 0:te.map(se=>((se==null?void 0:se.key)==="tableContents"&&(se.contents=z),se));g.value=z,r("contentChange",{contents:B,index:i.index}),r("change",{content:z,index:i==null?void 0:i.index,buttonName:"",id:i==null?void 0:i.index})},{deep:!0,immediate:!0});const ee=()=>{},fe=(z,B,k)=>{var te,se,oe,ue,_e,Se,je;if(p.value="",W.value=!0,E.value=!0,r("onButtonClick",z,B),z==="删除"){g.value=(te=Ue.cloneDeep(g.value))==null?void 0:te.filter(Ne=>(Ne==null?void 0:Ne.id)!==(B==null?void 0:B.id));const Z=c3(ge.value,Ie.value,B==null?void 0:B.id);ut(Z),r("change",{content:g.value,singleContent:B,index:i==null?void 0:i.index,type:"delete",buttonName:z,column:a.value})}else if(z==="批量删除"){if(((se=ve.value)==null?void 0:se.length)===0)return Ue.ElMessage.warning("请先勾选操作的数据");r("change",{content:g.value,singleContent:null,selectItems:ve.value,index:i==null?void 0:i.index,type:"batchDelete",buttonName:z,column:a.value})}else if(z==="复制新增"){U.value="新增";const Z=Ue.cloneDeep(B),Ne=(oe=a.value)==null?void 0:oe[0],At=(ue=Q.value)==null?void 0:ue.find(Nt=>(Nt==null?void 0:Nt.label)==="新增子页面");Be(!0,At,{data:Z,firstCol:Ne})}else if(z==="新增")U.value="新增",Ze(""),C.value=!0;else if(z==="编辑")U.value="编辑",Ze(B),C.value=!0;else if(z==="查看")U.value="查看",Ze(B),W.value=!1,E.value=!1,C.value=!0;else if(z==="查看三维模型"){const Z={};for(let At in B)At!=="id"&&(Z[At]=B[At]);let Ne=(_e=Object.values(Z))==null?void 0:_e[1];f.setTableShowThree(Ne)}else if(((Se=k==null?void 0:k.extra)==null?void 0:Se.type)==="modelExample")U.value=z,D.value=!0;else if(z==="新增子页面"){const Z=(je=Q.value)==null?void 0:je.find(Ne=>(Ne==null?void 0:Ne.label)==="新增子页面");Be(!1,Z)}},xe=async z=>{var k,te,se,oe,ue,_e;const B=await Ue.getInsofDataApi({key:{pageKey:z,type:"structure",systemKey:sessionStorage.getItem("systemKey")}});if(((k=B==null?void 0:B.data)==null?void 0:k.code)===200)return Array.isArray((te=B==null?void 0:B.data)==null?void 0:te.result)&&((oe=(se=B==null?void 0:B.data)==null?void 0:se.result)==null?void 0:oe.length)>0?(_e=(ue=B==null?void 0:B.data)==null?void 0:ue.result)==null?void 0:_e.map(Se=>{var je;return{id:Se==null?void 0:Se.id,...(je=Se==null?void 0:Se.value)==null?void 0:je.pageData}}):[]},he=(z,B,k,te)=>{var se;r("contentChange",{contents:(se=z==null?void 0:z.compData)==null?void 0:se.map(oe=>{var ue;return(oe==null?void 0:oe.key)==="formContent"?{...oe,contents:(ue=oe==null?void 0:oe.contents)==null?void 0:ue.map(_e=>(_e==null?void 0:_e.key)===B?{..._e,value:k}:_e)}:oe}),index:z==null?void 0:z.id}),d.setActiveMenuPath(""),d.setActiveMenuPath(te)},rt=(z,B)=>{let k=z==null?void 0:z[B==null?void 0:B.prop],te=1;if(g.value.some(se=>(se==null?void 0:se[B==null?void 0:B.prop])===k)){const se=k;for(;g.value.some(oe=>(oe==null?void 0:oe[B==null?void 0:B.prop])===`${se}(${te})`);)te++;k=`${se}(${te})`}return k},Be=async(z,B,k)=>{var ue,_e,Se,je,Z;let te,se;const oe=rt(k==null?void 0:k.data,k==null?void 0:k.firstCol);if(z?(te=Ue.cloneDeep(u).value+"/"+((Se=k==null?void 0:k.data)==null?void 0:Se[(_e=k==null?void 0:k.firstCol)==null?void 0:_e.prop]),se=Ue.cloneDeep(u).value+"/"+oe):(te=Ue.cloneDeep(u).value+"/",se=Ue.cloneDeep(te)+`loading${(ue=le.value)==null?void 0:ue.account}`),B){const Ne=await pn.getItemData(se,sessionStorage.getItem("systemKey"),"");if((Ne==null?void 0:Ne.length)>0)if(z){const At=Ne==null?void 0:Ne.find(Nt=>{var Wt;return((Wt=Nt==null?void 0:Nt.comp)==null?void 0:Wt.toUpperCase())==="FORM"});At&&he(At,(je=k==null?void 0:k.firstCol)==null?void 0:je.label,oe,u.value)}else m.setRouteToChildPath(Ue.cloneDeep(u).value),d.setActiveMenuPath(se);else if(await pn.loadingConstruct(te,se),z){const At=await xe(se);if((At==null?void 0:At.length)>0){const Nt=At==null?void 0:At.find(Wt=>{var Kt;return((Kt=Wt==null?void 0:Wt.comp)==null?void 0:Kt.toUpperCase())==="FORM"});Nt&&he(Nt,(Z=k==null?void 0:k.firstCol)==null?void 0:Z.label,oe,u.value)}}else m.setRouteToChildPath(Ue.cloneDeep(u).value),d.setActiveMenuPath(se)}else z?(p.value="",re.value=k==null?void 0:k.data,Ye(!0,k==null?void 0:k.firstCol,oe)):(m.setRouteToChildPath(Ue.cloneDeep(u).value),d.setActiveMenuPath(se))},Ze=z=>{var se,oe,ue,_e,Se,je;const B=[];let k=[];for(let Z in z)Array.isArray(z==null?void 0:z[Z])&&k.push(Z);o.value=Ue.cloneDeep(a.value),(oe=pn.getColumnChild((se=Ue.cloneDeep(a.value))==null?void 0:se.filter(Z=>(Z==null?void 0:Z.label)!=="操作")))==null||oe.forEach((Z,Ne)=>{var At;k.find(Nt=>Nt===(Z==null?void 0:Z.prop))||(Z!=null&&Z.formType&&((At=Z==null?void 0:Z.formType)==null?void 0:At.toUpperCase())==="SELECT"?B.push({label:(Z==null?void 0:Z.label)??"",name:(Z==null?void 0:Z.prop)??"t"+Ne,type:!(Z!=null&&Z.formType)||(Z==null?void 0:Z.formType)===""?"Input":Z==null?void 0:Z.formType,value:(z==null?void 0:z[Z==null?void 0:Z.prop])??(Z==null?void 0:Z.value)??"",id:(Z==null?void 0:Z.id)??Ne,contents:(Z==null?void 0:Z.options)??[],width:1,isFormColHidden:Z==null?void 0:Z.isFormColHidden,optionUrl:{groupSelect:Z==null?void 0:Z.groupSelect,menuSelect:Z==null?void 0:Z.formMenuSelect,type:"Select",selectRelateType:Z==null?void 0:Z.selectRelateType}}):B.push({label:(Z==null?void 0:Z.label)??"",name:(Z==null?void 0:Z.prop)??"t"+Ne,type:!(Z!=null&&Z.formType)||(Z==null?void 0:Z.formType)===""?"Input":Z==null?void 0:Z.formType,value:(z==null?void 0:z[Z==null?void 0:Z.prop])??(Z==null?void 0:Z.value)??"",id:(Z==null?void 0:Z.id)??Ne,contents:(Z==null?void 0:Z.options)??[],width:1,isFormColHidden:Z==null?void 0:Z.isFormColHidden}))}),z===""||!z||(p.value=(z==null?void 0:z.id)??"");let te=pn.getColumnChild((ue=Ue.cloneDeep(a.value))==null?void 0:ue.filter(Z=>(Z==null?void 0:Z.label)!=="操作"));y.value&&((_e=y.value)==null?void 0:_e.length)>0&&(y.value=(Se=Ue.cloneDeep(y).value)==null?void 0:Se.map(Z=>{var At;let Ne=(At=te==null?void 0:te.find(Nt=>(Nt==null?void 0:Nt.label)===(Z==null?void 0:Z.label)))==null?void 0:At.prop;return Ne&&(Z.value=z[Ne]),Z})),ne.value=y.value&&((je=y.value)==null?void 0:je.length)>0?pn.getTableFormToForm(y.value):B},at=async()=>{var B;await V.nextTick();const z=(B=t.value)==null?void 0:B.$el;z&&pn.Sortable.create(z,{animation:150,handle:".col-drag-icon",ghostClass:"sortable-ghost",onEnd:k=>{var ue;const{oldIndex:te,newIndex:se}=k;if(te===se)return;const oe=O.value.splice(te,1)[0];O.value.splice(se,0,oe),a.value=(ue=a.value)==null?void 0:ue.slice().sort((_e,Se)=>{var je,Z;return _e.label==="操作"?1:Se.label==="操作"?-1:((je=O.value)==null?void 0:je.indexOf(_e))-((Z=O.value)==null?void 0:Z.indexOf(Se))})}})};V.onMounted(()=>{S.value=window.innerWidth-240*2});const ye=()=>{V.nextTick(()=>{at()})},Ye=(z=!0,B,k)=>{var ue;let te=pn.getColumnChild((ue=Ue.cloneDeep(a.value))==null?void 0:ue.filter(_e=>(_e==null?void 0:_e.label)!=="操作")),se,oe=Ue.cloneDeep(g.value);if(!re.value){C.value=!1;return}if(p.value===""){b.value++;let _e;B&&k?_e={id:b.value,[B==null?void 0:B.prop]:k}:_e={id:b.value},oe.push(Object.assign(re.value,_e)),se=Object.assign(re.value,_e)}else oe=oe==null?void 0:oe.map(_e=>{var Se,je;if((_e==null?void 0:_e.id)===p.value){let Z={};for(let Ne in _e){let At=(Se=te==null?void 0:te.find(Nt=>(Nt==null?void 0:Nt.prop)===Ne))==null?void 0:Se.label;At?Z[Ne]=(je=re.value)==null?void 0:je[At]:Z[Ne]=_e[Ne]}_e=Object.assign(Z,re.value),se=_e}return _e});if(g.value=oe,z){const _e=u3(ge.value,Ie.value,oe);ut(_e),C.value=!1,re.value=void 0,r("change",{content:_e,singleContent:se,index:i==null?void 0:i.index,buttonName:U.value,column:a.value})}},_t=async(z,B,k)=>{var je,Z,Ne,At,Nt,Wt,Kt,dt,Pt,Re,Xt;Ae.value=k==null?void 0:k.prop;const te=Ue.cloneDeep(i.itemData),se=te==null?void 0:te.map(Fe=>{var Ct;return(Fe==null?void 0:Fe.key)==="header"&&((Ct=Fe.contents)==null||Ct.map((Pe,Bt)=>{var Je,St,w,H,$,Y,j,me,Te,We,Oe,nt,lt,tt,bt,pe,ht,Dt,Rt;return Pe.type=Pe!=null&&Pe.type?Pe.type:(H=(w=(St=(Je=Pe==null?void 0:Pe.key)==null?void 0:Je.split("$"))==null?void 0:St[1])==null?void 0:w.split("("))!=null&&H[0]?(Y=($=pn.FormType)==null?void 0:$.find(Qe=>{var sn,De,we,Ut;return(Qe==null?void 0:Qe.key)===((Ut=(we=(De=(sn=Pe==null?void 0:Pe.key)==null?void 0:sn.split("$"))==null?void 0:De[1])==null?void 0:we.split("("))==null?void 0:Ut[0])}))==null?void 0:Y.value:"Input",Pe.options=Pe!=null&&Pe.options?Pe.options:((Te=(me=(j=Pe==null?void 0:Pe.key)==null?void 0:j.split("$"))==null?void 0:me[1])==null?void 0:Te.length)>0?(lt=(nt=Mo((Oe=(We=Pe==null?void 0:Pe.key)==null?void 0:We.split("$"))==null?void 0:Oe[1]))==null?void 0:nt.split(","))==null?void 0:lt.map(Qe=>({label:Qe,value:Qe})):[],(tt=Pe==null?void 0:Pe.key)!=null&&tt.includes("$")&&(Pe.key=(pe=(bt=Pe==null?void 0:Pe.key)==null?void 0:bt.split("$"))==null?void 0:pe[0]),Pe.value=(ht=Object.values(B))==null?void 0:ht[Bt],Pe.optionUrl=Pe!=null&&Pe.formMenuSelect&&((Dt=Pe==null?void 0:Pe.formMenuSelect)==null?void 0:Dt.length)>0?{groupSelect:(Rt=Pe==null?void 0:Pe.groupSelect)==null?void 0:Rt.split(/[::]/).map(Qe=>Qe.trim()),menuSelect:Pe==null?void 0:Pe.formMenuSelect,selectRelateType:"",type:(Pe==null?void 0:Pe.formType)??(Pe!=null&&Pe.groupSelect?"Select":"")}:null,Pe})),Fe});let oe=Ue.cloneDeep(ne.value),ue=(Z=(je=Ue.cloneDeep(se))==null?void 0:je.find(Fe=>(Fe==null?void 0:Fe.key)==="header"))==null?void 0:Z.contents;oe=oe==null?void 0:oe.map(Fe=>{var Ct;return Fe.value=(Ct=ue==null?void 0:ue.find((Pe,Bt)=>Bt===(Fe==null?void 0:Fe.id)))==null?void 0:Ct.value,Fe});let _e="",Se=(Nt=(At=(Ne=Ue.cloneDeep(se))==null?void 0:Ne.find(Fe=>(Fe==null?void 0:Fe.key)==="header"))==null?void 0:At.contents)==null?void 0:Nt.find((Fe,Ct)=>{var Pe,Bt;return(Fe==null?void 0:Fe.label)===Ae.value||(Ct==null?void 0:Ct.toString())===((Bt=(Pe=Ae.value)==null?void 0:Pe.split("a"))==null?void 0:Bt[1].toString())});if((dt=(Kt=(Wt=Ue.cloneDeep(se))==null?void 0:Wt.find(Fe=>(Fe==null?void 0:Fe.key)==="header"))==null?void 0:Kt.contents)==null||dt.forEach(Fe=>{var Ct,Pe,Bt,Je,St;_e===""&&((Bt=(Pe=(Ct=Fe==null?void 0:Fe.optionUrl)==null?void 0:Ct.groupSelect)==null?void 0:Pe[1])!=null&&Bt.includes("["))&&(_e=(St=(Je=Fe==null?void 0:Fe.optionUrl)==null?void 0:Je.groupSelect)==null?void 0:St[1])}),(Pt=Se==null?void 0:Se.optionUrl)!=null&&Pt.menuSelect){let Fe=await vl(Se),Ct;if(Fe==null||Fe.forEach(Pe=>{var Bt,Je,St,w,H,$,Y,j,me,Te;_e===((Je=(Bt=Se==null?void 0:Se.optionUrl)==null?void 0:Bt.groupSelect)==null?void 0:Je[1])&&((H=(w=(St=Se==null?void 0:Se.optionUrl)==null?void 0:St.groupSelect)==null?void 0:w[1])!=null&&H.includes("["))&&((Te=Ue.cloneDeep(Pe))==null?void 0:Te[(me=(j=(Y=($=Se==null?void 0:Se.optionUrl)==null?void 0:$.groupSelect)==null?void 0:Y[1])==null?void 0:j.replaceAll("[",""))==null?void 0:me.replaceAll("]","")])===(Se==null?void 0:Se.value)&&(Ct=Pe)}),Ct){let Pe=Ue.cloneDeep(oe);Pe=Pe==null?void 0:Pe.map(Je=>{var St,w,H,$,Y,j,me,Te,We,Oe,nt;return(Ct!=null&&Ct[Je==null?void 0:Je.label]||Ct!=null&&Ct[($=(H=(w=(St=Je==null?void 0:Je.optionUrl)==null?void 0:St.groupSelect)==null?void 0:w[1])==null?void 0:H.replaceAll("[",""))==null?void 0:$.replaceAll("]","")])&&((me=(j=(Y=Je==null?void 0:Je.optionUrl)==null?void 0:Y.groupSelect)==null?void 0:j[1])!=null&&me.includes("["))&&(Je.value=(Ct==null?void 0:Ct[Je==null?void 0:Je.label])||(Ct==null?void 0:Ct[(nt=(Oe=(We=(Te=Je==null?void 0:Je.optionUrl)==null?void 0:Te.groupSelect)==null?void 0:We[1])==null?void 0:Oe.replaceAll("[",""))==null?void 0:nt.replaceAll("]","")])),Je}),g.value=(Re=Ue.cloneDeep(g.value))==null?void 0:Re.map(Je=>{if((Je==null?void 0:Je.id)===(B==null?void 0:B.id)){const St={};return Pe==null||Pe.forEach(w=>{St[w.name]=w.value}),St.id=Je==null?void 0:Je.id,St}return Je});let Bt=Ue.cloneDeep(Pe);Bt=Bt==null?void 0:Bt.map(Je=>{var St,w,H,$;return(w=(St=Je==null?void 0:Je.optionUrl)==null?void 0:St.menuSelect)!=null&&w.some(Y=>Y==null?void 0:Y.includes)&&(Je.optionUrl.menuSelect=($=(H=Je==null?void 0:Je.optionUrl)==null?void 0:H.menuSelect)==null?void 0:$.map(Y=>{var j,me,Te,We;if(Y!=null&&Y.includes("[")){let Oe=(me=(j=Y==null?void 0:Y.replaceAll("[","").replaceAll("]",""))==null?void 0:j.split(":"))==null?void 0:me[1];Y=(We=(Te=Ue.cloneDeep(Pe))==null?void 0:Te.find(nt=>(nt==null?void 0:nt.label)===Oe))==null?void 0:We.value}return Y})),Je}),g.value=(Xt=Ue.cloneDeep(g.value))==null?void 0:Xt.map(Je=>{if((Je==null?void 0:Je.id)===(B==null?void 0:B.id)){const St={};return Bt==null||Bt.forEach(w=>{St[w.name]=w.value}),St.id=Je==null?void 0:Je.id,St}return Je})}}},mt=async z=>{var _e,Se,je,Z,Ne,At,Nt,Wt,Kt;if(!z)return;re.value=z,r("onFormChange",z);const B=Ue.cloneDeep(i.itemData),k=B==null?void 0:B.map(dt=>{var Pt;return(dt==null?void 0:dt.key)==="header"&&((Pt=dt.contents)==null||Pt.map((Re,Xt)=>{var Fe,Ct,Pe,Bt,Je,St,w,H,$,Y,j,me,Te,We,Oe,nt,lt,tt,bt;return Re.type=Re!=null&&Re.type?Re.type:(Bt=(Pe=(Ct=(Fe=Re==null?void 0:Re.key)==null?void 0:Fe.split("$"))==null?void 0:Ct[1])==null?void 0:Pe.split("("))!=null&&Bt[0]?(St=(Je=pn.FormType)==null?void 0:Je.find(pe=>{var ht,Dt,Rt,Qe;return(pe==null?void 0:pe.key)===((Qe=(Rt=(Dt=(ht=Re==null?void 0:Re.key)==null?void 0:ht.split("$"))==null?void 0:Dt[1])==null?void 0:Rt.split("("))==null?void 0:Qe[0])}))==null?void 0:St.value:"Input",Re.options=Re!=null&&Re.options?Re.options:(($=(H=(w=Re==null?void 0:Re.key)==null?void 0:w.split("$"))==null?void 0:H[1])==null?void 0:$.length)>0?(Te=(me=Mo((j=(Y=Re==null?void 0:Re.key)==null?void 0:Y.split("$"))==null?void 0:j[1]))==null?void 0:me.split(","))==null?void 0:Te.map(pe=>({label:pe,value:pe})):[],(We=Re==null?void 0:Re.key)!=null&&We.includes("$")&&(Re.key=(nt=(Oe=Re==null?void 0:Re.key)==null?void 0:Oe.split("$"))==null?void 0:nt[0]),Re.value=(lt=Object.values(z))==null?void 0:lt[Xt],Re.optionUrl=Re!=null&&Re.formMenuSelect&&((tt=Re==null?void 0:Re.formMenuSelect)==null?void 0:tt.length)>0?{groupSelect:(bt=Re==null?void 0:Re.groupSelect)==null?void 0:bt.split(/[::]/).map(pe=>pe.trim()),menuSelect:Re==null?void 0:Re.formMenuSelect,selectRelateType:"",type:(Re==null?void 0:Re.formType)??(Re!=null&&Re.groupSelect?"Select":"")}:null,Re})),dt});let te=Ue.cloneDeep(ne.value),se=(Se=(_e=Ue.cloneDeep(k))==null?void 0:_e.find(dt=>(dt==null?void 0:dt.key)==="header"))==null?void 0:Se.contents;if(te=te==null?void 0:te.map(dt=>{var Pt;return dt.value=(Pt=se==null?void 0:se.find((Re,Xt)=>Xt===(dt==null?void 0:dt.id)))==null?void 0:Pt.value,dt}),!st.value)return;let oe="",ue=(Ne=(Z=(je=Ue.cloneDeep(k))==null?void 0:je.find(dt=>(dt==null?void 0:dt.key)==="header"))==null?void 0:Z.contents)==null?void 0:Ne.find((dt,Pt)=>{var Re,Xt;return(dt==null?void 0:dt.label)===Ae.value||(Pt==null?void 0:Pt.toString())===((Xt=(Re=Ae.value)==null?void 0:Re.split("a"))==null?void 0:Xt[1].toString())});if((Wt=(Nt=(At=Ue.cloneDeep(k))==null?void 0:At.find(dt=>(dt==null?void 0:dt.key)==="header"))==null?void 0:Nt.contents)==null||Wt.forEach(dt=>{var Pt,Re,Xt,Fe,Ct;oe===""&&((Xt=(Re=(Pt=dt==null?void 0:dt.optionUrl)==null?void 0:Pt.groupSelect)==null?void 0:Re[1])!=null&&Xt.includes("["))&&(oe=(Ct=(Fe=dt==null?void 0:dt.optionUrl)==null?void 0:Fe.groupSelect)==null?void 0:Ct[1])}),(Kt=ue==null?void 0:ue.optionUrl)!=null&&Kt.menuSelect&&st.value){let dt=await vl(ue),Pt;if(dt==null||dt.forEach(Re=>{var Xt,Fe,Ct,Pe,Bt,Je,St,w,H,$;oe===((Fe=(Xt=ue==null?void 0:ue.optionUrl)==null?void 0:Xt.groupSelect)==null?void 0:Fe[1])&&((Bt=(Pe=(Ct=ue==null?void 0:ue.optionUrl)==null?void 0:Ct.groupSelect)==null?void 0:Pe[1])!=null&&Bt.includes("["))&&(($=Ue.cloneDeep(Re))==null?void 0:$[(H=(w=(St=(Je=ue==null?void 0:ue.optionUrl)==null?void 0:Je.groupSelect)==null?void 0:St[1])==null?void 0:w.replaceAll("[",""))==null?void 0:H.replaceAll("]","")])===(ue==null?void 0:ue.value)&&(Pt=Re)}),Pt){let Re=Ue.cloneDeep(te);Re=Re==null?void 0:Re.map(Fe=>{var Ct,Pe,Bt,Je,St,w,H,$,Y,j,me;return(Pt!=null&&Pt[Fe==null?void 0:Fe.label]||Pt!=null&&Pt[(Je=(Bt=(Pe=(Ct=Fe==null?void 0:Fe.optionUrl)==null?void 0:Ct.groupSelect)==null?void 0:Pe[1])==null?void 0:Bt.replaceAll("[",""))==null?void 0:Je.replaceAll("]","")])&&((H=(w=(St=Fe==null?void 0:Fe.optionUrl)==null?void 0:St.groupSelect)==null?void 0:w[1])!=null&&H.includes("["))&&(Fe.value=(Pt==null?void 0:Pt[Fe==null?void 0:Fe.label])||(Pt==null?void 0:Pt[(me=(j=(Y=($=Fe==null?void 0:Fe.optionUrl)==null?void 0:$.groupSelect)==null?void 0:Y[1])==null?void 0:j.replaceAll("[",""))==null?void 0:me.replaceAll("]","")])),Fe}),ne.value=Re;let Xt=Ue.cloneDeep(Re);Xt=Xt==null?void 0:Xt.map(Fe=>{var Ct,Pe,Bt,Je;return(Pe=(Ct=Fe==null?void 0:Fe.optionUrl)==null?void 0:Ct.menuSelect)!=null&&Pe.some(St=>St==null?void 0:St.includes)&&(Fe.optionUrl.menuSelect=(Je=(Bt=Fe==null?void 0:Fe.optionUrl)==null?void 0:Bt.menuSelect)==null?void 0:Je.map(St=>{var w,H,$,Y;if(St!=null&&St.includes("[")){let j=(H=(w=St==null?void 0:St.replaceAll("[","").replaceAll("]",""))==null?void 0:w.split(":"))==null?void 0:H[1];St=(Y=($=Ue.cloneDeep(Re))==null?void 0:$.find(me=>(me==null?void 0:me.label)===j))==null?void 0:Y.value}return St})),Fe}),ne.value=Xt}}st.value=!1},ke=z=>z?(z==null?void 0:z.toUpperCase())==="INPUT"?"TEXTAREA":z:"TEXTAREA",Mt=z=>{var k,te,se,oe,ue,_e;Ze("");const B=(k=ne.value)==null?void 0:k.reduce((Se,je)=>(Se[je.name]=je.value,Se),{});((te=Object.keys(B))==null?void 0:te.length)>0&&(re.value=B,p.value="",b.value=(se=g.value)==null?void 0:se.length,X.value=(oe=Q.value)==null?void 0:oe.filter(Se=>(Se==null?void 0:Se.label)!=="新增"),a.value=(_e=(ue=o.value)==null?void 0:ue.filter(Se=>(Se==null?void 0:Se.label)!=="操作"))==null?void 0:_e.map(Se=>{var je;return{...Se,type:"edit",optionUrl:Se!=null&&Se.formMenuSelect&&((je=Se==null?void 0:Se.formMenuSelect)==null?void 0:je.length)>0?{groupSelect:Se==null?void 0:Se.groupSelect,menuSelect:Se==null?void 0:Se.formMenuSelect,selectRelateType:"",type:Se==null?void 0:Se.formType}:null,columnType:ke(Se==null?void 0:Se.formType)}}),z==="createClick"&&Ye(!1))};V.watch(()=>[i.itemData,J.value,Ce.value,Ie.value,_==null?void 0:_.value],()=>{var Se,je,Z,Ne,At,Nt,Wt,Kt,dt,Pt,Re,Xt,Fe,Ct,Pe,Bt,Je,St,w,H,$,Y,j,me,Te,We,Oe,nt,lt,tt,bt;const z=(Se=Ue.cloneDeep(i.itemData))==null?void 0:Se.filter(pe=>(pe==null?void 0:pe.key)==="header");(je=Ue.cloneDeep(i.itemData))==null||je.filter(pe=>(pe==null?void 0:pe.key)==="tableIndexColumn")[0];const B=(Z=Ue.cloneDeep(i.itemData))==null?void 0:Z.find(pe=>(pe==null?void 0:pe.key)==="page"),k=(Ne=Ue.cloneDeep(i.itemData))==null?void 0:Ne.find(pe=>(pe==null?void 0:pe.key)==="rowButton"),te=(At=Ue.cloneDeep(i.itemData))==null?void 0:At.find(pe=>(pe==null?void 0:pe.key)==="extraButton"),se=(Nt=Ue.cloneDeep(i.itemData))==null?void 0:Nt.filter(pe=>(pe==null?void 0:pe.key)==="tableContents"),oe=(Wt=Ue.cloneDeep(i.itemData))==null?void 0:Wt.filter(pe=>(pe==null?void 0:pe.key)==="tableIndex");y.value=(Pt=(dt=(Kt=Ue.cloneDeep(i.itemData))==null?void 0:Kt.filter(pe=>(pe==null?void 0:pe.key)==="tableToForm"))==null?void 0:dt[0])==null?void 0:Pt.contents,M.value=(B==null?void 0:B.contents)??!1;let ue=[];J.value===""?ue=z==null?void 0:z[0]:ue=(z==null?void 0:z.find(pe=>(pe==null?void 0:pe.selectLabel)==="("+J.value+")"))??(z==null?void 0:z.find(pe=>!(pe!=null&&pe.selectLabel)));let _e=[];if(J.value===""?_e=oe==null?void 0:oe[0]:_e=(oe==null?void 0:oe.find(pe=>(pe==null?void 0:pe.selectLabel)==="("+J.value+")"))??(oe==null?void 0:oe.find(pe=>!(pe!=null&&pe.selectLabel))),((Re=ue==null?void 0:ue.contents)==null?void 0:Re.length)>0){let pe=[];if(ue!=null&&ue.contents.some(De=>Array.isArray(De)&&(De==null?void 0:De.find(we=>we.children))))Ie.value===""?pe=(Fe=(Xt=pn.getGradeColumns(Ue.cloneDeep(ue==null?void 0:ue.contents)))==null?void 0:Xt[0])==null?void 0:Fe.filter(De=>!Array.isArray(De)):(Ie.value.split("-"),pe=(Ct=pn.getGradeColumns(Ue.cloneDeep(ue==null?void 0:ue.contents)))==null?void 0:Ct[0]);else{const De=ue!=null&&ue.contents.some(we=>Array.isArray(we))?(Pe=ue==null?void 0:ue.contents)==null?void 0:Pe[0]:ue==null?void 0:ue.contents;De==null||De.forEach((we,Ut)=>{var en;pe.push({label:(we==null?void 0:we.label)??"",prop:(we==null?void 0:we.label)==="操作"?"operate":(we==null?void 0:we.prop)??"a"+Ut,width:we!=null&&we.width?parseInt(we.width):"",fixed:(we==null?void 0:we.fixed)??void 0,sortable:(we==null?void 0:we.sortable)??!1,align:(we==null?void 0:we.align)??"left",showOverflowTooltip:(we==null?void 0:we.showOverflowTooltip)??!0,isNotDrag:(we==null?void 0:we.isNotDrag)??!1,isEditCol:(we==null?void 0:we.isEditCol)??!1,isOperate:(we==null?void 0:we.isOperate)??!1,id:(we==null?void 0:we.id)??Ut,type:(we==null?void 0:we.label)==="操作"?"operate":void 0,formType:(we==null?void 0:we.formType)??(we!=null&&we.groupSelect?"Select":""),isTableColHidden:we==null?void 0:we.isTableColHidden,isFormColHidden:we==null?void 0:we.isFormColHidden,options:(we==null?void 0:we.options)??[],value:(we==null?void 0:we.value)??"",formMenuSelect:(we==null?void 0:we.formMenuSelect)??[],isRoute:(we==null?void 0:we.isRoute)??!1,groupSelect:we!=null&&we.groupSelect?(en=we==null?void 0:we.groupSelect)==null?void 0:en.replaceAll('"',"").split(":"):[]})})}a.value=pe,l.value=pe,n.value=(Bt=a.value)==null?void 0:Bt.map(De=>De==null?void 0:De.label);let ht=(St=(Je=pn.getAllLeafNodes(Ue.cloneDeep(a.value)))==null?void 0:Je.filter(De=>(De==null?void 0:De.type)!=="operate"))==null?void 0:St.map((De,we)=>({prop:(De==null?void 0:De.prop)??"a"+we,column:De.label}));G.value=ht;let Dt=[];J.value===""?Dt=se==null?void 0:se[0]:Dt=(se==null?void 0:se.find(De=>(De==null?void 0:De.selectLabel)==="("+J.value+")"))??(se==null?void 0:se.find(De=>!(De!=null&&De.selectLabel)));let Rt=Array.isArray((w=Dt==null?void 0:Dt.contents)==null?void 0:w[0])&&((H=Dt==null?void 0:Dt.contents)!=null&&H[0].every(De=>Array.isArray(De)))?($=Ue.cloneDeep(Dt==null?void 0:Dt.contents))==null?void 0:$[0]:Ue.cloneDeep(Dt==null?void 0:Dt.contents);_e!=null&&_e.contents&&((Y=_e==null?void 0:_e.contents)==null?void 0:Y.length)!==0&&(Rt=(j=Ue.cloneDeep(Rt))==null?void 0:j.map((De,we)=>{if(!Array.isArray(De)){let Ut={};for(let en in De)en!=="id"&&en!=="index"&&(Ut[en]=De[en]);De=Object.values(Ut)}return De}));const Qe=!!((me=a.value)!=null&&me.find(De=>De.prop==="index"));Rt=Xu(Ue.cloneDeep(Rt),_e==null?void 0:_e.contents,Qe);const sn=[];Rt==null||Rt.forEach((De,we)=>{var en;let Ut={};if(Array.isArray(De)){let ln=[];De==null||De.filter(kt=>!(kt!=null&&kt.id)).forEach((kt,on)=>{var mn,cn,un,hi,kn,vt;if((mn=ht==null?void 0:ht[on])!=null&&mn.prop&&!Array.isArray(kt)){let wi={};wi[ht[on].column]=kt,_!=null&&_.value&&((cn=_==null?void 0:_.value)==null?void 0:cn.length)>0&&((un=_==null?void 0:_.value)!=null&&un.find(x=>JSON.stringify(x==null?void 0:x[0])===JSON.stringify(wi)))&&(ln=(hi=_==null?void 0:_.value)==null?void 0:hi.find(x=>JSON.stringify(x==null?void 0:x[0])===JSON.stringify(wi))),ln&&ln.length>0?Ut[ht[on].prop]=ln!=null&&ln.find(x=>{var v;return((v=Object.keys(x))==null?void 0:v[0])===ht[on].column})?(kn=ln==null?void 0:ln.find(x=>{var v;return((v=Object.keys(x))==null?void 0:v[0])===ht[on].column}))==null?void 0:kn[ht[on].column]:kt:Ut[ht[on].prop]=kt}else Array.isArray(kt)&&((vt=ht[on])!=null&&vt.prop?Ut[ht[on].prop]=kt:Ut.children=Wu(kt,ht))})}else Ut=De;Array.isArray(De)&&De.some(ln=>ln==null?void 0:ln.id)?sn.push(Object.assign(Ut,{id:(en=De==null?void 0:De.find(ln=>ln.id))==null?void 0:en.id})):Ut.id?sn.push(Ut):sn.push(Object.assign(Ut,{id:we.toString()}))}),g.value=sn}else a.value=[],o.value=[],g.value=[];((Te=k==null?void 0:k.contents)==null?void 0:Te.length)>0?N.value=k==null?void 0:k.contents:N.value=[],((We=te==null?void 0:te.contents)==null?void 0:We.length)>0?((nt=(Oe=Ue.cloneDeep(a.value))==null?void 0:Oe.filter(ht=>(ht==null?void 0:ht.type)!=="operate"))!=null&&nt.every(ht=>(ht==null?void 0:ht.formType)==="Select")&&(te==null||te.contents.push({label:"新增子页面"})),X.value=te==null?void 0:te.contents,Q.value=te==null?void 0:te.contents):(X.value=[],Q.value=[]),b.value=((lt=g==null?void 0:g.value)==null?void 0:lt.length)??0,ge.value=g.value,Le.value==="edit"&&(a.value=(bt=(tt=o.value)==null?void 0:tt.filter(pe=>(pe==null?void 0:pe.label)!=="操作"))==null?void 0:bt.map(pe=>{var ht;return{...pe,type:"edit",optionUrl:pe!=null&&pe.formMenuSelect&&((ht=pe==null?void 0:pe.formMenuSelect)==null?void 0:ht.length)>0?{groupSelect:pe==null?void 0:pe.groupSelect,menuSelect:pe==null?void 0:pe.formMenuSelect,selectRelateType:"",type:pe==null?void 0:pe.formType}:null}}),Mt())},{deep:!0,immediate:!0}),V.watch(()=>i==null?void 0:i.operatingForm,z=>{z!=null&&z.form&&(Ze(z==null?void 0:z.form),U.value=z==null?void 0:z.dialogTitle,W.value=!0,C.value=!0)},{immediate:!0,deep:!0});const q=z=>{Le.value=z,z==="edit"?Mt("viewChange"):(X.value=Q.value,a.value=l.value)};V.ref(!1);const qe=z=>{Mt("createClick")},Me=(z,B,k)=>{var te,se;re.value=Ue.cloneDeep(z),p.value=z==null?void 0:z.id,b.value=(te=g.value)==null?void 0:te.length,U.value=(z==null?void 0:z.id)===((se=g.value)==null?void 0:se.length)?"新增":"编辑",Ye(!0)};return(z,B)=>{var Se,je;const k=V.resolveComponent("el-icon"),te=V.resolveComponent("el-popover"),se=V.resolveComponent("svg-icon"),oe=V.resolveComponent("el-checkbox"),ue=V.resolveComponent("el-checkbox-group"),_e=V.resolveComponent("el-button");return V.openBlock(),V.createElementBlock("div",f3,[(V.openBlock(),V.createBlock(si.ssTable,{columns:a.value,checkedColumns:n.value,key:a.value,tableData:g.value,viewport:Le.value,isShowPagination:M.value,isShowEdit:!1,isShowDelete:!1,onDbClickRow:Xe,extraButton:X.value,onContentClick:rn,onRowClick:A,onSelectChange:wt,onCellChange:Me,onChange:_t},V.createSlots({headerButton:V.withCtx(Z=>[s.showHeader?(V.openBlock(),V.createBlock(rd,{key:0,compName:s.compName,buttons:Z.buttons,onButtonClick:B[0]||(B[0]=Ne=>fe(Ne,"",{})),columns:a.value,onFilter:pt},null,8,["compName","buttons","columns"])):V.createCommentVNode("",!0)]),viewport:V.withCtx(()=>{var Z;return[((Z=g.value)==null?void 0:Z.length)>0?(V.openBlock(),V.createElementBlock("div",g3,[V.createElementVNode("span",{title:"只读视图",onClick:B[2]||(B[2]=Ne=>q("read"))},[V.createVNode(se,{name:"readTable",class:"view-icon"})]),V.createElementVNode("span",{title:"编辑视图",onClick:B[3]||(B[3]=Ne=>q("edit"))},[V.createVNode(se,{name:"editTable",class:"view-icon"})])])):V.createCommentVNode("",!0)]}),rowCreate:V.withCtx(({row:Z})=>[V.createElementVNode("span",{title:"新增",class:"row-create-wrap",onClick:Ne=>qe()},[V.createVNode(se,{name:"rowCreate",style:{width:"10px",height:"10px"}})],8,_3)]),operateCol:V.withCtx(()=>[V.createVNode(te,{title:"选择显示列信息",placement:"left-start","popper-class":"menu-operate-popover",trigger:"click",onShow:ye},{reference:V.withCtx(()=>[V.createElementVNode("span",v3,[V.createVNode(se,{name:"operate",style:{width:"15px",height:"15px",cursor:"pointer"}})])]),default:V.withCtx(()=>[V.createElementVNode("div",x3,[V.createVNode(ue,{modelValue:n.value,"onUpdate:modelValue":B[4]||(B[4]=Z=>n.value=Z),style:{height:"100%"},min:2,ref_key:"checkboxGroupRef",ref:t},{default:V.withCtx(()=>[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(O.value,Z=>(V.openBlock(),V.createBlock(oe,{key:Z.label,label:Z.label,value:Z.label,style:{width:"100%",marginRight:0}},{default:V.withCtx(()=>[V.createElementVNode("span",null,V.toDisplayString(Z.label),1),V.createVNode(se,{name:"drag",class:"col-drag-icon",style:{width:"15px",height:"15px",cursor:"move",color:"grey",position:"absolute",right:"5px"}})]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1})]),_:2},[((Se=N.value)==null?void 0:Se.length)>0?{name:"actions",fn:V.withCtx(({item:Z})=>[V.createVNode(te,{title:"",placement:"left-start","popper-class":"menu-operate-popover"},{reference:V.withCtx(()=>[V.createVNode(k,null,{default:V.withCtx(()=>[V.createVNode(V.unref(Ue.more_filled_default))]),_:1})]),default:V.withCtx(()=>[V.createElementVNode("div",p3,[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(Tt(N.value,Z),(Ne,At)=>(V.openBlock(),V.createElementBlock("div",{class:"menu-config-item",key:At,onClick:Nt=>fe(Ne==null?void 0:Ne.label,Z,{extra:Ne})},[V.createElementVNode("div",{style:V.normalizeStyle({color:Ne==null?void 0:Ne.textColor}),class:"extra-button-label"},V.toDisplayString(Ne==null?void 0:Ne.label),5)],8,m3))),128))])]),_:2},1024)]),key:"0"}:void 0,((je=g.value)==null?void 0:je.length)>0?{name:"batchButton",fn:V.withCtx(Z=>[V.createVNode(ad,{buttons:Z.buttons,onButtonClick:B[1]||(B[1]=Ne=>fe(Ne,"",{}))},null,8,["buttons"])]),key:"1"}:void 0]),1032,["columns","checkedColumns","tableData","viewport","isShowPagination","extraButton"])),V.createVNode(si.ssDialog,{title:U.value,visible:C.value,width:ce.value,onBeforeDestroy:Gt},{default:V.withCtx(()=>[V.createElementVNode("div",y3,[V.createVNode(si.ssForm,{rowContents:ne.value,isEnableWrap:!1,onChange:mt,onClickTrigger:Lt,isEdit:E.value,onBlurChange:yt},null,8,["rowContents","isEdit"])])]),footer:V.withCtx(()=>[W.value?(V.openBlock(),V.createElementBlock("div",M3,[V.createVNode(_e,{onClick:B[5]||(B[5]=Z=>C.value=!1),id:"themeBorderButton"},{default:V.withCtx(()=>B[8]||(B[8]=[V.createTextVNode(V.toDisplayString("取消"))])),_:1,__:[8]}),V.createVNode(_e,{class:"ok-button",onClick:Ye,id:"themeButton"},{default:V.withCtx(()=>B[9]||(B[9]=[V.createTextVNode(V.toDisplayString("确认"))])),_:1,__:[9]})])):V.createCommentVNode("",!0)]),_:1},8,["title","visible","width"]),V.createVNode(si.ssDialog,{title:U.value,visible:D.value,width:S.value,onBeforeDestroy:B[7]||(B[7]=Z=>D.value=!1)},{default:V.withCtx(()=>[V.createVNode(l3)]),footer:V.withCtx(()=>[V.createElementVNode("div",S3,[V.createVNode(_e,{onClick:B[6]||(B[6]=Z=>D.value=!1),class:"cancel-button",id:"themeBorderButton"},{default:V.withCtx(()=>B[10]||(B[10]=[V.createTextVNode(V.toDisplayString("取消"))])),_:1,__:[10]}),V.createVNode(_e,{class:"ok-button",onClick:ee,id:"themeButton"},{default:V.withCtx(()=>B[11]||(B[11]=[V.createTextVNode(V.toDisplayString("确认"))])),_:1,__:[11]})])]),_:1},8,["title","visible","width"]),c.value?(V.openBlock(),V.createBlock(si.ssFilePreview,{key:0,fileDataList:h.value,onDestroy:F},null,8,["fileDataList"])):V.createCommentVNode("",!0)])}}},E3=xl._export_sfc(b3,[["__scopeId","data-v-4f841f36"]]);exports.ACESFilmicToneMapping=qh;exports.AmbientLight=wu;exports.Box3=ei;exports.BoxGeometry=ki;exports.BufferAttribute=dn;exports.BufferGeometry=an;exports.CatmullRomCurve3=vu;exports.Color=gt;exports.Controls=Ip;exports.DirectionalLight=Au;exports.DoubleSide=wn;exports.Euler=Ln;exports.Float32BufferAttribute=It;exports.FrontSide=Xn;exports.GridHelper=Np;exports.Group=Kn;exports.HemisphereLight=Ep;exports.LOD=fu;exports.Line=ba;exports.LineBasicMaterial=Si;exports.LoadingManager=bu;exports.MOUSE=od;exports.MTLLoader=ha;exports.MathUtils=Ki;exports.Matrix4=Et;exports.Mesh=$t;exports.MeshPhongMaterial=Dn;exports.MeshStandardMaterial=yu;exports.OBJLoader=ca;exports.PCDLoader=zu;exports.PCFSoftShadowMap=Xh;exports.PerspectiveCamera=Sn;exports.Plane=Ni;exports.PlaneGeometry=hr;exports.PointLight=Eu;exports.Points=Cs;exports.PointsMaterial=Fi;exports.Quaternion=zn;exports.Ray=Fs;exports.SRGBColorSpace=Yt;exports.STLLoader=nr;exports.Scene=Pl;exports.ShadowMaterial=cp;exports.Spherical=Tu;exports.TOUCH=ld;exports.TubeGeometry=Ol;exports.URDFLoader=Vu;exports.Vector2=Ke;exports.Vector3=I;exports.WebGLRenderer=vg;exports.Xe=Wg;exports.formGetOptions=Mo;exports.getSelectRow=vl;exports.ssTable=E3;exports.useFormToTableComp=Hu;exports.useModelLoader=i3;exports.useTableComp=Yu;exports.useUnit=Gu;
|
|
4201
|
+
`);let i=[];for(let o=0,l=n.length;o<l;o++){const c=n[o].trimStart();if(c.length===0)continue;const h=c.charAt(0);if(h!=="#")if(h==="v"){const d=c.split(Dh);switch(d[0]){case"v":t.vertices.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3])),d.length>=7?($r.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),$t),t.colors.push($r.r,$r.g,$r.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":t.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(h==="f"){const u=c.slice(1).trim().split(Dh),f=[];for(let _=0,g=u.length;_<g;_++){const p=u[_];if(p.length>0){const E=p.split("/");f.push(E)}}const m=f[0];for(let _=1,g=f.length-1;_<g;_++){const p=f[_],E=f[_+1];t.addFace(m[0],p[0],E[0],m[1],p[1],E[1],m[2],p[2],E[2])}}else if(h==="l"){const d=c.substring(1).trim().split(" ");let u=[];const f=[];if(c.indexOf("/")===-1)u=d;else for(let m=0,_=d.length;m<_;m++){const g=d[m].split("/");g[0]!==""&&u.push(g[0]),g[1]!==""&&f.push(g[1])}t.addLineGeometry(u,f)}else if(h==="p"){const u=c.slice(1).trim().split(" ");t.addPointGeometry(u)}else if((i=Xg.exec(c))!==null){const d=(" "+i[0].slice(1).trim()).slice(1);t.startObject(d)}else if(jg.test(c))t.object.startMaterial(c.substring(7).trim(),t.materialLibraries);else if(qg.test(c))t.materialLibraries.push(c.substring(7).trim());else if(Yg.test(c))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(h==="s"){if(i=c.split(" "),i.length>1){const u=i[1].trim().toLowerCase();t.object.smooth=u!=="0"&&u!=="off"}else t.object.smooth=!0;const d=t.object.currentMaterial();d&&(d.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();const r=new Kn;if(r.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o<l;o++){const c=t.objects[o],h=c.geometry,d=c.materials,u=h.type==="Line",f=h.type==="Points";let m=!1;if(h.vertices.length===0)continue;const _=new on;_.setAttribute("position",new Nt(h.vertices,3)),h.normals.length>0&&_.setAttribute("normal",new Nt(h.normals,3)),h.colors.length>0&&(m=!0,_.setAttribute("color",new Nt(h.colors,3))),h.hasUVIndices===!0&&_.setAttribute("uv",new Nt(h.uvs,2));const g=[];for(let E=0,b=d.length;E<b;E++){const M=d[E],U=M.name+"_"+M.smooth+"_"+m;let C=t.materials[U];if(this.materials!==null){if(C=this.materials.create(M.name),u&&C&&!(C instanceof Si)){const P=new Si;Bn.prototype.copy.call(P,C),P.color.copy(C.color),C=P}else if(f&&C&&!(C instanceof Ii)){const P=new Ii({size:10,sizeAttenuation:!1});Bn.prototype.copy.call(P,C),P.color.copy(C.color),P.map=C.map,C=P}}C===void 0&&(u?C=new Si:f?C=new Ii({size:1,sizeAttenuation:!1}):C=new Dn,C.name=M.name,C.flatShading=!M.smooth,C.vertexColors=m,t.materials[U]=C),g.push(C)}let p;if(g.length>1){for(let E=0,b=d.length;E<b;E++){const M=d[E];_.addGroup(M.groupStart,M.groupCount,E)}u?p=new ga(_,g):f?p=new Cs(_,g):p=new Jt(_,g)}else u?p=new ga(_,g[0]):f?p=new Cs(_,g[0]):p=new Jt(_,g[0]);p.name=c.name,r.add(p)}else if(t.vertices.length>0){const o=new Ii({size:1,sizeAttenuation:!1}),l=new on;l.setAttribute("position",new Nt(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new Nt(t.colors,3)),o.vertexColors=!0);const c=new Cs(l,o);r.add(c)}return r}}class ha extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=this,a=this.path===""?Vl.extractUrlBase(e):this.path,o=new Bs(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{t(r.parse(l,a))}catch(c){i?i(c):console.error(c),r.manager.itemError(e)}},n,i)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){const n=e.split(`
|
|
4202
|
+
`);let i={};const r=/\s+/,a={};for(let l=0;l<n.length;l++){let c=n[l];if(c=c.trim(),c.length===0||c.charAt(0)==="#")continue;const h=c.indexOf(" ");let d=h>=0?c.substring(0,h):c;d=d.toLowerCase();let u=h>=0?c.substring(h+1):"";if(u=u.trim(),d==="newmtl")i={name:u},a[u]=i;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){const f=u.split(r,3);i[d]=[parseFloat(f[0]),parseFloat(f[1]),parseFloat(f[2])]}else i[d]=u}const o=new Jg(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}}class Jg{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Xn,this.wrap=this.options.wrap!==void 0?this.options.wrap:ai}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;const t={};for(const n in e){const i=e[n],r={};t[n]=r;for(const a in i){let o=!0,l=i[a];const c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break}o&&(r[c]=l)}}return t}preload(){for(const e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(const t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){const t=this,n=this.materialsInfo[e],i={name:e,side:this.side};function r(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(i[o])return;const c=t.getTextureParams(l,i),h=t.loadTexture(r(t.baseUrl,c.url));h.repeat.copy(c.scale),h.offset.copy(c.offset),h.wrapS=t.wrap,h.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(h.colorSpace=$t),i[o]=h}for(const o in n){const l=n[o];let c;if(l!=="")switch(o.toLowerCase()){case"kd":i.color=Vt.colorSpaceToWorking(new _t().fromArray(l),$t);break;case"ks":i.specular=Vt.colorSpaceToWorking(new _t().fromArray(l),$t);break;case"ke":i.emissive=Vt.colorSpaceToWorking(new _t().fromArray(l),$t);break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"disp":a("displacementMap",l);break;case"map_d":a("alphaMap",l),i.transparent=!0;break;case"ns":i.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(i.opacity=c,i.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(i.opacity=1-c,i.transparent=!0);break}}return this.materials[e]=new Dn(i),this.materials[e]}getTextureParams(e,t){const n={scale:new Ze(1,1),offset:new Ze(0,0)},i=e.split(/\s+/);let r;return r=i.indexOf("-bm"),r>=0&&(t.bumpScale=parseFloat(i[r+1]),i.splice(r,2)),r=i.indexOf("-mm"),r>=0&&(t.displacementBias=parseFloat(i[r+1]),t.displacementScale=parseFloat(i[r+2]),i.splice(r,3)),r=i.indexOf("-s"),r>=0&&(n.scale.set(parseFloat(i[r+1]),parseFloat(i[r+2])),i.splice(r,4)),r=i.indexOf("-o"),r>=0&&(n.offset.set(parseFloat(i[r+1]),parseFloat(i[r+2])),i.splice(r,4)),n.url=i.join(" ").trim(),n}loadTexture(e,t,n,i,r){const a=this.manager!==void 0?this.manager:zl;let o=a.getHandler(e);o===null&&(o=new Bl(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);const l=o.load(e,n,i,r);return t!==void 0&&(l.mapping=t),l}}class nr extends Qn{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new Bs(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(r.parse(o))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}parse(e){function t(c){const h=new DataView(c),d=32/8*3+32/8*3*3+16/8,u=h.getUint32(80,!0);if(80+32/8+u*d===h.byteLength)return!0;const m=[115,111,108,105,100];for(let _=0;_<5;_++)if(n(m,h,_))return!1;return!0}function n(c,h,d){for(let u=0,f=c.length;u<f;u++)if(c[u]!==h.getUint8(d+u))return!1;return!0}function i(c){const h=new DataView(c),d=h.getUint32(80,!0);let u,f,m,_=!1,g,p,E,b,M;for(let N=0;N<70;N++)h.getUint32(N,!1)==1129270351&&h.getUint8(N+4)==82&&h.getUint8(N+5)==61&&(_=!0,g=new Float32Array(d*3*3),p=h.getUint8(N+6)/255,E=h.getUint8(N+7)/255,b=h.getUint8(N+8)/255,M=h.getUint8(N+9)/255);const U=84,C=12*4+2,P=new on,D=new Float32Array(d*3*3),S=new Float32Array(d*3*3),y=new _t;for(let N=0;N<d;N++){const W=U+N*C,X=h.getFloat32(W,!0),Q=h.getFloat32(W+4,!0),ne=h.getFloat32(W+8,!0);if(_){const G=h.getUint16(W+48,!0);(G&32768)===0?(u=(G&31)/31,f=(G>>5&31)/31,m=(G>>10&31)/31):(u=p,f=E,m=b)}for(let G=1;G<=3;G++){const re=W+G*12,Z=N*3*3+(G-1)*3;D[Z]=h.getFloat32(re,!0),D[Z+1]=h.getFloat32(re+4,!0),D[Z+2]=h.getFloat32(re+8,!0),S[Z]=X,S[Z+1]=Q,S[Z+2]=ne,_&&(y.setRGB(u,f,m,$t),g[Z]=y.r,g[Z+1]=y.g,g[Z+2]=y.b)}}return P.setAttribute("position",new dn(D,3)),P.setAttribute("normal",new dn(S,3)),_&&(P.setAttribute("color",new dn(g,3)),P.hasColors=!0,P.alpha=M),P}function r(c){const h=new on,d=/solid([\s\S]*?)endsolid/g,u=/facet([\s\S]*?)endfacet/g,f=/solid\s(.+)/;let m=0;const _=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,g=new RegExp("vertex"+_+_+_,"g"),p=new RegExp("normal"+_+_+_,"g"),E=[],b=[],M=[],U=new I;let C,P=0,D=0,S=0;for(;(C=d.exec(c))!==null;){D=S;const y=C[0],N=(C=f.exec(y))!==null?C[1]:"";for(M.push(N);(C=u.exec(y))!==null;){let Q=0,ne=0;const G=C[0];for(;(C=p.exec(G))!==null;)U.x=parseFloat(C[1]),U.y=parseFloat(C[2]),U.z=parseFloat(C[3]),ne++;for(;(C=g.exec(G))!==null;)E.push(parseFloat(C[1]),parseFloat(C[2]),parseFloat(C[3])),b.push(U.x,U.y,U.z),Q++,S++;ne!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+m),Q!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+m),m++}const W=D,X=S-D;h.userData.groupNames=M,h.addGroup(W,X,P),P++}return h.setAttribute("position",new Nt(E,3)),h.setAttribute("normal",new Nt(b,3)),h}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){const h=new Uint8Array(c.length);for(let d=0;d<c.length;d++)h[d]=c.charCodeAt(d)&255;return h.buffer||h}else return c}const l=o(e);return t(l)?i(l):r(a(e))}}class zu extends Qn{constructor(e){super(e),this.littleEndian=!0}load(e,t,n,i){const r=this,a=new Bs(r.manager);a.setPath(r.path),a.setResponseType("arraybuffer"),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(o){try{t(r.parse(o))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}_getDataView(e,t,n,i){switch(n){case"F":return i===8?e.getFloat64(t,this.littleEndian):e.getFloat32(t,this.littleEndian);case"I":return i===1?e.getInt8(t):i===2?e.getInt16(t,this.littleEndian):e.getInt32(t,this.littleEndian);case"U":return i===1?e.getUint8(t):i===2?e.getUint16(t,this.littleEndian):e.getUint32(t,this.littleEndian)}}parse(e){function t(f,m){const _=f.length,g=new Uint8Array(m);let p=0,E=0,b,M,U;do if(b=f[p++],b<32){if(b++,E+b>m)throw new Error("Output buffer is not large enough");if(p+b>_)throw new Error("Invalid compressed data");do g[E++]=f[p++];while(--b)}else{if(M=b>>5,U=E-((b&31)<<8)-1,p>=_)throw new Error("Invalid compressed data");if(M===7&&(M+=f[p++],p>=_))throw new Error("Invalid compressed data");if(U-=f[p++],E+M+2>m)throw new Error("Output buffer is not large enough");if(U<0)throw new Error("Invalid compressed data");if(U>=E)throw new Error("Invalid compressed data");do g[E++]=g[U++];while(--M+2)}while(p<_);return g}function n(f){const m={},_=new Uint8Array(f);let g="",p="",E=0,b=!1;const M=_.length;for(;E<M&&b===!1;){const D=String.fromCharCode(_[E++]);D===`
|
|
4203
|
+
`||D==="\r"?(p.trim().toLowerCase().startsWith("data")&&(b=!0),p=""):p+=D,g+=D}const U=g.search(/[\r\n]DATA\s(\S*)\s/i),C=/[\r\n]DATA\s(\S*)\s/i.exec(g.slice(U-1));if(m.data=C[1],m.headerLen=C[0].length+U,m.str=g.slice(0,m.headerLen),m.str=m.str.replace(/#.*/gi,""),m.version=/^VERSION (.*)/im.exec(m.str),m.fields=/^FIELDS (.*)/im.exec(m.str),m.size=/^SIZE (.*)/im.exec(m.str),m.type=/^TYPE (.*)/im.exec(m.str),m.count=/^COUNT (.*)/im.exec(m.str),m.width=/^WIDTH (.*)/im.exec(m.str),m.height=/^HEIGHT (.*)/im.exec(m.str),m.viewpoint=/^VIEWPOINT (.*)/im.exec(m.str),m.points=/^POINTS (.*)/im.exec(m.str),m.version!==null&&(m.version=parseFloat(m.version[1])),m.fields=m.fields!==null?m.fields[1].split(" "):[],m.type!==null&&(m.type=m.type[1].split(" ")),m.width!==null&&(m.width=parseInt(m.width[1])),m.height!==null&&(m.height=parseInt(m.height[1])),m.viewpoint!==null&&(m.viewpoint=m.viewpoint[1]),m.points!==null&&(m.points=parseInt(m.points[1],10)),m.points===null&&(m.points=m.width*m.height),m.size!==null&&(m.size=m.size[1].split(" ").map(function(D){return parseInt(D,10)})),m.count!==null)m.count=m.count[1].split(" ").map(function(D){return parseInt(D,10)});else{m.count=[];for(let D=0,S=m.fields.length;D<S;D++)m.count.push(1)}m.offset={};let P=0;for(let D=0,S=m.fields.length;D<S;D++)m.data==="ascii"?m.offset[m.fields[D]]=D:(m.offset[m.fields[D]]=P,P+=m.size[D]*m.count[D]);return m.rowSize=P,m}const i=n(e),r=[],a=[],o=[],l=[],c=[],h=new _t;if(i.data==="ascii"){const f=i.offset,g=new TextDecoder().decode(e).slice(i.headerLen).split(`
|
|
4204
|
+
`);for(let p=0,E=g.length;p<E;p++){if(g[p]==="")continue;const b=g[p].split(" ");if(f.x!==void 0&&(r.push(parseFloat(b[f.x])),r.push(parseFloat(b[f.y])),r.push(parseFloat(b[f.z]))),f.rgb!==void 0){const M=i.fields.findIndex(N=>N==="rgb"),U=i.type[M],C=parseFloat(b[f.rgb]);let P=C;if(U==="F"){const N=new Float32Array(1);N[0]=C,P=new Int32Array(N.buffer)[0]}const D=(P>>16&255)/255,S=(P>>8&255)/255,y=(P>>0&255)/255;h.setRGB(D,S,y,$t),o.push(h.r,h.g,h.b)}f.normal_x!==void 0&&(a.push(parseFloat(b[f.normal_x])),a.push(parseFloat(b[f.normal_y])),a.push(parseFloat(b[f.normal_z]))),f.intensity!==void 0&&l.push(parseFloat(b[f.intensity])),f.label!==void 0&&c.push(parseInt(b[f.label]))}}if(i.data==="binary_compressed"){const f=new Uint32Array(e.slice(i.headerLen,i.headerLen+8)),m=f[0],_=f[1],g=t(new Uint8Array(e,i.headerLen+8,m),_),p=new DataView(g.buffer),E=i.offset;for(let b=0;b<i.points;b++){if(E.x!==void 0){const M=i.fields.indexOf("x"),U=i.fields.indexOf("y"),C=i.fields.indexOf("z");r.push(this._getDataView(p,i.points*E.x+i.size[M]*b,i.type[M],i.size[M])),r.push(this._getDataView(p,i.points*E.y+i.size[U]*b,i.type[U],i.size[U])),r.push(this._getDataView(p,i.points*E.z+i.size[C]*b,i.type[C],i.size[C]))}if(E.rgb!==void 0){const M=i.fields.indexOf("rgb"),U=p.getUint8(i.points*E.rgb+i.size[M]*b+2)/255,C=p.getUint8(i.points*E.rgb+i.size[M]*b+1)/255,P=p.getUint8(i.points*E.rgb+i.size[M]*b+0)/255;h.setRGB(U,C,P,$t),o.push(h.r,h.g,h.b)}if(E.normal_x!==void 0){const M=i.fields.indexOf("normal_x"),U=i.fields.indexOf("normal_y"),C=i.fields.indexOf("normal_z");a.push(this._getDataView(p,i.points*E.normal_x+i.size[M]*b,i.type[M],i.size[M])),a.push(this._getDataView(p,i.points*E.normal_y+i.size[U]*b,i.type[U],i.size[U])),a.push(this._getDataView(p,i.points*E.normal_z+i.size[C]*b,i.type[C],i.size[C]))}if(E.intensity!==void 0){const M=i.fields.indexOf("intensity");l.push(this._getDataView(p,i.points*E.intensity+i.size[M]*b,i.type[M],i.size[M]))}if(E.label!==void 0){const M=i.fields.indexOf("label");c.push(p.getInt32(i.points*E.label+i.size[M]*b,this.littleEndian))}}}if(i.data==="binary"){const f=new DataView(e,i.headerLen),m=i.offset;for(let _=0,g=0;_<i.points;_++,g+=i.rowSize){if(m.x!==void 0){const p=i.fields.indexOf("x"),E=i.fields.indexOf("y"),b=i.fields.indexOf("z");r.push(this._getDataView(f,g+m.x,i.type[p],i.size[p])),r.push(this._getDataView(f,g+m.y,i.type[E],i.size[E])),r.push(this._getDataView(f,g+m.z,i.type[b],i.size[b]))}if(m.rgb!==void 0){const p=f.getUint8(g+m.rgb+2)/255,E=f.getUint8(g+m.rgb+1)/255,b=f.getUint8(g+m.rgb+0)/255;h.setRGB(p,E,b,$t),o.push(h.r,h.g,h.b)}if(m.normal_x!==void 0){const p=i.fields.indexOf("normal_x"),E=i.fields.indexOf("normal_y"),b=i.fields.indexOf("normal_z");a.push(this._getDataView(f,g+m.normal_x,i.type[p],i.size[p])),a.push(this._getDataView(f,g+m.normal_y,i.type[E],i.size[E])),a.push(this._getDataView(f,g+m.normal_z,i.type[b],i.size[b]))}if(m.intensity!==void 0){const p=i.fields.indexOf("intensity");l.push(this._getDataView(f,g+m.intensity,i.type[p],i.size[p]))}m.label!==void 0&&c.push(f.getInt32(g+m.label,this.littleEndian))}}const d=new on;r.length>0&&d.setAttribute("position",new Nt(r,3)),a.length>0&&d.setAttribute("normal",new Nt(a,3)),o.length>0&&d.setAttribute("color",new Nt(o,3)),l.length>0&&d.setAttribute("intensity",new Nt(l,1)),c.length>0&&d.setAttribute("label",new Df(c,1)),d.computeBoundingSphere();const u=new Ii({size:.005});return o.length>0&&(u.vertexColors=!0),new Cs(d,u)}}class Fh extends bp{constructor(e){super(e)}parse(e){function t(G){switch(G.image_type){case u:case _:if(G.colormap_length>256||G.colormap_size!==24||G.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case f:case m:case g:case p:if(G.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case d:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+G.image_type)}if(G.width<=0||G.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(G.pixel_size!==8&&G.pixel_size!==16&&G.pixel_size!==24&&G.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+G.pixel_size)}function n(G,re,Z,me,Ee){let Ce,Ne;const Ve=Z.pixel_size>>3,K=Z.width*Z.height*Ve;if(re&&(Ne=Ee.subarray(me,me+=Z.colormap_length*(Z.colormap_size>>3))),G){Ce=new Uint8Array(K);let ae,le,ce,Le=0;const xe=new Uint8Array(Ve);for(;Le<K;)if(ae=Ee[me++],le=(ae&127)+1,ae&128){for(ce=0;ce<Ve;++ce)xe[ce]=Ee[me++];for(ce=0;ce<le;++ce)Ce.set(xe,Le+ce*Ve);Le+=Ve*le}else{for(le*=Ve,ce=0;ce<le;++ce)Ce[Le+ce]=Ee[me++];Le+=le}}else Ce=Ee.subarray(me,me+=re?Z.width*Z.height:K);return{pixel_data:Ce,palettes:Ne}}function i(G,re,Z,me,Ee,Ce,Ne,Ve,K){const ae=K;let le,ce=0,Le,xe;const we=y.width;for(xe=re;xe!==me;xe+=Z)for(Le=Ee;Le!==Ne;Le+=Ce,ce++)le=Ve[ce],G[(Le+we*xe)*4+3]=255,G[(Le+we*xe)*4+2]=ae[le*3+0],G[(Le+we*xe)*4+1]=ae[le*3+1],G[(Le+we*xe)*4+0]=ae[le*3+2];return G}function r(G,re,Z,me,Ee,Ce,Ne,Ve){let K,ae=0,le,ce;const Le=y.width;for(ce=re;ce!==me;ce+=Z)for(le=Ee;le!==Ne;le+=Ce,ae+=2)K=Ve[ae+0]+(Ve[ae+1]<<8),G[(le+Le*ce)*4+0]=(K&31744)>>7,G[(le+Le*ce)*4+1]=(K&992)>>2,G[(le+Le*ce)*4+2]=(K&31)<<3,G[(le+Le*ce)*4+3]=K&32768?0:255;return G}function a(G,re,Z,me,Ee,Ce,Ne,Ve){let K=0,ae,le;const ce=y.width;for(le=re;le!==me;le+=Z)for(ae=Ee;ae!==Ne;ae+=Ce,K+=3)G[(ae+ce*le)*4+3]=255,G[(ae+ce*le)*4+2]=Ve[K+0],G[(ae+ce*le)*4+1]=Ve[K+1],G[(ae+ce*le)*4+0]=Ve[K+2];return G}function o(G,re,Z,me,Ee,Ce,Ne,Ve){let K=0,ae,le;const ce=y.width;for(le=re;le!==me;le+=Z)for(ae=Ee;ae!==Ne;ae+=Ce,K+=4)G[(ae+ce*le)*4+2]=Ve[K+0],G[(ae+ce*le)*4+1]=Ve[K+1],G[(ae+ce*le)*4+0]=Ve[K+2],G[(ae+ce*le)*4+3]=Ve[K+3];return G}function l(G,re,Z,me,Ee,Ce,Ne,Ve){let K,ae=0,le,ce;const Le=y.width;for(ce=re;ce!==me;ce+=Z)for(le=Ee;le!==Ne;le+=Ce,ae++)K=Ve[ae],G[(le+Le*ce)*4+0]=K,G[(le+Le*ce)*4+1]=K,G[(le+Le*ce)*4+2]=K,G[(le+Le*ce)*4+3]=255;return G}function c(G,re,Z,me,Ee,Ce,Ne,Ve){let K=0,ae,le;const ce=y.width;for(le=re;le!==me;le+=Z)for(ae=Ee;ae!==Ne;ae+=Ce,K+=2)G[(ae+ce*le)*4+0]=Ve[K+0],G[(ae+ce*le)*4+1]=Ve[K+0],G[(ae+ce*le)*4+2]=Ve[K+0],G[(ae+ce*le)*4+3]=Ve[K+1];return G}function h(G,re,Z,me,Ee){let Ce,Ne,Ve,K,ae,le;switch((y.flags&E)>>b){default:case C:Ce=0,Ve=1,ae=re,Ne=0,K=1,le=Z;break;case M:Ce=0,Ve=1,ae=re,Ne=Z-1,K=-1,le=-1;break;case P:Ce=re-1,Ve=-1,ae=-1,Ne=0,K=1,le=Z;break;case U:Ce=re-1,Ve=-1,ae=-1,Ne=Z-1,K=-1,le=-1;break}if(X)switch(y.pixel_size){case 8:l(G,Ne,K,le,Ce,Ve,ae,me);break;case 16:c(G,Ne,K,le,Ce,Ve,ae,me);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(y.pixel_size){case 8:i(G,Ne,K,le,Ce,Ve,ae,me,Ee);break;case 16:r(G,Ne,K,le,Ce,Ve,ae,me);break;case 24:a(G,Ne,K,le,Ce,Ve,ae,me);break;case 32:o(G,Ne,K,le,Ce,Ve,ae,me);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return G}const d=0,u=1,f=2,m=3,_=9,g=10,p=11,E=48,b=4,M=0,U=1,C=2,P=3;if(e.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let D=0;const S=new Uint8Array(e),y={id_length:S[D++],colormap_type:S[D++],image_type:S[D++],colormap_index:S[D++]|S[D++]<<8,colormap_length:S[D++]|S[D++]<<8,colormap_size:S[D++],origin:[S[D++]|S[D++]<<8,S[D++]|S[D++]<<8],width:S[D++]|S[D++]<<8,height:S[D++]|S[D++]<<8,pixel_size:S[D++],flags:S[D++]};if(t(y),y.id_length+D>e.length)throw new Error("THREE.TGALoader: No data.");D+=y.id_length;let N=!1,W=!1,X=!1;switch(y.image_type){case _:N=!0,W=!0;break;case u:W=!0;break;case g:N=!0;break;case f:break;case p:N=!0,X=!0;break;case m:X=!0;break}const Q=new Uint8Array(y.width*y.height*4),ne=n(N,W,y,D,S);return h(Q,y.width,y.height,ne.pixel_data,ne.palettes),{data:Q,width:y.width,height:y.height,flipY:!0,generateMipmaps:!0,minFilter:xi}}}class Kg extends Qn{load(e,t,n,i){const r=this,a=r.path===""?Vl.extractUrlBase(e):r.path,o=new Bs(r.manager);o.setPath(r.path),o.setRequestHeader(r.requestHeader),o.setWithCredentials(r.withCredentials),o.load(e,function(l){try{t(r.parse(l,a))}catch(c){i?i(c):console.error(c),r.manager.itemError(e)}},n,i)}parse(e,t){function n(x,v){const R=[],T=x.childNodes;for(let L=0,ie=T.length;L<ie;L++){const de=T[L];de.nodeName===v&&R.push(de)}return R}function i(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=v[T];return R}function r(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=parseFloat(v[T]);return R}function a(x){if(x.length===0)return[];const v=x.trim().split(/\s+/),R=new Array(v.length);for(let T=0,L=v.length;T<L;T++)R[T]=parseInt(v[T]);return R}function o(x){return x.substring(1)}function l(){return"three_default_"+kn++}function c(x){return Object.keys(x).length===0}function h(x){return{unit:d(n(x,"unit")[0]),upAxis:u(n(x,"up_axis")[0])}}function d(x){return x!==void 0&&x.hasAttribute("meter")===!0?parseFloat(x.getAttribute("meter")):1}function u(x){return x!==void 0?x.textContent:"Y_UP"}function f(x,v,R,T){const L=n(x,v)[0];if(L!==void 0){const ie=n(L,R);for(let de=0;de<ie.length;de++)T(ie[de])}}function m(x,v){for(const R in x){const T=x[R];T.build=v(x[R])}}function _(x,v){return x.build!==void 0||(x.build=v(x)),x.build}function g(x){const v={sources:{},samplers:{},channels:{}};let R=!1;for(let T=0,L=x.childNodes.length;T<L;T++){const ie=x.childNodes[T];if(ie.nodeType!==1)continue;let de;switch(ie.nodeName){case"source":de=ie.getAttribute("id"),v.sources[de]=Se(ie);break;case"sampler":de=ie.getAttribute("id"),v.samplers[de]=p(ie);break;case"channel":de=ie.getAttribute("target"),v.channels[de]=E(ie);break;case"animation":g(ie),R=!0;break;default:console.log(ie)}}R===!1&&(xt.animations[x.getAttribute("id")||Ki.generateUUID()]=v)}function p(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=o(L.getAttribute("source")),de=L.getAttribute("semantic");v.inputs[de]=ie;break}}return v}function E(x){const v={};let T=x.getAttribute("target").split("/");const L=T.shift();let ie=T.shift();const de=ie.indexOf("(")!==-1,et=ie.indexOf(".")!==-1;if(et)T=ie.split("."),ie=T.shift(),v.member=T.shift();else if(de){const Oe=ie.split("(");ie=Oe.shift();for(let $e=0;$e<Oe.length;$e++)Oe[$e]=parseInt(Oe[$e].replace(/\)/,""));v.indices=Oe}return v.id=L,v.sid=ie,v.arraySyntax=de,v.memberSyntax=et,v.sampler=o(x.getAttribute("source")),v}function b(x){const v=[],R=x.channels,T=x.samplers,L=x.sources;for(const ie in R)if(R.hasOwnProperty(ie)){const de=R[ie],et=T[de.sampler],Oe=et.inputs.INPUT,$e=et.inputs.OUTPUT,ht=L[Oe],Ae=L[$e],lt=U(de,ht,Ae);y(lt,v)}return v}function M(x){return _(xt.animations[x],b)}function U(x,v,R){const T=xt.nodes[x.id],L=Et(T.id),ie=T.transforms[x.sid],de=T.matrix.clone().transpose();let et,Oe,$e,ht,Ae,lt;const it={};switch(ie){case"matrix":for($e=0,ht=v.array.length;$e<ht;$e++)if(et=v.array[$e],Oe=$e*R.stride,it[et]===void 0&&(it[et]={}),x.arraySyntax===!0){const hn=R.array[Oe],Qt=x.indices[0]+4*x.indices[1];it[et][Qt]=hn}else for(Ae=0,lt=R.stride;Ae<lt;Ae++)it[et][Ae]=R.array[Oe+Ae];break;case"translate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break;case"rotate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break;case"scale":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',ie);break}const yt=C(it,de);return{name:L.uuid,keyframes:yt}}function C(x,v){const R=[];for(const L in x)R.push({time:parseFloat(L),value:x[L]});R.sort(T);for(let L=0;L<16;L++)N(R,L,v.elements[L]);return R;function T(L,ie){return L.time-ie.time}}const P=new I,D=new I,S=new zn;function y(x,v){const R=x.keyframes,T=x.name,L=[],ie=[],de=[],et=[];for(let Oe=0,$e=R.length;Oe<$e;Oe++){const ht=R[Oe],Ae=ht.time,lt=ht.value;H.fromArray(lt).transpose(),H.decompose(P,S,D),L.push(Ae),ie.push(P.x,P.y,P.z),de.push(S.x,S.y,S.z,S.w),et.push(D.x,D.y,D.z)}return ie.length>0&&v.push(new Is(T+".position",L,ie)),de.length>0&&v.push(new ur(T+".quaternion",L,de)),et.length>0&&v.push(new Is(T+".scale",L,et)),v}function N(x,v,R){let T,L=!0,ie,de;for(ie=0,de=x.length;ie<de;ie++)T=x[ie],T.value[v]===void 0?T.value[v]=null:L=!1;if(L===!0)for(ie=0,de=x.length;ie<de;ie++)T=x[ie],T.value[v]=R;else W(x,v)}function W(x,v){let R,T;for(let L=0,ie=x.length;L<ie;L++){const de=x[L];if(de.value[v]===null){if(R=X(x,L,v),T=Q(x,L,v),R===null){de.value[v]=T.value[v];continue}if(T===null){de.value[v]=R.value[v];continue}ne(de,R,T,v)}}}function X(x,v,R){for(;v>=0;){const T=x[v];if(T.value[R]!==null)return T;v--}return null}function Q(x,v,R){for(;v<x.length;){const T=x[v];if(T.value[R]!==null)return T;v++}return null}function ne(x,v,R,T){if(R.time-v.time===0){x.value[T]=v.value[T];return}x.value[T]=(x.time-v.time)*(R.value[T]-v.value[T])/(R.time-v.time)+v.value[T]}function G(x){const v={name:x.getAttribute("id")||"default",start:parseFloat(x.getAttribute("start")||0),end:parseFloat(x.getAttribute("end")||0),animations:[]};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"instance_animation":v.animations.push(o(L.getAttribute("url")));break}}xt.clips[x.getAttribute("id")]=v}function re(x){const v=[],R=x.name,T=x.end-x.start||-1,L=x.animations;for(let ie=0,de=L.length;ie<de;ie++){const et=M(L[ie]);for(let Oe=0,$e=et.length;Oe<$e;Oe++)v.push(et[Oe])}return new Bc(R,T,v)}function Z(x){return _(xt.clips[x],re)}function me(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"skin":v.id=o(L.getAttribute("source")),v.skin=Ee(L);break;case"morph":v.id=o(L.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}xt.controllers[x.getAttribute("id")]=v}function Ee(x){const v={sources:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"bind_shape_matrix":v.bindShapeMatrix=r(L.textContent);break;case"source":const ie=L.getAttribute("id");v.sources[ie]=Se(L);break;case"joints":v.joints=Ce(L);break;case"vertex_weights":v.vertexWeights=Ne(L);break}}return v}function Ce(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=L.getAttribute("semantic"),de=o(L.getAttribute("source"));v.inputs[ie]=de;break}}return v}function Ne(x){const v={inputs:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=L.getAttribute("semantic"),de=o(L.getAttribute("source")),et=parseInt(L.getAttribute("offset"));v.inputs[ie]={id:de,offset:et};break;case"vcount":v.vcount=a(L.textContent);break;case"v":v.v=a(L.textContent);break}}return v}function Ve(x){const v={id:x.id},R=xt.geometries[v.id];return x.skin!==void 0&&(v.skin=K(x.skin),R.sources.skinIndices=v.skin.indices,R.sources.skinWeights=v.skin.weights),v}function K(x){const R={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},T=x.sources,L=x.vertexWeights,ie=L.vcount,de=L.v,et=L.inputs.JOINT.offset,Oe=L.inputs.WEIGHT.offset,$e=x.sources[x.joints.inputs.JOINT],ht=x.sources[x.joints.inputs.INV_BIND_MATRIX],Ae=T[L.inputs.WEIGHT.id].array;let lt=0,it,yt,pt;for(it=0,pt=ie.length;it<pt;it++){const Qt=ie[it],jt=[];for(yt=0;yt<Qt;yt++){const Yt=de[lt+et],ui=de[lt+Oe],Pn=Ae[ui];jt.push({index:Yt,weight:Pn}),lt+=2}for(jt.sort(hn),yt=0;yt<4;yt++){const Yt=jt[yt];Yt!==void 0?(R.indices.array.push(Yt.index),R.weights.array.push(Yt.weight)):(R.indices.array.push(0),R.weights.array.push(0))}}for(x.bindShapeMatrix?R.bindMatrix=new At().fromArray(x.bindShapeMatrix).transpose():R.bindMatrix=new At().identity(),it=0,pt=$e.array.length;it<pt;it++){const Qt=$e.array[it],jt=new At().fromArray(ht.array,it*ht.stride).transpose();R.joints.push({name:Qt,boneInverse:jt})}return R;function hn(Qt,jt){return jt.weight-Qt.weight}}function ae(x){return _(xt.controllers[x],Ve)}function le(x){const v={init_from:n(x,"init_from")[0].textContent};xt.images[x.getAttribute("id")]=v}function ce(x){return x.build!==void 0?x.build:x.init_from}function Le(x){const v=xt.images[x];return v!==void 0?_(v,ce):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",x),null)}function xe(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"profile_COMMON":v.profile=we(L);break}}xt.effects[x.getAttribute("id")]=v}function we(x){const v={surfaces:{},samplers:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"newparam":st(L,v);break;case"technique":v.technique=O(L);break;case"extra":v.extra=We(L);break}}return v}function st(x,v){const R=x.getAttribute("sid");for(let T=0,L=x.childNodes.length;T<L;T++){const ie=x.childNodes[T];if(ie.nodeType===1)switch(ie.nodeName){case"surface":v.surfaces[R]=Tt(ie);break;case"sampler2D":v.samplers[R]=Mt(ie);break}}}function Tt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"init_from":v.init_from=L.textContent;break}}return v}function Mt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"source":v.source=L.textContent;break}}return v}function O(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"constant":case"lambert":case"blinn":case"phong":v.type=L.nodeName,v.parameters=Gt(L);break;case"extra":v.extra=We(L);break}}return v}function Gt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":v[L.nodeName]=Lt(L);break;case"transparent":v[L.nodeName]={opaque:L.hasAttribute("opaque")?L.getAttribute("opaque"):"A_ONE",data:Lt(L)};break}}return v}function Lt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"color":v[L.nodeName]=r(L.textContent);break;case"float":v[L.nodeName]=parseFloat(L.textContent);break;case"texture":v[L.nodeName]={id:L.getAttribute("texture"),extra:Ct(L)};break}}return v}function Ct(x){const v={technique:{}};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"extra":He(L,v);break}}return v}function He(x,v){for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique":mt(L,v);break}}}function mt(x,v){for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":v.technique[L.nodeName]=parseFloat(L.textContent);break;case"wrapU":case"wrapV":L.textContent.toUpperCase()==="TRUE"?v.technique[L.nodeName]=1:L.textContent.toUpperCase()==="FALSE"?v.technique[L.nodeName]=0:v.technique[L.nodeName]=parseInt(L.textContent);break;case"bump":v[L.nodeName]=rn(L);break}}}function We(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique":v.technique=dt(L);break}}return v}function dt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"double_sided":v[L.nodeName]=parseInt(L.textContent);break;case"bump":v[L.nodeName]=rn(L);break}}return v}function rn(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"texture":v[L.nodeName]={id:L.getAttribute("texture"),texcoord:L.getAttribute("texcoord"),extra:Ct(L)};break}}return v}function F(x){return x}function A(x){return _(xt.effects[x],F)}function ee(x){const v={name:x.getAttribute("name")};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"instance_effect":v.url=o(L.getAttribute("url"));break}}xt.materials[x.getAttribute("id")]=v}function fe(x){let v,R=x.slice((x.lastIndexOf(".")-1>>>0)+2);switch(R=R.toLowerCase(),R){case"tga":v=an;break;default:v=sn}return v}function ye(x){const v=A(x.url),R=v.profile.technique;let T;switch(R.type){case"phong":case"blinn":T=new Dn;break;case"lambert":T=new hp;break;default:T=new zi;break}T.name=x.name||"";function L(Oe,$e=null){const ht=v.profile.samplers[Oe.id];let Ae=null;if(ht!==void 0){const lt=v.profile.surfaces[ht.source];Ae=Le(lt.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),Ae=Le(Oe.id);if(Ae!==null){const lt=fe(Ae);if(lt!==void 0){const it=lt.load(Ae),yt=Oe.extra;if(yt!==void 0&&yt.technique!==void 0&&c(yt.technique)===!1){const pt=yt.technique;it.wrapS=pt.wrapU?ai:Jn,it.wrapT=pt.wrapV?ai:Jn,it.offset.set(pt.offsetU||0,pt.offsetV||0),it.repeat.set(pt.repeatU||1,pt.repeatV||1)}else it.wrapS=ai,it.wrapT=ai;return $e!==null&&(it.colorSpace=$e),it}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",Ae),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",Oe.id),null}const ie=R.parameters;for(const Oe in ie){const $e=ie[Oe];switch(Oe){case"diffuse":$e.color&&T.color.fromArray($e.color),$e.texture&&(T.map=L($e.texture,$t));break;case"specular":$e.color&&T.specular&&T.specular.fromArray($e.color),$e.texture&&(T.specularMap=L($e.texture));break;case"bump":$e.texture&&(T.normalMap=L($e.texture));break;case"ambient":$e.texture&&(T.lightMap=L($e.texture,$t));break;case"shininess":$e.float&&T.shininess&&(T.shininess=$e.float);break;case"emission":$e.color&&T.emissive&&T.emissive.fromArray($e.color),$e.texture&&(T.emissiveMap=L($e.texture,$t));break}}Vt.colorSpaceToWorking(T.color,$t),T.specular&&Vt.colorSpaceToWorking(T.specular,$t),T.emissive&&Vt.colorSpaceToWorking(T.emissive,$t);let de=ie.transparent,et=ie.transparency;if(et===void 0&&de&&(et={float:1}),de===void 0&&et&&(de={opaque:"A_ONE",data:{color:[1,1,1,1]}}),de&&et)if(de.data.texture)T.transparent=!0;else{const Oe=de.data.color;switch(de.opaque){case"A_ONE":T.opacity=Oe[3]*et.float;break;case"RGB_ZERO":T.opacity=1-Oe[0]*et.float;break;case"A_ZERO":T.opacity=1-Oe[3]*et.float;break;case"RGB_ONE":T.opacity=Oe[0]*et.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',de.opaque)}T.opacity<1&&(T.transparent=!0)}if(R.extra!==void 0&&R.extra.technique!==void 0){const Oe=R.extra.technique;for(const $e in Oe){const ht=Oe[$e];switch($e){case"double_sided":T.side=ht===1?wn:Xn;break;case"bump":T.normalMap=L(ht.texture),T.normalScale=new Ze(1,1);break}}}return T}function he(x){return _(xt.materials[x],ye)}function rt(x){const v={name:x.getAttribute("name")};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"optics":v.optics=ze(L);break}}xt.cameras[x.getAttribute("id")]=v}function ze(x){for(let v=0;v<x.childNodes.length;v++){const R=x.childNodes[v];switch(R.nodeName){case"technique_common":return Qe(R)}}return{}}function Qe(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"perspective":case"orthographic":v.technique=T.nodeName,v.parameters=at(T);break}}return v}function at(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":v[T.nodeName]=parseFloat(T.textContent);break}}return v}function Me(x){let v;switch(x.optics.technique){case"perspective":v=new Sn(x.optics.parameters.yfov,x.optics.parameters.aspect_ratio,x.optics.parameters.znear,x.optics.parameters.zfar);break;case"orthographic":let R=x.optics.parameters.ymag,T=x.optics.parameters.xmag;const L=x.optics.parameters.aspect_ratio;T=T===void 0?R*L:T,R=R===void 0?T/L:R,T*=.5,R*=.5,v=new wa(-T,T,R,-R,x.optics.parameters.znear,x.optics.parameters.zfar);break;default:v=new Sn;break}return v.name=x.name||"",v}function Ye(x){const v=xt.cameras[x];return v!==void 0?_(v,Me):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",x),null)}function vt(x){let v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"technique_common":v=gt(L);break}}xt.lights[x.getAttribute("id")]=v}function gt(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"directional":case"point":case"spot":case"ambient":v.technique=L.nodeName,v.parameters=Be(L)}}return v}function Be(x){const v={};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"color":const ie=r(L.textContent);v.color=new _t().fromArray(ie),Vt.colorSpaceToWorking(v.color,$t);break;case"falloff_angle":v.falloffAngle=parseFloat(L.textContent);break;case"quadratic_attenuation":const de=parseFloat(L.textContent);v.distance=de?Math.sqrt(1/de):0;break}}return v}function St(x){let v;switch(x.technique){case"directional":v=new Au;break;case"point":v=new Eu;break;case"spot":v=new wp;break;case"ambient":v=new wu;break}return x.parameters.color&&v.color.copy(x.parameters.color),x.parameters.distance&&(v.distance=x.parameters.distance),v}function q(x){const v=xt.lights[x];return v!==void 0?_(v,St):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",x),null)}function Xe(x){const v={name:x.getAttribute("name"),sources:{},vertices:{},primitives:[]},R=n(x,"mesh")[0];if(R!==void 0){for(let T=0;T<R.childNodes.length;T++){const L=R.childNodes[T];if(L.nodeType!==1)continue;const ie=L.getAttribute("id");switch(L.nodeName){case"source":v.sources[ie]=Se(L);break;case"vertices":v.vertices=z(L);break;case"polygons":console.warn("THREE.ColladaLoader: Unsupported primitive type: ",L.nodeName);break;case"lines":case"linestrips":case"polylist":case"triangles":v.primitives.push(B(L));break;default:console.log(L)}}xt.geometries[x.getAttribute("id")]=v}}function Se(x){const v={array:[],stride:3};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"float_array":v.array=r(T.textContent);break;case"Name_array":v.array=i(T.textContent);break;case"technique_common":const L=n(T,"accessor")[0];L!==void 0&&(v.stride=parseInt(L.getAttribute("stride")));break}}return v}function z(x){const v={};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];T.nodeType===1&&(v[T.getAttribute("semantic")]=o(T.getAttribute("source")))}return v}function B(x){const v={type:x.nodeName,material:x.getAttribute("material"),count:parseInt(x.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let R=0,T=x.childNodes.length;R<T;R++){const L=x.childNodes[R];if(L.nodeType===1)switch(L.nodeName){case"input":const ie=o(L.getAttribute("source")),de=L.getAttribute("semantic"),et=parseInt(L.getAttribute("offset")),Oe=parseInt(L.getAttribute("set")),$e=Oe>0?de+Oe:de;v.inputs[$e]={id:ie,offset:et},v.stride=Math.max(v.stride,et+1),de==="TEXCOORD"&&(v.hasUV=!0);break;case"vcount":v.vcount=a(L.textContent);break;case"p":v.p=a(L.textContent);break}}return v}function k(x){const v={};for(let R=0;R<x.length;R++){const T=x[R];v[T.type]===void 0&&(v[T.type]=[]),v[T.type].push(T)}return v}function te(x){let v=0;for(let R=0,T=x.length;R<T;R++)x[R].hasUV===!0&&v++;v>0&&v<x.length&&(x.uvsNeedsFix=!0)}function se(x){const v={},R=x.sources,T=x.vertices,L=x.primitives;if(L.length===0)return{};const ie=k(L);for(const de in ie){const et=ie[de];te(et),v[de]=oe(et,R,T)}return v}function oe(x,v,R){const T={},L={array:[],stride:0},ie={array:[],stride:0},de={array:[],stride:0},et={array:[],stride:0},Oe={array:[],stride:0},$e={array:[],stride:4},ht={array:[],stride:4},Ae=new on,lt=[];let it=0;for(let yt=0;yt<x.length;yt++){const pt=x[yt],hn=pt.inputs;let Qt=0;switch(pt.type){case"lines":case"linestrips":Qt=pt.count*2;break;case"triangles":Qt=pt.count*3;break;case"polylist":for(let jt=0;jt<pt.count;jt++){const Yt=pt.vcount[jt];switch(Yt){case 3:Qt+=3;break;case 4:Qt+=6;break;default:Qt+=(Yt-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknown primitive type:",pt.type)}Ae.addGroup(it,Qt,yt),it+=Qt,pt.material&<.push(pt.material);for(const jt in hn){const Yt=hn[jt];switch(jt){case"VERTEX":for(const ui in R){const Pn=R[ui];switch(ui){case"POSITION":const is=L.array.length;if(ue(pt,v[Pn],Yt.offset,L.array),L.stride=v[Pn].stride,v.skinWeights&&v.skinIndices&&(ue(pt,v.skinIndices,Yt.offset,$e.array),ue(pt,v.skinWeights,Yt.offset,ht.array)),pt.hasUV===!1&&x.uvsNeedsFix===!0){const $u=(L.array.length-is)/L.stride;for(let ql=0;ql<$u;ql++)de.array.push(0,0)}break;case"NORMAL":ue(pt,v[Pn],Yt.offset,ie.array),ie.stride=v[Pn].stride;break;case"COLOR":ue(pt,v[Pn],Yt.offset,Oe.array),Oe.stride=v[Pn].stride;break;case"TEXCOORD":ue(pt,v[Pn],Yt.offset,de.array),de.stride=v[Pn].stride;break;case"TEXCOORD1":ue(pt,v[Pn],Yt.offset,et.array),de.stride=v[Pn].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',ui)}}break;case"NORMAL":ue(pt,v[Yt.id],Yt.offset,ie.array),ie.stride=v[Yt.id].stride;break;case"COLOR":ue(pt,v[Yt.id],Yt.offset,Oe.array,!0),Oe.stride=v[Yt.id].stride;break;case"TEXCOORD":ue(pt,v[Yt.id],Yt.offset,de.array),de.stride=v[Yt.id].stride;break;case"TEXCOORD1":ue(pt,v[Yt.id],Yt.offset,et.array),et.stride=v[Yt.id].stride;break}}}return L.array.length>0&&Ae.setAttribute("position",new Nt(L.array,L.stride)),ie.array.length>0&&Ae.setAttribute("normal",new Nt(ie.array,ie.stride)),Oe.array.length>0&&Ae.setAttribute("color",new Nt(Oe.array,Oe.stride)),de.array.length>0&&Ae.setAttribute("uv",new Nt(de.array,de.stride)),et.array.length>0&&Ae.setAttribute("uv1",new Nt(et.array,et.stride)),$e.array.length>0&&Ae.setAttribute("skinIndex",new Nt($e.array,$e.stride)),ht.array.length>0&&Ae.setAttribute("skinWeight",new Nt(ht.array,ht.stride)),T.data=Ae,T.type=x[0].type,T.materialKeys=lt,T}function ue(x,v,R,T,L=!1){const ie=x.p,de=x.stride,et=x.vcount;function Oe(Ae){let lt=ie[Ae+R]*ht;const it=lt+ht;for(;lt<it;lt++)T.push($e[lt]);if(L){const yt=T.length-ht-1;cn.setRGB(T[yt+0],T[yt+1],T[yt+2],$t),T[yt+0]=cn.r,T[yt+1]=cn.g,T[yt+2]=cn.b}}const $e=v.array,ht=v.stride;if(x.vcount!==void 0){let Ae=0;for(let lt=0,it=et.length;lt<it;lt++){const yt=et[lt];if(yt===4){const pt=Ae+de*0,hn=Ae+de*1,Qt=Ae+de*2,jt=Ae+de*3;Oe(pt),Oe(hn),Oe(jt),Oe(hn),Oe(Qt),Oe(jt)}else if(yt===3){const pt=Ae+de*0,hn=Ae+de*1,Qt=Ae+de*2;Oe(pt),Oe(hn),Oe(Qt)}else if(yt>4)for(let pt=1,hn=yt-2;pt<=hn;pt++){const Qt=Ae+de*0,jt=Ae+de*pt,Yt=Ae+de*(pt+1);Oe(Qt),Oe(jt),Oe(Yt)}Ae+=de*yt}}else for(let Ae=0,lt=ie.length;Ae<lt;Ae+=de)Oe(Ae)}function ge(x){return _(xt.geometries[x],se)}function be(x){const v={name:x.getAttribute("name")||"",joints:{},links:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"technique_common":Ue(T,v);break}}xt.kinematicsModels[x.getAttribute("id")]=v}function qe(x){return x.build!==void 0?x.build:x}function J(x){return _(xt.kinematicsModels[x],qe)}function Ue(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"joint":v.joints[T.getAttribute("sid")]=wt(T);break;case"link":v.links.push(Wt(T));break}}}function wt(x){let v;for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"prismatic":case"revolute":v=Ut(T);break}}return v}function Ut(x){const v={sid:x.getAttribute("sid"),name:x.getAttribute("name")||"",axis:new I,limits:{min:0,max:0},type:x.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"axis":const L=r(T.textContent);v.axis.fromArray(L);break;case"limits":const ie=T.getElementsByTagName("max")[0],de=T.getElementsByTagName("min")[0];v.limits.max=parseFloat(ie.textContent),v.limits.min=parseFloat(de.textContent);break}}return v.limits.min>=v.limits.max&&(v.static=!0),v.middlePosition=(v.limits.min+v.limits.max)/2,v}function Wt(x){const v={sid:x.getAttribute("sid"),name:x.getAttribute("name")||"",attachments:[],transforms:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"attachment_full":v.attachments.push(Zt(T));break;case"matrix":case"translate":case"rotate":v.transforms.push(ft(T));break}}return v}function Zt(x){const v={joint:x.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"link":v.links.push(Wt(T));break;case"matrix":case"translate":case"rotate":v.transforms.push(ft(T));break}}return v}function ft(x){const v={type:x.nodeName},R=r(x.textContent);switch(v.type){case"matrix":v.obj=new At,v.obj.fromArray(R).transpose();break;case"translate":v.obj=new I,v.obj.fromArray(R);break;case"rotate":v.obj=new I,v.obj.fromArray(R),v.angle=Ki.degToRad(R[3]);break}return v}function Pt(x){const v={name:x.getAttribute("name")||"",rigidBodies:{}};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"rigid_body":v.rigidBodies[T.getAttribute("name")]={},Re(T,v.rigidBodies[T.getAttribute("name")]);break}}xt.physicsModels[x.getAttribute("id")]=v}function Re(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"technique_common":Xt(T,v);break}}}function Xt(x,v){for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"inertia":v.inertia=r(T.textContent);break;case"mass":v.mass=r(T.textContent)[0];break}}}function Ie(x){const v={bindJointAxis:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"bind_joint_axis":v.bindJointAxis.push(Rt(T));break}}xt.kinematicsScenes[o(x.getAttribute("url"))]=v}function Rt(x){const v={target:x.getAttribute("target").split("/").pop()};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType===1)switch(T.nodeName){case"axis":const L=T.getElementsByTagName("param")[0];v.axis=L.textContent;const ie=v.axis.split("inst_").pop().split("axis")[0];v.jointIndex=ie.substring(0,ie.length-1);break}}return v}function Pe(x){return x.build!==void 0?x.build:x}function kt(x){return _(xt.kinematicsScenes[x],Pe)}function Je(){const x=Object.keys(xt.kinematicsModels)[0],v=Object.keys(xt.kinematicsScenes)[0],R=Object.keys(xt.visualScenes)[0];if(x===void 0||v===void 0)return;const T=J(x),L=kt(v),ie=ut(R),de=L.bindJointAxis,et={};for(let ht=0,Ae=de.length;ht<Ae;ht++){const lt=de[ht],it=_e.querySelector('[sid="'+lt.target+'"]');if(it){const yt=it.parentElement;Oe(lt.jointIndex,yt)}}function Oe(ht,Ae){const lt=Ae.getAttribute("name"),it=T.joints[ht];ie.traverse(function(yt){yt.name===lt&&(et[ht]={object:yt,transforms:bt(Ae),joint:it,position:it.zeroPosition})})}const $e=new At;hi={joints:T&&T.joints,getJointValue:function(ht){const Ae=et[ht];if(Ae)return Ae.position;console.warn("THREE.ColladaLoader: Joint "+ht+" doesn't exist.")},setJointValue:function(ht,Ae){const lt=et[ht];if(lt){const it=lt.joint;if(Ae>it.limits.max||Ae<it.limits.min)console.warn("THREE.ColladaLoader: Joint "+ht+" value "+Ae+" outside of limits (min: "+it.limits.min+", max: "+it.limits.max+").");else if(it.static)console.warn("THREE.ColladaLoader: Joint "+ht+" is static.");else{const yt=lt.object,pt=it.axis,hn=lt.transforms;H.identity();for(let Qt=0;Qt<hn.length;Qt++){const jt=hn[Qt];if(jt.sid&&jt.sid.indexOf(ht)!==-1)switch(it.type){case"revolute":H.multiply($e.makeRotationAxis(pt,Ki.degToRad(Ae)));break;case"prismatic":H.multiply($e.makeTranslation(pt.x*Ae,pt.y*Ae,pt.z*Ae));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+it.type);break}else switch(jt.type){case"matrix":H.multiply(jt.obj);break;case"translate":H.multiply($e.makeTranslation(jt.obj.x,jt.obj.y,jt.obj.z));break;case"scale":H.scale(jt.obj);break;case"rotate":H.multiply($e.makeRotationAxis(jt.obj,jt.angle));break}}yt.matrix.copy(H),yt.matrix.decompose(yt.position,yt.quaternion,yt.scale),et[ht].position=Ae}}else console.log("THREE.ColladaLoader: "+ht+" does not exist.")}}}function bt(x){const v=[],R=_e.querySelector('[id="'+x.id+'"]');for(let T=0;T<R.childNodes.length;T++){const L=R.childNodes[T];if(L.nodeType!==1)continue;let ie,de;switch(L.nodeName){case"matrix":ie=r(L.textContent);const et=new At().fromArray(ie).transpose();v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:et});break;case"translate":case"scale":ie=r(L.textContent),de=new I().fromArray(ie),v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:de});break;case"rotate":ie=r(L.textContent),de=new I().fromArray(ie);const Oe=Ki.degToRad(ie[3]);v.push({sid:L.getAttribute("sid"),type:L.nodeName,obj:de,angle:Oe});break}}return v}function w(x){const v=x.getElementsByTagName("node");for(let R=0;R<v.length;R++){const T=v[R];T.hasAttribute("id")===!1&&T.setAttribute("id",l())}}const H=new At,$=new I;function Y(x){const v={name:x.getAttribute("name")||"",type:x.getAttribute("type"),id:x.getAttribute("id"),sid:x.getAttribute("sid"),matrix:new At,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{}};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];if(T.nodeType!==1)continue;let L;switch(T.nodeName){case"node":v.nodes.push(T.getAttribute("id")),Y(T);break;case"instance_camera":v.instanceCameras.push(o(T.getAttribute("url")));break;case"instance_controller":v.instanceControllers.push(j(T));break;case"instance_light":v.instanceLights.push(o(T.getAttribute("url")));break;case"instance_geometry":v.instanceGeometries.push(j(T));break;case"instance_node":v.instanceNodes.push(o(T.getAttribute("url")));break;case"matrix":L=r(T.textContent),v.matrix.multiply(H.fromArray(L).transpose()),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"translate":L=r(T.textContent),$.fromArray(L),v.matrix.multiply(H.makeTranslation($.x,$.y,$.z)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"rotate":L=r(T.textContent);const ie=Ki.degToRad(L[3]);v.matrix.multiply(H.makeRotationAxis($.fromArray(L),ie)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"scale":L=r(T.textContent),v.matrix.scale($.fromArray(L)),v.transforms[T.getAttribute("sid")]=T.nodeName;break;case"extra":break;default:console.log(T)}}return tt(v.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",v.id):xt.nodes[v.id]=v,v}function j(x){const v={id:o(x.getAttribute("url")),materials:{},skeletons:[]};for(let R=0;R<x.childNodes.length;R++){const T=x.childNodes[R];switch(T.nodeName){case"bind_material":const L=T.getElementsByTagName("instance_material");for(let ie=0;ie<L.length;ie++){const de=L[ie],et=de.getAttribute("symbol"),Oe=de.getAttribute("target");v.materials[et]=o(Oe)}break;case"skeleton":v.skeletons.push(o(T.textContent));break}}return v}function pe(x,v){const R=[],T=[];let L,ie,de;for(L=0;L<x.length;L++){const $e=x[L];let ht;if(tt($e))ht=Et($e),Te(ht,v,R);else if(ot($e)){const lt=xt.visualScenes[$e].children;for(let it=0;it<lt.length;it++){const yt=lt[it];if(yt.type==="JOINT"){const pt=Et(yt.id);Te(pt,v,R)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",$e)}for(L=0;L<v.length;L++)for(ie=0;ie<R.length;ie++)if(de=R[ie],de.bone.name===v[L].name){T[L]=de,de.processed=!0;break}for(L=0;L<R.length;L++)de=R[L],de.processed===!1&&(T.push(de),de.processed=!0);const et=[],Oe=[];for(L=0;L<T.length;L++)de=T[L],et.push(de.bone),Oe.push(de.boneInverse);return new Ul(et,Oe)}function Te(x,v,R){x.traverse(function(T){if(T.isBone===!0){let L;for(let ie=0;ie<v.length;ie++){const de=v[ie];if(de.name===T.name){L=de.boneInverse;break}}L===void 0&&(L=new At),R.push({bone:T,boneInverse:L,processed:!1})}})}function Ge(x){const v=[],R=x.matrix,T=x.nodes,L=x.type,ie=x.instanceCameras,de=x.instanceControllers,et=x.instanceLights,Oe=x.instanceGeometries,$e=x.instanceNodes;for(let Ae=0,lt=T.length;Ae<lt;Ae++)v.push(Et(T[Ae]));for(let Ae=0,lt=ie.length;Ae<lt;Ae++){const it=Ye(ie[Ae]);it!==null&&v.push(it.clone())}for(let Ae=0,lt=de.length;Ae<lt;Ae++){const it=de[Ae],yt=ae(it.id),pt=ge(yt.id),hn=ct(pt,it.materials),Qt=it.skeletons,jt=yt.skin.joints,Yt=pe(Qt,jt);for(let ui=0,Pn=hn.length;ui<Pn;ui++){const is=hn[ui];is.isSkinnedMesh&&(is.bind(Yt,yt.skin.bindMatrix),is.normalizeSkinWeights()),v.push(is)}}for(let Ae=0,lt=et.length;Ae<lt;Ae++){const it=q(et[Ae]);it!==null&&v.push(it.clone())}for(let Ae=0,lt=Oe.length;Ae<lt;Ae++){const it=Oe[Ae],yt=ge(it.id),pt=ct(yt,it.materials);for(let hn=0,Qt=pt.length;hn<Qt;hn++)v.push(pt[hn])}for(let Ae=0,lt=$e.length;Ae<lt;Ae++)v.push(Et($e[Ae]).clone());let ht;if(T.length===0&&v.length===1)ht=v[0];else{ht=L==="JOINT"?new pu:new Kn;for(let Ae=0;Ae<v.length;Ae++)ht.add(v[Ae])}return ht.name=L==="JOINT"?x.sid:x.name,ht.matrix.copy(R),ht.matrix.decompose(ht.position,ht.quaternion,ht.scale),ht}const Fe=new zi({name:Qn.DEFAULT_MATERIAL_NAME,color:16711935});function nt(x,v){const R=[];for(let T=0,L=x.length;T<L;T++){const ie=v[x[T]];ie===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",x[T]),R.push(Fe)):R.push(he(ie))}return R}function ct(x,v){const R=[];for(const T in x){const L=x[T],ie=nt(L.materialKeys,v);if(ie.length===0&&(T==="lines"||T==="linestrips"?ie.push(new Si):ie.push(new Dn)),T==="lines"||T==="linestrips")for(let $e=0,ht=ie.length;$e<ht;$e++){const Ae=ie[$e];if(Ae.isMeshPhongMaterial===!0||Ae.isMeshLambertMaterial===!0){const lt=new Si;lt.color.copy(Ae.color),lt.opacity=Ae.opacity,lt.transparent=Ae.transparent,ie[$e]=lt}}const de=L.data.attributes.skinIndex!==void 0,et=ie.length===1?ie[0]:ie;let Oe;switch(T){case"lines":Oe=new ga(L.data,et);break;case"linestrips":Oe=new ba(L.data,et);break;case"triangles":case"polylist":de?Oe=new Hf(L.data,et):Oe=new Jt(L.data,et);break}R.push(Oe)}return R}function tt(x){return xt.nodes[x]!==void 0}function Et(x){return _(xt.nodes[x],Ge)}function Dt(x){const v={name:x.getAttribute("name"),children:[]};w(x);const R=n(x,"node");for(let T=0;T<R.length;T++)v.children.push(Y(R[T]));xt.visualScenes[x.getAttribute("id")]=v}function ve(x){const v=new Kn;v.name=x.name;const R=x.children;for(let T=0;T<R.length;T++){const L=R[T];v.add(Et(L.id))}return v}function ot(x){return xt.visualScenes[x]!==void 0}function ut(x){return _(xt.visualScenes[x],ve)}function je(x){const v=n(x,"instance_visual_scene")[0];return ut(o(v.getAttribute("url")))}function ln(){const x=xt.clips;if(c(x)===!0){if(c(xt.animations)===!1){const v=[];for(const R in xt.animations){const T=M(R);for(let L=0,ie=T.length;L<ie;L++)v.push(T[L])}un.push(new Bc("default",-1,v))}}else for(const v in x)un.push(Z(v))}function zt(x){let v="";const R=[x];for(;R.length;){const T=R.shift();T.nodeType===Node.TEXT_NODE?v+=T.textContent:(v+=`
|
|
4205
|
+
`,R.push(...T.childNodes))}return v.trim()}if(e.length===0)return{scene:new Pl};const Ke=new DOMParser().parseFromString(e,"application/xml"),_e=n(Ke,"COLLADA")[0],qt=Ke.getElementsByTagName("parsererror")[0];if(qt!==void 0){const x=n(qt,"div")[0];let v;return x?v=x.textContent:v=zt(qt),console.error(`THREE.ColladaLoader: Failed to parse collada file.
|
|
4206
|
+
`,v),null}const _n=_e.getAttribute("version");console.debug("THREE.ColladaLoader: File version",_n);const It=h(n(_e,"asset")[0]),sn=new Bl(this.manager);sn.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);let an;Fh&&(an=new Fh(this.manager),an.setPath(this.resourcePath||t));const cn=new _t,un=[];let hi={},kn=0;const xt={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{}};f(_e,"library_animations","animation",g),f(_e,"library_animation_clips","animation_clip",G),f(_e,"library_controllers","controller",me),f(_e,"library_images","image",le),f(_e,"library_effects","effect",xe),f(_e,"library_materials","material",ee),f(_e,"library_cameras","camera",rt),f(_e,"library_lights","light",vt),f(_e,"library_geometries","geometry",Xe),f(_e,"library_nodes","node",Y),f(_e,"library_visual_scenes","visual_scene",Dt),f(_e,"library_kinematics_models","kinematics_model",be),f(_e,"library_physics_models","physics_model",Pt),f(_e,"scene","instance_kinematics_scene",Ie),m(xt.animations,b),m(xt.clips,re),m(xt.controllers,Ve),m(xt.images,ce),m(xt.effects,F),m(xt.materials,ye),m(xt.cameras,Me),m(xt.lights,St),m(xt.geometries,se),m(xt.visualScenes,ve),ln(),Je();const ki=je(n(_e,"scene")[0]);return ki.animations=un,It.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),ki.rotation.set(-Math.PI/2,0,0)),ki.scale.multiplyScalar(It.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),un},kinematics:hi,library:xt,scene:ki}}}const Oh=new I,Zg=new Ln,Jr=new At,Di=new At,Kr=new zn,Zr=new I(1,1,1),Qr=new I;class Ca extends nn{constructor(...e){super(...e),this.urdfNode=null,this.urdfName=""}copy(e,t){return super.copy(e,t),this.urdfNode=e.urdfNode,this.urdfName=e.urdfName,this}}class Qg extends Ca{constructor(...e){super(...e),this.isURDFCollider=!0,this.type="URDFCollider"}}class e3 extends Ca{constructor(...e){super(...e),this.isURDFVisual=!0,this.type="URDFVisual"}}class Bu extends Ca{constructor(...e){super(...e),this.isURDFLink=!0,this.type="URDFLink"}}class ku extends Ca{get jointType(){return this._jointType}set jointType(e){if(this.jointType!==e)switch(this._jointType=e,this.matrixWorldNeedsUpdate=!0,e){case"fixed":this.jointValue=[];break;case"continuous":case"revolute":case"prismatic":this.jointValue=new Array(1).fill(0);break;case"planar":this.jointValue=new Array(3).fill(0),this.axis=new I(0,0,1);break;case"floating":this.jointValue=new Array(6).fill(0);break}}get angle(){return this.jointValue[0]}constructor(...e){super(...e),this.isURDFJoint=!0,this.type="URDFJoint",this.jointValue=null,this.jointType="fixed",this.axis=new I(1,0,0),this.limit={lower:0,upper:0},this.ignoreLimits=!1,this.origPosition=null,this.origQuaternion=null,this.mimicJoints=[]}copy(e,t){return super.copy(e,t),this.jointType=e.jointType,this.axis=e.axis.clone(),this.limit.lower=e.limit.lower,this.limit.upper=e.limit.upper,this.ignoreLimits=!1,this.jointValue=[...e.jointValue],this.origPosition=e.origPosition?e.origPosition.clone():null,this.origQuaternion=e.origQuaternion?e.origQuaternion.clone():null,this.mimicJoints=[...e.mimicJoints],this}setJointValue(...e){e=e.map(n=>n===null?null:parseFloat(n)),(!this.origPosition||!this.origQuaternion)&&(this.origPosition=this.position.clone(),this.origQuaternion=this.quaternion.clone());let t=!1;switch(this.mimicJoints.forEach(n=>{t=n.updateFromMimickedJoint(...e)||t}),this.jointType){case"fixed":return t;case"continuous":case"revolute":{let n=e[0];return n==null||n===this.jointValue[0]?t:(!this.ignoreLimits&&this.jointType==="revolute"&&(n=Math.min(this.limit.upper,n),n=Math.max(this.limit.lower,n)),this.quaternion.setFromAxisAngle(this.axis,n).premultiply(this.origQuaternion),this.jointValue[0]!==n?(this.jointValue[0]=n,this.matrixWorldNeedsUpdate=!0,!0):t)}case"prismatic":{let n=e[0];return n==null||n===this.jointValue[0]?t:(this.ignoreLimits||(n=Math.min(this.limit.upper,n),n=Math.max(this.limit.lower,n)),this.position.copy(this.origPosition),Oh.copy(this.axis).applyEuler(this.rotation),this.position.addScaledVector(Oh,n),this.jointValue[0]!==n?(this.jointValue[0]=n,this.matrixWorldNeedsUpdate=!0,!0):t)}case"floating":return this.jointValue.every((n,i)=>e[i]===n||e[i]===null)?t:(this.jointValue[0]=e[0]!==null?e[0]:this.jointValue[0],this.jointValue[1]=e[1]!==null?e[1]:this.jointValue[1],this.jointValue[2]=e[2]!==null?e[2]:this.jointValue[2],this.jointValue[3]=e[3]!==null?e[3]:this.jointValue[3],this.jointValue[4]=e[4]!==null?e[4]:this.jointValue[4],this.jointValue[5]=e[5]!==null?e[5]:this.jointValue[5],Di.compose(this.origPosition,this.origQuaternion,Zr),Kr.setFromEuler(Zg.set(this.jointValue[3],this.jointValue[4],this.jointValue[5],"XYZ")),Qr.set(this.jointValue[0],this.jointValue[1],this.jointValue[2]),Jr.compose(Qr,Kr,Zr),Di.premultiply(Jr),this.position.setFromMatrixPosition(Di),this.rotation.setFromRotationMatrix(Di),this.matrixWorldNeedsUpdate=!0,!0);case"planar":return this.jointValue.every((n,i)=>e[i]===n||e[i]===null)?t:(this.jointValue[0]=e[0]!==null?e[0]:this.jointValue[0],this.jointValue[1]=e[1]!==null?e[1]:this.jointValue[1],this.jointValue[2]=e[2]!==null?e[2]:this.jointValue[2],Di.compose(this.origPosition,this.origQuaternion,Zr),Kr.setFromAxisAngle(this.axis,this.jointValue[2]),Qr.set(this.jointValue[0],this.jointValue[1],0),Jr.compose(Qr,Kr,Zr),Di.premultiply(Jr),this.position.setFromMatrixPosition(Di),this.rotation.setFromRotationMatrix(Di),this.matrixWorldNeedsUpdate=!0,!0)}return t}}class zh extends ku{constructor(...e){super(...e),this.type="URDFMimicJoint",this.mimicJoint=null,this.offset=0,this.multiplier=1}updateFromMimickedJoint(...e){const t=e.map(n=>n*this.multiplier+this.offset);return super.setJointValue(...t)}copy(e,t){return super.copy(e,t),this.mimicJoint=e.mimicJoint,this.offset=e.offset,this.multiplier=e.multiplier,this}}class t3 extends Bu{constructor(...e){super(...e),this.isURDFRobot=!0,this.urdfNode=null,this.urdfRobotNode=null,this.robotName=null,this.links=null,this.joints=null,this.colliders=null,this.visual=null,this.frames=null}copy(e,t){super.copy(e,t),this.urdfRobotNode=e.urdfRobotNode,this.robotName=e.robotName,this.links={},this.joints={},this.colliders={},this.visual={},this.traverse(n=>{n.isURDFJoint&&n.urdfName in e.joints&&(this.joints[n.urdfName]=n),n.isURDFLink&&n.urdfName in e.links&&(this.links[n.urdfName]=n),n.isURDFCollider&&n.urdfName in e.colliders&&(this.colliders[n.urdfName]=n),n.isURDFVisual&&n.urdfName in e.visual&&(this.visual[n.urdfName]=n)});for(const n in this.joints)this.joints[n].mimicJoints=this.joints[n].mimicJoints.map(i=>this.joints[i.name]);return this.frames={...this.colliders,...this.visual,...this.links,...this.joints},this}getFrame(e){return this.frames[e]}setJointValue(e,...t){const n=this.joints[e];return n?n.setJointValue(...t):!1}setJointValues(e){let t=!1;for(const n in e){const i=e[n];Array.isArray(i)?t=this.setJointValue(n,...i)||t:t=this.setJointValue(n,i)||t}return t}}const yo=new zn,Bh=new Ln;function bs(s){return s?s.trim().split(/\s+/g).map(e=>parseFloat(e)):[0,0,0]}function kh(s,e,t=!1){t||s.rotation.set(0,0,0),Bh.set(e[0],e[1],e[2],"ZYX"),yo.setFromEuler(Bh),yo.multiply(s.quaternion),s.quaternion.copy(yo)}class Vu{constructor(e){this.manager=e||zl,this.loadMeshCb=this.defaultMeshLoader.bind(this),this.parseVisual=!0,this.parseCollision=!1,this.packages="",this.workingPath="",this.fetchOptions={}}loadAsync(e){return new Promise((t,n)=>{this.load(e,t,null,n)})}load(e,t,n,i){const r=this.manager,a=Vl.extractUrlBase(e),o=this.manager.resolveURL(e);r.itemStart(o),fetch(o,this.fetchOptions).then(l=>{if(l.ok)return n&&n(null),l.text();throw new Error(`URDFLoader: Failed to load url '${o}' with error code ${l.status} : ${l.statusText}.`)}).then(l=>{const c=this.parse(l,this.workingPath||a);t(c),r.itemEnd(o)}).catch(l=>{i?i(l):console.error("URDFLoader: Error loading file.",l),r.itemError(o),r.itemEnd(o)})}parse(e,t=this.workingPath){const n=this.packages,i=this.loadMeshCb,r=this.parseVisual,a=this.parseCollision,o=this.manager,l={},c={},h={};function d(E){if(!/^package:\/\//.test(E))return t?t+E:E;const[b,M]=E.replace(/^package:\/\//,"").split(/\/(.+)/);if(typeof n=="string")return n.endsWith(b)?n+"/"+M:n+"/"+b+"/"+M;if(n instanceof Function)return n(b)+"/"+M;if(typeof n=="object")return b in n?n[b]+"/"+M:(console.error(`URDFLoader : ${b} not found in provided package list.`),null)}function u(E){let b;E instanceof Document?b=[...E.children]:E instanceof Element?b=[E]:b=[...new DOMParser().parseFromString(E,"text/xml").children];const M=b.filter(U=>U.nodeName==="robot").pop();return f(M)}function f(E){const b=[...E.children],M=b.filter(N=>N.nodeName.toLowerCase()==="link"),U=b.filter(N=>N.nodeName.toLowerCase()==="joint"),C=b.filter(N=>N.nodeName.toLowerCase()==="material"),P=new t3;P.robotName=E.getAttribute("name"),P.urdfRobotNode=E,C.forEach(N=>{const W=N.getAttribute("name");h[W]=g(N)});const D={},S={};M.forEach(N=>{const W=N.getAttribute("name"),X=E.querySelector(`child[link="${W}"]`)===null;l[W]=_(N,D,S,X?P:null)}),U.forEach(N=>{const W=N.getAttribute("name");c[W]=m(N)}),P.joints=c,P.links=l,P.colliders=S,P.visual=D;const y=Object.values(c);return y.forEach(N=>{N instanceof zh&&c[N.mimicJoint].mimicJoints.push(N)}),y.forEach(N=>{const W=new Set,X=Q=>{if(W.has(Q))throw new Error("URDFLoader: Detected an infinite loop of mimic joints.");W.add(Q),Q.mimicJoints.forEach(ne=>{X(ne)})};X(N)}),P.frames={...S,...D,...l,...c},P}function m(E){const b=[...E.children],M=E.getAttribute("type");let U;const C=b.find(W=>W.nodeName.toLowerCase()==="mimic");C?(U=new zh,U.mimicJoint=C.getAttribute("joint"),U.multiplier=parseFloat(C.getAttribute("multiplier")||1),U.offset=parseFloat(C.getAttribute("offset")||0)):U=new ku,U.urdfNode=E,U.name=E.getAttribute("name"),U.urdfName=U.name,U.jointType=M;let P=null,D=null,S=[0,0,0],y=[0,0,0];b.forEach(W=>{const X=W.nodeName.toLowerCase();X==="origin"?(S=bs(W.getAttribute("xyz")),y=bs(W.getAttribute("rpy"))):X==="child"?D=l[W.getAttribute("link")]:X==="parent"?P=l[W.getAttribute("link")]:X==="limit"&&(U.limit.lower=parseFloat(W.getAttribute("lower")||U.limit.lower),U.limit.upper=parseFloat(W.getAttribute("upper")||U.limit.upper))}),P.add(U),U.add(D),kh(U,y),U.position.set(S[0],S[1],S[2]);const N=b.filter(W=>W.nodeName.toLowerCase()==="axis")[0];if(N){const W=N.getAttribute("xyz").split(/\s+/g).map(X=>parseFloat(X));U.axis=new I(W[0],W[1],W[2]),U.axis.normalize()}return U}function _(E,b,M,U=null){U===null&&(U=new Bu);const C=[...E.children];return U.name=E.getAttribute("name"),U.urdfName=U.name,U.urdfNode=E,r&&C.filter(D=>D.nodeName.toLowerCase()==="visual").forEach(D=>{const S=p(D,h);if(U.add(S),D.hasAttribute("name")){const y=D.getAttribute("name");S.name=y,S.urdfName=y,b[y]=S}}),a&&C.filter(D=>D.nodeName.toLowerCase()==="collision").forEach(D=>{const S=p(D);if(U.add(S),D.hasAttribute("name")){const y=D.getAttribute("name");S.name=y,S.urdfName=y,M[y]=S}}),U}function g(E){const b=[...E.children],M=new Dn;return M.name=E.getAttribute("name")||"",b.forEach(U=>{const C=U.nodeName.toLowerCase();if(C==="color"){const P=U.getAttribute("rgba").split(/\s/g).map(D=>parseFloat(D));M.color.setRGB(P[0],P[1],P[2]),M.opacity=P[3],M.transparent=P[3]<1,M.depthWrite=!M.transparent}else if(C==="texture"){const P=U.getAttribute("filename");if(P){const D=new Bl(o),S=d(P);M.map=D.load(S),M.map.colorSpace=$t}}}),M}function p(E,b={}){const M=E.nodeName.toLowerCase()==="collision",U=[...E.children];let C=null;const P=U.filter(S=>S.nodeName.toLowerCase()==="material")[0];if(P){const S=P.getAttribute("name");S&&S in b?C=b[S]:C=g(P)}else C=new Dn;const D=M?new Qg:new e3;return D.urdfNode=E,U.forEach(S=>{const y=S.nodeName.toLowerCase();if(y==="geometry"){const N=S.children[0].nodeName.toLowerCase();if(N==="mesh"){const W=S.children[0].getAttribute("filename"),X=d(W);if(X!==null){const Q=S.children[0].getAttribute("scale");if(Q){const ne=bs(Q);D.scale.set(ne[0],ne[1],ne[2])}i(X,o,(ne,G)=>{G?console.error("URDFLoader: Error loading mesh.",G):ne&&(ne instanceof Jt&&(ne.material=C),ne.position.set(0,0,0),ne.quaternion.identity(),D.add(ne))})}}else if(N==="box"){const W=new Jt;W.geometry=new Bi(1,1,1),W.material=C;const X=bs(S.children[0].getAttribute("size"));W.scale.set(X[0],X[1],X[2]),D.add(W)}else if(N==="sphere"){const W=new Jt;W.geometry=new Ea(1,30,30),W.material=C;const X=parseFloat(S.children[0].getAttribute("radius"))||0;W.scale.set(X,X,X),D.add(W)}else if(N==="cylinder"){const W=new Jt;W.geometry=new Il(1,1,1,30),W.material=C;const X=parseFloat(S.children[0].getAttribute("radius"))||0,Q=parseFloat(S.children[0].getAttribute("length"))||0;W.scale.set(X,Q,X),W.rotation.set(Math.PI/2,0,0),D.add(W)}}else if(y==="origin"){const N=bs(S.getAttribute("xyz")),W=bs(S.getAttribute("rpy"));D.position.set(N[0],N[1],N[2]),D.rotation.set(0,0,0),kh(D,W)}}),D}return u(e)}defaultMeshLoader(e,t,n){/\.stl$/i.test(e)?new nr(t).load(e,r=>{const a=new Jt(r,new Dn);n(a)}):/\.dae$/i.test(e)?new Kg(t).load(e,r=>n(r.scene)):console.warn(`URDFLoader: Could not load model at ${e}.
|
|
4207
|
+
No loader available`)}}const n3=Gh.useModelComp(De.pinia),{systemPath:Vh}=De.storeToRefs(n3),ea=V.ref(),Hh=new Map;function i3(s,e,t,n,i){const r=async u=>{try{const f=await si.downloadAvatarApi({url:u});if(f.status!==200)throw new Error(`下载失败: ${f.status}`);return f.data}catch(f){throw console.error("addModelFromUrl失败:",f),f}},a=u=>new Promise((f,m)=>{const _=new FileReader;_.onload=g=>{try{const p=g.target.result,b=new ha().parse(p);b.preload(),f(b)}catch(p){m(p)}},_.onerror=()=>{m(new Error("MTL文件读取失败"))},_.readAsText(u)}),o=async u=>{const f={materials:{},create:function(m){return this.materials[m]?this.materials[m]:(console.warn(`Material '${m}' not found, using default material`),new Dn({color:8947848,side:wn}))},getAsArray:function(){const m=[];for(const _ in this.materials)m.push(this.materials[_]);return m},preload:function(){for(const m in this.materials)this.materials[m].map&&(this.materials[m].map.needsUpdate=!0)}};for(const m of u){const _=await a(m);Object.assign(f.materials,_.materials)}return f.preload(),f},l=async(u,f=[])=>new Promise((m,_)=>{const g=new FileReader;g.onload=async p=>{try{const E=p.target.result;let b=null;f&&f.length>0&&(f.length===1?b=await a(f[0]):b=await o(f));const M=new ca;b&&M.setMaterials(b);const U=M.parse(E);b||U.traverse(C=>{C.isMesh&&(C.material=new Dn({color:8947848,side:wn}))}),m(U)}catch(E){_(E)}},g.onerror=()=>{_(new Error("OBJ文件读取失败"))},g.readAsText(u)}),c=async u=>{var f;try{t.value=!0;const{scene:m}=s();if(!m)throw new Error("Scene not initialized");i();const _=[];for(let g=0;g<u.length;g++){const p=u[g];n.value=`正在加载模型 ${g+1}/${u.length}...`;const E=await r(p.objUrl),b=((f=p.objUrl)==null?void 0:f.split("/").pop())||`model_${g}.obj`,M=new File([E],b,{type:E.type});let U=[];if(p.mtlUrls){const P=Array.isArray(p.mtlUrls)?p.mtlUrls:[p.mtlUrls];for(let D=0;D<P.length;D++){const S=P[D],y=await r(S),N=(S==null?void 0:S.split("/").pop())||`material_${g}_${D}.mtl`,W=new File([y],N,{type:y.type});U.push(W)}}const C=await l(M,U);m.add(C),e.value.push(C),_.push(C)}return t.value=!1,_}catch(m){throw console.error("加载模型失败:",m),t.value=!1,m}},h=async(u,f,m=[],_=[])=>{let g;const p=u.toLowerCase();switch(p){case".txt":case".cpt":case".obj":const E=await f.text();if(p===".txt"||p===".cpt"){const xe=/^(?!.*\bf\b)[^\n]*?(-?\d*\.?\d+)[^\n]*?(-?\d*\.?\d+)[^\n]*?(-?\d*\.?\d+)[^\n]*?$/gm,st=[...E.matchAll(xe)].map(O=>({x:parseFloat(O[1]),y:parseFloat(O[2]),z:parseFloat(O[3])})),Tt=new on,Mt=st.flatMap(O=>[O.x,O.y,O.z]);if(Tt.setAttribute("position",new Nt(Mt,3)),p===".txt"){const O=new Ii({color:"#5B5C99",size:1,sizeAttenuation:!1});g=new Cs(Tt,O)}else if(p===".cpt"){const O=new Si({color:"#5B5C99",linewidth:100});g=new ba(Tt,O)}}else if(p===".obj"){const xe=new ca;if(m&&m.length>0){const we=new ha;for(const st of m){const Tt=await st.text(),Mt=we.parse(Tt);Mt.preload(),xe.setMaterials(Mt);break}}g=xe.parse(E),(!m||m.length===0)&&g.traverse(we=>{we.isMesh&&(we.material=new Dn({color:"#B3B3D4"})),we instanceof Jt&&(we.material.side=wn)})}break;case".stl":const b=await f.arrayBuffer(),U=new nr().parse(b),C=new Dn({color:"#B3B3D4",side:wn});g=new Jt(U,C);break;case".nc":const P=["Mach_B_Axis_0.STL","Mach_C_Axis_0.STL","Mach_X_Axis_0.STL","Mach_Y_Axis_0.STL","Mach_Z_Axis_0.STL","Mach_Spindle_0.STL"],D={"Mach_Y_Axis_0.STL":"rgb(128,118,152)","Mach_B_Axis_0.STL":"rgb(204,143,89)","Mach_C_Axis_0.STL":"rgb(145,245,251)","Mach_X_Axis_0.STL":"rgb(125,158,192)","Mach_Z_Axis_0.STL":"rgb(248,228,118)","Mach_Spindle_0.STL":"rgb(145,145,145)"},S=new Kn,y=P.map(xe=>new Promise((we,st)=>{new nr().load(Vh.value===""?`/model/${xe}`:`${Vh.value}\\${xe}`,Mt=>{const O=new Dn({color:D[xe]||"#B3B3D4",side:wn}),Gt=new Jt(Mt,O);we(Gt)},void 0,st)}));try{(await Promise.all(y)).forEach(we=>S.add(we)),g=S}catch(xe){throw console.error("加载NC文件对应的STL文件失败:",xe),new Error("无法加载.NC文件对应的STL文件")}break;case".pcd":const N=new zu,W=new Kn;try{const xe=await De.axios.get("http://139.196.154.85:20026/chfs/shared/重大专项/重大专项文件/target.pcd",{responseType:"blob",headers:{"Content-Type":"application/json"}}),we=new Blob([xe.data],{type:"application/octet-stream;charset=UTF-8"}),st=await De.axios.get("http://139.196.154.85:20026/chfs/shared/重大专项/重大专项文件/final.pcd",{responseType:"blob",headers:{"Content-Type":"application/json"}}),Tt=new Blob([st.data],{type:"application/octet-stream;charset=UTF-8"}),Mt=await new Promise((Gt,Lt)=>{const Ct=URL.createObjectURL(we);N.load(Ct,He=>{const mt=new Float32Array(He.geometry.attributes.position.count*3);for(let We=0;We<He.geometry.attributes.position.count;We++)mt[We*3]=1,mt[We*3+1]=0,mt[We*3+2]=0;He.geometry.setAttribute("color",new dn(mt,3)),He.material.vertexColors=!0,He.scale.set(.3,.3,.3),URL.revokeObjectURL(Ct),Gt(He)},void 0,Lt)}),O=await new Promise((Gt,Lt)=>{const Ct=URL.createObjectURL(Tt);N.load(Ct,He=>{const mt=new Float32Array(He.geometry.attributes.position.count*3);for(let We=0;We<He.geometry.attributes.position.count;We++)mt[We*3]=0,mt[We*3+1]=1,mt[We*3+2]=0;He.geometry.setAttribute("color",new dn(mt,3)),He.material.vertexColors=!0,He.scale.set(.3,.3,.3),URL.revokeObjectURL(Ct),Gt(He)},void 0,Lt)});W.add(Mt),W.add(O),g=W}catch(xe){throw console.error("PCD文件加载失败:",xe),new Error("无法加载PCD文件")}break;case".urdf":const X=URL.createObjectURL(f),Q=new Vu,ne="http://139.196.154.85:20026/chfs/shared/机器人/urdf/SmallBender_R-2000iC-165F/meshes",G={maxConcurrentLoads:4,enableCache:!0,enableLOD:!0,simplifyGeometry:!0,shareMaterials:!0,enableInstancing:!0},re=new Map,Z=new Map,me=new Map,Ee=async xe=>{if(re.has(xe))return console.log(`从缓存加载: ${xe}`),re.get(xe);try{const we=await De.axios.get(`${ne}/${xe}`,{responseType:"blob",headers:{"Content-Type":"application/json"},timeout:6e5}),st=new Blob([we.data],{type:"application/octet-stream;charset=UTF-8"});return G.enableCache&&re.set(xe,st),st}catch(we){throw console.error(`加载文件失败: ${xe}`,we),new Error(`无法加载文件: ${xe}`)}},Ce=(xe="default")=>{if(Z.has(xe))return Z.get(xe);const we=new Dn({color:12303291,shininess:30,transparent:!1,alphaTest:.1,side:Xn});return Z.set(xe,we),we},Ne=xe=>{try{xe.isBufferGeometry&&xe.mergeVertices&&xe.mergeVertices(),xe.computeVertexNormals&&xe.computeVertexNormals(),xe.computeBoundingSphere&&xe.computeBoundingSphere(),xe.deleteAttribute&&xe.deleteAttribute("uv2")}catch(we){console.warn("几何体优化失败,使用原始几何体:",we)}return xe},Ve=async(xe,we,st)=>{const Tt=`stl_${we}`;if(me.has(Tt)){const Lt=me.get(Tt);return new Jt(Lt,Ce())}const Mt=await xe.arrayBuffer();let Gt=new nr(st).parse(Mt);return Gt=Ne(Gt),me.set(Tt,Gt),new Jt(Gt,Ce())},K=async(xe,we,st)=>{const Tt=`obj_${we}`;if(re.has(Tt))return re.get(Tt).clone();const Mt=await xe.text(),O=new ca(st),Gt=we.replace(".obj",".mtl");try{const He=await(await Ee(Gt)).text(),We=new ha(st).parse(He);We.preload(),O.setMaterials(We)}catch{console.warn(`MTL文件加载失败,使用默认材质: ${Gt}`)}const Lt=O.parse(Mt);return Lt.traverse(Ct=>{Ct.isMesh&&(Ct.geometry=Ne(Ct.geometry),Ct.castShadow=!0,Ct.receiveShadow=!0,Ct.renderOrder=1)}),re.set(Tt,Lt),Lt},ae=(xe,we)=>{const st=new fu;if(st.addLevel(xe,0),xe.geometry){const Tt=xe.geometry.clone(),Mt=new Jt(Tt,xe.material);st.addLevel(Mt,50)}return st};let le=0,ce=0;const Le=[];Q.loadMeshCb=async(xe,we,st,Tt,Mt)=>{const O=xe.split("/").pop(),Gt=st||(()=>{});le++;const Lt=new Promise(async(Ct,He)=>{try{const mt=await Ee(O);if(!mt||mt.size===0)throw new Error(`文件为空: ${O}`);const We=O.split(".").pop().toLowerCase();let dt;switch(We){case"stl":dt=await Ve(mt,O,we);break;case"obj":dt=await K(mt,O,we);break;default:throw new Error(`不支持的文件格式: ${We}`)}G.enableLOD&&dt.isMesh&&(dt=ae(dt,O)),Gt(dt),ce++,Tt&&Tt({loaded:ce,total:le,progress:ce/le}),Ct(dt)}catch(mt){console.error(`mesh文件加载失败: ${O}`,mt);const We=new Kn;Gt(We),Ct(We);const dt=new Bi(.1,.1,.1),rn=new yu({color:16711680,wireframe:!0});return new Jt(dt,rn)}});Le.push(Lt)};try{if(!X){ea.value=void 0;break}if(g=await Q.loadAsync(X),console.log(`URDF文件加载完成,等待${le}个mesh文件加载...`),Le.length>0)try{await Promise.allSettled(Le),console.log(`所有mesh文件处理完成,成功加载: ${ce}/${le}`)}catch(st){console.warn("部分mesh文件加载失败,但继续显示模型",st)}g.traverse(st=>{st.isMesh&&(st.castShadow=!0,st.receiveShadow=!0,st.renderOrder=1,st.material&&(st.material.needsUpdate=!0))}),console.time("计算包围盒");const xe=new ei;xe.expandByObject(g);const we=`urdf_${Date.now()}`;g.userData.boundingBox=xe.clone(),g.userData.modelId=we,Hh.set(we,{box:xe.clone(),center:xe.getCenter(new I),size:xe.getSize(new I),maxSize:Math.max(...xe.getSize(new I).toArray())}),ea.value=g,console.log("URDF模型加载完成并优化")}catch(xe){console.error("URDF加载失败:",xe),ea.value=void 0}finally{X&&URL.revokeObjectURL(X)}break;default:throw new Error(`不支持的文件格式: ${u}`)}return g};return{addModelsFromUrls:c,loadModelByDefaultPath:async u=>{console.log(u);try{t.value=!0,n.value="正在加载模型...";const{scene:f}=s();if(!f)throw new Error("Scene not initialized");i(),await new Promise(_=>setTimeout(_,100));const m=[];for(let _=0;_<u.length;_++){const g=u[_],p=await h(g.suffix,g.blob,g.mtlBlobs||[],g.meshFiles||[]);p&&(f.add(p),e.value.push(p),m.push(p))}return t.value=!1,n.value="",m}catch(f){throw console.error("加载模型失败:",f),t.value=!1,n.value="",f}},urdfModel:ea,modelBoundingBoxes:Hh}}window._iconfont_svg_string_4634042='<svg><symbol id="icon-lookAround" viewBox="0 0 1041 1024"><path d="M520.685026 798.355937c-10.788594 0-21.577187-2.790872-31.241101-8.372615l-291.583615-168.36871A62.482203 62.482203 0 0 1 166.619208 567.505024V230.850913c0-22.368629 11.913273-42.987756 31.241102-54.109588l291.583615-168.36871a62.482203 62.482203 0 0 1 62.482203 0l291.583615 168.36871c19.327828 11.121832 31.241102 31.740959 31.241101 54.109588v336.654111a62.482203 62.482203 0 0 1-31.241101 54.109588l-291.583615 168.36871a62.857096 62.857096 0 0 1-31.241102 8.372615zM291.583615 531.39031l229.101411 132.295652 229.101412-132.295652v-264.507993l-229.101412-132.295651L291.583615 266.923972v264.466338z m520.685026 36.114714h0.416548-0.416548z" fill="#aaaaaa" ></path><path d="M520.685026 461.660172c-10.788594 0-21.577187-2.790872-31.241101-8.372616l-291.583615-168.327055a62.482203 62.482203 0 0 1 62.482203-108.219176L520.685026 326.990196l260.342513-150.248871a62.482203 62.482203 0 1 1 62.482204 108.219176l-291.583615 168.327055a62.857096 62.857096 0 0 1-31.241102 8.372616z" fill="#aaaaaa" ></path><path d="M520.685026 798.355937a62.482203 62.482203 0 0 1-62.482203-62.482203V399.177969a62.482203 62.482203 0 1 1 124.964406 0v336.695765a62.482203 62.482203 0 0 1-62.482203 62.482203z" fill="#aaaaaa" ></path><path d="M520.685026 1003.172599c-53.276492 0-520.685026-5.248505-520.685026-187.446609 0-62.982061 54.776065-111.259976 162.870276-143.584103 33.073913-9.622259 67.855673 8.914128 77.769516 41.98804s-8.872473 67.897327-41.946386 77.769516c-30.324696 9.080747-49.194321 17.619981-60.649392 24.11813 46.32014 26.242525 178.657446 62.19062 382.641012 62.19062s336.320872-35.948094 382.641012-62.19062c-11.455071-6.498149-30.324696-15.037384-60.649392-24.11813a62.482203 62.482203 0 1 1 35.82313-119.757556c108.094211 32.324126 162.870276 80.643697 162.870276 143.584103 0 182.198104-467.408534 187.446609-520.685026 187.446609z m398.886385-175.366717h0.416548-0.416548z" fill="#72B02D" ></path></symbol><symbol id="icon-xuanzhuan" viewBox="0 0 1024 1024"><path d="M378.963454 724.443778l91.182641 163.473426c6.246088 11.212239 2.252687 25.39393-9.010749 31.691216l-163.473427 91.18264c-18.123894 10.085896-39.422029-6.758062-33.739113-26.673866l72.290786-254.707264c5.682916-19.967002 32.663967-23.090045 42.749862-4.966152z" fill="#FC794B" ></path><path d="M414.64807 903.9932c-1.228739 0-2.40628-0.051197-3.635018-0.204789C169.002752 879.367232 0.000003 771.443028 0.000003 641.452727c0-52.221389 27.032248-102.19009 78.127293-144.581571a35.827969 35.827969 0 0 1 50.480676 4.710165 35.827969 35.827969 0 0 1-4.710164 50.480676C100.090998 571.824209 71.727616 603.310634 71.727616 641.452727c0 88.929954 148.984551 171.050647 346.504275 191.068847 19.711014 1.9967 34.046298 19.557422 32.049597 39.268436a35.879166 35.879166 0 0 1-35.633418 32.20319zM608.430381 904.095595c-18.175091 0-33.79031-13.772111-35.633418-32.254387-1.945503-19.711014 12.389781-37.271736 32.100795-39.217239 198.134093-19.813409 347.528224-101.985301 347.528223-191.171242 0-23.550822-10.649068-47.050447-31.58882-69.935703-13.362532-14.59127-12.389781-37.271736 2.20149-50.634268 14.59127-13.362532 37.271736-12.389781 50.634268 2.20149 32.971151 35.9918 50.429479 76.898555 50.429478 118.368481 0 130.297485-169.463527 238.221689-412.088195 262.489276-1.177541 0.102395-2.40628 0.153592-3.583821 0.153592z" fill="#FC794B" ></path><path d="M846.703267 184.413179l-325.308534 184.464377L196.137396 184.413179 521.394733 0z" fill="#BEC5CB" ></path><path d="M521.394733 737.703915l325.308534-184.41318V184.413179l-325.308534 184.464377z" fill="#808487" ></path><path d="M521.394733 737.703915L196.137396 553.290735V184.413179l325.257337 184.464377z" fill="#9CA3A9" ></path></symbol><symbol id="icon-clipping" viewBox="0 0 1024 1024"><path d="M341.930667 201.770667l353.706666 204.245333v408.448l-353.706666-204.245333z" fill="#4A80FF" fill-opacity="0.15" ></path><path d="M320.853333 165.248l396.117334 228.608v457.173333l-395.946667-228.608z m353.749334 252.970667L362.837333 238.336v359.722667l311.466667 179.882666z" fill="#72B02D" ></path><path d="M544.384 746.453333l-211.669333-211.669333 18.688-18.688 211.669333 211.669333z" fill="#72B02D" ></path><path d="M693.717333 530.261333l-266.453333-266.325333 20.906667-20.906667 266.325333 266.453334z" fill="#72B02D" ></path><path d="M688.853333 621.098667l-366.933333-366.933334 24.448-24.704 366.933333 366.933334z" fill="#72B02D" ></path><path d="M689.664 713.856L321.578667 345.770667l24.618666-24.618667 368.085334 368.128z" fill="#72B02D" ></path><path d="M683.605333 799.317333l-355.712-355.712 24.234667-24.234666 355.712 355.712z" fill="#72B02D" ></path><path d="M537.770667 944.938667h-51.2v-418.602667l-362.666667-209.28 25.6-44.330667 362.666667 209.066667 362.666666-209.066667 25.6 44.330667-362.666666 209.066667z" fill="#AAAAAA" ></path><path d="M512.170667 53.461333a31.146667 31.146667 0 0 1 15.488 4.266667l370.090666 213.632a31.232 31.232 0 0 1 15.317334 26.794667v426.922666a31.274667 31.274667 0 0 1-15.317334 26.837334l-369.834666 213.333333a31.488 31.488 0 0 1-31.061334 0l-369.834666-213.333333a31.146667 31.146667 0 0 1-15.914667-26.837334V298.069333a31.146667 31.146667 0 0 1 15.573333-27.008l369.792-213.333333a30.976 30.976 0 0 1 15.701334-4.266667z m349.866666 256l-349.866666-201.642666-349.866667 201.856v403.84l349.866667 201.813333 349.866666-201.898667z" fill="#AAAAAA" ></path></symbol><symbol id="icon-viewReset" viewBox="0 0 1024 1024"><path d="M643.2 515.2c-89.6-67.2-179.2-60.8-268.8 0-32 22.4-67.2 57.6-105.6 89.6 38.4 32 70.4 70.4 108.8 96 28.8 19.2 60.8 32 96 38.4 118.4 19.2 188.8-57.6 268.8-137.6-35.2-28.8-60.8-64-99.2-86.4zM508.8 704c-51.2 0-96-41.6-96-99.2s41.6-105.6 96-105.6 96 41.6 96 99.2c0 64-38.4 105.6-96 105.6z" fill="#AAAAAA" ></path><path d="M515.2 544c-3.2 41.6 12.8 60.8 51.2 51.2 0 32-19.2 57.6-51.2 57.6s-57.6-22.4-51.2-57.6c-6.4-32 16-51.2 51.2-51.2" fill="#AAAAAA" ></path><path d="M652.8 3.2c9.6-3.2 19.2-3.2 28.8 0 9.6 3.2 12.8 12.8 12.8 22.4v108.8c70.4 28.8 131.2 70.4 179.2 128 80 89.6 118.4 214.4 108.8 336-9.6 124.8-70.4 236.8-166.4 313.6-96 80-224 118.4-345.6 108.8-124.8-9.6-243.2-67.2-323.2-160S32 649.6 41.6 524.8c9.6-118.4 70.4-233.6 160-307.2 22.4-19.2 60.8-19.2 80 3.2 19.2 22.4 19.2 57.6-3.2 80-70.4 57.6-115.2 140.8-124.8 233.6s22.4 185.6 80 249.6c60.8 70.4 147.2 115.2 243.2 124.8 96 9.6 188.8-19.2 259.2-80s118.4-140.8 124.8-236.8c9.6-89.6-22.4-185.6-80-249.6-28.8-28.8-57.6-57.6-89.6-76.8v89.6c0 9.6-3.2 19.2-12.8 22.4-9.6 3.2-19.2 3.2-28.8 0l-227.2-160c-3.2-3.2-9.6-12.8-9.6-19.2 0-9.6 3.2-12.8 9.6-19.2L652.8 3.2z" fill="#72B02D" ></path></symbol><symbol id="icon-donghuafangzhen" viewBox="0 0 1024 1024"><path d="M868.864 228.864c-19.968 0-38.912 7.68-53.248 20.992l-291.328-170.496c-7.168-5.12-16.896-5.12-24.064 0L208.896 248.832c-14.336-12.8-33.28-20.48-53.76-20.48-43.52 0-79.872 36.864-79.872 80.896 0 33.792 21.504 63.488 53.248 74.24v318.976c0 9.216 4.608 17.408 12.288 22.016L437.248 896c11.776 30.72 41.472 51.712 74.752 52.224 33.28-0.512 62.464-20.992 74.752-52.224l296.448-171.52c7.68-4.608 12.288-13.312 12.288-22.016V386.048c31.744-11.776 53.248-42.496 53.248-76.288 0-44.032-36.352-80.896-79.872-80.896zM155.136 339.456c-16.896 0-29.184-12.288-29.184-29.696v-2.048c0.512-15.36 13.312-27.648 29.184-27.136h2.048c15.36 0.512 27.648 13.824 27.136 29.696 0 15.872-12.8 28.672-29.184 29.184zM512 897.024c-16.896 0-29.184-12.288-29.184-29.696 0-14.848 12.288-29.696 29.184-29.696h2.048c15.36 0.512 27.648 13.824 27.136 29.696 0 14.848-14.848 29.696-29.184 29.696z m74.752-58.368c-11.776-30.208-40.96-51.712-74.752-51.712-27.136 0-52.224 14.336-67.072 37.376l-3.072 1.024c-4.608 2.048-8.704 5.632-9.728 10.752l-252.416-146.944V384.512C212.48 373.76 234.496 343.04 235.52 308.736l3.072 0.512h2.048c3.584 0 7.168-1.536 10.24-3.584 7.168-5.632 8.192-16.384 2.048-23.552L512 130.56l278.528 162.816c-7.68 36.864 11.264 74.24 45.568 90.624 0.512 5.632 3.584 10.24 8.704 13.312v291.328l-258.048 150.016z m282.112-499.2c-16.896 0-29.184-12.288-29.184-29.696v-2.048c0.512-15.36 13.312-27.648 29.184-27.136h2.048c15.36 0.512 27.648 13.824 27.136 29.696v2.56c-1.024 14.848-13.824 27.136-29.184 26.624z" fill="#AAAAAA" ></path><path d="M422.912 724.992c-3.072-8.704-12.288-12.8-20.992-9.728-8.704 3.072-12.8 12.8-9.728 21.504l19.968 54.784c2.56 6.656 8.192 10.752 15.36 10.752 2.048 0 3.584-0.512 5.12-1.024 8.704-3.072 12.8-12.8 9.728-21.504l-19.456-54.784zM706.048 507.392c0-107.52-86.016-195.072-192-196.096-2.048-1.536-4.608-2.56-7.68-3.072l-24.064-3.072c-8.192-1.024-15.872 4.096-17.92 11.776-5.632 1.536-11.776 3.584-16.896 5.632 0.512-1.536 1.024-3.072 1.536-5.12 1.024-9.216-5.12-17.408-14.336-18.432l-48.128-5.632c-5.632-1.024-11.776 1.536-15.36 6.144-3.584 4.608-4.608 11.264-2.048 16.896 2.56 5.632 7.68 9.216 13.312 9.728l44.032 5.12C384 353.28 351.232 388.608 333.312 432.64c-25.088 60.928-17.92 130.048 18.432 184.832-1.024 3.584-1.024 7.168 0.512 10.24l19.968 54.784c1.024 3.072 3.072 5.632 6.144 7.68 7.168 5.12 17.408 3.072 22.528-4.096 3.072-4.608 3.584-10.24 2.048-15.36l-0.512-1.536c53.76 37.888 123.392 45.568 184.32 19.968 46.08-19.456 82.944-55.808 102.912-101.376l12.8-14.336c6.144-6.656 5.632-17.408-0.512-23.04 2.56-14.336 4.096-28.672 4.096-43.008z m-193.536 156.16C427.52 663.552 358.4 593.92 358.4 507.392c0-86.016 69.12-156.16 154.112-156.16s154.112 69.632 154.112 156.16c0 86.016-69.12 156.16-154.112 156.16z" fill="#72B02D" ></path><path d="M765.44 478.72c-6.144-5.632-15.872-5.632-22.016 0l-32.256 35.84c-4.096 4.608-5.632 11.776-3.072 17.92 2.56 6.144 8.192 9.728 14.848 9.728 4.608 0 8.704-2.048 11.776-5.12l32.256-35.84c5.12-7.168 4.608-16.896-1.536-22.528zM823.296 401.92c-5.632-1.024-11.776 0.512-15.872 5.12l-32.256 35.84c-4.608 4.608-5.632 11.776-3.072 17.92 1.024 2.048 2.56 4.096 4.096 5.632 6.656 6.144 16.896 5.632 23.04-1.536l32.256-35.84c4.096-4.096 5.632-10.752 3.584-16.384-1.024-5.632-5.632-9.728-11.776-10.752zM336.384 321.024c8.704 0 15.872-6.656 16.384-15.36 0.512-8.704-5.632-16.384-14.336-17.408l-48.128-5.632c-5.632-1.024-11.776 1.536-15.36 6.144-3.584 4.608-4.096 11.264-2.048 16.896 2.56 5.632 7.68 9.216 13.312 9.728l48.128 5.632h2.048z" fill="#72B02D" ></path></symbol><symbol id="icon-guanjianjiexi" viewBox="0 0 1024 1024"><path d="M298.496 200.704v83.456h-39.936v177.664h137.728V389.12h47.104v245.76h-47.104v-79.872H211.456c-10.752-3.584-54.272-14.336-54.272-57.856V280.064h-32.768V200.704h174.08m47.104-47.104H77.824v177.152h36.352v169.984c0 68.608 61.44 97.792 97.792 104.96H353.28v79.872h141.312V342.016H349.184v72.192h-43.52v-87.04h39.936V153.6zM627.712 389.12v79.872H812.544c10.752 3.584 54.272 14.336 54.272 54.272V740.352h32.768v83.456h-173.568v-83.456h39.936v-177.664h-137.728V634.88h-47.104V389.12h46.592m47.104-47.104h-141.312v340.48h141.312v-72.192h43.52v83.456h-39.936V870.4h267.776v-177.152h-36.352v-169.984c0-68.608-61.44-97.792-97.792-104.96H670.72V342.528h4.096z" fill="#AAAAAA" ></path></symbol><symbol id="icon-gongyishengcheng" viewBox="0 0 1024 1024"><path d="M889.344 391.68h29.696v-43.008h-208.896l1.024 45.056 28.16 3.072v20.992c55.808 5.632 108.032 28.672 150.016 66.56-0.512 0 0-92.672 0-92.672z m-366.592 102.912c13.312-13.312 27.648-24.576 43.008-34.816-2.048-70.144-5.632-153.088-8.704-179.712-5.632-48.64-34.816-204.288-226.816-202.752-191.488 1.536-223.744 164.864-230.912 207.36s-11.776 197.632-11.776 197.632h-24.576v43.008l208.896 1.024v-40.96h-24.064V316.928S245.76 230.912 335.36 231.424C424.448 232.448 415.232 327.68 414.72 327.68v313.856c4.608 0 6.144 77.824 50.176 144.896-13.312-32.256-20.48-67.072-20.48-102.912 0-71.168 27.648-138.24 78.336-188.928z" fill="#AAAAAA" ></path><path d="M75.264 601.6h31.232v281.088s41.984 29.184 141.824 0v-274.944l29.184-2.56v-44.032H75.264v40.448zM906.24 263.168h-29.184l1.024-188.416s-53.76-27.648-144.384 0l1.024 192-31.744 1.024V307.2h203.776l-0.512-44.032z" fill="#AAAAAA" ></path><path d="M934.912 627.712c-9.216-4.608-20.48-2.048-29.184 6.656l-21.504 21.504c-9.216 9.216-20.992 13.824-33.792 13.824s-24.576-5.12-33.792-13.824c-9.216-9.216-13.824-20.992-13.824-33.792s5.12-24.576 13.824-33.792l21.504-21.504c8.704-8.704 11.264-19.968 6.656-29.184-5.632-10.752-18.432-15.36-34.304-13.312-25.6 4.096-48.64 15.36-66.56 33.792-27.136 27.136-39.424 65.536-33.792 103.936l-178.176 178.176c-13.312 13.312-20.992 31.232-20.992 50.176s7.168 36.864 20.992 50.176c13.312 13.312 31.232 20.992 50.176 20.992 18.944 0 36.864-7.168 50.176-20.992l178.176-178.176c37.888 6.144 76.288-6.656 103.936-33.792 17.92-17.92 29.696-41.472 33.792-66.56 2.048-15.872-2.56-28.672-13.312-34.304z m-9.728 30.72c-3.072 20.48-12.8 38.912-27.136 53.76-23.04 23.04-56.32 33.28-89.088 26.624l-6.144-1.536-186.88 186.88c-8.704 9.216-20.992 13.824-33.792 13.824s-24.576-5.12-33.792-13.824c-9.216-9.216-13.824-20.992-13.824-33.792s5.12-24.576 13.824-33.792l186.88-186.88-1.536-6.144c-6.656-32.256 3.072-65.536 26.624-89.088 14.848-14.848 33.28-24.064 53.76-27.136 1.536-0.512 3.072-0.512 4.608-0.512 2.56 0 4.608 0.512 5.12 1.024-0.512 0.512-1.024 1.536-2.048 2.56l-21.504 21.504c-13.312 13.312-20.992 31.232-20.992 50.176s7.168 36.864 20.992 50.176c13.312 13.312 31.232 20.992 50.176 20.992 18.944 0 36.864-7.168 50.176-20.992l21.504-21.504c1.024-1.024 2.048-1.536 2.56-2.048 0.512 1.536 1.024 4.608 0.512 9.728z" fill="#72B02D" ></path><path d="M560.64 870.912c-12.8 12.8-12.8 33.28 0 45.568 6.144 6.144 14.336 9.216 23.04 9.216s16.896-3.072 23.04-9.216c6.144-6.144 9.728-14.336 9.728-23.04 0-8.704-3.584-16.896-9.728-23.04-12.8-12.288-33.792-12.288-46.08 0.512z m28.672 28.672c-3.072 3.072-8.704 3.072-11.776 0-3.072-3.072-3.072-8.704 0-11.776 1.536-1.536 3.584-2.56 6.144-2.56 2.048 0 4.096 1.024 6.144 2.56 1.536 1.536 2.56 3.584 2.56 6.144-0.512 2.048-1.536 4.096-3.072 5.632z m225.28-107.008c-4.096-4.096-10.24-4.096-14.336 0l-43.52 43.52c-4.096 4.096-4.096 10.24 0 14.336l102.4 102.4c15.872 15.872 41.984 15.872 57.856 0 15.872-15.872 15.872-41.984 0-57.856l-102.4-102.4z m-237.056-150.528l70.656 70.656 28.672-28.672-70.656-70.656-15.872-30.208-50.688-36.352-28.672 28.672 36.352 50.688 30.208 15.872z" fill="#72B02D" ></path></symbol><symbol id="icon-mojupipei" viewBox="0 0 1024 1024"><path d="M880.64 117.248c32.768 0 58.88 23.04 64.512 54.784l1.024 7.68v663.04c0.512 31.744-22.528 58.368-53.76 62.464l-7.68 1.024H151.552c-34.816 0-66.048-22.528-72.192-53.248l-1.024-6.656V183.296c0-31.744 27.648-59.904 61.952-65.024l7.168-1.024h142.848c24.064 0 44.032 16.896 48.64 39.936l1.024 6.656V406.528c0 7.68 5.12 14.848 12.288 16.896l3.584 0.512H424.96c13.312 0 25.088 9.216 29.184 22.528 6.144 23.552 33.792 46.08 58.368 46.08 22.528 0 48.128-19.456 55.808-39.424l2.048-5.632c2.048-10.24 9.216-18.432 19.456-21.504l5.12-1.024 3.072-0.512h71.168c6.144 0 11.776-3.584 14.336-9.728l1.024-3.584V164.864c0-23.04 15.872-41.984 37.888-46.592l6.144-1.024H880.64zM273.92 184.32H151.552l-2.048 0.512-2.048 0.512-2.56 1.536-1.536 649.728 3.072 1.536 3.072 1.024h1.024l328.192 3.072 2.048-286.72-2.048-0.512-10.24-3.584c-24.576-10.24-45.568-27.136-60.928-49.152l-6.144-9.216 1.024-1.536H349.184c-37.888-4.096-68.608-33.792-74.24-71.68l-1.024-8.192v-4.096V184.32z m476.16-3.072V409.6l-0.512 8.704c-3.584 36.864-32.256 66.56-68.608 72.192l-8.192 1.024h-4.096l-45.568-1.536-6.144 9.728c-14.848 22.528-36.352 40.448-61.44 51.2l-10.752 4.096-3.072 284.16h337.408v-655.36l-129.024-2.56z" fill="#AAAAAA" ></path></symbol><symbol id="icon-buchangshezhi" viewBox="0 0 1024 1024"><path d="M792.576 75.264h-686.08c-17.408 0-31.232 13.824-31.232 31.232v686.08c0 17.408 13.824 31.232 31.232 31.232h436.736c17.408 0 31.232-13.824 31.232-31.232s-13.824-31.232-31.232-31.232H137.728V262.656h624.128v280.576c0 17.408 13.824 31.232 31.232 31.232s31.232-13.824 31.232-31.232V106.496c-0.512-17.408-14.336-31.232-31.744-31.232z" fill="#AAAAAA" ></path><path d="M792.576 948.736c-17.408 0-31.232-13.824-31.232-31.232v-93.696h-93.696c-17.408 0-31.232-13.824-31.232-31.232 0-17.408 13.824-31.232 31.232-31.232h93.696v-93.696c0-17.408 13.824-31.232 31.232-31.232 17.408 0 31.232 13.824 31.232 31.232v93.696h93.696c17.408 0 31.232 13.824 31.232 31.232 0 17.408-13.824 31.232-31.232 31.232h-93.696v93.696c0 17.408-13.824 31.232-31.232 31.232z" fill="#72B02D" ></path><path d="M372.224 518.144l-110.08 110.08c-20.992 20.992-20.992 55.296 0 76.288s55.296 20.992 76.288 0l110.08-110.08c-16.896-6.144-32.768-15.872-46.592-29.696-13.824-13.312-23.552-29.696-29.696-46.592z m-57.856 162.304c-7.68 7.68-20.48 7.68-28.672 0-7.68-7.68-7.68-20.48 0-28.672 7.68-7.68 20.48-7.68 28.672 0 7.68 8.192 7.68 20.992 0 28.672z m340.48-292.864L592.384 450.56c-20.992 20.992-55.296 20.992-76.288 0s-20.992-55.296 0-76.288l62.976-62.976c-51.712-8.704-116.224 14.848-151.552 50.176-49.152 49.152-49.152 128.512 0 177.664s129.024 49.152 177.664 0c35.328-35.328 58.368-99.84 49.664-151.552z" fill="#AAAAAA" ></path></symbol><symbol id="icon-shuchujiagongchengxu" viewBox="0 0 1024 1024"><path d="M876.544 473.6v374.272c0 16.384-13.312 29.696-29.696 29.696h-522.24c-16.384 0-29.696-13.312-29.696-29.696V503.296c0-16.384 13.312-29.696 29.696-29.696h551.936m40.96-70.656H253.952c-16.384 0-29.696 13.312-29.696 29.696v486.4c0 16.384 13.312 29.696 29.696 29.696h663.552c16.384 0 29.696-13.312 29.696-29.696v-486.4c0-16.384-13.312-29.696-29.696-29.696z" fill="#AAAAAA" ></path><path d="M489.984 211.968H814.08l-41.984-41.984c-13.824-13.824-13.824-36.352 0-50.176 13.824-13.824 36.352-13.824 50.176 0L947.712 245.76l-0.512 0.512 0.512 0.512-125.952 125.952c-13.824 13.824-36.352 13.824-50.176 0-13.824-13.824-13.824-36.352 0-50.176l38.912-38.912H489.472c-19.456 0-35.328-15.872-35.328-35.328 0.512-20.48 16.384-36.352 35.84-36.352z" fill="#72B02D" ></path><path d="M531.456 717.824c0-11.776-7.68-22.016-18.944-25.6l-55.808-16.896-14.848-4.608 14.848-4.608 55.808-16.896c11.264-3.584 18.944-13.824 18.944-25.6v-2.048c0-18.432-17.92-31.232-35.328-25.088L363.52 641.024c-10.752 3.584-17.92 13.824-17.92 25.088v8.192c0 11.264 7.168 21.504 17.92 25.088l132.608 45.568c17.408 6.144 35.328-7.168 35.328-25.088v-2.048z m123.392-96.768v2.048c0 11.776 7.68 22.016 18.944 25.6l56.32 16.896 14.848 4.608-14.848 4.608-56.32 16.896c-11.264 3.584-18.944 13.824-18.944 25.6v2.56c0 18.432 17.92 31.232 35.328 25.088l132.608-45.568c10.752-3.584 17.92-13.824 17.92-25.088v-8.192c0-11.264-7.168-21.504-17.92-25.088l-132.608-45.568c-17.408-6.144-35.328 7.168-35.328 25.6z m-54.784-64l-70.144 248.32c-4.608 16.896 8.192 33.792 25.6 33.792 11.776 0 22.528-8.192 25.6-19.456l70.144-248.32c4.608-16.896-8.192-33.792-25.6-33.792-11.776 0-22.016 8.192-25.6 19.456zM147.456 814.08V173.056c0-14.848 11.776-26.624 26.624-26.624h463.872c19.456 0 35.328-15.872 35.328-35.328 0-19.456-15.872-35.328-35.328-35.328H107.008c-16.896 0-30.72 13.824-30.72 30.72v748.032c0 16.896 13.824 30.72 30.72 30.72h40.448c19.456 0 35.328-15.872 35.328-35.328 0.512-19.968-15.36-35.84-35.328-35.84z" fill="#AAAAAA" ></path></symbol><symbol id="icon-guanjiekongzhi" viewBox="0 0 1024 1024"><path d="M648.192 377.344h-71.68c-18.432 0-33.792-14.848-33.792-33.792H366.592c12.288-30.72 25.088-80.896 0-134.656H542.72c0-18.432 15.36-33.792 33.792-33.792h67.584c1.536 0 2.56 0 4.096 0.512L719.36 87.04c10.752-13.312 29.184-16.384 44.032-7.68l168.96 100.864c15.872 9.728 20.992 30.208 11.776 46.08-9.728 15.872-30.208 20.992-46.592 11.264l-143.872-85.504L677.888 245.76v61.44l75.776 93.696 143.872-85.504c15.872-9.728 36.864-4.608 46.592 11.776 9.728 15.872 4.608 36.352-11.264 46.08h-0.512l-168.96 100.864c-14.336 8.704-33.28 5.12-44.032-7.68l-71.168-89.088zM319.488 780.8L102.912 415.744c76.8 69.632 185.344 48.64 231.424-13.312l222.72 378.368H711.68c18.432 0 33.792 14.848 33.792 33.792v100.864c0 18.432-15.36 33.792-33.792 33.792H170.496c-18.432 0-33.792-14.848-33.792-33.792v-100.864c0-18.432 15.36-33.792 33.792-33.792h148.992z" fill="#AAAAAA" ></path><path d="M204.288 148.48C133.12 148.48 75.264 205.824 75.264 276.48S133.12 404.48 204.288 404.48c71.168 0 129.024-57.344 129.024-128S275.456 148.48 204.288 148.48z m0 202.752c-41.472 0-74.752-33.28-74.752-74.752 0-40.96 33.792-74.24 74.752-74.24C245.76 202.24 279.04 235.52 279.04 276.48c0 41.472-33.792 75.264-74.752 74.752z" fill="#72B02D" ></path></symbol><symbol id="icon-jiegoushu" viewBox="0 0 1024 1024"><path d="M233.984 472.064h317.44c0-44.032 35.328-79.36 79.36-79.36h238.08c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-238.08c-44.032 0-79.36-35.328-79.36-79.36h-317.44v238.08h317.44c0-44.032 35.328-79.36 79.36-79.36h238.08c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-238.08c-44.032 0-79.36-35.328-79.36-79.36h-317.44c-44.032 0-79.36-35.328-79.36-79.36V233.984h-39.936c-22.016 0-39.936-17.92-39.936-39.936V115.2c0-22.016 17.92-39.936 39.936-39.936h158.72c22.016 0 39.936 17.92 39.936 39.936V194.56c0 22.016-17.92 39.936-39.936 39.936h-39.936v237.568z" fill="#AAAAAA" ></path><path d="M551.936 75.264h317.44c44.032 0 79.36 35.328 79.36 79.36v79.36c0 44.032-35.328 79.36-79.36 79.36h-317.44c-44.032 0-79.36-35.328-79.36-79.36V154.624c-0.512-44.032 35.328-79.36 79.36-79.36z" fill="#72B02D" ></path></symbol><symbol id="icon-kuaitui" viewBox="0 0 1024 1024"><path d="M512 148.992c199.68 0 361.984 162.304 361.984 361.984S711.68 872.448 512 872.448s-361.984-162.304-361.984-361.984S312.32 148.992 512 148.992m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M670.72 456.192v109.056l-75.264-54.784L670.72 456.192m25.6-102.912c-10.24 0-20.992 3.072-30.208 10.24l-144.896 105.472c-28.672 20.48-28.672 62.976 0 83.968l144.896 105.472c9.216 6.656 19.968 10.24 30.208 10.24 27.136 0 52.224-21.504 52.224-51.712V405.504c0-30.72-25.088-52.224-52.224-52.224z" fill="#72B02D" ></path><path d="M499.712 456.192v109.056L424.96 510.976l74.752-54.784m26.112-102.912c-10.24 0-20.992 3.072-30.208 10.24L350.208 468.992c-28.672 20.48-28.672 62.976 0 83.968l144.896 105.472c9.216 6.656 19.968 10.24 30.208 10.24 27.136 0 52.224-21.504 52.224-51.712V405.504c0-30.72-25.088-52.224-51.712-52.224z" fill="#72B02D" ></path><path d="M314.368 381.44c-21.504 0-38.912 17.408-38.912 38.912v181.248c0 21.504 17.408 38.912 38.912 38.912s38.912-17.408 38.912-38.912V420.352c0-21.504-17.408-38.912-38.912-38.912z" fill="#72B02D" ></path></symbol><symbol id="icon-bofang" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M491.008 445.952l115.712 66.048-115.712 66.048V445.952m-23.552-87.04c-24.576 0-46.592 19.456-46.592 46.592v212.48c0 27.136 22.528 46.592 46.592 46.592 7.68 0 15.36-2.048 23.04-6.144l185.856-106.496c31.232-17.92 31.232-62.976 0-80.896L490.496 365.056c-7.168-4.096-15.36-6.144-23.04-6.144z" fill="#72B02D" ></path></symbol><symbol id="icon-kuaijin" viewBox="0 0 1024 1024"><path d="M515.584 151.04c199.168 0 360.96 161.792 360.96 360.96s-161.792 360.96-360.96 360.96-360.96-161.792-360.96-360.96 161.792-360.96 360.96-360.96m0-74.752c-240.64 0-435.712 195.072-435.712 435.712s195.072 435.712 435.712 435.712 435.712-195.072 435.712-435.712-195.072-435.712-435.712-435.712z" fill="#AAAAAA" ></path><path d="M358.912 458.24L433.152 512l-74.24 53.76v-107.52m-25.088-101.376c-26.624 0-51.2 20.992-51.2 51.2v207.872c0 30.208 24.576 51.2 51.2 51.2 10.24 0 20.48-3.072 29.696-9.728l142.848-103.936c28.16-20.48 28.16-61.952 0-82.432L363.52 366.592c-9.216-6.656-19.456-9.728-29.696-9.728z" fill="#72B02D" ></path><path d="M527.36 458.24l74.24 53.76-74.24 53.76v-107.52m-25.088-101.376c-26.624 0-51.2 20.992-51.2 51.2v207.872c0 30.208 24.576 51.2 51.2 51.2 10.24 0 20.48-3.072 29.696-9.728l142.848-103.936c28.16-20.48 28.16-61.952 0-82.432l-142.848-103.936c-9.216-7.168-19.968-10.24-29.696-10.24z" fill="#72B02D" ></path><path d="M710.144 384.512c-20.992 0-38.4 17.408-38.4 38.4v178.688c0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4V422.912c0-21.504-17.408-38.4-38.4-38.4z" fill="#72B02D" ></path></symbol><symbol id="icon-zanting" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M416.768 353.28c-22.016 0-39.936 17.92-39.936 39.936v238.08c0 22.016 17.92 39.936 39.936 39.936s39.936-17.92 39.936-39.936V392.704c-0.512-21.504-17.92-39.424-39.936-39.424z m190.464 0c-22.016 0-39.936 17.92-39.936 39.936v238.08c0 22.016 17.92 39.936 39.936 39.936s39.936-17.92 39.936-39.936V392.704c0-21.504-17.92-39.424-39.936-39.424z" fill="#72B02D" ></path></symbol><symbol id="icon-zhongzhi" viewBox="0 0 1024 1024"><path d="M512 150.016c199.68 0 361.984 162.304 361.984 361.984S711.68 873.984 512 873.984 150.016 711.68 150.016 512 312.32 150.016 512 150.016m0-74.752c-241.152 0-436.736 195.584-436.736 436.736s195.584 436.736 436.736 436.736 436.736-195.584 436.736-436.736-195.584-436.736-436.736-436.736z" fill="#AAAAAA" ></path><path d="M580.096 421.376c12.288 0 22.528 10.24 22.528 22.528v136.192c0 12.288-10.24 22.528-22.528 22.528H443.904c-12.288 0-22.528-10.24-22.528-22.528V443.904c0-12.288 10.24-22.528 22.528-22.528h136.192m0-68.096H443.904C393.728 353.28 353.28 393.728 353.28 443.904v136.192c0 50.176 40.448 90.624 90.624 90.624h136.192c50.176 0 90.624-40.448 90.624-90.624V443.904c0-50.176-40.448-90.624-90.624-90.624z" fill="#72B02D" ></path></symbol><symbol id="icon-suoxiao" viewBox="0 0 1024 1024"><path d="M491.008 463.36c32.256 0 58.88-26.112 58.88-58.88s-26.112-58.88-58.88-58.88H285.696c-32.256 0-58.88 26.112-58.88 58.88s26.112 58.88 58.88 58.88h205.312z" fill="#72B02D" ></path><path d="M810.496 720.384l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 143.36-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848 13.312 0 26.112-5.12 36.352-14.848 19.968-19.968 19.968-52.736 0-72.704z m-431.104-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-97.28 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M811.008 106.496h-109.056V209.92h109.056c29.696 0 53.76 24.064 53.76 53.76v81.408H967.68v-81.92c0-86.016-70.144-156.672-156.672-156.672zM864.768 791.552c0 29.696-24.064 53.76-53.76 53.76h-109.056v102.912h109.056c86.528 0 156.672-70.144 156.672-156.672v-81.92h-102.912v81.92z m-690.176 0v-81.92H71.68v81.92c0 86.528 70.144 156.672 156.672 156.672h109.056v-102.912H228.352c-29.696 0-53.76-24.064-53.76-53.76z" fill="#AAAAAA" ></path></symbol><symbol id="icon-fangda" viewBox="0 0 1024 1024"><path d="M488.96 333.824h-47.104V286.72c0-34.816-28.16-62.976-62.976-62.976-34.816 0-62.976 28.16-62.976 62.976v47.104h-47.104c-34.816 0-62.976 28.16-62.976 62.976s28.16 62.976 62.976 62.976h47.104V506.88c0 34.816 28.16 62.976 62.976 62.976 34.816 0 62.976-28.16 62.976-62.976v-47.104h47.104c34.816 0 62.976-28.16 62.976-62.976 0-34.304-28.16-62.976-62.976-62.976z" fill="#72B02D" ></path><path d="M810.496 720.384l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 143.36-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848s26.112-5.12 36.352-14.848c19.968-19.968 19.968-52.736 0-72.704z m-431.104-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-97.28 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M811.008 106.496h-109.056V209.92h109.056c29.696 0 53.76 24.064 53.76 53.76v81.408H967.68v-81.92c0-86.016-70.144-156.672-156.672-156.672zM864.768 791.552c0 29.696-24.064 53.76-53.76 53.76h-109.056v102.912h109.056c86.528 0 156.672-70.144 156.672-156.672v-81.92h-102.912v81.92z m-690.176 0v-81.92H71.68v81.92c0 86.528 70.144 156.672 156.672 156.672h109.056v-102.912H228.352c-29.696 0-53.76-24.064-53.76-53.76z" fill="#AAAAAA" ></path></symbol><symbol id="icon-fangdazhichuangkou" viewBox="0 0 1024 1024"><path d="M949.248 858.624l-158.208-158.208c29.184-48.128 46.08-104.96 46.08-165.376 0-175.616-142.848-318.976-318.976-318.976s-318.976 142.848-318.976 318.976 142.848 318.976 318.976 318.976c78.336 0 150.016-28.16 205.824-75.264l152.576 152.576c10.24 10.24 23.04 14.848 36.352 14.848s26.112-5.12 36.352-14.848c19.968-19.968 19.968-52.736 0-72.704z m-431.616-107.52c-119.296 0-216.064-96.768-216.064-216.064 0-119.296 96.768-216.064 216.064-216.064s216.064 96.768 216.064 216.064c0 119.296-96.768 216.064-216.064 216.064z" fill="#72B02D" ></path><path d="M216.576 919.04h109.056v-102.912H216.576c-29.696 0-53.76-24.064-53.76-53.76V233.984c0-29.696 24.064-53.76 53.76-53.76H798.72c29.696 0 53.76 24.064 53.76 53.76v81.92h102.912v-81.92c0-86.528-70.144-156.672-156.672-156.672H216.576c-86.528 0-156.672 70.144-156.672 156.672v528.384c0 86.528 70.144 156.672 156.672 156.672z" fill="#AAAAAA" ></path></symbol><symbol id="icon-shiyingpingmu" viewBox="0 0 1024 1024"><path d="M876.032 75.264H147.968c-39.936 0-72.704 32.768-72.704 72.704v728.064c0 39.936 32.768 72.704 72.704 72.704h728.064c39.936 0 72.704-32.768 72.704-72.704V147.968c0-39.936-32.768-72.704-72.704-72.704z m0 764.416c0 22.016-14.336 36.352-36.352 36.352H184.32c-22.016 0-36.352-14.336-36.352-36.352V184.32c0-22.016 14.336-36.352 36.352-36.352h655.36c22.016 0 36.352 14.336 36.352 36.352v655.36z" fill="#AAAAAA" ></path><path d="M329.728 184.32H220.672c-3.584 0-10.752 0-14.336 3.584-7.168 3.584-14.336 10.752-18.432 18.432-3.584 3.584-3.584 10.752-3.584 14.336v109.056c0 22.016 14.336 36.352 36.352 36.352s36.352-14.336 36.352-36.352v-22.016l47.104 47.104c7.168 7.168 14.336 10.752 25.6 10.752 10.752 0 18.432-3.584 25.6-10.752 14.336-14.336 14.336-36.352 0-51.2l-47.104-47.104h22.016c22.016 0 36.352-14.336 36.352-36.352 0-21.504-14.848-35.84-36.864-35.84zM329.728 766.976h-22.016l47.104-47.104c14.336-14.336 14.336-36.352 0-51.2-14.336-14.336-36.352-14.336-51.2 0l-47.104 47.104v-22.016c0-22.016-14.336-36.352-36.352-36.352s-36.352 14.336-36.352 36.352v109.056c0 3.584 0 10.752 3.584 14.336 3.584 7.168 10.752 14.336 18.432 18.432 3.584 3.584 10.752 3.584 14.336 3.584h109.056c22.016 0 36.352-14.336 36.352-36.352s-13.824-35.84-35.84-35.84zM817.664 187.904c-3.584-3.584-10.752-3.584-14.336-3.584h-109.056c-22.016 0-36.352 14.336-36.352 36.352s14.336 36.352 36.352 36.352h22.016l-47.104 47.104c-14.336 14.336-14.336 36.352 0 51.2 7.168 7.168 14.336 10.752 25.6 10.752s18.432-3.584 25.6-10.752l47.104-47.104v22.016c0 22.016 14.336 36.352 36.352 36.352s36.352-14.336 36.352-36.352V220.672c0-3.584 0-10.752-3.584-14.336-4.096-7.68-11.264-14.848-18.944-18.432zM803.328 657.408c-22.016 0-36.352 14.336-36.352 36.352v22.016l-47.104-47.104c-14.336-14.336-36.352-14.336-51.2 0-14.336 14.336-14.336 36.352 0 51.2l47.104 47.104h-22.016c-22.016 0-36.352 14.336-36.352 36.352s14.336 36.352 36.352 36.352h109.056c3.584 0 10.752 0 14.336-3.584 7.168-3.584 14.336-10.752 18.432-18.432 3.584-3.584 3.584-10.752 3.584-14.336v-109.056c0.512-22.016-13.824-36.864-35.84-36.864z" fill="#72B02D" ></path></symbol><symbol id="icon-yangshitu-01" viewBox="0 0 1024 1024"><path d="M645.632 882.688H150.528l252.928-204.8 477.696 0.512z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512z m-542.72 23.552H880.64l-234.496 203.264-228.864 0.512V140.8z m0 247.296l217.088-0.512-1.024 247.296H417.28V388.096z m-43.008-223.744v180.736l-225.792 1.024 225.792-181.76zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m532.48 493.568H150.528l252.928-204.288 477.696 0.512-235.52 203.776z m271.36-247.808h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-zuoshitu-01" viewBox="0 0 1024 1024"><path d="M374.272 644.096l-262.656 211.968L112.64 373.76l261.632-209.408z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM112.64 373.76l261.632-209.408v479.744l-263.168 211.968L112.64 373.76z m520.192 507.904l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-228.864 0.512V140.8H880.64l-234.496 203.776z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-qianshitu-01" viewBox="0 0 1024 1024"><path d="M112.64 389.12h520.704v493.056H112.64z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76z m259.584 717.824H112.64V389.12h520.704v493.056z m12.288-537.6l-228.864 0.512V140.8H880.64l-234.496 203.776z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-youshitu-01" viewBox="0 0 1024 1024"><path d="M916.992 659.456l-239.616 196.096V375.808l239.616-208.896z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m519.68 492.544l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-228.864 0.512V140.8H880.64l-234.496 203.776z m270.848 314.88l-239.104 196.096V375.808l239.104-208.896v492.544z" fill="#AAAAAA" ></path></symbol><symbol id="icon-houshitu-01" viewBox="0 0 1024 1024"><path d="M960 118.784V117.76v-1.024-1.024-1.024-0.512-0.512c1.536 7.68-1.024 15.872-6.656 20.992L677.376 373.76v299.52h-43.008V389.12H374.272v254.976l-262.656 211.968L112.64 389.12l261.632-0.512v-42.496h269.824l280.064-243.2c3.072-2.56 6.656-4.096 10.752-5.12H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c-0.512 0.512-0.512 1.024-1.024 2.048 0 0.512 0 0.512-0.512 1.024 0 0.512 0 0.512-0.512 1.024 0 0.512 0 1.024-0.512 1.536v0.512c0 0.512 0 1.024-0.512 1.536V907.264c0 0.512 0 1.024 0.512 2.048v0.512s0 0.512 0.512 1.024c0 0.512 0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.024s0 0.512 0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512c0.512 0.512 1.024 1.024 1.536 1.024 0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512c0.512 0 1.024 0 1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-242.176 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024 0-0.512 0.512-1.024 0.512-1.536v-0.512V658.944v-2.048V118.272c1.536 1.024 1.536 1.024 1.536 0.512zM374.272 164.352v180.736l-225.792 1.024 225.792-181.76z m258.56 717.312l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m44.544-26.112v-177.664H880.64l-203.264 177.664z m281.6-741.376v-0.512-0.512 1.024z" fill="#AAAAAA" ></path><path d="M916.992 634.88h-239.616V375.808l239.616-211.456zM644.096 346.112H417.28V141.824h462.336zM417.28 389.12H634.88v245.76H417.28z" fill="#72B02D" ></path><path d="M958.976 114.176c0 0.512 0.512 0.512 0 0z m-20.48-16.384H945.152l0.512 0.512 0.512 0.512h1.024l0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512 0.512c0 0.512 0.512 0.512 0.512 1.024s0 0.512 0.512 0.512c0 0.512 0.512 1.024 0.512 1.536 0 0.512 0.512 1.024 0.512 1.024-3.072-10.24-13.312-16.896-24.064-14.848h4.608v1.024z" fill="#C1272D" ></path></symbol><symbol id="icon-dingshitu-01" viewBox="0 0 1024 1024"><path d="M880.64 140.8l-234.496 203.776-497.664 1.536 256-206.336z" fill="#72B02D" ></path><path d="M960 117.248v-1.024-1.024-0.512-1.024-0.512c0-0.512-0.512-1.024-0.512-1.536l-0.512-1.536s0-0.512-0.512-0.512-0.512-0.512-0.512-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024l-0.512-0.512-1.024-0.512H393.216c-5.12 0-9.728 1.536-13.312 4.608L72.192 350.72l-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536l0.512 0.512c0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024-0.512 0.512-0.512 1.024 0 0.512-0.512 1.024c0 0.512 0 1.024-0.512 1.536v0.512l-0.512 2.048V907.776c0 0.512 0 1.536 0.512 2.048v1.024c0 0.512 0 0.512 0.512 1.024s0 0.512 0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.536l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512l1.024 1.024 0.512 0.512 1.024 1.024 0.512 0.512 1.536 1.536c0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512 1.024 0.512 0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512l1.024 0.512H655.872c7.68 0 14.848-4.096 18.432-10.752l276.992-241.664 1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.536 0-0.512 0.512-1.024 0.512-1.536v-0.512V660.992v-2.048V117.76c1.024 0 1.024 0 1.024-0.512zM113.152 389.12l261.632-0.512v256l-263.168 211.968 1.536-467.456z m519.68 492.544l-482.304 1.536 252.928-204.8h230.4l-1.024 203.264z m1.024-246.784H417.28V388.096l217.088-0.512-0.512 247.296z m12.288-290.304l-497.664 1.536 256-205.824 476.16 1.024-234.496 203.264z m31.232 510.976v-177.664H880.64l-203.264 177.664z m239.616-220.672h-239.104V375.808l239.104-208.896V634.88z" fill="#AAAAAA" ></path></symbol><symbol id="icon-toushitu-01" viewBox="0 0 1024 1024"><path d="M965.632 114.176V112.64v-1.024-0.512-1.024-0.512s0-0.512-0.512-1.024v-0.512c-0.512-1.024-0.512-2.048-1.024-3.072v-0.512c0-0.512-0.512-0.512-0.512-1.024s0-0.512-0.512-0.512l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512s-0.512-1.024-1.024-1.024l-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512-0.512h-1.024s-0.512 0-0.512-0.512c0 0-0.512 0-0.512-0.512H950.784h-0.512H392.704c-5.12 0-9.728 1.536-13.312 4.608l-312.32 251.392-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024-0.512 0.512-1.024 1.024s0 0.512-0.512 0.512c-0.512 0.512-0.512 1.024-1.024 1.536 0 0 0 0.512-0.512 0.512 0 0.512-0.512 0.512-0.512 1.024s0 0.512-0.512 1.024c0 0.512 0 0.512-0.512 1.024s0 0.512 0 1.024 0 1.024-0.512 1.536v0.512c0 0.512 0 1.024-0.512 1.536V912.896c0 0.512 0 1.024 0.512 2.048v0.512s0 0.512 0.512 1.024l0.512 1.024v1.024s0 0.512 0.512 1.024c0 0.512 0.512 1.024 0.512 1.024l0.512 0.512c0.512 0.512 0.512 1.024 1.024 1.536 0 0 0 0.512 0.512 0.512 0 0.512 0.512 0.512 1.024 1.024l0.512 0.512 1.024 1.024 0.512 0.512c0.512 0.512 1.024 1.024 1.536 1.024 0.512 0.512 1.024 0.512 1.536 1.024l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 1.024 0.512 1.536 0.512h0.512c0.512 0 1.024 0 1.024 0.512h583.168c7.68 0 14.848-4.096 18.432-10.752L957.44 675.84l1.024-1.024 1.024-1.024 0.512-0.512 1.024-1.024 1.024-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024v-0.512c0-0.512 0.512-0.512 0.512-1.024v-0.512c0-0.512 0.512-1.024 0.512-1.024 0-0.512 0.512-1.024 0.512-1.536v-0.512V661.504v-1.536V658.432l1.024-544.256zM372.736 343.04l-229.888 0.512L372.736 158.72v184.32z m43.008 43.008l220.672-0.512-0.512 251.392h-220.16v-250.88z m-43.008 0v260.096l-267.264 215.552 1.536-474.624 265.728-1.024z m-227.84 502.272l257.024-208.384h233.984l-0.512 206.848-490.496 1.536z m503.296-545.792l-172.544 0.512H415.232V135.68h471.04l-238.08 206.848z m31.232 337.408h207.36l-207.36 181.248v-181.248z m0-43.008V373.76l243.2-212.48v475.648h-243.2z" fill="#AAAAAA" ></path></symbol><symbol id="icon-a-jixiebi3" viewBox="0 0 1024 1024"><path d="M483.386004 821.695719H164.779715l29.075502-22.648286h260.455285l29.075502 22.648286z" fill="#3F3F3F" ></path><path d="M483.386004 776.399147H164.779715l29.075502 22.648286h260.455285l29.075502-22.648286z" fill="#7A807D" ></path><path d="M483.386004 776.399147H164.779715l29.075502-22.648285h260.455285l29.075502 22.648285z" fill="#3F3F3F" ></path><path d="M483.386004 730.796518H164.779715l29.075502 22.954344h260.455285l29.075502-22.954344zM483.386004 685.499947H164.779715l29.075502 22.648285h260.455285l29.075502-22.648285z" fill="#7A807D" ></path><path d="M483.386004 730.796518H164.779715l29.075502-22.648286h260.455285l29.075502 22.648286z" fill="#3F3F3F" ></path><path d="M150.701051 623.064132h339.418227v62.435815H150.701051z" fill="#F7A53F" ></path><path d="M150.701051 821.695719h339.418227v31.217907H150.701051z" fill="#FFFFFF" ></path><path d="M607.951575 339.654504a74.984189 74.984189 0 0 1-23.872517 103.447575 75.290247 75.290247 0 0 1-103.753633-23.872518L293.324039 120.823095A75.290247 75.290247 0 0 1 317.196557 17.069462a75.290247 75.290247 0 0 1 103.753633 23.872517zM441.762128 517.474152v105.58998H198.752144v-105.58998a122.423166 122.423166 0 1 1 244.846331 0z" fill="#FFC200" ></path><path d="M627.233224 377.605685a103.141517 103.141517 0 0 1-52.948019 82.635637l-165.88339 118.750471-2.448463 1.836347a112.93537 112.93537 0 1 1-112.017197-194.346775l195.571007-84.471985a132.523077 132.523077 0 0 1 48.357151-12.854432A89.062853 89.062853 0 0 1 627.233224 377.605685z" fill="#FFE610" ></path><path d="M401.056425 493.601635a71.005436 71.005436 0 1 1-71.005436-71.311494 71.005436 71.005436 0 0 1 71.005436 71.311494z" fill="#FFFFFF" ></path><path d="M375.34756 493.601635a45.296571 45.296571 0 1 1-45.296571-45.60263 45.296571 45.296571 0 0 1 45.296571 45.60263z" fill="#48B8BF" ></path><path d="M592.342622 376.381453a49.88744 49.88744 0 1 1-49.581382-49.88744 49.88744 49.88744 0 0 1 49.581382 49.88744z" fill="#FFFFFF" ></path><path d="M574.285205 376.381453a30.605791 30.605791 0 1 1-30.605792-30.605791 30.605791 30.605791 0 0 1 30.605792 30.605791z" fill="#48B8BF" ></path><path d="M731.048068 230.789704l165.975207-62.099151 18.883774 50.46895-165.975207 62.068545z" fill="#FFE610" ></path><path d="M734.047436 202.785404l145.836596-54.294674 9.426584 25.31099-145.867202 54.294674z" fill="#F7A53F" ></path><path d="M808.419509 259.161272l23.872517 63.353988 31.523966 35.808776-19.893765 18.057417-48.051092-38.257239-27.851271-63.660046 40.399645-15.302896zM854.940312 242.022029l23.56646 63.04793-0.306058 47.745035 26.627038 0.612116 11.324143-60.293409-20.811938-66.414568-40.399645 15.302896zM716.173654 94.379691l102.345766-38.257239 37.216643 99.468822-102.345767 38.257239z" fill="#7A807D" ></path><path d="M841.473764 83.790087a66.108509 66.108509 0 0 1-65.802452 66.10851l-407.669142 15.608953a67.944857 67.944857 0 0 1-11.324142 0 82.635637 82.635637 0 0 1 0-165.271273 67.944857 67.944857 0 0 1 11.324142 0l407.669142 17.445301A66.108509 66.108509 0 0 1 841.473764 83.790087z" fill="#FFE610" ></path><path d="M402.892773 83.790087a46.520803 46.520803 0 1 1-46.520803-46.214745A46.520803 46.520803 0 0 1 402.892773 83.790087z" fill="#FFFFFF" ></path><path d="M386.059587 83.790087a30.605791 30.605791 0 1 1-30.605791-30.605791 30.605791 30.605791 0 0 1 30.605791 30.605791z" fill="#48B8BF" ></path><path d="M810.867972 83.790087a38.257239 38.257239 0 1 1-39.787528-38.257239A38.257239 38.257239 0 0 1 810.867972 83.790087z" fill="#FFFFFF" ></path><path d="M795.565077 83.790087a24.484633 24.484633 0 1 1-24.484633-24.484633 24.484633 24.484633 0 0 1 24.484633 24.484633z" fill="#48B8BF" ></path><path d="M106.93477 852.913626h639.66104v171.086374H106.93477z" fill="#FFE610" ></path><path d="M383.305066 709.678522h337.275822v207.201208H383.305066z" fill="#4D4D4D" ></path><path d="M407.177584 732.02075h291.061076v161.904636H407.177584z" fill="#FFFFFF" ></path><path d="M429.825869 755.893267h159.150116v16.22107h-159.150116zM429.825869 784.356653h131.604903v16.22107h-131.604903zM429.825869 812.820039h199.855818v16.22107h-199.855818zM429.825869 841.283425h146.601741v16.22107h-146.601741z" fill="#92D5D2" ></path><path d="M507.564579 732.326808l-31.830023 161.904636H407.177584v-161.904636h100.386995z" fill="#F5F5F5" opacity=".5" ></path><path d="M474.816383 916.87973h155.783478v31.830023h-155.783478z" fill="#7A807D" ></path><path d="M106.93477 977.173139h639.66104v46.826861H106.93477z" fill="#F7A53F" ></path><path d="M252.006221 899.740487h66.414567v48.969266H252.006221z" fill="#7A807D" ></path><path d="M319.64502 817.716966l-3.672695 11.324143-21.730112 70.699378h-21.730112l23.872518-76.820537 3.366637-11.324143 19.893764 6.121159z" fill="#999999" ></path><path d="M341.069074 809.147344A28.463386 28.463386 0 1 1 321.17531 773.950684a28.463386 28.463386 0 0 1 19.893764 35.19666z" fill="#48B8BF" ></path><path d="M322.705599 793.538391a13.16049 13.16049 0 1 1-26.014923 0 13.16049 13.16049 0 0 1 26.014923 0z" fill="#FFFFFF" ></path><path d="M165.085773 899.740487h66.414568v49.275324H165.085773z" fill="#7A807D" ></path><path d="M163.861542 817.716966l3.366637 11.324143 22.03617 70.699378h21.730111l-23.872517-76.820537-3.672695-11.324143-19.587706 6.121159z" fill="#999999" ></path><path d="M142.437488 809.147344a28.157328 28.157328 0 1 0 18.669532-35.19666 28.157328 28.157328 0 0 0-18.669532 35.19666z" fill="#F7A53F" ></path><path d="M160.800963 793.538391a13.16049 13.16049 0 1 0 12.854432-12.854433 12.854432 12.854432 0 0 0-12.854432 12.854433z" fill="#FFFFFF" ></path></symbol><symbol id="icon-jixiebi2" viewBox="0 0 1164 1024"><path d="M848.55632 485.108049h233.370249v430.146938h-233.370249z" fill="#FFE610" ></path><path d="M974.217224 605.245396h154.314351v64.211341h-154.314351zM974.217224 689.82485h154.314351v64.211341h-154.314351zM974.217224 774.749527h154.314351v64.211341h-154.314351z" fill="#54D9D9" ></path><path d="M306.557369 245.869021l99.078789 31.760448 69.389675 22.094225 145.683794 46.259783 69.734897 22.094225 119.101681 37.974449 66.627896 21.058558 1.035667-2.761778 21.749003-69.044453 23.129891-72.151453-22.784669-7.249667-79.746343-25.201225-20.368113-6.559223-337.972595-107.364124-21.40378-6.904445-87.686455-27.617781-45.224116 142.576794-0.345222 1.035667z" fill="#FFE610" ></path><path d="M412.33347 357.755556l10.70189-33.555604 441.470229 140.401894-10.667368 33.555604z" fill="#A3A3A3" ></path><path d="M380.331366 357.686512l25.408359-79.953476 69.424197 22.094225-25.408359 79.918953zM595.508402 425.626253l25.408359-79.953476 69.389674 22.059703-25.373836 79.953476z" fill="#3F3F3F" ></path><path d="M809.200982 411.575707a144.302906 144.302906 0 0 0 4.833112 37.284004 138.088905 138.088905 0 0 0 18.987224 43.152783 144.302906 144.302906 0 0 0 15.535002 19.677669 146.719461 146.719461 0 0 0 256.154919-100.114456 144.648128 144.648128 0 0 0-34.522226-94.5909 180.206021 180.206021 0 0 0-15.880224-16.570668 146.719461 146.719461 0 0 0-96.317012-34.522227 148.445573 148.445573 0 0 0-58.687784 10.356668 146.719461 146.719461 0 0 0-89.757788 129.803571 34.522226 34.522226 0 0 0-0.345223 5.523556z" fill="#FFC200" ></path><path d="M876.174101 411.575707A80.091565 80.091565 0 1 0 956.265666 331.484142a80.091565 80.091565 0 0 0-80.091565 80.091565z" fill="#FFFFFF" ></path><path d="M904.827549 411.575707a51.438117 51.438117 0 1 0 51.438117-51.092895 51.438117 51.438117 0 0 0-51.438117 51.092895z" fill="#54D9D9" ></path><path d="M218.076903 216.594173l37.007826-117.202958 88.894733 28.06657L306.902591 244.660743zM86.512699 119.345062l92.450522-16.467102 19.401491 108.745013-92.450522 16.467102z" fill="#8A8A8A" ></path><path d="M0 65.317778l45.224116 254.083585 21.058558-3.797445 31.415226-5.523556 22.094225-4.142667-13.808891-77.675009-19.332446-109.090235-12.082779-67.318341-14.499335 2.761778-21.403781 3.797445-38.664893 6.904445z" fill="#292929" ></path><path d="M95.626567 436.43171l16.570668-3.107-14.499335-123.244348-31.415226 5.523556 29.343893 120.827792z" fill="#7A807D" ></path><path d="M138.088905 153.349455a80.782009 80.782009 0 0 0 31.070003 63.520896 79.40112 79.40112 0 0 0 49.021562 16.915891 75.258453 75.258453 0 0 0 32.10567-6.904445 80.091565 80.091565 0 0 0 48.331117-73.532342 78.710676 78.710676 0 0 0-13.808891-44.18845 76.984564 76.984564 0 0 0-31.760448-27.617781l-7.59489-3.452222a83.543787 83.543787 0 0 0-12.428001-3.452223H217.835247A80.091565 80.091565 0 0 0 138.088905 153.349455z" fill="#FFC200" ></path><path d="M167.087575 153.694677A51.092895 51.092895 0 1 0 217.835247 103.637449a50.747673 50.747673 0 0 0-50.747672 50.057228z" fill="#FFFFFF" ></path><path d="M185.384355 153.694677a32.450893 32.450893 0 1 0 32.450892-34.522226 32.450893 32.450893 0 0 0-32.450892 34.522226z" fill="#54D9D9" ></path><path d="M38.664893 58.413333l21.403781-3.797445C66.627897 19.74844 108.745013 11.117883 141.88635 14.915328a89.757788 89.757788 0 0 1 81.472454 58.687784h9.321001a83.543787 83.543787 0 0 1 12.428001 3.452223l7.59489 3.452223c53.854673-42.807561 165.016241-17.951558 187.110466 48.331116l21.40378 6.904446C439.813162 59.449 307.593036 24.581551 241.655583 69.115223a113.923346 113.923346 0 0 0-108.745012-69.044452C90.793455 0.070771 41.081449 10.772661 38.664893 58.413333zM799.189537 244.14291l20.368113 6.559223a345.222262 345.222262 0 0 0 89.412566-34.522226c48.331117-22.784669 133.601015-34.522226 144.99335 34.522226a114.613791 114.613791 0 0 1 0 48.676339 180.206021 180.206021 0 0 1 15.880224 16.570668c15.880224-50.057228 3.797445-107.364124-54.545117-124.280014-83.198565-22.439447-141.541127 45.569339-216.109136 52.473784z" fill="#3F3F3F" ></path><path d="M44.18845 731.251522a105.638012 105.638012 0 0 0 105.638012 105.638012h698.729858v-31.415226H149.826462a74.222786 74.222786 0 0 1 0-148.445573h698.729858v-31.415225H149.826462a105.638012 105.638012 0 0 0-105.638012 105.638012z" fill="#8A8A8A" ></path><path d="M75.603675 731.251522a74.222786 74.222786 0 0 0 74.222787 74.222786h698.729858V655.993069H149.826462a74.222786 74.222786 0 0 0-74.222787 75.258453z" fill="#FFE610" ></path><path d="M103.566679 731.251522a51.092895 51.092895 0 1 0 50.747672-50.747673A50.747673 50.747673 0 0 0 103.566679 731.251522z" fill="#FFFFFF" ></path><path d="M121.863459 731.251522a32.450893 32.450893 0 1 0 32.450892-32.450893 32.450893 32.450893 0 0 0-32.450892 32.450893zM290.331922 731.251522a34.522226 34.522226 0 0 0 34.522227 34.522226h414.266714a34.522226 34.522226 0 0 0 34.522226-34.522226 34.522226 34.522226 0 0 0-34.522226-34.522226h-414.266714a34.522226 34.522226 0 0 0-34.522227 34.522226z" fill="#54D9D9" ></path><path d="M827.15254 877.625761h276.523032v61.794785h-276.523032z" fill="#F7A53F" ></path><path d="M839.925764 939.765768h250.976584v31.070004h-250.976584z" fill="#707070" ></path><path d="M747.75142 657.028735v148.445573h43.152783v31.415226h57.652117v-211.276024h-57.652117v31.415225h-43.152783z" fill="#B3B3B3" opacity=".76" ></path><path d="M14.499335 970.490549h1149.590133v53.509451H14.499335z" fill="#B86805" ></path><path d="M154.314351 836.889534H272.725587v133.601015H154.314351zM614.150404 836.889534h118.411236v133.601015h-118.411236z" fill="#F7A53F" ></path><path d="M614.150404 836.889534h118.411236v78.365453h-118.411236zM154.314351 836.889534H272.725587v78.365453H154.314351z" fill="#B3B3B3" opacity=".76" ></path></symbol><symbol id="icon-jixiebi4" viewBox="0 0 1123 1024"><path d="M502.569098 505.335276h543.234824v85.15391H502.569098z" fill="#FFE610" ></path><path d="M483.047648 203.089382a81.451566 81.451566 0 0 1-41.06236 73.373725l-302.919047 173.33701a82.124719 82.124719 0 0 1-81.788143-143.045105l302.919047-173.33701a82.124719 82.124719 0 0 1 83.807603 0 79.768682 79.768682 0 0 1 27.935868 28.945597A77.412645 77.412645 0 0 1 483.047648 203.089382z" fill="#FFC200" ></path><path d="M39.776109 803.542249h1082.094151v220.121174H39.776109z" fill="#FFE610" ></path><path d="M39.776109 971.830609h1082.094151v52.169391H39.776109zM466.218812 723.43699v146.747449H219.844654v-146.747449a123.187079 123.187079 0 0 1 246.374158 0z" fill="#FFC200" ></path><path d="M396.210854 790.415757a100.973016 100.973016 0 0 1-141.698798-23.896947l-235.603704-331.864645a100.973016 100.973016 0 0 1 23.896947-141.362222 100.973016 100.973016 0 0 1 141.698799 23.896947l235.603703 331.528068a100.973016 100.973016 0 0 1-24.233523 141.698799z" fill="#FFE610" ></path><path d="M146.470929 451.146424a86.16364 86.16364 0 1 1 29.282174-118.138428 86.16364 86.16364 0 0 1-29.282174 118.138428z" fill="#B8B8B8" ></path><path d="M131.661553 424.556864a56.881466 56.881466 0 1 1 19.52145-78.085799 56.544889 56.544889 0 0 1-19.52145 78.085799z" fill="#B8B8B8" ></path><path d="M120.554522 405.035414a35.677132 35.677132 0 0 1-36.686863-60.920386A35.677132 35.677132 0 1 1 120.554522 405.035414z" fill="#FFFFFF" ></path><path d="M370.9676 757.767815a56.881466 56.881466 0 1 1 19.184873-78.085798 56.881466 56.881466 0 0 1-19.184873 78.085798z" fill="#B8B8B8" ></path><path d="M358.850839 739.592672a35.677132 35.677132 0 1 1 12.116761-48.803624 35.677132 35.677132 0 0 1-12.116761 48.803624z" fill="#FFFFFF" ></path><path d="M423.136992 384.167657l-112.416624 66.305614-32.984519-55.871735 112.753201-65.969037 9.760725 16.492259 13.463069 22.887217 9.424148 16.155682z" fill="#8A8A8A" ></path><path d="M400.18246 345.023785l70.512822-41.398937 13.463069 22.887217-70.512823 41.432594z" fill="#C4C4C4" ></path><path d="M489.442606 313.823123a21.877487 21.877487 0 0 1-11.780186 27.935868 21.54091 21.54091 0 0 1-27.935867-12.116762l-29.955328-73.373725a21.54091 21.54091 0 0 1 12.116762-27.935868 21.204333 21.204333 0 0 1 27.599291 11.780186z" fill="#F7A53F" ></path><path d="M482.037918 318.19862a12.453339 12.453339 0 0 1-9.424148 14.809376 12.789915 12.789915 0 0 1-14.809376-9.424148 12.789915 12.789915 0 0 1 9.424148-14.809376 12.453339 12.453339 0 0 1 14.809376 9.424148z" fill="#707070" ></path><path d="M303.652257 388.543155a24.5701 24.5701 0 0 0-7.404688 8.077841l-24.906677 45.10128 32.311365 44.764704 36.350285-65.63246a24.906677 24.906677 0 0 0-36.013709-33.657672z m12.453338 6.394957a14.472799 14.472799 0 0 1 16.155683 12.116762 14.136222 14.136222 0 0 1-12.116762 16.155683 13.799645 13.799645 0 0 1-16.155683-11.780185 14.136222 14.136222 0 0 1 13.463069-16.49226z" fill="#B86805" ></path><path d="M305.33514 411.430372a13.799645 13.799645 0 0 0 16.155683 11.780185 14.136222 14.136222 0 0 0 12.116762-16.155683 14.472799 14.472799 0 0 0-16.155683-12.116762 14.136222 14.136222 0 0 0-12.116762 16.49226z" fill="#5E5E5E" ></path><path d="M625.4196 163.709906l-19.858026 12.116762-37.360016 22.55064-19.858027 12.116762-20.867756-34.667402-40.389207-66.64219-19.184872-31.301635 9.424148-5.721804 58.227772-35.340556 9.424148-5.385227 80.441836 132.27465z" fill="#8A8A8A" ></path><path d="M568.066927 198.276335l37.124412-22.516982 36.484917 60.14626-37.15807 22.55064z" fill="#4D4D4D" ></path><path d="M931.031261 336.373763l-85.15391 217.765137h-128.572307l-46.447587-118.811581-30.965058-79.768683-7.404688-19.184873 46.111011-46.447587h205.648375l46.784164 46.447587z" fill="#AEBABD" ></path><path d="M744.668732 483.861681l105.954351-43.182793 2.423352 5.890093-105.988009 43.182793zM840.8287 361.953594l-120.157889-26.252984 1.682884-6.058381 119.821312 26.252984-1.346307 6.058381zM683.916634 363.838423l6.125696-1.851172 32.984518 109.252803-6.159353 1.851172z" fill="#6A5060" ></path><path d="M880.544753 403.015954a49.813354 49.813354 0 1 1-49.813354-49.813355 50.149931 50.149931 0 0 1 49.813354 49.813355zM746.923796 359.597557a33.657672 33.657672 0 1 1-33.657672-33.657672 33.657672 33.657672 0 0 1 33.657672 33.657672zM767.454975 465.282647a26.589561 26.589561 0 0 1-26.58956 26.252984A26.252984 26.252984 0 0 1 741.201991 438.693086a26.589561 26.589561 0 0 1 26.252984 26.589561z" fill="#FFFFFF" ></path><path d="M846.887081 403.015954a16.155683 16.155683 0 1 1-16.155682-16.155683 16.155683 16.155683 0 0 1 16.155682 16.155683zM724.709732 359.597557a10.097302 10.097302 0 0 1-10.097302 9.760725 9.760725 9.760725 0 1 1 0-19.52145 10.097302 10.097302 0 0 1 10.097302 9.760725zM748.943256 465.282647A7.741265 7.741265 0 0 1 741.201991 472.350758a8.077841 8.077841 0 0 1-8.077841-8.077842 8.077841 8.077841 0 0 1 8.077841-8.077841 8.077841 8.077841 0 0 1 7.741265 9.087572z" fill="#788B90" opacity=".37" ></path><path d="M698.456748 219.581642h166.268899v46.11101h-166.268899z" fill="#F7A53F" ></path><path d="M702.159092 223.620562h5.048651v38.03317h-5.048651zM711.246663 223.620562h5.048651v38.03317h-5.048651zM720.334235 223.620562h5.048651v38.03317h-5.048651zM729.421806 223.620562h5.048651v38.03317h-5.048651zM738.509378 223.620562h5.04865v38.03317h-5.04865zM747.596949 223.620562h5.048651v38.03317h-5.048651zM756.68452 223.620562h5.048651v38.03317h-5.048651zM765.772092 223.620562h5.048651v38.03317h-5.048651zM774.859663 223.620562h5.048651v38.03317H774.859663zM783.610658 223.620562h5.048651v38.03317h-5.048651zM792.698229 223.620562h5.048651v38.03317h-5.048651zM801.785801 223.620562h5.04865v38.03317h-5.04865zM810.873372 223.620562h5.048651v38.03317h-5.048651zM819.960944 223.620562h5.04865v38.03317h-5.04865zM829.048515 223.620562h5.048651v38.03317h-5.048651zM838.136086 223.620562h5.048651v38.03317h-5.048651zM847.223658 223.620562h5.048651v38.03317h-5.048651zM856.311229 223.620562h5.048651v38.03317h-5.048651z" fill="#788B90" opacity=".38" ></path><path d="M738.845954 265.692652h85.490487v23.896947h-85.490487z" fill="#707070" ></path><path d="M735.816764 288.916446h-1.682884L640.228976 355.558636l-39.0429 26.926138-4.712074 3.365767-16.492259-23.896947a25.916407 25.916407 0 0 1 6.731534-36.013709l97.270672-67.315344a25.916407 25.916407 0 0 1 36.013709 6.731534z" fill="#58BFD2" ></path><path d="M670.857457 435.327319h-33.657672a12.116762 12.116762 0 0 1-10.433878-8.414418l-24.906677-44.428127 39.042899-26.926138z" fill="#8A8A8A" ></path><path d="M827.365631 288.916446h1.682884l94.241481 65.63246 39.0429 26.926138 4.712074 3.365767 16.492259-23.896947a25.916407 25.916407 0 0 0-6.731534-35.003979l-97.270672-67.315344a25.916407 25.916407 0 0 0-36.013709 6.731534z" fill="#58BFD2" ></path><path d="M892.324938 435.327319h33.657672a12.116762 12.116762 0 0 0 10.433878-8.414418l24.906677-44.428127-39.042899-26.926138z" fill="#8A8A8A" ></path><path d="M738.845954 265.692652h85.490487v12.116762h-85.490487zM922.95342 355.558636l-31.301635 79.768683-46.447588 118.811581 49.140201-194.541343-70.007957-69.671381h4.038921l94.578058 65.63246z" fill="#848484" opacity=".25" ></path><path d="M661.433309 321.900964l-48.467048-67.988497 21.204334-12.789915 38.033169 74.383455-10.770455 6.394957z" fill="#7A807D" ></path><path d="M535.553616 36.820483l-58.227772 33.657672-11.780186-19.184873A33.657672 33.657672 0 0 1 502.905674 1.143351a33.657672 33.657672 0 0 1 21.204334 15.482529z" fill="#F7A53F" ></path><path d="M527.475775 175.826668L483.047648 203.089382A77.412645 77.412645 0 0 0 471.940616 164.046483a79.768682 79.768682 0 0 0-27.599291-28.272444l42.745243-25.916408zM527.475775 175.826668l-40.389207-66.64219 40.389207 66.64219z" fill="#C4C4C4" ></path><path d="M956.274515 854.028757H600.512923l32.311365-25.243254h290.802285l32.647942 25.243254z" fill="#999999" ></path><path d="M650.999431 304.062398l-70.007958 14.809376 69.671381 8.414418-4.712074 38.033169 25.243254-25.243254 22.887217 25.243254-3.702344-36.350286 35.003979-1.682883-31.974789-19.52145 14.809376-35.677132-33.657672 24.906677-26.252984-43.754973 2.692614 50.823084z" fill="#FFFFFF" ></path><path d="M956.274515 803.542249H600.512923l32.311365 25.243254h290.802285l32.647942-25.243254z" fill="#7A807D" ></path><path d="M956.274515 803.542249H600.512923l32.311365-25.579831h290.802285l32.647942 25.579831z" fill="#999999" ></path><path d="M956.274515 752.719165H600.512923l32.311365 25.243253h290.802285l32.647942-25.243253zM956.274515 702.232657H600.512923l32.311365 25.243254h290.802285l32.647942-25.243254z" fill="#7A807D" ></path><path d="M956.274515 752.719165H600.512923l32.311365-25.243254h290.802285l32.647942 25.243254z" fill="#999999" ></path><path d="M584.693817 632.561276h378.985386v69.671381H584.693817zM584.693817 854.028757h378.985386v34.667402H584.693817z" fill="#FFC200" ></path><path d="M502.569098 590.489186h543.234824v42.07209H502.569098z" fill="#F7A53F" ></path><path d="M273.696929 882.637778h80.441836v59.574079H273.696929z" fill="#7A807D" ></path><path d="M355.821648 783.011069l-4.375497 13.799646-26.589561 85.827063h-26.252984l28.945598-93.231751 4.375497-13.799646 23.896947 7.404688z" fill="#999999" ></path><path d="M381.738055 772.913768a33.657672 33.657672 0 1 1-22.55064-43.08182 33.657672 33.657672 0 0 1 22.55064 43.08182z" fill="#F7A53F" ></path><path d="M359.523992 753.728895a15.819106 15.819106 0 1 1-15.819106-15.819106 15.819106 15.819106 0 0 1 15.819106 15.819106z" fill="#FFFFFF" ></path><path d="M168.348416 882.637778h80.441835v59.574079H168.348416z" fill="#7A807D" ></path><path d="M166.665532 783.011069l4.375497 13.799646 26.589561 85.827063h26.252984l-28.945598-93.231751-4.03892-13.799646-24.233524 7.404688z" fill="#999999" ></path><path d="M140.749125 772.913768a33.657672 33.657672 0 1 0 67.315343-20.53118 33.657672 33.657672 0 0 0-43.08182-22.55064 33.657672 33.657672 0 0 0-24.233523 43.08182z" fill="#68FF4B" ></path><path d="M162.963188 753.728895a15.819106 15.819106 0 1 0 15.819106-15.819106 15.819106 15.819106 0 0 0-15.819106 15.819106z" fill="#FFFFFF" ></path></symbol></svg>',(s=>{var e=(t=(t=document.getElementsByTagName("script"))[t.length-1]).getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var n,i,r,a,o,l=function(d,u){u.parentNode.insertBefore(d,u)};if(e&&!s.__iconfont__svg__cssinject__){s.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(d){console&&console.log(d)}}n=function(){var d,u=document.createElement("div");u.innerHTML=s._iconfont_svg_string_4634042,(u=u.getElementsByTagName("svg")[0])&&(u.setAttribute("aria-hidden","true"),u.style.position="absolute",u.style.width=0,u.style.height=0,u.style.overflow="hidden",u=u,(d=document.body).firstChild?l(u,d.firstChild):d.appendChild(u))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(n,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),n()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(r=n,a=s.document,o=!1,h(),a.onreadystatechange=function(){a.readyState=="complete"&&(a.onreadystatechange=null,c())})}function c(){o||(o=!0,r())}function h(){try{a.documentElement.doScroll("left")}catch{return void setTimeout(h,50)}c()}})(window);const Hu=De.defineStore("formToTableComp",{state:()=>({selectArray:[],selectString:""}),actions:{setSelectArray(s){this.selectArray=s},setSelectString(s){this.selectString=s}}}),s3={class:"calculator-content"},r3={class:"calculator-child"},a3={class:"calculator-child"},o3=V.defineComponent({__name:"calculator",setup(s){const e=V.ref(),t=V.ref();return V.onMounted(()=>{e.value=[{type:"Upload",label:"输入",name:"input"}],t.value=[{type:"Upload",label:"输出",name:"output"}]}),(n,i)=>(V.openBlock(),V.createElementBlock("div",s3,[V.createElementVNode("div",r3,[V.createVNode(si.ssForm,{rowContents:e.value,isRowFlex:!0},null,8,["rowContents"])]),V.createElementVNode("div",a3,[V.createVNode(si.ssForm,{rowContents:t.value,isEdit:!1,isRowFlex:!0},null,8,["rowContents"])])]))}}),l3=xl._export_sfc(o3,[["__scopeId","data-v-73db0fe7"]]),Gu=De.defineStore("unit",{state:()=>({selectIndex:"",selectMenu:"",selectTitle:[]}),actions:{setSelectIndex(s){this.selectIndex=s},setSelectMenu(s){this.selectMenu=s},setSelectTitle(s){this.selectTitle=s}}}),Wu=(s,e)=>{let t=s,n=e;return Array.isArray(t)&&(t=t==null?void 0:t.map((i,r)=>{if(Array.isArray(i)){let a={};return i=i==null?void 0:i.forEach((o,l)=>{var c;(c=n==null?void 0:n[l])!=null&&c.prop?a[n[l].prop]=o:Array.isArray(o)&&(a.children=Wu(o,n))}),Object.assign(a,{id:r})}else return i})),t},Xu=(s,e,t)=>{let n=s,i=e;return n=n==null?void 0:n.map((r,a)=>{var o,l;return!Array.isArray(r)||!((o=i==null?void 0:i[a])!=null&&o.label)&&!t||(r.unshift(((l=i==null?void 0:i[a])==null?void 0:l.label)??""),r.some(c=>Array.isArray(c))&&(r=r==null?void 0:r.map(c=>{var h;return Array.isArray(c)&&(c=Xu(c,(h=i==null?void 0:i[a])==null?void 0:h.children,t)),c}))),r}),n},c3=(s,e,t)=>{if(e==="")return s==null?void 0:s.filter(n=>(n==null?void 0:n.id)!==t);{const n=e.split("-");return h3(s,n,t)}},h3=(s,e,t)=>{let n=s,i=e;return(i==null?void 0:i.length)===0?n=n==null?void 0:n.filter(r=>r.id!==t):n=n==null?void 0:n.map(r=>(r.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),r=qu(r,i,t)),r)),n},qu=(s,e,t)=>{var r,a;let n=s,i=e;return(i==null?void 0:i.length)===0?n.children=(r=n.children)==null?void 0:r.filter(o=>o.id!==t):n.children=(a=n.children)==null?void 0:a.map(o=>(o.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),o=qu(o,i,t)),o)),n},u3=(s,e,t)=>{if(e==="")return t;{const n=e.split("-");return d3(s,n,t)}},d3=(s,e,t)=>{let n=s,i=e;return(i==null?void 0:i.length)===0?n=t:n=n==null?void 0:n.map(r=>(r.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),r=ju(r,i,t)),r)),n},ju=(s,e,t)=>{var r;let n=s,i=e;return(i==null?void 0:i.length)===0?n.children=t:n.children=(r=n.children)==null?void 0:r.map(a=>(a.id.toString()===(i==null?void 0:i[0])&&(i==null||i.shift(),a=ju(a,i,t)),a)),n},Yu=De.defineStore("modelTableComp",{state:()=>({tableIndex:0,tableShowThree:""}),actions:{setTableIndex(s){this.tableIndex=s},setTableShowThree(s){this.tableShowThree=s}}}),vl=async s=>{var r,a,o,l,c,h,d;let e=(a=(r=De.cloneDeep(s))==null?void 0:r.optionUrl)==null?void 0:a.menuSelect,t=[];e==null||e.forEach(u=>{});let n="";const i=await pn.menuToParent(e);if(i==null||i.forEach(u=>{var f,m,_,g;(u==null?void 0:u.name)===(((g=(_=(m=(f=De.cloneDeep(s))==null?void 0:f.optionUrl)==null?void 0:m.groupSelect)==null?void 0:_[0])==null?void 0:g.replaceAll("'",""))??"")&&(n=u==null?void 0:u.id)}),n!==""){const u=(o=i==null?void 0:i[0])==null?void 0:o.compData;let f=(c=(l=u==null?void 0:u.find(_=>(_==null?void 0:_.key)==="header"))==null?void 0:l.contents)==null?void 0:c.map(_=>_==null?void 0:_.label),m=(d=(h=u==null?void 0:u.find(_=>(_==null?void 0:_.key)==="tableContents"))==null?void 0:h.contents)==null?void 0:d.map(_=>(_=_==null?void 0:_.filter(g=>!(g!=null&&g.id)),_));m==null||m.forEach(_=>{t.push(pn.getValueToObjectValue(_,f))})}return t},f3={class:"table-content"},p3={class:"menu-config-wrap"},m3=["onClick"],g3={key:0,class:"viewport-wrap"},_3=["onClick"],v3={title:"选择显示列信息"},x3={class:"menu-config-wrap",style:{padding:"0 0 0 16px","box-sizing":"border-box","max-height":"300px",width:"300px",overflow:"auto"}},y3={class:"form-content"},M3={key:0,class:"dialog-footer"},S3={class:"dialog-footer"},b3={__name:"index",props:{compName:{type:String,default:"",required:!1},operatingForm:{type:Object,default:()=>{}},itemData:{type:Array,default:()=>[]},childItemData:{type:Array,default:()=>[]},index:Number,changedContent:{type:Object,default:()=>{}},showHeader:{type:Boolean,default:!0}},emits:["change","contentChange","onButtonClick","contentClick","pageChange","rowClick"],setup(s,{emit:e}){const t=V.ref(null),n=V.ref([]),i=s,r=e,a=V.ref([]),o=V.ref([]),l=V.ref([]),c=V.ref(!1),h=V.ref(),d=De.useMenuState(),{activeMenuPath:u}=De.storeToRefs(d),f=Yu(De.pinia),m=Gh.useModelComp(De.pinia),{extraContents:_}=De.storeToRefs(m),g=V.ref([]);V.ref(!1);const p=V.ref("");V.ref();const E=V.ref(!0),b=V.ref(0),M=V.ref(!1),U=V.ref(""),C=V.ref(!1),P=V.ref({label:"查看三维模型"}),D=V.ref(!1),S=V.ref(),y=V.ref([]),N=V.ref([]),W=V.ref(!1),X=V.ref([]),Q=V.ref([]),ne=V.ref([]),G=V.ref(),re=V.ref(),Z=Hu(De.pinia),me=V.ref(),Ee=Gu(De.pinia),{selectIndex:Ce,selectMenu:Ne,selectTitle:Ve}=De.storeToRefs(Ee),{selectString:K}=De.storeToRefs(Z),ae=Ju.useLoginState(De.pinia),{loginUserInfo:le}=De.storeToRefs(ae),ce=V.ref(720),Le=V.ref("read"),xe=V.ref([]),we=V.ref(),st=V.ref(!0),Tt=z=>{xe.value=z},Mt=(z,B)=>{we.value===B?st.value=!1:st.value=!0,we.value=B==null?void 0:B.changeProp},O=V.computed(()=>{var z;return(z=a.value)==null?void 0:z.filter(B=>(B==null?void 0:B.label)!=="操作")}),Gt=()=>{C.value=!1},Lt=z=>{r("clickTrigger",z)},Ct=(z,B)=>{if(Object.values(B).length!==0)return Object.values(B).find(k=>{var te,se,oe;return((te=k==null?void 0:k.toString())==null?void 0:te.includes(".txt"))||((se=k==null?void 0:k.toString())==null?void 0:se.includes(".cpt"))||((oe=k==null?void 0:k.toString())==null?void 0:oe.includes(".obj"))})?[...z,P.value]:z},He=z=>{var se;K.value===""?z==null||z[0]:(z==null?void 0:z.find(oe=>(oe==null?void 0:oe.selectLabel)==="("+K.value+")"))??(z==null||z.find(oe=>!(oe!=null&&oe.selectLabel)));let B=z;(se=a.value)!=null&&se.find(oe=>oe.prop==="index");let k=G.value;const te=[];return B==null||B.forEach((oe,ue)=>{var be;let ge={};if(Array.isArray(oe)){let qe=[];oe==null||oe.filter(J=>!(J!=null&&J.id)).forEach((J,Ue)=>{var wt,Ut,Wt,Zt,ft;if((wt=k==null?void 0:k[Ue])!=null&&wt.prop&&!Array.isArray(J)){let Pt={};Pt[k[Ue].column]=J,_!=null&&_.value&&((Ut=_==null?void 0:_.value)==null?void 0:Ut.length)>0&&((Wt=_==null?void 0:_.value)!=null&&Wt.find(Re=>JSON.stringify(Re==null?void 0:Re[0])===JSON.stringify(Pt)))&&(qe=(Zt=_==null?void 0:_.value)==null?void 0:Zt.find(Re=>JSON.stringify(Re==null?void 0:Re[0])===JSON.stringify(Pt))),qe&&qe.length>0?ge[k[Ue].prop]=qe!=null&&qe.find(Re=>{var Xt;return((Xt=Object.keys(Re))==null?void 0:Xt[0])===k[Ue].column})?(ft=qe==null?void 0:qe.find(Re=>{var Xt;return((Xt=Object.keys(Re))==null?void 0:Xt[0])===k[Ue].column}))==null?void 0:ft[k[Ue].column]:J:ge[k[Ue].prop]=J}})}else ge=oe;Array.isArray(oe)&&oe.some(qe=>qe==null?void 0:qe.id)?te.push(Object.assign(ge,{id:(be=oe==null?void 0:oe.find(qe=>qe.id))==null?void 0:be.id})):ge.id?te.push(ge):te.push(Object.assign(ge,{id:ue}))}),te},mt=async z=>{var se,oe,ue,ge,be;let B={};for(let qe in z)z[qe]!==""&&(B["tableData."+qe]=z[qe]);const k=await pn.filterContents({type:"data",tableId:i==null?void 0:i.index,systemKey:sessionStorage.getItem("systemKey"),pageKey:u.value},B),te=(ue=(oe=(se=De.cloneDeep(k))==null?void 0:se.data)==null?void 0:oe.result)==null?void 0:ue.map(qe=>{var Ue;let J=[];return J.push({id:qe.id}),J.push((Ue=qe==null?void 0:qe.value)==null?void 0:Ue.tableData),J});g.value=He(pn.getTableContents(te,(be=(ge=De.cloneDeep(a.value))==null?void 0:ge.map(qe=>qe.label))==null?void 0:be.filter(qe=>qe!=="操作")))},We=async z=>{var te,se,oe,ue,ge,be,qe,J,Ue,wt,Ut;const B=(te=De.cloneDeep(a.value))==null?void 0:te.filter(Wt=>Wt==null?void 0:Wt.isRoute);if((B==null?void 0:B.length)>0){let Wt=(se=B==null?void 0:B[0])==null?void 0:se.prop,Zt=De.cloneDeep(u).value+"/"+(z==null?void 0:z[Wt]),ft=De.cloneDeep(u).value,Pt=await pn.getItemData(Zt,sessionStorage.getItem("systemKey"),"");(Pt==null?void 0:Pt.length)>0&&(await pn.loadingConstruct(Zt,Zt+`/updateLoading${(oe=le.value)==null?void 0:oe.account}`),m.setRouteToChildPath(ft),d.setActiveMenuPath(Zt+`/updateLoading${(ue=le.value)==null?void 0:ue.account}`))}let k=await pn.getItemData(u.value,sessionStorage.getItem("systemKey"),z.id);if(k=k==null?void 0:k.filter(Wt=>Wt.comp!=="methodButton"),k&&k.length>0){const Wt=!Array.isArray(Ve.value)&&((ge=Ve.value)==null?void 0:ge.key)!=="main"?[]:Ve.value;Wt.push({key:Ne.value===""?(be=z==null?void 0:z.id)==null?void 0:be.toString():Ne.value+"-"+((qe=z==null?void 0:z.id)==null?void 0:qe.toString()),value:z[(J=Object.keys(z))==null?void 0:J.filter(Zt=>Zt!=="index"&&Zt!=="id")[0]]}),Ee.setSelectMenu(Ne.value===""?(Ue=z==null?void 0:z.id)==null?void 0:Ue.toString():Ne.value+"-"+((wt=z==null?void 0:z.id)==null?void 0:wt.toString())),Ee.setSelectTitle(Wt),Ee.setSelectIndex((Ut=z==null?void 0:z.id)==null?void 0:Ut.toString()),r("pageChange",k)}},dt=z=>{var B;(B=De.cloneDeep(i.itemData))==null||B.map(k=>((k==null?void 0:k.key)==="tableContents"&&(k.contents=z),k))},rn=async(z,B,k,te)=>{var se;if((te==null?void 0:te.data)==="查看"&&(z!=null&&z.every(oe=>(oe==null?void 0:oe.url)&&(oe==null?void 0:oe.name)))){let oe=De.cloneDeep(z);oe=await((se=De.cloneDeep(oe))==null?void 0:se.map(async ge=>{var J,Ue,wt,Ut;const be=await si.downloadAvatarApi({url:ge==null?void 0:ge.url});let qe=URL.createObjectURL(be.data);return{name:(ge==null?void 0:ge.name)+"."+((Ut=(J=ge==null?void 0:ge.url)==null?void 0:J.split("."))==null?void 0:Ut[((wt=(Ue=ge==null?void 0:ge.url)==null?void 0:Ue.split("."))==null?void 0:wt.length)-1]),blobUrl:qe}}));let ue=await Promise.all(oe);h.value=ue,c.value=!0}r("contentClick",z,B,k,{id:i==null?void 0:i.index,type:"table"})},F=()=>{c.value=!1},A=z=>{r("rowClick",z)};V.watch(()=>i.changedContent,()=>{var k,te;if(!i.changedContent)return;let z=(k=g.value)==null?void 0:k.map(se=>{var oe;return se.id===((oe=i.changedContent)==null?void 0:oe.id)&&(se={...i.changedContent,id:i.changedContent.newId?i.changedContent.newId:i.changedContent.id},delete se.newId),se});const B=(te=i.itemData)==null?void 0:te.map(se=>((se==null?void 0:se.key)==="tableContents"&&(se.contents=z),se));g.value=z,r("contentChange",{contents:B,index:i.index}),r("change",{content:z,index:i==null?void 0:i.index,buttonName:"",id:i==null?void 0:i.index})},{deep:!0,immediate:!0});const ee=()=>{},fe=(z,B,k)=>{var te,se,oe,ue,ge,be,qe;if(p.value="",W.value=!0,E.value=!0,r("onButtonClick",z,B),z==="删除"){g.value=(te=De.cloneDeep(g.value))==null?void 0:te.filter(Ue=>(Ue==null?void 0:Ue.id)!==(B==null?void 0:B.id));const J=c3(me.value,Ne.value,B==null?void 0:B.id);dt(J),r("change",{content:g.value,singleContent:B,index:i==null?void 0:i.index,type:"delete",buttonName:z,column:a.value})}else if(z==="批量删除"){if(((se=xe.value)==null?void 0:se.length)===0)return De.ElMessage.warning("请先勾选操作的数据");r("change",{content:g.value,singleContent:null,selectItems:xe.value,index:i==null?void 0:i.index,type:"batchDelete",buttonName:z,column:a.value})}else if(z==="复制新增"){U.value="新增";const J=De.cloneDeep(B),Ue=(oe=a.value)==null?void 0:oe[0],wt=(ue=Q.value)==null?void 0:ue.find(Ut=>(Ut==null?void 0:Ut.label)==="新增子页面");ze(!0,wt,{data:J,firstCol:Ue})}else if(z==="新增")U.value="新增",Qe(""),C.value=!0;else if(z==="编辑")U.value="编辑",Qe(B),C.value=!0;else if(z==="查看")U.value="查看",Qe(B),W.value=!1,E.value=!1,C.value=!0;else if(z==="查看三维模型"){const J={};for(let wt in B)wt!=="id"&&(J[wt]=B[wt]);let Ue=(ge=Object.values(J))==null?void 0:ge[1];f.setTableShowThree(Ue)}else if(((be=k==null?void 0:k.extra)==null?void 0:be.type)==="modelExample")U.value=z,D.value=!0;else if(z==="新增子页面"){const J=(qe=Q.value)==null?void 0:qe.find(Ue=>(Ue==null?void 0:Ue.label)==="新增子页面");ze(!1,J)}else if(z==="修改模板"){let J=De.cloneDeep(u).value;m.setRouteToChildPath(J),d.setActiveMenuPath(J+"/")}},ye=async z=>{var k,te,se,oe,ue,ge;const B=await De.getInsofDataApi({key:{pageKey:z,type:"structure",systemKey:sessionStorage.getItem("systemKey")}});if(((k=B==null?void 0:B.data)==null?void 0:k.code)===200)return Array.isArray((te=B==null?void 0:B.data)==null?void 0:te.result)&&((oe=(se=B==null?void 0:B.data)==null?void 0:se.result)==null?void 0:oe.length)>0?(ge=(ue=B==null?void 0:B.data)==null?void 0:ue.result)==null?void 0:ge.map(be=>{var qe;return{id:be==null?void 0:be.id,...(qe=be==null?void 0:be.value)==null?void 0:qe.pageData}}):[]},he=(z,B,k,te)=>{var se;r("contentChange",{contents:(se=z==null?void 0:z.compData)==null?void 0:se.map(oe=>{var ue;return(oe==null?void 0:oe.key)==="formContent"?{...oe,contents:(ue=oe==null?void 0:oe.contents)==null?void 0:ue.map(ge=>(ge==null?void 0:ge.key)===B?{...ge,value:k}:ge)}:oe}),index:z==null?void 0:z.id}),d.setActiveMenuPath(""),d.setActiveMenuPath(te)},rt=(z,B)=>{let k=z==null?void 0:z[B==null?void 0:B.prop],te=1;if(g.value.some(se=>(se==null?void 0:se[B==null?void 0:B.prop])===k)){const se=k;for(;g.value.some(oe=>(oe==null?void 0:oe[B==null?void 0:B.prop])===`${se}(${te})`);)te++;k=`${se}(${te})`}return k},ze=async(z,B,k)=>{var ue,ge,be,qe,J;let te,se;const oe=rt(k==null?void 0:k.data,k==null?void 0:k.firstCol);if(z?(te=De.cloneDeep(u).value+"/"+((be=k==null?void 0:k.data)==null?void 0:be[(ge=k==null?void 0:k.firstCol)==null?void 0:ge.prop]),se=De.cloneDeep(u).value+"/"+oe):(te=De.cloneDeep(u).value+"/",se=De.cloneDeep(te)+`loading${(ue=le.value)==null?void 0:ue.account}`),B){const Ue=await pn.getItemData(se,sessionStorage.getItem("systemKey"),"");if((Ue==null?void 0:Ue.length)>0)if(z){const wt=Ue==null?void 0:Ue.find(Ut=>{var Wt;return((Wt=Ut==null?void 0:Ut.comp)==null?void 0:Wt.toUpperCase())==="FORM"});wt&&he(wt,(qe=k==null?void 0:k.firstCol)==null?void 0:qe.label,oe,u.value)}else m.setRouteToChildPath(De.cloneDeep(u).value),d.setActiveMenuPath(se);else if(await pn.loadingConstruct(te,se),z){const wt=await ye(se);if((wt==null?void 0:wt.length)>0){const Ut=wt==null?void 0:wt.find(Wt=>{var Zt;return((Zt=Wt==null?void 0:Wt.comp)==null?void 0:Zt.toUpperCase())==="FORM"});Ut&&he(Ut,(J=k==null?void 0:k.firstCol)==null?void 0:J.label,oe,u.value)}}else m.setRouteToChildPath(De.cloneDeep(u).value),d.setActiveMenuPath(se)}else z?(p.value="",re.value=k==null?void 0:k.data,Ye(!0,k==null?void 0:k.firstCol,oe)):(m.setRouteToChildPath(De.cloneDeep(u).value),d.setActiveMenuPath(se))},Qe=z=>{var se,oe,ue,ge,be,qe;const B=[];let k=[];for(let J in z)Array.isArray(z==null?void 0:z[J])&&k.push(J);o.value=De.cloneDeep(a.value),(oe=pn.getColumnChild((se=De.cloneDeep(a.value))==null?void 0:se.filter(J=>(J==null?void 0:J.label)!=="操作")))==null||oe.forEach((J,Ue)=>{var wt;k.find(Ut=>Ut===(J==null?void 0:J.prop))||(J!=null&&J.formType&&((wt=J==null?void 0:J.formType)==null?void 0:wt.toUpperCase())==="SELECT"?B.push({label:(J==null?void 0:J.label)??"",name:(J==null?void 0:J.prop)??"t"+Ue,type:!(J!=null&&J.formType)||(J==null?void 0:J.formType)===""?"Input":J==null?void 0:J.formType,value:(z==null?void 0:z[J==null?void 0:J.prop])??(J==null?void 0:J.value)??"",id:(J==null?void 0:J.id)??Ue,contents:(J==null?void 0:J.options)??[],width:1,isFormColHidden:J==null?void 0:J.isFormColHidden,optionUrl:{groupSelect:J==null?void 0:J.groupSelect,menuSelect:J==null?void 0:J.formMenuSelect,type:"Select",selectRelateType:J==null?void 0:J.selectRelateType}}):B.push({label:(J==null?void 0:J.label)??"",name:(J==null?void 0:J.prop)??"t"+Ue,type:!(J!=null&&J.formType)||(J==null?void 0:J.formType)===""?"Input":J==null?void 0:J.formType,value:(z==null?void 0:z[J==null?void 0:J.prop])??(J==null?void 0:J.value)??"",id:(J==null?void 0:J.id)??Ue,contents:(J==null?void 0:J.options)??[],width:1,isFormColHidden:J==null?void 0:J.isFormColHidden}))}),z===""||!z||(p.value=(z==null?void 0:z.id)??"");let te=pn.getColumnChild((ue=De.cloneDeep(a.value))==null?void 0:ue.filter(J=>(J==null?void 0:J.label)!=="操作"));y.value&&((ge=y.value)==null?void 0:ge.length)>0&&(y.value=(be=De.cloneDeep(y).value)==null?void 0:be.map(J=>{var wt;let Ue=(wt=te==null?void 0:te.find(Ut=>(Ut==null?void 0:Ut.label)===(J==null?void 0:J.label)))==null?void 0:wt.prop;return Ue&&(J.value=z[Ue]),J})),ne.value=y.value&&((qe=y.value)==null?void 0:qe.length)>0?pn.getTableFormToForm(y.value):B},at=async()=>{var B;await V.nextTick();const z=(B=t.value)==null?void 0:B.$el;z&&pn.Sortable.create(z,{animation:150,handle:".col-drag-icon",ghostClass:"sortable-ghost",onEnd:k=>{var ue;const{oldIndex:te,newIndex:se}=k;if(te===se)return;const oe=O.value.splice(te,1)[0];O.value.splice(se,0,oe),a.value=(ue=a.value)==null?void 0:ue.slice().sort((ge,be)=>{var qe,J;return ge.label==="操作"?1:be.label==="操作"?-1:((qe=O.value)==null?void 0:qe.indexOf(ge))-((J=O.value)==null?void 0:J.indexOf(be))})}})};V.onMounted(()=>{S.value=window.innerWidth-240*2});const Me=()=>{V.nextTick(()=>{at()})},Ye=(z=!0,B,k)=>{var ue;let te=pn.getColumnChild((ue=De.cloneDeep(a.value))==null?void 0:ue.filter(ge=>(ge==null?void 0:ge.label)!=="操作")),se,oe=De.cloneDeep(g.value);if(!re.value){C.value=!1;return}if(p.value===""){b.value++;let ge;B&&k?ge={id:b.value,[B==null?void 0:B.prop]:k}:ge={id:b.value},oe.push(Object.assign(re.value,ge)),se=Object.assign(re.value,ge)}else oe=oe==null?void 0:oe.map(ge=>{var be,qe;if((ge==null?void 0:ge.id)===p.value){let J={};for(let Ue in ge){let wt=(be=te==null?void 0:te.find(Ut=>(Ut==null?void 0:Ut.prop)===Ue))==null?void 0:be.label;wt?J[Ue]=(qe=re.value)==null?void 0:qe[wt]:J[Ue]=ge[Ue]}ge=Object.assign(J,re.value),se=ge}return ge});if(g.value=oe,z){const ge=u3(me.value,Ne.value,oe);dt(ge),C.value=!1,re.value=void 0,r("change",{content:ge,singleContent:se,index:i==null?void 0:i.index,buttonName:U.value,column:a.value})}},vt=async(z,B,k)=>{var qe,J,Ue,wt,Ut,Wt,Zt,ft,Pt,Re,Xt;we.value=k==null?void 0:k.prop;const te=De.cloneDeep(i.itemData),se=te==null?void 0:te.map(Ie=>{var Rt;return(Ie==null?void 0:Ie.key)==="header"&&((Rt=Ie.contents)==null||Rt.map((Pe,kt)=>{var Je,bt,w,H,$,Y,j,pe,Te,Ge,Fe,nt,ct,tt,Et,Dt,ve,ot,ut;return Pe.type=Pe!=null&&Pe.type?Pe.type:(H=(w=(bt=(Je=Pe==null?void 0:Pe.key)==null?void 0:Je.split("$"))==null?void 0:bt[1])==null?void 0:w.split("("))!=null&&H[0]?(Y=($=pn.FormType)==null?void 0:$.find(je=>{var ln,zt,Ke,_e;return(je==null?void 0:je.key)===((_e=(Ke=(zt=(ln=Pe==null?void 0:Pe.key)==null?void 0:ln.split("$"))==null?void 0:zt[1])==null?void 0:Ke.split("("))==null?void 0:_e[0])}))==null?void 0:Y.value:"Input",Pe.options=Pe!=null&&Pe.options?Pe.options:((Te=(pe=(j=Pe==null?void 0:Pe.key)==null?void 0:j.split("$"))==null?void 0:pe[1])==null?void 0:Te.length)>0?(ct=(nt=Mo((Fe=(Ge=Pe==null?void 0:Pe.key)==null?void 0:Ge.split("$"))==null?void 0:Fe[1]))==null?void 0:nt.split(","))==null?void 0:ct.map(je=>({label:je,value:je})):[],(tt=Pe==null?void 0:Pe.key)!=null&&tt.includes("$")&&(Pe.key=(Dt=(Et=Pe==null?void 0:Pe.key)==null?void 0:Et.split("$"))==null?void 0:Dt[0]),Pe.value=(ve=Object.values(B))==null?void 0:ve[kt],Pe.optionUrl=Pe!=null&&Pe.formMenuSelect&&((ot=Pe==null?void 0:Pe.formMenuSelect)==null?void 0:ot.length)>0?{groupSelect:(ut=Pe==null?void 0:Pe.groupSelect)==null?void 0:ut.split(/[::]/).map(je=>je.trim()),menuSelect:Pe==null?void 0:Pe.formMenuSelect,selectRelateType:"",type:(Pe==null?void 0:Pe.formType)??(Pe!=null&&Pe.groupSelect?"Select":"")}:null,Pe})),Ie});let oe=De.cloneDeep(ne.value),ue=(J=(qe=De.cloneDeep(se))==null?void 0:qe.find(Ie=>(Ie==null?void 0:Ie.key)==="header"))==null?void 0:J.contents;oe=oe==null?void 0:oe.map(Ie=>{var Rt;return Ie.value=(Rt=ue==null?void 0:ue.find((Pe,kt)=>kt===(Ie==null?void 0:Ie.id)))==null?void 0:Rt.value,Ie});let ge="",be=(Ut=(wt=(Ue=De.cloneDeep(se))==null?void 0:Ue.find(Ie=>(Ie==null?void 0:Ie.key)==="header"))==null?void 0:wt.contents)==null?void 0:Ut.find((Ie,Rt)=>{var Pe,kt;return(Ie==null?void 0:Ie.label)===we.value||(Rt==null?void 0:Rt.toString())===((kt=(Pe=we.value)==null?void 0:Pe.split("a"))==null?void 0:kt[1].toString())});if((ft=(Zt=(Wt=De.cloneDeep(se))==null?void 0:Wt.find(Ie=>(Ie==null?void 0:Ie.key)==="header"))==null?void 0:Zt.contents)==null||ft.forEach(Ie=>{var Rt,Pe,kt,Je,bt;ge===""&&((kt=(Pe=(Rt=Ie==null?void 0:Ie.optionUrl)==null?void 0:Rt.groupSelect)==null?void 0:Pe[1])!=null&&kt.includes("["))&&(ge=(bt=(Je=Ie==null?void 0:Ie.optionUrl)==null?void 0:Je.groupSelect)==null?void 0:bt[1])}),(Pt=be==null?void 0:be.optionUrl)!=null&&Pt.menuSelect){let Ie=await vl(be),Rt;if(Ie==null||Ie.forEach(Pe=>{var kt,Je,bt,w,H,$,Y,j,pe,Te;ge===((Je=(kt=be==null?void 0:be.optionUrl)==null?void 0:kt.groupSelect)==null?void 0:Je[1])&&((H=(w=(bt=be==null?void 0:be.optionUrl)==null?void 0:bt.groupSelect)==null?void 0:w[1])!=null&&H.includes("["))&&((Te=De.cloneDeep(Pe))==null?void 0:Te[(pe=(j=(Y=($=be==null?void 0:be.optionUrl)==null?void 0:$.groupSelect)==null?void 0:Y[1])==null?void 0:j.replaceAll("[",""))==null?void 0:pe.replaceAll("]","")])===(be==null?void 0:be.value)&&(Rt=Pe)}),Rt){let Pe=De.cloneDeep(oe);Pe=Pe==null?void 0:Pe.map(Je=>{var bt,w,H,$,Y,j,pe,Te,Ge,Fe,nt;return(Rt!=null&&Rt[Je==null?void 0:Je.label]||Rt!=null&&Rt[($=(H=(w=(bt=Je==null?void 0:Je.optionUrl)==null?void 0:bt.groupSelect)==null?void 0:w[1])==null?void 0:H.replaceAll("[",""))==null?void 0:$.replaceAll("]","")])&&((pe=(j=(Y=Je==null?void 0:Je.optionUrl)==null?void 0:Y.groupSelect)==null?void 0:j[1])!=null&&pe.includes("["))&&(Je.value=(Rt==null?void 0:Rt[Je==null?void 0:Je.label])||(Rt==null?void 0:Rt[(nt=(Fe=(Ge=(Te=Je==null?void 0:Je.optionUrl)==null?void 0:Te.groupSelect)==null?void 0:Ge[1])==null?void 0:Fe.replaceAll("[",""))==null?void 0:nt.replaceAll("]","")])),Je}),g.value=(Re=De.cloneDeep(g.value))==null?void 0:Re.map(Je=>{if((Je==null?void 0:Je.id)===(B==null?void 0:B.id)){const bt={};return Pe==null||Pe.forEach(w=>{bt[w.name]=w.value}),bt.id=Je==null?void 0:Je.id,bt}return Je});let kt=De.cloneDeep(Pe);kt=kt==null?void 0:kt.map(Je=>{var bt,w,H,$;return(w=(bt=Je==null?void 0:Je.optionUrl)==null?void 0:bt.menuSelect)!=null&&w.some(Y=>Y==null?void 0:Y.includes)&&(Je.optionUrl.menuSelect=($=(H=Je==null?void 0:Je.optionUrl)==null?void 0:H.menuSelect)==null?void 0:$.map(Y=>{var j,pe,Te,Ge;if(Y!=null&&Y.includes("[")){let Fe=(pe=(j=Y==null?void 0:Y.replaceAll("[","").replaceAll("]",""))==null?void 0:j.split(":"))==null?void 0:pe[1];Y=(Ge=(Te=De.cloneDeep(Pe))==null?void 0:Te.find(nt=>(nt==null?void 0:nt.label)===Fe))==null?void 0:Ge.value}return Y})),Je}),g.value=(Xt=De.cloneDeep(g.value))==null?void 0:Xt.map(Je=>{if((Je==null?void 0:Je.id)===(B==null?void 0:B.id)){const bt={};return kt==null||kt.forEach(w=>{bt[w.name]=w.value}),bt.id=Je==null?void 0:Je.id,bt}return Je})}}},gt=async z=>{var ge,be,qe,J,Ue,wt,Ut,Wt,Zt;if(!z)return;re.value=z,r("onFormChange",z);const B=De.cloneDeep(i.itemData),k=B==null?void 0:B.map(ft=>{var Pt;return(ft==null?void 0:ft.key)==="header"&&((Pt=ft.contents)==null||Pt.map((Re,Xt)=>{var Ie,Rt,Pe,kt,Je,bt,w,H,$,Y,j,pe,Te,Ge,Fe,nt,ct,tt,Et;return Re.type=Re!=null&&Re.type?Re.type:(kt=(Pe=(Rt=(Ie=Re==null?void 0:Re.key)==null?void 0:Ie.split("$"))==null?void 0:Rt[1])==null?void 0:Pe.split("("))!=null&&kt[0]?(bt=(Je=pn.FormType)==null?void 0:Je.find(Dt=>{var ve,ot,ut,je;return(Dt==null?void 0:Dt.key)===((je=(ut=(ot=(ve=Re==null?void 0:Re.key)==null?void 0:ve.split("$"))==null?void 0:ot[1])==null?void 0:ut.split("("))==null?void 0:je[0])}))==null?void 0:bt.value:"Input",Re.options=Re!=null&&Re.options?Re.options:(($=(H=(w=Re==null?void 0:Re.key)==null?void 0:w.split("$"))==null?void 0:H[1])==null?void 0:$.length)>0?(Te=(pe=Mo((j=(Y=Re==null?void 0:Re.key)==null?void 0:Y.split("$"))==null?void 0:j[1]))==null?void 0:pe.split(","))==null?void 0:Te.map(Dt=>({label:Dt,value:Dt})):[],(Ge=Re==null?void 0:Re.key)!=null&&Ge.includes("$")&&(Re.key=(nt=(Fe=Re==null?void 0:Re.key)==null?void 0:Fe.split("$"))==null?void 0:nt[0]),Re.value=(ct=Object.values(z))==null?void 0:ct[Xt],Re.optionUrl=Re!=null&&Re.formMenuSelect&&((tt=Re==null?void 0:Re.formMenuSelect)==null?void 0:tt.length)>0?{groupSelect:(Et=Re==null?void 0:Re.groupSelect)==null?void 0:Et.split(/[::]/).map(Dt=>Dt.trim()),menuSelect:Re==null?void 0:Re.formMenuSelect,selectRelateType:"",type:(Re==null?void 0:Re.formType)??(Re!=null&&Re.groupSelect?"Select":"")}:null,Re})),ft});let te=De.cloneDeep(ne.value),se=(be=(ge=De.cloneDeep(k))==null?void 0:ge.find(ft=>(ft==null?void 0:ft.key)==="header"))==null?void 0:be.contents;if(te=te==null?void 0:te.map(ft=>{var Pt;return ft.value=(Pt=se==null?void 0:se.find((Re,Xt)=>Xt===(ft==null?void 0:ft.id)))==null?void 0:Pt.value,ft}),!st.value)return;let oe="",ue=(Ue=(J=(qe=De.cloneDeep(k))==null?void 0:qe.find(ft=>(ft==null?void 0:ft.key)==="header"))==null?void 0:J.contents)==null?void 0:Ue.find((ft,Pt)=>{var Re,Xt;return(ft==null?void 0:ft.label)===we.value||(Pt==null?void 0:Pt.toString())===((Xt=(Re=we.value)==null?void 0:Re.split("a"))==null?void 0:Xt[1].toString())});if((Wt=(Ut=(wt=De.cloneDeep(k))==null?void 0:wt.find(ft=>(ft==null?void 0:ft.key)==="header"))==null?void 0:Ut.contents)==null||Wt.forEach(ft=>{var Pt,Re,Xt,Ie,Rt;oe===""&&((Xt=(Re=(Pt=ft==null?void 0:ft.optionUrl)==null?void 0:Pt.groupSelect)==null?void 0:Re[1])!=null&&Xt.includes("["))&&(oe=(Rt=(Ie=ft==null?void 0:ft.optionUrl)==null?void 0:Ie.groupSelect)==null?void 0:Rt[1])}),(Zt=ue==null?void 0:ue.optionUrl)!=null&&Zt.menuSelect&&st.value){let ft=await vl(ue),Pt;if(ft==null||ft.forEach(Re=>{var Xt,Ie,Rt,Pe,kt,Je,bt,w,H,$;oe===((Ie=(Xt=ue==null?void 0:ue.optionUrl)==null?void 0:Xt.groupSelect)==null?void 0:Ie[1])&&((kt=(Pe=(Rt=ue==null?void 0:ue.optionUrl)==null?void 0:Rt.groupSelect)==null?void 0:Pe[1])!=null&&kt.includes("["))&&(($=De.cloneDeep(Re))==null?void 0:$[(H=(w=(bt=(Je=ue==null?void 0:ue.optionUrl)==null?void 0:Je.groupSelect)==null?void 0:bt[1])==null?void 0:w.replaceAll("[",""))==null?void 0:H.replaceAll("]","")])===(ue==null?void 0:ue.value)&&(Pt=Re)}),Pt){let Re=De.cloneDeep(te);Re=Re==null?void 0:Re.map(Ie=>{var Rt,Pe,kt,Je,bt,w,H,$,Y,j,pe;return(Pt!=null&&Pt[Ie==null?void 0:Ie.label]||Pt!=null&&Pt[(Je=(kt=(Pe=(Rt=Ie==null?void 0:Ie.optionUrl)==null?void 0:Rt.groupSelect)==null?void 0:Pe[1])==null?void 0:kt.replaceAll("[",""))==null?void 0:Je.replaceAll("]","")])&&((H=(w=(bt=Ie==null?void 0:Ie.optionUrl)==null?void 0:bt.groupSelect)==null?void 0:w[1])!=null&&H.includes("["))&&(Ie.value=(Pt==null?void 0:Pt[Ie==null?void 0:Ie.label])||(Pt==null?void 0:Pt[(pe=(j=(Y=($=Ie==null?void 0:Ie.optionUrl)==null?void 0:$.groupSelect)==null?void 0:Y[1])==null?void 0:j.replaceAll("[",""))==null?void 0:pe.replaceAll("]","")])),Ie}),ne.value=Re;let Xt=De.cloneDeep(Re);Xt=Xt==null?void 0:Xt.map(Ie=>{var Rt,Pe,kt,Je;return(Pe=(Rt=Ie==null?void 0:Ie.optionUrl)==null?void 0:Rt.menuSelect)!=null&&Pe.some(bt=>bt==null?void 0:bt.includes)&&(Ie.optionUrl.menuSelect=(Je=(kt=Ie==null?void 0:Ie.optionUrl)==null?void 0:kt.menuSelect)==null?void 0:Je.map(bt=>{var w,H,$,Y;if(bt!=null&&bt.includes("[")){let j=(H=(w=bt==null?void 0:bt.replaceAll("[","").replaceAll("]",""))==null?void 0:w.split(":"))==null?void 0:H[1];bt=(Y=($=De.cloneDeep(Re))==null?void 0:$.find(pe=>(pe==null?void 0:pe.label)===j))==null?void 0:Y.value}return bt})),Ie}),ne.value=Xt}}st.value=!1},Be=z=>z?(z==null?void 0:z.toUpperCase())==="INPUT"?"TEXTAREA":z:"TEXTAREA",St=z=>{var k,te,se,oe,ue,ge;Qe("");const B=(k=ne.value)==null?void 0:k.reduce((be,qe)=>(be[qe.name]=qe.value,be),{});((te=Object.keys(B))==null?void 0:te.length)>0&&(re.value=B,p.value="",b.value=(se=g.value)==null?void 0:se.length,X.value=(oe=Q.value)==null?void 0:oe.filter(be=>(be==null?void 0:be.label)!=="新增"),a.value=(ge=(ue=o.value)==null?void 0:ue.filter(be=>(be==null?void 0:be.label)!=="操作"))==null?void 0:ge.map(be=>{var qe;return{...be,type:"edit",optionUrl:be!=null&&be.formMenuSelect&&((qe=be==null?void 0:be.formMenuSelect)==null?void 0:qe.length)>0?{groupSelect:be==null?void 0:be.groupSelect,menuSelect:be==null?void 0:be.formMenuSelect,selectRelateType:"",type:be==null?void 0:be.formType}:null,columnType:Be(be==null?void 0:be.formType)}}),z==="createClick"&&Ye(!1))};V.watch(()=>[i.itemData,K.value,Ce.value,Ne.value,_==null?void 0:_.value],()=>{var be,qe,J,Ue,wt,Ut,Wt,Zt,ft,Pt,Re,Xt,Ie,Rt,Pe,kt,Je,bt,w,H,$,Y,j,pe,Te,Ge,Fe,nt,ct,tt,Et,Dt;const z=(be=De.cloneDeep(i.itemData))==null?void 0:be.filter(ve=>(ve==null?void 0:ve.key)==="header");(qe=De.cloneDeep(i.itemData))==null||qe.filter(ve=>(ve==null?void 0:ve.key)==="tableIndexColumn")[0];const B=(J=De.cloneDeep(i.itemData))==null?void 0:J.find(ve=>(ve==null?void 0:ve.key)==="page"),k=(Ue=De.cloneDeep(i.itemData))==null?void 0:Ue.find(ve=>(ve==null?void 0:ve.key)==="rowButton"),te=(wt=De.cloneDeep(i.itemData))==null?void 0:wt.find(ve=>(ve==null?void 0:ve.key)==="extraButton"),se=(Ut=De.cloneDeep(i.itemData))==null?void 0:Ut.filter(ve=>(ve==null?void 0:ve.key)==="tableContents"),oe=(Wt=De.cloneDeep(i.itemData))==null?void 0:Wt.filter(ve=>(ve==null?void 0:ve.key)==="tableIndex");y.value=(Pt=(ft=(Zt=De.cloneDeep(i.itemData))==null?void 0:Zt.filter(ve=>(ve==null?void 0:ve.key)==="tableToForm"))==null?void 0:ft[0])==null?void 0:Pt.contents,M.value=(B==null?void 0:B.contents)??!1;let ue=[];K.value===""?ue=z==null?void 0:z[0]:ue=(z==null?void 0:z.find(ve=>(ve==null?void 0:ve.selectLabel)==="("+K.value+")"))??(z==null?void 0:z.find(ve=>!(ve!=null&&ve.selectLabel)));let ge=[];if(K.value===""?ge=oe==null?void 0:oe[0]:ge=(oe==null?void 0:oe.find(ve=>(ve==null?void 0:ve.selectLabel)==="("+K.value+")"))??(oe==null?void 0:oe.find(ve=>!(ve!=null&&ve.selectLabel))),((Re=ue==null?void 0:ue.contents)==null?void 0:Re.length)>0){let ve=[];if(ue!=null&&ue.contents.some(Ke=>Array.isArray(Ke)&&(Ke==null?void 0:Ke.find(_e=>_e.children))))Ne.value===""?ve=(Ie=(Xt=pn.getGradeColumns(De.cloneDeep(ue==null?void 0:ue.contents)))==null?void 0:Xt[0])==null?void 0:Ie.filter(Ke=>!Array.isArray(Ke)):(Ne.value.split("-"),ve=(Rt=pn.getGradeColumns(De.cloneDeep(ue==null?void 0:ue.contents)))==null?void 0:Rt[0]);else{const Ke=ue!=null&&ue.contents.some(_e=>Array.isArray(_e))?(Pe=ue==null?void 0:ue.contents)==null?void 0:Pe[0]:ue==null?void 0:ue.contents;Ke==null||Ke.forEach((_e,qt)=>{var _n;ve.push({label:(_e==null?void 0:_e.label)??"",prop:(_e==null?void 0:_e.label)==="操作"?"operate":(_e==null?void 0:_e.prop)??"a"+qt,width:_e!=null&&_e.width?parseInt(_e.width):"",fixed:(_e==null?void 0:_e.fixed)??void 0,sortable:(_e==null?void 0:_e.sortable)??!1,align:(_e==null?void 0:_e.align)??"left",showOverflowTooltip:(_e==null?void 0:_e.showOverflowTooltip)??!0,isNotDrag:(_e==null?void 0:_e.isNotDrag)??!1,isEditCol:(_e==null?void 0:_e.isEditCol)??!1,isOperate:(_e==null?void 0:_e.isOperate)??!1,id:(_e==null?void 0:_e.id)??qt,type:(_e==null?void 0:_e.label)==="操作"?"operate":void 0,formType:(_e==null?void 0:_e.formType)??(_e!=null&&_e.groupSelect?"Select":""),isTableColHidden:_e==null?void 0:_e.isTableColHidden,isFormColHidden:_e==null?void 0:_e.isFormColHidden,options:(_e==null?void 0:_e.options)??[],value:(_e==null?void 0:_e.value)??"",formMenuSelect:(_e==null?void 0:_e.formMenuSelect)??[],isRoute:(_e==null?void 0:_e.isRoute)??!1,groupSelect:_e!=null&&_e.groupSelect?(_n=_e==null?void 0:_e.groupSelect)==null?void 0:_n.replaceAll('"',"").split(":"):[]})})}a.value=ve,l.value=ve,n.value=(kt=a.value)==null?void 0:kt.map(Ke=>Ke==null?void 0:Ke.label);let ot=(bt=(Je=pn.getAllLeafNodes(De.cloneDeep(a.value)))==null?void 0:Je.filter(Ke=>(Ke==null?void 0:Ke.type)!=="operate"))==null?void 0:bt.map((Ke,_e)=>({prop:(Ke==null?void 0:Ke.prop)??"a"+_e,column:Ke.label}));G.value=ot;let ut=[];K.value===""?ut=se==null?void 0:se[0]:ut=(se==null?void 0:se.find(Ke=>(Ke==null?void 0:Ke.selectLabel)==="("+K.value+")"))??(se==null?void 0:se.find(Ke=>!(Ke!=null&&Ke.selectLabel)));let je=Array.isArray((w=ut==null?void 0:ut.contents)==null?void 0:w[0])&&((H=ut==null?void 0:ut.contents)!=null&&H[0].every(Ke=>Array.isArray(Ke)))?($=De.cloneDeep(ut==null?void 0:ut.contents))==null?void 0:$[0]:De.cloneDeep(ut==null?void 0:ut.contents);ge!=null&&ge.contents&&((Y=ge==null?void 0:ge.contents)==null?void 0:Y.length)!==0&&(je=(j=De.cloneDeep(je))==null?void 0:j.map((Ke,_e)=>{if(!Array.isArray(Ke)){let qt={};for(let _n in Ke)_n!=="id"&&_n!=="index"&&(qt[_n]=Ke[_n]);Ke=Object.values(qt)}return Ke}));const ln=!!((pe=a.value)!=null&&pe.find(Ke=>Ke.prop==="index"));je=Xu(De.cloneDeep(je),ge==null?void 0:ge.contents,ln);const zt=[];je==null||je.forEach((Ke,_e)=>{var _n;let qt={};if(Array.isArray(Ke)){let It=[];Ke==null||Ke.filter(sn=>!(sn!=null&&sn.id)).forEach((sn,an)=>{var cn,un,hi,kn,xt,ki;if((cn=ot==null?void 0:ot[an])!=null&&cn.prop&&!Array.isArray(sn)){let x={};x[ot[an].column]=sn,_!=null&&_.value&&((un=_==null?void 0:_.value)==null?void 0:un.length)>0&&((hi=_==null?void 0:_.value)!=null&&hi.find(v=>JSON.stringify(v==null?void 0:v[0])===JSON.stringify(x)))&&(It=(kn=_==null?void 0:_.value)==null?void 0:kn.find(v=>JSON.stringify(v==null?void 0:v[0])===JSON.stringify(x))),It&&It.length>0?qt[ot[an].prop]=It!=null&&It.find(v=>{var R;return((R=Object.keys(v))==null?void 0:R[0])===ot[an].column})?(xt=It==null?void 0:It.find(v=>{var R;return((R=Object.keys(v))==null?void 0:R[0])===ot[an].column}))==null?void 0:xt[ot[an].column]:sn:qt[ot[an].prop]=sn}else Array.isArray(sn)&&((ki=ot[an])!=null&&ki.prop?qt[ot[an].prop]=sn:qt.children=Wu(sn,ot))})}else qt=Ke;Array.isArray(Ke)&&Ke.some(It=>It==null?void 0:It.id)?zt.push(Object.assign(qt,{id:(_n=Ke==null?void 0:Ke.find(It=>It.id))==null?void 0:_n.id})):qt.id?zt.push(qt):zt.push(Object.assign(qt,{id:_e.toString()}))}),g.value=zt}else a.value=[],o.value=[],g.value=[];((Te=k==null?void 0:k.contents)==null?void 0:Te.length)>0?N.value=k==null?void 0:k.contents:N.value=[],((Ge=te==null?void 0:te.contents)==null?void 0:Ge.length)>0?(((nt=(Fe=De.cloneDeep(a.value))==null?void 0:Fe.filter(ot=>(ot==null?void 0:ot.type)!=="operate"))==null?void 0:nt.every(ot=>(ot==null?void 0:ot.formType)==="Select"))?te==null||te.contents.push({label:"新增子页面"}):te.contents=(ct=te==null?void 0:te.contents)==null?void 0:ct.filter(ot=>(ot==null?void 0:ot.label)!=="修改模板"),X.value=te==null?void 0:te.contents,Q.value=te==null?void 0:te.contents):(X.value=[],Q.value=[]),b.value=((tt=g==null?void 0:g.value)==null?void 0:tt.length)??0,me.value=g.value,Le.value==="edit"&&(a.value=(Dt=(Et=o.value)==null?void 0:Et.filter(ve=>(ve==null?void 0:ve.label)!=="操作"))==null?void 0:Dt.map(ve=>{var ot;return{...ve,type:"edit",optionUrl:ve!=null&&ve.formMenuSelect&&((ot=ve==null?void 0:ve.formMenuSelect)==null?void 0:ot.length)>0?{groupSelect:ve==null?void 0:ve.groupSelect,menuSelect:ve==null?void 0:ve.formMenuSelect,selectRelateType:"",type:ve==null?void 0:ve.formType}:null}}),St())},{deep:!0,immediate:!0}),V.watch(()=>i==null?void 0:i.operatingForm,z=>{z!=null&&z.form&&(Qe(z==null?void 0:z.form),U.value=z==null?void 0:z.dialogTitle,W.value=!0,C.value=!0)},{immediate:!0,deep:!0});const q=z=>{Le.value=z,z==="edit"?St("viewChange"):(X.value=Q.value,a.value=l.value)};V.ref(!1);const Xe=z=>{St("createClick")},Se=(z,B,k)=>{var te,se;re.value=De.cloneDeep(z),p.value=z==null?void 0:z.id,b.value=(te=g.value)==null?void 0:te.length,U.value=(z==null?void 0:z.id)===((se=g.value)==null?void 0:se.length)?"新增":"编辑",Ye(!0)};return(z,B)=>{var be,qe;const k=V.resolveComponent("el-icon"),te=V.resolveComponent("el-popover"),se=V.resolveComponent("svg-icon"),oe=V.resolveComponent("el-checkbox"),ue=V.resolveComponent("el-checkbox-group"),ge=V.resolveComponent("el-button");return V.openBlock(),V.createElementBlock("div",f3,[(V.openBlock(),V.createBlock(si.ssTable,{columns:a.value,checkedColumns:n.value,key:a.value,tableData:g.value,viewport:Le.value,isShowPagination:M.value,isShowEdit:!1,isShowDelete:!1,onDbClickRow:We,extraButton:X.value,onContentClick:rn,onRowClick:A,onSelectChange:Tt,onCellChange:Se,onChange:vt},V.createSlots({headerButton:V.withCtx(J=>[s.showHeader?(V.openBlock(),V.createBlock(rd,{key:0,compName:s.compName,buttons:J.buttons,onButtonClick:B[0]||(B[0]=Ue=>fe(Ue,"",{})),columns:a.value,onFilter:mt},null,8,["compName","buttons","columns"])):V.createCommentVNode("",!0)]),viewport:V.withCtx(()=>{var J;return[((J=g.value)==null?void 0:J.length)>0?(V.openBlock(),V.createElementBlock("div",g3,[V.createElementVNode("span",{title:"只读视图",onClick:B[2]||(B[2]=Ue=>q("read"))},[V.createVNode(se,{name:"readTable",class:"view-icon"})]),V.createElementVNode("span",{title:"编辑视图",onClick:B[3]||(B[3]=Ue=>q("edit"))},[V.createVNode(se,{name:"editTable",class:"view-icon"})])])):V.createCommentVNode("",!0)]}),rowCreate:V.withCtx(({row:J})=>[V.createElementVNode("span",{title:"新增",class:"row-create-wrap",onClick:Ue=>Xe()},[V.createVNode(se,{name:"rowCreate",style:{width:"10px",height:"10px"}})],8,_3)]),operateCol:V.withCtx(()=>[V.createVNode(te,{title:"选择显示列信息",placement:"left-start","popper-class":"menu-operate-popover",trigger:"click",onShow:Me},{reference:V.withCtx(()=>[V.createElementVNode("span",v3,[V.createVNode(se,{name:"operate",style:{width:"15px",height:"15px",cursor:"pointer"}})])]),default:V.withCtx(()=>[V.createElementVNode("div",x3,[V.createVNode(ue,{modelValue:n.value,"onUpdate:modelValue":B[4]||(B[4]=J=>n.value=J),style:{height:"100%"},min:2,ref_key:"checkboxGroupRef",ref:t},{default:V.withCtx(()=>[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(O.value,J=>(V.openBlock(),V.createBlock(oe,{key:J.label,label:J.label,value:J.label,style:{width:"100%",marginRight:0}},{default:V.withCtx(()=>[V.createElementVNode("span",null,V.toDisplayString(J.label),1),V.createVNode(se,{name:"drag",class:"col-drag-icon",style:{width:"15px",height:"15px",cursor:"move",color:"grey",position:"absolute",right:"5px"}})]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1})]),_:2},[((be=N.value)==null?void 0:be.length)>0?{name:"actions",fn:V.withCtx(({item:J})=>[V.createVNode(te,{title:"",placement:"left-start","popper-class":"menu-operate-popover"},{reference:V.withCtx(()=>[V.createVNode(k,null,{default:V.withCtx(()=>[V.createVNode(V.unref(De.more_filled_default))]),_:1})]),default:V.withCtx(()=>[V.createElementVNode("div",p3,[(V.openBlock(!0),V.createElementBlock(V.Fragment,null,V.renderList(Ct(N.value,J),(Ue,wt)=>(V.openBlock(),V.createElementBlock("div",{class:"menu-config-item",key:wt,onClick:Ut=>fe(Ue==null?void 0:Ue.label,J,{extra:Ue})},[V.createElementVNode("div",{style:V.normalizeStyle({color:Ue==null?void 0:Ue.textColor}),class:"extra-button-label"},V.toDisplayString(Ue==null?void 0:Ue.label),5)],8,m3))),128))])]),_:2},1024)]),key:"0"}:void 0,((qe=g.value)==null?void 0:qe.length)>0?{name:"batchButton",fn:V.withCtx(J=>[V.createVNode(ad,{buttons:J.buttons,onButtonClick:B[1]||(B[1]=Ue=>fe(Ue,"",{}))},null,8,["buttons"])]),key:"1"}:void 0]),1032,["columns","checkedColumns","tableData","viewport","isShowPagination","extraButton"])),V.createVNode(si.ssDialog,{title:U.value,visible:C.value,width:ce.value,onBeforeDestroy:Gt},{default:V.withCtx(()=>[V.createElementVNode("div",y3,[V.createVNode(si.ssForm,{rowContents:ne.value,isEnableWrap:!1,onChange:gt,onClickTrigger:Lt,isEdit:E.value,onBlurChange:Mt},null,8,["rowContents","isEdit"])])]),footer:V.withCtx(()=>[W.value?(V.openBlock(),V.createElementBlock("div",M3,[V.createVNode(ge,{onClick:B[5]||(B[5]=J=>C.value=!1),id:"themeBorderButton"},{default:V.withCtx(()=>B[8]||(B[8]=[V.createTextVNode(V.toDisplayString("取消"))])),_:1,__:[8]}),V.createVNode(ge,{class:"ok-button",onClick:Ye,id:"themeButton"},{default:V.withCtx(()=>B[9]||(B[9]=[V.createTextVNode(V.toDisplayString("确认"))])),_:1,__:[9]})])):V.createCommentVNode("",!0)]),_:1},8,["title","visible","width"]),V.createVNode(si.ssDialog,{title:U.value,visible:D.value,width:S.value,onBeforeDestroy:B[7]||(B[7]=J=>D.value=!1)},{default:V.withCtx(()=>[V.createVNode(l3)]),footer:V.withCtx(()=>[V.createElementVNode("div",S3,[V.createVNode(ge,{onClick:B[6]||(B[6]=J=>D.value=!1),class:"cancel-button",id:"themeBorderButton"},{default:V.withCtx(()=>B[10]||(B[10]=[V.createTextVNode(V.toDisplayString("取消"))])),_:1,__:[10]}),V.createVNode(ge,{class:"ok-button",onClick:ee,id:"themeButton"},{default:V.withCtx(()=>B[11]||(B[11]=[V.createTextVNode(V.toDisplayString("确认"))])),_:1,__:[11]})])]),_:1},8,["title","visible","width"]),c.value?(V.openBlock(),V.createBlock(si.ssFilePreview,{key:0,fileDataList:h.value,onDestroy:F},null,8,["fileDataList"])):V.createCommentVNode("",!0)])}}},E3=xl._export_sfc(b3,[["__scopeId","data-v-33e0292c"]]);exports.ACESFilmicToneMapping=qh;exports.AmbientLight=wu;exports.Box3=ei;exports.BoxGeometry=Bi;exports.BufferAttribute=dn;exports.BufferGeometry=on;exports.CatmullRomCurve3=vu;exports.Color=_t;exports.Controls=Ip;exports.DirectionalLight=Au;exports.DoubleSide=wn;exports.Euler=Ln;exports.Float32BufferAttribute=Nt;exports.FrontSide=Xn;exports.GridHelper=Np;exports.Group=Kn;exports.HemisphereLight=Ep;exports.LOD=fu;exports.Line=ba;exports.LineBasicMaterial=Si;exports.LoadingManager=bu;exports.MOUSE=od;exports.MTLLoader=ha;exports.MathUtils=Ki;exports.Matrix4=At;exports.Mesh=Jt;exports.MeshPhongMaterial=Dn;exports.MeshStandardMaterial=yu;exports.OBJLoader=ca;exports.PCDLoader=zu;exports.PCFSoftShadowMap=Xh;exports.PerspectiveCamera=Sn;exports.Plane=Ui;exports.PlaneGeometry=hr;exports.PointLight=Eu;exports.Points=Cs;exports.PointsMaterial=Ii;exports.Quaternion=zn;exports.Ray=Fs;exports.SRGBColorSpace=$t;exports.STLLoader=nr;exports.Scene=Pl;exports.ShadowMaterial=cp;exports.Spherical=Tu;exports.TOUCH=ld;exports.TubeGeometry=Ol;exports.URDFLoader=Vu;exports.Vector2=Ze;exports.Vector3=I;exports.WebGLRenderer=vg;exports.Xe=Wg;exports.formGetOptions=Mo;exports.getSelectRow=vl;exports.ssTable=E3;exports.useFormToTableComp=Hu;exports.useModelLoader=i3;exports.useTableComp=Yu;exports.useUnit=Gu;
|