<!-- SOLID CITY · part 3304 -->
onstructor(e=new os([new le(.5,.5),new le(-.5,.5),new le(-.5,-.5),new le(.5,-.5)]),t={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];let n=this,s=[],r=[];for(let o=0,l=e.length;o<l;o++){let c=e[o];a(c)}this.setAttribute("position",new Qe(s,3)),this.setAttribute("uv",new Qe(r,2)),this.computeVertexNormals();function a(o){let l=[],c=t.curveSegments!==void 0?t.curveSegments:12,h=t.steps!==void 0?t.steps:1,f=t.depth!==void 0?t.depth:1,u=t.bevelEnabled!==void 0?t.bevelEnabled:!0,d=t.bevelThickness!==void 0?t.bevelThickness:.2,g=t.bevelSize!==void 0?t.bevelSize:d-.1,M=t.bevelOffset!==void 0?t.bevelOffset:0,m=t.bevelSegments!==void 0?t.bevelSegments:3,p=t.extrudePath,b=t.UVGenerator!==void 0?t.UVGenerator:mm,A,v=!1,T,E,C,x;if(p){A=p.getSpacedPoints(h),v=!0,u=!1;let te=p.isCatmullRomCurve3?p.closed:!1;T=p.computeFrenetFrames(h,te),E=new P,C=new P,x=new P}u||(m=0,d=0,g=0,M=0);let w=o.extractPoints(c),I=w.shape,D=w.holes;if(!is.isClockWise(I)){I=I.reverse();for(let te=0,re=D.length;te<re;te++){let ae=D[te];is.isClockWise(ae)&&(D[te]=ae.reverse())}}function V(te){let ae=10000000000000001e-36,oe=te[0];for(let ue=1;ue<=te.length;ue++){let ze=ue%te.length,Fe=te[ze],We=Fe.x-oe.x,qe=Fe.y-oe.y,L=We*We+qe*qe,pt=Math.max(Math.abs(Fe.x),Math.abs(Fe.y),Math.abs(oe.x),Math.abs(oe.y)),nt=ae*pt*pt;if(L<=nt){te.splice(ze,1),ue--;continue}oe=Fe}}V(I),D.forEach(V);let N=D.length,z=I;for(let te=0;te<N;te++){let re=D[te];I=I.concat(re)}function q(te,re,ae){return re||ke("ExtrudeGeometry: vec does not exist"),te.clone().addScaledVector(re,ae)}let X=I.length;function ie(te,re,ae){let oe,ue,ze,Fe=te.x-re.x,We=te.y-re.y,qe=ae.x-te.x,L=ae.y-te.y,pt=Fe*Fe+We*We,nt=Fe*L-We*qe;if(Math.abs(nt)>Number.EPSILON){let R=Math.sqrt(pt),_=Math.sqrt(qe*qe+L*L),B=re.x-We/R,G=re.y+Fe/R,Z=ae.x-L/_,ce=ae.y+qe/_,he=((Z-B)*L-(ce-G)*qe)/(Fe*L-We*qe);oe=B+Fe*he-te.x,ue=G+We*he-te.y;let J=oe*oe+ue*ue;if(J<=2)return new le(oe,ue);ze=Math.sqrt(J/2)}else{let R=!1;Fe>Number.EPSILON?qe>Number.EPSILON&&(R=!0):Fe<-Number.EPSILON?qe<-Number.EPSILON&&(R=!0):Math.sign(We)===Math.sign(L)&&(R=!0),R?(oe=-We,ue=Fe,ze=Math.sqrt(pt)):(oe=Fe,ue=We,ze=Math.sqrt(pt/2))}return new le(oe/ze,ue/ze)}let Y=[];for(let te=0,re=z.length,ae=re-1,oe=te+1;te<re;te++,ae++,oe++)ae===re&&(ae=0),oe===re&&(oe=0),Y[te]=ie(z[te],z[ae],z[oe]);let j=[],ne,Pe=Y.concat();for(let te=0,re=N;te<re;te++){let ae=D[te];ne=[];for(let oe=0,ue=ae.length,ze=ue-1,Fe=oe+1;oe<ue;oe++,ze++,Fe++)ze===ue&&(ze=0),Fe===ue&&(Fe=0),ne[oe]=ie(ae[oe],ae[ze],ae[Fe]);j.push(ne),Pe=Pe.concat(ne)}let we;if(m===0)we=is.triangulateShape(z,D);else{let te=[],re=[];for(let ae=0;ae<m;ae++){let oe=ae/m,ue=d*Math.cos(oe*Math.PI/2),ze=g*Math.sin(oe*Math.PI/2)+M;for(let Fe=0,We=z.length;Fe<We;Fe++){let qe=q(z[Fe],Y[Fe],ze);ve(qe.x,qe.y,-ue),oe===0&&te.push(qe)}for(let Fe=0,We=N;Fe<We;Fe++){let qe=D[Fe];ne=j[Fe];let L=[];for(let pt=0,nt=qe.length;pt<nt;pt++){let R=q(qe[pt],ne[pt],ze);ve(R.x,R.y,-ue),oe===0&&L.push(R)}oe===0&&re.push(L)}}we=is.triangulateShape(te,re)}let dt=we.length,tt=g+M;for(let te=0;te<X;te++){let re=u?q(I[te],Pe[te],tt):I[te];v?(C.copy(T.normals[0]).multiplyScalar(re.x),E.copy(T.binormals[0]).multiplyScalar(re.y),x.copy(A[0]).add(C).add(E),ve(x.x,x.y,x.z)):ve(re.x,re.y,0)}for(let te=1;te<=h;te++)for(let re=0;re<X;re++){let ae=u?q(I[re],Pe[re],tt):I[re];v?(C.copy(T.normals[te]).multiplyScalar(ae.x),E.copy(T.binormals[te]).multiplyScalar(ae.y),x.copy(A[te]).add(C).add(E),ve(x.x,x.y,x.z)):ve(ae.x,ae.y,f/h*te)}for(let te=m-1;te>=0;te--){let re=te/m,ae=d*Math.cos(re*Math.PI/2),oe=g*Math.sin(re*Math.PI/2)+M;for(let ue=0,ze=z.length;ue<ze;ue++){let Fe=q(z[ue],Y[ue],oe);ve(Fe.x,Fe.y,f+ae)}for(let ue=0,ze=D.length;ue<ze;ue++){let Fe=D[ue];ne=j[ue];for(let We=0,qe=Fe.length;We<qe;We++){let L=q(Fe[We],ne[We],oe);v?ve(L.x,L.y+A[h-1].y,A[h-1].x+ae):ve(L.x,L.y,f+ae)}}}ot(),$();function ot(){let te=s.length/3;if(u){let re=0,ae=X*re;for(let oe=0;oe<dt;oe++){let ue=we[oe];Ve(ue[2]+ae,ue[1]+ae,ue[0]+ae)}re=h+m*2,ae=X*re;for(let oe=0;oe<dt;oe++){let ue=we[oe];Ve(ue[0]+ae,ue[1]+ae,ue[2]+ae)}}else{for(let re=0;re<dt;re++){let ae=we[re];Ve(ae[2],ae[1],ae[0])}for(let re=0;re<dt;re++){let ae=we[re];Ve(ae[0]+X*h,ae[1]+X*h,ae[2]+X*h)}}n.addGroup(te,s.length/3-te,0)}function $(){let te=s.length/3,re=0;ee(z,re),re+=z.length;for(let ae=0,oe=D.length;ae<oe;ae++){let ue=D[ae];ee(ue,re),re+=ue.length}n.addGroup(te,s.length/3-te,1)}function ee(te,re){let ae=te.length;for(;--ae>=0;){let oe=ae,ue=ae-1;ue<0&&(ue=te.length-1);for(let ze=0,Fe=h+m*2;ze<Fe;ze++){let We=X*ze,qe=X*(ze+1),L=re+oe+We,pt=re+ue+We,nt=re+ue+qe,R=re+oe+qe;be(L,pt,nt,R)}}}function ve(te,re,ae){l.push(te),l.push(re),l.push(ae)}function Ve(te,re,ae){Ge(te),Ge(re),Ge(ae);let oe=s.length/3,ue=b.generateTopUV(n,s,oe-3,oe-2,oe-1);xt(ue[0]),xt(ue[1]),xt(ue[2])}function be(te,re,ae,oe){Ge(te),Ge(re),Ge(oe),Ge(re),Ge(ae),Ge(oe);let ue=s.length/3,ze=b.generateSideWallUV(n,s,ue-6,ue-3,ue-2,ue-1);xt(ze[0]),xt