@mlightcad/geometry-engine 3.1.1 → 3.1.2

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.
@@ -1,4 +1,4 @@
1
- (function(H,te){typeof exports=="object"&&typeof module<"u"?te(exports,require("@mlightcad/common")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/common"],te):(H=typeof globalThis<"u"?globalThis:H||self,te(H["geometry-engine"]={},H.common))})(this,function(H,te){"use strict";const Ht=["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 Ur=1234567;const hr=Math.PI/180,lr=180/Math.PI;function Rr(){const N=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0,a=Math.random()*4294967295|0;return(Ht[N&255]+Ht[N>>8&255]+Ht[N>>16&255]+Ht[N>>24&255]+"-"+Ht[e&255]+Ht[e>>8&255]+"-"+Ht[e>>16&15|64]+Ht[e>>24&255]+"-"+Ht[i&63|128]+Ht[i>>8&255]+"-"+Ht[i>>16&255]+Ht[i>>24&255]+Ht[a&255]+Ht[a>>8&255]+Ht[a>>16&255]+Ht[a>>24&255]).toLowerCase()}function Be(N,e,i){return Math.max(e,Math.min(i,N))}function ur(N,e){return(N%e+e)%e}function Vr(N,e,i,a,l){return a+(N-e)*(l-a)/(i-e)}function Dr(N,e,i){return N!==e?(i-N)/(e-N):0}function cr(N,e,i){return(1-i)*N+i*e}function Fr(N,e,i,a){return cr(N,e,1-Math.exp(-i*a))}function Or(N,e=1){return e-Math.abs(ur(N,e*2)-e)}function qr(N,e,i){return N<=e?0:N>=i?1:(N=(N-e)/(i-e),N*N*(3-2*N))}function Gr(N,e,i){return N<=e?0:N>=i?1:(N=(N-e)/(i-e),N*N*N*(N*(N*6-15)+10))}function Kr(N,e){return N+Math.floor(Math.random()*(e-N+1))}function jr(N,e){return N+Math.random()*(e-N)}function Xr(N){return N*(.5-Math.random())}function Wr(N){N!==void 0&&(Ur=N);let e=Ur+=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 Zr(N){return N*hr}function Yr(N){return N*lr}function Hr(N){return(N&N-1)===0&&N!==0}function Qr(N){return Math.pow(2,Math.ceil(Math.log(N)/Math.LN2))}function Jr(N){return Math.pow(2,Math.floor(Math.log(N)/Math.LN2))}function An(N){const e=Math.PI*2;return(N%e+e)%e}function $r(N,e,i){return N>e&&N<i||N>i&&N<e}function ti(N,e,i,a=!1){return N=An(N),e=An(e),i=An(i),a?e>i?N<=e&&N>=i:N<=e||N>=i:e<i?N>=e&&N<=i:N>=e||N<=i}function vr(N){return N=Math.abs(N),N<1?0:Math.ceil(Math.log10(Math.abs(N)+1))}function ei(N,e=1e-7){const i=vr(N);return Math.max(Math.pow(10,i)*e,e)}const Ct={DEG2RAD:hr,RAD2DEG:lr,generateUUID:Rr,clamp:Be,euclideanModulo:ur,mapLinear:Vr,inverseLerp:Dr,lerp:cr,damp:Fr,pingpong:Or,smoothstep:qr,smootherstep:Gr,randInt:Kr,randFloat:jr,randFloatSpread:Xr,seededRandom:Wr,degToRad:Zr,radToDeg:Yr,isPowerOfTwo:Hr,ceilPowerOfTwo:Qr,floorPowerOfTwo:Jr,normalizeAngle:An,isBetween:$r,isBetweenAngle:ti,intPartLength:vr,relativeEps:ei},En=class En{constructor(e,i){this.x=0,this.y=0;const a=+(e!==void 0)+ +(i!==void 0);if(a!==0){if(a===1&&e instanceof Array){this.x=e[0],this.y=e[1];return}if(a===1){const{x:l,y:_}=e;this.x=l,this.y=_;return}if(a===2){this.x=e,this.y=i;return}throw te.AcCmErrors.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,i){return this.x=e,this.y=i,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,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;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 En(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,i){return this.x=e.x+i.x,this.y=e.y+i.y,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,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,i){return this.x=e.x-i.x,this.y=e.y-i.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)}applyMatrix2d(e){const i=this.x,a=this.y,l=e.elements;return this.x=l[0]*i+l[3]*a+l[6],this.y=l[1]*i+l[4]*a+l[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,i){return this.x=Math.max(e.x,Math.min(i.x,this.x)),this.y=Math.max(e.y,Math.min(i.y,this.y)),this}clampScalar(e,i){return this.x=Math.max(e,Math.min(i,this.x)),this.y=Math.max(e,Math.min(i,this.y)),this}clampLength(e,i){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(i,a)))}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 i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const a=this.dot(e)/i;return Math.acos(Math.max(-1,Math.min(1,a)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,a=this.y-e.y;return i*i+a*a}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this}lerpVectors(e,i,a){return this.x=e.x+(i.x-e.x)*a,this.y=e.y+(i.y-e.y)*a,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e}rotateAround(e,i){const a=Math.cos(i),l=Math.sin(i),_=this.x-e.x,g=this.y-e.y;return this.x=_*a-g*l+e.x,this.y=_*l+g*a+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(e=1e-7){return Math.min(Ct.relativeEps(this.x,e),Ct.relativeEps(this.y,e))}*[Symbol.iterator](){yield this.x,yield this.y}};En.EMPTY=Object.freeze(new En(0,0));let Tt=En;const Nn=class Nn{constructor(e,i,a,l,_,g,p,x,f){this.elements=[1,0,0,0,1,0,0,0,1],e!=null&&i!=null&&a!=null&&l!=null&&_!=null&&g!=null&&p!=null&&x!=null&&f!=null&&this.set(e,i,a,l,_,g,p,x,f)}set(e,i,a,l,_,g,p,x,f){const M=this.elements;return M[0]=e,M[1]=l,M[2]=p,M[3]=i,M[4]=_,M[5]=x,M[6]=a,M[7]=g,M[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const i=this.elements,a=e.elements;return i[0]=a[0],i[1]=a[1],i[2]=a[2],i[3]=a[3],i[4]=a[4],i[5]=a[5],i[6]=a[6],i[7]=a[7],i[8]=a[8],this}extractBasis(e,i,a){return e.setFromMatrix3Column(this,0),i.setFromMatrix3Column(this,1),a.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const i=e.elements;return this.set(i[0],i[4],i[8],i[1],i[5],i[9],i[2],i[6],i[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const a=e.elements,l=i.elements,_=this.elements,g=a[0],p=a[3],x=a[6],f=a[1],M=a[4],y=a[7],I=a[2],C=a[5],U=a[8],q=l[0],Z=l[3],j=l[6],wt=l[1],Pt=l[4],mt=l[7],Y=l[2],ct=l[5],lt=l[8];return _[0]=g*q+p*wt+x*Y,_[3]=g*Z+p*Pt+x*ct,_[6]=g*j+p*mt+x*lt,_[1]=f*q+M*wt+y*Y,_[4]=f*Z+M*Pt+y*ct,_[7]=f*j+M*mt+y*lt,_[2]=I*q+C*wt+U*Y,_[5]=I*Z+C*Pt+U*ct,_[8]=I*j+C*mt+U*lt,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=e,i[4]*=e,i[7]*=e,i[2]*=e,i[5]*=e,i[8]*=e,this}determinant(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8];return i*g*M-i*p*f-a*_*M+a*p*x+l*_*f-l*g*x}invert(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8],y=M*g-p*f,I=p*x-M*_,C=f*_-g*x,U=i*y+a*I+l*C;if(U===0)return this.set(0,0,0,0,0,0,0,0,0);const q=1/U;return e[0]=y*q,e[1]=(l*f-M*a)*q,e[2]=(p*a-l*g)*q,e[3]=I*q,e[4]=(M*i-l*x)*q,e[5]=(l*_-p*i)*q,e[6]=C*q,e[7]=(a*x-f*i)*q,e[8]=(g*i-a*_)*q,this}transpose(){let e;const i=this.elements;return e=i[1],i[1]=i[3],i[3]=e,e=i[2],i[2]=i[6],i[6]=e,e=i[5],i[5]=i[7],i[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const i=this.elements;return e.elements[0]=i[0],e.elements[1]=i[3],e.elements[2]=i[6],e.elements[3]=i[1],e.elements[4]=i[4],e.elements[5]=i[7],e.elements[6]=i[2],e.elements[7]=i[5],e.elements[8]=i[8],this}setUvTransform(e,i,a,l,_,g,p){const x=Math.cos(_),f=Math.sin(_);return this.set(a*x,a*f,-a*(x*g+f*p)+g+e,-l*f,l*x,-l*(-f*g+x*p)+p+i,0,0,1),this}scale(e,i){return this.premultiply(_r.makeScale(e,i)),this}rotate(e){return this.premultiply(_r.makeRotation(-e)),this}translate(e,i){return this.premultiply(_r.makeTranslation(e,i)),this}makeTranslation(e,i){return e instanceof Tt?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,i,0,0,1),this}makeRotation(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,-a,0,a,i,0,0,0,1),this}makeScale(e,i){return this.set(e,0,0,0,i,0,0,0,1),this}equals(e){const i=this.elements,a=e.elements;for(let l=0;l<9;l++)if(i[l]!==a[l])return!1;return!0}fromArray(e,i=0){for(let a=0;a<9;a++)this.elements[a]=e[a+i];return this}toArray(e=[],i=0){const a=this.elements;return e[i]=a[0],e[i+1]=a[1],e[i+2]=a[2],e[i+3]=a[3],e[i+4]=a[4],e[i+5]=a[5],e[i+6]=a[6],e[i+7]=a[7],e[i+8]=a[8],e}clone(){return new Nn().fromArray(this.elements)}};Nn.IDENTITY=Object.freeze(new Nn);let sn=Nn;const _r=new sn,He=1e-6,Lt=2*Math.PI,Bi={x:0,y:0},dr={x:0,y:0,z:0};class fr{constructor(){this.equalPointTol=He,this.equalVectorTol=He}equalPoint2d(e,i){return new Tt(e).sub(i).length()<this.equalPointTol}equalPoint3d(e,i){return new Q(e).sub(i).length()<this.equalPointTol}static equalToZero(e,i=He){return e<i&&e>-i}static equal(e,i,a=He){return Math.abs(e-i)<a}static great(e,i,a=He){return e-i>a}static less(e,i,a=He){return e-i<a}}const mr=new fr;function gr(N,e,i=!1){const a=N.x,l=N.y;let _=!1;const g=e.length;for(let p=0,x=g-1;p<g;x=p++){const f=e[p].x,M=e[p].y,y=e[x].x,I=e[x].y;let C=M>l!=I>l;i&&(C=M>=l!=I>=l),C&&a<(y-f)*(l-M)/(I-M)+f&&(_=!_)}return _}function ni(N,e){if(N.length===0||e.length===0)return!1;const i=new de().setFromPoints(N),a=new de().setFromPoints(e);if(!i.intersectsBox(a))return!1;for(let l=0;l<N.length;){if(gr(N[l],e,!0))return!0;l<N.length-1&&mr.equalPoint2d(N[l+1],N[l])&&++l,++l}return!1}const ri={isPointInPolygon:gr,isPolygonIntersect:ni};function ii(N,e){const i=[],a=e-1,l=N;for(let _=0;_<=l;_++)i.push(0);for(let _=1;_<=a-l;_++)i.push(_);for(let _=0;_<=l;_++)i.push(a-l+1);return i}function si(N,e){const i=e.length-1,a=N,l=[0];let _=0;for(let p=1;p<=i;p++){const x=e[p][0]-e[p-1][0],f=e[p][1]-e[p-1][1],M=e[p][2]-e[p-1][2],y=Math.sqrt(x*x+f*f+M*M);_+=y,l.push(_)}const g=[];for(let p=0;p<=a;p++)g.push(0);for(let p=1;p<=i-a;p++){const x=l[p]/_;g.push(x*(i-a+1))}for(let p=0;p<=a;p++)g.push(i-a+1);return g}function ai(N,e){const i=e.length-1,a=N,l=[0];let _=0;for(let p=1;p<=i;p++){const x=e[p][0]-e[p-1][0],f=e[p][1]-e[p-1][1],M=e[p][2]-e[p-1][2],y=Math.sqrt(x*x+f*f+M*M),I=Math.sqrt(y);_+=I,l.push(_)}const g=[];for(let p=0;p<=a;p++)g.push(0);for(let p=1;p<=i-a;p++){const x=l[p]/_;g.push(x*(i-a+1))}for(let p=0;p<=a;p++)g.push(i-a+1);return g}function nr(N,e,i,a){if(e===0)return i>=a[N]&&i<a[N+1]?1:0;const l=a[N+e]-a[N],_=a[N+e+1]-a[N+1],g=l>1e-10?(i-a[N])/l:0,p=_>1e-10?(a[N+e+1]-i)/_:0;return g*nr(N,e-1,i,a)+p*nr(N+1,e-1,i,a)}function Pn(N,e,i,a,l){const _=a.length-1,g=e;if(N=Math.max(i[g],Math.min(i[_+1],N)),Math.abs(N-i[_+1])<1e-8)return[...a[_]];if(Math.abs(N-i[g])<1e-8)return[...a[0]];const p=[0,0,0];let x=0;for(let f=0;f<=_;f++){const M=nr(f,g,N,i),y=l[f]*M;p[0]+=a[f][0]*y,p[1]+=a[f][1]*y,p[2]+=a[f][2]*y,x+=y}if(x<1e-10){const f=i[i.length-g-1];if(Math.abs(N-f)<1e-8)return[...a[_]];if(Math.abs(N-i[g])<1e-8)return[...a[0]]}return x>1e-10&&(p[0]/=x,p[1]/=x,p[2]/=x),p}function oi(N,e,i,a){const l=N,_=e[l],g=e[e.length-l-1];let p=0;const x=1e3,f=(g-_)/x;let M=Pn(_,N,e,i,a);for(let q=1;q<=x;q++){const Z=_+q*f,j=Pn(Z,N,e,i,a),wt=j[0]-M[0],Pt=j[1]-M[1],mt=j[2]-M[2];p+=Math.sqrt(wt*wt+Pt*Pt+mt*mt),M=j}const y=Pn(g,N,e,i,a),I=y[0]-M[0],C=y[1]-M[1],U=y[2]-M[2];return p+=Math.sqrt(I*I+C*C+U*U),p}function Ti(N){return N.map(e=>[...e])}class Mn{constructor(e=0,i=0,a=0,l=1){this._x=e,this._y=i,this._z=a,this._w=l}static slerpFlat(e,i,a,l,_,g,p){let x=a[l+0],f=a[l+1],M=a[l+2],y=a[l+3];const I=_[g+0],C=_[g+1],U=_[g+2],q=_[g+3];if(p===0){e[i+0]=x,e[i+1]=f,e[i+2]=M,e[i+3]=y;return}if(p===1){e[i+0]=I,e[i+1]=C,e[i+2]=U,e[i+3]=q;return}if(y!==q||x!==I||f!==C||M!==U){let Z=1-p;const j=x*I+f*C+M*U+y*q,wt=j>=0?1:-1,Pt=1-j*j;if(Pt>Number.EPSILON){const Y=Math.sqrt(Pt),ct=Math.atan2(Y,j*wt);Z=Math.sin(Z*ct)/Y,p=Math.sin(p*ct)/Y}const mt=p*wt;if(x=x*Z+I*mt,f=f*Z+C*mt,M=M*Z+U*mt,y=y*Z+q*mt,Z===1-p){const Y=1/Math.sqrt(x*x+f*f+M*M+y*y);x*=Y,f*=Y,M*=Y,y*=Y}}e[i]=x,e[i+1]=f,e[i+2]=M,e[i+3]=y}static multiplyQuaternionsFlat(e,i,a,l,_,g){const p=a[l],x=a[l+1],f=a[l+2],M=a[l+3],y=_[g],I=_[g+1],C=_[g+2],U=_[g+3];return e[i]=p*U+M*y+x*C-f*I,e[i+1]=x*U+M*I+f*y-p*C,e[i+2]=f*U+M*C+p*I-x*y,e[i+3]=M*U-p*y-x*I-f*C,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,i,a,l){return this._x=e,this._y=i,this._z=a,this._w=l,this._onChangeCallback(),this}clone(){return new Mn(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,i=!0){const a=e.x,l=e.y,_=e.z,g=e.order,p=Math.cos,x=Math.sin,f=p(a/2),M=p(l/2),y=p(_/2),I=x(a/2),C=x(l/2),U=x(_/2);switch(g){case"XYZ":this._x=I*M*y+f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y-I*C*U;break;case"YXZ":this._x=I*M*y+f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y+I*C*U;break;case"ZXY":this._x=I*M*y-f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y-I*C*U;break;case"ZYX":this._x=I*M*y-f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y+I*C*U;break;case"YZX":this._x=I*M*y+f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y-I*C*U;break;case"XZY":this._x=I*M*y-f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y+I*C*U;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+g)}return i===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,i){const a=i/2,l=Math.sin(a);return this._x=e.x*l,this._y=e.y*l,this._z=e.z*l,this._w=Math.cos(a),this._onChangeCallback(),this}setFromRotationMatrix(e){const i=e.elements,a=i[0],l=i[4],_=i[8],g=i[1],p=i[5],x=i[9],f=i[2],M=i[6],y=i[10],I=a+p+y;if(I>0){const C=.5/Math.sqrt(I+1);this._w=.25/C,this._x=(M-x)*C,this._y=(_-f)*C,this._z=(g-l)*C}else if(a>p&&a>y){const C=2*Math.sqrt(1+a-p-y);this._w=(M-x)/C,this._x=.25*C,this._y=(l+g)/C,this._z=(_+f)/C}else if(p>y){const C=2*Math.sqrt(1+p-a-y);this._w=(_-f)/C,this._x=(l+g)/C,this._y=.25*C,this._z=(x+M)/C}else{const C=2*Math.sqrt(1+y-a-p);this._w=(g-l)/C,this._x=(_+f)/C,this._y=(x+M)/C,this._z=.25*C}return this._onChangeCallback(),this}setFromUnitVectors(e,i){let a=e.dot(i)+1;return a<Number.EPSILON?(a=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=a):(this._x=0,this._y=-e.z,this._z=e.y,this._w=a)):(this._x=e.y*i.z-e.z*i.y,this._y=e.z*i.x-e.x*i.z,this._z=e.x*i.y-e.y*i.x,this._w=a),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Be(this.dot(e),-1,1)))}rotateTowards(e,i){const a=this.angleTo(e);if(a===0)return this;const l=Math.min(1,i/a);return this.slerp(e,l),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,i){const a=e._x,l=e._y,_=e._z,g=e._w,p=i._x,x=i._y,f=i._z,M=i._w;return this._x=a*M+g*p+l*f-_*x,this._y=l*M+g*x+_*p-a*f,this._z=_*M+g*f+a*x-l*p,this._w=g*M-a*p-l*x-_*f,this._onChangeCallback(),this}slerp(e,i){if(i===0)return this;if(i===1)return this.copy(e);const a=this._x,l=this._y,_=this._z,g=this._w;let p=g*e._w+a*e._x+l*e._y+_*e._z;if(p<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,p=-p):this.copy(e),p>=1)return this._w=g,this._x=a,this._y=l,this._z=_,this;const x=1-p*p;if(x<=Number.EPSILON){const C=1-i;return this._w=C*g+i*this._w,this._x=C*a+i*this._x,this._y=C*l+i*this._y,this._z=C*_+i*this._z,this.normalize(),this}const f=Math.sqrt(x),M=Math.atan2(f,p),y=Math.sin((1-i)*M)/f,I=Math.sin(i*M)/f;return this._w=g*y+this._w*I,this._x=a*y+this._x*I,this._y=l*y+this._y*I,this._z=_*y+this._z*I,this._onChangeCallback(),this}slerpQuaternions(e,i,a){return this.copy(e).slerp(i,a)}random(){const e=2*Math.PI*Math.random(),i=2*Math.PI*Math.random(),a=Math.random(),l=Math.sqrt(1-a),_=Math.sqrt(a);return this.set(l*Math.sin(e),l*Math.cos(e),_*Math.sin(i),_*Math.cos(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,i=0){return this._x=e[i],this._y=e[i+1],this._z=e[i+2],this._w=e[i+3],this._onChangeCallback(),this}toArray(e=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+3]=this._w,e}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}}const ee=class ee{constructor(e,i,a){this.x=0,this.y=0,this.z=0;const l=+(e!==void 0)+ +(i!==void 0)+ +(a!==void 0);if(l!==0){if(l===1&&e instanceof Array){this.x=e[0],this.y=e[1],this.z=e[2];return}if(l===1){const{x:_,y:g,z:p}=e;this.x=_,this.y=g,this.z=p||0;return}if(l===3){this.x=e,this.y=i,this.z=a;return}throw te.AcCmErrors.ILLEGAL_PARAMETERS}}set(e,i,a){return a===void 0&&(a=this.z),this.x=e,this.y=i,this.z=a,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,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;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 ee(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z||0,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z||0,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,i){return this.x=e.x+i.x,this.y=e.y+i.y,this.z=e.z+i.z,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,this.z+=e.z*i,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,i){return this.x=e.x-i.x,this.y=e.y-i.y,this.z=e.z-i.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,i){return this.x=e.x*i.x,this.y=e.y*i.y,this.z=e.z*i.z,this}applyEuler(e){return this.applyQuaternion(hi.setFromEuler(e))}applyAxisAngle(e,i){return this.applyQuaternion(hi.setFromAxisAngle(e,i))}applyMatrix3(e){const i=this.x,a=this.y,l=this.z,_=e.elements;return this.x=_[0]*i+_[3]*a+_[6]*l,this.y=_[1]*i+_[4]*a+_[7]*l,this.z=_[2]*i+_[5]*a+_[8]*l,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const i=this.x,a=this.y,l=this.z,_=e.elements,g=1/(_[3]*i+_[7]*a+_[11]*l+_[15]);return this.x=(_[0]*i+_[4]*a+_[8]*l+_[12])*g,this.y=(_[1]*i+_[5]*a+_[9]*l+_[13])*g,this.z=(_[2]*i+_[6]*a+_[10]*l+_[14])*g,this}applyQuaternion(e){const i=this.x,a=this.y,l=this.z,_=e.x,g=e.y,p=e.z,x=e.w,f=2*(g*l-p*a),M=2*(p*i-_*l),y=2*(_*a-g*i);return this.x=i+x*f+g*y-p*M,this.y=a+x*M+p*f-_*y,this.z=l+x*y+_*M-g*f,this}transformDirection(e){const i=this.x,a=this.y,l=this.z,_=e.elements;return this.x=_[0]*i+_[4]*a+_[8]*l,this.y=_[1]*i+_[5]*a+_[9]*l,this.z=_[2]*i+_[6]*a+_[10]*l,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,i){return this.x=Math.max(e.x,Math.min(i.x,this.x)),this.y=Math.max(e.y,Math.min(i.y,this.y)),this.z=Math.max(e.z,Math.min(i.z,this.z)),this}clampScalar(e,i){return this.x=Math.max(e,Math.min(i,this.x)),this.y=Math.max(e,Math.min(i,this.y)),this.z=Math.max(e,Math.min(i,this.z)),this}clampLength(e,i){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(i,a)))}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}isParallelTo(e){const i=this.dot(e),a=this.length(),l=e.length();return Math.abs(i)===a*l}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,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this.z+=(e.z-this.z)*i,this}lerpVectors(e,i,a){return this.x=e.x+(i.x-e.x)*a,this.y=e.y+(i.y-e.y)*a,this.z=e.z+(i.z-e.z)*a,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,i){const a=e.x,l=e.y,_=e.z,g=i.x,p=i.y,x=i.z;return this.x=l*x-_*p,this.y=_*g-a*x,this.z=a*p-l*g,this}projectOnVector(e){const i=e.lengthSq();if(i===0)return this.set(0,0,0);const a=e.dot(this)/i;return this.copy(e).multiplyScalar(a)}projectOnPlane(e){return pr.copy(this).projectOnVector(e),this.sub(pr)}reflect(e){return this.sub(pr.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const a=this.dot(e)/i;return Math.acos(Math.max(-1,Math.min(1,a)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,a=this.y-e.y,l=this.z-e.z;return i*i+a*a+l*l}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromMatrixPosition(e){const i=e.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this}setFromMatrixScale(e){const i=this.setFromMatrixColumn(e,0).length(),a=this.setFromMatrixColumn(e,1).length(),l=this.setFromMatrixColumn(e,2).length();return this.x=i,this.y=a,this.z=l,this}setFromMatrixColumn(e,i){return this.fromArray(e.elements,i*4)}setFromMatrix3Column(e,i){return this.fromArray(e.elements,i*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this.z=e[i+2],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e[i+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,i=Math.random()*2-1,a=Math.sqrt(1-i*i);return this.x=a*Math.cos(e),this.y=i,this.z=a*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};ee.X_AXIS=Object.freeze(new ee(1,0,0)),ee.NEGATIVE_X_AXIS=Object.freeze(new ee(-1,0,0)),ee.Y_AXIS=Object.freeze(new ee(0,1,0)),ee.NEGATIVE_Y_AXIS=Object.freeze(new ee(0,-1,0)),ee.Z_AXIS=Object.freeze(new ee(0,0,1)),ee.NEGATIVE_Z_AXIS=Object.freeze(new ee(0,0,-1));let Q=ee;const pr=new Q,hi=new Mn,Bn=class Bn{constructor(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!=null&&i!=null&&a!=null&&l!=null&&_!=null&&g!=null&&p!=null&&x!=null&&f!=null&&M!=null&&y!=null&&I!=null&&C!=null&&U!=null&&q!=null&&Z!=null&&this.set(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z)}set(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z){const j=this.elements;return j[0]=e,j[4]=i,j[8]=a,j[12]=l,j[1]=_,j[5]=g,j[9]=p,j[13]=x,j[2]=f,j[6]=M,j[10]=y,j[14]=I,j[3]=C,j[7]=U,j[11]=q,j[15]=Z,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 Bn().fromArray(this.elements)}copy(e){const i=this.elements,a=e.elements;return i[0]=a[0],i[1]=a[1],i[2]=a[2],i[3]=a[3],i[4]=a[4],i[5]=a[5],i[6]=a[6],i[7]=a[7],i[8]=a[8],i[9]=a[9],i[10]=a[10],i[11]=a[11],i[12]=a[12],i[13]=a[13],i[14]=a[14],i[15]=a[15],this}copyPosition(e){const i=this.elements,a=e.elements;return i[12]=a[12],i[13]=a[13],i[14]=a[14],this}setFromMatrix3(e){const i=e.elements;return this.set(i[0],i[3],i[6],0,i[1],i[4],i[7],0,i[2],i[5],i[8],0,0,0,0,1),this}setFromExtrusionDirection(e){if(mr.equalPoint3d(e,Q.Z_AXIS))this.identity();else{const i=new Q(1,0,0);Math.abs(e.x)<1/64&&Math.abs(e.y)<1/64?i.crossVectors(Q.Y_AXIS,e).normalize():i.crossVectors(Q.Z_AXIS,e).normalize();const a=e.clone().cross(i).normalize();this.set(i.x,i.y,i.z,0,a.x,a.y,a.z,0,e.x,e.y,e.z,0,0,0,0,1)}return this}extractBasis(e,i,a){return e.setFromMatrixColumn(this,0),i.setFromMatrixColumn(this,1),a.setFromMatrixColumn(this,2),this}makeBasis(e,i,a){return this.set(e.x,i.x,a.x,0,e.y,i.y,a.y,0,e.z,i.z,a.z,0,0,0,0,1),this}extractRotation(e){const i=this.elements,a=e.elements,l=1/on.setFromMatrixColumn(e,0).length(),_=1/on.setFromMatrixColumn(e,1).length(),g=1/on.setFromMatrixColumn(e,2).length();return i[0]=a[0]*l,i[1]=a[1]*l,i[2]=a[2]*l,i[3]=0,i[4]=a[4]*_,i[5]=a[5]*_,i[6]=a[6]*_,i[7]=0,i[8]=a[8]*g,i[9]=a[9]*g,i[10]=a[10]*g,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Li,e,Ui)}lookAt(e,i,a){const l=this.elements;return ae.subVectors(e,i),ae.lengthSq()===0&&(ae.z=1),ae.normalize(),De.crossVectors(a,ae),De.lengthSq()===0&&(Math.abs(a.z)===1?ae.x+=1e-4:ae.z+=1e-4,ae.normalize(),De.crossVectors(a,ae)),De.normalize(),rr.crossVectors(ae,De),l[0]=De.x,l[4]=rr.x,l[8]=ae.x,l[1]=De.y,l[5]=rr.y,l[9]=ae.y,l[2]=De.z,l[6]=rr.z,l[10]=ae.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const a=e.elements,l=i.elements,_=this.elements,g=a[0],p=a[4],x=a[8],f=a[12],M=a[1],y=a[5],I=a[9],C=a[13],U=a[2],q=a[6],Z=a[10],j=a[14],wt=a[3],Pt=a[7],mt=a[11],Y=a[15],ct=l[0],lt=l[4],Vt=l[8],Xt=l[12],Dt=l[1],jt=l[5],Qt=l[9],oe=l[13],he=l[2],le=l[6],Ot=l[10],Wt=l[14],X=l[3],bt=l[7],Zt=l[11],Se=l[15];return _[0]=g*ct+p*Dt+x*he+f*X,_[4]=g*lt+p*jt+x*le+f*bt,_[8]=g*Vt+p*Qt+x*Ot+f*Zt,_[12]=g*Xt+p*oe+x*Wt+f*Se,_[1]=M*ct+y*Dt+I*he+C*X,_[5]=M*lt+y*jt+I*le+C*bt,_[9]=M*Vt+y*Qt+I*Ot+C*Zt,_[13]=M*Xt+y*oe+I*Wt+C*Se,_[2]=U*ct+q*Dt+Z*he+j*X,_[6]=U*lt+q*jt+Z*le+j*bt,_[10]=U*Vt+q*Qt+Z*Ot+j*Zt,_[14]=U*Xt+q*oe+Z*Wt+j*Se,_[3]=wt*ct+Pt*Dt+mt*he+Y*X,_[7]=wt*lt+Pt*jt+mt*le+Y*bt,_[11]=wt*Vt+Pt*Qt+mt*Ot+Y*Zt,_[15]=wt*Xt+Pt*oe+mt*Wt+Y*Se,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[4]*=e,i[8]*=e,i[12]*=e,i[1]*=e,i[5]*=e,i[9]*=e,i[13]*=e,i[2]*=e,i[6]*=e,i[10]*=e,i[14]*=e,i[3]*=e,i[7]*=e,i[11]*=e,i[15]*=e,this}determinant(){const e=this.elements,i=e[0],a=e[4],l=e[8],_=e[12],g=e[1],p=e[5],x=e[9],f=e[13],M=e[2],y=e[6],I=e[10],C=e[14],U=e[3],q=e[7],Z=e[11],j=e[15];return U*(+_*x*y-l*f*y-_*p*I+a*f*I+l*p*C-a*x*C)+q*(+i*x*C-i*f*I+_*g*I-l*g*C+l*f*M-_*x*M)+Z*(+i*f*y-i*p*C-_*g*y+a*g*C+_*p*M-a*f*M)+j*(-l*p*M-i*x*y+i*p*I+l*g*y-a*g*I+a*x*M)}transpose(){const e=this.elements;let i;return i=e[1],e[1]=e[4],e[4]=i,i=e[2],e[2]=e[8],e[8]=i,i=e[6],e[6]=e[9],e[9]=i,i=e[3],e[3]=e[12],e[12]=i,i=e[7],e[7]=e[13],e[13]=i,i=e[11],e[11]=e[14],e[14]=i,this}setPosition(e,i,a){const l=this.elements;return e instanceof Q?(l[12]=e.x,l[13]=e.y,l[14]=e.z):(l[12]=e,l[13]=i,l[14]=a),this}invert(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8],y=e[9],I=e[10],C=e[11],U=e[12],q=e[13],Z=e[14],j=e[15],wt=y*Z*f-q*I*f+q*x*C-p*Z*C-y*x*j+p*I*j,Pt=U*I*f-M*Z*f-U*x*C+g*Z*C+M*x*j-g*I*j,mt=M*q*f-U*y*f+U*p*C-g*q*C-M*p*j+g*y*j,Y=U*y*x-M*q*x-U*p*I+g*q*I+M*p*Z-g*y*Z,ct=i*wt+a*Pt+l*mt+_*Y;if(ct===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const lt=1/ct;return e[0]=wt*lt,e[1]=(q*I*_-y*Z*_-q*l*C+a*Z*C+y*l*j-a*I*j)*lt,e[2]=(p*Z*_-q*x*_+q*l*f-a*Z*f-p*l*j+a*x*j)*lt,e[3]=(y*x*_-p*I*_-y*l*f+a*I*f+p*l*C-a*x*C)*lt,e[4]=Pt*lt,e[5]=(M*Z*_-U*I*_+U*l*C-i*Z*C-M*l*j+i*I*j)*lt,e[6]=(U*x*_-g*Z*_-U*l*f+i*Z*f+g*l*j-i*x*j)*lt,e[7]=(g*I*_-M*x*_+M*l*f-i*I*f-g*l*C+i*x*C)*lt,e[8]=mt*lt,e[9]=(U*y*_-M*q*_-U*a*C+i*q*C+M*a*j-i*y*j)*lt,e[10]=(g*q*_-U*p*_+U*a*f-i*q*f-g*a*j+i*p*j)*lt,e[11]=(M*p*_-g*y*_-M*a*f+i*y*f+g*a*C-i*p*C)*lt,e[12]=Y*lt,e[13]=(M*q*l-U*y*l+U*a*I-i*q*I-M*a*Z+i*y*Z)*lt,e[14]=(U*p*l-g*q*l-U*a*x+i*q*x+g*a*Z-i*p*Z)*lt,e[15]=(g*y*l-M*p*l+M*a*x-i*y*x-g*a*I+i*p*I)*lt,this}scale(e){const i=this.elements,a=e.x,l=e.y,_=e.z;return i[0]*=a,i[4]*=l,i[8]*=_,i[1]*=a,i[5]*=l,i[9]*=_,i[2]*=a,i[6]*=l,i[10]*=_,i[3]*=a,i[7]*=l,i[11]*=_,this}getMaxScaleOnAxis(){const e=this.elements,i=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],a=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],l=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(i,a,l))}makeTranslation(e,i,a){return e instanceof Q?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,i,0,0,1,a,0,0,0,1),this}makeRotationX(e){const i=Math.cos(e),a=Math.sin(e);return this.set(1,0,0,0,0,i,-a,0,0,a,i,0,0,0,0,1),this}makeRotationY(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,0,a,0,0,1,0,0,-a,0,i,0,0,0,0,1),this}makeRotationZ(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,i){const a=Math.cos(i),l=Math.sin(i),_=1-a,g=e.x,p=e.y,x=e.z,f=_*g,M=_*p;return this.set(f*g+a,f*p-l*x,f*x+l*p,0,f*p+l*x,M*p+a,M*x-l*g,0,f*x-l*p,M*x+l*g,_*x*x+a,0,0,0,0,1),this}makeScale(e,i,a){return this.set(e,0,0,0,0,i,0,0,0,0,a,0,0,0,0,1),this}makeShear(e,i,a,l,_,g){return this.set(1,a,_,0,e,1,g,0,i,l,1,0,0,0,0,1),this}compose(e,i,a){const l=this.elements,_=i.x,g=i.y,p=i.z,x=i.w,f=_+_,M=g+g,y=p+p,I=_*f,C=_*M,U=_*y,q=g*M,Z=g*y,j=p*y,wt=x*f,Pt=x*M,mt=x*y,Y=a.x,ct=a.y,lt=a.z;return l[0]=(1-(q+j))*Y,l[1]=(C+mt)*Y,l[2]=(U-Pt)*Y,l[3]=0,l[4]=(C-mt)*ct,l[5]=(1-(I+j))*ct,l[6]=(Z+wt)*ct,l[7]=0,l[8]=(U+Pt)*lt,l[9]=(Z-wt)*lt,l[10]=(1-(I+q))*lt,l[11]=0,l[12]=e.x,l[13]=e.y,l[14]=e.z,l[15]=1,this}decompose(e,i,a){const l=this.elements;let _=on.set(l[0],l[1],l[2]).length();const g=on.set(l[4],l[5],l[6]).length(),p=on.set(l[8],l[9],l[10]).length();this.determinant()<0&&(_=-_),e.x=l[12],e.y=l[13],e.z=l[14],pe.copy(this);const f=1/_,M=1/g,y=1/p;return pe.elements[0]*=f,pe.elements[1]*=f,pe.elements[2]*=f,pe.elements[4]*=M,pe.elements[5]*=M,pe.elements[6]*=M,pe.elements[8]*=y,pe.elements[9]*=y,pe.elements[10]*=y,i.setFromRotationMatrix(pe),a.x=_,a.y=g,a.z=p,this}equals(e){const i=this.elements,a=e.elements;for(let l=0;l<16;l++)if(i[l]!==a[l])return!1;return!0}fromArray(e,i=0){for(let a=0;a<16;a++)this.elements[a]=e[a+i];return this}toArray(e=[],i=0){const a=this.elements;return e[i]=a[0],e[i+1]=a[1],e[i+2]=a[2],e[i+3]=a[3],e[i+4]=a[4],e[i+5]=a[5],e[i+6]=a[6],e[i+7]=a[7],e[i+8]=a[8],e[i+9]=a[9],e[i+10]=a[10],e[i+11]=a[11],e[i+12]=a[12],e[i+13]=a[13],e[i+14]=a[14],e[i+15]=a[15],e}};Bn.IDENTITY=Object.freeze(new Bn);let an=Bn;const on=new Q,pe=new an,Li=new Q(0,0,0),Ui=new Q(1,1,1),De=new Q,rr=new Q,ae=new Q;class ze{constructor(e=void 0,i=void 0){this.min=e==null?new Q(1/0,1/0,1/0):new Q(e.x,e.y,e.z),this.max=i==null?new Q(-1/0,-1/0,-1/0):new Q(i.x,i.y,i.z)}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromArray(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i+=3)this.expandByPoint(yr.fromArray(e,i));return this}setFromPoints(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const a=yr.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(a),this.max.copy(e).add(a),this}clone(){return new ze().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)}get center(){return this.isEmpty()?new Q(0,0,0):new Q(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Q(0,0,0):new Q(0,0,0).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}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,i){return i.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)}intersectsPlane(e){let i,a;return e.normal.x>0?(i=e.normal.x*this.min.x,a=e.normal.x*this.max.x):(i=e.normal.x*this.max.x,a=e.normal.x*this.min.x),e.normal.y>0?(i+=e.normal.y*this.min.y,a+=e.normal.y*this.max.y):(i+=e.normal.y*this.max.y,a+=e.normal.y*this.min.y),e.normal.z>0?(i+=e.normal.z*this.min.z,a+=e.normal.z*this.max.z):(i+=e.normal.z*this.max.z,a+=e.normal.z*this.min.z),i<=-e.constant&&a>=-e.constant}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,yr).distanceTo(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:(Te[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Te[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Te[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Te[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Te[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Te[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Te[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Te[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Te),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)}}const Te=[new Q,new Q,new Q,new Q,new Q,new Q,new Q,new Q],yr=new Q,li=new Tt;class de{constructor(e=void 0,i=void 0){this.min=e==null?new Tt(1/0,1/0):new Tt(e.x,e.y),this.max=i==null?new Tt(-1/0,-1/0):new Tt(i.x,i.y)}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromPoints(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const a=li.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(a),this.max.copy(e).add(a),this}clone(){return new de().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new Tt(0,0):new Tt(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Tt(0,0):new Tt(0,0).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}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}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}getParameter(e,i){return i.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}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)}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,li).distanceTo(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}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)}}const ui=new Q,Ri=new Q,Vi=new sn;class zn{constructor(e=new Q(1,0,0),i=0){this.normal=e,this.constant=i}set(e,i){return this.normal.copy(e),this.constant=i,this}setComponents(e,i,a,l){return this.normal.set(e,i,a),this.constant=l,this}setFromNormalAndCoplanarPoint(e,i){return this.normal.copy(e),this.constant=-i.dot(this.normal),this}setFromCoplanarPoints(e,i,a){const l=ui.subVectors(a,i).cross(Ri.subVectors(e,i)).normalize();return this.setFromNormalAndCoplanarPoint(l,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}projectPoint(e,i){return i.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectsBox(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,i){const a=i||Vi.getNormalMatrix(e),l=this.coplanarPoint(ui).applyMatrix4(e),_=this.normal.applyMatrix3(a).normalize();return this.constant=-l.dot(_),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 zn().copy(this)}}class Ut extends Tt{static pointArrayToNumberArray(e){const i=new Array(e.length*2);return e.forEach((a,l)=>{a.toArray(i,l*2)}),i}}class St extends Q{static pointArrayToNumberArray(e,i=!0){const a=i?3:2,l=new Array(e.length*a);return e.forEach((_,g)=>{_.toArray(l,g*a)}),l}}const ci=new an,vi=new Mn,Tn=class Tn{constructor(e=0,i=0,a=0,l=Tn.DEFAULT_ORDER){this._x=e,this._y=i,this._z=a,this._order=l}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,i,a,l=this._order){return this._x=e,this._y=i,this._z=a,this._order=l,this._onChangeCallback(),this}clone(){return new Tn(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,i=this._order,a=!0){const l=e.elements,_=l[0],g=l[4],p=l[8],x=l[1],f=l[5],M=l[9],y=l[2],I=l[6],C=l[10];switch(i){case"XYZ":this._y=Math.asin(Be(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(-M,C),this._z=Math.atan2(-g,_)):(this._x=Math.atan2(I,f),this._z=0);break;case"YXZ":this._x=Math.asin(-Be(M,-1,1)),Math.abs(M)<.9999999?(this._y=Math.atan2(p,C),this._z=Math.atan2(x,f)):(this._y=Math.atan2(-y,_),this._z=0);break;case"ZXY":this._x=Math.asin(Be(I,-1,1)),Math.abs(I)<.9999999?(this._y=Math.atan2(-y,C),this._z=Math.atan2(-g,f)):(this._y=0,this._z=Math.atan2(x,_));break;case"ZYX":this._y=Math.asin(-Be(y,-1,1)),Math.abs(y)<.9999999?(this._x=Math.atan2(I,C),this._z=Math.atan2(x,_)):(this._x=0,this._z=Math.atan2(-g,f));break;case"YZX":this._z=Math.asin(Be(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(-M,f),this._y=Math.atan2(-y,_)):(this._x=0,this._y=Math.atan2(p,C));break;case"XZY":this._z=Math.asin(-Be(g,-1,1)),Math.abs(g)<.9999999?(this._x=Math.atan2(I,f),this._y=Math.atan2(p,_)):(this._x=Math.atan2(-M,C),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+i)}return this._order=i,a===!0&&this._onChangeCallback(),this}setFromQuaternion(e,i,a=!0){return ci.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ci,i,a)}setFromVector3(e,i=this._order){return this.set(e.x,e.y,e.z,i)}reorder(e){return vi.setFromEuler(this),this.setFromQuaternion(vi,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=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+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}};Tn.DEFAULT_ORDER="XYZ";let wr=Tn;class _i{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class br extends _i{translate(e){return this.transform(new sn().makeTranslation(e.x,e.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Di extends br{constructor(){super(),this._loops=[]}add(e){this._loops.push(e),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const e=this.outter;return e?e.box:new de}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints(e){const i=[];for(let a=0;a<this.loops.length;++a){const _=this.loops[a].getPoints(e);i.push(_)}return i}buildHierarchy(){var p;const e=this.getPoints(100),i=this.calculateBoundaryBoxes(e),a=this.sortBoundaryBoxesByAreas(i),l=new Map,_=a.length;for(let x=0;x<_;x++)l.set(a[x],{index:a[x],children:[]});const g={index:-1,children:[]};for(let x=0;x<_;x++){const f=a[x],M=e[f],y=i[f];let I=x+1;for(;I<_;I++){const C=a[I],U=e[C];if(i[C].containsBox(y)&&ri.isPointInPolygon(M[Ct.randInt(0,M.length-1)],U)){(p=l.get(C))==null||p.children.push(l.get(f));break}}I===_&&g.children.push(l.get(f))}return g}get area(){if(this._loops.length===0)return 0;let e=0;for(let i=0;i<this._loops.length;i++){const l=this._loops[i].getPoints(128),_=this.polygonArea(l);i===0?e+=Math.abs(_):e-=Math.abs(_)}return e}polygonArea(e){const i=e.length;if(i<3)return 0;let a=0;for(let l=0,_=i-1;l<i;_=l++){const g=e[_],p=e[l];a+=g.x*p.y-p.x*g.y}return a*.5}calculateBoundaryBoxes(e){const i=[];return e.forEach(a=>{i.push(new de().setFromPoints(a))}),i}sortBoundaryBoxesByAreas(e){const i=[];e.forEach((l,_)=>{const g=l.size,p=g.width*g.height;i.push({area:p,index:_})}),i.sort((l,_)=>l.area-_.area);const a=[];return i.forEach(l=>{a.push(l.index)}),a}}class hn extends br{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(e){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(e){const i=this.getUtoTmapping(e);return this.getPoint(i)}getPoints(e=5){const i=[];for(let a=0;a<=e;a++)i.push(this.getPoint(a/e));return i}getSpacedPoints(e=5){const i=[];for(let a=0;a<=e;a++)i.push(this.getPointAt(a/e));return i}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){const i=[];let a,l=this.getPoint(0),_=0;i.push(0);for(let g=1;g<=e;g++)a=this.getPoint(g/e),_+=a.distanceTo(l),i.push(_),l=a;return i}getUtoTmapping(e,i){const a=this.getLengths();let l=0;const _=a.length;let g;i?g=i:g=e*a[_-1];let p=0,x=_-1,f;for(;p<=x;)if(l=Math.floor(p+(x-p)/2),f=a[l]-g,f<0)p=l+1;else if(f>0)x=l-1;else{x=l;break}if(l=x,a[l]===g)return l/(_-1);const M=a[l],I=a[l+1]-M,C=(g-M)/I;return(l+C)/(_-1)}getTangent(e){let a=e-1e-4,l=e+1e-4;a<0&&(a=0),l>1&&(l=1);const _=this.getPoint(a),g=this.getPoint(l),p=new Ut;return p.copy(g).sub(_).normalize(),p}getTangentAt(e){const i=this.getUtoTmapping(e);return this.getTangent(i)}}class Sn extends hn{constructor(e,i,a,l,_){super();const g=+(e!==void 0)+ +(i!==void 0)+ +(a!==void 0)+ +(l!==void 0)+ +(_!==void 0);if(g==3)typeof e=="object"&&typeof i=="object"&&typeof a=="object"?this.createByThreePoints(e,i,a):this.createByStartEndPointsAndBulge(e,i,a);else if(g==5){const p=e;this.center=new Ut(p.x,p.y),this.radius=i,this._clockwise=_,this._startAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(a)):Ct.normalizeAngle(a),this._endAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(l)):Ct.normalizeAngle(l)}else throw te.AcCmErrors.ILLEGAL_PARAMETERS}createByThreePoints(e,i,a){const l=(lt,Vt)=>({x:(lt.x+Vt.x)/2,y:(lt.y+Vt.y)/2}),_=(lt,Vt)=>(Vt.y-lt.y)/(Vt.x-lt.x),g=lt=>-1/lt,p=l(e,i),x=l(i,a),f=_(e,i),M=_(i,a),y=g(f),I=g(M),C=(lt,Vt,Xt,Dt)=>{const jt=(Dt-Vt)/(lt-Xt),Qt=lt*jt+Vt;return{x:jt,y:Qt}},U=p.y-y*p.x,q=x.y-I*x.x,Z=C(y,U,I,q),j=Math.sqrt(Math.pow(e.x-Z.x,2)+Math.pow(e.y-Z.y,2)),wt=(lt,Vt)=>Math.atan2(lt.y-Vt.y,lt.x-Vt.x),Pt=wt(e,Z),mt=wt(i,Z),Y=wt(a,Z),ct=Y>Pt&&Y<mt||Pt>Y&&Pt<mt||mt>Y&&mt<Pt;this.center=Z,this.radius=j,this._clockwise=!ct,this._startAngle=Pt,this._endAngle=Y}createByStartEndPointsAndBulge(e,i,a){let l,_,g;a<0?(l=Math.atan(-a)*4,_=new Tt(e),g=new Tt(i)):(l=Math.atan(a)*4,_=new Tt(i),g=new Tt(e));const p=new Tt().subVectors(g,_),x=p.length(),f=new Tt().addVectors(_,p.multiplyScalar(.5)),M=Math.abs(x/2/Math.tan(l/2)),y=p.normalize();let I;if(l<Math.PI){const C=new Tt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));I=f.add(C.multiplyScalar(-M))}else{const C=new Tt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));I=f.add(C.multiplyScalar(M))}a<0?(this._startAngle=Math.atan2(_.y-I.y,_.x-I.x),this._endAngle=Math.atan2(g.y-I.y,g.x-I.x)):(this._startAngle=Math.atan2(g.y-I.y,g.x-I.x),this._endAngle=Math.atan2(_.y-I.y,_.x-I.x)),this._clockwise=a<0,this.center=I,this.radius=g.sub(I).length()}get center(){return this._center}set center(e){this._center=new Ut(e.x,e.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(e){this._startAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(e)):Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(e){const i=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e);this._endAngle=this._clockwise?this._mirrorAngle(i):i,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(e){return(360-e*180/Math.PI)%360*Math.PI/180}_getInternalAngle(e){return this._clockwise?this._mirrorAngle(e):e}get deltaAngle(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle);return this.clockwise?Ct.normalizeAngle(e-i):Ct.normalizeAngle(i-e)}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle),a=Ct.normalizeAngle((e+i)/2),l=this._clockwise?this._mirrorAngle(a):a;return this.getPointAtAngle(l)}get closed(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle);return Math.abs(i-e)/Math.PI%2==0}calculateBoundingBox(){const e=[this.startPoint,this.endPoint],i=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const _ of i){const g=this._getInternalAngle(_);Ct.isBetweenAngle(g,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&e.push(this.getPointAtAngle(_))}const a=e.map(_=>_.x),l=e.map(_=>_.y);return new de(new Ut(Math.min(...a),Math.min(...l)),new Ut(Math.max(...a),Math.max(...l)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}clone(){return new Sn(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(e){const i=this._getInternalAngle(e),a=this.center.x+this.radius*Math.cos(i),l=this.center.y+this.radius*Math.sin(i);return new Ut(a,l)}getPoints(e=100){const i=[];let a=this.deltaAngle,l=this._getInternalAngle(this.startAngle);if(this.closed&&(a=Lt,l=0),this.clockwise)for(let _=0;_<=e;_++){const g=l-a*(_/e),p=this._clockwise?this._mirrorAngle(g):g,x=this.getPointAtAngle(p);i.push(new Ut(x.x,x.y))}else for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this._clockwise?this._mirrorAngle(g):g,x=this.getPointAtAngle(p);i.push(new Ut(x.x,x.y))}return i}}class Fi extends _i{translate(e){return this.transform(new an().makeTranslation(e.x,e.y,e.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Cn extends Fi{}class kn extends Cn{constructor(e,i){super(),this._start=new St(e),this._end=new St(i)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}get direction(){return new Q().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new St((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(e){return this.project(e)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(e){return this.project(e).distanceTo(e)<1e-6}at(e,i){return this.delta(i).multiplyScalar(e).add(this._start)}atLength(e,i=!1){if(i){const a=this.delta(Qe).normalize();return new St(this._start).addScaledVector(a,e)}else{const a=this.delta(Qe).normalize();return new St(this._end).addScaledVector(a,e)}}extend(e,i=!1){if(i){const a=Qe.subVectors(this._start,this._end).normalize();this._start=new St(this._start).addScaledVector(a,e)}else{const a=this.delta(Qe).normalize();this._end=new St(this._end).addScaledVector(a,e)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(e,i){di.subVectors(e,this._start),ir.subVectors(this.endPoint,this.startPoint);const a=ir.dot(ir);let _=ir.dot(di)/a;return i&&(_=Ct.clamp(_,0,1)),_}closestPointToPoint(e,i,a){const l=this.closestPointToPointParameter(e,i);return this.delta(a).multiplyScalar(l).add(this._start)}delta(e){return e.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(e){const i=this.direction,l=Qe.subVectors(e,this.startPoint).dot(i);return new St().copy(i).multiplyScalar(l).add(this.startPoint)}perpPoint(e){const i=this.direction,a=this.startPoint,_=Qe.subVectors(e,a).dot(i),g=Qe.copy(i).multiplyScalar(_);return new St().addVectors(a,g)}calculateBoundingBox(){const e=new St(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),i=new St(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new ze(e,i)}transform(e){return this._start.applyMatrix4(e),this._end.applyMatrix4(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new kn(this._start.clone(),this._end.clone())}}const Qe=new Q,di=new Q,ir=new Q;class In extends Cn{static computeCenterPoint(e,i,a){const l=new Q().addVectors(e,i).multiplyScalar(.5),_=new Q().addVectors(e,a).multiplyScalar(.5),g=new Q().subVectors(i,e),p=new Q().subVectors(a,e),x=new Q().crossVectors(g,p).normalize();if(x.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const f=new Q().crossVectors(g,x).normalize(),M=new Q().crossVectors(p,x).normalize(),y=f.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),I=M.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),C=new kn(l,l.clone().add(y)),U=new kn(_,_.clone().add(I)),q=new Q;return C.closestPointToPoint(U.startPoint,!0,q)?q:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(e,i,a){const l=In.computeCenterPoint(e,i,a);if(l){const _=l.distanceTo(e),g=new Q().subVectors(e,l),p=new Q().subVectors(i,l),x=Math.atan2(g.y,g.x),f=Math.atan2(p.y,p.x);return new In(l,_,x,f,Q.Z_AXIS)}}constructor(e,i,a,l,_,g=Q.X_AXIS){super(),this.center=e,this.radius=i,this.startAngle=a,this.endAngle=l,this.normal=_,this.refVec=g,(l-a)%Lt==0?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=a,this.endAngle=l)}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){if(e<0)throw te.AcCmErrors.ILLEGAL_PARAMETERS;this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Ct.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(e){this._normal=new Q(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(e){this._refVec=new Q(e.x,e.y,e.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let e=this.startAngle,i=this.deltaAngle;this.closed&&(e=0,i=Lt);const a=e+i*.5;return this.getPointAtAngle(a)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:Math.abs(this.deltaAngle*this.radius*this.radius)}nearestPoint(e){const i=new Q(e.x,e.y,e.z||0),a=this.center,l=this.normal,g=i.clone().sub(a).dot(l),x=i.clone().sub(l.clone().multiplyScalar(g)).clone().sub(a);if(x.lengthSq()===0)return this.startPoint.clone();x.normalize().multiplyScalar(this.radius);const f=a.clone().add(x),M=this.getAngle(f.clone()),y=this.startAngle,I=this.deltaAngle;let C=Ct.normalizeAngle(M-y);C<0&&(C=0),C>I&&(C=I);const U=this.getPointAtAngle(y+C),q=U.distanceTo(i),Z=this.startPoint.distanceTo(i),j=this.endPoint.distanceTo(i);return Z<q&&Z<=j?this.startPoint.clone():j<q&&j<Z?this.endPoint.clone():U}tangentPoints(e){const i=[],a=new Q(e.x,e.y,e.z||0),l=this.center,_=this.normal,g=this.radius,x=a.clone().sub(l).dot(_),f=a.clone().sub(_.clone().multiplyScalar(x)),M=l.clone(),I=f.clone().sub(M).length();if(I<g)return i;const C=Math.acos(g/I),U=this.getAngle(f.clone()),q=[U+C,U-C];for(const Z of q){const j=Ct.normalizeAngle(Z-this.startAngle);j>=0&&j<=this.deltaAngle&&i.push(this.getPointAtAngle(this.startAngle+j))}return i}nearestTangentPoint(e){const i=this.tangentPoints(e);if(i.length===0)return null;const a=new St(e.x,e.y,e.z||0);return i.length===1||i[0].distanceTo(a)<i[1].distanceTo(a)?i[0]:i[1]}calculateBoundingBox(){const e=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Ct.isBetweenAngle(x,this.startAngle,this.endAngle)&&e.push(x);let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(const x of e){const f=this.getPointAtAngle(x);f.x<i&&(i=f.x),f.y<a&&(a=f.y),f.z<l&&(l=f.z),f.x>_&&(_=f.x),f.y>g&&(g=f.y),f.z>p&&(p=f.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(e){const i=[];let a=this.deltaAngle,l=this.startAngle;this.closed&&(a=Lt,l=0);for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this.getPointAtAngle(g);i.push(p)}return i}transform(e){const i=xr.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),a=xr.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix4(e),i.applyMatrix4(e),a.applyMatrix4(e),this.normal.applyMatrix4(e).normalize(),this.refVec.applyMatrix4(e).normalize(),this.startAngle=this.getAngle(i),this.endAngle=this.getAngle(a),this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.radius=e.radius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.normal=e.normal,this.refVec=e.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new In(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(e){return e.sub(this.center),Math.atan2(e.dot(xr.crossVectors(this.refVec,this.normal)),e.dot(this.refVec))}getPointAtAngle(e){const i=this.normal,a=this.refVec,l={x:i.y*a.z-i.z*a.y,y:i.z*a.x-i.x*a.z,z:i.x*a.y-i.y*a.x},_=this.center,g=this.radius;return new St(_.x+g*(a.x*Math.cos(e)+l.x*Math.sin(e)),_.y+g*(a.y*Math.cos(e)+l.y*Math.sin(e)),_.z+g*(a.z*Math.cos(e)+l.z*Math.sin(e)))}get plane(){const e=new Q(this.center).distanceTo(dr);return new zn(this.normal,e)}}const xr=new Q;class Ar extends hn{constructor(e,i,a,l=0,_=Lt,g=!1,p=0){super(),this.center=e,this.majorAxisRadius=i,this.minorAxisRadius=a,(_-l)%Lt==0?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=l,this.endAngle=_),this.clockwise=g,this.rotation=p}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw te.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw te.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Ct.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let i=1/0,a=1/0,l=-1/0,_=-1/0;for(let g=0;g<=100;g++){const p=this.getPoint(g/100);i=Math.min(i,p.x),a=Math.min(a,p.y),l=Math.max(l,p.x),_=Math.max(_,p.y)}return new de({x:i,y:a},{x:l,y:_})}get closed(){return this.deltaAngle==0}getPoint(e){const i=Math.PI*2;let a=this.endAngle-this.startAngle;const l=Math.abs(a)<Number.EPSILON;for(;a<0;)a+=i;for(;a>i;)a-=i;a<Number.EPSILON&&(l?a=0:a=i),this.clockwise===!0&&!l&&(a===i?a=-i:a=a-i);const _=this.startAngle+e*a;let g=this.center.x+this.majorAxisRadius*Math.cos(_),p=this.center.y+this.minorAxisRadius*Math.sin(_);if(this.rotation!==0){const x=Math.cos(this.rotation),f=Math.sin(this.rotation),M=g-this.center.x,y=p-this.center.y;g=M*x-y*f+this.center.x,p=M*f+y*x+this.center.y}return new Ut(g,p)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.clockwise=e.clockwise,this.rotation=e.rotation,this}clone(){return new Ar(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}class Pr extends Cn{constructor(e,i,a,l,_,g=0,p=Lt){super(),this.center=e,this.normal=i,this.majorAxis=a,this.majorAxisRadius=l,this.minorAxisRadius=_;const x=Math.abs(p-g);Math.abs(x-Lt)<1e-10||Math.abs(x-2*Lt)<1e-10?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=g,this.endAngle=p)}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw te.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw te.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const e=this.endAngle-this.startAngle;return Math.abs(e-Lt)<1e-10?Lt:Ct.normalizeAngle(e)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(e){this._normal=new Q(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(e){this._majorAxis=new Q(e.x,e.y,e.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Q().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let e=this.startAngle,i=this.deltaAngle;(this.closed||Math.abs(i-Lt)<1e-10)&&(e=0,i=Lt);const a=e+i/2;return this.getPointAtAngle(a)}get isCircular(){return fr.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const e=1e3,i=this.deltaAngle/e;let a=0,l=this.getPointAtAngle(this.startAngle);for(let _=1;_<=e;_++){const g=this.startAngle+_*i,p=this.getPointAtAngle(g),x=p.x-l.x,f=p.y-l.y,M=p.z-l.z;a+=Math.sqrt(x*x+f*f+M*M),l=p}return a}get area(){const e=this.majorAxisRadius,i=this.minorAxisRadius,a=this.startAngle,l=a+this.deltaAngle;if(Math.abs(this.deltaAngle-Lt)<1e-10)return Math.PI*e*i;const _=e*i/2*(l-a-(Math.sin(l)*Math.cos(l)-Math.sin(a)*Math.cos(a)));return Math.abs(_)}calculateBoundingBox(){if(this.majorAxis.equals(Q.X_AXIS)||this.majorAxis.equals(Q.Y_AXIS)||this.majorAxis.isParallelTo(Q.X_AXIS)||this.majorAxis.isParallelTo(Q.Y_AXIS)){const e=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Ct.isBetweenAngle(x,this.startAngle,this.endAngle)&&e.push(x);let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(const x of e){const f=this.getPointAtAngle(x);f.x<i&&(i=f.x),f.y<a&&(a=f.y),f.z<l&&(l=f.z),f.x>_&&(_=f.x),f.y>g&&(g=f.y),f.z>p&&(p=f.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}else{let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(let x=0;x<=100;x++){const f=this.startAngle+this.deltaAngle*(x/100),M=this.getPointAtAngle(f);i=Math.min(i,M.x),a=Math.min(a,M.y),l=Math.min(l,M.z),_=Math.max(_,M.x),g=Math.max(g,M.y),p=Math.max(p,M.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}}get closed(){return this.deltaAngle==0}getPoints(e=100){const i=[];let a=this.deltaAngle,l=this.startAngle;this.closed&&(a=Lt,l=0);for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this.getPointAtAngle(g);i.push(p)}return i}getPointAtAngle(e){const i=Math.cos(e),a=Math.sin(e),l=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(a),_=this.majorAxis.clone().multiplyScalar(i*this.majorAxisRadius).add(l);return new St(this.center.x+_.x,this.center.y+_.y,this.center.z+_.z)}contains(e){const i=new Q(e).sub(this.center),a=i.dot(this.majorAxis),l=i.dot(this.minorAxis),_=a/this.majorAxisRadius,g=l/this.minorAxisRadius;return _*_+g*g<=1}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.normal=e.normal,this.majorAxis=e.majorAxis,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Pr(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const e=new Q(this.center).distanceTo(dr);return new zn(this.normal,e)}}class Oi extends hn{constructor(e=null,i=!1){super(),this._vertices=e||new Array,this._closed=i}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const e=this._vertices[0];return new Ut(e.x,e.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const e=this.numberOfVertices;if(e>0)if(this.closed){const i=this._vertices[0];return new Ut(i.x,i.y)}else{const i=this._vertices[e-1];return new Ut(i.x,i.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let e=0;const i=this._vertices.length;for(let a=0;a<i;++a){const l=this._vertices[a];let _=null;if(a<i-1?_=this._vertices[a+1]:a==i-1&&this.closed&&(_=this._vertices[0]),_)if(l.bulge){const g=new Sn(l,_,l.bulge);e+=g.length}else e+=new Ut(l.x,l.y).distanceTo(_)}return e}set closed(e){this._closed=e,this._boundingBoxNeedsUpdate=!0}addVertexAt(e,i){e<=0?this._vertices.unshift(i):this._vertices.splice(e,0,i),this._boundingBoxNeedsUpdate=!0}getPointAt(e){const i=this._vertices[e];return new Ut(i.x,i.y)}calculateBoundingBox(){const e=this.getPoints(100);return new de().setFromPoints(e)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(e,i){const a=[];return this.getPoints(e).forEach(_=>a.push(new St().set(_.x,_.y,i))),a}getPoints(e){const i=[],a=this._vertices.length;for(let l=0;l<a;++l){const _=this._vertices[l];if(_.bulge){let g=null;if(l<a-1?g=this._vertices[l+1]:l==a-1&&this.closed&&(g=this._vertices[0]),g){const x=new Sn(_,g,_.bulge).getPoints(e),f=x.length;for(let M=0;M<f;++M){const y=x[M];i.push(new Ut(y.x,y.y))}}}else i.push(new Ut(_.x,_.y)),l==a-1&&this.closed&&i.push(i[0])}return i}}class Mr extends hn{constructor(e,i){super(),this._start=new Ut(e),this._end=new Ut(i)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const e=new Ut(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),i=new Ut(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new de(e,i)}transform(e){return this._start.applyMatrix2d(e),this._end.applyMatrix2d(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Mr(this._start.clone(),this._end.clone())}}class qi extends hn{constructor(e=[]){super(),this._curves=e}get curves(){return this._curves}add(e){this._curves.push(e),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const e=this._curves[0].startPoint;return new Ut(e.x,e.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let e=0;return this._curves.forEach(i=>{e+=i.length}),e}calculateBoundingBox(){const e=this.getPoints(100),i=new de;return i.setFromPoints(e),i}transform(e){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(e){const i=[];return this.curves.forEach(a=>{a.getPoints(e).forEach(l=>{i.push(new Ut(l.x,l.y))})}),i}}function Gi(N){return N&&N.__esModule&&Object.prototype.hasOwnProperty.call(N,"default")?N.default:N}var fi={exports:{}};(function(N,e){(function(i){N.exports=i()})(function(){var i={},a=this;new Function("try {return this===window;}catch(e){ return false;}");var l=new Function("try {return this===global;}catch(e){return false;}"),_=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(l()&&_(),l()||_()){var g=a;if(_()){var p=function(x,f){var M=a;return x.split(".").forEach(function(y){M&&(M=M[y])}),M?M[f]:null};onmessage=function(x){if(!(!x.data.className||!x.data.methodName)){var f=p(x.data.className,x.data.methodName);if(!f)return console.error("could not find "+x.data.className+"."+x.data.methodName);postMessage({result:f.apply(null,x.data.args),id:x.data.id})}}}}return function(x,f,M){f.geom=f.geom||{},f.exe=f.exe||{},f.eval=f.eval||{},f.core=f.core||{},f.promhx=f.promhx||{};var y={},I=function(){return bt.__string_rec(this,"")};function C(t,n){function r(){}r.prototype=t;var s=new r;for(var o in n)s[o]=n[o];return n.toString!==Object.prototype.toString&&(s.toString=n.toString),s}var U=function(){};y.HxOverrides=U,U.__name__=["HxOverrides"],U.strDate=function(t){var n=t.length;switch(n){case 8:var r=t.split(":"),s=new Date;return s.setTime(0),s.setUTCHours(r[0]),s.setUTCMinutes(r[1]),s.setUTCSeconds(r[2]),s;case 10:var o=t.split("-");return new Date(o[0],o[1]-1,o[2],0,0,0);case 19:var h=t.split(" "),c=h[0].split("-"),v=h[1].split(":");return new Date(c[0],c[1]-1,c[2],v[0],v[1],v[2]);default:throw new X("Invalid date format : "+t)}},U.cca=function(t,n){var r=t.charCodeAt(n);if(r==r)return r},U.substr=function(t,n,r){return n!=null&&n!=0&&r!=null&&r<0?"":(r==null&&(r=t.length),n<0?(n=t.length+n,n<0&&(n=0)):r<0&&(r=t.length+r-n),t.substr(n,r))},U.iter=function(t){return{cur:0,arr:t,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var q=function(){};y.Lambda=q,q.__name__=["Lambda"],q.fold=function(t,n,r){for(var s=be(t)();s.hasNext();){var o=s.next();r=n(o,r)}return r};var Z=function(){this.length=0};y.List=Z,Z.__name__=["List"],Z.prototype={add:function(t){var n=[t];this.h==null?this.h=n:this.q[1]=n,this.q=n,this.length++},pop:function(){if(this.h==null)return null;var t=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,t},isEmpty:function(){return this.h==null},__class__:Z},Math.__name__=["Math"];var j=function(){};y.Reflect=j,j.__name__=["Reflect"],j.field=function(t,n){try{return t[n]}catch(r){return r instanceof X&&(r=r.val),null}},j.callMethod=function(t,n,r){return n.apply(t,r)},j.fields=function(t){var n=[];if(t!=null){var r=Object.prototype.hasOwnProperty;for(var s in t)s!="__id__"&&s!="hx__closures__"&&r.call(t,s)&&n.push(s)}return n},j.isFunction=function(t){return typeof t=="function"&&!(t.__name__||t.__ename__)},j.deleteField=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)?(delete t[n],!0):!1};var wt=function(){};y.Std=wt,wt.__name__=["Std"],wt.string=function(t){return bt.__string_rec(t,"")},wt.parseFloat=function(t){return parseFloat(t)};var Pt=function(){this.b=""};y.StringBuf=Pt,Pt.__name__=["StringBuf"],Pt.prototype={add:function(t){this.b+=wt.string(t)},__class__:Pt};var mt=function(){};y.StringTools=mt,mt.__name__=["StringTools"],mt.fastCodeAt=function(t,n){return t.charCodeAt(n)};var Y=y.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};Y.TNull=["TNull",0],Y.TNull.toString=I,Y.TNull.__enum__=Y,Y.TInt=["TInt",1],Y.TInt.toString=I,Y.TInt.__enum__=Y,Y.TFloat=["TFloat",2],Y.TFloat.toString=I,Y.TFloat.__enum__=Y,Y.TBool=["TBool",3],Y.TBool.toString=I,Y.TBool.__enum__=Y,Y.TObject=["TObject",4],Y.TObject.toString=I,Y.TObject.__enum__=Y,Y.TFunction=["TFunction",5],Y.TFunction.toString=I,Y.TFunction.__enum__=Y,Y.TClass=function(t){var n=["TClass",6,t];return n.__enum__=Y,n.toString=I,n},Y.TEnum=function(t){var n=["TEnum",7,t];return n.__enum__=Y,n.toString=I,n},Y.TUnknown=["TUnknown",8],Y.TUnknown.toString=I,Y.TUnknown.__enum__=Y;var ct=function(){};y.Type=ct,ct.__name__=["Type"],ct.getClassName=function(t){var n=t.__name__;return n==null?null:n.join(".")},ct.getEnumName=function(t){var n=t.__ename__;return n.join(".")},ct.resolveClass=function(t){var n=y[t];return n==null||!n.__name__?null:n},ct.resolveEnum=function(t){var n=y[t];return n==null||!n.__ename__?null:n},ct.createEmptyInstance=function(t){function n(){}return n.prototype=t.prototype,new n},ct.createEnum=function(t,n,r){var s=j.field(t,n);if(s==null)throw new X("No such constructor "+n);if(j.isFunction(s)){if(r==null)throw new X("Constructor "+n+" need parameters");return j.callMethod(t,s,r)}if(r!=null&&r.length!=0)throw new X("Constructor "+n+" does not need parameters");return s},ct.getEnumConstructs=function(t){var n=t.__constructs__;return n.slice()},ct.typeof=function(t){var n=typeof t;switch(n){case"boolean":return Y.TBool;case"string":return Y.TClass(String);case"number":return Math.ceil(t)==t%2147483648?Y.TInt:Y.TFloat;case"object":if(t==null)return Y.TNull;var r=t.__enum__;if(r!=null)return Y.TEnum(r);var s=bt.getClass(t);return s!=null?Y.TClass(s):Y.TObject;case"function":return t.__name__||t.__ename__?Y.TObject:Y.TFunction;case"undefined":return Y.TNull;default:return Y.TUnknown}};var lt=function(){};y["haxe.IMap"]=lt,lt.__name__=["haxe","IMap"];var Vt=function(t,n){this.high=t,this.low=n};y["haxe._Int64.___Int64"]=Vt,Vt.__name__=["haxe","_Int64","___Int64"],Vt.prototype={__class__:Vt};var Xt=function(){this.buf=new Pt,this.cache=[],this.useCache=Xt.USE_CACHE,this.useEnumIndex=Xt.USE_ENUM_INDEX,this.shash=new he,this.scount=0};y["haxe.Serializer"]=Xt,Xt.__name__=["haxe","Serializer"],Xt.prototype={toString:function(){return this.buf.b},serializeString:function(t){var n=this.shash.get(t);if(n!=null){this.buf.b+="R",n==null?this.buf.b+="null":this.buf.b+=""+n;return}this.shash.set(t,this.scount++),this.buf.b+="y",t=encodeURIComponent(t),t.length==null?this.buf.b+="null":this.buf.b+=""+t.length,this.buf.b+=":",t==null?this.buf.b+="null":this.buf.b+=""+t},serializeRef:function(t){for(var n=typeof t,r=0,s=this.cache.length;r<s;){var o=r++,h=this.cache[o];if(typeof h==n&&h==t)return this.buf.b+="r",o==null?this.buf.b+="null":this.buf.b+=""+o,!0}return this.cache.push(t),!1},serializeFields:function(t){for(var n=0,r=j.fields(t);n<r.length;){var s=r[n];++n,this.serializeString(s),this.serialize(j.field(t,s))}this.buf.b+="g"},serialize:function(t){{var n=ct.typeof(t);switch(n[1]){case 0:this.buf.b+="n";break;case 1:var r=t;if(r==0){this.buf.b+="z";return}this.buf.b+="i",r==null?this.buf.b+="null":this.buf.b+=""+r;break;case 2:var s=t;isNaN(s)?this.buf.b+="k":isFinite(s)?(this.buf.b+="d",s==null?this.buf.b+="null":this.buf.b+=""+s):s<0?this.buf.b+="m":this.buf.b+="p";break;case 3:t?this.buf.b+="t":this.buf.b+="f";break;case 6:var o=n[2];if(o==String){this.serializeString(t);return}if(this.useCache&&this.serializeRef(t))return;switch(o){case Array:var h=0;this.buf.b+="a";for(var c=t.length,v=0;v<c;){var d=v++;t[d]==null?h++:(h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h),h=0),this.serialize(t[d]))}h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h)),this.buf.b+="h";break;case Z:this.buf.b+="l";for(var m=t,b=m.h,w=null;b!=null;){var A;w=b[0],b=b[1],A=w,this.serialize(A)}this.buf.b+="h";break;case Date:var P=t;this.buf.b+="v",this.buf.add(P.getTime());break;case he:this.buf.b+="b";for(var z=t,E=z.keys();E.hasNext();){var k=E.next();this.serializeString(k),this.serialize(Ir[k]!=null?z.getReserved(k):z.h[k])}this.buf.b+="h";break;case jt:this.buf.b+="q";for(var T=t,B=T.keys();B.hasNext();){var L=B.next();this.buf.b+=":",L==null?this.buf.b+="null":this.buf.b+=""+L,this.serialize(T.h[L])}this.buf.b+="h";break;case Qt:this.buf.b+="M";for(var R=t,F=R.keys();F.hasNext();){var W=F.next(),D=j.field(W,"__id__");j.deleteField(W,"__id__"),this.serialize(W),W.__id__=D,this.serialize(R.h[W.__id__])}this.buf.b+="h";break;case le:for(var V=t,G=0,J=V.length-2,$=new Pt,nt=Xt.BASE64;G<J;){var st=V.get(G++),rt=V.get(G++),at=V.get(G++);$.add(nt.charAt(st>>2)),$.add(nt.charAt((st<<4|rt>>4)&63)),$.add(nt.charAt((rt<<2|at>>6)&63)),$.add(nt.charAt(at&63))}if(G==J){var et=V.get(G++),ot=V.get(G++);$.add(nt.charAt(et>>2)),$.add(nt.charAt((et<<4|ot>>4)&63)),$.add(nt.charAt(ot<<2&63))}else if(G==J+1){var O=V.get(G++);$.add(nt.charAt(O>>2)),$.add(nt.charAt(O<<4&63))}var ut=$.b;this.buf.b+="s",ut.length==null?this.buf.b+="null":this.buf.b+=""+ut.length,this.buf.b+=":",ut==null?this.buf.b+="null":this.buf.b+=""+ut;break;default:this.useCache&&this.cache.pop(),t.hxSerialize!=null?(this.buf.b+="C",this.serializeString(ct.getClassName(o)),this.useCache&&this.cache.push(t),t.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(ct.getClassName(o)),this.useCache&&this.cache.push(t),this.serializeFields(t))}break;case 4:if(bt.__instanceof(t,yi)){var gt=ct.getClassName(t);this.buf.b+="A",this.serializeString(gt)}else if(bt.__instanceof(t,wi))this.buf.b+="B",this.serializeString(ct.getEnumName(t));else{if(this.useCache&&this.serializeRef(t))return;this.buf.b+="o",this.serializeFields(t)}break;case 7:var Et=n[2];if(this.useCache){if(this.serializeRef(t))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(ct.getEnumName(Et)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=wt.string(t[1])):this.serializeString(t[0]),this.buf.b+=":";var Bt=t.length;this.buf.b+=wt.string(Bt-2);for(var kt=2;kt<Bt;){var Rt=kt++;this.serialize(t[Rt])}this.useCache&&this.cache.push(t);break;case 5:throw new X("Cannot serialize function");default:throw new X("Cannot serialize "+wt.string(t))}}},__class__:Xt};var Dt=function(t){this.buf=t,this.length=t.length,this.pos=0,this.scache=[],this.cache=[];var n=Dt.DEFAULT_RESOLVER;n==null&&(n=ct,Dt.DEFAULT_RESOLVER=n),this.setResolver(n)};y["haxe.Unserializer"]=Dt,Dt.__name__=["haxe","Unserializer"],Dt.initCodes=function(){for(var t=[],n=0,r=Dt.BASE64.length;n<r;){var s=n++;t[Dt.BASE64.charCodeAt(s)]=s}return t},Dt.prototype={setResolver:function(t){t==null?this.resolver={resolveClass:function(n){return null},resolveEnum:function(n){return null}}:this.resolver=t},get:function(t){return this.buf.charCodeAt(t)},readDigits:function(){for(var t=0,n=!1,r=this.pos;;){var s=this.buf.charCodeAt(this.pos);if(s!=s)break;if(s==45){if(this.pos!=r)break;n=!0,this.pos++;continue}if(s<48||s>57)break;t=t*10+(s-48),this.pos++}return n&&(t*=-1),t},readFloat:function(){for(var t=this.pos;;){var n=this.buf.charCodeAt(this.pos);if(n>=43&&n<58||n==101||n==69)this.pos++;else break}return wt.parseFloat(U.substr(this.buf,t,this.pos-t))},unserializeObject:function(t){for(;;){if(this.pos>=this.length)throw new X("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var n=this.unserialize();if(typeof n!="string")throw new X("Invalid object key");var r=this.unserialize();t[n]=r}this.pos++},unserializeEnum:function(t,n){if(this.get(this.pos++)!=58)throw new X("Invalid enum format");var r=this.readDigits();if(r==0)return ct.createEnum(t,n);for(var s=[];r-- >0;)s.push(this.unserialize());return ct.createEnum(t,n,s)},unserialize:function(){var t=this.get(this.pos++);switch(t){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var n=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<n)throw new X("Invalid string length");var r=U.substr(this.buf,this.pos,n);return this.pos+=n,r=decodeURIComponent(r.split("+").join(" ")),this.scache.push(r),r;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var s=[];for(this.cache.push(s);;){var o=this.buf.charCodeAt(this.pos);if(o==104){this.pos++;break}if(o==117){this.pos++;var h=this.readDigits();s[s.length+h-1]=null}else s.push(this.unserialize())}return s;case 111:var c={};return this.cache.push(c),this.unserializeObject(c),c;case 114:var v=this.readDigits();if(v<0||v>=this.cache.length)throw new X("Invalid reference");return this.cache[v];case 82:var d=this.readDigits();if(d<0||d>=this.scache.length)throw new X("Invalid string reference");return this.scache[d];case 120:throw new X(this.unserialize());case 99:var m=this.unserialize(),b=this.resolver.resolveClass(m);if(b==null)throw new X("Class not found "+m);var w=ct.createEmptyInstance(b);return this.cache.push(w),this.unserializeObject(w),w;case 119:var A=this.unserialize(),P=this.resolver.resolveEnum(A);if(P==null)throw new X("Enum not found "+A);var z=this.unserializeEnum(P,this.unserialize());return this.cache.push(z),z;case 106:var E=this.unserialize(),k=this.resolver.resolveEnum(E);if(k==null)throw new X("Enum not found "+E);this.pos++;var T=this.readDigits(),B=ct.getEnumConstructs(k)[T];if(B==null)throw new X("Unknown enum index "+E+"@"+T);var L=this.unserializeEnum(k,B);return this.cache.push(L),L;case 108:var R=new Z;for(this.cache.push(R),this.buf;this.buf.charCodeAt(this.pos)!=104;)R.add(this.unserialize());return this.pos++,R;case 98:var F=new he;for(this.cache.push(F),this.buf;this.buf.charCodeAt(this.pos)!=104;){var W=this.unserialize();F.set(W,this.unserialize())}return this.pos++,F;case 113:var D=new jt;this.cache.push(D),this.buf;for(var V=this.get(this.pos++);V==58;){var G=this.readDigits();D.set(G,this.unserialize()),V=this.get(this.pos++)}if(V!=104)throw new X("Invalid IntMap format");return D;case 77:var J=new Qt;for(this.cache.push(J),this.buf;this.buf.charCodeAt(this.pos)!=104;){var $=this.unserialize();J.set($,this.unserialize())}return this.pos++,J;case 118:var nt;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var st=U.substr(this.buf,this.pos,19);nt=U.strDate(st),this.pos+=19}else{var rt=this.readFloat(),at=new Date;at.setTime(rt),nt=at}return this.cache.push(nt),nt;case 115:var et=this.readDigits(),ot=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<et)throw new X("Invalid bytes length");var O=Dt.CODES;O==null&&(O=Dt.initCodes(),Dt.CODES=O);var ut=this.pos,gt=et&3,Et;Et=(et>>2)*3+(gt>=2?gt-1:0);for(var Bt=ut+(et-gt),kt=le.alloc(Et),Rt=0;ut<Bt;){var ie=O[mt.fastCodeAt(ot,ut++)],ge=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ie<<2|ge>>4);var ne=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ge<<4|ne>>2);var $t=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ne<<6|$t)}if(gt>=2){var se=O[mt.fastCodeAt(ot,ut++)],_e=O[mt.fastCodeAt(ot,ut++)];if(kt.set(Rt++,se<<2|_e>>4),gt==3){var xe=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,_e<<4|xe>>2)}}return this.pos+=et,this.cache.push(kt),kt;case 67:var Ne=this.unserialize(),Ae=this.resolver.resolveClass(Ne);if(Ae==null)throw new X("Class not found "+Ne);var Pe=ct.createEmptyInstance(Ae);if(this.cache.push(Pe),Pe.hxUnserialize(this),this.get(this.pos++)!=103)throw new X("Invalid custom data");return Pe;case 65:var Me=this.unserialize(),Re=this.resolver.resolveClass(Me);if(Re==null)throw new X("Class not found "+Me);return Re;case 66:var bn=this.unserialize(),en=this.resolver.resolveEnum(bn);if(en==null)throw new X("Enum not found "+bn);return en}throw this.pos--,new X("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:Dt};var jt=function(){this.h={}};y["haxe.ds.IntMap"]=jt,jt.__name__=["haxe","ds","IntMap"],jt.__interfaces__=[lt],jt.prototype={set:function(t,n){this.h[t]=n},remove:function(t){return this.h.hasOwnProperty(t)?(delete this.h[t],!0):!1},keys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n|0);return U.iter(t)},__class__:jt};var Qt=function(){this.h={},this.h.__keys__={}};y["haxe.ds.ObjectMap"]=Qt,Qt.__name__=["haxe","ds","ObjectMap"],Qt.__interfaces__=[lt],Qt.prototype={set:function(t,n){var r=t.__id__||(t.__id__=++Qt.count);this.h[r]=n,this.h.__keys__[r]=t},keys:function(){var t=[];for(var n in this.h.__keys__)this.h.hasOwnProperty(n)&&t.push(this.h.__keys__[n]);return U.iter(t)},__class__:Qt};var oe=y["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};oe.Some=function(t){var n=["Some",0,t];return n.__enum__=oe,n.toString=I,n},oe.None=["None",1],oe.None.toString=I,oe.None.__enum__=oe;var he=function(){this.h={}};y["haxe.ds.StringMap"]=he,he.__name__=["haxe","ds","StringMap"],he.__interfaces__=[lt],he.prototype={set:function(t,n){Ir[t]!=null?this.setReserved(t,n):this.h[t]=n},get:function(t){return Ir[t]!=null?this.getReserved(t):this.h[t]},setReserved:function(t,n){this.rh==null&&(this.rh={}),this.rh["$"+t]=n},getReserved:function(t){return this.rh==null?null:this.rh["$"+t]},keys:function(){var t=this.arrayKeys();return U.iter(t)},arrayKeys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n);if(this.rh!=null)for(var n in this.rh)n.charCodeAt(0)==36&&t.push(n.substr(1));return t},__class__:he};var le=function(t){this.length=t.byteLength,this.b=new Er(t),this.b.bufferValue=t,t.hxBytes=this,t.bytes=this.b};y["haxe.io.Bytes"]=le,le.__name__=["haxe","io","Bytes"],le.alloc=function(t){return new le(new or(t))},le.prototype={get:function(t){return this.b[t]},set:function(t,n){this.b[t]=n&255},__class__:le};var Ot=y["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};Ot.Blocked=["Blocked",0],Ot.Blocked.toString=I,Ot.Blocked.__enum__=Ot,Ot.Overflow=["Overflow",1],Ot.Overflow.toString=I,Ot.Overflow.__enum__=Ot,Ot.OutsideBounds=["OutsideBounds",2],Ot.OutsideBounds.toString=I,Ot.OutsideBounds.__enum__=Ot,Ot.Custom=function(t){var n=["Custom",3,t];return n.__enum__=Ot,n.toString=I,n};var Wt=function(){};y["haxe.io.FPHelper"]=Wt,Wt.__name__=["haxe","io","FPHelper"],Wt.i32ToFloat=function(t){var n=1-(t>>>31<<1),r=t>>>23&255,s=t&8388607;return s==0&&r==0?0:n*(1+Math.pow(2,-23)*s)*Math.pow(2,r-127)},Wt.floatToI32=function(t){if(t==0)return 0;var n;t<0?n=-t:n=t;var r=Math.floor(Math.log(n)/.6931471805599453);r<-127?r=-127:r>128&&(r=128);var s=Math.round((n/Math.pow(2,r)-1)*8388608)&8388607;return(t<0?-2147483648:0)|r+127<<23|s},Wt.i64ToDouble=function(t,n){var r=1-(n>>>31<<1),s=(n>>20&2047)-1023,o=(n&1048575)*4294967296+(t>>>31)*2147483648+(t&2147483647);return o==0&&s==-1023?0:r*(1+Math.pow(2,-52)*o)*Math.pow(2,s)},Wt.doubleToI64=function(t){var n=Wt.i64tmp;if(t==0)n.low=0,n.high=0;else{var r;t<0?r=-t:r=t;var s=Math.floor(Math.log(r)/.6931471805599453),o,h=(r/Math.pow(2,s)-1)*4503599627370496;o=Math.round(h);var c=o|0,v=o/4294967296|0;n.low=c,n.high=(t<0?-2147483648:0)|s+1023<<20|v}return n};var X=function(t){Error.call(this),this.val=t,this.message=String(t),Error.captureStackTrace&&Error.captureStackTrace(this,X)};y["js._Boot.HaxeError"]=X,X.__name__=["js","_Boot","HaxeError"],X.__super__=Error,X.prototype=C(Error.prototype,{__class__:X});var bt=function(){};y["js.Boot"]=bt,bt.__name__=["js","Boot"],bt.getClass=function(t){if(t instanceof Array&&t.__enum__==null)return Array;var n=t.__class__;if(n!=null)return n;var r=bt.__nativeClassName(t);return r!=null?bt.__resolveNativeClass(r):null},bt.__string_rec=function(t,n){if(t==null)return"null";if(n.length>=5)return"<...>";var r=typeof t;switch(r=="function"&&(t.__name__||t.__ename__)&&(r="object"),r){case"object":if(t instanceof Array){if(t.__enum__){if(t.length==2)return t[0];var s=t[0]+"(";n+=" ";for(var o=2,h=t.length;o<h;){var c=o++;c!=2?s+=","+bt.__string_rec(t[c],n):s+=bt.__string_rec(t[c],n)}return s+")"}var v=t.length,d="[";n+=" ";for(var m=0;m<v;){var b=m++;d+=(b>0?",":"")+bt.__string_rec(t[b],n)}return d+="]",d}var w;try{w=t.toString}catch(k){return k instanceof X&&(k=k.val),"???"}if(w!=null&&w!=Object.toString&&typeof w=="function"){var A=t.toString();if(A!="[object Object]")return A}var P=null,z=`{
1
+ (function(H,ee){typeof exports=="object"&&typeof module<"u"?ee(exports,require("@mlightcad/common")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/common"],ee):(H=typeof globalThis<"u"?globalThis:H||self,ee(H["geometry-engine"]={},H.common))})(this,function(H,ee){"use strict";const Qt=["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 Ur=1234567;const hr=Math.PI/180,lr=180/Math.PI;function Rr(){const N=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0,a=Math.random()*4294967295|0;return(Qt[N&255]+Qt[N>>8&255]+Qt[N>>16&255]+Qt[N>>24&255]+"-"+Qt[e&255]+Qt[e>>8&255]+"-"+Qt[e>>16&15|64]+Qt[e>>24&255]+"-"+Qt[i&63|128]+Qt[i>>8&255]+"-"+Qt[i>>16&255]+Qt[i>>24&255]+Qt[a&255]+Qt[a>>8&255]+Qt[a>>16&255]+Qt[a>>24&255]).toLowerCase()}function Be(N,e,i){return Math.max(e,Math.min(i,N))}function ur(N,e){return(N%e+e)%e}function Vr(N,e,i,a,l){return a+(N-e)*(l-a)/(i-e)}function Dr(N,e,i){return N!==e?(i-N)/(e-N):0}function cr(N,e,i){return(1-i)*N+i*e}function Fr(N,e,i,a){return cr(N,e,1-Math.exp(-i*a))}function Or(N,e=1){return e-Math.abs(ur(N,e*2)-e)}function qr(N,e,i){return N<=e?0:N>=i?1:(N=(N-e)/(i-e),N*N*(3-2*N))}function Gr(N,e,i){return N<=e?0:N>=i?1:(N=(N-e)/(i-e),N*N*N*(N*(N*6-15)+10))}function Kr(N,e){return N+Math.floor(Math.random()*(e-N+1))}function jr(N,e){return N+Math.random()*(e-N)}function Xr(N){return N*(.5-Math.random())}function Wr(N){N!==void 0&&(Ur=N);let e=Ur+=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 Zr(N){return N*hr}function Yr(N){return N*lr}function Hr(N){return(N&N-1)===0&&N!==0}function Qr(N){return Math.pow(2,Math.ceil(Math.log(N)/Math.LN2))}function Jr(N){return Math.pow(2,Math.floor(Math.log(N)/Math.LN2))}function An(N){const e=Math.PI*2;return(N%e+e)%e}function $r(N,e,i){return N>e&&N<i||N>i&&N<e}function ti(N,e,i,a=!1){return N=An(N),e=An(e),i=An(i),a?e>i?N<=e&&N>=i:N<=e||N>=i:e<i?N>=e&&N<=i:N>=e||N<=i}function vr(N){return N=Math.abs(N),N<1?0:Math.ceil(Math.log10(Math.abs(N)+1))}function ei(N,e=1e-7){const i=vr(N);return Math.max(Math.pow(10,i)*e,e)}const Ct={DEG2RAD:hr,RAD2DEG:lr,generateUUID:Rr,clamp:Be,euclideanModulo:ur,mapLinear:Vr,inverseLerp:Dr,lerp:cr,damp:Fr,pingpong:Or,smoothstep:qr,smootherstep:Gr,randInt:Kr,randFloat:jr,randFloatSpread:Xr,seededRandom:Wr,degToRad:Zr,radToDeg:Yr,isPowerOfTwo:Hr,ceilPowerOfTwo:Qr,floorPowerOfTwo:Jr,normalizeAngle:An,isBetween:$r,isBetweenAngle:ti,intPartLength:vr,relativeEps:ei},En=class En{constructor(e,i){this.x=0,this.y=0;const a=+(e!==void 0)+ +(i!==void 0);if(a!==0){if(a===1&&e instanceof Array){this.x=e[0],this.y=e[1];return}if(a===1){const{x:l,y:_}=e;this.x=l,this.y=_;return}if(a===2){this.x=e,this.y=i;return}throw ee.AcCmErrors.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,i){return this.x=e,this.y=i,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,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;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 En(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,i){return this.x=e.x+i.x,this.y=e.y+i.y,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,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,i){return this.x=e.x-i.x,this.y=e.y-i.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)}applyMatrix2d(e){const i=this.x,a=this.y,l=e.elements;return this.x=l[0]*i+l[3]*a+l[6],this.y=l[1]*i+l[4]*a+l[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,i){return this.x=Math.max(e.x,Math.min(i.x,this.x)),this.y=Math.max(e.y,Math.min(i.y,this.y)),this}clampScalar(e,i){return this.x=Math.max(e,Math.min(i,this.x)),this.y=Math.max(e,Math.min(i,this.y)),this}clampLength(e,i){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(i,a)))}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 i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const a=this.dot(e)/i;return Math.acos(Math.max(-1,Math.min(1,a)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,a=this.y-e.y;return i*i+a*a}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this}lerpVectors(e,i,a){return this.x=e.x+(i.x-e.x)*a,this.y=e.y+(i.y-e.y)*a,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e}rotateAround(e,i){const a=Math.cos(i),l=Math.sin(i),_=this.x-e.x,g=this.y-e.y;return this.x=_*a-g*l+e.x,this.y=_*l+g*a+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(e=1e-7){return Math.min(Ct.relativeEps(this.x,e),Ct.relativeEps(this.y,e))}*[Symbol.iterator](){yield this.x,yield this.y}};En.EMPTY=Object.freeze(new En(0,0));let Tt=En;const Nn=class Nn{constructor(e,i,a,l,_,g,p,x,f){this.elements=[1,0,0,0,1,0,0,0,1],e!=null&&i!=null&&a!=null&&l!=null&&_!=null&&g!=null&&p!=null&&x!=null&&f!=null&&this.set(e,i,a,l,_,g,p,x,f)}set(e,i,a,l,_,g,p,x,f){const M=this.elements;return M[0]=e,M[1]=l,M[2]=p,M[3]=i,M[4]=_,M[5]=x,M[6]=a,M[7]=g,M[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const i=this.elements,a=e.elements;return i[0]=a[0],i[1]=a[1],i[2]=a[2],i[3]=a[3],i[4]=a[4],i[5]=a[5],i[6]=a[6],i[7]=a[7],i[8]=a[8],this}extractBasis(e,i,a){return e.setFromMatrix3Column(this,0),i.setFromMatrix3Column(this,1),a.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const i=e.elements;return this.set(i[0],i[4],i[8],i[1],i[5],i[9],i[2],i[6],i[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const a=e.elements,l=i.elements,_=this.elements,g=a[0],p=a[3],x=a[6],f=a[1],M=a[4],y=a[7],I=a[2],C=a[5],U=a[8],q=l[0],Z=l[3],j=l[6],wt=l[1],Pt=l[4],mt=l[7],Y=l[2],ct=l[5],lt=l[8];return _[0]=g*q+p*wt+x*Y,_[3]=g*Z+p*Pt+x*ct,_[6]=g*j+p*mt+x*lt,_[1]=f*q+M*wt+y*Y,_[4]=f*Z+M*Pt+y*ct,_[7]=f*j+M*mt+y*lt,_[2]=I*q+C*wt+U*Y,_[5]=I*Z+C*Pt+U*ct,_[8]=I*j+C*mt+U*lt,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=e,i[4]*=e,i[7]*=e,i[2]*=e,i[5]*=e,i[8]*=e,this}determinant(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8];return i*g*M-i*p*f-a*_*M+a*p*x+l*_*f-l*g*x}invert(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8],y=M*g-p*f,I=p*x-M*_,C=f*_-g*x,U=i*y+a*I+l*C;if(U===0)return this.set(0,0,0,0,0,0,0,0,0);const q=1/U;return e[0]=y*q,e[1]=(l*f-M*a)*q,e[2]=(p*a-l*g)*q,e[3]=I*q,e[4]=(M*i-l*x)*q,e[5]=(l*_-p*i)*q,e[6]=C*q,e[7]=(a*x-f*i)*q,e[8]=(g*i-a*_)*q,this}transpose(){let e;const i=this.elements;return e=i[1],i[1]=i[3],i[3]=e,e=i[2],i[2]=i[6],i[6]=e,e=i[5],i[5]=i[7],i[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const i=this.elements;return e.elements[0]=i[0],e.elements[1]=i[3],e.elements[2]=i[6],e.elements[3]=i[1],e.elements[4]=i[4],e.elements[5]=i[7],e.elements[6]=i[2],e.elements[7]=i[5],e.elements[8]=i[8],this}setUvTransform(e,i,a,l,_,g,p){const x=Math.cos(_),f=Math.sin(_);return this.set(a*x,a*f,-a*(x*g+f*p)+g+e,-l*f,l*x,-l*(-f*g+x*p)+p+i,0,0,1),this}scale(e,i){return this.premultiply(_r.makeScale(e,i)),this}rotate(e){return this.premultiply(_r.makeRotation(-e)),this}translate(e,i){return this.premultiply(_r.makeTranslation(e,i)),this}makeTranslation(e,i){return e instanceof Tt?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,i,0,0,1),this}makeRotation(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,-a,0,a,i,0,0,0,1),this}makeScale(e,i){return this.set(e,0,0,0,i,0,0,0,1),this}equals(e){const i=this.elements,a=e.elements;for(let l=0;l<9;l++)if(i[l]!==a[l])return!1;return!0}fromArray(e,i=0){for(let a=0;a<9;a++)this.elements[a]=e[a+i];return this}toArray(e=[],i=0){const a=this.elements;return e[i]=a[0],e[i+1]=a[1],e[i+2]=a[2],e[i+3]=a[3],e[i+4]=a[4],e[i+5]=a[5],e[i+6]=a[6],e[i+7]=a[7],e[i+8]=a[8],e}clone(){return new Nn().fromArray(this.elements)}};Nn.IDENTITY=Object.freeze(new Nn);let sn=Nn;const _r=new sn,He=1e-6,Lt=2*Math.PI,Bi={x:0,y:0},dr={x:0,y:0,z:0};class fr{constructor(){this.equalPointTol=He,this.equalVectorTol=He}equalPoint2d(e,i){return new Tt(e).sub(i).length()<this.equalPointTol}equalPoint3d(e,i){return new Q(e).sub(i).length()<this.equalPointTol}static equalToZero(e,i=He){return e<i&&e>-i}static equal(e,i,a=He){return Math.abs(e-i)<a}static great(e,i,a=He){return e-i>a}static less(e,i,a=He){return e-i<a}}const mr=new fr;function gr(N,e,i=!1){const a=N.x,l=N.y;let _=!1;const g=e.length;for(let p=0,x=g-1;p<g;x=p++){const f=e[p].x,M=e[p].y,y=e[x].x,I=e[x].y;let C=M>l!=I>l;i&&(C=M>=l!=I>=l),C&&a<(y-f)*(l-M)/(I-M)+f&&(_=!_)}return _}function ni(N,e){if(N.length===0||e.length===0)return!1;const i=new de().setFromPoints(N),a=new de().setFromPoints(e);if(!i.intersectsBox(a))return!1;for(let l=0;l<N.length;){if(gr(N[l],e,!0))return!0;l<N.length-1&&mr.equalPoint2d(N[l+1],N[l])&&++l,++l}return!1}const ri={isPointInPolygon:gr,isPolygonIntersect:ni};function ii(N,e){const i=[],a=e-1,l=N;for(let _=0;_<=l;_++)i.push(0);for(let _=1;_<=a-l;_++)i.push(_);for(let _=0;_<=l;_++)i.push(a-l+1);return i}function si(N,e){const i=e.length-1,a=N,l=[0];let _=0;for(let p=1;p<=i;p++){const x=e[p][0]-e[p-1][0],f=e[p][1]-e[p-1][1],M=e[p][2]-e[p-1][2],y=Math.sqrt(x*x+f*f+M*M);_+=y,l.push(_)}const g=[];for(let p=0;p<=a;p++)g.push(0);for(let p=1;p<=i-a;p++){const x=l[p]/_;g.push(x*(i-a+1))}for(let p=0;p<=a;p++)g.push(i-a+1);return g}function ai(N,e){const i=e.length-1,a=N,l=[0];let _=0;for(let p=1;p<=i;p++){const x=e[p][0]-e[p-1][0],f=e[p][1]-e[p-1][1],M=e[p][2]-e[p-1][2],y=Math.sqrt(x*x+f*f+M*M),I=Math.sqrt(y);_+=I,l.push(_)}const g=[];for(let p=0;p<=a;p++)g.push(0);for(let p=1;p<=i-a;p++){const x=l[p]/_;g.push(x*(i-a+1))}for(let p=0;p<=a;p++)g.push(i-a+1);return g}function nr(N,e,i,a){if(e===0)return i>=a[N]&&i<a[N+1]?1:0;const l=a[N+e]-a[N],_=a[N+e+1]-a[N+1],g=l>1e-10?(i-a[N])/l:0,p=_>1e-10?(a[N+e+1]-i)/_:0;return g*nr(N,e-1,i,a)+p*nr(N+1,e-1,i,a)}function Pn(N,e,i,a,l){const _=a.length-1,g=e;if(N=Math.max(i[g],Math.min(i[_+1],N)),Math.abs(N-i[_+1])<1e-8)return[...a[_]];if(Math.abs(N-i[g])<1e-8)return[...a[0]];const p=[0,0,0];let x=0;for(let f=0;f<=_;f++){const M=nr(f,g,N,i),y=l[f]*M;p[0]+=a[f][0]*y,p[1]+=a[f][1]*y,p[2]+=a[f][2]*y,x+=y}if(x<1e-10){const f=i[i.length-g-1];if(Math.abs(N-f)<1e-8)return[...a[_]];if(Math.abs(N-i[g])<1e-8)return[...a[0]]}return x>1e-10&&(p[0]/=x,p[1]/=x,p[2]/=x),p}function oi(N,e,i,a){const l=N,_=e[l],g=e[e.length-l-1];let p=0;const x=1e3,f=(g-_)/x;let M=Pn(_,N,e,i,a);for(let q=1;q<=x;q++){const Z=_+q*f,j=Pn(Z,N,e,i,a),wt=j[0]-M[0],Pt=j[1]-M[1],mt=j[2]-M[2];p+=Math.sqrt(wt*wt+Pt*Pt+mt*mt),M=j}const y=Pn(g,N,e,i,a),I=y[0]-M[0],C=y[1]-M[1],U=y[2]-M[2];return p+=Math.sqrt(I*I+C*C+U*U),p}function Ti(N){return N.map(e=>[...e])}class Mn{constructor(e=0,i=0,a=0,l=1){this._x=e,this._y=i,this._z=a,this._w=l}static slerpFlat(e,i,a,l,_,g,p){let x=a[l+0],f=a[l+1],M=a[l+2],y=a[l+3];const I=_[g+0],C=_[g+1],U=_[g+2],q=_[g+3];if(p===0){e[i+0]=x,e[i+1]=f,e[i+2]=M,e[i+3]=y;return}if(p===1){e[i+0]=I,e[i+1]=C,e[i+2]=U,e[i+3]=q;return}if(y!==q||x!==I||f!==C||M!==U){let Z=1-p;const j=x*I+f*C+M*U+y*q,wt=j>=0?1:-1,Pt=1-j*j;if(Pt>Number.EPSILON){const Y=Math.sqrt(Pt),ct=Math.atan2(Y,j*wt);Z=Math.sin(Z*ct)/Y,p=Math.sin(p*ct)/Y}const mt=p*wt;if(x=x*Z+I*mt,f=f*Z+C*mt,M=M*Z+U*mt,y=y*Z+q*mt,Z===1-p){const Y=1/Math.sqrt(x*x+f*f+M*M+y*y);x*=Y,f*=Y,M*=Y,y*=Y}}e[i]=x,e[i+1]=f,e[i+2]=M,e[i+3]=y}static multiplyQuaternionsFlat(e,i,a,l,_,g){const p=a[l],x=a[l+1],f=a[l+2],M=a[l+3],y=_[g],I=_[g+1],C=_[g+2],U=_[g+3];return e[i]=p*U+M*y+x*C-f*I,e[i+1]=x*U+M*I+f*y-p*C,e[i+2]=f*U+M*C+p*I-x*y,e[i+3]=M*U-p*y-x*I-f*C,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,i,a,l){return this._x=e,this._y=i,this._z=a,this._w=l,this._onChangeCallback(),this}clone(){return new Mn(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,i=!0){const a=e.x,l=e.y,_=e.z,g=e.order,p=Math.cos,x=Math.sin,f=p(a/2),M=p(l/2),y=p(_/2),I=x(a/2),C=x(l/2),U=x(_/2);switch(g){case"XYZ":this._x=I*M*y+f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y-I*C*U;break;case"YXZ":this._x=I*M*y+f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y+I*C*U;break;case"ZXY":this._x=I*M*y-f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y-I*C*U;break;case"ZYX":this._x=I*M*y-f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y+I*C*U;break;case"YZX":this._x=I*M*y+f*C*U,this._y=f*C*y+I*M*U,this._z=f*M*U-I*C*y,this._w=f*M*y-I*C*U;break;case"XZY":this._x=I*M*y-f*C*U,this._y=f*C*y-I*M*U,this._z=f*M*U+I*C*y,this._w=f*M*y+I*C*U;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+g)}return i===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,i){const a=i/2,l=Math.sin(a);return this._x=e.x*l,this._y=e.y*l,this._z=e.z*l,this._w=Math.cos(a),this._onChangeCallback(),this}setFromRotationMatrix(e){const i=e.elements,a=i[0],l=i[4],_=i[8],g=i[1],p=i[5],x=i[9],f=i[2],M=i[6],y=i[10],I=a+p+y;if(I>0){const C=.5/Math.sqrt(I+1);this._w=.25/C,this._x=(M-x)*C,this._y=(_-f)*C,this._z=(g-l)*C}else if(a>p&&a>y){const C=2*Math.sqrt(1+a-p-y);this._w=(M-x)/C,this._x=.25*C,this._y=(l+g)/C,this._z=(_+f)/C}else if(p>y){const C=2*Math.sqrt(1+p-a-y);this._w=(_-f)/C,this._x=(l+g)/C,this._y=.25*C,this._z=(x+M)/C}else{const C=2*Math.sqrt(1+y-a-p);this._w=(g-l)/C,this._x=(_+f)/C,this._y=(x+M)/C,this._z=.25*C}return this._onChangeCallback(),this}setFromUnitVectors(e,i){let a=e.dot(i)+1;return a<Number.EPSILON?(a=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=a):(this._x=0,this._y=-e.z,this._z=e.y,this._w=a)):(this._x=e.y*i.z-e.z*i.y,this._y=e.z*i.x-e.x*i.z,this._z=e.x*i.y-e.y*i.x,this._w=a),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Be(this.dot(e),-1,1)))}rotateTowards(e,i){const a=this.angleTo(e);if(a===0)return this;const l=Math.min(1,i/a);return this.slerp(e,l),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,i){const a=e._x,l=e._y,_=e._z,g=e._w,p=i._x,x=i._y,f=i._z,M=i._w;return this._x=a*M+g*p+l*f-_*x,this._y=l*M+g*x+_*p-a*f,this._z=_*M+g*f+a*x-l*p,this._w=g*M-a*p-l*x-_*f,this._onChangeCallback(),this}slerp(e,i){if(i===0)return this;if(i===1)return this.copy(e);const a=this._x,l=this._y,_=this._z,g=this._w;let p=g*e._w+a*e._x+l*e._y+_*e._z;if(p<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,p=-p):this.copy(e),p>=1)return this._w=g,this._x=a,this._y=l,this._z=_,this;const x=1-p*p;if(x<=Number.EPSILON){const C=1-i;return this._w=C*g+i*this._w,this._x=C*a+i*this._x,this._y=C*l+i*this._y,this._z=C*_+i*this._z,this.normalize(),this}const f=Math.sqrt(x),M=Math.atan2(f,p),y=Math.sin((1-i)*M)/f,I=Math.sin(i*M)/f;return this._w=g*y+this._w*I,this._x=a*y+this._x*I,this._y=l*y+this._y*I,this._z=_*y+this._z*I,this._onChangeCallback(),this}slerpQuaternions(e,i,a){return this.copy(e).slerp(i,a)}random(){const e=2*Math.PI*Math.random(),i=2*Math.PI*Math.random(),a=Math.random(),l=Math.sqrt(1-a),_=Math.sqrt(a);return this.set(l*Math.sin(e),l*Math.cos(e),_*Math.sin(i),_*Math.cos(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,i=0){return this._x=e[i],this._y=e[i+1],this._z=e[i+2],this._w=e[i+3],this._onChangeCallback(),this}toArray(e=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+3]=this._w,e}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}}const Wt=class Wt{constructor(e,i,a){this.x=0,this.y=0,this.z=0;const l=+(e!==void 0)+ +(i!==void 0)+ +(a!==void 0);if(l!==0){if(l===1&&e instanceof Array){this.x=e[0],this.y=e[1],this.z=e[2];return}if(l===1){const{x:_,y:g,z:p}=e;this.x=_,this.y=g,this.z=p||0;return}if(l===3){this.x=e,this.y=i,this.z=a;return}throw ee.AcCmErrors.ILLEGAL_PARAMETERS}}set(e,i,a){return a===void 0&&(a=this.z),this.x=e,this.y=i,this.z=a,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,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;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 Wt(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z||0,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z||0,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,i){return this.x=e.x+i.x,this.y=e.y+i.y,this.z=e.z+i.z,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,this.z+=e.z*i,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,i){return this.x=e.x-i.x,this.y=e.y-i.y,this.z=e.z-i.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,i){return this.x=e.x*i.x,this.y=e.y*i.y,this.z=e.z*i.z,this}applyEuler(e){return this.applyQuaternion(hi.setFromEuler(e))}applyAxisAngle(e,i){return this.applyQuaternion(hi.setFromAxisAngle(e,i))}applyMatrix3(e){const i=this.x,a=this.y,l=this.z,_=e.elements;return this.x=_[0]*i+_[3]*a+_[6]*l,this.y=_[1]*i+_[4]*a+_[7]*l,this.z=_[2]*i+_[5]*a+_[8]*l,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const i=this.x,a=this.y,l=this.z,_=e.elements,g=1/(_[3]*i+_[7]*a+_[11]*l+_[15]);return this.x=(_[0]*i+_[4]*a+_[8]*l+_[12])*g,this.y=(_[1]*i+_[5]*a+_[9]*l+_[13])*g,this.z=(_[2]*i+_[6]*a+_[10]*l+_[14])*g,this}applyQuaternion(e){const i=this.x,a=this.y,l=this.z,_=e.x,g=e.y,p=e.z,x=e.w,f=2*(g*l-p*a),M=2*(p*i-_*l),y=2*(_*a-g*i);return this.x=i+x*f+g*y-p*M,this.y=a+x*M+p*f-_*y,this.z=l+x*y+_*M-g*f,this}transformDirection(e){const i=this.x,a=this.y,l=this.z,_=e.elements;return this.x=_[0]*i+_[4]*a+_[8]*l,this.y=_[1]*i+_[5]*a+_[9]*l,this.z=_[2]*i+_[6]*a+_[10]*l,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,i){return this.x=Math.max(e.x,Math.min(i.x,this.x)),this.y=Math.max(e.y,Math.min(i.y,this.y)),this.z=Math.max(e.z,Math.min(i.z,this.z)),this}clampScalar(e,i){return this.x=Math.max(e,Math.min(i,this.x)),this.y=Math.max(e,Math.min(i,this.y)),this.z=Math.max(e,Math.min(i,this.z)),this}clampLength(e,i){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(i,a)))}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}isParallelTo(e){const i=this.dot(e),a=this.length(),l=e.length();return Math.abs(i)===a*l}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,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this.z+=(e.z-this.z)*i,this}lerpVectors(e,i,a){return this.x=e.x+(i.x-e.x)*a,this.y=e.y+(i.y-e.y)*a,this.z=e.z+(i.z-e.z)*a,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,i){const a=e.x,l=e.y,_=e.z,g=i.x,p=i.y,x=i.z;return this.x=l*x-_*p,this.y=_*g-a*x,this.z=a*p-l*g,this}projectOnVector(e){const i=e.lengthSq();if(i===0)return this.set(0,0,0);const a=e.dot(this)/i;return this.copy(e).multiplyScalar(a)}projectOnPlane(e){return pr.copy(this).projectOnVector(e),this.sub(pr)}reflect(e){return this.sub(pr.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const a=this.dot(e)/i;return Math.acos(Math.max(-1,Math.min(1,a)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,a=this.y-e.y,l=this.z-e.z;return i*i+a*a+l*l}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromMatrixPosition(e){const i=e.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this}setFromMatrixScale(e){const i=this.setFromMatrixColumn(e,0).length(),a=this.setFromMatrixColumn(e,1).length(),l=this.setFromMatrixColumn(e,2).length();return this.x=i,this.y=a,this.z=l,this}setFromMatrixColumn(e,i){return this.fromArray(e.elements,i*4)}setFromMatrix3Column(e,i){return this.fromArray(e.elements,i*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this.z=e[i+2],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e[i+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,i=Math.random()*2-1,a=Math.sqrt(1-i*i);return this.x=a*Math.cos(e),this.y=i,this.z=a*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};Wt.ORIGIN=Object.freeze(new Wt(0,0,0)),Wt.X_AXIS=Object.freeze(new Wt(1,0,0)),Wt.NEGATIVE_X_AXIS=Object.freeze(new Wt(-1,0,0)),Wt.Y_AXIS=Object.freeze(new Wt(0,1,0)),Wt.NEGATIVE_Y_AXIS=Object.freeze(new Wt(0,-1,0)),Wt.Z_AXIS=Object.freeze(new Wt(0,0,1)),Wt.NEGATIVE_Z_AXIS=Object.freeze(new Wt(0,0,-1));let Q=Wt;const pr=new Q,hi=new Mn,Bn=class Bn{constructor(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!=null&&i!=null&&a!=null&&l!=null&&_!=null&&g!=null&&p!=null&&x!=null&&f!=null&&M!=null&&y!=null&&I!=null&&C!=null&&U!=null&&q!=null&&Z!=null&&this.set(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z)}set(e,i,a,l,_,g,p,x,f,M,y,I,C,U,q,Z){const j=this.elements;return j[0]=e,j[4]=i,j[8]=a,j[12]=l,j[1]=_,j[5]=g,j[9]=p,j[13]=x,j[2]=f,j[6]=M,j[10]=y,j[14]=I,j[3]=C,j[7]=U,j[11]=q,j[15]=Z,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 Bn().fromArray(this.elements)}copy(e){const i=this.elements,a=e.elements;return i[0]=a[0],i[1]=a[1],i[2]=a[2],i[3]=a[3],i[4]=a[4],i[5]=a[5],i[6]=a[6],i[7]=a[7],i[8]=a[8],i[9]=a[9],i[10]=a[10],i[11]=a[11],i[12]=a[12],i[13]=a[13],i[14]=a[14],i[15]=a[15],this}copyPosition(e){const i=this.elements,a=e.elements;return i[12]=a[12],i[13]=a[13],i[14]=a[14],this}setFromMatrix3(e){const i=e.elements;return this.set(i[0],i[3],i[6],0,i[1],i[4],i[7],0,i[2],i[5],i[8],0,0,0,0,1),this}setFromExtrusionDirection(e){if(mr.equalPoint3d(e,Q.Z_AXIS))this.identity();else{const i=new Q(1,0,0);Math.abs(e.x)<1/64&&Math.abs(e.y)<1/64?i.crossVectors(Q.Y_AXIS,e).normalize():i.crossVectors(Q.Z_AXIS,e).normalize();const a=e.clone().cross(i).normalize();this.set(i.x,i.y,i.z,0,a.x,a.y,a.z,0,e.x,e.y,e.z,0,0,0,0,1)}return this}extractBasis(e,i,a){return e.setFromMatrixColumn(this,0),i.setFromMatrixColumn(this,1),a.setFromMatrixColumn(this,2),this}makeBasis(e,i,a){return this.set(e.x,i.x,a.x,0,e.y,i.y,a.y,0,e.z,i.z,a.z,0,0,0,0,1),this}extractRotation(e){const i=this.elements,a=e.elements,l=1/on.setFromMatrixColumn(e,0).length(),_=1/on.setFromMatrixColumn(e,1).length(),g=1/on.setFromMatrixColumn(e,2).length();return i[0]=a[0]*l,i[1]=a[1]*l,i[2]=a[2]*l,i[3]=0,i[4]=a[4]*_,i[5]=a[5]*_,i[6]=a[6]*_,i[7]=0,i[8]=a[8]*g,i[9]=a[9]*g,i[10]=a[10]*g,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Li,e,Ui)}lookAt(e,i,a){const l=this.elements;return ae.subVectors(e,i),ae.lengthSq()===0&&(ae.z=1),ae.normalize(),De.crossVectors(a,ae),De.lengthSq()===0&&(Math.abs(a.z)===1?ae.x+=1e-4:ae.z+=1e-4,ae.normalize(),De.crossVectors(a,ae)),De.normalize(),rr.crossVectors(ae,De),l[0]=De.x,l[4]=rr.x,l[8]=ae.x,l[1]=De.y,l[5]=rr.y,l[9]=ae.y,l[2]=De.z,l[6]=rr.z,l[10]=ae.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const a=e.elements,l=i.elements,_=this.elements,g=a[0],p=a[4],x=a[8],f=a[12],M=a[1],y=a[5],I=a[9],C=a[13],U=a[2],q=a[6],Z=a[10],j=a[14],wt=a[3],Pt=a[7],mt=a[11],Y=a[15],ct=l[0],lt=l[4],Vt=l[8],Xt=l[12],Dt=l[1],jt=l[5],Jt=l[9],oe=l[13],he=l[2],le=l[6],Ot=l[10],Zt=l[14],X=l[3],bt=l[7],Yt=l[11],Se=l[15];return _[0]=g*ct+p*Dt+x*he+f*X,_[4]=g*lt+p*jt+x*le+f*bt,_[8]=g*Vt+p*Jt+x*Ot+f*Yt,_[12]=g*Xt+p*oe+x*Zt+f*Se,_[1]=M*ct+y*Dt+I*he+C*X,_[5]=M*lt+y*jt+I*le+C*bt,_[9]=M*Vt+y*Jt+I*Ot+C*Yt,_[13]=M*Xt+y*oe+I*Zt+C*Se,_[2]=U*ct+q*Dt+Z*he+j*X,_[6]=U*lt+q*jt+Z*le+j*bt,_[10]=U*Vt+q*Jt+Z*Ot+j*Yt,_[14]=U*Xt+q*oe+Z*Zt+j*Se,_[3]=wt*ct+Pt*Dt+mt*he+Y*X,_[7]=wt*lt+Pt*jt+mt*le+Y*bt,_[11]=wt*Vt+Pt*Jt+mt*Ot+Y*Yt,_[15]=wt*Xt+Pt*oe+mt*Zt+Y*Se,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[4]*=e,i[8]*=e,i[12]*=e,i[1]*=e,i[5]*=e,i[9]*=e,i[13]*=e,i[2]*=e,i[6]*=e,i[10]*=e,i[14]*=e,i[3]*=e,i[7]*=e,i[11]*=e,i[15]*=e,this}determinant(){const e=this.elements,i=e[0],a=e[4],l=e[8],_=e[12],g=e[1],p=e[5],x=e[9],f=e[13],M=e[2],y=e[6],I=e[10],C=e[14],U=e[3],q=e[7],Z=e[11],j=e[15];return U*(+_*x*y-l*f*y-_*p*I+a*f*I+l*p*C-a*x*C)+q*(+i*x*C-i*f*I+_*g*I-l*g*C+l*f*M-_*x*M)+Z*(+i*f*y-i*p*C-_*g*y+a*g*C+_*p*M-a*f*M)+j*(-l*p*M-i*x*y+i*p*I+l*g*y-a*g*I+a*x*M)}transpose(){const e=this.elements;let i;return i=e[1],e[1]=e[4],e[4]=i,i=e[2],e[2]=e[8],e[8]=i,i=e[6],e[6]=e[9],e[9]=i,i=e[3],e[3]=e[12],e[12]=i,i=e[7],e[7]=e[13],e[13]=i,i=e[11],e[11]=e[14],e[14]=i,this}setPosition(e,i,a){const l=this.elements;return e instanceof Q?(l[12]=e.x,l[13]=e.y,l[14]=e.z):(l[12]=e,l[13]=i,l[14]=a),this}invert(){const e=this.elements,i=e[0],a=e[1],l=e[2],_=e[3],g=e[4],p=e[5],x=e[6],f=e[7],M=e[8],y=e[9],I=e[10],C=e[11],U=e[12],q=e[13],Z=e[14],j=e[15],wt=y*Z*f-q*I*f+q*x*C-p*Z*C-y*x*j+p*I*j,Pt=U*I*f-M*Z*f-U*x*C+g*Z*C+M*x*j-g*I*j,mt=M*q*f-U*y*f+U*p*C-g*q*C-M*p*j+g*y*j,Y=U*y*x-M*q*x-U*p*I+g*q*I+M*p*Z-g*y*Z,ct=i*wt+a*Pt+l*mt+_*Y;if(ct===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const lt=1/ct;return e[0]=wt*lt,e[1]=(q*I*_-y*Z*_-q*l*C+a*Z*C+y*l*j-a*I*j)*lt,e[2]=(p*Z*_-q*x*_+q*l*f-a*Z*f-p*l*j+a*x*j)*lt,e[3]=(y*x*_-p*I*_-y*l*f+a*I*f+p*l*C-a*x*C)*lt,e[4]=Pt*lt,e[5]=(M*Z*_-U*I*_+U*l*C-i*Z*C-M*l*j+i*I*j)*lt,e[6]=(U*x*_-g*Z*_-U*l*f+i*Z*f+g*l*j-i*x*j)*lt,e[7]=(g*I*_-M*x*_+M*l*f-i*I*f-g*l*C+i*x*C)*lt,e[8]=mt*lt,e[9]=(U*y*_-M*q*_-U*a*C+i*q*C+M*a*j-i*y*j)*lt,e[10]=(g*q*_-U*p*_+U*a*f-i*q*f-g*a*j+i*p*j)*lt,e[11]=(M*p*_-g*y*_-M*a*f+i*y*f+g*a*C-i*p*C)*lt,e[12]=Y*lt,e[13]=(M*q*l-U*y*l+U*a*I-i*q*I-M*a*Z+i*y*Z)*lt,e[14]=(U*p*l-g*q*l-U*a*x+i*q*x+g*a*Z-i*p*Z)*lt,e[15]=(g*y*l-M*p*l+M*a*x-i*y*x-g*a*I+i*p*I)*lt,this}scale(e){const i=this.elements,a=e.x,l=e.y,_=e.z;return i[0]*=a,i[4]*=l,i[8]*=_,i[1]*=a,i[5]*=l,i[9]*=_,i[2]*=a,i[6]*=l,i[10]*=_,i[3]*=a,i[7]*=l,i[11]*=_,this}getMaxScaleOnAxis(){const e=this.elements,i=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],a=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],l=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(i,a,l))}makeTranslation(e,i,a){return e instanceof Q?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,i,0,0,1,a,0,0,0,1),this}makeRotationX(e){const i=Math.cos(e),a=Math.sin(e);return this.set(1,0,0,0,0,i,-a,0,0,a,i,0,0,0,0,1),this}makeRotationY(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,0,a,0,0,1,0,0,-a,0,i,0,0,0,0,1),this}makeRotationZ(e){const i=Math.cos(e),a=Math.sin(e);return this.set(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,i){const a=Math.cos(i),l=Math.sin(i),_=1-a,g=e.x,p=e.y,x=e.z,f=_*g,M=_*p;return this.set(f*g+a,f*p-l*x,f*x+l*p,0,f*p+l*x,M*p+a,M*x-l*g,0,f*x-l*p,M*x+l*g,_*x*x+a,0,0,0,0,1),this}makeScale(e,i,a){return this.set(e,0,0,0,0,i,0,0,0,0,a,0,0,0,0,1),this}makeShear(e,i,a,l,_,g){return this.set(1,a,_,0,e,1,g,0,i,l,1,0,0,0,0,1),this}compose(e,i,a){const l=this.elements,_=i.x,g=i.y,p=i.z,x=i.w,f=_+_,M=g+g,y=p+p,I=_*f,C=_*M,U=_*y,q=g*M,Z=g*y,j=p*y,wt=x*f,Pt=x*M,mt=x*y,Y=a.x,ct=a.y,lt=a.z;return l[0]=(1-(q+j))*Y,l[1]=(C+mt)*Y,l[2]=(U-Pt)*Y,l[3]=0,l[4]=(C-mt)*ct,l[5]=(1-(I+j))*ct,l[6]=(Z+wt)*ct,l[7]=0,l[8]=(U+Pt)*lt,l[9]=(Z-wt)*lt,l[10]=(1-(I+q))*lt,l[11]=0,l[12]=e.x,l[13]=e.y,l[14]=e.z,l[15]=1,this}decompose(e,i,a){const l=this.elements;let _=on.set(l[0],l[1],l[2]).length();const g=on.set(l[4],l[5],l[6]).length(),p=on.set(l[8],l[9],l[10]).length();this.determinant()<0&&(_=-_),e.x=l[12],e.y=l[13],e.z=l[14],pe.copy(this);const f=1/_,M=1/g,y=1/p;return pe.elements[0]*=f,pe.elements[1]*=f,pe.elements[2]*=f,pe.elements[4]*=M,pe.elements[5]*=M,pe.elements[6]*=M,pe.elements[8]*=y,pe.elements[9]*=y,pe.elements[10]*=y,i.setFromRotationMatrix(pe),a.x=_,a.y=g,a.z=p,this}equals(e){const i=this.elements,a=e.elements;for(let l=0;l<16;l++)if(i[l]!==a[l])return!1;return!0}fromArray(e,i=0){for(let a=0;a<16;a++)this.elements[a]=e[a+i];return this}toArray(e=[],i=0){const a=this.elements;return e[i]=a[0],e[i+1]=a[1],e[i+2]=a[2],e[i+3]=a[3],e[i+4]=a[4],e[i+5]=a[5],e[i+6]=a[6],e[i+7]=a[7],e[i+8]=a[8],e[i+9]=a[9],e[i+10]=a[10],e[i+11]=a[11],e[i+12]=a[12],e[i+13]=a[13],e[i+14]=a[14],e[i+15]=a[15],e}};Bn.IDENTITY=Object.freeze(new Bn);let an=Bn;const on=new Q,pe=new an,Li=new Q(0,0,0),Ui=new Q(1,1,1),De=new Q,rr=new Q,ae=new Q;class ze{constructor(e=void 0,i=void 0){this.min=e==null?new Q(1/0,1/0,1/0):new Q(e.x,e.y,e.z),this.max=i==null?new Q(-1/0,-1/0,-1/0):new Q(i.x,i.y,i.z)}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromArray(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i+=3)this.expandByPoint(yr.fromArray(e,i));return this}setFromPoints(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const a=yr.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(a),this.max.copy(e).add(a),this}clone(){return new ze().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)}get center(){return this.isEmpty()?new Q(0,0,0):new Q(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Q(0,0,0):new Q(0,0,0).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}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,i){return i.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)}intersectsPlane(e){let i,a;return e.normal.x>0?(i=e.normal.x*this.min.x,a=e.normal.x*this.max.x):(i=e.normal.x*this.max.x,a=e.normal.x*this.min.x),e.normal.y>0?(i+=e.normal.y*this.min.y,a+=e.normal.y*this.max.y):(i+=e.normal.y*this.max.y,a+=e.normal.y*this.min.y),e.normal.z>0?(i+=e.normal.z*this.min.z,a+=e.normal.z*this.max.z):(i+=e.normal.z*this.max.z,a+=e.normal.z*this.min.z),i<=-e.constant&&a>=-e.constant}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,yr).distanceTo(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:(Te[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Te[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Te[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Te[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Te[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Te[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Te[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Te[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Te),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)}}const Te=[new Q,new Q,new Q,new Q,new Q,new Q,new Q,new Q],yr=new Q,li=new Tt;class de{constructor(e=void 0,i=void 0){this.min=e==null?new Tt(1/0,1/0):new Tt(e.x,e.y),this.max=i==null?new Tt(-1/0,-1/0):new Tt(i.x,i.y)}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromPoints(e){this.makeEmpty();for(let i=0,a=e.length;i<a;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const a=li.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(a),this.max.copy(e).add(a),this}clone(){return new de().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new Tt(0,0):new Tt(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Tt(0,0):new Tt(0,0).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}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}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}getParameter(e,i){return i.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}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)}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,li).distanceTo(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}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)}}const ui=new Q,Ri=new Q,Vi=new sn;class zn{constructor(e=new Q(1,0,0),i=0){this.normal=e,this.constant=i}set(e,i){return this.normal.copy(e),this.constant=i,this}setComponents(e,i,a,l){return this.normal.set(e,i,a),this.constant=l,this}setFromNormalAndCoplanarPoint(e,i){return this.normal.copy(e),this.constant=-i.dot(this.normal),this}setFromCoplanarPoints(e,i,a){const l=ui.subVectors(a,i).cross(Ri.subVectors(e,i)).normalize();return this.setFromNormalAndCoplanarPoint(l,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}projectPoint(e,i){return i.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectsBox(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,i){const a=i||Vi.getNormalMatrix(e),l=this.coplanarPoint(ui).applyMatrix4(e),_=this.normal.applyMatrix3(a).normalize();return this.constant=-l.dot(_),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 zn().copy(this)}}class Ut extends Tt{static pointArrayToNumberArray(e){const i=new Array(e.length*2);return e.forEach((a,l)=>{a.toArray(i,l*2)}),i}}class St extends Q{static pointArrayToNumberArray(e,i=!0){const a=i?3:2,l=new Array(e.length*a);return e.forEach((_,g)=>{_.toArray(l,g*a)}),l}}const ci=new an,vi=new Mn,Tn=class Tn{constructor(e=0,i=0,a=0,l=Tn.DEFAULT_ORDER){this._x=e,this._y=i,this._z=a,this._order=l}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,i,a,l=this._order){return this._x=e,this._y=i,this._z=a,this._order=l,this._onChangeCallback(),this}clone(){return new Tn(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,i=this._order,a=!0){const l=e.elements,_=l[0],g=l[4],p=l[8],x=l[1],f=l[5],M=l[9],y=l[2],I=l[6],C=l[10];switch(i){case"XYZ":this._y=Math.asin(Be(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(-M,C),this._z=Math.atan2(-g,_)):(this._x=Math.atan2(I,f),this._z=0);break;case"YXZ":this._x=Math.asin(-Be(M,-1,1)),Math.abs(M)<.9999999?(this._y=Math.atan2(p,C),this._z=Math.atan2(x,f)):(this._y=Math.atan2(-y,_),this._z=0);break;case"ZXY":this._x=Math.asin(Be(I,-1,1)),Math.abs(I)<.9999999?(this._y=Math.atan2(-y,C),this._z=Math.atan2(-g,f)):(this._y=0,this._z=Math.atan2(x,_));break;case"ZYX":this._y=Math.asin(-Be(y,-1,1)),Math.abs(y)<.9999999?(this._x=Math.atan2(I,C),this._z=Math.atan2(x,_)):(this._x=0,this._z=Math.atan2(-g,f));break;case"YZX":this._z=Math.asin(Be(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(-M,f),this._y=Math.atan2(-y,_)):(this._x=0,this._y=Math.atan2(p,C));break;case"XZY":this._z=Math.asin(-Be(g,-1,1)),Math.abs(g)<.9999999?(this._x=Math.atan2(I,f),this._y=Math.atan2(p,_)):(this._x=Math.atan2(-M,C),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+i)}return this._order=i,a===!0&&this._onChangeCallback(),this}setFromQuaternion(e,i,a=!0){return ci.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ci,i,a)}setFromVector3(e,i=this._order){return this.set(e.x,e.y,e.z,i)}reorder(e){return vi.setFromEuler(this),this.setFromQuaternion(vi,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=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+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}};Tn.DEFAULT_ORDER="XYZ";let wr=Tn;class _i{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class br extends _i{translate(e){return this.transform(new sn().makeTranslation(e.x,e.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Di extends br{constructor(){super(),this._loops=[]}add(e){this._loops.push(e),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const e=this.outter;return e?e.box:new de}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints(e){const i=[];for(let a=0;a<this.loops.length;++a){const _=this.loops[a].getPoints(e);i.push(_)}return i}buildHierarchy(){var p;const e=this.getPoints(100),i=this.calculateBoundaryBoxes(e),a=this.sortBoundaryBoxesByAreas(i),l=new Map,_=a.length;for(let x=0;x<_;x++)l.set(a[x],{index:a[x],children:[]});const g={index:-1,children:[]};for(let x=0;x<_;x++){const f=a[x],M=e[f],y=i[f];let I=x+1;for(;I<_;I++){const C=a[I],U=e[C];if(i[C].containsBox(y)&&ri.isPointInPolygon(M[Ct.randInt(0,M.length-1)],U)){(p=l.get(C))==null||p.children.push(l.get(f));break}}I===_&&g.children.push(l.get(f))}return g}get area(){if(this._loops.length===0)return 0;let e=0;for(let i=0;i<this._loops.length;i++){const l=this._loops[i].getPoints(128),_=this.polygonArea(l);i===0?e+=Math.abs(_):e-=Math.abs(_)}return e}polygonArea(e){const i=e.length;if(i<3)return 0;let a=0;for(let l=0,_=i-1;l<i;_=l++){const g=e[_],p=e[l];a+=g.x*p.y-p.x*g.y}return a*.5}calculateBoundaryBoxes(e){const i=[];return e.forEach(a=>{i.push(new de().setFromPoints(a))}),i}sortBoundaryBoxesByAreas(e){const i=[];e.forEach((l,_)=>{const g=l.size,p=g.width*g.height;i.push({area:p,index:_})}),i.sort((l,_)=>l.area-_.area);const a=[];return i.forEach(l=>{a.push(l.index)}),a}}class hn extends br{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(e){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(e){const i=this.getUtoTmapping(e);return this.getPoint(i)}getPoints(e=5){const i=[];for(let a=0;a<=e;a++)i.push(this.getPoint(a/e));return i}getSpacedPoints(e=5){const i=[];for(let a=0;a<=e;a++)i.push(this.getPointAt(a/e));return i}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){const i=[];let a,l=this.getPoint(0),_=0;i.push(0);for(let g=1;g<=e;g++)a=this.getPoint(g/e),_+=a.distanceTo(l),i.push(_),l=a;return i}getUtoTmapping(e,i){const a=this.getLengths();let l=0;const _=a.length;let g;i?g=i:g=e*a[_-1];let p=0,x=_-1,f;for(;p<=x;)if(l=Math.floor(p+(x-p)/2),f=a[l]-g,f<0)p=l+1;else if(f>0)x=l-1;else{x=l;break}if(l=x,a[l]===g)return l/(_-1);const M=a[l],I=a[l+1]-M,C=(g-M)/I;return(l+C)/(_-1)}getTangent(e){let a=e-1e-4,l=e+1e-4;a<0&&(a=0),l>1&&(l=1);const _=this.getPoint(a),g=this.getPoint(l),p=new Ut;return p.copy(g).sub(_).normalize(),p}getTangentAt(e){const i=this.getUtoTmapping(e);return this.getTangent(i)}}class Sn extends hn{constructor(e,i,a,l,_){super();const g=+(e!==void 0)+ +(i!==void 0)+ +(a!==void 0)+ +(l!==void 0)+ +(_!==void 0);if(g==3)typeof e=="object"&&typeof i=="object"&&typeof a=="object"?this.createByThreePoints(e,i,a):this.createByStartEndPointsAndBulge(e,i,a);else if(g==5){const p=e;this.center=new Ut(p.x,p.y),this.radius=i,this._clockwise=_,this._startAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(a)):Ct.normalizeAngle(a),this._endAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(l)):Ct.normalizeAngle(l)}else throw ee.AcCmErrors.ILLEGAL_PARAMETERS}createByThreePoints(e,i,a){const l=(lt,Vt)=>({x:(lt.x+Vt.x)/2,y:(lt.y+Vt.y)/2}),_=(lt,Vt)=>(Vt.y-lt.y)/(Vt.x-lt.x),g=lt=>-1/lt,p=l(e,i),x=l(i,a),f=_(e,i),M=_(i,a),y=g(f),I=g(M),C=(lt,Vt,Xt,Dt)=>{const jt=(Dt-Vt)/(lt-Xt),Jt=lt*jt+Vt;return{x:jt,y:Jt}},U=p.y-y*p.x,q=x.y-I*x.x,Z=C(y,U,I,q),j=Math.sqrt(Math.pow(e.x-Z.x,2)+Math.pow(e.y-Z.y,2)),wt=(lt,Vt)=>Math.atan2(lt.y-Vt.y,lt.x-Vt.x),Pt=wt(e,Z),mt=wt(i,Z),Y=wt(a,Z),ct=Y>Pt&&Y<mt||Pt>Y&&Pt<mt||mt>Y&&mt<Pt;this.center=Z,this.radius=j,this._clockwise=!ct,this._startAngle=Pt,this._endAngle=Y}createByStartEndPointsAndBulge(e,i,a){let l,_,g;a<0?(l=Math.atan(-a)*4,_=new Tt(e),g=new Tt(i)):(l=Math.atan(a)*4,_=new Tt(i),g=new Tt(e));const p=new Tt().subVectors(g,_),x=p.length(),f=new Tt().addVectors(_,p.multiplyScalar(.5)),M=Math.abs(x/2/Math.tan(l/2)),y=p.normalize();let I;if(l<Math.PI){const C=new Tt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));I=f.add(C.multiplyScalar(-M))}else{const C=new Tt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));I=f.add(C.multiplyScalar(M))}a<0?(this._startAngle=Math.atan2(_.y-I.y,_.x-I.x),this._endAngle=Math.atan2(g.y-I.y,g.x-I.x)):(this._startAngle=Math.atan2(g.y-I.y,g.x-I.x),this._endAngle=Math.atan2(_.y-I.y,_.x-I.x)),this._clockwise=a<0,this.center=I,this.radius=g.sub(I).length()}get center(){return this._center}set center(e){this._center=new Ut(e.x,e.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(e){this._startAngle=this._clockwise?this._mirrorAngle(Ct.normalizeAngle(e)):Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(e){const i=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e);this._endAngle=this._clockwise?this._mirrorAngle(i):i,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(e){return(360-e*180/Math.PI)%360*Math.PI/180}_getInternalAngle(e){return this._clockwise?this._mirrorAngle(e):e}get deltaAngle(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle);return this.clockwise?Ct.normalizeAngle(e-i):Ct.normalizeAngle(i-e)}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle),a=Ct.normalizeAngle((e+i)/2),l=this._clockwise?this._mirrorAngle(a):a;return this.getPointAtAngle(l)}get closed(){const e=this._getInternalAngle(this.startAngle),i=this._getInternalAngle(this.endAngle);return Math.abs(i-e)/Math.PI%2==0}calculateBoundingBox(){const e=[this.startPoint,this.endPoint],i=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const _ of i){const g=this._getInternalAngle(_);Ct.isBetweenAngle(g,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&e.push(this.getPointAtAngle(_))}const a=e.map(_=>_.x),l=e.map(_=>_.y);return new de(new Ut(Math.min(...a),Math.min(...l)),new Ut(Math.max(...a),Math.max(...l)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}clone(){return new Sn(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(e){const i=this._getInternalAngle(e),a=this.center.x+this.radius*Math.cos(i),l=this.center.y+this.radius*Math.sin(i);return new Ut(a,l)}getPoints(e=100){const i=[];let a=this.deltaAngle,l=this._getInternalAngle(this.startAngle);if(this.closed&&(a=Lt,l=0),this.clockwise)for(let _=0;_<=e;_++){const g=l-a*(_/e),p=this._clockwise?this._mirrorAngle(g):g,x=this.getPointAtAngle(p);i.push(new Ut(x.x,x.y))}else for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this._clockwise?this._mirrorAngle(g):g,x=this.getPointAtAngle(p);i.push(new Ut(x.x,x.y))}return i}}class Fi extends _i{translate(e){return this.transform(new an().makeTranslation(e.x,e.y,e.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Cn extends Fi{}class kn extends Cn{constructor(e,i){super(),this._start=new St(e),this._end=new St(i)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}get direction(){return new Q().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new St((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(e){return this.project(e)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(e){return this.project(e).distanceTo(e)<1e-6}at(e,i){return this.delta(i).multiplyScalar(e).add(this._start)}atLength(e,i=!1){if(i){const a=this.delta(Qe).normalize();return new St(this._start).addScaledVector(a,e)}else{const a=this.delta(Qe).normalize();return new St(this._end).addScaledVector(a,e)}}extend(e,i=!1){if(i){const a=Qe.subVectors(this._start,this._end).normalize();this._start=new St(this._start).addScaledVector(a,e)}else{const a=this.delta(Qe).normalize();this._end=new St(this._end).addScaledVector(a,e)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(e,i){di.subVectors(e,this._start),ir.subVectors(this.endPoint,this.startPoint);const a=ir.dot(ir);let _=ir.dot(di)/a;return i&&(_=Ct.clamp(_,0,1)),_}closestPointToPoint(e,i,a){const l=this.closestPointToPointParameter(e,i);return this.delta(a).multiplyScalar(l).add(this._start)}delta(e){return e.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(e){const i=this.direction,l=Qe.subVectors(e,this.startPoint).dot(i);return new St().copy(i).multiplyScalar(l).add(this.startPoint)}perpPoint(e){const i=this.direction,a=this.startPoint,_=Qe.subVectors(e,a).dot(i),g=Qe.copy(i).multiplyScalar(_);return new St().addVectors(a,g)}calculateBoundingBox(){const e=new St(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),i=new St(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new ze(e,i)}transform(e){return this._start.applyMatrix4(e),this._end.applyMatrix4(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new kn(this._start.clone(),this._end.clone())}}const Qe=new Q,di=new Q,ir=new Q;class In extends Cn{static computeCenterPoint(e,i,a){const l=new Q().addVectors(e,i).multiplyScalar(.5),_=new Q().addVectors(e,a).multiplyScalar(.5),g=new Q().subVectors(i,e),p=new Q().subVectors(a,e),x=new Q().crossVectors(g,p).normalize();if(x.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const f=new Q().crossVectors(g,x).normalize(),M=new Q().crossVectors(p,x).normalize(),y=f.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),I=M.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),C=new kn(l,l.clone().add(y)),U=new kn(_,_.clone().add(I)),q=new Q;return C.closestPointToPoint(U.startPoint,!0,q)?q:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(e,i,a){const l=In.computeCenterPoint(e,i,a);if(l){const _=l.distanceTo(e),g=new Q().subVectors(e,l),p=new Q().subVectors(i,l),x=Math.atan2(g.y,g.x),f=Math.atan2(p.y,p.x);return new In(l,_,x,f,Q.Z_AXIS)}}constructor(e,i,a,l,_,g=Q.X_AXIS){super(),this.center=e,this.radius=i,this.startAngle=a,this.endAngle=l,this.normal=_,this.refVec=g,(l-a)%Lt==0?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=a,this.endAngle=l)}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){if(e<0)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Ct.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(e){this._normal=new Q(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(e){this._refVec=new Q(e.x,e.y,e.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let e=this.startAngle,i=this.deltaAngle;this.closed&&(e=0,i=Lt);const a=e+i*.5;return this.getPointAtAngle(a)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:Math.abs(this.deltaAngle*this.radius*this.radius)}nearestPoint(e){const i=new Q(e.x,e.y,e.z||0),a=this.center,l=this.normal,g=i.clone().sub(a).dot(l),x=i.clone().sub(l.clone().multiplyScalar(g)).clone().sub(a);if(x.lengthSq()===0)return this.startPoint.clone();x.normalize().multiplyScalar(this.radius);const f=a.clone().add(x),M=this.getAngle(f.clone()),y=this.startAngle,I=this.deltaAngle;let C=Ct.normalizeAngle(M-y);C<0&&(C=0),C>I&&(C=I);const U=this.getPointAtAngle(y+C),q=U.distanceTo(i),Z=this.startPoint.distanceTo(i),j=this.endPoint.distanceTo(i);return Z<q&&Z<=j?this.startPoint.clone():j<q&&j<Z?this.endPoint.clone():U}tangentPoints(e){const i=[],a=new Q(e.x,e.y,e.z||0),l=this.center,_=this.normal,g=this.radius,x=a.clone().sub(l).dot(_),f=a.clone().sub(_.clone().multiplyScalar(x)),M=l.clone(),I=f.clone().sub(M).length();if(I<g)return i;const C=Math.acos(g/I),U=this.getAngle(f.clone()),q=[U+C,U-C];for(const Z of q){const j=Ct.normalizeAngle(Z-this.startAngle);j>=0&&j<=this.deltaAngle&&i.push(this.getPointAtAngle(this.startAngle+j))}return i}nearestTangentPoint(e){const i=this.tangentPoints(e);if(i.length===0)return null;const a=new St(e.x,e.y,e.z||0);return i.length===1||i[0].distanceTo(a)<i[1].distanceTo(a)?i[0]:i[1]}calculateBoundingBox(){const e=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Ct.isBetweenAngle(x,this.startAngle,this.endAngle)&&e.push(x);let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(const x of e){const f=this.getPointAtAngle(x);f.x<i&&(i=f.x),f.y<a&&(a=f.y),f.z<l&&(l=f.z),f.x>_&&(_=f.x),f.y>g&&(g=f.y),f.z>p&&(p=f.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(e){const i=[];let a=this.deltaAngle,l=this.startAngle;this.closed&&(a=Lt,l=0);for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this.getPointAtAngle(g);i.push(p)}return i}transform(e){const i=xr.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),a=xr.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix4(e),i.applyMatrix4(e),a.applyMatrix4(e),this.normal.applyMatrix4(e).normalize(),this.refVec.applyMatrix4(e).normalize(),this.startAngle=this.getAngle(i),this.endAngle=this.getAngle(a),this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.radius=e.radius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.normal=e.normal,this.refVec=e.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new In(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(e){return e.sub(this.center),Math.atan2(e.dot(xr.crossVectors(this.refVec,this.normal)),e.dot(this.refVec))}getPointAtAngle(e){const i=this.normal,a=this.refVec,l={x:i.y*a.z-i.z*a.y,y:i.z*a.x-i.x*a.z,z:i.x*a.y-i.y*a.x},_=this.center,g=this.radius;return new St(_.x+g*(a.x*Math.cos(e)+l.x*Math.sin(e)),_.y+g*(a.y*Math.cos(e)+l.y*Math.sin(e)),_.z+g*(a.z*Math.cos(e)+l.z*Math.sin(e)))}get plane(){const e=new Q(this.center).distanceTo(dr);return new zn(this.normal,e)}}const xr=new Q;class Ar extends hn{constructor(e,i,a,l=0,_=Lt,g=!1,p=0){super(),this.center=e,this.majorAxisRadius=i,this.minorAxisRadius=a,(_-l)%Lt==0?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=l,this.endAngle=_),this.clockwise=g,this.rotation=p}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Ct.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let i=1/0,a=1/0,l=-1/0,_=-1/0;for(let g=0;g<=100;g++){const p=this.getPoint(g/100);i=Math.min(i,p.x),a=Math.min(a,p.y),l=Math.max(l,p.x),_=Math.max(_,p.y)}return new de({x:i,y:a},{x:l,y:_})}get closed(){return this.deltaAngle==0}getPoint(e){const i=Math.PI*2;let a=this.endAngle-this.startAngle;const l=Math.abs(a)<Number.EPSILON;for(;a<0;)a+=i;for(;a>i;)a-=i;a<Number.EPSILON&&(l?a=0:a=i),this.clockwise===!0&&!l&&(a===i?a=-i:a=a-i);const _=this.startAngle+e*a;let g=this.center.x+this.majorAxisRadius*Math.cos(_),p=this.center.y+this.minorAxisRadius*Math.sin(_);if(this.rotation!==0){const x=Math.cos(this.rotation),f=Math.sin(this.rotation),M=g-this.center.x,y=p-this.center.y;g=M*x-y*f+this.center.x,p=M*f+y*x+this.center.y}return new Ut(g,p)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.clockwise=e.clockwise,this.rotation=e.rotation,this}clone(){return new Ar(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}class Pr extends Cn{constructor(e,i,a,l,_,g=0,p=Lt){super(),this.center=e,this.normal=i,this.majorAxis=a,this.majorAxisRadius=l,this.minorAxisRadius=_;const x=Math.abs(p-g);Math.abs(x-Lt)<1e-10||Math.abs(x-2*Lt)<1e-10?(this.startAngle=0,this.endAngle=Lt):(this.startAngle=g,this.endAngle=p)}get center(){return this._center}set center(e){this._center=new St(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Lt?e:Ct.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const e=this.endAngle-this.startAngle;return Math.abs(e-Lt)<1e-10?Lt:Ct.normalizeAngle(e)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(e){this._normal=new Q(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(e){this._majorAxis=new Q(e.x,e.y,e.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Q().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let e=this.startAngle,i=this.deltaAngle;(this.closed||Math.abs(i-Lt)<1e-10)&&(e=0,i=Lt);const a=e+i/2;return this.getPointAtAngle(a)}get isCircular(){return fr.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const e=1e3,i=this.deltaAngle/e;let a=0,l=this.getPointAtAngle(this.startAngle);for(let _=1;_<=e;_++){const g=this.startAngle+_*i,p=this.getPointAtAngle(g),x=p.x-l.x,f=p.y-l.y,M=p.z-l.z;a+=Math.sqrt(x*x+f*f+M*M),l=p}return a}get area(){const e=this.majorAxisRadius,i=this.minorAxisRadius,a=this.startAngle,l=a+this.deltaAngle;if(Math.abs(this.deltaAngle-Lt)<1e-10)return Math.PI*e*i;const _=e*i/2*(l-a-(Math.sin(l)*Math.cos(l)-Math.sin(a)*Math.cos(a)));return Math.abs(_)}calculateBoundingBox(){if(this.majorAxis.equals(Q.X_AXIS)||this.majorAxis.equals(Q.Y_AXIS)||this.majorAxis.isParallelTo(Q.X_AXIS)||this.majorAxis.isParallelTo(Q.Y_AXIS)){const e=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Ct.isBetweenAngle(x,this.startAngle,this.endAngle)&&e.push(x);let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(const x of e){const f=this.getPointAtAngle(x);f.x<i&&(i=f.x),f.y<a&&(a=f.y),f.z<l&&(l=f.z),f.x>_&&(_=f.x),f.y>g&&(g=f.y),f.z>p&&(p=f.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}else{let i=1/0,a=1/0,l=1/0,_=-1/0,g=-1/0,p=-1/0;for(let x=0;x<=100;x++){const f=this.startAngle+this.deltaAngle*(x/100),M=this.getPointAtAngle(f);i=Math.min(i,M.x),a=Math.min(a,M.y),l=Math.min(l,M.z),_=Math.max(_,M.x),g=Math.max(g,M.y),p=Math.max(p,M.z)}return new ze({x:i,y:a,z:l},{x:_,y:g,z:p})}}get closed(){return this.deltaAngle==0}getPoints(e=100){const i=[];let a=this.deltaAngle,l=this.startAngle;this.closed&&(a=Lt,l=0);for(let _=0;_<=e;_++){const g=l+a*(_/e),p=this.getPointAtAngle(g);i.push(p)}return i}getPointAtAngle(e){const i=Math.cos(e),a=Math.sin(e),l=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(a),_=this.majorAxis.clone().multiplyScalar(i*this.majorAxisRadius).add(l);return new St(this.center.x+_.x,this.center.y+_.y,this.center.z+_.z)}contains(e){const i=new Q(e).sub(this.center),a=i.dot(this.majorAxis),l=i.dot(this.minorAxis),_=a/this.majorAxisRadius,g=l/this.minorAxisRadius;return _*_+g*g<=1}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.normal=e.normal,this.majorAxis=e.majorAxis,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Pr(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const e=new Q(this.center).distanceTo(dr);return new zn(this.normal,e)}}class Oi extends hn{constructor(e=null,i=!1){super(),this._vertices=e||new Array,this._closed=i}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const e=this._vertices[0];return new Ut(e.x,e.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const e=this.numberOfVertices;if(e>0)if(this.closed){const i=this._vertices[0];return new Ut(i.x,i.y)}else{const i=this._vertices[e-1];return new Ut(i.x,i.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let e=0;const i=this._vertices.length;for(let a=0;a<i;++a){const l=this._vertices[a];let _=null;if(a<i-1?_=this._vertices[a+1]:a==i-1&&this.closed&&(_=this._vertices[0]),_)if(l.bulge){const g=new Sn(l,_,l.bulge);e+=g.length}else e+=new Ut(l.x,l.y).distanceTo(_)}return e}set closed(e){this._closed=e,this._boundingBoxNeedsUpdate=!0}addVertexAt(e,i){e<=0?this._vertices.unshift(i):this._vertices.splice(e,0,i),this._boundingBoxNeedsUpdate=!0}getPointAt(e){const i=this._vertices[e];return new Ut(i.x,i.y)}calculateBoundingBox(){const e=this.getPoints(100);return new de().setFromPoints(e)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(e,i){const a=[];return this.getPoints(e).forEach(_=>a.push(new St().set(_.x,_.y,i))),a}getPoints(e){const i=[],a=this._vertices.length;for(let l=0;l<a;++l){const _=this._vertices[l];if(_.bulge){let g=null;if(l<a-1?g=this._vertices[l+1]:l==a-1&&this.closed&&(g=this._vertices[0]),g){const x=new Sn(_,g,_.bulge).getPoints(e),f=x.length;for(let M=0;M<f;++M){const y=x[M];i.push(new Ut(y.x,y.y))}}}else i.push(new Ut(_.x,_.y)),l==a-1&&this.closed&&i.push(i[0])}return i}}class Mr extends hn{constructor(e,i){super(),this._start=new Ut(e),this._end=new Ut(i)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const e=new Ut(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),i=new Ut(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new de(e,i)}transform(e){return this._start.applyMatrix2d(e),this._end.applyMatrix2d(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Mr(this._start.clone(),this._end.clone())}}class qi extends hn{constructor(e=[]){super(),this._curves=e}get curves(){return this._curves}add(e){this._curves.push(e),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const e=this._curves[0].startPoint;return new Ut(e.x,e.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let e=0;return this._curves.forEach(i=>{e+=i.length}),e}calculateBoundingBox(){const e=this.getPoints(100),i=new de;return i.setFromPoints(e),i}transform(e){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(e){const i=[];return this.curves.forEach(a=>{a.getPoints(e).forEach(l=>{i.push(new Ut(l.x,l.y))})}),i}}function Gi(N){return N&&N.__esModule&&Object.prototype.hasOwnProperty.call(N,"default")?N.default:N}var fi={exports:{}};(function(N,e){(function(i){N.exports=i()})(function(){var i={},a=this;new Function("try {return this===window;}catch(e){ return false;}");var l=new Function("try {return this===global;}catch(e){return false;}"),_=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(l()&&_(),l()||_()){var g=a;if(_()){var p=function(x,f){var M=a;return x.split(".").forEach(function(y){M&&(M=M[y])}),M?M[f]:null};onmessage=function(x){if(!(!x.data.className||!x.data.methodName)){var f=p(x.data.className,x.data.methodName);if(!f)return console.error("could not find "+x.data.className+"."+x.data.methodName);postMessage({result:f.apply(null,x.data.args),id:x.data.id})}}}}return function(x,f,M){f.geom=f.geom||{},f.exe=f.exe||{},f.eval=f.eval||{},f.core=f.core||{},f.promhx=f.promhx||{};var y={},I=function(){return bt.__string_rec(this,"")};function C(t,n){function r(){}r.prototype=t;var s=new r;for(var o in n)s[o]=n[o];return n.toString!==Object.prototype.toString&&(s.toString=n.toString),s}var U=function(){};y.HxOverrides=U,U.__name__=["HxOverrides"],U.strDate=function(t){var n=t.length;switch(n){case 8:var r=t.split(":"),s=new Date;return s.setTime(0),s.setUTCHours(r[0]),s.setUTCMinutes(r[1]),s.setUTCSeconds(r[2]),s;case 10:var o=t.split("-");return new Date(o[0],o[1]-1,o[2],0,0,0);case 19:var h=t.split(" "),c=h[0].split("-"),v=h[1].split(":");return new Date(c[0],c[1]-1,c[2],v[0],v[1],v[2]);default:throw new X("Invalid date format : "+t)}},U.cca=function(t,n){var r=t.charCodeAt(n);if(r==r)return r},U.substr=function(t,n,r){return n!=null&&n!=0&&r!=null&&r<0?"":(r==null&&(r=t.length),n<0?(n=t.length+n,n<0&&(n=0)):r<0&&(r=t.length+r-n),t.substr(n,r))},U.iter=function(t){return{cur:0,arr:t,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var q=function(){};y.Lambda=q,q.__name__=["Lambda"],q.fold=function(t,n,r){for(var s=be(t)();s.hasNext();){var o=s.next();r=n(o,r)}return r};var Z=function(){this.length=0};y.List=Z,Z.__name__=["List"],Z.prototype={add:function(t){var n=[t];this.h==null?this.h=n:this.q[1]=n,this.q=n,this.length++},pop:function(){if(this.h==null)return null;var t=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,t},isEmpty:function(){return this.h==null},__class__:Z},Math.__name__=["Math"];var j=function(){};y.Reflect=j,j.__name__=["Reflect"],j.field=function(t,n){try{return t[n]}catch(r){return r instanceof X&&(r=r.val),null}},j.callMethod=function(t,n,r){return n.apply(t,r)},j.fields=function(t){var n=[];if(t!=null){var r=Object.prototype.hasOwnProperty;for(var s in t)s!="__id__"&&s!="hx__closures__"&&r.call(t,s)&&n.push(s)}return n},j.isFunction=function(t){return typeof t=="function"&&!(t.__name__||t.__ename__)},j.deleteField=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)?(delete t[n],!0):!1};var wt=function(){};y.Std=wt,wt.__name__=["Std"],wt.string=function(t){return bt.__string_rec(t,"")},wt.parseFloat=function(t){return parseFloat(t)};var Pt=function(){this.b=""};y.StringBuf=Pt,Pt.__name__=["StringBuf"],Pt.prototype={add:function(t){this.b+=wt.string(t)},__class__:Pt};var mt=function(){};y.StringTools=mt,mt.__name__=["StringTools"],mt.fastCodeAt=function(t,n){return t.charCodeAt(n)};var Y=y.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};Y.TNull=["TNull",0],Y.TNull.toString=I,Y.TNull.__enum__=Y,Y.TInt=["TInt",1],Y.TInt.toString=I,Y.TInt.__enum__=Y,Y.TFloat=["TFloat",2],Y.TFloat.toString=I,Y.TFloat.__enum__=Y,Y.TBool=["TBool",3],Y.TBool.toString=I,Y.TBool.__enum__=Y,Y.TObject=["TObject",4],Y.TObject.toString=I,Y.TObject.__enum__=Y,Y.TFunction=["TFunction",5],Y.TFunction.toString=I,Y.TFunction.__enum__=Y,Y.TClass=function(t){var n=["TClass",6,t];return n.__enum__=Y,n.toString=I,n},Y.TEnum=function(t){var n=["TEnum",7,t];return n.__enum__=Y,n.toString=I,n},Y.TUnknown=["TUnknown",8],Y.TUnknown.toString=I,Y.TUnknown.__enum__=Y;var ct=function(){};y.Type=ct,ct.__name__=["Type"],ct.getClassName=function(t){var n=t.__name__;return n==null?null:n.join(".")},ct.getEnumName=function(t){var n=t.__ename__;return n.join(".")},ct.resolveClass=function(t){var n=y[t];return n==null||!n.__name__?null:n},ct.resolveEnum=function(t){var n=y[t];return n==null||!n.__ename__?null:n},ct.createEmptyInstance=function(t){function n(){}return n.prototype=t.prototype,new n},ct.createEnum=function(t,n,r){var s=j.field(t,n);if(s==null)throw new X("No such constructor "+n);if(j.isFunction(s)){if(r==null)throw new X("Constructor "+n+" need parameters");return j.callMethod(t,s,r)}if(r!=null&&r.length!=0)throw new X("Constructor "+n+" does not need parameters");return s},ct.getEnumConstructs=function(t){var n=t.__constructs__;return n.slice()},ct.typeof=function(t){var n=typeof t;switch(n){case"boolean":return Y.TBool;case"string":return Y.TClass(String);case"number":return Math.ceil(t)==t%2147483648?Y.TInt:Y.TFloat;case"object":if(t==null)return Y.TNull;var r=t.__enum__;if(r!=null)return Y.TEnum(r);var s=bt.getClass(t);return s!=null?Y.TClass(s):Y.TObject;case"function":return t.__name__||t.__ename__?Y.TObject:Y.TFunction;case"undefined":return Y.TNull;default:return Y.TUnknown}};var lt=function(){};y["haxe.IMap"]=lt,lt.__name__=["haxe","IMap"];var Vt=function(t,n){this.high=t,this.low=n};y["haxe._Int64.___Int64"]=Vt,Vt.__name__=["haxe","_Int64","___Int64"],Vt.prototype={__class__:Vt};var Xt=function(){this.buf=new Pt,this.cache=[],this.useCache=Xt.USE_CACHE,this.useEnumIndex=Xt.USE_ENUM_INDEX,this.shash=new he,this.scount=0};y["haxe.Serializer"]=Xt,Xt.__name__=["haxe","Serializer"],Xt.prototype={toString:function(){return this.buf.b},serializeString:function(t){var n=this.shash.get(t);if(n!=null){this.buf.b+="R",n==null?this.buf.b+="null":this.buf.b+=""+n;return}this.shash.set(t,this.scount++),this.buf.b+="y",t=encodeURIComponent(t),t.length==null?this.buf.b+="null":this.buf.b+=""+t.length,this.buf.b+=":",t==null?this.buf.b+="null":this.buf.b+=""+t},serializeRef:function(t){for(var n=typeof t,r=0,s=this.cache.length;r<s;){var o=r++,h=this.cache[o];if(typeof h==n&&h==t)return this.buf.b+="r",o==null?this.buf.b+="null":this.buf.b+=""+o,!0}return this.cache.push(t),!1},serializeFields:function(t){for(var n=0,r=j.fields(t);n<r.length;){var s=r[n];++n,this.serializeString(s),this.serialize(j.field(t,s))}this.buf.b+="g"},serialize:function(t){{var n=ct.typeof(t);switch(n[1]){case 0:this.buf.b+="n";break;case 1:var r=t;if(r==0){this.buf.b+="z";return}this.buf.b+="i",r==null?this.buf.b+="null":this.buf.b+=""+r;break;case 2:var s=t;isNaN(s)?this.buf.b+="k":isFinite(s)?(this.buf.b+="d",s==null?this.buf.b+="null":this.buf.b+=""+s):s<0?this.buf.b+="m":this.buf.b+="p";break;case 3:t?this.buf.b+="t":this.buf.b+="f";break;case 6:var o=n[2];if(o==String){this.serializeString(t);return}if(this.useCache&&this.serializeRef(t))return;switch(o){case Array:var h=0;this.buf.b+="a";for(var c=t.length,v=0;v<c;){var d=v++;t[d]==null?h++:(h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h),h=0),this.serialize(t[d]))}h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h)),this.buf.b+="h";break;case Z:this.buf.b+="l";for(var m=t,b=m.h,w=null;b!=null;){var A;w=b[0],b=b[1],A=w,this.serialize(A)}this.buf.b+="h";break;case Date:var P=t;this.buf.b+="v",this.buf.add(P.getTime());break;case he:this.buf.b+="b";for(var z=t,E=z.keys();E.hasNext();){var k=E.next();this.serializeString(k),this.serialize(Ir[k]!=null?z.getReserved(k):z.h[k])}this.buf.b+="h";break;case jt:this.buf.b+="q";for(var T=t,B=T.keys();B.hasNext();){var L=B.next();this.buf.b+=":",L==null?this.buf.b+="null":this.buf.b+=""+L,this.serialize(T.h[L])}this.buf.b+="h";break;case Jt:this.buf.b+="M";for(var R=t,F=R.keys();F.hasNext();){var W=F.next(),D=j.field(W,"__id__");j.deleteField(W,"__id__"),this.serialize(W),W.__id__=D,this.serialize(R.h[W.__id__])}this.buf.b+="h";break;case le:for(var V=t,G=0,J=V.length-2,$=new Pt,nt=Xt.BASE64;G<J;){var st=V.get(G++),rt=V.get(G++),at=V.get(G++);$.add(nt.charAt(st>>2)),$.add(nt.charAt((st<<4|rt>>4)&63)),$.add(nt.charAt((rt<<2|at>>6)&63)),$.add(nt.charAt(at&63))}if(G==J){var et=V.get(G++),ot=V.get(G++);$.add(nt.charAt(et>>2)),$.add(nt.charAt((et<<4|ot>>4)&63)),$.add(nt.charAt(ot<<2&63))}else if(G==J+1){var O=V.get(G++);$.add(nt.charAt(O>>2)),$.add(nt.charAt(O<<4&63))}var ut=$.b;this.buf.b+="s",ut.length==null?this.buf.b+="null":this.buf.b+=""+ut.length,this.buf.b+=":",ut==null?this.buf.b+="null":this.buf.b+=""+ut;break;default:this.useCache&&this.cache.pop(),t.hxSerialize!=null?(this.buf.b+="C",this.serializeString(ct.getClassName(o)),this.useCache&&this.cache.push(t),t.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(ct.getClassName(o)),this.useCache&&this.cache.push(t),this.serializeFields(t))}break;case 4:if(bt.__instanceof(t,yi)){var gt=ct.getClassName(t);this.buf.b+="A",this.serializeString(gt)}else if(bt.__instanceof(t,wi))this.buf.b+="B",this.serializeString(ct.getEnumName(t));else{if(this.useCache&&this.serializeRef(t))return;this.buf.b+="o",this.serializeFields(t)}break;case 7:var Et=n[2];if(this.useCache){if(this.serializeRef(t))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(ct.getEnumName(Et)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=wt.string(t[1])):this.serializeString(t[0]),this.buf.b+=":";var Bt=t.length;this.buf.b+=wt.string(Bt-2);for(var kt=2;kt<Bt;){var Rt=kt++;this.serialize(t[Rt])}this.useCache&&this.cache.push(t);break;case 5:throw new X("Cannot serialize function");default:throw new X("Cannot serialize "+wt.string(t))}}},__class__:Xt};var Dt=function(t){this.buf=t,this.length=t.length,this.pos=0,this.scache=[],this.cache=[];var n=Dt.DEFAULT_RESOLVER;n==null&&(n=ct,Dt.DEFAULT_RESOLVER=n),this.setResolver(n)};y["haxe.Unserializer"]=Dt,Dt.__name__=["haxe","Unserializer"],Dt.initCodes=function(){for(var t=[],n=0,r=Dt.BASE64.length;n<r;){var s=n++;t[Dt.BASE64.charCodeAt(s)]=s}return t},Dt.prototype={setResolver:function(t){t==null?this.resolver={resolveClass:function(n){return null},resolveEnum:function(n){return null}}:this.resolver=t},get:function(t){return this.buf.charCodeAt(t)},readDigits:function(){for(var t=0,n=!1,r=this.pos;;){var s=this.buf.charCodeAt(this.pos);if(s!=s)break;if(s==45){if(this.pos!=r)break;n=!0,this.pos++;continue}if(s<48||s>57)break;t=t*10+(s-48),this.pos++}return n&&(t*=-1),t},readFloat:function(){for(var t=this.pos;;){var n=this.buf.charCodeAt(this.pos);if(n>=43&&n<58||n==101||n==69)this.pos++;else break}return wt.parseFloat(U.substr(this.buf,t,this.pos-t))},unserializeObject:function(t){for(;;){if(this.pos>=this.length)throw new X("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var n=this.unserialize();if(typeof n!="string")throw new X("Invalid object key");var r=this.unserialize();t[n]=r}this.pos++},unserializeEnum:function(t,n){if(this.get(this.pos++)!=58)throw new X("Invalid enum format");var r=this.readDigits();if(r==0)return ct.createEnum(t,n);for(var s=[];r-- >0;)s.push(this.unserialize());return ct.createEnum(t,n,s)},unserialize:function(){var t=this.get(this.pos++);switch(t){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var n=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<n)throw new X("Invalid string length");var r=U.substr(this.buf,this.pos,n);return this.pos+=n,r=decodeURIComponent(r.split("+").join(" ")),this.scache.push(r),r;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var s=[];for(this.cache.push(s);;){var o=this.buf.charCodeAt(this.pos);if(o==104){this.pos++;break}if(o==117){this.pos++;var h=this.readDigits();s[s.length+h-1]=null}else s.push(this.unserialize())}return s;case 111:var c={};return this.cache.push(c),this.unserializeObject(c),c;case 114:var v=this.readDigits();if(v<0||v>=this.cache.length)throw new X("Invalid reference");return this.cache[v];case 82:var d=this.readDigits();if(d<0||d>=this.scache.length)throw new X("Invalid string reference");return this.scache[d];case 120:throw new X(this.unserialize());case 99:var m=this.unserialize(),b=this.resolver.resolveClass(m);if(b==null)throw new X("Class not found "+m);var w=ct.createEmptyInstance(b);return this.cache.push(w),this.unserializeObject(w),w;case 119:var A=this.unserialize(),P=this.resolver.resolveEnum(A);if(P==null)throw new X("Enum not found "+A);var z=this.unserializeEnum(P,this.unserialize());return this.cache.push(z),z;case 106:var E=this.unserialize(),k=this.resolver.resolveEnum(E);if(k==null)throw new X("Enum not found "+E);this.pos++;var T=this.readDigits(),B=ct.getEnumConstructs(k)[T];if(B==null)throw new X("Unknown enum index "+E+"@"+T);var L=this.unserializeEnum(k,B);return this.cache.push(L),L;case 108:var R=new Z;for(this.cache.push(R),this.buf;this.buf.charCodeAt(this.pos)!=104;)R.add(this.unserialize());return this.pos++,R;case 98:var F=new he;for(this.cache.push(F),this.buf;this.buf.charCodeAt(this.pos)!=104;){var W=this.unserialize();F.set(W,this.unserialize())}return this.pos++,F;case 113:var D=new jt;this.cache.push(D),this.buf;for(var V=this.get(this.pos++);V==58;){var G=this.readDigits();D.set(G,this.unserialize()),V=this.get(this.pos++)}if(V!=104)throw new X("Invalid IntMap format");return D;case 77:var J=new Jt;for(this.cache.push(J),this.buf;this.buf.charCodeAt(this.pos)!=104;){var $=this.unserialize();J.set($,this.unserialize())}return this.pos++,J;case 118:var nt;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var st=U.substr(this.buf,this.pos,19);nt=U.strDate(st),this.pos+=19}else{var rt=this.readFloat(),at=new Date;at.setTime(rt),nt=at}return this.cache.push(nt),nt;case 115:var et=this.readDigits(),ot=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<et)throw new X("Invalid bytes length");var O=Dt.CODES;O==null&&(O=Dt.initCodes(),Dt.CODES=O);var ut=this.pos,gt=et&3,Et;Et=(et>>2)*3+(gt>=2?gt-1:0);for(var Bt=ut+(et-gt),kt=le.alloc(Et),Rt=0;ut<Bt;){var ie=O[mt.fastCodeAt(ot,ut++)],ge=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ie<<2|ge>>4);var ne=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ge<<4|ne>>2);var te=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,ne<<6|te)}if(gt>=2){var se=O[mt.fastCodeAt(ot,ut++)],_e=O[mt.fastCodeAt(ot,ut++)];if(kt.set(Rt++,se<<2|_e>>4),gt==3){var xe=O[mt.fastCodeAt(ot,ut++)];kt.set(Rt++,_e<<4|xe>>2)}}return this.pos+=et,this.cache.push(kt),kt;case 67:var Ne=this.unserialize(),Ae=this.resolver.resolveClass(Ne);if(Ae==null)throw new X("Class not found "+Ne);var Pe=ct.createEmptyInstance(Ae);if(this.cache.push(Pe),Pe.hxUnserialize(this),this.get(this.pos++)!=103)throw new X("Invalid custom data");return Pe;case 65:var Me=this.unserialize(),Re=this.resolver.resolveClass(Me);if(Re==null)throw new X("Class not found "+Me);return Re;case 66:var bn=this.unserialize(),en=this.resolver.resolveEnum(bn);if(en==null)throw new X("Enum not found "+bn);return en}throw this.pos--,new X("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:Dt};var jt=function(){this.h={}};y["haxe.ds.IntMap"]=jt,jt.__name__=["haxe","ds","IntMap"],jt.__interfaces__=[lt],jt.prototype={set:function(t,n){this.h[t]=n},remove:function(t){return this.h.hasOwnProperty(t)?(delete this.h[t],!0):!1},keys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n|0);return U.iter(t)},__class__:jt};var Jt=function(){this.h={},this.h.__keys__={}};y["haxe.ds.ObjectMap"]=Jt,Jt.__name__=["haxe","ds","ObjectMap"],Jt.__interfaces__=[lt],Jt.prototype={set:function(t,n){var r=t.__id__||(t.__id__=++Jt.count);this.h[r]=n,this.h.__keys__[r]=t},keys:function(){var t=[];for(var n in this.h.__keys__)this.h.hasOwnProperty(n)&&t.push(this.h.__keys__[n]);return U.iter(t)},__class__:Jt};var oe=y["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};oe.Some=function(t){var n=["Some",0,t];return n.__enum__=oe,n.toString=I,n},oe.None=["None",1],oe.None.toString=I,oe.None.__enum__=oe;var he=function(){this.h={}};y["haxe.ds.StringMap"]=he,he.__name__=["haxe","ds","StringMap"],he.__interfaces__=[lt],he.prototype={set:function(t,n){Ir[t]!=null?this.setReserved(t,n):this.h[t]=n},get:function(t){return Ir[t]!=null?this.getReserved(t):this.h[t]},setReserved:function(t,n){this.rh==null&&(this.rh={}),this.rh["$"+t]=n},getReserved:function(t){return this.rh==null?null:this.rh["$"+t]},keys:function(){var t=this.arrayKeys();return U.iter(t)},arrayKeys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n);if(this.rh!=null)for(var n in this.rh)n.charCodeAt(0)==36&&t.push(n.substr(1));return t},__class__:he};var le=function(t){this.length=t.byteLength,this.b=new Er(t),this.b.bufferValue=t,t.hxBytes=this,t.bytes=this.b};y["haxe.io.Bytes"]=le,le.__name__=["haxe","io","Bytes"],le.alloc=function(t){return new le(new or(t))},le.prototype={get:function(t){return this.b[t]},set:function(t,n){this.b[t]=n&255},__class__:le};var Ot=y["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};Ot.Blocked=["Blocked",0],Ot.Blocked.toString=I,Ot.Blocked.__enum__=Ot,Ot.Overflow=["Overflow",1],Ot.Overflow.toString=I,Ot.Overflow.__enum__=Ot,Ot.OutsideBounds=["OutsideBounds",2],Ot.OutsideBounds.toString=I,Ot.OutsideBounds.__enum__=Ot,Ot.Custom=function(t){var n=["Custom",3,t];return n.__enum__=Ot,n.toString=I,n};var Zt=function(){};y["haxe.io.FPHelper"]=Zt,Zt.__name__=["haxe","io","FPHelper"],Zt.i32ToFloat=function(t){var n=1-(t>>>31<<1),r=t>>>23&255,s=t&8388607;return s==0&&r==0?0:n*(1+Math.pow(2,-23)*s)*Math.pow(2,r-127)},Zt.floatToI32=function(t){if(t==0)return 0;var n;t<0?n=-t:n=t;var r=Math.floor(Math.log(n)/.6931471805599453);r<-127?r=-127:r>128&&(r=128);var s=Math.round((n/Math.pow(2,r)-1)*8388608)&8388607;return(t<0?-2147483648:0)|r+127<<23|s},Zt.i64ToDouble=function(t,n){var r=1-(n>>>31<<1),s=(n>>20&2047)-1023,o=(n&1048575)*4294967296+(t>>>31)*2147483648+(t&2147483647);return o==0&&s==-1023?0:r*(1+Math.pow(2,-52)*o)*Math.pow(2,s)},Zt.doubleToI64=function(t){var n=Zt.i64tmp;if(t==0)n.low=0,n.high=0;else{var r;t<0?r=-t:r=t;var s=Math.floor(Math.log(r)/.6931471805599453),o,h=(r/Math.pow(2,s)-1)*4503599627370496;o=Math.round(h);var c=o|0,v=o/4294967296|0;n.low=c,n.high=(t<0?-2147483648:0)|s+1023<<20|v}return n};var X=function(t){Error.call(this),this.val=t,this.message=String(t),Error.captureStackTrace&&Error.captureStackTrace(this,X)};y["js._Boot.HaxeError"]=X,X.__name__=["js","_Boot","HaxeError"],X.__super__=Error,X.prototype=C(Error.prototype,{__class__:X});var bt=function(){};y["js.Boot"]=bt,bt.__name__=["js","Boot"],bt.getClass=function(t){if(t instanceof Array&&t.__enum__==null)return Array;var n=t.__class__;if(n!=null)return n;var r=bt.__nativeClassName(t);return r!=null?bt.__resolveNativeClass(r):null},bt.__string_rec=function(t,n){if(t==null)return"null";if(n.length>=5)return"<...>";var r=typeof t;switch(r=="function"&&(t.__name__||t.__ename__)&&(r="object"),r){case"object":if(t instanceof Array){if(t.__enum__){if(t.length==2)return t[0];var s=t[0]+"(";n+=" ";for(var o=2,h=t.length;o<h;){var c=o++;c!=2?s+=","+bt.__string_rec(t[c],n):s+=bt.__string_rec(t[c],n)}return s+")"}var v=t.length,d="[";n+=" ";for(var m=0;m<v;){var b=m++;d+=(b>0?",":"")+bt.__string_rec(t[b],n)}return d+="]",d}var w;try{w=t.toString}catch(k){return k instanceof X&&(k=k.val),"???"}if(w!=null&&w!=Object.toString&&typeof w=="function"){var A=t.toString();if(A!="[object Object]")return A}var P=null,z=`{
2
2
  `;n+=" ";var E=t.hasOwnProperty!=null;for(var P in t)E&&!t.hasOwnProperty(P)||P=="prototype"||P=="__class__"||P=="__super__"||P=="__interfaces__"||P=="__properties__"||(z.length!=2&&(z+=`,
3
3
  `),z+=n+P+" : "+bt.__string_rec(t[P],n));return n=n.substring(1),z+=`
4
- `+n+"}",z;case"function":return"<function>";case"string":return t;default:return String(t)}},bt.__interfLoop=function(t,n){if(t==null)return!1;if(t==n)return!0;var r=t.__interfaces__;if(r!=null)for(var s=0,o=r.length;s<o;){var h=s++,c=r[h];if(c==n||bt.__interfLoop(c,n))return!0}return bt.__interfLoop(t.__super__,n)},bt.__instanceof=function(t,n){if(n==null)return!1;switch(n){case Xi:return(t|0)===t;case gi:return typeof t=="number";case pi:return typeof t=="boolean";case String:return typeof t=="string";case Array:return t instanceof Array&&t.__enum__==null;case Wi:return!0;default:if(t!=null){if(typeof n=="function"){if(t instanceof n||bt.__interfLoop(bt.getClass(t),n))return!0}else if(typeof n=="object"&&bt.__isNativeObj(n)&&t instanceof n)return!0}else return!1;return n==yi&&t.__name__!=null||n==wi&&t.__ename__!=null?!0:t.__enum__==n}},bt.__nativeClassName=function(t){var n=bt.__toStr.call(t).slice(8,-1);return n=="Object"||n=="Function"||n=="Math"||n=="JSON"?null:n},bt.__isNativeObj=function(t){return bt.__nativeClassName(t)!=null},bt.__resolveNativeClass=function(t){return M[t]};var Zt=function(t){if(t instanceof Array&&t.__enum__==null)this.a=t,this.byteLength=t.length;else{var n=t;this.a=[];for(var r=0;r<n;){var s=r++;this.a[s]=0}this.byteLength=n}};y["js.html.compat.ArrayBuffer"]=Zt,Zt.__name__=["js","html","compat","ArrayBuffer"],Zt.sliceImpl=function(t,n){var r=new Er(this,t,n==null?null:n-t),s=new or(r.byteLength),o=new Er(s);return o.set(r),s},Zt.prototype={slice:function(t,n){return new Zt(this.a.slice(t,n))},__class__:Zt};var Se=function(t,n,r){if(this.buf=t,n==null?this.offset=0:this.offset=n,r==null?this.length=t.byteLength-this.offset:this.length=r,this.offset<0||this.length<0||this.offset+this.length>t.byteLength)throw new X(Ot.OutsideBounds)};y["js.html.compat.DataView"]=Se,Se.__name__=["js","html","compat","DataView"],Se.prototype={getInt8:function(t){var n=this.buf.a[this.offset+t];return n>=128?n-256:n},getUint8:function(t){return this.buf.a[this.offset+t]},getInt16:function(t,n){var r=this.getUint16(t,n);return r>=32768?r-65536:r},getUint16:function(t,n){return n?this.buf.a[this.offset+t]|this.buf.a[this.offset+t+1]<<8:this.buf.a[this.offset+t]<<8|this.buf.a[this.offset+t+1]},getInt32:function(t,n){var r=this.offset+t,s=this.buf.a[r++],o=this.buf.a[r++],h=this.buf.a[r++],c=this.buf.a[r++];return n?s|o<<8|h<<16|c<<24:c|h<<8|o<<16|s<<24},getUint32:function(t,n){var r=this.getInt32(t,n);return r<0?r+4294967296:r},getFloat32:function(t,n){return Wt.i32ToFloat(this.getInt32(t,n))},getFloat64:function(t,n){var r=this.getInt32(t,n),s=this.getInt32(t+4,n);return Wt.i64ToDouble(n?r:s,n?s:r)},setInt8:function(t,n){n<0?this.buf.a[t+this.offset]=n+128&255:this.buf.a[t+this.offset]=n&255},setUint8:function(t,n){this.buf.a[t+this.offset]=n&255},setInt16:function(t,n,r){this.setUint16(t,n<0?n+65536:n,r)},setUint16:function(t,n,r){var s=t+this.offset;r?(this.buf.a[s]=n&255,this.buf.a[s++]=n>>8&255):(this.buf.a[s++]=n>>8&255,this.buf.a[s]=n&255)},setInt32:function(t,n,r){this.setUint32(t,n,r)},setUint32:function(t,n,r){var s=t+this.offset;r?(this.buf.a[s++]=n&255,this.buf.a[s++]=n>>8&255,this.buf.a[s++]=n>>16&255,this.buf.a[s++]=n>>>24):(this.buf.a[s++]=n>>>24,this.buf.a[s++]=n>>16&255,this.buf.a[s++]=n>>8&255,this.buf.a[s++]=n&255)},setFloat32:function(t,n,r){this.setUint32(t,Wt.floatToI32(n),r)},setFloat64:function(t,n,r){var s=Wt.doubleToI64(n);r?(this.setUint32(t,s.low),this.setUint32(t,s.high)):(this.setUint32(t,s.high),this.setUint32(t,s.low))},__class__:Se};var Ce=function(){};y["js.html.compat.Uint8Array"]=Ce,Ce.__name__=["js","html","compat","Uint8Array"],Ce._new=function(t,n,r){var s;if(typeof t=="number"){s=[];for(var o=0;o<t;){var h=o++;s[h]=0}s.byteLength=s.length,s.byteOffset=0,s.buffer=new Zt(s)}else if(bt.__instanceof(t,Zt)){var c=t;n==null&&(n=0),r==null&&(r=c.byteLength-n),n==0?s=c.a:s=c.a.slice(n,n+r),s.byteLength=s.length,s.byteOffset=n,s.buffer=c}else if(t instanceof Array&&t.__enum__==null)s=t.slice(),s.byteLength=s.length,s.byteOffset=0,s.buffer=new Zt(s);else throw new X("TODO "+wt.string(t));return s.subarray=Ce._subarray,s.set=Ce._set,s},Ce._set=function(t,n){var r=this;if(bt.__instanceof(t.buffer,Zt)){var s=t;if(t.byteLength+n>r.byteLength)throw new X("set() outside of range");for(var o=0,h=t.byteLength;o<h;){var c=o++;r[c+n]=s[c]}}else if(t instanceof Array&&t.__enum__==null){var v=t;if(v.length+n>r.byteLength)throw new X("set() outside of range");for(var d=0,m=v.length;d<m;){var b=d++;r[b+n]=v[b]}}else throw new X("TODO")},Ce._subarray=function(t,n){var r=this,s=Ce._new(r.slice(t,n));return s.byteOffset=t,s};var yt=function(t){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,t!=null&&yt.link(t,this,function(n){return n})};y["promhx.base.AsyncBase"]=yt,yt.__name__=["promhx","base","AsyncBase"],yt.link=function(t,n,r){t._update.push({async:n,linkf:function(s){n.handleResolve(r(s))}}),yt.immediateLinkUpdate(t,n,r)},yt.immediateLinkUpdate=function(t,n,r){if(t._errored&&!t._errorPending&&!(t._error.length>0)&&n.handleError(t._errorVal),t._resolved&&!t._pending)try{n.handleResolve(r(t._val))}catch(s){s instanceof X&&(s=s.val),n.handleError(s)}},yt.linkAll=function(t,n){for(var r=function(h,c,v){if(h.length==0||yt.allFulfilled(h)){for(var d,m=[],b=be(t)();b.hasNext();){var w=b.next();m.push(w==c?v:w._val)}d=m,n.handleResolve(d)}},s=be(t)();s.hasNext();){var o=s.next();o._update.push({async:n,linkf:function(h,c,v){return function(d){h(c,v,d)}}(r,function(h){for(var c,v=[],d=be(t)();d.hasNext();){var m=d.next();m!=o&&v.push(m)}return c=v,c}(),o)})}yt.allFulfilled(t)&&n.handleResolve(function(h){for(var c,v=[],d=be(t)();d.hasNext();){var m=d.next();v.push(m._val)}return c=v,c}())},yt.pipeLink=function(t,n,r){var s=!1,o=function(h){if(!s){s=!0;var c=r(h);c._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(c,n,function(v){return v})}};if(t._update.push({async:n,linkf:o}),t._resolved&&!t._pending)try{o(t._val)}catch(h){h instanceof X&&(h=h.val),n.handleError(h)}},yt.allResolved=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._resolved)return!1}return!0},yt.allFulfilled=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._fulfilled)return!1}return!0},yt.prototype={catchError:function(t){return this._error.push(t),this},errorThen:function(t){return this._errorMap=t,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(t){this._resolve(t)},_resolve:function(t){var n=this;this._pending?ft.enqueue(function(r,s){return function(){r(s)}}(ve(this,this._resolve),t)):(this._resolved=!0,this._pending=!0,ft.queue.add(function(){n._val=t;for(var r=0,s=n._update;r<s.length;){var o=s[r];++r;try{o.linkf(t)}catch(h){h instanceof X&&(h=h.val),o.async.handleError(h)}}n._fulfilled=!0,n._pending=!1}),ft.continueOnNextLoop())},handleError:function(t){this._handleError(t)},_handleError:function(t){var n=this,r=function(s){if(n._error.length>0)for(var o=0,h=n._error;o<h.length;){var c=h[o];++o,c(s)}else if(n._update.length>0)for(var v=0,d=n._update;v<d.length;){var m=d[v];++v,m.async.handleError(s)}else throw new X(s);n._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=t,ft.queue.add(function(){if(n._errorMap!=null)try{n._resolve(n._errorMap(t))}catch(s){s instanceof X&&(s=s.val),r(s)}else r(t)}),ft.continueOnNextLoop())},then:function(t){var n=new yt(null);return yt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){n._update=n._update.filter(function(r){return r.async!=t})}),ft.continueOnNextLoop()},isLinked:function(t){for(var n=!1,r=0,s=this._update;r<s.length;){var o=s[r];if(++r,o.async==t)return!0}return n},__class__:yt};var un=f.promhx.Deferred=function(){yt.call(this)};y["promhx.Deferred"]=un,un.__name__=["promhx","Deferred"],un.__super__=yt,un.prototype=C(yt.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},promise:function(){return new Jt(this)},stream:function(){return new Nt(this)},publicStream:function(){return new Fe(this)},__class__:un});var Jt=f.promhx.Promise=function(t){yt.call(this,t),this._rejected=!1};y["promhx.Promise"]=Jt,Jt.__name__=["promhx","Promise"],Jt.whenAll=function(t){var n=new Jt(null);return yt.linkAll(t,n),n},Jt.promise=function(t){var n=new Jt;return n.handleResolve(t),n},Jt.__super__=yt,Jt.prototype=C(yt.prototype,{isRejected:function(){return this._rejected},reject:function(t){this._rejected=!0,this.handleError(t)},handleResolve:function(t){if(this._resolved){var n="Promise has already been resolved";throw new X(cn.AlreadyResolved(n))}this._resolve(t)},then:function(t){var n=new Jt(null);return yt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){if(n._fulfilled)n._update=n._update.filter(function(s){return s.async!=t});else{var r="Downstream Promise is not fullfilled";n.handleError(cn.DownstreamNotFullfilled(r))}}),ft.continueOnNextLoop()},handleError:function(t){this._rejected=!0,this._handleError(t)},pipe:function(t){var n=new Jt(null);return yt.pipeLink(this,n,t),n},errorPipe:function(t){var n=new Jt;return this.catchError(function(r){var s=t(r);s.then(ve(n,n._resolve))}),this.then(ve(n,n._resolve)),n},__class__:Jt});var Nt=f.promhx.Stream=function(t){yt.call(this,t),this._end_promise=new Jt};y["promhx.Stream"]=Nt,Nt.__name__=["promhx","Stream"],Nt.foreach=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.handleResolve(s)}return n.end(),n},Nt.wheneverAll=function(t){var n=new Nt(null);return yt.linkAll(t,n),n},Nt.concatAll=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.concat(s)}return n},Nt.mergeAll=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.merge(s)}return n},Nt.stream=function(t){var n=new Nt(null);return n.handleResolve(t),n},Nt.__super__=yt,Nt.prototype=C(yt.prototype,{then:function(t){var n=new Nt(null);return yt.link(this,n,t),this._end_promise._update.push({async:n._end_promise,linkf:function(r){n.end()}}),n},detachStream:function(t){for(var n=[],r=!1,s=0,o=this._update;s<o.length;){var h=o[s];++s,h.async==t?(this._end_promise._update=this._end_promise._update.filter(function(c){return c.async!=t._end_promise}),r=!0):n.push(h)}return this._update=n,r},first:function(){var t=new Jt(null);return this.then(function(n){t._resolved||t.handleResolve(n)}),t},handleResolve:function(t){!this._end&&!this._pause&&this._resolve(t)},pause:function(t){t==null&&(t=!this._pause),this._pause=t},pipe:function(t){var n=new Nt(null);return yt.pipeLink(this,n,t),this._end_promise.then(function(r){n.end()}),n},errorPipe:function(t){var n=new Nt(null);return this.catchError(function(r){var s=t(r);s.then(ve(n,n._resolve)),s._end_promise.then((kr=n._end_promise,ve(kr,kr._resolve)))}),this.then(ve(n,n._resolve)),this._end_promise.then(function(r){n.end()}),n},handleEnd:function(){if(this._pending)ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var t;this._resolved?t=oe.Some(this._val):t=oe.None,this._end_promise.handleResolve(t),this._update=[],this._error=[]}},end:function(){return ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop(),this},endThen:function(t){return this._end_promise.then(t)},filter:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:function(r){t(r)&&n.handleResolve(r)}}),yt.immediateLinkUpdate(this,n,function(r){return r}),n},concat:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(this,n,function(r){return r}),this._end_promise.then(function(r){t.pipe(function(s){return n.handleResolve(s),n}),t._end_promise.then(function(s){n.end()})}),n},merge:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),t._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(this,n,function(r){return r}),yt.immediateLinkUpdate(t,n,function(r){return r}),n},__class__:Nt});var Fe=f.promhx.PublicStream=function(t){Nt.call(this,t)};y["promhx.PublicStream"]=Fe,Fe.__name__=["promhx","PublicStream"],Fe.publicstream=function(t){var n=new Fe(null);return n.handleResolve(t),n},Fe.__super__=Nt,Fe.prototype=C(Nt.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},update:function(t){this.handleResolve(t)},__class__:Fe});var ft=function(){};y["promhx.base.EventLoop"]=ft,ft.__name__=["promhx","base","EventLoop"],ft.enqueue=function(t){ft.queue.add(t),ft.continueOnNextLoop()},ft.set_nextLoop=function(t){if(ft.nextLoop!=null)throw new X("nextLoop has already been set");return ft.nextLoop=t,ft.nextLoop},ft.queueEmpty=function(){return ft.queue.isEmpty()},ft.finish=function(t){t==null&&(t=1e3);for(var n=null;t-- >0&&(n=ft.queue.pop())!=null;)n();return ft.queue.isEmpty()},ft.clear=function(){ft.queue=new Z},ft.f=function(){var t=ft.queue.pop();t!=null&&t(),ft.queue.isEmpty()||ft.continueOnNextLoop()},ft.continueOnNextLoop=function(){ft.nextLoop!=null?ft.nextLoop(ft.f):setImmediate(ft.f)};var cn=y["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};cn.AlreadyResolved=function(t){var n=["AlreadyResolved",0,t];return n.__enum__=cn,n.toString=I,n},cn.DownstreamNotFullfilled=function(t){var n=["DownstreamNotFullfilled",1,t];return n.__enum__=cn,n.toString=I,n};var sr=function(){};y["verb.Verb"]=sr,sr.__name__=["verb","Verb"],sr.main=function(){x.log("verb 2.1.0")};var K=function(){};y["verb.core.ArrayExtensions"]=K,K.__name__=["verb","core","ArrayExtensions"],K.alloc=function(t,n){if(!(n<0))for(;t.length<n;)t.push(null)},K.reversed=function(t){var n=t.slice();return n.reverse(),n},K.last=function(t){return t[t.length-1]},K.first=function(t){return t[0]},K.spliceAndInsert=function(t,n,r,s){t.splice(n,r),t.splice(n,0,s)},K.left=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(0,n)},K.right=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n)},K.rightWithPivot=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n-1)},K.unique=function(t,n){if(t.length==0)return[];for(var r=[t.pop()];t.length>0;){for(var s=t.pop(),o=!0,h=0;h<r.length;){var c=r[h];if(++h,n(s,c)){o=!1;break}}o&&r.push(s)}return r};var zt=function(){};y["verb.core.Binomial"]=zt,zt.__name__=["verb","core","Binomial"],zt.get=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;if(n>t-n&&(n=t-n),zt.memo_exists(t,n))return zt.get_memo(t,n);for(var r=1,s=t,o=1,h=n+1;o<h;){var c=o++;if(zt.memo_exists(s,c)){t--,r=zt.get_memo(s,c);continue}r*=t--,r/=c,zt.memoize(s,c,r)}return r},zt.get_no_memo=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;n>t-n&&(n=t-n);for(var r=1,s=1,o=n+1;s<o;){var h=s++;r*=t--,r/=h}return r},zt.memo_exists=function(t,n){return zt.memo.h.hasOwnProperty(t)&&zt.memo.h[t].h.hasOwnProperty(n)},zt.get_memo=function(t,n){return zt.memo.h[t].h[n]},zt.memoize=function(t,n,r){zt.memo.h.hasOwnProperty(t)||zt.memo.set(t,new jt),zt.memo.h[t].h[n]=r};var ue=f.core.BoundingBox=function(t){this.max=null,this.min=null,this.dim=3,this.initialized=!1,t!=null&&this.addRange(t)};y["verb.core.BoundingBox"]=ue,ue.__name__=["verb","core","BoundingBox"],ue.intervalsOverlap=function(t,n,r,s,o){o==null&&(o=-1);var h;o<-.5?h=tt.TOLERANCE:h=o;var c=Math.min(t,n)-h,v=Math.max(t,n)+h,d=Math.min(r,s)-h,m=Math.max(r,s)+h;return c>=d&&c<=m||v>=d&&v<=m||d>=c&&d<=v||m>=c&&m<=v},ue.prototype={fromPoint:function(t){return new ue([t])},add:function(t){if(!this.initialized)return this.dim=t.length,this.min=t.slice(0),this.max=t.slice(0),this.initialized=!0,this;for(var n=0,r=this.dim;n<r;){var s=n++;t[s]>this.max[s]&&(this.max[s]=t[s]),t[s]<this.min[s]&&(this.min[s]=t[s])}return this},addRange:function(t){for(var n=t.length,r=0;r<n;){var s=r++;this.add(t[s])}return this},contains:function(t,n){return n==null&&(n=-1),this.initialized?this.intersects(new ue([t]),n):!1},intersects:function(t,n){if(n==null&&(n=-1),!this.initialized||!t.initialized)return!1;for(var r=this.min,s=this.max,o=t.min,h=t.max,c=0,v=this.dim;c<v;){var d=c++;if(!ue.intervalsOverlap(r[d],s[d],o[d],h[d],n))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var t=0,n=0,r=0,s=this.dim;r<s;){var o=r++,h=this.getAxisLength(o);h>t&&(t=h,n=o)}return n},getAxisLength:function(t){return t<0||t>this.dim-1?0:Math.abs(this.min[t]-this.max[t])},intersect:function(t,n){if(!this.initialized)return null;var r=this.min,s=this.max,o=t.min,h=t.max;if(!this.intersects(t,n))return null;for(var c=[],v=[],d=0,m=this.dim;d<m;){var b=d++;c.push(Math.min(s[b],h[b])),v.push(Math.max(r[b],o[b]))}return new ue([v,c])},__class__:ue};var tt=f.core.Constants=function(){};y["verb.core.Constants"]=tt,tt.__name__=["verb","core","Constants"];var Ft=f.core.SerializableBase=function(){};y["verb.core.SerializableBase"]=Ft,Ft.__name__=["verb","core","SerializableBase"],Ft.prototype={serialize:function(){var t=new Xt;return t.serialize(this),t.toString()},__class__:Ft};var Ln=f.core.Plane=function(t,n){this.origin=t,this.normal=n};y["verb.core.Plane"]=Ln,Ln.__name__=["verb","core","Plane"],Ln.__super__=Ft,Ln.prototype=C(Ft.prototype,{__class__:Ln});var vn=f.core.Ray=function(t,n){this.origin=t,this.dir=n};y["verb.core.Ray"]=vn,vn.__name__=["verb","core","Ray"],vn.__super__=Ft,vn.prototype=C(Ft.prototype,{__class__:vn});var It=f.core.NurbsCurveData=function(t,n,r){this.degree=t,this.controlPoints=r,this.knots=n};y["verb.core.NurbsCurveData"]=It,It.__name__=["verb","core","NurbsCurveData"],It.__super__=Ft,It.prototype=C(Ft.prototype,{__class__:It});var qt=f.core.NurbsSurfaceData=function(t,n,r,s,o){this.degreeU=t,this.degreeV=n,this.knotsU=r,this.knotsV=s,this.controlPoints=o};y["verb.core.NurbsSurfaceData"]=qt,qt.__name__=["verb","core","NurbsSurfaceData"],qt.__super__=Ft,qt.prototype=C(Ft.prototype,{__class__:qt});var ye=f.core.MeshData=function(t,n,r,s){this.faces=t,this.points=n,this.normals=r,this.uvs=s};y["verb.core.MeshData"]=ye,ye.__name__=["verb","core","MeshData"],ye.empty=function(){return new ye([],[],[],[])},ye.__super__=Ft,ye.prototype=C(Ft.prototype,{__class__:ye});var Un=f.core.PolylineData=function(t,n){this.points=t,this.params=n};y["verb.core.PolylineData"]=Un,Un.__name__=["verb","core","PolylineData"],Un.__super__=Ft,Un.prototype=C(Ft.prototype,{__class__:Un});var Rn=f.core.VolumeData=function(t,n,r,s,o,h,c){this.degreeU=t,this.degreeV=n,this.degreeW=r,this.knotsU=s,this.knotsV=o,this.knotsW=h,this.controlPoints=c};y["verb.core.VolumeData"]=Rn,Rn.__name__=["verb","core","VolumeData"],Rn.__super__=Ft,Rn.prototype=C(Ft.prototype,{__class__:Rn});var Gt=f.core.Pair=function(t,n){this.item0=t,this.item1=n};y["verb.core.Pair"]=Gt,Gt.__name__=["verb","core","Pair"],Gt.prototype={__class__:Gt};var re=f.core.Interval=function(t,n){this.min=t,this.max=n};y["verb.core.Interval"]=re,re.__name__=["verb","core","Interval"],re.prototype={__class__:re};var $e=f.core.CurveCurveIntersection=function(t,n,r,s){this.point0=t,this.point1=n,this.u0=r,this.u1=s};y["verb.core.CurveCurveIntersection"]=$e,$e.__name__=["verb","core","CurveCurveIntersection"],$e.prototype={__class__:$e};var Vn=f.core.CurveSurfaceIntersection=function(t,n,r,s){this.u=t,this.uv=n,this.curvePoint=r,this.surfacePoint=s};y["verb.core.CurveSurfaceIntersection"]=Vn,Vn.__name__=["verb","core","CurveSurfaceIntersection"],Vn.prototype={__class__:Vn};var Oe=f.core.MeshIntersectionPoint=function(t,n,r,s,o){this.visited=!1,this.adj=null,this.opp=null,this.uv0=t,this.uv1=n,this.point=r,this.faceIndex0,this.faceIndex1};y["verb.core.MeshIntersectionPoint"]=Oe,Oe.__name__=["verb","core","MeshIntersectionPoint"],Oe.prototype={__class__:Oe};var Dn=f.core.PolylineMeshIntersection=function(t,n,r,s,o){this.point=t,this.u=n,this.uv=r,this.polylineIndex=s,this.faceIndex=o};y["verb.core.PolylineMeshIntersection"]=Dn,Dn.__name__=["verb","core","PolylineMeshIntersection"],Dn.prototype={__class__:Dn};var Fn=f.core.SurfaceSurfaceIntersectionPoint=function(t,n,r,s){this.uv0=t,this.uv1=n,this.point=r,this.dist=s};y["verb.core.SurfaceSurfaceIntersectionPoint"]=Fn,Fn.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],Fn.prototype={__class__:Fn};var On=f.core.TriSegmentIntersection=function(t,n,r,s){this.point=t,this.s=n,this.t=r,this.p=s};y["verb.core.TriSegmentIntersection"]=On,On.__name__=["verb","core","TriSegmentIntersection"],On.prototype={__class__:On};var _n=f.core.CurveTriPoint=function(t,n,r){this.u=t,this.point=n,this.uv=r};y["verb.core.CurveTriPoint"]=_n,_n.__name__=["verb","core","CurveTriPoint"],_n.prototype={__class__:_n};var fe=function(t,n,r,s,o){o==null&&(o=!1),s==null&&(s=-1),this.uv=r,this.point=t,this.normal=n,this.id=s,this.degen=o};y["verb.core.SurfacePoint"]=fe,fe.__name__=["verb","core","SurfacePoint"],fe.fromUv=function(t,n){return new fe(null,null,[t,n])},fe.prototype={__class__:fe};var ar=f.core.CurvePoint=function(t,n){this.u=t,this.pt=n};y["verb.core.CurvePoint"]=ar,ar.__name__=["verb","core","CurvePoint"],ar.prototype={__class__:ar};var qn=f.core.KdTree=function(t,n){this.dim=3,this.points=t,this.distanceFunction=n,this.dim=t[0].point.length,this.root=this.buildTree(t,0,null)};y["verb.core.KdTree"]=qn,qn.__name__=["verb","core","KdTree"],qn.prototype={buildTree:function(t,n,r){var s=n%this.dim,o,h;return t.length==0?null:t.length==1?new fn(t[0],s,r):(t.sort(function(c,v){var d=c.point[s]-v.point[s];return d==0?0:d>0?1:-1}),o=Math.floor(t.length/2),h=new fn(t[o],s,r),h.left=this.buildTree(t.slice(0,o),n+1,h),h.right=this.buildTree(t.slice(o+1),n+1,h),h)},nearest:function(t,n,r){var s=this,o=new Gn(function(w){return-w.item1}),h,c=null;c=function(w){for(var A,P=w.dimension,z=s.distanceFunction(t,w.kdPoint.point),E,k=[],T=0,B=s.dim;T<B;)T++,k.push(0);E=k;for(var L,R,F=function(G,J){o.push(new Gt(G,J)),o.size()>n&&o.pop()},W=0,D=s.dim;W<D;){var V=W++;V==w.dimension?E[V]=t[V]:E[V]=w.kdPoint.point[V]}if(L=s.distanceFunction(E,w.kdPoint.point),w.right==null&&w.left==null){(o.size()<n||z<o.peek().item1)&&F(w,z);return}w.right==null?A=w.left:w.left==null?A=w.right:t[P]<w.kdPoint.point[P]?A=w.left:A=w.right,c(A),(o.size()<n||z<o.peek().item1)&&F(w,z),(o.size()<n||Math.abs(L)<o.peek().item1)&&(A==w.left?R=w.right:R=w.left,R!=null&&c(R))},h=c;for(var v=0;v<n;)v++,o.push(new Gt(null,r));h(this.root);for(var d=[],m=0;m<n;){var b=m++;o.content[b].item0!=null&&d.push(new Gt(o.content[b].item0.kdPoint,o.content[b].item1))}return d},__class__:qn};var Gn=function(t){this.content=[],this.scoreFunction=t};y["verb.core.BinaryHeap"]=Gn,Gn.__name__=["verb","core","BinaryHeap"],Gn.prototype={push:function(t){this.content.push(t),this.bubbleUp(this.content.length-1)},pop:function(){var t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.sinkDown(0)),t},peek:function(){return this.content[0]},remove:function(t){for(var n=this.content.length,r=0;r<n;){var s=r++;if(this.content[s]==t){var o=this.content.pop();s!=n-1&&(this.content[s]=o,this.scoreFunction(o)<this.scoreFunction(t)?this.bubbleUp(s):this.sinkDown(s));return}}throw new X("Node not found.")},size:function(){return this.content.length},bubbleUp:function(t){for(var n=this.content[t];t>0;){var r=Math.floor((t+1)/2)-1,s=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(s))this.content[r]=n,this.content[t]=s,t=r;else break}},sinkDown:function(t){for(var n=this.content.length,r=this.content[t],s=this.scoreFunction(r);;){var o=(t+1)*2,h=o-1,c=-1,v=0;if(h<n){var d=this.content[h];v=this.scoreFunction(d),v<s&&(c=h)}if(o<n){var m=this.content[o],b=this.scoreFunction(m);b<(c==-1?s:v)&&(c=o)}if(c!=-1)this.content[t]=this.content[c],this.content[c]=r,t=c;else break}},__class__:Gn};var dn=f.core.KdPoint=function(t,n){this.point=t,this.obj=n};y["verb.core.KdPoint"]=dn,dn.__name__=["verb","core","KdPoint"],dn.prototype={__class__:dn};var fn=f.core.KdNode=function(t,n,r){this.kdPoint=t,this.left=null,this.right=null,this.parent=r,this.dimension=n};y["verb.core.KdNode"]=fn,fn.__name__=["verb","core","KdNode"],fn.prototype={__class__:fn};var Le=function(){};y["verb.eval.IBoundingBoxTree"]=Le,Le.__name__=["verb","eval","IBoundingBoxTree"],Le.prototype={__class__:Le};var ke=function(t,n){this._boundingBox=null,this._curve=t,n==null&&(n=u.domain(this._curve.knots)/64),this._knotTol=n};y["verb.core.LazyCurveBoundingBoxTree"]=ke,ke.__name__=["verb","core","LazyCurveBoundingBoxTree"],ke.__interfaces__=[Le],ke.prototype={split:function(){var t=K.first(this._curve.knots),n=K.last(this._curve.knots),r=n-t,s=Yt.curveSplit(this._curve,(n+t)/2+r*.1*Math.random());return new Gt(new ke(s[0],this._knotTol),new ke(s[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new ue(S.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(t){return u.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:ke};var Ie=function(t,n){if(this._boundingBox=null,this._mesh=t,n==null){for(var r=[],s=0,o=t.faces.length;s<o;){var h=s++;r.push(h)}n=r}this._faceIndices=n};y["verb.core.LazyMeshBoundingBoxTree"]=Ie,Ie.__name__=["verb","core","LazyMeshBoundingBoxTree"],Ie.__interfaces__=[Le],Ie.prototype={split:function(){var t=Kt.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),n=K.left(t),r=K.right(t);return new Gt(new Ie(this._mesh,n),new Ie(this._mesh,r))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=Kt.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(t){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:Ie};var Ee=function(t,n){this._boundingBox=null,this._polyline=t,n==null&&(n=new re(0,t.points.length!=0?t.points.length-1:0)),this._interval=n};y["verb.core.LazyPolylineBoundingBoxTree"]=Ee,Ee.__name__=["verb","core","LazyPolylineBoundingBoxTree"],Ee.__interfaces__=[Le],Ee.prototype={split:function(){var t=this._interval.min,n=this._interval.max,r=t+Math.ceil((n-t)/2),s=new re(t,r),o=new re(r,n);return new Gt(new Ee(this._polyline,s),new Ee(this._polyline,o))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new ue(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(t){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:Ee};var qe=function(t,n,r,s){n==null&&(n=!1),this._boundingBox=null,this._surface=t,this._splitV=n,r==null&&(r=u.domain(t.knotsU)/16),s==null&&(s=u.domain(t.knotsV)/16),this._knotTolU=r,this._knotTolV=s};y["verb.core.LazySurfaceBoundingBoxTree"]=qe,qe.__name__=["verb","core","LazySurfaceBoundingBoxTree"],qe.__interfaces__=[Le],qe.prototype={split:function(){var t,n;this._splitV?(t=K.first(this._surface.knotsV),n=K.last(this._surface.knotsV)):(t=K.first(this._surface.knotsU),n=K.last(this._surface.knotsU));var r=(t+n)/2,s=Yt.surfaceSplit(this._surface,r,this._splitV);return new Gt(new qe(s[0],!this._splitV,this._knotTolU,this._knotTolV),new qe(s[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new ue;for(var t=0,n=this._surface.controlPoints;t<n.length;){var r=n[t];++t,this._boundingBox.addRange(S.dehomogenize1d(r))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(t){return u.domain(this._surface.knotsV)<this._knotTolV&&u.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:qe};var At=f.core.Mat=function(){};y["verb.core.Mat"]=At,At.__name__=["verb","core","Mat"],At.mul=function(t,n){for(var r=[],s=0,o=n.length;s<o;){var h=s++;r.push(u.mul(t,n[h]))}return r},At.mult=function(t,n){var r,s,o,h,c,v,d,m;r=t.length,s=n.length,o=n[0].length,h=[];for(var b=r-1,w=0,A=0;b>=0;){for(c=[],v=t[b],A=o-1;A>=0;){for(d=v[s-1]*n[s-1][A],w=s-2;w>=1;)m=w-1,d+=v[w]*n[w][A]+v[m]*n[m][A],w-=2;w==0&&(d+=v[0]*n[0][A]),c[A]=d,A--}h[b]=c,b--}return h},At.add=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.add(t[h],n[h]))}return r},At.div=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.div(t[h],n))}return r},At.sub=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.sub(t[h],n[h]))}return r},At.dot=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.dot(t[h],n))}return r},At.identity=function(t){for(var n=u.zeros2d(t,t),r=0;r<t;){var s=r++;n[s][s]=1}return n},At.transpose=function(t){if(t.length==0)return[];for(var n=[],r=0,s=t[0].length;r<s;){var o=r++;n.push(function(h){for(var c,v=[],d=0,m=t.length;d<m;){var b=d++;v.push(t[b][o])}return c=v,c}())}return n},At.solve=function(t,n){return At.LUsolve(At.LU(t),n)},At.LUsolve=function(t,n){var r,s,o=t.LU,h=o.length,c=n.slice(),v=t.P,d,m,b;for(r=h-1;r!=-1;)c[r]=n[r],--r;for(r=0;r<h;){for(d=v[r],v[r]!=r&&(b=c[r],c[r]=c[d],c[d]=b),m=o[r],s=0;s<r;)c[r]-=c[s]*m[s],++s;++r}for(r=h-1;r>=0;){for(m=o[r],s=r+1;s<h;)c[r]-=c[s]*m[s],++s;c[r]/=m[r],--r}return c},At.LU=function(t){for(var n,r,s,o,h,c,v,d,m,b=[],w=0,A=t.length;w<A;){var P=w++;b.push(t[P].slice())}t=b;var z=t.length,E=z-1,k=[];for(s=0;s<z;){for(v=s,c=t[s],m=Math.abs(c[s]),r=s+1;r<z;)o=Math.abs(t[r][s]),m<o&&(m=o,v=r),++r;for(k[s]=v,v!=s&&(t[s]=t[v],t[v]=c,c=t[s]),h=c[s],n=s+1;n<z;)t[n][s]/=h,++n;for(n=s+1;n<z;){for(d=t[n],r=s+1;r<E;)d[r]-=d[s]*c[r],++r,d[r]-=d[s]*c[r],++r;r==E&&(d[r]-=d[s]*c[r]),++n}++s}return new Kn(t,k)};var Kn=function(t,n){this.LU=t,this.P=n};y["verb.core._Mat.LUDecomp"]=Kn,Kn.__name__=["verb","core","_Mat","LUDecomp"],Kn.prototype={__class__:Kn};var Kt=f.core.Mesh=function(){};y["verb.core.Mesh"]=Kt,Kt.__name__=["verb","core","Mesh"],Kt.getTriangleNorm=function(t,n){var r=t[n[0]],s=t[n[1]],o=t[n[2]],h=u.sub(s,r),c=u.sub(o,r),v=u.cross(h,c);return u.mul(1/u.norm(v),v)},Kt.makeMeshAabb=function(t,n){for(var r=new ue,s=0;s<n.length;){var o=n[s];++s,r.add(t.points[t.faces[o][0]]),r.add(t.points[t.faces[o][1]]),r.add(t.points[t.faces[o][2]])}return r},Kt.sortTrianglesOnLongestAxis=function(t,n,r){for(var s=t.getLongestAxis(),o=[],h=0;h<r.length;){var c=r[h];++h;var v=Kt.getMinCoordOnAxis(n.points,n.faces[c],s);o.push(new Gt(v,c))}o.sort(function(A,P){var z=A.item0,E=P.item0;return z==E?0:z>E?1:-1});for(var d=[],m=0,b=o.length;m<b;){var w=m++;d.push(o[w].item1)}return d},Kt.getMinCoordOnAxis=function(t,n,r){for(var s=1/0,o=0;o<3;){var h=o++,c=t[n[h]][r];c<s&&(s=c)}return s},Kt.getTriangleCentroid=function(t,n){for(var r=[0,0,0],s=0;s<3;)for(var o=s++,h=0;h<3;){var c=h++;r[c]+=t[n[o]][c]}for(var v=0;v<3;){var d=v++;r[d]/=3}return r},Kt.triangleUVFromPoint=function(t,n,r){var s=t.faces[n],o=t.points[s[0]],h=t.points[s[1]],c=t.points[s[2]],v=t.uvs[s[0]],d=t.uvs[s[1]],m=t.uvs[s[2]],b=u.sub(o,r),w=u.sub(h,r),A=u.sub(c,r),P=u.norm(u.cross(u.sub(o,h),u.sub(o,c))),z=u.norm(u.cross(w,A))/P,E=u.norm(u.cross(A,b))/P,k=u.norm(u.cross(b,w))/P;return u.add(u.mul(z,v),u.add(u.mul(E,d),u.mul(k,m)))};var Ge=function(t,n){if(this._empty=!1,this._face=-1,n==null){for(var r=[],s=0,o=t.faces.length;s<o;){var h=s++;r.push(h)}n=r}if(this._boundingBox=Kt.makeMeshAabb(t,n),n.length<1){this._empty=!0;return}else if(n.length<2){this._face=n[0];return}var c=Kt.sortTrianglesOnLongestAxis(this._boundingBox,t,n),v=K.left(c),d=K.right(c);this._children=new Gt(new Ge(t,v),new Ge(t,d))};y["verb.core.MeshBoundingBoxTree"]=Ge,Ge.__name__=["verb","core","MeshBoundingBoxTree"],Ge.__interfaces__=[Le],Ge.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(t){return this._children==null},empty:function(){return this._empty},__class__:Ge};var we=f.core.Minimizer=function(){};y["verb.core.Minimizer"]=we,we.__name__=["verb","core","Minimizer"],we.uncmin=function(t,n,r,s,o){r==null&&(r=1e-8),s==null&&(s=function(W){return we.numericalGradient(t,W)}),o==null&&(o=1e3),n=n.slice(0);var h=n.length,c=t(n),v=c,d;if(isNaN(c))throw new X("uncmin: f(x0) is a NaN!");r=Math.max(r,tt.EPSILON);var m,b,w,A=At.identity(h),P=0,z=[],E,k,T,B,L,R,F="";for(b=s(n);P<o;){if(!u.all(u.finite(b))){F="Gradient has Infinity or NaN";break}if(m=u.neg(At.dot(A,b)),!u.all(u.finite(m))){F="Search direction has Infinity or NaN";break}if(R=u.norm(m),R<r){F="Newton step smaller than tol";break}for(L=1,d=u.dot(b,m),E=n;P<o&&!(L*R<r);){if(z=u.mul(L,m),E=u.add(n,z),v=t(E),v-c>=.1*L*d||isNaN(v)){L*=.5,++P;continue}break}if(L*R<r){F="Line search step size smaller than tol";break}if(P==o){F="maxit reached during line search";break}w=s(E),k=u.sub(w,b),B=u.dot(k,z),T=At.dot(A,k),A=At.sub(At.add(A,At.mul((B+u.dot(k,T))/(B*B),we.tensor(z,z))),At.div(At.add(we.tensor(T,z),we.tensor(z,T)),B)),n=E,c=v,b=w,++P}return new jn(n,c,b,A,P,F)},we.numericalGradient=function(t,n){var r=n.length,s=t(n);if(s==NaN)throw new X("gradient: f(x) is a NaN!");for(var o=n.slice(0),h,c,v=[],d,m=.001,b,w,A,P=0,z,E,k,T=0;T<r;)for(var B=T++,L=Math.max(1e-6*s,1e-8);;){if(++P,P>20)throw new X("Numerical gradient fails");if(o[B]=n[B]+L,h=t(o),o[B]=n[B]-L,c=t(o),o[B]=n[B],isNaN(h)||isNaN(c)){L/=16;continue}if(v[B]=(h-c)/(2*L),b=n[B]-L,w=n[B],A=n[B]+L,z=(h-s)/L,E=(s-c)/L,k=u.max([Math.abs(v[B]),Math.abs(s),Math.abs(h),Math.abs(c),Math.abs(b),Math.abs(w),Math.abs(A),1e-8]),d=Math.min(u.max([Math.abs(z-v[B]),Math.abs(E-v[B]),Math.abs(z-E)])/k,L/k),d>m)L/=16;else break}return v},we.tensor=function(t,n){for(var r=t.length,s=n.length,o=[],h,c,v=r-1;v>=0;){h=[],c=t[v];for(var d=s-1;d>=3;)h[d]=c*n[d],--d,h[d]=c*n[d],--d,h[d]=c*n[d],--d,h[d]=c*n[d],--d;for(;d>=0;)h[d]=c*n[d],--d;o[v]=h,v--}return o};var jn=function(t,n,r,s,o,h){this.solution=t,this.value=n,this.gradient=r,this.invHessian=s,this.iterations=o,this.message=h};y["verb.core.MinimizationResult"]=jn,jn.__name__=["verb","core","MinimizationResult"],jn.prototype={__class__:jn};var mn=function(){};y["verb.core.ISerializable"]=mn,mn.__name__=["verb","core","ISerializable"],mn.prototype={__class__:mn};var Cr=f.core.Deserializer=function(){};y["verb.core.Deserializer"]=Cr,Cr.__name__=["verb","core","Deserializer"],Cr.deserialize=function(t){var n=new Dt(t),r=n.unserialize();return r};var ce=f.core.Trig=function(){};y["verb.core.Trig"]=ce,ce.__name__=["verb","core","Trig"],ce.isPointInPlane=function(t,n,r){return Math.abs(u.dot(u.sub(t,n.origin),n.normal))<r},ce.distToSegment=function(t,n,r){var s=ce.segmentClosestPoint(n,t,r,0,1);return u.dist(n,s.pt)},ce.rayClosestPoint=function(t,n,r){var s=u.sub(t,n),o=u.dot(s,r),h=u.add(n,u.mul(o,r));return h},ce.distToRay=function(t,n,r){var s=ce.rayClosestPoint(t,n,r),o=u.sub(s,t);return u.norm(o)},ce.threePointsAreFlat=function(t,n,r,s){var o=u.sub(n,t),h=u.sub(r,t),c=u.cross(o,h),v=u.dot(c,c);return v<s},ce.segmentClosestPoint=function(t,n,r,s,o){var h=u.sub(r,n),c=u.norm(h);if(c<tt.EPSILON)return{u:s,pt:n};var v=n,d=u.mul(1/c,h),m=u.sub(t,v),b=u.dot(m,d);return b<0?{u:s,pt:n}:b>c?{u:o,pt:r}:{u:s+(o-s)*b/c,pt:u.add(v,u.mul(b,d))}};var u=f.core.Vec=function(){};y["verb.core.Vec"]=u,u.__name__=["verb","core","Vec"],u.angleBetween=function(t,n){return Math.acos(u.dot(t,n)/(u.norm(t)*u.norm(n)))},u.positiveAngleBetween=function(t,n,r){var s=u.cross(t,n),o=u.norm(t),h=u.norm(n),c=o*h,v=u.dot(t,n),d=u.norm(s)/c,m=v/c,b=Math.atan2(d,m),w=u.dot(r,s);return Math.abs(w)<tt.EPSILON||w>0?b:-b},u.signedAngleBetween=function(t,n,r){var s=u.cross(t,n),o=u.norm(t),h=u.norm(n),c=o*h,v=u.dot(t,n),d=u.norm(s)/c,m=v/c,b=Math.atan2(d,m),w=u.dot(r,s);return w>0?b:2*Math.PI-b},u.angleBetweenNormalized2d=function(t,n){var r=t[0]*n[1]-t[1]*n[0];return Math.atan2(r,u.dot(t,n))},u.domain=function(t){return K.last(t)-K.first(t)},u.range=function(t){for(var n=[],r=0,s=0;s<t;)s++,n.push(r),r+=1;return n},u.span=function(t,n,r){if(r==null)return[];if(r<tt.EPSILON)return[];if(t>n&&r>0)return[];if(n>t&&r<0)return[];for(var s=[],o=t;o<=n;)s.push(o),o+=r;return s},u.neg=function(t){return t.map(function(n){return-n})},u.min=function(t){return q.fold(t,function(n,r){return Math.min(n,r)},1/0)},u.max=function(t){return q.fold(t,function(n,r){return Math.max(n,r)},-1/0)},u.all=function(t){return q.fold(t,function(n,r){return r&&n},!0)},u.finite=function(t){return t.map(function(n){return isFinite(n)})},u.onRay=function(t,n,r){return u.add(t,u.mul(r,n))},u.lerp=function(t,n,r){return u.add(u.mul(t,n),u.mul(1-t,r))},u.normalized=function(t){return u.div(t,u.norm(t))},u.cross=function(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]},u.dist=function(t,n){return u.norm(u.sub(t,n))},u.distSquared=function(t,n){return u.normSquared(u.sub(t,n))},u.sum=function(t){return q.fold(t,function(n,r){return r+n},0)},u.addAll=function(t){var n=be(t)();if(!n.hasNext())return null;var r=n.next().length;return q.fold(t,function(s,o){return u.add(o,s)},u.rep(r,0))},u.addAllMutate=function(t){for(var n=t[0],r=1,s=t.length;r<s;){var o=r++;u.addMutate(n,t[o])}},u.addMulMutate=function(t,n,r){for(var s=0,o=t.length;s<o;){var h=s++;t[h]=t[h]+n*r[h]}},u.subMulMutate=function(t,n,r){for(var s=0,o=t.length;s<o;){var h=s++;t[h]=t[h]-n*r[h]}},u.addMutate=function(t,n){for(var r=0,s=t.length;r<s;){var o=r++;t[o]=t[o]+n[o]}},u.subMutate=function(t,n){for(var r=0,s=t.length;r<s;){var o=r++;t[o]=t[o]-n[o]}},u.mulMutate=function(t,n){for(var r=0,s=n.length;r<s;){var o=r++;n[o]=n[o]*t}},u.norm=function(t){var n=u.normSquared(t);return n!=0?Math.sqrt(n):n},u.normSquared=function(t){return q.fold(t,function(n,r){return r+n*n},0)},u.rep=function(t,n){for(var r=[],s=0;s<t;)s++,r.push(n);return r},u.zeros1d=function(t){for(var n=[],r=0;r<t;)r++,n.push(0);return n},u.zeros2d=function(t,n){for(var r=[],s=0;s<t;)s++,r.push(u.zeros1d(n));return r},u.zeros3d=function(t,n,r){for(var s=[],o=0;o<t;)o++,s.push(u.zeros2d(n,r));return s},u.dot=function(t,n){for(var r=0,s=0,o=t.length;s<o;){var h=s++;r+=t[h]*n[h]}return r},u.add=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]+n[h])}return r},u.mul=function(t,n){for(var r=[],s=0,o=n.length;s<o;){var h=s++;r.push(t*n[h])}return r},u.div=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]/n)}return r},u.sub=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]-n[h])}return r},u.isZero=function(t){for(var n=0,r=t.length;n<r;){var s=n++;if(Math.abs(t[s])>tt.TOLERANCE)return!1}return!0},u.sortedSetUnion=function(t,n){for(var r=[],s=0,o=0;s<t.length||o<n.length;){if(s>=t.length){r.push(n[o]),o++;continue}else if(o>=n.length){r.push(t[s]),s++;continue}var h=t[s]-n[o];if(Math.abs(h)<tt.EPSILON){r.push(t[s]),s++,o++;continue}if(h>0){r.push(n[o]),o++;continue}r.push(t[s]),s++}return r},u.sortedSetSub=function(t,n){for(var r=[],s=0,o=0;s<t.length;){if(o>=n.length){r.push(t[s]),s++;continue}if(Math.abs(t[s]-n[o])<tt.EPSILON){s++,o++;continue}r.push(t[s]),s++}return r};var _t=f.eval.Analyze=function(){};y["verb.eval.Analyze"]=_t,_t.__name__=["verb","eval","Analyze"],_t.knotMultiplicities=function(t){for(var n=[new gn(t[0],0)],r=n[0],s=0;s<t.length;){var o=t[s];++s,Math.abs(o-r.knot)>tt.EPSILON&&(r=new gn(o,0),n.push(r)),r.inc()}return n},_t.isRationalSurfaceClosed=function(t,n){n==null&&(n=!0);var r;n?r=t.controlPoints:r=At.transpose(t.controlPoints);for(var s=0,o=r[0].length;s<o;){var h=s++,c=u.dist(K.first(r)[h],K.last(r)[h])<tt.EPSILON;if(!c)return!1}return!0},_t.rationalSurfaceClosestPoint=function(t,n){var r=_t.rationalSurfaceClosestParam(t,n);return S.rationalSurfacePoint(t,r[0],r[1])},_t.rationalSurfaceClosestParam=function(t,n){for(var r=5,s=0,o,h=1e-4,c=5e-4,v,d=t.knotsU[0],m=K.last(t.knotsU),b=t.knotsV[0],w=K.last(t.knotsV),A=_t.isRationalSurfaceClosed(t),P=_t.isRationalSurfaceClosed(t,!1),z,E=Mt.rationalSurfaceAdaptive(t,new Ke),k=1/0,T=0,B=E.points.length;T<B;){var L=T++,R=E.points[L],F=u.normSquared(u.sub(n,R));F<k&&(k=F,z=E.uvs[L])}for(var W=function(Et){return S.rationalSurfaceDerivatives(t,Et[0],Et[1],2)},D=function(Et,Bt,kt){var Rt=Bt[1][0],ie=Bt[0][1],ge=Bt[2][0],ne=Bt[0][2],$t=Bt[1][1],se=Bt[1][1],_e=u.dot(Rt,kt),xe=u.dot(ie,kt),Ne=[-_e,-xe],Ae=u.dot(Rt,Rt)+u.dot(ge,kt),Pe=u.dot(Rt,ie)+u.dot($t,kt),Me=u.dot(Rt,ie)+u.dot(se,kt),Re=u.dot(ie,ie)+u.dot(ne,kt),bn=[[Ae,Pe],[Me,Re]],en=At.solve(bn,Ne);return u.add(en,Et)};s<r;){o=W(z),v=u.sub(o[0][0],n);var V=u.norm(v),G=u.dot(o[1][0],v),J=u.norm(o[1][0])*V,$=u.dot(o[0][1],v),nt=u.norm(o[0][1])*V,st=G/J,rt=$/nt,at=V<h,et=st<c,ot=rt<c;if(at&&et&&ot)return z;var O=D(z,o,v);O[0]<d?A?O=[m-(O[0]-d),O[1]]:O=[d+tt.EPSILON,O[1]]:O[0]>m&&(A?O=[d+(O[0]-m),O[1]]:O=[m-tt.EPSILON,O[1]]),O[1]<b?P?O=[O[0],w-(O[1]-b)]:O=[O[0],b+tt.EPSILON]:O[1]>w&&(P?O=[O[0],b+(O[0]-w)]:O=[O[0],w-tt.EPSILON]);var ut=u.norm(u.mul(O[0]-z[0],o[1][0])),gt=u.norm(u.mul(O[1]-z[1],o[0][1]));if(ut+gt<h)return z;z=O,s++}return z},_t.rationalCurveClosestPoint=function(t,n){return S.rationalCurvePoint(t,_t.rationalCurveClosestParam(t,n))},_t.rationalCurveClosestParam=function(t,n){for(var r=1/0,s=0,o=Mt.rationalCurveRegularSample(t,t.controlPoints.length*t.degree,!0),h=0,c=o.length-1;h<c;){var v=h++,d=o[v][0],m=o[v+1][0],b=o[v].slice(1),w=o[v+1].slice(1),A=ce.segmentClosestPoint(n,b,w,d,m),P=u.norm(u.sub(n,A.pt));P<r&&(r=P,s=A.u)}for(var z=5,E=0,k,T=1e-4,B=5e-4,L,R=t.knots[0],F=K.last(t.knots),W=u.normSquared(u.sub(t.controlPoints[0],K.last(t.controlPoints)))<tt.EPSILON,D=s,V=function(O){return S.rationalCurveDerivatives(t,O,2)},G=function(O,ut,gt){var Et=u.dot(ut[1],gt),Bt=u.dot(ut[2],gt),kt=u.dot(ut[1],ut[1]),Rt=Bt+kt;return O-Et/Rt};E<z;){k=V(D),L=u.sub(k[0],n);var J=u.norm(L),$=u.dot(k[1],L),nt=u.norm(k[1])*J,st=$/nt,rt=J<T,at=Math.abs(st)<B;if(rt&&at)return D;var et=G(D,k,L);et<R?W?et=F-(et-R):et=R:et>F&&(W?et=R+(et-F):et=F);var ot=u.norm(u.mul(et-D,k[1]));if(ot<T)return D;D=et,E++}return D},_t.rationalCurveParamAtArcLength=function(t,n,r,s,o){if(r==null&&(r=.001),n<tt.EPSILON)return t.knots[0];var h;s!=null?h=s:h=vt.decomposeCurveIntoBeziers(t);var c=0;h[c];var v=-tt.EPSILON,d;for(o!=null?d=o:d=[];v<n&&c<h.length;){if(c<d.length?d[c]=d[c]:d[c]=_t.rationalBezierCurveArcLength(t),v+=d[c],n<v+tt.EPSILON)return _t.rationalBezierCurveParamAtArcLength(t,n,r,d[c]);c++}return-1},_t.rationalBezierCurveParamAtArcLength=function(t,n,r,s){if(n<0)return t.knots[0];var o;if(s!=null?o=s:o=_t.rationalBezierCurveArcLength(t),n>o)return K.last(t.knots);var h=t.knots[0],c=0,v=K.last(t.knots),d=o,m=0,b=0,w;for(r!=null?w=r:w=tt.TOLERANCE*2;d-c>w;)m=(h+v)/2,b=_t.rationalBezierCurveArcLength(t,m),b>n?(v=m,d=b):(h=m,c=b);return(h+v)/2},_t.rationalCurveArcLength=function(t,n,r){r==null&&(r=16),n==null?n=K.last(t.knots):n=n;for(var s=vt.decomposeCurveIntoBeziers(t),o=0,h=s[0],c=0;o<s.length&&h.knots[0]+tt.EPSILON<n;){var v=Math.min(K.last(h.knots),n);c+=_t.rationalBezierCurveArcLength(h,v,r),h=s[++o]}return c},_t.rationalBezierCurveArcLength=function(t,n,r){r==null&&(r=16);var s;n==null?s=K.last(t.knots):s=n;for(var o=(s-t.knots[0])/2,h=0,c=t.degree+r,v,d,m=0;m<c;){var b=m++;v=o*_t.Tvalues[c][b]+o+t.knots[0],d=S.rationalCurveDerivatives(t,v,1),h+=_t.Cvalues[c][b]*u.norm(d[1])}return o*h};var gn=f.eval.KnotMultiplicity=function(t,n){this.knot=t,this.mult=n};y["verb.eval.KnotMultiplicity"]=gn,gn.__name__=["verb","eval","KnotMultiplicity"],gn.prototype={inc:function(){this.mult++},__class__:gn};var me=f.eval.Check=function(){};y["verb.eval.Check"]=me,me.__name__=["verb","eval","Check"],me.isValidKnotVector=function(t,n){if(t.length==0||t.length<(n+1)*2)return!1;for(var r=K.first(t),s=0,o=n+1;s<o;){var h=s++;if(Math.abs(t[h]-r)>tt.EPSILON)return!1}r=K.last(t);for(var c=t.length-n-1,v=t.length;c<v;){var d=c++;if(Math.abs(t[d]-r)>tt.EPSILON)return!1}return me.isNonDecreasing(t)},me.isNonDecreasing=function(t){for(var n=K.first(t),r=0,s=t.length;r<s;){var o=r++;if(t[o]<n-tt.EPSILON)return!1;n=t[o]}return!0},me.isValidNurbsCurveData=function(t){if(t.controlPoints==null)throw new X("Control points array cannot be null!");if(t.degree==null)throw new X("Degree cannot be null!");if(t.degree<1)throw new X("Degree must be greater than 1!");if(t.knots==null)throw new X("Knots cannot be null!");if(t.knots.length!=t.controlPoints.length+t.degree+1)throw new X("controlPoints.length + degree + 1 must equal knots.length!");if(!me.isValidKnotVector(t.knots,t.degree))throw new X("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t},me.isValidNurbsSurfaceData=function(t){if(t.controlPoints==null)throw new X("Control points array cannot be null!");if(t.degreeU==null)throw new X("DegreeU cannot be null!");if(t.degreeV==null)throw new X("DegreeV cannot be null!");if(t.degreeU<1)throw new X("DegreeU must be greater than 1!");if(t.degreeV<1)throw new X("DegreeV must be greater than 1!");if(t.knotsU==null)throw new X("KnotsU cannot be null!");if(t.knotsV==null)throw new X("KnotsV cannot be null!");if(t.knotsU.length!=t.controlPoints.length+t.degreeU+1)throw new X("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(t.knotsV.length!=t.controlPoints[0].length+t.degreeV+1)throw new X("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!me.isValidKnotVector(t.knotsU,t.degreeU)||!me.isValidKnotVector(t.knotsV,t.degreeV))throw new X("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t};var Yt=f.eval.Divide=function(){};y["verb.eval.Divide"]=Yt,Yt.__name__=["verb","eval","Divide"],Yt.surfaceSplit=function(t,n,r){r==null&&(r=!1);var s,o,h;r?(h=t.controlPoints,s=t.knotsV,o=t.degreeV):(h=At.transpose(t.controlPoints),s=t.knotsU,o=t.degreeU);for(var c,v=[],d=0,m=o+1;d<m;)d++,v.push(n);c=v;for(var b=[],w=[],A=S.knotSpan(o,n,s),P=null,z=0;z<h.length;){var E=h[z];++z,P=vt.curveKnotRefine(new It(o,s,E),c),b.push(P.controlPoints.slice(0,A+1)),w.push(P.controlPoints.slice(A+1))}var k=P.knots.slice(0,A+o+2),T=P.knots.slice(A+1);return r?[new qt(t.degreeU,o,t.knotsU.slice(),k,b),new qt(t.degreeU,o,t.knotsU.slice(),T,w)]:(b=At.transpose(b),w=At.transpose(w),[new qt(o,t.degreeV,k,t.knotsV.slice(),b),new qt(o,t.degreeV,T,t.knotsV.slice(),w)])},Yt.curveSplit=function(t,n){var r=t.degree;t.controlPoints;for(var s=t.knots,o,h=[],c=0,v=r+1;c<v;)c++,h.push(n);o=h;var d=vt.curveKnotRefine(t,o),m=S.knotSpan(r,n,s),b=d.knots.slice(0,m+r+2),w=d.knots.slice(m+1),A=d.controlPoints.slice(0,m+1),P=d.controlPoints.slice(m+1);return[new It(r,b,A),new It(r,w,P)]},Yt.rationalCurveByEqualArcLength=function(t,n){var r=_t.rationalCurveArcLength(t),s=r/n;return Yt.rationalCurveByArcLength(t,s)},Yt.rationalCurveByArcLength=function(t,n){var r=vt.decomposeCurveIntoBeziers(t),s=r.map(function(A){return _t.rationalBezierCurveArcLength(A)}),o=u.sum(s),h=[new pn(t.knots[0],0)];if(n>o)return h;for(var c=n,v=0,d=c,m=0,b=0,w;v<r.length;){for(m+=s[v];d<m+tt.EPSILON;)w=_t.rationalBezierCurveParamAtArcLength(r[v],d-b,tt.TOLERANCE,s[v]),h.push(new pn(w,d)),d+=c;b+=s[v],v++}return h};var pn=f.eval.CurveLengthSample=function(t,n){this.u=t,this.len=n};y["verb.eval.CurveLengthSample"]=pn,pn.__name__=["verb","eval","CurveLengthSample"],pn.prototype={__class__:pn};var S=f.eval.Eval=function(){};y["verb.eval.Eval"]=S,S.__name__=["verb","eval","Eval"],S.rationalCurveTangent=function(t,n){var r=S.rationalCurveDerivatives(t,n,1);return r[1]},S.rationalSurfaceNormal=function(t,n,r){var s=S.rationalSurfaceDerivatives(t,n,r,1);return u.cross(s[1][0],s[0][1])},S.rationalSurfaceDerivatives=function(t,n,r,s){s==null&&(s=1);for(var o=S.surfaceDerivatives(t,n,r,s),h=S.rational2d(o),c=S.weight2d(o),v=[],d=h[0][0].length,m=0,b=s+1;m<b;){var w=m++;v.push([]);for(var A=0,P=s-w+1;A<P;){for(var z=A++,E=h[w][z],k=1,T=z+1;k<T;){var B=k++;u.subMulMutate(E,zt.get(z,B)*c[0][B],v[w][z-B])}for(var L=1,R=w+1;L<R;){var F=L++;u.subMulMutate(E,zt.get(w,F)*c[F][0],v[w-F][z]);for(var W=u.zeros1d(d),D=1,V=z+1;D<V;){var G=D++;u.addMulMutate(W,zt.get(z,G)*c[F][G],v[w-F][z-G])}u.subMulMutate(E,zt.get(w,F),W)}u.mulMutate(1/c[0][0],E),v[w].push(E)}}return v},S.rationalSurfacePoint=function(t,n,r){return S.dehomogenize(S.surfacePoint(t,n,r))},S.rationalCurveDerivatives=function(t,n,r){r==null&&(r=1);for(var s=S.curveDerivatives(t,n,r),o=S.rational1d(s),h=S.weight1d(s),c=[],v=0,d=r+1;v<d;){for(var m=v++,b=o[m],w=1,A=m+1;w<A;){var P=w++;u.subMulMutate(b,zt.get(m,P)*h[P],c[m-P])}u.mulMutate(1/h[0],b),c.push(b)}return c},S.rationalCurvePoint=function(t,n){return S.dehomogenize(S.curvePoint(t,n))},S.surfaceDerivatives=function(t,n,r,s){var o=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2;return S.surfaceDerivativesGivenNM(o,h,t,n,r,s)},S.surfaceDerivativesGivenNM=function(t,n,r,s,o,h){var c=r.degreeU,v=r.degreeV,d=r.controlPoints,m=r.knotsU,b=r.knotsV;if(!S.areValidRelations(c,d.length,m.length)||!S.areValidRelations(v,d[0].length,b.length))throw new X("Invalid relations between control points, knot vector, and n");var w=d[0][0].length,A;h<c?A=h:A=c;var P;h<v?P=h:P=v;for(var z=u.zeros3d(h+1,h+1,w),E=S.knotSpanGivenN(t,c,s,m),k=S.knotSpanGivenN(n,v,o,b),T=S.derivativeBasisFunctionsGivenNI(E,s,c,t,m),B=S.derivativeBasisFunctionsGivenNI(k,o,v,n,b),L=u.zeros2d(v+1,w),R=0,F=0,W=A+1;F<W;){for(var D=F++,V=0,G=v+1;V<G;){var J=V++;L[J]=u.zeros1d(w);for(var $=0,nt=c+1;$<nt;){var st=$++;u.addMulMutate(L[J],T[D][st],d[E-c+st][k-v+J])}}var rt=h-D;rt<P?R=rt:R=P;for(var at=0,et=R+1;at<et;){var ot=at++;z[D][ot]=u.zeros1d(w);for(var O=0,ut=v+1;O<ut;){var gt=O++;u.addMulMutate(z[D][ot],B[ot][gt],L[gt])}}}return z},S.surfacePoint=function(t,n,r){var s=t.knotsU.length-t.degreeU-2,o=t.knotsV.length-t.degreeV-2;return S.surfacePointGivenNM(s,o,t,n,r)},S.surfacePointGivenNM=function(t,n,r,s,o){var h=r.degreeU,c=r.degreeV,v=r.controlPoints,d=r.knotsU,m=r.knotsV;if(!S.areValidRelations(h,v.length,d.length)||!S.areValidRelations(c,v[0].length,m.length))throw new X("Invalid relations between control points, knot vector, and n");for(var b=v[0][0].length,w=S.knotSpanGivenN(t,h,s,d),A=S.knotSpanGivenN(n,c,o,m),P=S.basisFunctionsGivenKnotSpanIndex(w,s,h,d),z=S.basisFunctionsGivenKnotSpanIndex(A,o,c,m),E=w-h,k=A,T=u.zeros1d(b),B=u.zeros1d(b),L=0,R=c+1;L<R;){var F=L++;B=u.zeros1d(b),k=A-c+F;for(var W=0,D=h+1;W<D;){var V=W++;u.addMulMutate(B,P[V],v[E+V][k])}u.addMulMutate(T,z[F],B)}return T},S.curveRegularSamplePoints=function(t,n){for(var r=S.curveDerivatives(t,t.knots[0],t.degree),s=1/n,o=s*s,h=r[0],c=u.mul(s,r[1]),v=u.mul(o*.5,r[2]),d=u.mul(o*s*.5,r[3]),m=u.add(v,v),b=u.add(d,d),w=u.mul(.3333333333333333,d),A=[],P=0,z=n+1;P<z;)P++,A.push(S.dehomogenize(h)),u.addAllMutate([h,c,v,w]),u.addAllMutate([c,m,d]),u.addAllMutate([m,b]),u.addAllMutate([v,d]);return A},S.curveRegularSamplePoints2=function(t,n){for(var r=S.curveDerivatives(t,t.knots[0],t.degree),s=1/n,o=s*s,h=r[0],c=u.mul(s,r[1]),v=u.mul(o*.5,r[2]),d=u.mul(o*s*.5,r[3]),m=u.add(v,v),b=u.add(d,d),w=u.mul(.3333333333333333,d),A=[],P=0,z=n+1;P<z;)P++,A.push(S.dehomogenize(h)),u.addAllMutate([h,c,v,w]),u.addAllMutate([c,m,d]),u.addAllMutate([m,b]),u.addAllMutate([v,d]);return A},S.rationalSurfaceRegularSampleDerivatives=function(t,n,r,s){for(var o=S.surfaceRegularSampleDerivatives(t,n,r,s),h=[],c=n+1,v=r+1,d=s+1,m=0;m<c;){var b=m++,w=[];h.push(w);for(var A=0;A<v;){for(var P=A++,z=o[b][P],E=S.rational2d(z),k=S.weight2d(z),T=[],B=E[0][0].length,L=0;L<d;){var R=L++;T.push([]);for(var F=0,W=d-R;F<W;){for(var D=F++,V=E[R][D],G=1,J=D+1;G<J;){var $=G++;u.subMulMutate(V,zt.get(D,$)*k[0][$],T[R][D-$])}for(var nt=1,st=R+1;nt<st;){var rt=nt++;u.subMulMutate(V,zt.get(R,rt)*k[rt][0],T[R-rt][D]);for(var at=u.zeros1d(B),et=1,ot=D+1;et<ot;){var O=et++;u.addMulMutate(at,zt.get(D,O)*k[rt][O],T[R-rt][D-O])}u.subMulMutate(V,zt.get(R,rt),at)}u.mulMutate(1/k[0][0],V),T[R].push(V)}}w.push(T)}}return h},S.surfaceRegularSampleDerivatives=function(t,n,r,s){var o=t.degreeU,h=t.degreeV,c=t.controlPoints,v=t.knotsU,d=t.knotsV,m=c[0][0].length;(K.last(v)-v[0])/n,(K.last(d)-d[0])/r;for(var b=S.regularlySpacedDerivativeBasisFunctions(o,v,n),w=b.item0,A=b.item1,P=S.regularlySpacedDerivativeBasisFunctions(h,d,r),z=P.item0,E=P.item1,k=[],T=n+1,B=r+1,L=0;L<T;){var R=L++,F=[];k.push(F);for(var W=0;W<B;){var D=W++;F.push(S.surfaceDerivativesGivenBasesKnotSpans(o,h,c,w[R],z[D],A[R],E[D],m,s))}}return k},S.rationalSurfaceRegularSamplePoints=function(t,n,r){return S.dehomogenize2d(S.surfaceRegularSamplePoints(t,n,r))},S.surfaceRegularSamplePoints=function(t,n,r){var s=t.degreeU,o=t.degreeV,h=t.controlPoints,c=t.knotsU,v=t.knotsV,d=h[0][0].length;(K.last(c)-c[0])/n,(K.last(v)-v[0])/r;for(var m=S.regularlySpacedBasisFunctions(s,c,n),b=m.item0,w=m.item1,A=S.regularlySpacedBasisFunctions(o,v,r),P=A.item0,z=A.item1,E=[],k=n+1,T=r+1,B=0;B<k;){var L=B++,R=[];E.push(R);for(var F=0;F<T;){var W=F++;R.push(S.surfacePointGivenBasesKnotSpans(s,o,h,b[L],P[W],w[L],z[W],d))}}return E},S.regularlySpacedBasisFunctions=function(t,n,r){for(var s=n.length-t-2,o=(K.last(n)-n[0])/r,h=[],c=[],v=n[0],d=S.knotSpanGivenN(s,t,v,n),m=r+1,b=0;b<m;){for(b++;v>=n[d+1];)d++;c.push(d),h.push(S.basisFunctionsGivenKnotSpanIndex(d,v,t,n)),v+=o}return new Gt(c,h)},S.regularlySpacedDerivativeBasisFunctions=function(t,n,r){for(var s=n.length-t-2,o=(K.last(n)-n[0])/r,h=[],c=[],v=n[0],d=S.knotSpanGivenN(s,t,v,n),m=r+1,b=0;b<m;){for(b++;v>=n[d+1];)d++;c.push(d),h.push(S.derivativeBasisFunctionsGivenNI(d,v,t,s,n)),v+=o}return new Gt(c,h)},S.surfacePointGivenBasesKnotSpans=function(t,n,r,s,o,h,c,v){for(var d=u.zeros1d(v),m,b=s-t,w=o-n,A=0,P=n+1;A<P;){var z=A++;m=u.zeros1d(v);for(var E=0,k=t+1;E<k;){var T=E++;u.addMulMutate(m,h[T],r[b+T][w])}w++,u.addMulMutate(d,c[z],m)}return d},S.surfaceDerivativesGivenBasesKnotSpans=function(t,n,r,s,o,h,c,v,d){var m=r[0][0].length,b;d<t?b=d:b=t;var w;d<n?w=d:w=n;for(var A=u.zeros3d(b+1,w+1,m),P=u.zeros2d(n+1,m),z=0,E=0,k=b+1;E<k;){for(var T=E++,B=0,L=n+1;B<L;){var R=B++;P[R]=u.zeros1d(m);for(var F=0,W=t+1;F<W;){var D=F++;u.addMulMutate(P[R],h[T][D],r[s-t+D][o-n+R])}}var V=d-T;V<w?z=V:z=w;for(var G=0,J=z+1;G<J;){var $=G++;A[T][$]=u.zeros1d(m);for(var nt=0,st=n+1;nt<st;){var rt=nt++;u.addMulMutate(A[T][$],c[$][rt],P[rt])}}}return A},S.curveDerivatives=function(t,n,r){var s=t.knots.length-t.degree-2;return S.curveDerivativesGivenN(s,t,n,r)},S.curveDerivativesGivenN=function(t,n,r,s){var o=n.degree,h=n.controlPoints,c=n.knots;if(!S.areValidRelations(o,h.length,c.length))throw new X("Invalid relations between control points, knot vector, and n");var v=h[0].length,d;s<o?d=s:d=o;for(var m=u.zeros2d(s+1,v),b=S.knotSpanGivenN(t,o,r,c),w=S.derivativeBasisFunctionsGivenNI(b,r,o,d,c),A=0,P=d+1;A<P;)for(var z=A++,E=0,k=o+1;E<k;){var T=E++;u.addMulMutate(m[z],w[z][T],h[b-o+T])}return m},S.curvePoint=function(t,n){var r=t.knots.length-t.degree-2;return S.curvePointGivenN(r,t,n)},S.areValidRelations=function(t,n,r){return n+t+1-r==0},S.curvePointGivenN=function(t,n,r){var s=n.degree,o=n.controlPoints,h=n.knots;if(!S.areValidRelations(s,o.length,h.length))throw new X("Invalid relations between control points, knot Array, and n");for(var c=S.knotSpanGivenN(t,s,r,h),v=S.basisFunctionsGivenKnotSpanIndex(c,r,s,h),d=u.zeros1d(o[0].length),m=0,b=s+1;m<b;){var w=m++;u.addMulMutate(d,v[w],o[c-s+w])}return d},S.volumePoint=function(t,n,r,s){var o=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2,c=t.knotsW.length-t.degreeW-2;return S.volumePointGivenNML(t,o,h,c,n,r,s)},S.volumePointGivenNML=function(t,n,r,s,o,h,c){if(!S.areValidRelations(t.degreeU,t.controlPoints.length,t.knotsU.length)||!S.areValidRelations(t.degreeV,t.controlPoints[0].length,t.knotsV.length)||!S.areValidRelations(t.degreeW,t.controlPoints[0][0].length,t.knotsW.length))throw new X("Invalid relations between control points and knot vector");for(var v=t.controlPoints,d=t.degreeU,m=t.degreeV,b=t.degreeW,w=t.knotsU,A=t.knotsV,P=t.knotsW,z=v[0][0][0].length,E=S.knotSpanGivenN(n,d,o,w),k=S.knotSpanGivenN(r,m,h,A),T=S.knotSpanGivenN(s,b,c,P),B=S.basisFunctionsGivenKnotSpanIndex(E,o,d,w),L=S.basisFunctionsGivenKnotSpanIndex(k,h,m,A),R=S.basisFunctionsGivenKnotSpanIndex(T,c,b,P),F=E-d,W=u.zeros1d(z),D=u.zeros1d(z),V=u.zeros1d(z),G=0,J=b+1;G<J;){var $=G++;V=u.zeros1d(z);for(var nt=T-b+$,st=0,rt=m+1;st<rt;){var at=st++;D=u.zeros1d(z);for(var et=k-m+at,ot=0,O=d+1;ot<O;){var ut=ot++;u.addMulMutate(D,B[ut],v[F+ut][et][nt])}u.addMulMutate(V,L[at],D)}u.addMulMutate(W,R[$],V)}return W},S.derivativeBasisFunctions=function(t,n,r){var s=S.knotSpan(n,t,r),o=r.length-1,h=o-n-1;return S.derivativeBasisFunctionsGivenNI(s,t,n,h,r)},S.derivativeBasisFunctionsGivenNI=function(t,n,r,s,o){var h=u.zeros2d(r+1,r+1),c=u.zeros1d(r+1),v=u.zeros1d(r+1),d=0,m=0;h[0][0]=1;for(var b=1,w=r+1;b<w;){var A=b++;c[A]=n-o[t+1-A],v[A]=o[t+A]-n,d=0;for(var P=0;P<A;){var z=P++;h[A][z]=v[z+1]+c[A-z],m=h[z][A-1]/h[A][z],h[z][A]=d+v[z+1]*m,d=c[A-z]*m}h[A][A]=d}for(var E=u.zeros2d(s+1,r+1),k=u.zeros2d(2,r+1),T=0,B=1,L=0,R=0,F=0,W=0,D=0,V=0,G=r+1;V<G;){var J=V++;E[0][J]=h[J][r]}for(var $=0,nt=r+1;$<nt;){var st=$++;T=0,B=1,k[0][0]=1;for(var rt=1,at=s+1;rt<at;){var et=rt++;L=0,R=st-et,F=r-et,st>=et&&(k[B][0]=k[T][0]/h[F+1][R],L=k[B][0]*h[R][F]),R>=-1?W=1:W=-R,st-1<=F?D=et-1:D=r-st;for(var ot=W,O=D+1;ot<O;){var ut=ot++;k[B][ut]=(k[T][ut]-k[T][ut-1])/h[F+1][R+ut],L+=k[B][ut]*h[R+ut][F]}st<=F&&(k[B][et]=-k[T][et-1]/h[F+1][st],L+=k[B][et]*h[st][F]),E[et][st]=L;var gt=T;T=B,B=gt}}for(var Et=r,Bt=1,kt=s+1;Bt<kt;){for(var Rt=Bt++,ie=0,ge=r+1;ie<ge;){var ne=ie++;E[Rt][ne]*=Et}Et*=r-Rt}return E},S.basisFunctions=function(t,n,r){var s=S.knotSpan(n,t,r);return S.basisFunctionsGivenKnotSpanIndex(s,t,n,r)},S.basisFunctionsGivenKnotSpanIndex=function(t,n,r,s){var o=u.zeros1d(r+1),h=u.zeros1d(r+1),c=u.zeros1d(r+1),v=0,d=0;o[0]=1;for(var m=1,b=r+1;m<b;){var w=m++;h[w]=n-s[t+1-w],c[w]=s[t+w]-n,v=0;for(var A=0;A<w;){var P=A++;d=o[P]/(c[P+1]+h[w-P]),o[P]=v+c[P+1]*d,v=h[w-P]*d}o[w]=v}return o},S.knotSpan=function(t,n,r){return S.knotSpanGivenN(r.length-t-2,t,n,r)},S.knotSpanGivenN=function(t,n,r,s){if(r>s[t+1]-tt.EPSILON)return t;if(r<s[n]+tt.EPSILON)return n;for(var o=n,h=t+1,c=Math.floor((o+h)/2);r<s[c]||r>=s[c+1];)r<s[c]?h=c:o=c,c=Math.floor((o+h)/2);return c},S.dehomogenize=function(t){for(var n=t.length,r=[],s=t[n-1],o=t.length-1,h=0;h<o;){var c=h++;r.push(t[c]/s)}return r},S.rational1d=function(t){var n=t[0].length-1;return t.map(function(r){return r.slice(0,n)})},S.rational2d=function(t){return t.map(S.rational1d)},S.weight1d=function(t){var n=t[0].length-1;return t.map(function(r){return r[n]})},S.weight2d=function(t){return t.map(S.weight1d)},S.dehomogenize1d=function(t){return t.map(S.dehomogenize)},S.dehomogenize2d=function(t){return t.map(S.dehomogenize1d)},S.homogenize1d=function(t,n){var r=t.length,s=t[0].length,o=[],h=0,c=[],v;n!=null?v=n:v=u.rep(t.length,1);for(var d=0;d<r;){var m=d++,b=[];c=t[m],h=v[m];for(var w=0;w<s;){var A=w++;b.push(c[A]*h)}b.push(h),o.push(b)}return o},S.homogenize2d=function(t,n){var r=t.length,s=[],o;if(n!=null)o=n;else{for(var h=[],c=0;c<r;)c++,h.push(u.rep(t[0].length,1));o=h}for(var v=0;v<r;){var d=v++;s.push(S.homogenize1d(t[d],o[d]))}return s};var it=f.eval.Intersect=function(){};y["verb.eval.Intersect"]=it,it.__name__=["verb","eval","Intersect"],it.surfaces=function(t,n,r){var s=Mt.rationalSurfaceAdaptive(t),o=Mt.rationalSurfaceAdaptive(n),h=it.meshes(s,o),c=h.map(function(v){return v.map(function(d){return it.surfacesAtPointWithEstimate(t,n,d.uv0,d.uv1,r)})});return c.map(function(v){return ht.rationalInterpCurve(v.map(function(d){return d.point}),3)})},it.surfacesAtPointWithEstimate=function(t,n,r,s,o){var h,c,v,d,m,b,w,A,P,z,E,k,T,B=5,L=0;do{if(h=S.rationalSurfaceDerivatives(t,r[0],r[1],1),c=h[0][0],d=h[1][0],m=h[0][1],v=u.normalized(u.cross(d,m)),b=u.dot(v,c),w=S.rationalSurfaceDerivatives(n,s[0],s[1],1),A=w[0][0],z=w[1][0],E=w[0][1],P=u.normalized(u.cross(z,E)),k=u.dot(P,A),T=u.distSquared(c,A),T<o*o)break;var R=u.normalized(u.cross(v,P)),F=u.dot(R,c),W=it.threePlanes(v,b,P,k,R,F);if(W==null)throw new X("panic!");var D=u.sub(W,c),V=u.sub(W,A),G=u.cross(d,v),J=u.cross(m,v),$=u.cross(z,P),nt=u.cross(E,P),st=u.dot(J,D)/u.dot(J,d),rt=u.dot(G,D)/u.dot(G,m),at=u.dot(nt,V)/u.dot(nt,z),et=u.dot($,V)/u.dot($,E);r=u.add([st,rt],r),s=u.add([at,et],s),L++}while(L<B);return new Fn(r,s,c,T)},it.meshes=function(t,n,r,s){r==null&&(r=new Ie(t)),s==null&&(s=new Ie(n));var o=it.boundingBoxTrees(r,s,0),h=K.unique(o.map(function(c){return it.triangles(t,c.item0,n,c.item1)}).filter(function(c){return c!=null}).filter(function(c){return u.distSquared(c.min.point,c.max.point)>tt.EPSILON}),function(c,v){var d=u.sub(c.min.uv0,v.min.uv0),m=u.dot(d,d),b=u.sub(c.max.uv0,v.max.uv0),w=u.dot(b,b),A=u.sub(c.min.uv0,v.max.uv0),P=u.dot(A,A),z=u.sub(c.max.uv0,v.min.uv0),E=u.dot(z,z);return m<tt.EPSILON&&w<tt.EPSILON||P<tt.EPSILON&&E<tt.EPSILON});return it.makeMeshIntersectionPolylines(h)},it.meshSlices=function(t,n,r,s){for(var o=new Ge(t),h=o.boundingBox(),c=h.min[0],v=h.min[1],d=h.max[0],m=h.max[1],b=u.span(n,r,s),w=[],A=0;A<b.length;){var P=b[A];++A;var z=[[c,v,P],[d,v,P],[d,m,P],[c,m,P]],E=[[0,0],[1,0],[1,1],[0,1]],k=[[0,1,2],[0,2,3]],T=new ye(k,z,null,E);w.push(it.meshes(t,T,o))}return w},it.makeMeshIntersectionPolylines=function(t){if(t.length==0)return[];for(var n=0;n<t.length;){var r=t[n];++n,r.max.opp=r.min,r.min.opp=r.max}for(var s=it.kdTreeFromSegments(t),o=[],h=0;h<t.length;){var c=t[h];++h,o.push(c.min),o.push(c.max)}for(var v=0;v<o.length;){var d=o[v];if(++v,d.adj==null){var m=it.lookupAdjacentSegment(d,s,t.length);m!=null&&m.adj==null&&(d.adj=m,m.adj=d)}}var b=o.filter(function(B){return B.adj==null});b.length==0&&(b=o);for(var w=[],A=0,P=!1;b.length!=0;){var z=b.pop();if(!z.visited){for(var E=[],k=z;k!=null&&!(k.visited||(k.visited=!0,k.opp.visited=!0,E.push(k),A+=2,k=k.opp.adj,k==z)););E.length>0&&(E.push(E[E.length-1].opp),w.push(E))}if(b.length==0&&o.length>0&&(P||A<o.length)){P=!0;var T=o.pop();b.push(T)}}return w},it.kdTreeFromSegments=function(t){for(var n=[],r=0;r<t.length;){var s=t[r];++r,n.push(new dn(s.min.point,s.min)),n.push(new dn(s.max.point,s.max))}return new qn(n,u.distSquared)},it.lookupAdjacentSegment=function(t,n,r){var s=n.nearest(t.point,r,tt.EPSILON).filter(function(o){return t!=o.item0.obj}).map(function(o){return o.item0.obj});return s.length==1?s[0]:null},it.curveAndSurface=function(t,n,r,s,o){r==null&&(r=.001),s!=null?s=s:s=new ke(t),o!=null?o=o:o=new qe(n);var h=it.boundingBoxTrees(s,o,r);return K.unique(h.map(function(c){var v=c.item0,d=c.item1,m=K.first(v.knots),b=K.last(v.knots),w=(m+b)/2,A=K.first(d.knotsU),P=K.last(d.knotsU),z=K.first(d.knotsV),E=K.last(d.knotsV),k=[(A+P)/2,(z+E)/2];return it.curveAndSurfaceWithEstimate(v,d,[w].concat(k),r)}).filter(function(c){return u.distSquared(c.curvePoint,c.surfacePoint)<r*r}),function(c,v){return Math.abs(c.u-v.u)<.5*r})},it.curveAndSurfaceWithEstimate=function(t,n,r,s){s==null&&(s=.001);var o=function(d){var m=S.rationalCurvePoint(t,d[0]),b=S.rationalSurfacePoint(n,d[1],d[2]),w=u.sub(m,b);return u.dot(w,w)},h=function(d){var m=S.rationalCurveDerivatives(t,d[0],1),b=S.rationalSurfaceDerivatives(n,d[1],d[2],1),w=u.sub(b[0][0],m[0]),A=u.mul(-1,m[1]),P=b[1][0],z=b[0][1];return[2*u.dot(A,w),2*u.dot(P,w),2*u.dot(z,w)]},c=we.uncmin(o,r,s*s,h),v=c.solution;return new Vn(v[0],[v[1],v[2]],S.rationalCurvePoint(t,v[0]),S.rationalSurfacePoint(n,v[1],v[2]))},it.polylineAndMesh=function(t,n,r){for(var s=it.boundingBoxTrees(new Ee(t),new Ie(n),r),o=[],h=0;h<s.length;){var c=s[h];++h;var v=c.item0,d=c.item1,m=it.segmentWithTriangle(t.points[v],t.points[v+1],n.points,n.faces[d]);if(m!=null){var b=m.point,w=u.lerp(m.p,[t.params[v]],[t.params[v+1]])[0],A=Kt.triangleUVFromPoint(n,d,b);o.push(new Dn(b,w,A,v,d))}}return o},it.boundingBoxTrees=function(t,n,r){r==null&&(r=1e-9);var s=[],o=[];s.push(t),o.push(n);for(var h=[];s.length>0;){var c=s.pop(),v=o.pop();if(!(c.empty()||v.empty())&&c.boundingBox().intersects(v.boundingBox(),r)){var d=c.indivisible(r),m=v.indivisible(r);if(d&&m){h.push(new Gt(c.yield(),v.yield()));continue}else if(d&&!m){var b=v.split();s.push(c),o.push(b.item1),s.push(c),o.push(b.item0);continue}else if(!d&&m){var w=c.split();s.push(w.item1),o.push(v),s.push(w.item0),o.push(v);continue}var A=c.split(),P=v.split();s.push(A.item1),o.push(P.item1),s.push(A.item1),o.push(P.item0),s.push(A.item0),o.push(P.item1),s.push(A.item0),o.push(P.item0)}}return h},it.curves=function(t,n,r){var s=it.boundingBoxTrees(new ke(t),new ke(n),0);return K.unique(s.map(function(o){return it.curvesWithEstimate(t,n,K.first(o.item0.knots),K.first(o.item1.knots),r)}).filter(function(o){return u.distSquared(o.point0,o.point1)<r}),function(o,h){return Math.abs(o.u0-h.u0)<r*5})},it.curvesWithEstimate=function(t,n,r,s,o){var h=function(A){var P=S.rationalCurvePoint(t,A[0]),z=S.rationalCurvePoint(n,A[1]),E=u.sub(P,z);return u.dot(E,E)},c=function(A){var P=S.rationalCurveDerivatives(t,A[0],1),z=S.rationalCurveDerivatives(n,A[1],1),E=u.sub(P[0],z[0]),k=P[1],T=u.mul(-1,z[1]);return[2*u.dot(k,E),2*u.dot(T,E)]},v=we.uncmin(h,[r,s],o*o,c),d=v.solution[0],m=v.solution[1],b=S.rationalCurvePoint(t,d),w=S.rationalCurvePoint(n,m);return new $e(b,w,d,m)},it.triangles=function(t,n,r,s){var o=t.faces[n],h=r.faces[s],c=Kt.getTriangleNorm(t.points,o),v=Kt.getTriangleNorm(r.points,h),d=t.points[o[0]],m=r.points[h[0]],b=it.planes(d,c,m,v);if(b==null)return null;var w=it.clipRayInCoplanarTriangle(b,t,n);if(w==null)return null;var A=it.clipRayInCoplanarTriangle(b,r,s);if(A==null)return null;var P=it.mergeTriangleClipIntervals(w,A,t,n,r,s);return P==null?null:new re(new Oe(P.min.uv0,P.min.uv1,P.min.point,n,s),new Oe(P.max.uv0,P.max.uv1,P.max.point,n,s))},it.clipRayInCoplanarTriangle=function(t,n,r){for(var s=n.faces[r],o=[n.points[s[0]],n.points[s[1]],n.points[s[2]]],h=[n.uvs[s[0]],n.uvs[s[1]],n.uvs[s[2]]],c=[u.sub(h[1],h[0]),u.sub(h[2],h[1]),u.sub(h[0],h[2])],v=[u.sub(o[1],o[0]),u.sub(o[2],o[1]),u.sub(o[0],o[2])],d=v.map(u.normalized),m=v.map(u.norm),b=null,w=null,A=0;A<3;){var P=A++,z=o[P],E=d[P],k=it.rays(z,E,t.origin,t.dir);if(k!=null){var T=k.u0,B=k.u1;T<-tt.EPSILON||T>m[P]+tt.EPSILON||((b==null||B<b.u)&&(b=new _n(B,u.onRay(t.origin,t.dir,B),u.onRay(h[P],c[P],T/m[P]))),(w==null||B>w.u)&&(w=new _n(B,u.onRay(t.origin,t.dir,B),u.onRay(h[P],c[P],T/m[P]))))}}return w==null||b==null?null:new re(b,w)},it.mergeTriangleClipIntervals=function(t,n,r,s,o,h){if(n.min.u>t.max.u+tt.EPSILON||t.min.u>n.max.u+tt.EPSILON)return null;var c;t.min.u>n.min.u?c=new Gt(t.min,0):c=new Gt(n.min,1);var v;t.max.u<n.max.u?v=new Gt(t.max,0):v=new Gt(n.max,1);var d=new re(new Oe(null,null,c.item0.point,s,h),new Oe(null,null,v.item0.point,s,h));return c.item1==0?(d.min.uv0=c.item0.uv,d.min.uv1=Kt.triangleUVFromPoint(o,h,c.item0.point)):(d.min.uv0=Kt.triangleUVFromPoint(r,s,c.item0.point),d.min.uv1=c.item0.uv),v.item1==0?(d.max.uv0=v.item0.uv,d.max.uv1=Kt.triangleUVFromPoint(o,h,v.item0.point)):(d.max.uv0=Kt.triangleUVFromPoint(r,s,v.item0.point),d.max.uv1=v.item0.uv),d},it.planes=function(t,n,r,s){var o=u.cross(n,s);if(u.dot(o,o)<tt.EPSILON)return null;var h=0,c=Math.abs(o[0]),v=Math.abs(o[1]),d=Math.abs(o[2]);v>c&&(h=1,c=v),d>c&&(h=2,c=d);var m,b,w,A;h==0?(m=n[1],b=n[2],w=s[1],A=s[2]):h==1?(m=n[0],b=n[2],w=s[0],A=s[2]):(m=n[0],b=n[1],w=s[0],A=s[1]);var P=-u.dot(t,n),z=-u.dot(r,s),E=m*A-b*w,k=(b*z-P*A)/E,T=(P*w-m*z)/E,B;return h==0?B=[0,k,T]:h==1?B=[k,0,T]:B=[k,T,0],new vn(B,u.normalized(o))},it.threePlanes=function(t,n,r,s,o,h){var c=u.cross(r,o),v=u.dot(t,c);if(Math.abs(v)<tt.EPSILON)return null;var d=u.sub(u.mul(h,r),u.mul(s,o)),m=u.add(u.mul(n,c),u.cross(t,d));return u.mul(1/v,m)},it.polylines=function(t,n,r){for(var s=it.boundingBoxTrees(new Ee(t),new Ee(n),r),o=[],h=0;h<s.length;){var c=s[h];++h;var v=c.item0,d=c.item1,m=it.segments(t.points[v],t.points[v+1],n.points[d],n.points[d+1],r);m!=null&&(m.u0=u.lerp(m.u0,[t.params[v]],[t.params[v+1]])[0],m.u1=u.lerp(m.u1,[n.params[d]],[n.params[d+1]])[0],o.push(m))}return o},it.segments=function(t,n,r,s,o){var h=u.sub(n,t),c=Math.sqrt(u.dot(h,h)),v=u.mul(1/c,h),d=u.sub(s,r),m=Math.sqrt(u.dot(d,d)),b=u.mul(1/m,d),w=it.rays(t,v,r,b);if(w!=null){var A=Math.min(Math.max(0,w.u0/c),1),P=Math.min(Math.max(0,w.u1/m),1),z=u.onRay(t,h,A),E=u.onRay(r,d,P),k=u.distSquared(z,E);if(k<o*o)return new $e(z,E,A,P)}return null},it.rays=function(t,n,r,s){var o=u.dot(n,s),h=u.dot(n,r),c=u.dot(n,t),v=u.dot(s,r),d=u.dot(s,t),m=u.dot(n,n),b=u.dot(s,s),w=m*b-o*o;if(Math.abs(w)<tt.EPSILON)return null;var A=o*(h-c)-m*(v-d),P=A/w,z=(h-c+P*o)/m,E=u.onRay(t,n,z),k=u.onRay(r,s,P);return new $e(E,k,z,P)},it.segmentWithTriangle=function(t,n,r,s){var o=r[s[0]],h=r[s[1]],c=r[s[2]],v=u.sub(h,o),d=u.sub(c,o),m=u.cross(v,d),b=u.sub(n,t),w=u.sub(t,o),A=-u.dot(m,w),P=u.dot(m,b);if(Math.abs(P)<tt.EPSILON)return null;var z=A/P;if(z<0||z>1)return null;var E=u.add(t,u.mul(z,b)),k=u.dot(v,d),T=u.dot(v,v),B=u.dot(d,d),L=u.sub(E,o),R=u.dot(L,v),F=u.dot(L,d),W=k*k-T*B;if(Math.abs(W)<tt.EPSILON)return null;var D=(k*F-B*R)/W,V=(k*R-T*F)/W;return D>1+tt.EPSILON||V>1+tt.EPSILON||V<-tt.EPSILON||D<-tt.EPSILON||D+V>1+tt.EPSILON?null:new On(E,D,V,z)},it.segmentAndPlane=function(t,n,r,s){var o=u.dot(s,u.sub(n,t));if(Math.abs(o)<tt.EPSILON)return null;var h=u.dot(s,u.sub(r,t)),c=h/o;return c>1+tt.EPSILON||c<-tt.EPSILON?null:{p:c}};var ht=f.eval.Make=function(){};y["verb.eval.Make"]=ht,ht.__name__=["verb","eval","Make"],ht.rationalTranslationalSurface=function(t,n){for(var r=S.rationalCurvePoint(n,K.first(n.knots)),s=K.first(n.knots),o=K.last(n.knots),h=2*n.controlPoints.length,c=(o-s)/(h-1),v=[],d=0;d<h;){var m=d++,b=u.sub(S.rationalCurvePoint(n,s+m*c),r),w=vt.rationalCurveTransform(t,[[1,0,0,b[0]],[0,1,0,b[1]],[0,0,1,b[2]],[0,0,0,1]]);v.push(w)}return ht.loftedSurface(v)},ht.surfaceBoundaryCurves=function(t){var n=ht.surfaceIsocurve(t,K.first(t.knotsU),!1),r=ht.surfaceIsocurve(t,K.last(t.knotsU),!1),s=ht.surfaceIsocurve(t,K.first(t.knotsV),!0),o=ht.surfaceIsocurve(t,K.last(t.knotsV),!0);return[n,r,s,o]},ht.surfaceIsocurve=function(t,n,r){r==null&&(r=!1);var s;r?s=t.knotsV:s=t.knotsU;var o;r?o=t.degreeV:o=t.degreeU;for(var h=_t.knotMultiplicities(s),c=-1,v=0,d=h.length;v<d;){var m=v++;if(Math.abs(n-h[m].knot)<tt.EPSILON){c=m;break}}var b=o+1;c>=0&&(b=b-h[c].mult);var w;b>0?w=vt.surfaceKnotRefine(t,u.rep(b,n),r):w=t;var A=S.knotSpan(o,n,s);return Math.abs(n-K.first(s))<tt.EPSILON?A=0:Math.abs(n-K.last(s))<tt.EPSILON&&(A=(r?w.controlPoints[0].length:w.controlPoints.length)-1),r?new It(w.degreeU,w.knotsU,function(P){for(var z,E=[],k=0,T=w.controlPoints;k<T.length;){var B=T[k];++k,E.push(B[A])}return z=E,z}()):new It(w.degreeV,w.knotsV,w.controlPoints[A])},ht.loftedSurface=function(t,n){t=vt.unifyCurveKnotVectors(t);var r=t[0].degree;n==null&&(n=3),n>t.length-1&&(n=t.length-1);for(var s=t[0].knots,o=[],h=[],c=0,v=t[0].controlPoints.length;c<v;){var d=[c++],m=t.map(function(w){return function(A){return A.controlPoints[w[0]]}}(d)),b=ht.rationalInterpCurve(m,n,!0);h.push(b.controlPoints),o=b.knots}return new qt(r,n,s,o,h)},ht.clonedCurve=function(t){return new It(t.degree,t.knots.slice(),t.controlPoints.map(function(n){return n.slice()}))},ht.rationalBezierCurve=function(t,n){for(var r=t.length-1,s=[],o=0,h=r+1;o<h;)o++,s.push(0);for(var c=0,v=r+1;c<v;)c++,s.push(1);return n==null&&(n=u.rep(t.length,1)),new It(r,s,S.homogenize1d(t,n))},ht.fourPointSurface=function(t,n,r,s,o){o==null&&(o=3);for(var h=o,c=[],v=0,d=o+1;v<d;){for(var m=v++,b=[],w=0,A=o+1;w<A;){var P=w++,z=1-m/h,E=u.lerp(z,t,n),k=u.lerp(z,s,r),T=u.lerp(1-P/h,E,k);T.push(1),b.push(T)}c.push(b)}var B=u.rep(o+1,0),L=u.rep(o+1,1);return new qt(o,o,B.concat(L),B.concat(L),c)},ht.ellipseArc=function(t,n,r,s,o){var h=u.norm(n),c=u.norm(r);n=u.normalized(n),r=u.normalized(r),o<s&&(o=2*Math.PI+s);var v=o-s,d=0;v<=Math.PI/2?d=1:v<=Math.PI?d=2:v<=3*Math.PI/2?d=3:d=4;var m=v/d,b=Math.cos(m/2),w=u.add(t,u.add(u.mul(h*Math.cos(s),n),u.mul(c*Math.sin(s),r))),A=u.sub(u.mul(Math.cos(s),r),u.mul(Math.sin(s),n)),P=[],z=u.zeros1d(2*d+3),E=0,k=s,T=u.zeros1d(d*2);P[0]=w,T[0]=1;for(var B=1,L=d+1;B<L;){var R=B++;k+=m;var F=u.add(t,u.add(u.mul(h*Math.cos(k),n),u.mul(c*Math.sin(k),r)));T[E+2]=1,P[E+2]=F;var W=u.sub(u.mul(Math.cos(k),r),u.mul(Math.sin(k),n)),D=it.rays(w,u.mul(1/u.norm(A),A),F,u.mul(1/u.norm(W),W)),V=u.add(w,u.mul(D.u0,A));T[E+1]=b,P[E+1]=V,E+=2,R<d&&(w=F,A=W)}for(var G=2*d+1,J=0;J<3;){var $=J++;z[$]=0,z[$+G]=1}switch(d){case 2:z[3]=z[4]=.5;break;case 3:z[3]=z[4]=.3333333333333333,z[5]=z[6]=.6666666666666666;break;case 4:z[3]=z[4]=.25,z[5]=z[6]=.5,z[7]=z[8]=.75;break}return new It(2,z,S.homogenize1d(P,T))},ht.arc=function(t,n,r,s,o,h){return ht.ellipseArc(t,u.mul(s,u.normalized(n)),u.mul(s,u.normalized(r)),o,h)},ht.polyline=function(t){for(var n=[0,0],r=0,s=0,o=t.length-1;s<o;){var h=s++;r+=u.dist(t[h],t[h+1]),n.push(r)}n.push(r),n=u.mul(1/r,n);for(var c,v=[],d=0,m=t.length;d<m;)d++,v.push(1);return c=v,new It(1,n,S.homogenize1d(t.slice(0),c))},ht.extrudedSurface=function(t,n,r){for(var s=[[],[],[]],o=[[],[],[]],h=S.dehomogenize1d(r.controlPoints),c=S.weight1d(r.controlPoints),v=u.mul(n,t),d=u.mul(.5*n,t),m=0,b=h.length;m<b;){var w=m++;s[2][w]=h[w],s[1][w]=u.add(d,h[w]),s[0][w]=u.add(v,h[w]),o[0][w]=c[w],o[1][w]=c[w],o[2][w]=c[w]}return new qt(2,r.degree,[0,0,0,1,1,1],r.knots,S.homogenize2d(s,o))},ht.cylindricalSurface=function(t,n,r,s,o){var h=u.cross(t,n),c=ht.arc(r,n,h,o,0,2*Math.PI);return ht.extrudedSurface(t,s,c)},ht.revolvedSurface=function(t,n,r,s){var o=S.dehomogenize1d(t.controlPoints),h=S.weight1d(t.controlPoints),c,v;s<=Math.PI/2?(c=1,v=u.zeros1d(6+2*(c-1))):s<=Math.PI?(c=2,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.5):s<=3*Math.PI/2?(c=3,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.3333333333333333,v[5]=v[6]=.6666666666666666):(c=4,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.25,v[5]=v[6]=.5,v[7]=v[8]=.75);for(var d=s/c,m=3+2*(c-1),b=0;b<3;){var w=b++;v[w]=0,v[m+w]=1}for(var A=Math.cos(d/2),P=0,z=u.zeros1d(c+1),E=u.zeros1d(c+1),k=u.zeros3d(2*c+1,o.length,3),T=u.zeros2d(2*c+1,o.length),B=1,L=c+1;B<L;){var R=B++;P+=d,E[R]=Math.cos(P),z[R]=Math.sin(P)}for(var F=0,W=o.length;F<W;){var D=F++,V=ce.rayClosestPoint(o[D],n,r),G=u.sub(o[D],V),J=u.norm(G),$=u.cross(r,G);J>tt.EPSILON&&(G=u.mul(1/J,G),$=u.mul(1/J,$)),k[0][D]=o[D];var nt=o[D];T[0][D]=h[D];for(var st=$,rt=0,at=1,et=c+1;at<et;){var ot=at++,O;J==0?O=V:O=u.add(V,u.add(u.mul(J*E[ot],G),u.mul(J*z[ot],$))),k[rt+2][D]=O,T[rt+2][D]=h[D];var ut=u.sub(u.mul(E[ot],$),u.mul(z[ot],G));if(J==0)k[rt+1][D]=V;else{var gt=it.rays(nt,u.mul(1/u.norm(st),st),O,u.mul(1/u.norm(ut),ut)),Et=u.add(nt,u.mul(gt.u0,st));k[rt+1][D]=Et}T[rt+1][D]=A*h[D],rt+=2,ot<c&&(nt=O,st=ut)}}return new qt(2,t.degree,v,t.knots,S.homogenize2d(k,T))},ht.sphericalSurface=function(t,n,r,s){var o=ht.arc(t,u.mul(-1,n),r,s,0,Math.PI);return ht.revolvedSurface(o,t,n,2*Math.PI)},ht.conicalSurface=function(t,n,r,s,o){var h=2*Math.PI,c=1,v=[u.add(r,u.mul(s,t)),u.add(r,u.mul(o,n))],d=[0,0,1,1],m=[1,1],b=new It(c,d,S.homogenize1d(v,m));return ht.revolvedSurface(b,r,t,h)},ht.rationalInterpCurve=function(t,n,r,s,o){if(r==null&&(r=!1),n==null&&(n=3),t.length<n+1)throw new X("You need to supply at least degree + 1 points! You only supplied "+t.length+" points.");for(var h=[0],c=1,v=t.length;c<v;){var d=c++,m=u.norm(u.sub(t[d],t[d-1])),b=h[h.length-1];h.push(b+m)}for(var w=h[h.length-1],A=0,P=h.length;A<P;){var z=A++;h[z]=h[z]/w}var E=u.rep(n+1,0),k=s!=null&&o!=null,T;k?T=0:T=1;var B;k?B=h.length-n+1:B=h.length-n;for(var L=T;L<B;){for(var R=L++,F=0,W=0;W<n;){var D=W++;F+=h[R+D]}E.push(1/n*F)}var V=E.concat(u.rep(n+1,1)),G=[],J;k?J=t.length+1:J=t.length-1;var $;k?$=t.length-(n-1):$=t.length-(n+1);for(var nt=0;nt<h.length;){var st=h[nt];++nt;var rt=S.knotSpanGivenN(J,n,st,V),at=S.basisFunctionsGivenKnotSpanIndex(rt,st,n,V),et=rt-n,ot=u.zeros1d(et),O=u.zeros1d($-et);G.push(ot.concat(at).concat(O))}if(k){var ut=G[0].length-2,gt=[-1,1].concat(u.zeros1d(ut)),Et=u.zeros1d(ut).concat([-1,1]);K.spliceAndInsert(G,1,0,gt),K.spliceAndInsert(G,G.length-1,0,Et)}for(var Bt=t[0].length,kt=[],Rt=(1-V[V.length-n-2])/n,ie=V[n+1]/n,ge=0;ge<Bt;){var ne=[ge++],$t;if(!k)$t=t.map(function(Me){return function(Re){return Re[Me[0]]}}(ne));else{$t=[t[0][ne[0]]],$t.push(ie*s[ne[0]]);for(var se=1,_e=t.length-1;se<_e;){var xe=se++;$t.push(t[xe][ne[0]])}$t.push(Rt*o[ne[0]]),$t.push(K.last(t)[ne[0]])}var Ne=At.solve(G,$t);kt.push(Ne)}var Ae=At.transpose(kt);if(!r){var Pe=u.rep(Ae.length,1);Ae=S.homogenize1d(Ae,Pe)}return new It(n,V,Ae)};var vt=f.eval.Modify=function(){};y["verb.eval.Modify"]=vt,vt.__name__=["verb","eval","Modify"],vt.curveReverse=function(t){return new It(t.degree,vt.knotsReverse(t.knots),K.reversed(t.controlPoints))},vt.surfaceReverse=function(t,n){return n==null&&(n=!1),n?new qt(t.degreeU,t.degreeV,t.knotsU,vt.knotsReverse(t.knotsV),function(r){for(var s,o=[],h=0,c=t.controlPoints;h<c.length;){var v=c[h];++h,o.push(K.reversed(v))}return s=o,s}()):new qt(t.degreeU,t.degreeV,vt.knotsReverse(t.knotsU),t.knotsV,K.reversed(t.controlPoints))},vt.knotsReverse=function(t){var n=K.first(t);K.last(t);for(var r=[n],s=t.length,o=1;o<s;){var h=o++;r.push(r[h-1]+(t[s-h]-t[s-h-1]))}return r},vt.unifyCurveKnotVectors=function(t){t=t.map(ht.clonedCurve);for(var n=q.fold(t,function(V,G){return vt.imax(V.degree,G)},0),r=0,s=t.length;r<s;){var o=r++;t[o].degree<n&&(t[o]=vt.curveElevateDegree(t[o],n))}for(var h,c=[],v=0;v<t.length;){var d=t[v];++v,c.push(new re(K.first(d.knots),K.last(d.knots)))}h=c;for(var m=0,b=t.length;m<b;){var w=m++,A=[h[w].min];t[w].knots=t[w].knots.map(function(V){return function(G){return G-V[0]}}(A))}for(var P=h.map(function(V){return V.max-V.min}),z=q.fold(P,function(V,G){return Math.max(V,G)},0),E=0,k=t.length;E<k;){var T=E++,B=[z/P[T]];t[T].knots=t[T].knots.map(function(V){return function(G){return G*V[0]}}(B))}for(var L=q.fold(t,function(V,G){return u.sortedSetUnion(V.knots,G)},[]),R=0,F=t.length;R<F;){var W=R++,D=u.sortedSetSub(L,t[W].knots);D.length==0&&(t[W]=t[W]),t[W]=vt.curveKnotRefine(t[W],D)}return t},vt.imin=function(t,n){return t<n?t:n},vt.imax=function(t,n){return t>n?t:n},vt.curveElevateDegree=function(t,n){if(n<=t.degree)return t;var r=t.knots.length-t.degree-2,s=t.degree,o=t.knots,h=t.controlPoints,c=n-t.degree,v=t.controlPoints[0].length,d=u.zeros2d(s+c+1,s+1),m=[],b=[],w=[],A=r+s+1,P=n,z=Math.floor(P/2),E=[],k=[];d[0][0]=1,d[P][s]=1;for(var T=1,B=z+1;T<B;)for(var L=T++,R=1/zt.get(P,L),F=vt.imin(s,L),W=vt.imax(0,L-c),D=F+1;W<D;){var V=W++;d[L][V]=R*zt.get(s,V)*zt.get(c,L-V)}for(var G=z+1;G<P;)for(var J=G++,$=vt.imin(s,J),nt=vt.imax(0,J-c),st=$+1;nt<st;){var rt=nt++;d[J][rt]=d[P-J][s-rt]}var at=P+1,et=-1,ot=s,O=s+1,ut=1,gt=o[0];E[0]=h[0];for(var Et=0,Bt=P+1;Et<Bt;){var kt=Et++;k[kt]=gt}for(var Rt=0,ie=s+1;Rt<ie;){var ge=Rt++;m[ge]=h[ge]}for(;O<A;){for(var ne=O;O<A&&o[O]==o[O+1];)O=O+1;var $t=O-ne+1,se=o[O],_e=et;et=s-$t;var xe;_e>0?xe=Math.floor((_e+2)/2):xe=1;var Ne;if(et>0?Ne=Math.floor(P-(et+1)/2):Ne=P,et>0){for(var Ae=se-gt,Pe=[],Me=s;Me>$t;)Pe[Me-$t-1]=Ae/(o[ot+Me]-gt),Me--;for(var Re=1,bn=et+1;Re<bn;){for(var en=Re++,Zi=et-en,Nr=$t+en,nn=s;nn>=Nr;)m[nn]=u.add(u.mul(Pe[nn-Nr],m[nn]),u.mul(1-Pe[nn-Nr],m[nn-1])),nn--;w[Zi]=m[s]}}for(var bi=xe,Yi=P+1;bi<Yi;){var xn=bi++;b[xn]=u.zeros1d(v);for(var Hi=vt.imin(s,xn),xi=vt.imax(0,xn-c),Qi=Hi+1;xi<Qi;){var Ai=xi++;b[xn]=u.add(b[xn],u.mul(d[xn][Ai],m[Ai]))}}if(_e>1)for(var Br=at-2,Tr=at,Pi=se-gt,Ji=(se-k[at-1])/Pi,Mi=1;Mi<_e;){for(var Lr=Mi++,Ve=Br,rn=Tr,Ye=rn-at+1;rn-Ve>Lr;){if(Ve<ut){var $i=(se-k[Ve])/(gt-k[Ve]);E[Ve]=u.lerp($i,E[Ve],E[Ve-1])}if(rn>=xe){if(rn-Lr<=at-P+_e){var ts=(se-k[rn-Lr])/Pi;b[Ye]=u.lerp(ts,b[Ye],b[Ye+1])}}else b[Ye]=u.lerp(Ji,b[Ye],b[Ye+1]);Ve=Ve+1,rn=rn-1,Ye=Ye-1}Br=Br-1,Tr=Tr+1}if(ot!=s)for(var zi=0,es=P-_e;zi<es;)zi++,k[at]=gt,at=at+1;for(var Si=xe,ns=Ne+1;Si<ns;){var rs=Si++;E[ut]=b[rs],ut=ut+1}if(O<A){for(var Ci=0;Ci<et;){var ki=Ci++;m[ki]=w[ki]}for(var Ii=et,is=s+1;Ii<is;){var Ei=Ii++;m[Ei]=h[O-s+Ei]}ot=O,O=O+1,gt=se}else for(var Ni=0,ss=P+1;Ni<ss;){var as=Ni++;k[at+as]=se}}return new It(n,k,E)},vt.rationalSurfaceTransform=function(t,n){for(var r=S.dehomogenize2d(t.controlPoints),s=0,o=r.length;s<o;)for(var h=s++,c=0,v=r[h].length;c<v;){var d=c++,m=r[h][d];m.push(1),r[h][d]=At.dot(n,m).slice(0,m.length-1)}return new qt(t.degreeU,t.degreeV,t.knotsU.slice(),t.knotsV.slice(),S.homogenize2d(r,S.weight2d(t.controlPoints)))},vt.rationalCurveTransform=function(t,n){for(var r=S.dehomogenize1d(t.controlPoints),s=0,o=r.length;s<o;){var h=s++,c=r[h];c.push(1),r[h]=At.dot(n,c).slice(0,c.length-1)}return new It(t.degree,t.knots.slice(),S.homogenize1d(r,S.weight1d(t.controlPoints)))},vt.surfaceKnotRefine=function(t,n,r){var s=[],o,h,c;r?(c=t.controlPoints,o=t.knotsV,h=t.degreeV):(c=At.transpose(t.controlPoints),o=t.knotsU,h=t.degreeU);for(var v=null,d=0;d<c.length;){var m=c[d];++d,v=vt.curveKnotRefine(new It(h,o,m),n),s.push(v.controlPoints)}var b=v.knots;return r?new qt(t.degreeU,t.degreeV,t.knotsU.slice(),b,s):(s=At.transpose(s),new qt(t.degreeU,t.degreeV,b,t.knotsV.slice(),s))},vt.decomposeCurveIntoBeziers=function(t){for(var n=t.degree,r=t.controlPoints,s=t.knots,o=_t.knotMultiplicities(s),h=n+1,c=0;c<o.length;){var v=o[c];if(++c,v.mult<h){var d=u.rep(h-v.mult,v.knot),m=vt.curveKnotRefine(new It(n,s,r),d);s=m.knots,r=m.controlPoints}}s.length/h-1;for(var b=h*2,w=[],A=0;A<r.length;){var P=s.slice(A,A+b),z=r.slice(A,A+h);w.push(new It(n,P,z)),A+=h}return w},vt.curveKnotRefine=function(t,n){if(n.length==0)return ht.clonedCurve(t);for(var r=t.degree,s=t.controlPoints,o=t.knots,h=s.length-1,c=h+r+1,v=n.length-1,d=S.knotSpan(r,n[0],o),m=S.knotSpan(r,n[v],o),b=[],w=[],A=0,P=d-r+1;A<P;){var z=A++;b[z]=s[z]}for(var E=m-1,k=h+1;E<k;){var T=E++;b[T+v+1]=s[T]}for(var B=0,L=d+1;B<L;){var R=B++;w[R]=o[R]}for(var F=m+r,W=c+1;F<W;){var D=F++;w[D+v+1]=o[D]}for(var V=m+r-1,G=m+r+v,J=v;J>=0;){for(;n[J]<=o[V]&&V>d;)b[G-r-1]=s[V-r-1],w[G]=o[V],G=G-1,V=V-1;b[G-r-1]=b[G-r];for(var $=1,nt=r+1;$<nt;){var st=$++,rt=G-r+st,at=w[G+st]-n[J];Math.abs(at)<tt.EPSILON?b[rt-1]=b[rt]:(at=at/(w[G+st]-o[V-r+st]),b[rt-1]=u.add(u.mul(at,b[rt-1]),u.mul(1-at,b[rt])))}w[G]=n[J],G=G-1,J--}return new It(r,w,b)},vt.curveKnotInsert=function(t,n,r){for(var s=t.degree,o=t.controlPoints,h=t.knots,c=0,v=o.length,d=S.knotSpan(s,n,h),m=[],b=[],w=[],A=1,P=d+1;A<P;){var z=A++;b[z]=h[z]}for(var E=1,k=r+1;E<k;){var T=E++;b[d+T]=n}for(var B=d+1,L=h.length;B<L;){var R=B++;b[R+r]=h[R]}for(var F=0,W=d-s+1;F<W;){var D=F++;w[D]=o[D]}for(var V=d-c;V<v;){var G=V++;w[G+r]=o[G]}for(var J=0,$=s-c+1;J<$;){var nt=J++;m[nt]=o[d-s+nt]}for(var st=0,rt=0,at=1,et=r+1;at<et;){var ot=at++;st=d-s+ot;for(var O=0,ut=s-ot-c+1;O<ut;){var gt=O++;rt=(n-h[st+gt])/(h[gt+d+1]-h[st+gt]),m[gt]=u.add(u.mul(rt,m[gt+1]),u.mul(1-rt,m[gt]))}w[st]=m[0],w[d+r-ot-c]=m[s-ot-c]}for(var Et=st+1,Bt=d-c;Et<Bt;){var kt=Et++;w[kt]=m[kt-st]}return new It(s,b,w)};var Mt=f.eval.Tess=function(){};y["verb.eval.Tess"]=Mt,Mt.__name__=["verb","eval","Tess"],Mt.rationalCurveRegularSample=function(t,n,r){return Mt.rationalCurveRegularSampleRange(t,t.knots[0],K.last(t.knots),n,r)},Mt.rationalCurveRegularSampleRange=function(t,n,r,s,o){s<1&&(s=2);for(var h=[],c=(r-n)/(s-1),v=0,d=0;d<s;){var m=d++;v=n+c*m,o?h.push([v].concat(S.rationalCurvePoint(t,v))):h.push(S.rationalCurvePoint(t,v))}return h},Mt.rationalCurveAdaptiveSample=function(t,n,r){if(r==null&&(r=!1),n==null&&(n=1e-6),t.degree==1)if(r){for(var s=[],o=0,h=t.controlPoints.length;o<h;){var c=o++;s.push([t.knots[c+1]].concat(S.dehomogenize(t.controlPoints[c])))}return s}else return t.controlPoints.map(S.dehomogenize);return Mt.rationalCurveAdaptiveSampleRange(t,t.knots[0],K.last(t.knots),n,r)},Mt.rationalCurveAdaptiveSampleRange=function(t,n,r,s,o){var h=S.rationalCurvePoint(t,n),c=S.rationalCurvePoint(t,r),v=.5+.2*Math.random(),d=n+(r-n)*v,m=S.rationalCurvePoint(t,d),b=u.sub(h,c),w=u.sub(h,m);if(u.dot(b,b)<s&&u.dot(w,w)>s||!ce.threePointsAreFlat(h,m,c,s)){var A=n+(r-n)*.5,P=Mt.rationalCurveAdaptiveSampleRange(t,n,A,s,o),z=Mt.rationalCurveAdaptiveSampleRange(t,A,r,s,o);return P.slice(0,-1).concat(z)}else return o?[[n].concat(h),[r].concat(c)]:[h,c]},Mt.rationalSurfaceNaive=function(t,n,r){n<1&&(n=1),r<1&&(r=1),t.degreeU,t.degreeV,t.controlPoints;for(var s=t.knotsU,o=t.knotsV,h=K.last(s)-s[0],c=K.last(o)-o[0],v=h/n,d=c/r,m=[],b=[],w=[],A=0,P=n+1;A<P;)for(var z=A++,E=0,k=r+1;E<k;){var T=E++,B=z*v,L=T*d;b.push([B,L]);var R=S.rationalSurfaceDerivatives(t,B,L,1),F=R[0][0];m.push(F);var W=u.normalized(u.cross(R[1][0],R[0][1]));w.push(W)}for(var D=[],V=0;V<n;)for(var G=V++,J=0;J<r;){var $=J++,nt=G*(r+1)+$,st=(G+1)*(r+1)+$,rt=st+1,at=nt+1,et=[nt,st,rt],ot=[nt,rt,at];D.push(et),D.push(ot)}return new ye(D,m,w,b)},Mt.divideRationalSurfaceAdaptive=function(t,n){n==null&&(n=new Ke),n.minDivsU!=null?n.minDivsU=n.minDivsU:n.minDivsU=1,n.minDivsV!=null?n.minDivsU=n.minDivsV:n.minDivsU=1,n.refine!=null?n.refine=n.refine:n.refine=!0;var r=(t.controlPoints.length-1)*2,s=(t.controlPoints[0].length-1)*2,o;n.minDivsU>r?o=n.minDivsU=n.minDivsU:o=n.minDivsU=r;var h;n.minDivsV>s?h=n.minDivsV=n.minDivsV:h=n.minDivsV=s;for(var c=K.last(t.knotsU),v=t.knotsU[0],d=K.last(t.knotsV),m=t.knotsV[0],b=(c-v)/o,w=(d-m)/h,A=[],P=[],z=0,E=h+1;z<E;){for(var k=z++,T=[],B=0,L=o+1;B<L;){var R=B++,F=v+b*R,W=m+w*k,D=S.rationalSurfaceDerivatives(t,F,W,1),V=u.normalized(u.cross(D[0][1],D[1][0]));T.push(new fe(D[0][0],V,[F,W],-1,u.isZero(V)))}P.push(T)}for(var G=0;G<h;)for(var J=G++,$=0;$<o;){var nt=$++,st=[P[h-J-1][nt],P[h-J-1][nt+1],P[h-J][nt+1],P[h-J][nt]];A.push(new Ue(t,st))}if(!n.refine)return A;for(var rt=0;rt<h;)for(var at=rt++,et=0;et<o;){var ot=et++,O=at*o+ot,ut=Mt.north(O,at,ot,o,h,A),gt=Mt.east(O,at,ot,o,h,A),Et=Mt.south(O,at,ot,o,h,A),Bt=Mt.west(O,at,ot,o,h,A);A[O].neighbors=[Et,gt,ut,Bt],A[O].divide(n)}return A},Mt.north=function(t,n,r,s,o,h){return n==0?null:h[t-s]},Mt.south=function(t,n,r,s,o,h){return n==o-1?null:h[t+s]},Mt.east=function(t,n,r,s,o,h){return r==s-1?null:h[t+1]},Mt.west=function(t,n,r,s,o,h){return r==0?null:h[t-1]},Mt.triangulateAdaptiveRefinementNodeTree=function(t){for(var n=ye.empty(),r=0;r<t.length;){var s=t[r];++r,s.triangulate(n)}return n},Mt.rationalSurfaceAdaptive=function(t,n){n!=null?n=n:n=new Ke;var r=Mt.divideRationalSurfaceAdaptive(t,n);return Mt.triangulateAdaptiveRefinementNodeTree(r)};var Ke=f.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};y["verb.eval.AdaptiveRefinementOptions"]=Ke,Ke.__name__=["verb","eval","AdaptiveRefinementOptions"],Ke.prototype={__class__:Ke};var Ue=f.core.AdaptiveRefinementNode=function(t,n,r){if(this.srf=t,r==null?this.neighbors=[null,null,null,null]:this.neighbors=r,this.corners=n,this.corners==null){var s=t.knotsU[0],o=K.last(t.knotsU),h=t.knotsV[0],c=K.last(t.knotsV);this.corners=[fe.fromUv(s,h),fe.fromUv(o,h),fe.fromUv(o,c),fe.fromUv(s,c)]}};y["verb.eval.AdaptiveRefinementNode"]=Ue,Ue.__name__=["verb","eval","AdaptiveRefinementNode"],Ue.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var t=0;t<4;){var n=t++;if(this.corners[n].point==null){var r=this.corners[n];this.evalSrf(r.uv[0],r.uv[1],r)}}},evalSrf:function(t,n,r){var s=S.rationalSurfaceDerivatives(this.srf,t,n,1),o=s[0][0],h=u.cross(s[0][1],s[1][0]),c=u.isZero(h);return c||(h=u.normalized(h)),r!=null?(r.degen=c,r.point=o,r.normal=h,r):new fe(o,h,[t,n],-1,c)},getEdgeCorners:function(t){if(this.isLeaf())return[this.corners[t]];if(this.horizontal)switch(t){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(t){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(t){var n=[this.corners[t]];if(this.neighbors[t]==null)return n;var r=this.neighbors[t].getEdgeCorners((t+2)%4),s=t%2,o=tt.EPSILON,h=this,c=[function(d){return d.uv[0]>h.corners[0].uv[0]+o&&d.uv[0]<h.corners[2].uv[0]-o},function(d){return d.uv[1]>h.corners[0].uv[1]+o&&d.uv[1]<h.corners[2].uv[1]-o}],v=r.filter(c[s]);return v.reverse(),n.concat(v)},midpoint:function(t){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[t]!=null)return this.midPoints[t];switch(t){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[t]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var t=this.corners.length,n=0;n<t;){var r=n++;if(this.corners[r],this.corners[r].degen){var s=this.corners[(r+1)%t],o=this.corners[(r+3)%t];s.degen?this.corners[r].normal=o.normal:this.corners[r].normal=s.normal}}},shouldDivide:function(t,n){if(n<t.minDepth)return!0;if(n>=t.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=u.normSquared(u.sub(this.corners[0].normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(this.corners[2].normal,this.corners[3].normal))>t.normTol,this.splitHoriz=u.normSquared(u.sub(this.corners[1].normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(this.corners[3].normal,this.corners[0].normal))>t.normTol,this.splitVert||this.splitHoriz)return!0;var r=this.center();return u.normSquared(u.sub(r.normal,this.corners[0].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[3].normal))>t.normTol},divide:function(t){t==null&&(t=new Ke),t.normTol==null&&(t.normTol=.085),t.minDepth==null&&(t.minDepth=0),t.maxDepth==null&&(t.maxDepth=10),this._divide(t,0,!0)},_divide:function(t,n,r){if(this.evalCorners(),!!this.shouldDivide(t,n)){if(n++,this.splitVert&&!this.splitHoriz?r=!1:!this.splitVert&&this.splitHoriz&&(r=!0),this.horizontal=r,this.horizontal){var s=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],o=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new Ue(this.srf,s),new Ue(this.srf,o)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var h=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],c=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new Ue(this.srf,h),new Ue(this.srf,c)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var v=0,d=this.children;v<d.length;){var m=d[v];++v,m._divide(t,n,!r)}}},triangulate:function(t){if(t==null&&(t=ye.empty()),this.isLeaf())return this.triangulateLeaf(t);for(var n=0,r=this.children;n<r.length;){var s=r[n];if(++n,s==null)break;s.triangulate(t)}return t},triangulateLeaf:function(t){for(var n=t.points.length,r=[],s=[],o=0,h=0;h<4;){var c=h++,v=this.getAllCorners(c);v.length==2&&(o=c+1);for(var d=0,m=v.length;d<m;){var b=d++;r.push(v[b])}}for(var w=0;w<r.length;){var A=r[w];if(++w,A.id!=-1){s.push(A.id);continue}t.uvs.push(A.uv),t.points.push(A.point),t.normals.push(A.normal),A.id=n,s.push(n),n++}if(r.length==4)return t.faces.push([s[0],s[3],s[1]]),t.faces.push([s[3],s[2],s[1]]),t;if(r.length==5){var P=s.length;return t.faces.push([s[o],s[(o+2)%P],s[(o+1)%P]]),t.faces.push([s[(o+4)%P],s[(o+3)%P],s[o]]),t.faces.push([s[o],s[(o+3)%P],s[(o+2)%P]]),t}var z=this.center();t.uvs.push(z.uv),t.points.push(z.point),t.normals.push(z.normal);for(var E=t.points.length-1,k=0,T=r.length-1;k<r.length;)t.faces.push([E,s[k],s[T]]),T=k++;return t},__class__:Ue};var dt=f.exe.Dispatcher=function(){};y["verb.exe.Dispatcher"]=dt,dt.__name__=["verb","exe","Dispatcher"],dt.init=function(){dt._init||(dt._workerPool=new je(dt.THREADS),dt._init=!0)},dt.dispatchMethod=function(t,n,r){dt.init();var s=new un,o=function(h){s.resolve(h)};return dt._workerPool.addWork(ct.getClassName(t),n,r,o),new Jt(s)};var je=f.exe.WorkerPool=function(t,n){n==null&&(n="verb.js"),t==null&&(t=1),this._callbacks=new jt,this._working=new jt,this._pool=[],this._queue=[];for(var r=0;r<t;){r++;var s;try{s=new Worker(je.basePath+n)}catch(o){o instanceof X&&(o=o.val),s=new Worker(je.basePath+n.substring(0,-3)+".min.js")}this._pool.push(s)}};y["verb.exe.WorkerPool"]=je,je.__name__=["verb","exe","WorkerPool"],je.prototype={addWork:function(t,n,r,s){var o=new tn(t,n,r);this._callbacks.set(o.id,s),this._queue.push(o),this.processQueue()},processQueue:function(){for(var t=this;this._queue.length>0&&this._pool.length>0;){var n=this._queue.shift(),r=[n.id],s=[this._pool.shift()];this._working.h[r[0]]=s[0],s[0].onmessage=function(o,h){return function(c){t._working.remove(h[0]),t._pool.push(o[0]);try{t._callbacks.h.hasOwnProperty(h[0])&&(t._callbacks.h[h[0]](c.data.result),t._callbacks.remove(h[0]))}catch(v){v instanceof X&&(v=v.val),x.log(v)}t.processQueue()}}(s,r),s[0].postMessage(n)}},__class__:je};var tn=function(t,n,r){this.className=t,this.methodName=n,this.args=r,this.id=tn.uuid++};y["verb.exe._WorkerPool.Work"]=tn,tn.__name__=["verb","exe","_WorkerPool","Work"],tn.prototype={__class__:tn};var yn=function(){};y["verb.geom.ICurve"]=yn,yn.__name__=["verb","geom","ICurve"],yn.__interfaces__=[mn],yn.prototype={__class__:yn};var xt=f.geom.NurbsCurve=function(t){this._data=me.isValidNurbsCurveData(t)};y["verb.geom.NurbsCurve"]=xt,xt.__name__=["verb","geom","NurbsCurve"],xt.__interfaces__=[yn],xt.byKnotsControlPointsWeights=function(t,n,r,s){return new xt(new It(t,n.slice(),S.homogenize1d(r,s)))},xt.byPoints=function(t,n){return n==null&&(n=3),new xt(ht.rationalInterpCurve(t,n))},xt.__super__=Ft,xt.prototype=C(Ft.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return S.dehomogenize1d(this._data.controlPoints)},weights:function(){return S.weight1d(this._data.controlPoints)},asNurbs:function(){return new It(this.degree(),this.knots(),S.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new xt(this._data)},domain:function(){return new re(K.first(this._data.knots),K.last(this._data.knots))},transform:function(t){return new xt(vt.rationalCurveTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalCurveTransform",[this._data,t]).then(function(n){return new xt(n)})},point:function(t){return S.rationalCurvePoint(this._data,t)},pointAsync:function(t){return dt.dispatchMethod(S,"rationalCurvePoint",[this._data,t])},tangent:function(t){return S.rationalCurveTangent(this._data,t)},tangentAsync:function(t){return dt.dispatchMethod(S,"rationalCurveTangent",[this._data,t])},derivatives:function(t,n){return n==null&&(n=1),S.rationalCurveDerivatives(this._data,t,n)},derivativesAsync:function(t,n){return n==null&&(n=1),dt.dispatchMethod(S,"rationalCurveDerivatives",[this._data,t,n])},closestPoint:function(t){return _t.rationalCurveClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestPoint",[this._data,t])},closestParam:function(t){return _t.rationalCurveClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestParam",[this._data,t])},length:function(){return _t.rationalCurveArcLength(this._data)},lengthAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},lengthAtParam:function(t){return _t.rationalCurveArcLength(this._data,t)},lengthAtParamAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},paramAtLength:function(t,n){return _t.rationalCurveParamAtArcLength(this._data,t,n)},paramAtLengthAsync:function(t,n){return dt.dispatchMethod(_t,"rationalCurveParamAtArcLength",[this._data,t,n])},divideByEqualArcLength:function(t){return Yt.rationalCurveByEqualArcLength(this._data,t)},divideByEqualArcLengthAsync:function(t){return dt.dispatchMethod(Yt,"rationalCurveByEqualArcLength",[this._data,t])},divideByArcLength:function(t){return Yt.rationalCurveByArcLength(this._data,t)},divideByArcLengthAsync:function(t){return dt.dispatchMethod(Yt,"rationalCurveByArcLength",[this._data,t])},split:function(t){return Yt.curveSplit(this._data,t).map(function(n){return new xt(n)})},splitAsync:function(t){return dt.dispatchMethod(Yt,"curveSplit",[this._data,t]).then(function(n){return n.map(function(r){return new xt(r)})})},reverse:function(){return new xt(vt.curveReverse(this._data))},reverseAsync:function(){return dt.dispatchMethod(vt,"curveReverse",[this._data]).then(function(t){return new xt(t)})},tessellate:function(t){return Mt.rationalCurveAdaptiveSample(this._data,t,!1)},tessellateAsync:function(t){return dt.dispatchMethod(Mt,"rationalCurveAdaptiveSample",[this._data,t,!1])},__class__:xt});var Xe=f.geom.Arc=function(t,n,r,s,o,h){xt.call(this,ht.arc(t,n,r,s,o,h)),this._center=t,this._xaxis=n,this._yaxis=r,this._radius=s,this._minAngle=o,this._maxAngle=h};y["verb.geom.Arc"]=Xe,Xe.__name__=["verb","geom","Arc"],Xe.__super__=xt,Xe.prototype=C(xt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Xe});var Xn=f.geom.BezierCurve=function(t,n){xt.call(this,ht.rationalBezierCurve(t,n))};y["verb.geom.BezierCurve"]=Xn,Xn.__name__=["verb","geom","BezierCurve"],Xn.__super__=xt,Xn.prototype=C(xt.prototype,{__class__:Xn});var Wn=f.geom.Circle=function(t,n,r,s){Xe.call(this,t,n,r,s,0,Math.PI*2)};y["verb.geom.Circle"]=Wn,Wn.__name__=["verb","geom","Circle"],Wn.__super__=Xe,Wn.prototype=C(Xe.prototype,{__class__:Wn});var wn=function(){};y["verb.geom.ISurface"]=wn,wn.__name__=["verb","geom","ISurface"],wn.__interfaces__=[mn],wn.prototype={__class__:wn};var pt=f.geom.NurbsSurface=function(t){this._data=me.isValidNurbsSurfaceData(t)};y["verb.geom.NurbsSurface"]=pt,pt.__name__=["verb","geom","NurbsSurface"],pt.__interfaces__=[wn],pt.byKnotsControlPointsWeights=function(t,n,r,s,o,h){return new pt(new qt(t,n,r,s,S.homogenize2d(o,h)))},pt.byCorners=function(t,n,r,s){return new pt(ht.fourPointSurface(t,n,r,s))},pt.byLoftingCurves=function(t,n){return new pt(ht.loftedSurface(function(r){for(var s,o=[],h=0;h<t.length;){var c=t[h];++h,o.push(c.asNurbs())}return s=o,s}(),n))},pt.__super__=Ft,pt.prototype=C(Ft.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return S.dehomogenize2d(this._data.controlPoints)},weights:function(){return S.weight2d(this._data.controlPoints)},asNurbs:function(){return new qt(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),S.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new pt(this.asNurbs())},domainU:function(){return new re(K.first(this._data.knotsU),K.last(this._data.knotsU))},domainV:function(){return new re(K.first(this._data.knotsV),K.last(this._data.knotsV))},point:function(t,n){return S.rationalSurfacePoint(this._data,t,n)},pointAsync:function(t,n){return dt.dispatchMethod(S,"rationalSurfacePoint",[this._data,t,n])},normal:function(t,n){return S.rationalSurfaceNormal(this._data,t,n)},normalAsync:function(t,n){return dt.dispatchMethod(S,"rationalSurfaceNormal",[this._data,t,n])},derivatives:function(t,n,r){return r==null&&(r=1),S.rationalSurfaceDerivatives(this._data,t,n,r)},derivativesAsync:function(t,n,r){return r==null&&(r=1),dt.dispatchMethod(S,"rationalSurfaceDerivatives",[this._data,t,n,r])},closestParam:function(t){return _t.rationalSurfaceClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestParam",[this._data,t])},closestPoint:function(t){return _t.rationalSurfaceClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestPoint",[this._data,t])},split:function(t,n){return n==null&&(n=!1),Yt.surfaceSplit(this._data,t,n).map(function(r){return new pt(r)})},splitAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(Yt,"surfaceSplit",[this._data,t,n]).then(function(r){return r.map(function(s){return new pt(s)})})},reverse:function(t){return t==null&&(t=!1),new pt(vt.surfaceReverse(this._data,t))},reverseAsync:function(t){return t==null&&(t=!1),dt.dispatchMethod(vt,"surfaceReverse",[this._data,t]).then(function(n){return new pt(n)})},isocurve:function(t,n){return n==null&&(n=!1),new xt(ht.surfaceIsocurve(this._data,t,n))},isocurveAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(ht,"surfaceIsocurve",[this._data,t,n]).then(function(r){return new xt(r)})},boundaries:function(t){return ht.surfaceBoundaryCurves(this._data).map(function(n){return new xt(n)})},boundariesAsync:function(t){return dt.dispatchMethod(ht,"surfaceBoundaryCurves",[this._data]).then(function(n){return n.map(function(r){return new xt(r)})})},tessellate:function(t){return Mt.rationalSurfaceAdaptive(this._data,t)},tessellateAsync:function(t){return dt.dispatchMethod(Mt,"rationalSurfaceAdaptive",[this._data,t])},transform:function(t){return new pt(vt.rationalSurfaceTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalSurfaceTransform",[this._data,t]).then(function(n){return new pt(n)})},__class__:pt});var Zn=f.geom.ConicalSurface=function(t,n,r,s,o){pt.call(this,ht.conicalSurface(t,n,r,s,o)),this._axis=t,this._xaxis=n,this._base=r,this._height=s,this._radius=o};y["verb.geom.ConicalSurface"]=Zn,Zn.__name__=["verb","geom","ConicalSurface"],Zn.__super__=pt,Zn.prototype=C(pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Zn});var Yn=f.geom.CylindricalSurface=function(t,n,r,s,o){pt.call(this,ht.cylindricalSurface(t,n,r,s,o)),this._axis=t,this._xaxis=n,this._base=r,this._height=s,this._radius=o};y["verb.geom.CylindricalSurface"]=Yn,Yn.__name__=["verb","geom","CylindricalSurface"],Yn.__super__=pt,Yn.prototype=C(pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Yn});var We=f.geom.EllipseArc=function(t,n,r,s,o){xt.call(this,ht.ellipseArc(t,n,r,s,o)),this._center=t,this._xaxis=n,this._yaxis=r,this._minAngle=s,this._maxAngle=o};y["verb.geom.EllipseArc"]=We,We.__name__=["verb","geom","EllipseArc"],We.__super__=xt,We.prototype=C(xt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:We});var Hn=f.geom.Ellipse=function(t,n,r){We.call(this,t,n,r,0,Math.PI*2)};y["verb.geom.Ellipse"]=Hn,Hn.__name__=["verb","geom","Ellipse"],Hn.__super__=We,Hn.prototype=C(We.prototype,{__class__:Hn});var Qn=f.geom.ExtrudedSurface=function(t,n){pt.call(this,ht.extrudedSurface(u.normalized(n),u.norm(n),t.asNurbs())),this._profile=t,this._direction=n};y["verb.geom.ExtrudedSurface"]=Qn,Qn.__name__=["verb","geom","ExtrudedSurface"],Qn.__super__=pt,Qn.prototype=C(pt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:Qn});var Ze=f.geom.Intersect=function(){};y["verb.geom.Intersect"]=Ze,Ze.__name__=["verb","geom","Intersect"],Ze.curves=function(t,n,r){return r==null&&(r=.001),it.curves(t.asNurbs(),n.asNurbs(),r)},Ze.curvesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curves",[t.asNurbs(),n.asNurbs(),r])},Ze.curveAndSurface=function(t,n,r){return r==null&&(r=.001),it.curveAndSurface(t.asNurbs(),n.asNurbs(),r)},Ze.curveAndSurfaceAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curveAndSurface",[t.asNurbs(),n.asNurbs(),r])},Ze.surfaces=function(t,n,r){return r==null&&(r=.001),it.surfaces(t.asNurbs(),n.asNurbs(),r).map(function(s){return new xt(s)})},Ze.surfacesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"surfaces",[t.asNurbs(),n.asNurbs(),r]).then(function(s){return s.map(function(o){return new xt(o)})})};var Jn=f.geom.Line=function(t,n){xt.call(this,ht.polyline([t,n])),this._start=t,this._end=n};y["verb.geom.Line"]=Jn,Jn.__name__=["verb","geom","Line"],Jn.__super__=xt,Jn.prototype=C(xt.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:Jn});var $n=f.geom.RevolvedSurface=function(t,n,r,s){pt.call(this,ht.revolvedSurface(t.asNurbs(),n,r,s)),this._profile=t,this._center=n,this._axis=r,this._angle=s};y["verb.geom.RevolvedSurface"]=$n,$n.__name__=["verb","geom","RevolvedSurface"],$n.__super__=pt,$n.prototype=C(pt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:$n});var tr=f.geom.SphericalSurface=function(t,n){pt.call(this,ht.sphericalSurface(t,[0,0,1],[1,0,0],n)),this._center=t,this._radius=n};y["verb.geom.SphericalSurface"]=tr,tr.__name__=["verb","geom","SphericalSurface"],tr.__super__=pt,tr.prototype=C(pt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:tr});var er=f.geom.SweptSurface=function(t,n){pt.call(this,ht.rationalTranslationalSurface(t.asNurbs(),n.asNurbs())),this._profile=t,this._rail=n};y["verb.geom.SweptSurface"]=er,er.__name__=["verb","geom","SweptSurface"],er.__super__=pt,er.prototype=C(pt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:er});function be(t){return t instanceof Array?function(){return U.iter(t)}:typeof t.iterator=="function"?ve(t,t.iterator):t.iterator}var kr,ji=0;function ve(t,n){if(n==null)return null;n.__id__==null&&(n.__id__=ji++);var r;return t.hx__closures__==null?t.hx__closures__={}:r=t.hx__closures__[n.__id__],r==null&&(r=function(){return r.method.apply(r.scope,arguments)},r.scope=t,r.method=n,t.hx__closures__[n.__id__]=r),r}y.Math=Math,String.prototype.__class__=y.String=String,String.__name__=["String"],y.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=y.Date=Date,Date.__name__=["Date"];var Xi=y.Int={__name__:["Int"]},Wi=y.Dynamic={__name__:["Dynamic"]},gi=y.Float=Number;gi.__name__=["Float"];var pi=y.Bool=Boolean;pi.__ename__=["Bool"];var yi=y.Class={__name__:["Class"]},wi={};Array.prototype.map==null&&(Array.prototype.map=function(t){for(var n=[],r=0,s=this.length;r<s;){var o=r++;n[o]=t(this[o])}return n}),Array.prototype.filter==null&&(Array.prototype.filter=function(t){for(var n=[],r=0,s=this.length;r<s;){var o=r++,h=this[o];t(h)&&n.push(h)}return n});var Ir={},or=M.ArrayBuffer||Zt;or.prototype.slice==null&&(or.prototype.slice=Zt.sliceImpl),M.DataView;var Er=M.Uint8Array||Ce._new;(function(t,n){if(t.setImmediate)return;var r=1,s={},o=!1,h=t.document,c;function v(B){return s[r]=d.apply(n,B),r++}function d(B){var L=[].slice.call(arguments,1);return function(){typeof B=="function"?B.apply(n,L):new Function(""+B)()}}function m(B){if(o)setTimeout(d(m,B),0);else{var L=s[B];if(L){o=!0;try{L()}finally{b(B),o=!1}}}}function b(B){delete s[B]}function w(){c=function(){var B=v(arguments);return process.nextTick(d(m,B)),B}}function A(){if(t.postMessage&&!t.importScripts){var B=!0,L=t.onmessage;return t.onmessage=function(){B=!1},t.postMessage("","*"),t.onmessage=L,B}}function P(){var B="setImmediate$"+Math.random()+"$",L=function(R){R.source===t&&typeof R.data=="string"&&R.data.indexOf(B)===0&&m(+R.data.slice(B.length))};t.addEventListener?t.addEventListener("message",L,!1):t.attachEvent("onmessage",L),c=function(){var R=v(arguments);return t.postMessage(B+R,"*"),R}}function z(){var B=new MessageChannel;B.port1.onmessage=function(L){var R=L.data;m(R)},c=function(){var L=v(arguments);return B.port2.postMessage(L),L}}function E(){var B=h.documentElement;c=function(){var L=v(arguments),R=h.createElement("script");return R.onreadystatechange=function(){m(L),R.onreadystatechange=null,B.removeChild(R),R=null},B.appendChild(R),L}}function k(){c=function(){var B=v(arguments);return setTimeout(d(m,B),0),B}}var T=Object.getPrototypeOf&&Object.getPrototypeOf(t);T=T&&T.setTimeout?T:t,{}.toString.call(t.process)==="[object process]"?w():A()?P():t.MessageChannel?z():h&&"onreadystatechange"in h.createElement("script")?E():k(),T.setImmediate=c,T.clearImmediate=b})(new Function("return this")()),Xt.USE_CACHE=!1,Xt.USE_ENUM_INDEX=!1,Xt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Dt.DEFAULT_RESOLVER=ct,Dt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Qt.count=0,Wt.i64tmp=function(t){var n,r=new Vt(0,0);return n=r,n}(),bt.__toStr={}.toString,Ce.BYTES_PER_ELEMENT=1,ft.queue=new Z,zt.memo=new jt,tt.TOLERANCE=1e-6,tt.EPSILON=1e-10,tt.VERSION="2.0.0",_t.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],_t.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],dt.THREADS=1,dt._init=!1,je.basePath="",tn.uuid=0,sr.main()}(typeof console<"u"?console:{log:function(){}},i,typeof g<"u"?g:typeof a<"u"?a:typeof self<"u"?self:this),i})})(fi);var Ki=fi.exports;const ln=Gi(Ki);class zr{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(e,i,a,l){this.c0=e,this.c1=a,this.c2=-3*e+3*i-2*a-l,this.c3=2*e-2*i+a+l}initCatmullRom(e,i,a,l,_){this.init(i,a,_*(a-e),_*(l-i))}initNonuniformCatmullRom(e,i,a,l,_,g,p){let x=(i-e)/_-(a-e)/(_+g)+(a-i)/g,f=(a-i)/g-(l-i)/(g+p)+(l-a)/p;x*=g,f*=g,this.init(i,a,x,f)}calc(e){const i=e*e,a=i*e;return this.c0+this.c1*e+this.c2*i+this.c3*a}}class mi extends Cn{constructor(e=[],i=!1,a="centripetal",l=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new Q,this._px=new zr,this._py=new zr,this._pz=new zr,this._points=e.map(_=>new St(_)),this._closed=i,this._curveType=a,this._tension=l}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new St}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new St}get length(){if(this._points.length<2)return 0;let e=0;for(let i=1;i<this._points.length;i++)e+=this._points[i-1].distanceTo(this._points[i]);return this._closed&&this._points.length>2&&(e+=this._points[this._points.length-1].distanceTo(this._points[0])),e}getPoint(e,i=new St){const a=i,l=this._points,_=l.length;if(_===0)return a.set(0,0,0);if(_===1)return a.copy(l[0]);const g=(_-(this._closed?0:1))*e;let p=Math.floor(g),x=g-p;this._closed?p+=p>0?0:(Math.floor(Math.abs(p)/_)+1)*_:x===0&&p===_-1&&(p=_-2,x=1);let f,M;this._closed||p>0?f=l[(p-1)%_]:(this._tmp.subVectors(l[0],l[1]).add(l[0]),f=new St(this._tmp.x,this._tmp.y,this._tmp.z));const y=l[p%_],I=l[(p+1)%_];if(this._closed||p+2<_?M=l[(p+2)%_]:(this._tmp.subVectors(l[_-1],l[_-2]).add(l[_-1]),M=new St(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const C=this._curveType==="chordal"?.5:.25;let U=Math.pow(f.distanceToSquared(y),C),q=Math.pow(y.distanceToSquared(I),C),Z=Math.pow(I.distanceToSquared(M),C);q<1e-4&&(q=1),U<1e-4&&(U=q),Z<1e-4&&(Z=q),this._px.initNonuniformCatmullRom(f.x,y.x,I.x,M.x,U,q,Z),this._py.initNonuniformCatmullRom(f.y,y.y,I.y,M.y,U,q,Z),this._pz.initNonuniformCatmullRom(f.z,y.z,I.z,M.z,U,q,Z)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(f.x,y.x,I.x,M.x,this._tension),this._py.initCatmullRom(f.y,y.y,I.y,M.y,this._tension),this._pz.initCatmullRom(f.z,y.z,I.z,M.z,this._tension));return a.set(this._px.calc(x),this._py.calc(x),this._pz.calc(x)),a}getPoints(e){const i=[];for(let a=0;a<=e;a++)i.push(this.getPoint(a/e));return i}setPoints(e){this._points=e.map(i=>new St(i)),this._boundingBoxNeedsUpdate=!0}setClosed(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0)}setCurveType(e){this._curveType=e}setTension(e){this._tension=e}transform(e){return this._points=this._points.map(i=>{const a=new St;return a.copy(i),a.applyMatrix4(e),a}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new ze;const e=new ze;return this._points.forEach(i=>{e.expandByPoint(i)}),e}}class Je{constructor(e,i,a,l){this._degree=e,this._knots=[...i],this._controlPoints=a.map(_=>({x:_.x,y:_.y,z:_.z})),this._weights=l?[...l]:new Array(a.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(e=>({x:e.x,y:e.y,z:e.z}))}weights(){return[...this._weights]}point(e){const i=this._controlPoints.map(a=>[a.x,a.y,a.z]);return Pn(e,this._degree,this._knots,i,this._weights)}length(){const e=this._controlPoints.map(i=>[i.x,i.y,i.z]);return oi(this._degree,this._knots,e,this._weights)}static byKnotsControlPointsWeights(e,i,a,l){return new Je(e,i,a,l)}static byPoints(e,i,a="Uniform"){let l;switch(a){case"Chord":l=si(i,e);break;case"SqrtChord":l=ai(i,e);break;case"Uniform":default:l=ii(i,e.length);break}const _=e.map(p=>({x:p[0],y:p[1],z:p[2]})),g=new Array(_.length).fill(1);return new Je(i,l,_,g)}getParameterRange(){const e=this._knots[this._degree],i=this._knots[this._knots.length-this._degree-1];return{start:e,end:i}}getPoints(e){const i=[],{start:a,end:l}=this.getParameterRange();for(let _=0;_<=e;_++){const g=a+(l-a)*(_/e);i.push(this.point(g))}return i}isClosed(e=1e-6){const{start:i,end:a}=this.getParameterRange(),l=this.point(i),_=this.point(a),g=l[0]-_[0],p=l[1]-_[1],x=l[2]-_[2];return Math.sqrt(g*g+p*p+x*x)<e}static createFitPointsForClosedCurve(e){if(e.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const i=new mi(e,!0,"centripetal"),a=Math.max(50,e.length*2);return i.getPoints(a)}static createClosedCurve(e,i,a="Chord"){const _=this.createFitPointsForClosedCurve(e).map(g=>[g.x,g.y,g.z]);return Je.byPoints(_,i,a)}}class Sr extends Cn{constructor(e,i,a,l,_){super();const g=arguments.length;if(g<2||g>5)throw te.AcCmErrors.ILLEGAL_PARAMETERS;if(this._degree=3,this._closed=!1,Array.isArray(i)){this._controlPoints=e;let p,x=3,f=!1;if(g>=3&&(Array.isArray(a)?(p=a,g>=4&&(x=l||3),g>=5&&(f=_)):a!==void 0&&(x=a||3,g>=4&&(f=l))),a===void 0&&g>=4&&(x=l||3,g>=5&&(f=_)),this._degree=x,this._closed=f,this._controlPoints.length<this._degree+1)throw te.AcCmErrors.ILLEGAL_PARAMETERS;const M=this.toVerbPoints(this._controlPoints);this._nurbsCurve=ln.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,i,M,p)}else{if(this._fitPoints=e,this._knotParameterization=i,g>=3&&(this._degree=a||3),g>=4&&(this._closed=l),this._fitPoints.length<this._degree+1)throw te.AcCmErrors.ILLEGAL_PARAMETERS;const p=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(p,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const e=Je.createFitPointsForClosedCurve(this._fitPoints),i=this.toNurbsPoints(e);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(i,this._degree)}else{const e=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(e,this._degree)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else if(this._controlPoints)if(this._closed){const e=Je.createFitPointsForClosedCurve(this._controlPoints),i=this.toNurbsPoints(e);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(i,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{const e=this._nurbsCurve.knots(),i=this._nurbsCurve.weights(),a=this.toVerbPoints(this._controlPoints);this._nurbsCurve=ln.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,e,a,i)}}setClosed(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get startPoint(){const e=this._nurbsCurve.knots(),i=this._nurbsCurve.degree(),a=e[i],l=this._nurbsCurve.point(a);return new St(l[0],l[1],l[2])}get endPoint(){const e=this._nurbsCurve.knots(),i=this._nurbsCurve.degree(),a=e[e.length-i-1],l=this._nurbsCurve.point(a);return new St(l[0],l[1],l[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(e){if(!this._fitPoints)throw new Error("No fit points in this spline");const i=this._fitPoints.length,a=e<0||e>=i?i-1:e,l=this._fitPoints[a];return{x:l.x,y:l.y,z:l.z||0}}getControlPointAt(e){const i=this._controlPoints.length,a=e<0||e>=i?i-1:e;return this._controlPoints[a]}getPoints(e=100){const i=this._nurbsCurve,a=[],l=i.knots(),_=this._nurbsCurve.degree(),g=l[_],p=l[l.length-_-1],x=(p-g)/(e-1);for(let f=0;f<e;f++){const M=f===e-1?p:g+f*x,y=i.point(M);a.push(new St(y[0],y[1],y[2]))}return a}getCurvePoints(e,i){const a=[],l=e.knots(),_=l[3],p=(l[l.length-4]-_)/(i-1);for(let x=0;x<i;x++){const f=_+x*p;a.push(e.point(f))}return a}calculateBoundingBox(){const e=this.getPoints(100);return new ze().setFromPoints(e)}get closed(){return this._closed}set closed(e){this.setClosed(e)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]=[a.x,a.y,a.z||0]}),i}toVerbPoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]=[a.x,a.y,a.z||0]}),i}toGePoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]={x:a[0],y:a[1],z:a[2]}}),i}static createClosedSpline(e,i="Uniform",a=3){if(e.length<a+1)throw new Error(`At least ${a+1} points are required for a degree ${a} closed spline`);return new Sr(e,i,a,!0)}}H.AcGeArea2d=Di,H.AcGeBox2d=de,H.AcGeBox3d=ze,H.AcGeCatmullRomCurve3d=mi,H.AcGeCircArc2d=Sn,H.AcGeCircArc3d=In,H.AcGeCurve2d=hn,H.AcGeEllipseArc2d=Ar,H.AcGeEllipseArc3d=Pr,H.AcGeEuler=wr,H.AcGeGeometryUtil=ri,H.AcGeLine2d=Mr,H.AcGeLine3d=kn,H.AcGeLoop2d=qi,H.AcGeMathUtil=Ct,H.AcGeMatrix2d=sn,H.AcGeMatrix3d=an,H.AcGeNurbsCurve=Je,H.AcGePlane=zn,H.AcGePoint2d=Ut,H.AcGePoint3d=St,H.AcGePolyline2d=Oi,H.AcGeQuaternion=Mn,H.AcGeShape2d=br,H.AcGeSpline3d=Sr,H.AcGeTol=fr,H.AcGeVector2d=Tt,H.AcGeVector3d=Q,H.DEFAULT_TOL=mr,H.DEG2RAD=hr,H.FLOAT_TOL=He,H.ORIGIN_POINT_2D=Bi,H.ORIGIN_POINT_3D=dr,H.RAD2DEG=lr,H.TAU=Lt,H.basisFunction=nr,H.calculateCurveLength=oi,H.ceilPowerOfTwo=Qr,H.clamp=Be,H.damp=Fr,H.degToRad=Zr,H.euclideanModulo=ur,H.evaluateNurbsPoint=Pn,H.floorPowerOfTwo=Jr,H.generateChordKnots=si,H.generateSqrtChordKnots=ai,H.generateUUID=Rr,H.generateUniformKnots=ii,H.intPartLength=vr,H.interpolateControlPoints=Ti,H.inverseLerp=Dr,H.isBetween=$r,H.isBetweenAngle=ti,H.isPointInPolygon=gr,H.isPolygonIntersect=ni,H.isPowerOfTwo=Hr,H.lerp=cr,H.mapLinear=Vr,H.normalizeAngle=An,H.pingpong=Or,H.radToDeg=Yr,H.randFloat=jr,H.randFloatSpread=Xr,H.randInt=Kr,H.relativeEps=ei,H.seededRandom=Wr,H.smootherstep=Gr,H.smoothstep=qr,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})});
4
+ `+n+"}",z;case"function":return"<function>";case"string":return t;default:return String(t)}},bt.__interfLoop=function(t,n){if(t==null)return!1;if(t==n)return!0;var r=t.__interfaces__;if(r!=null)for(var s=0,o=r.length;s<o;){var h=s++,c=r[h];if(c==n||bt.__interfLoop(c,n))return!0}return bt.__interfLoop(t.__super__,n)},bt.__instanceof=function(t,n){if(n==null)return!1;switch(n){case Xi:return(t|0)===t;case gi:return typeof t=="number";case pi:return typeof t=="boolean";case String:return typeof t=="string";case Array:return t instanceof Array&&t.__enum__==null;case Wi:return!0;default:if(t!=null){if(typeof n=="function"){if(t instanceof n||bt.__interfLoop(bt.getClass(t),n))return!0}else if(typeof n=="object"&&bt.__isNativeObj(n)&&t instanceof n)return!0}else return!1;return n==yi&&t.__name__!=null||n==wi&&t.__ename__!=null?!0:t.__enum__==n}},bt.__nativeClassName=function(t){var n=bt.__toStr.call(t).slice(8,-1);return n=="Object"||n=="Function"||n=="Math"||n=="JSON"?null:n},bt.__isNativeObj=function(t){return bt.__nativeClassName(t)!=null},bt.__resolveNativeClass=function(t){return M[t]};var Yt=function(t){if(t instanceof Array&&t.__enum__==null)this.a=t,this.byteLength=t.length;else{var n=t;this.a=[];for(var r=0;r<n;){var s=r++;this.a[s]=0}this.byteLength=n}};y["js.html.compat.ArrayBuffer"]=Yt,Yt.__name__=["js","html","compat","ArrayBuffer"],Yt.sliceImpl=function(t,n){var r=new Er(this,t,n==null?null:n-t),s=new or(r.byteLength),o=new Er(s);return o.set(r),s},Yt.prototype={slice:function(t,n){return new Yt(this.a.slice(t,n))},__class__:Yt};var Se=function(t,n,r){if(this.buf=t,n==null?this.offset=0:this.offset=n,r==null?this.length=t.byteLength-this.offset:this.length=r,this.offset<0||this.length<0||this.offset+this.length>t.byteLength)throw new X(Ot.OutsideBounds)};y["js.html.compat.DataView"]=Se,Se.__name__=["js","html","compat","DataView"],Se.prototype={getInt8:function(t){var n=this.buf.a[this.offset+t];return n>=128?n-256:n},getUint8:function(t){return this.buf.a[this.offset+t]},getInt16:function(t,n){var r=this.getUint16(t,n);return r>=32768?r-65536:r},getUint16:function(t,n){return n?this.buf.a[this.offset+t]|this.buf.a[this.offset+t+1]<<8:this.buf.a[this.offset+t]<<8|this.buf.a[this.offset+t+1]},getInt32:function(t,n){var r=this.offset+t,s=this.buf.a[r++],o=this.buf.a[r++],h=this.buf.a[r++],c=this.buf.a[r++];return n?s|o<<8|h<<16|c<<24:c|h<<8|o<<16|s<<24},getUint32:function(t,n){var r=this.getInt32(t,n);return r<0?r+4294967296:r},getFloat32:function(t,n){return Zt.i32ToFloat(this.getInt32(t,n))},getFloat64:function(t,n){var r=this.getInt32(t,n),s=this.getInt32(t+4,n);return Zt.i64ToDouble(n?r:s,n?s:r)},setInt8:function(t,n){n<0?this.buf.a[t+this.offset]=n+128&255:this.buf.a[t+this.offset]=n&255},setUint8:function(t,n){this.buf.a[t+this.offset]=n&255},setInt16:function(t,n,r){this.setUint16(t,n<0?n+65536:n,r)},setUint16:function(t,n,r){var s=t+this.offset;r?(this.buf.a[s]=n&255,this.buf.a[s++]=n>>8&255):(this.buf.a[s++]=n>>8&255,this.buf.a[s]=n&255)},setInt32:function(t,n,r){this.setUint32(t,n,r)},setUint32:function(t,n,r){var s=t+this.offset;r?(this.buf.a[s++]=n&255,this.buf.a[s++]=n>>8&255,this.buf.a[s++]=n>>16&255,this.buf.a[s++]=n>>>24):(this.buf.a[s++]=n>>>24,this.buf.a[s++]=n>>16&255,this.buf.a[s++]=n>>8&255,this.buf.a[s++]=n&255)},setFloat32:function(t,n,r){this.setUint32(t,Zt.floatToI32(n),r)},setFloat64:function(t,n,r){var s=Zt.doubleToI64(n);r?(this.setUint32(t,s.low),this.setUint32(t,s.high)):(this.setUint32(t,s.high),this.setUint32(t,s.low))},__class__:Se};var Ce=function(){};y["js.html.compat.Uint8Array"]=Ce,Ce.__name__=["js","html","compat","Uint8Array"],Ce._new=function(t,n,r){var s;if(typeof t=="number"){s=[];for(var o=0;o<t;){var h=o++;s[h]=0}s.byteLength=s.length,s.byteOffset=0,s.buffer=new Yt(s)}else if(bt.__instanceof(t,Yt)){var c=t;n==null&&(n=0),r==null&&(r=c.byteLength-n),n==0?s=c.a:s=c.a.slice(n,n+r),s.byteLength=s.length,s.byteOffset=n,s.buffer=c}else if(t instanceof Array&&t.__enum__==null)s=t.slice(),s.byteLength=s.length,s.byteOffset=0,s.buffer=new Yt(s);else throw new X("TODO "+wt.string(t));return s.subarray=Ce._subarray,s.set=Ce._set,s},Ce._set=function(t,n){var r=this;if(bt.__instanceof(t.buffer,Yt)){var s=t;if(t.byteLength+n>r.byteLength)throw new X("set() outside of range");for(var o=0,h=t.byteLength;o<h;){var c=o++;r[c+n]=s[c]}}else if(t instanceof Array&&t.__enum__==null){var v=t;if(v.length+n>r.byteLength)throw new X("set() outside of range");for(var d=0,m=v.length;d<m;){var b=d++;r[b+n]=v[b]}}else throw new X("TODO")},Ce._subarray=function(t,n){var r=this,s=Ce._new(r.slice(t,n));return s.byteOffset=t,s};var yt=function(t){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,t!=null&&yt.link(t,this,function(n){return n})};y["promhx.base.AsyncBase"]=yt,yt.__name__=["promhx","base","AsyncBase"],yt.link=function(t,n,r){t._update.push({async:n,linkf:function(s){n.handleResolve(r(s))}}),yt.immediateLinkUpdate(t,n,r)},yt.immediateLinkUpdate=function(t,n,r){if(t._errored&&!t._errorPending&&!(t._error.length>0)&&n.handleError(t._errorVal),t._resolved&&!t._pending)try{n.handleResolve(r(t._val))}catch(s){s instanceof X&&(s=s.val),n.handleError(s)}},yt.linkAll=function(t,n){for(var r=function(h,c,v){if(h.length==0||yt.allFulfilled(h)){for(var d,m=[],b=be(t)();b.hasNext();){var w=b.next();m.push(w==c?v:w._val)}d=m,n.handleResolve(d)}},s=be(t)();s.hasNext();){var o=s.next();o._update.push({async:n,linkf:function(h,c,v){return function(d){h(c,v,d)}}(r,function(h){for(var c,v=[],d=be(t)();d.hasNext();){var m=d.next();m!=o&&v.push(m)}return c=v,c}(),o)})}yt.allFulfilled(t)&&n.handleResolve(function(h){for(var c,v=[],d=be(t)();d.hasNext();){var m=d.next();v.push(m._val)}return c=v,c}())},yt.pipeLink=function(t,n,r){var s=!1,o=function(h){if(!s){s=!0;var c=r(h);c._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(c,n,function(v){return v})}};if(t._update.push({async:n,linkf:o}),t._resolved&&!t._pending)try{o(t._val)}catch(h){h instanceof X&&(h=h.val),n.handleError(h)}},yt.allResolved=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._resolved)return!1}return!0},yt.allFulfilled=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._fulfilled)return!1}return!0},yt.prototype={catchError:function(t){return this._error.push(t),this},errorThen:function(t){return this._errorMap=t,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(t){this._resolve(t)},_resolve:function(t){var n=this;this._pending?ft.enqueue(function(r,s){return function(){r(s)}}(ve(this,this._resolve),t)):(this._resolved=!0,this._pending=!0,ft.queue.add(function(){n._val=t;for(var r=0,s=n._update;r<s.length;){var o=s[r];++r;try{o.linkf(t)}catch(h){h instanceof X&&(h=h.val),o.async.handleError(h)}}n._fulfilled=!0,n._pending=!1}),ft.continueOnNextLoop())},handleError:function(t){this._handleError(t)},_handleError:function(t){var n=this,r=function(s){if(n._error.length>0)for(var o=0,h=n._error;o<h.length;){var c=h[o];++o,c(s)}else if(n._update.length>0)for(var v=0,d=n._update;v<d.length;){var m=d[v];++v,m.async.handleError(s)}else throw new X(s);n._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=t,ft.queue.add(function(){if(n._errorMap!=null)try{n._resolve(n._errorMap(t))}catch(s){s instanceof X&&(s=s.val),r(s)}else r(t)}),ft.continueOnNextLoop())},then:function(t){var n=new yt(null);return yt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){n._update=n._update.filter(function(r){return r.async!=t})}),ft.continueOnNextLoop()},isLinked:function(t){for(var n=!1,r=0,s=this._update;r<s.length;){var o=s[r];if(++r,o.async==t)return!0}return n},__class__:yt};var un=f.promhx.Deferred=function(){yt.call(this)};y["promhx.Deferred"]=un,un.__name__=["promhx","Deferred"],un.__super__=yt,un.prototype=C(yt.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},promise:function(){return new $t(this)},stream:function(){return new Nt(this)},publicStream:function(){return new Fe(this)},__class__:un});var $t=f.promhx.Promise=function(t){yt.call(this,t),this._rejected=!1};y["promhx.Promise"]=$t,$t.__name__=["promhx","Promise"],$t.whenAll=function(t){var n=new $t(null);return yt.linkAll(t,n),n},$t.promise=function(t){var n=new $t;return n.handleResolve(t),n},$t.__super__=yt,$t.prototype=C(yt.prototype,{isRejected:function(){return this._rejected},reject:function(t){this._rejected=!0,this.handleError(t)},handleResolve:function(t){if(this._resolved){var n="Promise has already been resolved";throw new X(cn.AlreadyResolved(n))}this._resolve(t)},then:function(t){var n=new $t(null);return yt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){if(n._fulfilled)n._update=n._update.filter(function(s){return s.async!=t});else{var r="Downstream Promise is not fullfilled";n.handleError(cn.DownstreamNotFullfilled(r))}}),ft.continueOnNextLoop()},handleError:function(t){this._rejected=!0,this._handleError(t)},pipe:function(t){var n=new $t(null);return yt.pipeLink(this,n,t),n},errorPipe:function(t){var n=new $t;return this.catchError(function(r){var s=t(r);s.then(ve(n,n._resolve))}),this.then(ve(n,n._resolve)),n},__class__:$t});var Nt=f.promhx.Stream=function(t){yt.call(this,t),this._end_promise=new $t};y["promhx.Stream"]=Nt,Nt.__name__=["promhx","Stream"],Nt.foreach=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.handleResolve(s)}return n.end(),n},Nt.wheneverAll=function(t){var n=new Nt(null);return yt.linkAll(t,n),n},Nt.concatAll=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.concat(s)}return n},Nt.mergeAll=function(t){for(var n=new Nt(null),r=be(t)();r.hasNext();){var s=r.next();n.merge(s)}return n},Nt.stream=function(t){var n=new Nt(null);return n.handleResolve(t),n},Nt.__super__=yt,Nt.prototype=C(yt.prototype,{then:function(t){var n=new Nt(null);return yt.link(this,n,t),this._end_promise._update.push({async:n._end_promise,linkf:function(r){n.end()}}),n},detachStream:function(t){for(var n=[],r=!1,s=0,o=this._update;s<o.length;){var h=o[s];++s,h.async==t?(this._end_promise._update=this._end_promise._update.filter(function(c){return c.async!=t._end_promise}),r=!0):n.push(h)}return this._update=n,r},first:function(){var t=new $t(null);return this.then(function(n){t._resolved||t.handleResolve(n)}),t},handleResolve:function(t){!this._end&&!this._pause&&this._resolve(t)},pause:function(t){t==null&&(t=!this._pause),this._pause=t},pipe:function(t){var n=new Nt(null);return yt.pipeLink(this,n,t),this._end_promise.then(function(r){n.end()}),n},errorPipe:function(t){var n=new Nt(null);return this.catchError(function(r){var s=t(r);s.then(ve(n,n._resolve)),s._end_promise.then((kr=n._end_promise,ve(kr,kr._resolve)))}),this.then(ve(n,n._resolve)),this._end_promise.then(function(r){n.end()}),n},handleEnd:function(){if(this._pending)ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var t;this._resolved?t=oe.Some(this._val):t=oe.None,this._end_promise.handleResolve(t),this._update=[],this._error=[]}},end:function(){return ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop(),this},endThen:function(t){return this._end_promise.then(t)},filter:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:function(r){t(r)&&n.handleResolve(r)}}),yt.immediateLinkUpdate(this,n,function(r){return r}),n},concat:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(this,n,function(r){return r}),this._end_promise.then(function(r){t.pipe(function(s){return n.handleResolve(s),n}),t._end_promise.then(function(s){n.end()})}),n},merge:function(t){var n=new Nt(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),t._update.push({async:n,linkf:ve(n,n.handleResolve)}),yt.immediateLinkUpdate(this,n,function(r){return r}),yt.immediateLinkUpdate(t,n,function(r){return r}),n},__class__:Nt});var Fe=f.promhx.PublicStream=function(t){Nt.call(this,t)};y["promhx.PublicStream"]=Fe,Fe.__name__=["promhx","PublicStream"],Fe.publicstream=function(t){var n=new Fe(null);return n.handleResolve(t),n},Fe.__super__=Nt,Fe.prototype=C(Nt.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},update:function(t){this.handleResolve(t)},__class__:Fe});var ft=function(){};y["promhx.base.EventLoop"]=ft,ft.__name__=["promhx","base","EventLoop"],ft.enqueue=function(t){ft.queue.add(t),ft.continueOnNextLoop()},ft.set_nextLoop=function(t){if(ft.nextLoop!=null)throw new X("nextLoop has already been set");return ft.nextLoop=t,ft.nextLoop},ft.queueEmpty=function(){return ft.queue.isEmpty()},ft.finish=function(t){t==null&&(t=1e3);for(var n=null;t-- >0&&(n=ft.queue.pop())!=null;)n();return ft.queue.isEmpty()},ft.clear=function(){ft.queue=new Z},ft.f=function(){var t=ft.queue.pop();t!=null&&t(),ft.queue.isEmpty()||ft.continueOnNextLoop()},ft.continueOnNextLoop=function(){ft.nextLoop!=null?ft.nextLoop(ft.f):setImmediate(ft.f)};var cn=y["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};cn.AlreadyResolved=function(t){var n=["AlreadyResolved",0,t];return n.__enum__=cn,n.toString=I,n},cn.DownstreamNotFullfilled=function(t){var n=["DownstreamNotFullfilled",1,t];return n.__enum__=cn,n.toString=I,n};var sr=function(){};y["verb.Verb"]=sr,sr.__name__=["verb","Verb"],sr.main=function(){x.log("verb 2.1.0")};var K=function(){};y["verb.core.ArrayExtensions"]=K,K.__name__=["verb","core","ArrayExtensions"],K.alloc=function(t,n){if(!(n<0))for(;t.length<n;)t.push(null)},K.reversed=function(t){var n=t.slice();return n.reverse(),n},K.last=function(t){return t[t.length-1]},K.first=function(t){return t[0]},K.spliceAndInsert=function(t,n,r,s){t.splice(n,r),t.splice(n,0,s)},K.left=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(0,n)},K.right=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n)},K.rightWithPivot=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n-1)},K.unique=function(t,n){if(t.length==0)return[];for(var r=[t.pop()];t.length>0;){for(var s=t.pop(),o=!0,h=0;h<r.length;){var c=r[h];if(++h,n(s,c)){o=!1;break}}o&&r.push(s)}return r};var zt=function(){};y["verb.core.Binomial"]=zt,zt.__name__=["verb","core","Binomial"],zt.get=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;if(n>t-n&&(n=t-n),zt.memo_exists(t,n))return zt.get_memo(t,n);for(var r=1,s=t,o=1,h=n+1;o<h;){var c=o++;if(zt.memo_exists(s,c)){t--,r=zt.get_memo(s,c);continue}r*=t--,r/=c,zt.memoize(s,c,r)}return r},zt.get_no_memo=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;n>t-n&&(n=t-n);for(var r=1,s=1,o=n+1;s<o;){var h=s++;r*=t--,r/=h}return r},zt.memo_exists=function(t,n){return zt.memo.h.hasOwnProperty(t)&&zt.memo.h[t].h.hasOwnProperty(n)},zt.get_memo=function(t,n){return zt.memo.h[t].h[n]},zt.memoize=function(t,n,r){zt.memo.h.hasOwnProperty(t)||zt.memo.set(t,new jt),zt.memo.h[t].h[n]=r};var ue=f.core.BoundingBox=function(t){this.max=null,this.min=null,this.dim=3,this.initialized=!1,t!=null&&this.addRange(t)};y["verb.core.BoundingBox"]=ue,ue.__name__=["verb","core","BoundingBox"],ue.intervalsOverlap=function(t,n,r,s,o){o==null&&(o=-1);var h;o<-.5?h=tt.TOLERANCE:h=o;var c=Math.min(t,n)-h,v=Math.max(t,n)+h,d=Math.min(r,s)-h,m=Math.max(r,s)+h;return c>=d&&c<=m||v>=d&&v<=m||d>=c&&d<=v||m>=c&&m<=v},ue.prototype={fromPoint:function(t){return new ue([t])},add:function(t){if(!this.initialized)return this.dim=t.length,this.min=t.slice(0),this.max=t.slice(0),this.initialized=!0,this;for(var n=0,r=this.dim;n<r;){var s=n++;t[s]>this.max[s]&&(this.max[s]=t[s]),t[s]<this.min[s]&&(this.min[s]=t[s])}return this},addRange:function(t){for(var n=t.length,r=0;r<n;){var s=r++;this.add(t[s])}return this},contains:function(t,n){return n==null&&(n=-1),this.initialized?this.intersects(new ue([t]),n):!1},intersects:function(t,n){if(n==null&&(n=-1),!this.initialized||!t.initialized)return!1;for(var r=this.min,s=this.max,o=t.min,h=t.max,c=0,v=this.dim;c<v;){var d=c++;if(!ue.intervalsOverlap(r[d],s[d],o[d],h[d],n))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var t=0,n=0,r=0,s=this.dim;r<s;){var o=r++,h=this.getAxisLength(o);h>t&&(t=h,n=o)}return n},getAxisLength:function(t){return t<0||t>this.dim-1?0:Math.abs(this.min[t]-this.max[t])},intersect:function(t,n){if(!this.initialized)return null;var r=this.min,s=this.max,o=t.min,h=t.max;if(!this.intersects(t,n))return null;for(var c=[],v=[],d=0,m=this.dim;d<m;){var b=d++;c.push(Math.min(s[b],h[b])),v.push(Math.max(r[b],o[b]))}return new ue([v,c])},__class__:ue};var tt=f.core.Constants=function(){};y["verb.core.Constants"]=tt,tt.__name__=["verb","core","Constants"];var Ft=f.core.SerializableBase=function(){};y["verb.core.SerializableBase"]=Ft,Ft.__name__=["verb","core","SerializableBase"],Ft.prototype={serialize:function(){var t=new Xt;return t.serialize(this),t.toString()},__class__:Ft};var Ln=f.core.Plane=function(t,n){this.origin=t,this.normal=n};y["verb.core.Plane"]=Ln,Ln.__name__=["verb","core","Plane"],Ln.__super__=Ft,Ln.prototype=C(Ft.prototype,{__class__:Ln});var vn=f.core.Ray=function(t,n){this.origin=t,this.dir=n};y["verb.core.Ray"]=vn,vn.__name__=["verb","core","Ray"],vn.__super__=Ft,vn.prototype=C(Ft.prototype,{__class__:vn});var It=f.core.NurbsCurveData=function(t,n,r){this.degree=t,this.controlPoints=r,this.knots=n};y["verb.core.NurbsCurveData"]=It,It.__name__=["verb","core","NurbsCurveData"],It.__super__=Ft,It.prototype=C(Ft.prototype,{__class__:It});var qt=f.core.NurbsSurfaceData=function(t,n,r,s,o){this.degreeU=t,this.degreeV=n,this.knotsU=r,this.knotsV=s,this.controlPoints=o};y["verb.core.NurbsSurfaceData"]=qt,qt.__name__=["verb","core","NurbsSurfaceData"],qt.__super__=Ft,qt.prototype=C(Ft.prototype,{__class__:qt});var ye=f.core.MeshData=function(t,n,r,s){this.faces=t,this.points=n,this.normals=r,this.uvs=s};y["verb.core.MeshData"]=ye,ye.__name__=["verb","core","MeshData"],ye.empty=function(){return new ye([],[],[],[])},ye.__super__=Ft,ye.prototype=C(Ft.prototype,{__class__:ye});var Un=f.core.PolylineData=function(t,n){this.points=t,this.params=n};y["verb.core.PolylineData"]=Un,Un.__name__=["verb","core","PolylineData"],Un.__super__=Ft,Un.prototype=C(Ft.prototype,{__class__:Un});var Rn=f.core.VolumeData=function(t,n,r,s,o,h,c){this.degreeU=t,this.degreeV=n,this.degreeW=r,this.knotsU=s,this.knotsV=o,this.knotsW=h,this.controlPoints=c};y["verb.core.VolumeData"]=Rn,Rn.__name__=["verb","core","VolumeData"],Rn.__super__=Ft,Rn.prototype=C(Ft.prototype,{__class__:Rn});var Gt=f.core.Pair=function(t,n){this.item0=t,this.item1=n};y["verb.core.Pair"]=Gt,Gt.__name__=["verb","core","Pair"],Gt.prototype={__class__:Gt};var re=f.core.Interval=function(t,n){this.min=t,this.max=n};y["verb.core.Interval"]=re,re.__name__=["verb","core","Interval"],re.prototype={__class__:re};var $e=f.core.CurveCurveIntersection=function(t,n,r,s){this.point0=t,this.point1=n,this.u0=r,this.u1=s};y["verb.core.CurveCurveIntersection"]=$e,$e.__name__=["verb","core","CurveCurveIntersection"],$e.prototype={__class__:$e};var Vn=f.core.CurveSurfaceIntersection=function(t,n,r,s){this.u=t,this.uv=n,this.curvePoint=r,this.surfacePoint=s};y["verb.core.CurveSurfaceIntersection"]=Vn,Vn.__name__=["verb","core","CurveSurfaceIntersection"],Vn.prototype={__class__:Vn};var Oe=f.core.MeshIntersectionPoint=function(t,n,r,s,o){this.visited=!1,this.adj=null,this.opp=null,this.uv0=t,this.uv1=n,this.point=r,this.faceIndex0,this.faceIndex1};y["verb.core.MeshIntersectionPoint"]=Oe,Oe.__name__=["verb","core","MeshIntersectionPoint"],Oe.prototype={__class__:Oe};var Dn=f.core.PolylineMeshIntersection=function(t,n,r,s,o){this.point=t,this.u=n,this.uv=r,this.polylineIndex=s,this.faceIndex=o};y["verb.core.PolylineMeshIntersection"]=Dn,Dn.__name__=["verb","core","PolylineMeshIntersection"],Dn.prototype={__class__:Dn};var Fn=f.core.SurfaceSurfaceIntersectionPoint=function(t,n,r,s){this.uv0=t,this.uv1=n,this.point=r,this.dist=s};y["verb.core.SurfaceSurfaceIntersectionPoint"]=Fn,Fn.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],Fn.prototype={__class__:Fn};var On=f.core.TriSegmentIntersection=function(t,n,r,s){this.point=t,this.s=n,this.t=r,this.p=s};y["verb.core.TriSegmentIntersection"]=On,On.__name__=["verb","core","TriSegmentIntersection"],On.prototype={__class__:On};var _n=f.core.CurveTriPoint=function(t,n,r){this.u=t,this.point=n,this.uv=r};y["verb.core.CurveTriPoint"]=_n,_n.__name__=["verb","core","CurveTriPoint"],_n.prototype={__class__:_n};var fe=function(t,n,r,s,o){o==null&&(o=!1),s==null&&(s=-1),this.uv=r,this.point=t,this.normal=n,this.id=s,this.degen=o};y["verb.core.SurfacePoint"]=fe,fe.__name__=["verb","core","SurfacePoint"],fe.fromUv=function(t,n){return new fe(null,null,[t,n])},fe.prototype={__class__:fe};var ar=f.core.CurvePoint=function(t,n){this.u=t,this.pt=n};y["verb.core.CurvePoint"]=ar,ar.__name__=["verb","core","CurvePoint"],ar.prototype={__class__:ar};var qn=f.core.KdTree=function(t,n){this.dim=3,this.points=t,this.distanceFunction=n,this.dim=t[0].point.length,this.root=this.buildTree(t,0,null)};y["verb.core.KdTree"]=qn,qn.__name__=["verb","core","KdTree"],qn.prototype={buildTree:function(t,n,r){var s=n%this.dim,o,h;return t.length==0?null:t.length==1?new fn(t[0],s,r):(t.sort(function(c,v){var d=c.point[s]-v.point[s];return d==0?0:d>0?1:-1}),o=Math.floor(t.length/2),h=new fn(t[o],s,r),h.left=this.buildTree(t.slice(0,o),n+1,h),h.right=this.buildTree(t.slice(o+1),n+1,h),h)},nearest:function(t,n,r){var s=this,o=new Gn(function(w){return-w.item1}),h,c=null;c=function(w){for(var A,P=w.dimension,z=s.distanceFunction(t,w.kdPoint.point),E,k=[],T=0,B=s.dim;T<B;)T++,k.push(0);E=k;for(var L,R,F=function(G,J){o.push(new Gt(G,J)),o.size()>n&&o.pop()},W=0,D=s.dim;W<D;){var V=W++;V==w.dimension?E[V]=t[V]:E[V]=w.kdPoint.point[V]}if(L=s.distanceFunction(E,w.kdPoint.point),w.right==null&&w.left==null){(o.size()<n||z<o.peek().item1)&&F(w,z);return}w.right==null?A=w.left:w.left==null?A=w.right:t[P]<w.kdPoint.point[P]?A=w.left:A=w.right,c(A),(o.size()<n||z<o.peek().item1)&&F(w,z),(o.size()<n||Math.abs(L)<o.peek().item1)&&(A==w.left?R=w.right:R=w.left,R!=null&&c(R))},h=c;for(var v=0;v<n;)v++,o.push(new Gt(null,r));h(this.root);for(var d=[],m=0;m<n;){var b=m++;o.content[b].item0!=null&&d.push(new Gt(o.content[b].item0.kdPoint,o.content[b].item1))}return d},__class__:qn};var Gn=function(t){this.content=[],this.scoreFunction=t};y["verb.core.BinaryHeap"]=Gn,Gn.__name__=["verb","core","BinaryHeap"],Gn.prototype={push:function(t){this.content.push(t),this.bubbleUp(this.content.length-1)},pop:function(){var t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.sinkDown(0)),t},peek:function(){return this.content[0]},remove:function(t){for(var n=this.content.length,r=0;r<n;){var s=r++;if(this.content[s]==t){var o=this.content.pop();s!=n-1&&(this.content[s]=o,this.scoreFunction(o)<this.scoreFunction(t)?this.bubbleUp(s):this.sinkDown(s));return}}throw new X("Node not found.")},size:function(){return this.content.length},bubbleUp:function(t){for(var n=this.content[t];t>0;){var r=Math.floor((t+1)/2)-1,s=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(s))this.content[r]=n,this.content[t]=s,t=r;else break}},sinkDown:function(t){for(var n=this.content.length,r=this.content[t],s=this.scoreFunction(r);;){var o=(t+1)*2,h=o-1,c=-1,v=0;if(h<n){var d=this.content[h];v=this.scoreFunction(d),v<s&&(c=h)}if(o<n){var m=this.content[o],b=this.scoreFunction(m);b<(c==-1?s:v)&&(c=o)}if(c!=-1)this.content[t]=this.content[c],this.content[c]=r,t=c;else break}},__class__:Gn};var dn=f.core.KdPoint=function(t,n){this.point=t,this.obj=n};y["verb.core.KdPoint"]=dn,dn.__name__=["verb","core","KdPoint"],dn.prototype={__class__:dn};var fn=f.core.KdNode=function(t,n,r){this.kdPoint=t,this.left=null,this.right=null,this.parent=r,this.dimension=n};y["verb.core.KdNode"]=fn,fn.__name__=["verb","core","KdNode"],fn.prototype={__class__:fn};var Le=function(){};y["verb.eval.IBoundingBoxTree"]=Le,Le.__name__=["verb","eval","IBoundingBoxTree"],Le.prototype={__class__:Le};var ke=function(t,n){this._boundingBox=null,this._curve=t,n==null&&(n=u.domain(this._curve.knots)/64),this._knotTol=n};y["verb.core.LazyCurveBoundingBoxTree"]=ke,ke.__name__=["verb","core","LazyCurveBoundingBoxTree"],ke.__interfaces__=[Le],ke.prototype={split:function(){var t=K.first(this._curve.knots),n=K.last(this._curve.knots),r=n-t,s=Ht.curveSplit(this._curve,(n+t)/2+r*.1*Math.random());return new Gt(new ke(s[0],this._knotTol),new ke(s[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new ue(S.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(t){return u.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:ke};var Ie=function(t,n){if(this._boundingBox=null,this._mesh=t,n==null){for(var r=[],s=0,o=t.faces.length;s<o;){var h=s++;r.push(h)}n=r}this._faceIndices=n};y["verb.core.LazyMeshBoundingBoxTree"]=Ie,Ie.__name__=["verb","core","LazyMeshBoundingBoxTree"],Ie.__interfaces__=[Le],Ie.prototype={split:function(){var t=Kt.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),n=K.left(t),r=K.right(t);return new Gt(new Ie(this._mesh,n),new Ie(this._mesh,r))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=Kt.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(t){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:Ie};var Ee=function(t,n){this._boundingBox=null,this._polyline=t,n==null&&(n=new re(0,t.points.length!=0?t.points.length-1:0)),this._interval=n};y["verb.core.LazyPolylineBoundingBoxTree"]=Ee,Ee.__name__=["verb","core","LazyPolylineBoundingBoxTree"],Ee.__interfaces__=[Le],Ee.prototype={split:function(){var t=this._interval.min,n=this._interval.max,r=t+Math.ceil((n-t)/2),s=new re(t,r),o=new re(r,n);return new Gt(new Ee(this._polyline,s),new Ee(this._polyline,o))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new ue(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(t){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:Ee};var qe=function(t,n,r,s){n==null&&(n=!1),this._boundingBox=null,this._surface=t,this._splitV=n,r==null&&(r=u.domain(t.knotsU)/16),s==null&&(s=u.domain(t.knotsV)/16),this._knotTolU=r,this._knotTolV=s};y["verb.core.LazySurfaceBoundingBoxTree"]=qe,qe.__name__=["verb","core","LazySurfaceBoundingBoxTree"],qe.__interfaces__=[Le],qe.prototype={split:function(){var t,n;this._splitV?(t=K.first(this._surface.knotsV),n=K.last(this._surface.knotsV)):(t=K.first(this._surface.knotsU),n=K.last(this._surface.knotsU));var r=(t+n)/2,s=Ht.surfaceSplit(this._surface,r,this._splitV);return new Gt(new qe(s[0],!this._splitV,this._knotTolU,this._knotTolV),new qe(s[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new ue;for(var t=0,n=this._surface.controlPoints;t<n.length;){var r=n[t];++t,this._boundingBox.addRange(S.dehomogenize1d(r))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(t){return u.domain(this._surface.knotsV)<this._knotTolV&&u.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:qe};var At=f.core.Mat=function(){};y["verb.core.Mat"]=At,At.__name__=["verb","core","Mat"],At.mul=function(t,n){for(var r=[],s=0,o=n.length;s<o;){var h=s++;r.push(u.mul(t,n[h]))}return r},At.mult=function(t,n){var r,s,o,h,c,v,d,m;r=t.length,s=n.length,o=n[0].length,h=[];for(var b=r-1,w=0,A=0;b>=0;){for(c=[],v=t[b],A=o-1;A>=0;){for(d=v[s-1]*n[s-1][A],w=s-2;w>=1;)m=w-1,d+=v[w]*n[w][A]+v[m]*n[m][A],w-=2;w==0&&(d+=v[0]*n[0][A]),c[A]=d,A--}h[b]=c,b--}return h},At.add=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.add(t[h],n[h]))}return r},At.div=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.div(t[h],n))}return r},At.sub=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.sub(t[h],n[h]))}return r},At.dot=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(u.dot(t[h],n))}return r},At.identity=function(t){for(var n=u.zeros2d(t,t),r=0;r<t;){var s=r++;n[s][s]=1}return n},At.transpose=function(t){if(t.length==0)return[];for(var n=[],r=0,s=t[0].length;r<s;){var o=r++;n.push(function(h){for(var c,v=[],d=0,m=t.length;d<m;){var b=d++;v.push(t[b][o])}return c=v,c}())}return n},At.solve=function(t,n){return At.LUsolve(At.LU(t),n)},At.LUsolve=function(t,n){var r,s,o=t.LU,h=o.length,c=n.slice(),v=t.P,d,m,b;for(r=h-1;r!=-1;)c[r]=n[r],--r;for(r=0;r<h;){for(d=v[r],v[r]!=r&&(b=c[r],c[r]=c[d],c[d]=b),m=o[r],s=0;s<r;)c[r]-=c[s]*m[s],++s;++r}for(r=h-1;r>=0;){for(m=o[r],s=r+1;s<h;)c[r]-=c[s]*m[s],++s;c[r]/=m[r],--r}return c},At.LU=function(t){for(var n,r,s,o,h,c,v,d,m,b=[],w=0,A=t.length;w<A;){var P=w++;b.push(t[P].slice())}t=b;var z=t.length,E=z-1,k=[];for(s=0;s<z;){for(v=s,c=t[s],m=Math.abs(c[s]),r=s+1;r<z;)o=Math.abs(t[r][s]),m<o&&(m=o,v=r),++r;for(k[s]=v,v!=s&&(t[s]=t[v],t[v]=c,c=t[s]),h=c[s],n=s+1;n<z;)t[n][s]/=h,++n;for(n=s+1;n<z;){for(d=t[n],r=s+1;r<E;)d[r]-=d[s]*c[r],++r,d[r]-=d[s]*c[r],++r;r==E&&(d[r]-=d[s]*c[r]),++n}++s}return new Kn(t,k)};var Kn=function(t,n){this.LU=t,this.P=n};y["verb.core._Mat.LUDecomp"]=Kn,Kn.__name__=["verb","core","_Mat","LUDecomp"],Kn.prototype={__class__:Kn};var Kt=f.core.Mesh=function(){};y["verb.core.Mesh"]=Kt,Kt.__name__=["verb","core","Mesh"],Kt.getTriangleNorm=function(t,n){var r=t[n[0]],s=t[n[1]],o=t[n[2]],h=u.sub(s,r),c=u.sub(o,r),v=u.cross(h,c);return u.mul(1/u.norm(v),v)},Kt.makeMeshAabb=function(t,n){for(var r=new ue,s=0;s<n.length;){var o=n[s];++s,r.add(t.points[t.faces[o][0]]),r.add(t.points[t.faces[o][1]]),r.add(t.points[t.faces[o][2]])}return r},Kt.sortTrianglesOnLongestAxis=function(t,n,r){for(var s=t.getLongestAxis(),o=[],h=0;h<r.length;){var c=r[h];++h;var v=Kt.getMinCoordOnAxis(n.points,n.faces[c],s);o.push(new Gt(v,c))}o.sort(function(A,P){var z=A.item0,E=P.item0;return z==E?0:z>E?1:-1});for(var d=[],m=0,b=o.length;m<b;){var w=m++;d.push(o[w].item1)}return d},Kt.getMinCoordOnAxis=function(t,n,r){for(var s=1/0,o=0;o<3;){var h=o++,c=t[n[h]][r];c<s&&(s=c)}return s},Kt.getTriangleCentroid=function(t,n){for(var r=[0,0,0],s=0;s<3;)for(var o=s++,h=0;h<3;){var c=h++;r[c]+=t[n[o]][c]}for(var v=0;v<3;){var d=v++;r[d]/=3}return r},Kt.triangleUVFromPoint=function(t,n,r){var s=t.faces[n],o=t.points[s[0]],h=t.points[s[1]],c=t.points[s[2]],v=t.uvs[s[0]],d=t.uvs[s[1]],m=t.uvs[s[2]],b=u.sub(o,r),w=u.sub(h,r),A=u.sub(c,r),P=u.norm(u.cross(u.sub(o,h),u.sub(o,c))),z=u.norm(u.cross(w,A))/P,E=u.norm(u.cross(A,b))/P,k=u.norm(u.cross(b,w))/P;return u.add(u.mul(z,v),u.add(u.mul(E,d),u.mul(k,m)))};var Ge=function(t,n){if(this._empty=!1,this._face=-1,n==null){for(var r=[],s=0,o=t.faces.length;s<o;){var h=s++;r.push(h)}n=r}if(this._boundingBox=Kt.makeMeshAabb(t,n),n.length<1){this._empty=!0;return}else if(n.length<2){this._face=n[0];return}var c=Kt.sortTrianglesOnLongestAxis(this._boundingBox,t,n),v=K.left(c),d=K.right(c);this._children=new Gt(new Ge(t,v),new Ge(t,d))};y["verb.core.MeshBoundingBoxTree"]=Ge,Ge.__name__=["verb","core","MeshBoundingBoxTree"],Ge.__interfaces__=[Le],Ge.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(t){return this._children==null},empty:function(){return this._empty},__class__:Ge};var we=f.core.Minimizer=function(){};y["verb.core.Minimizer"]=we,we.__name__=["verb","core","Minimizer"],we.uncmin=function(t,n,r,s,o){r==null&&(r=1e-8),s==null&&(s=function(W){return we.numericalGradient(t,W)}),o==null&&(o=1e3),n=n.slice(0);var h=n.length,c=t(n),v=c,d;if(isNaN(c))throw new X("uncmin: f(x0) is a NaN!");r=Math.max(r,tt.EPSILON);var m,b,w,A=At.identity(h),P=0,z=[],E,k,T,B,L,R,F="";for(b=s(n);P<o;){if(!u.all(u.finite(b))){F="Gradient has Infinity or NaN";break}if(m=u.neg(At.dot(A,b)),!u.all(u.finite(m))){F="Search direction has Infinity or NaN";break}if(R=u.norm(m),R<r){F="Newton step smaller than tol";break}for(L=1,d=u.dot(b,m),E=n;P<o&&!(L*R<r);){if(z=u.mul(L,m),E=u.add(n,z),v=t(E),v-c>=.1*L*d||isNaN(v)){L*=.5,++P;continue}break}if(L*R<r){F="Line search step size smaller than tol";break}if(P==o){F="maxit reached during line search";break}w=s(E),k=u.sub(w,b),B=u.dot(k,z),T=At.dot(A,k),A=At.sub(At.add(A,At.mul((B+u.dot(k,T))/(B*B),we.tensor(z,z))),At.div(At.add(we.tensor(T,z),we.tensor(z,T)),B)),n=E,c=v,b=w,++P}return new jn(n,c,b,A,P,F)},we.numericalGradient=function(t,n){var r=n.length,s=t(n);if(s==NaN)throw new X("gradient: f(x) is a NaN!");for(var o=n.slice(0),h,c,v=[],d,m=.001,b,w,A,P=0,z,E,k,T=0;T<r;)for(var B=T++,L=Math.max(1e-6*s,1e-8);;){if(++P,P>20)throw new X("Numerical gradient fails");if(o[B]=n[B]+L,h=t(o),o[B]=n[B]-L,c=t(o),o[B]=n[B],isNaN(h)||isNaN(c)){L/=16;continue}if(v[B]=(h-c)/(2*L),b=n[B]-L,w=n[B],A=n[B]+L,z=(h-s)/L,E=(s-c)/L,k=u.max([Math.abs(v[B]),Math.abs(s),Math.abs(h),Math.abs(c),Math.abs(b),Math.abs(w),Math.abs(A),1e-8]),d=Math.min(u.max([Math.abs(z-v[B]),Math.abs(E-v[B]),Math.abs(z-E)])/k,L/k),d>m)L/=16;else break}return v},we.tensor=function(t,n){for(var r=t.length,s=n.length,o=[],h,c,v=r-1;v>=0;){h=[],c=t[v];for(var d=s-1;d>=3;)h[d]=c*n[d],--d,h[d]=c*n[d],--d,h[d]=c*n[d],--d,h[d]=c*n[d],--d;for(;d>=0;)h[d]=c*n[d],--d;o[v]=h,v--}return o};var jn=function(t,n,r,s,o,h){this.solution=t,this.value=n,this.gradient=r,this.invHessian=s,this.iterations=o,this.message=h};y["verb.core.MinimizationResult"]=jn,jn.__name__=["verb","core","MinimizationResult"],jn.prototype={__class__:jn};var mn=function(){};y["verb.core.ISerializable"]=mn,mn.__name__=["verb","core","ISerializable"],mn.prototype={__class__:mn};var Cr=f.core.Deserializer=function(){};y["verb.core.Deserializer"]=Cr,Cr.__name__=["verb","core","Deserializer"],Cr.deserialize=function(t){var n=new Dt(t),r=n.unserialize();return r};var ce=f.core.Trig=function(){};y["verb.core.Trig"]=ce,ce.__name__=["verb","core","Trig"],ce.isPointInPlane=function(t,n,r){return Math.abs(u.dot(u.sub(t,n.origin),n.normal))<r},ce.distToSegment=function(t,n,r){var s=ce.segmentClosestPoint(n,t,r,0,1);return u.dist(n,s.pt)},ce.rayClosestPoint=function(t,n,r){var s=u.sub(t,n),o=u.dot(s,r),h=u.add(n,u.mul(o,r));return h},ce.distToRay=function(t,n,r){var s=ce.rayClosestPoint(t,n,r),o=u.sub(s,t);return u.norm(o)},ce.threePointsAreFlat=function(t,n,r,s){var o=u.sub(n,t),h=u.sub(r,t),c=u.cross(o,h),v=u.dot(c,c);return v<s},ce.segmentClosestPoint=function(t,n,r,s,o){var h=u.sub(r,n),c=u.norm(h);if(c<tt.EPSILON)return{u:s,pt:n};var v=n,d=u.mul(1/c,h),m=u.sub(t,v),b=u.dot(m,d);return b<0?{u:s,pt:n}:b>c?{u:o,pt:r}:{u:s+(o-s)*b/c,pt:u.add(v,u.mul(b,d))}};var u=f.core.Vec=function(){};y["verb.core.Vec"]=u,u.__name__=["verb","core","Vec"],u.angleBetween=function(t,n){return Math.acos(u.dot(t,n)/(u.norm(t)*u.norm(n)))},u.positiveAngleBetween=function(t,n,r){var s=u.cross(t,n),o=u.norm(t),h=u.norm(n),c=o*h,v=u.dot(t,n),d=u.norm(s)/c,m=v/c,b=Math.atan2(d,m),w=u.dot(r,s);return Math.abs(w)<tt.EPSILON||w>0?b:-b},u.signedAngleBetween=function(t,n,r){var s=u.cross(t,n),o=u.norm(t),h=u.norm(n),c=o*h,v=u.dot(t,n),d=u.norm(s)/c,m=v/c,b=Math.atan2(d,m),w=u.dot(r,s);return w>0?b:2*Math.PI-b},u.angleBetweenNormalized2d=function(t,n){var r=t[0]*n[1]-t[1]*n[0];return Math.atan2(r,u.dot(t,n))},u.domain=function(t){return K.last(t)-K.first(t)},u.range=function(t){for(var n=[],r=0,s=0;s<t;)s++,n.push(r),r+=1;return n},u.span=function(t,n,r){if(r==null)return[];if(r<tt.EPSILON)return[];if(t>n&&r>0)return[];if(n>t&&r<0)return[];for(var s=[],o=t;o<=n;)s.push(o),o+=r;return s},u.neg=function(t){return t.map(function(n){return-n})},u.min=function(t){return q.fold(t,function(n,r){return Math.min(n,r)},1/0)},u.max=function(t){return q.fold(t,function(n,r){return Math.max(n,r)},-1/0)},u.all=function(t){return q.fold(t,function(n,r){return r&&n},!0)},u.finite=function(t){return t.map(function(n){return isFinite(n)})},u.onRay=function(t,n,r){return u.add(t,u.mul(r,n))},u.lerp=function(t,n,r){return u.add(u.mul(t,n),u.mul(1-t,r))},u.normalized=function(t){return u.div(t,u.norm(t))},u.cross=function(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]},u.dist=function(t,n){return u.norm(u.sub(t,n))},u.distSquared=function(t,n){return u.normSquared(u.sub(t,n))},u.sum=function(t){return q.fold(t,function(n,r){return r+n},0)},u.addAll=function(t){var n=be(t)();if(!n.hasNext())return null;var r=n.next().length;return q.fold(t,function(s,o){return u.add(o,s)},u.rep(r,0))},u.addAllMutate=function(t){for(var n=t[0],r=1,s=t.length;r<s;){var o=r++;u.addMutate(n,t[o])}},u.addMulMutate=function(t,n,r){for(var s=0,o=t.length;s<o;){var h=s++;t[h]=t[h]+n*r[h]}},u.subMulMutate=function(t,n,r){for(var s=0,o=t.length;s<o;){var h=s++;t[h]=t[h]-n*r[h]}},u.addMutate=function(t,n){for(var r=0,s=t.length;r<s;){var o=r++;t[o]=t[o]+n[o]}},u.subMutate=function(t,n){for(var r=0,s=t.length;r<s;){var o=r++;t[o]=t[o]-n[o]}},u.mulMutate=function(t,n){for(var r=0,s=n.length;r<s;){var o=r++;n[o]=n[o]*t}},u.norm=function(t){var n=u.normSquared(t);return n!=0?Math.sqrt(n):n},u.normSquared=function(t){return q.fold(t,function(n,r){return r+n*n},0)},u.rep=function(t,n){for(var r=[],s=0;s<t;)s++,r.push(n);return r},u.zeros1d=function(t){for(var n=[],r=0;r<t;)r++,n.push(0);return n},u.zeros2d=function(t,n){for(var r=[],s=0;s<t;)s++,r.push(u.zeros1d(n));return r},u.zeros3d=function(t,n,r){for(var s=[],o=0;o<t;)o++,s.push(u.zeros2d(n,r));return s},u.dot=function(t,n){for(var r=0,s=0,o=t.length;s<o;){var h=s++;r+=t[h]*n[h]}return r},u.add=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]+n[h])}return r},u.mul=function(t,n){for(var r=[],s=0,o=n.length;s<o;){var h=s++;r.push(t*n[h])}return r},u.div=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]/n)}return r},u.sub=function(t,n){for(var r=[],s=0,o=t.length;s<o;){var h=s++;r.push(t[h]-n[h])}return r},u.isZero=function(t){for(var n=0,r=t.length;n<r;){var s=n++;if(Math.abs(t[s])>tt.TOLERANCE)return!1}return!0},u.sortedSetUnion=function(t,n){for(var r=[],s=0,o=0;s<t.length||o<n.length;){if(s>=t.length){r.push(n[o]),o++;continue}else if(o>=n.length){r.push(t[s]),s++;continue}var h=t[s]-n[o];if(Math.abs(h)<tt.EPSILON){r.push(t[s]),s++,o++;continue}if(h>0){r.push(n[o]),o++;continue}r.push(t[s]),s++}return r},u.sortedSetSub=function(t,n){for(var r=[],s=0,o=0;s<t.length;){if(o>=n.length){r.push(t[s]),s++;continue}if(Math.abs(t[s]-n[o])<tt.EPSILON){s++,o++;continue}r.push(t[s]),s++}return r};var _t=f.eval.Analyze=function(){};y["verb.eval.Analyze"]=_t,_t.__name__=["verb","eval","Analyze"],_t.knotMultiplicities=function(t){for(var n=[new gn(t[0],0)],r=n[0],s=0;s<t.length;){var o=t[s];++s,Math.abs(o-r.knot)>tt.EPSILON&&(r=new gn(o,0),n.push(r)),r.inc()}return n},_t.isRationalSurfaceClosed=function(t,n){n==null&&(n=!0);var r;n?r=t.controlPoints:r=At.transpose(t.controlPoints);for(var s=0,o=r[0].length;s<o;){var h=s++,c=u.dist(K.first(r)[h],K.last(r)[h])<tt.EPSILON;if(!c)return!1}return!0},_t.rationalSurfaceClosestPoint=function(t,n){var r=_t.rationalSurfaceClosestParam(t,n);return S.rationalSurfacePoint(t,r[0],r[1])},_t.rationalSurfaceClosestParam=function(t,n){for(var r=5,s=0,o,h=1e-4,c=5e-4,v,d=t.knotsU[0],m=K.last(t.knotsU),b=t.knotsV[0],w=K.last(t.knotsV),A=_t.isRationalSurfaceClosed(t),P=_t.isRationalSurfaceClosed(t,!1),z,E=Mt.rationalSurfaceAdaptive(t,new Ke),k=1/0,T=0,B=E.points.length;T<B;){var L=T++,R=E.points[L],F=u.normSquared(u.sub(n,R));F<k&&(k=F,z=E.uvs[L])}for(var W=function(Et){return S.rationalSurfaceDerivatives(t,Et[0],Et[1],2)},D=function(Et,Bt,kt){var Rt=Bt[1][0],ie=Bt[0][1],ge=Bt[2][0],ne=Bt[0][2],te=Bt[1][1],se=Bt[1][1],_e=u.dot(Rt,kt),xe=u.dot(ie,kt),Ne=[-_e,-xe],Ae=u.dot(Rt,Rt)+u.dot(ge,kt),Pe=u.dot(Rt,ie)+u.dot(te,kt),Me=u.dot(Rt,ie)+u.dot(se,kt),Re=u.dot(ie,ie)+u.dot(ne,kt),bn=[[Ae,Pe],[Me,Re]],en=At.solve(bn,Ne);return u.add(en,Et)};s<r;){o=W(z),v=u.sub(o[0][0],n);var V=u.norm(v),G=u.dot(o[1][0],v),J=u.norm(o[1][0])*V,$=u.dot(o[0][1],v),nt=u.norm(o[0][1])*V,st=G/J,rt=$/nt,at=V<h,et=st<c,ot=rt<c;if(at&&et&&ot)return z;var O=D(z,o,v);O[0]<d?A?O=[m-(O[0]-d),O[1]]:O=[d+tt.EPSILON,O[1]]:O[0]>m&&(A?O=[d+(O[0]-m),O[1]]:O=[m-tt.EPSILON,O[1]]),O[1]<b?P?O=[O[0],w-(O[1]-b)]:O=[O[0],b+tt.EPSILON]:O[1]>w&&(P?O=[O[0],b+(O[0]-w)]:O=[O[0],w-tt.EPSILON]);var ut=u.norm(u.mul(O[0]-z[0],o[1][0])),gt=u.norm(u.mul(O[1]-z[1],o[0][1]));if(ut+gt<h)return z;z=O,s++}return z},_t.rationalCurveClosestPoint=function(t,n){return S.rationalCurvePoint(t,_t.rationalCurveClosestParam(t,n))},_t.rationalCurveClosestParam=function(t,n){for(var r=1/0,s=0,o=Mt.rationalCurveRegularSample(t,t.controlPoints.length*t.degree,!0),h=0,c=o.length-1;h<c;){var v=h++,d=o[v][0],m=o[v+1][0],b=o[v].slice(1),w=o[v+1].slice(1),A=ce.segmentClosestPoint(n,b,w,d,m),P=u.norm(u.sub(n,A.pt));P<r&&(r=P,s=A.u)}for(var z=5,E=0,k,T=1e-4,B=5e-4,L,R=t.knots[0],F=K.last(t.knots),W=u.normSquared(u.sub(t.controlPoints[0],K.last(t.controlPoints)))<tt.EPSILON,D=s,V=function(O){return S.rationalCurveDerivatives(t,O,2)},G=function(O,ut,gt){var Et=u.dot(ut[1],gt),Bt=u.dot(ut[2],gt),kt=u.dot(ut[1],ut[1]),Rt=Bt+kt;return O-Et/Rt};E<z;){k=V(D),L=u.sub(k[0],n);var J=u.norm(L),$=u.dot(k[1],L),nt=u.norm(k[1])*J,st=$/nt,rt=J<T,at=Math.abs(st)<B;if(rt&&at)return D;var et=G(D,k,L);et<R?W?et=F-(et-R):et=R:et>F&&(W?et=R+(et-F):et=F);var ot=u.norm(u.mul(et-D,k[1]));if(ot<T)return D;D=et,E++}return D},_t.rationalCurveParamAtArcLength=function(t,n,r,s,o){if(r==null&&(r=.001),n<tt.EPSILON)return t.knots[0];var h;s!=null?h=s:h=vt.decomposeCurveIntoBeziers(t);var c=0;h[c];var v=-tt.EPSILON,d;for(o!=null?d=o:d=[];v<n&&c<h.length;){if(c<d.length?d[c]=d[c]:d[c]=_t.rationalBezierCurveArcLength(t),v+=d[c],n<v+tt.EPSILON)return _t.rationalBezierCurveParamAtArcLength(t,n,r,d[c]);c++}return-1},_t.rationalBezierCurveParamAtArcLength=function(t,n,r,s){if(n<0)return t.knots[0];var o;if(s!=null?o=s:o=_t.rationalBezierCurveArcLength(t),n>o)return K.last(t.knots);var h=t.knots[0],c=0,v=K.last(t.knots),d=o,m=0,b=0,w;for(r!=null?w=r:w=tt.TOLERANCE*2;d-c>w;)m=(h+v)/2,b=_t.rationalBezierCurveArcLength(t,m),b>n?(v=m,d=b):(h=m,c=b);return(h+v)/2},_t.rationalCurveArcLength=function(t,n,r){r==null&&(r=16),n==null?n=K.last(t.knots):n=n;for(var s=vt.decomposeCurveIntoBeziers(t),o=0,h=s[0],c=0;o<s.length&&h.knots[0]+tt.EPSILON<n;){var v=Math.min(K.last(h.knots),n);c+=_t.rationalBezierCurveArcLength(h,v,r),h=s[++o]}return c},_t.rationalBezierCurveArcLength=function(t,n,r){r==null&&(r=16);var s;n==null?s=K.last(t.knots):s=n;for(var o=(s-t.knots[0])/2,h=0,c=t.degree+r,v,d,m=0;m<c;){var b=m++;v=o*_t.Tvalues[c][b]+o+t.knots[0],d=S.rationalCurveDerivatives(t,v,1),h+=_t.Cvalues[c][b]*u.norm(d[1])}return o*h};var gn=f.eval.KnotMultiplicity=function(t,n){this.knot=t,this.mult=n};y["verb.eval.KnotMultiplicity"]=gn,gn.__name__=["verb","eval","KnotMultiplicity"],gn.prototype={inc:function(){this.mult++},__class__:gn};var me=f.eval.Check=function(){};y["verb.eval.Check"]=me,me.__name__=["verb","eval","Check"],me.isValidKnotVector=function(t,n){if(t.length==0||t.length<(n+1)*2)return!1;for(var r=K.first(t),s=0,o=n+1;s<o;){var h=s++;if(Math.abs(t[h]-r)>tt.EPSILON)return!1}r=K.last(t);for(var c=t.length-n-1,v=t.length;c<v;){var d=c++;if(Math.abs(t[d]-r)>tt.EPSILON)return!1}return me.isNonDecreasing(t)},me.isNonDecreasing=function(t){for(var n=K.first(t),r=0,s=t.length;r<s;){var o=r++;if(t[o]<n-tt.EPSILON)return!1;n=t[o]}return!0},me.isValidNurbsCurveData=function(t){if(t.controlPoints==null)throw new X("Control points array cannot be null!");if(t.degree==null)throw new X("Degree cannot be null!");if(t.degree<1)throw new X("Degree must be greater than 1!");if(t.knots==null)throw new X("Knots cannot be null!");if(t.knots.length!=t.controlPoints.length+t.degree+1)throw new X("controlPoints.length + degree + 1 must equal knots.length!");if(!me.isValidKnotVector(t.knots,t.degree))throw new X("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t},me.isValidNurbsSurfaceData=function(t){if(t.controlPoints==null)throw new X("Control points array cannot be null!");if(t.degreeU==null)throw new X("DegreeU cannot be null!");if(t.degreeV==null)throw new X("DegreeV cannot be null!");if(t.degreeU<1)throw new X("DegreeU must be greater than 1!");if(t.degreeV<1)throw new X("DegreeV must be greater than 1!");if(t.knotsU==null)throw new X("KnotsU cannot be null!");if(t.knotsV==null)throw new X("KnotsV cannot be null!");if(t.knotsU.length!=t.controlPoints.length+t.degreeU+1)throw new X("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(t.knotsV.length!=t.controlPoints[0].length+t.degreeV+1)throw new X("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!me.isValidKnotVector(t.knotsU,t.degreeU)||!me.isValidKnotVector(t.knotsV,t.degreeV))throw new X("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t};var Ht=f.eval.Divide=function(){};y["verb.eval.Divide"]=Ht,Ht.__name__=["verb","eval","Divide"],Ht.surfaceSplit=function(t,n,r){r==null&&(r=!1);var s,o,h;r?(h=t.controlPoints,s=t.knotsV,o=t.degreeV):(h=At.transpose(t.controlPoints),s=t.knotsU,o=t.degreeU);for(var c,v=[],d=0,m=o+1;d<m;)d++,v.push(n);c=v;for(var b=[],w=[],A=S.knotSpan(o,n,s),P=null,z=0;z<h.length;){var E=h[z];++z,P=vt.curveKnotRefine(new It(o,s,E),c),b.push(P.controlPoints.slice(0,A+1)),w.push(P.controlPoints.slice(A+1))}var k=P.knots.slice(0,A+o+2),T=P.knots.slice(A+1);return r?[new qt(t.degreeU,o,t.knotsU.slice(),k,b),new qt(t.degreeU,o,t.knotsU.slice(),T,w)]:(b=At.transpose(b),w=At.transpose(w),[new qt(o,t.degreeV,k,t.knotsV.slice(),b),new qt(o,t.degreeV,T,t.knotsV.slice(),w)])},Ht.curveSplit=function(t,n){var r=t.degree;t.controlPoints;for(var s=t.knots,o,h=[],c=0,v=r+1;c<v;)c++,h.push(n);o=h;var d=vt.curveKnotRefine(t,o),m=S.knotSpan(r,n,s),b=d.knots.slice(0,m+r+2),w=d.knots.slice(m+1),A=d.controlPoints.slice(0,m+1),P=d.controlPoints.slice(m+1);return[new It(r,b,A),new It(r,w,P)]},Ht.rationalCurveByEqualArcLength=function(t,n){var r=_t.rationalCurveArcLength(t),s=r/n;return Ht.rationalCurveByArcLength(t,s)},Ht.rationalCurveByArcLength=function(t,n){var r=vt.decomposeCurveIntoBeziers(t),s=r.map(function(A){return _t.rationalBezierCurveArcLength(A)}),o=u.sum(s),h=[new pn(t.knots[0],0)];if(n>o)return h;for(var c=n,v=0,d=c,m=0,b=0,w;v<r.length;){for(m+=s[v];d<m+tt.EPSILON;)w=_t.rationalBezierCurveParamAtArcLength(r[v],d-b,tt.TOLERANCE,s[v]),h.push(new pn(w,d)),d+=c;b+=s[v],v++}return h};var pn=f.eval.CurveLengthSample=function(t,n){this.u=t,this.len=n};y["verb.eval.CurveLengthSample"]=pn,pn.__name__=["verb","eval","CurveLengthSample"],pn.prototype={__class__:pn};var S=f.eval.Eval=function(){};y["verb.eval.Eval"]=S,S.__name__=["verb","eval","Eval"],S.rationalCurveTangent=function(t,n){var r=S.rationalCurveDerivatives(t,n,1);return r[1]},S.rationalSurfaceNormal=function(t,n,r){var s=S.rationalSurfaceDerivatives(t,n,r,1);return u.cross(s[1][0],s[0][1])},S.rationalSurfaceDerivatives=function(t,n,r,s){s==null&&(s=1);for(var o=S.surfaceDerivatives(t,n,r,s),h=S.rational2d(o),c=S.weight2d(o),v=[],d=h[0][0].length,m=0,b=s+1;m<b;){var w=m++;v.push([]);for(var A=0,P=s-w+1;A<P;){for(var z=A++,E=h[w][z],k=1,T=z+1;k<T;){var B=k++;u.subMulMutate(E,zt.get(z,B)*c[0][B],v[w][z-B])}for(var L=1,R=w+1;L<R;){var F=L++;u.subMulMutate(E,zt.get(w,F)*c[F][0],v[w-F][z]);for(var W=u.zeros1d(d),D=1,V=z+1;D<V;){var G=D++;u.addMulMutate(W,zt.get(z,G)*c[F][G],v[w-F][z-G])}u.subMulMutate(E,zt.get(w,F),W)}u.mulMutate(1/c[0][0],E),v[w].push(E)}}return v},S.rationalSurfacePoint=function(t,n,r){return S.dehomogenize(S.surfacePoint(t,n,r))},S.rationalCurveDerivatives=function(t,n,r){r==null&&(r=1);for(var s=S.curveDerivatives(t,n,r),o=S.rational1d(s),h=S.weight1d(s),c=[],v=0,d=r+1;v<d;){for(var m=v++,b=o[m],w=1,A=m+1;w<A;){var P=w++;u.subMulMutate(b,zt.get(m,P)*h[P],c[m-P])}u.mulMutate(1/h[0],b),c.push(b)}return c},S.rationalCurvePoint=function(t,n){return S.dehomogenize(S.curvePoint(t,n))},S.surfaceDerivatives=function(t,n,r,s){var o=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2;return S.surfaceDerivativesGivenNM(o,h,t,n,r,s)},S.surfaceDerivativesGivenNM=function(t,n,r,s,o,h){var c=r.degreeU,v=r.degreeV,d=r.controlPoints,m=r.knotsU,b=r.knotsV;if(!S.areValidRelations(c,d.length,m.length)||!S.areValidRelations(v,d[0].length,b.length))throw new X("Invalid relations between control points, knot vector, and n");var w=d[0][0].length,A;h<c?A=h:A=c;var P;h<v?P=h:P=v;for(var z=u.zeros3d(h+1,h+1,w),E=S.knotSpanGivenN(t,c,s,m),k=S.knotSpanGivenN(n,v,o,b),T=S.derivativeBasisFunctionsGivenNI(E,s,c,t,m),B=S.derivativeBasisFunctionsGivenNI(k,o,v,n,b),L=u.zeros2d(v+1,w),R=0,F=0,W=A+1;F<W;){for(var D=F++,V=0,G=v+1;V<G;){var J=V++;L[J]=u.zeros1d(w);for(var $=0,nt=c+1;$<nt;){var st=$++;u.addMulMutate(L[J],T[D][st],d[E-c+st][k-v+J])}}var rt=h-D;rt<P?R=rt:R=P;for(var at=0,et=R+1;at<et;){var ot=at++;z[D][ot]=u.zeros1d(w);for(var O=0,ut=v+1;O<ut;){var gt=O++;u.addMulMutate(z[D][ot],B[ot][gt],L[gt])}}}return z},S.surfacePoint=function(t,n,r){var s=t.knotsU.length-t.degreeU-2,o=t.knotsV.length-t.degreeV-2;return S.surfacePointGivenNM(s,o,t,n,r)},S.surfacePointGivenNM=function(t,n,r,s,o){var h=r.degreeU,c=r.degreeV,v=r.controlPoints,d=r.knotsU,m=r.knotsV;if(!S.areValidRelations(h,v.length,d.length)||!S.areValidRelations(c,v[0].length,m.length))throw new X("Invalid relations between control points, knot vector, and n");for(var b=v[0][0].length,w=S.knotSpanGivenN(t,h,s,d),A=S.knotSpanGivenN(n,c,o,m),P=S.basisFunctionsGivenKnotSpanIndex(w,s,h,d),z=S.basisFunctionsGivenKnotSpanIndex(A,o,c,m),E=w-h,k=A,T=u.zeros1d(b),B=u.zeros1d(b),L=0,R=c+1;L<R;){var F=L++;B=u.zeros1d(b),k=A-c+F;for(var W=0,D=h+1;W<D;){var V=W++;u.addMulMutate(B,P[V],v[E+V][k])}u.addMulMutate(T,z[F],B)}return T},S.curveRegularSamplePoints=function(t,n){for(var r=S.curveDerivatives(t,t.knots[0],t.degree),s=1/n,o=s*s,h=r[0],c=u.mul(s,r[1]),v=u.mul(o*.5,r[2]),d=u.mul(o*s*.5,r[3]),m=u.add(v,v),b=u.add(d,d),w=u.mul(.3333333333333333,d),A=[],P=0,z=n+1;P<z;)P++,A.push(S.dehomogenize(h)),u.addAllMutate([h,c,v,w]),u.addAllMutate([c,m,d]),u.addAllMutate([m,b]),u.addAllMutate([v,d]);return A},S.curveRegularSamplePoints2=function(t,n){for(var r=S.curveDerivatives(t,t.knots[0],t.degree),s=1/n,o=s*s,h=r[0],c=u.mul(s,r[1]),v=u.mul(o*.5,r[2]),d=u.mul(o*s*.5,r[3]),m=u.add(v,v),b=u.add(d,d),w=u.mul(.3333333333333333,d),A=[],P=0,z=n+1;P<z;)P++,A.push(S.dehomogenize(h)),u.addAllMutate([h,c,v,w]),u.addAllMutate([c,m,d]),u.addAllMutate([m,b]),u.addAllMutate([v,d]);return A},S.rationalSurfaceRegularSampleDerivatives=function(t,n,r,s){for(var o=S.surfaceRegularSampleDerivatives(t,n,r,s),h=[],c=n+1,v=r+1,d=s+1,m=0;m<c;){var b=m++,w=[];h.push(w);for(var A=0;A<v;){for(var P=A++,z=o[b][P],E=S.rational2d(z),k=S.weight2d(z),T=[],B=E[0][0].length,L=0;L<d;){var R=L++;T.push([]);for(var F=0,W=d-R;F<W;){for(var D=F++,V=E[R][D],G=1,J=D+1;G<J;){var $=G++;u.subMulMutate(V,zt.get(D,$)*k[0][$],T[R][D-$])}for(var nt=1,st=R+1;nt<st;){var rt=nt++;u.subMulMutate(V,zt.get(R,rt)*k[rt][0],T[R-rt][D]);for(var at=u.zeros1d(B),et=1,ot=D+1;et<ot;){var O=et++;u.addMulMutate(at,zt.get(D,O)*k[rt][O],T[R-rt][D-O])}u.subMulMutate(V,zt.get(R,rt),at)}u.mulMutate(1/k[0][0],V),T[R].push(V)}}w.push(T)}}return h},S.surfaceRegularSampleDerivatives=function(t,n,r,s){var o=t.degreeU,h=t.degreeV,c=t.controlPoints,v=t.knotsU,d=t.knotsV,m=c[0][0].length;(K.last(v)-v[0])/n,(K.last(d)-d[0])/r;for(var b=S.regularlySpacedDerivativeBasisFunctions(o,v,n),w=b.item0,A=b.item1,P=S.regularlySpacedDerivativeBasisFunctions(h,d,r),z=P.item0,E=P.item1,k=[],T=n+1,B=r+1,L=0;L<T;){var R=L++,F=[];k.push(F);for(var W=0;W<B;){var D=W++;F.push(S.surfaceDerivativesGivenBasesKnotSpans(o,h,c,w[R],z[D],A[R],E[D],m,s))}}return k},S.rationalSurfaceRegularSamplePoints=function(t,n,r){return S.dehomogenize2d(S.surfaceRegularSamplePoints(t,n,r))},S.surfaceRegularSamplePoints=function(t,n,r){var s=t.degreeU,o=t.degreeV,h=t.controlPoints,c=t.knotsU,v=t.knotsV,d=h[0][0].length;(K.last(c)-c[0])/n,(K.last(v)-v[0])/r;for(var m=S.regularlySpacedBasisFunctions(s,c,n),b=m.item0,w=m.item1,A=S.regularlySpacedBasisFunctions(o,v,r),P=A.item0,z=A.item1,E=[],k=n+1,T=r+1,B=0;B<k;){var L=B++,R=[];E.push(R);for(var F=0;F<T;){var W=F++;R.push(S.surfacePointGivenBasesKnotSpans(s,o,h,b[L],P[W],w[L],z[W],d))}}return E},S.regularlySpacedBasisFunctions=function(t,n,r){for(var s=n.length-t-2,o=(K.last(n)-n[0])/r,h=[],c=[],v=n[0],d=S.knotSpanGivenN(s,t,v,n),m=r+1,b=0;b<m;){for(b++;v>=n[d+1];)d++;c.push(d),h.push(S.basisFunctionsGivenKnotSpanIndex(d,v,t,n)),v+=o}return new Gt(c,h)},S.regularlySpacedDerivativeBasisFunctions=function(t,n,r){for(var s=n.length-t-2,o=(K.last(n)-n[0])/r,h=[],c=[],v=n[0],d=S.knotSpanGivenN(s,t,v,n),m=r+1,b=0;b<m;){for(b++;v>=n[d+1];)d++;c.push(d),h.push(S.derivativeBasisFunctionsGivenNI(d,v,t,s,n)),v+=o}return new Gt(c,h)},S.surfacePointGivenBasesKnotSpans=function(t,n,r,s,o,h,c,v){for(var d=u.zeros1d(v),m,b=s-t,w=o-n,A=0,P=n+1;A<P;){var z=A++;m=u.zeros1d(v);for(var E=0,k=t+1;E<k;){var T=E++;u.addMulMutate(m,h[T],r[b+T][w])}w++,u.addMulMutate(d,c[z],m)}return d},S.surfaceDerivativesGivenBasesKnotSpans=function(t,n,r,s,o,h,c,v,d){var m=r[0][0].length,b;d<t?b=d:b=t;var w;d<n?w=d:w=n;for(var A=u.zeros3d(b+1,w+1,m),P=u.zeros2d(n+1,m),z=0,E=0,k=b+1;E<k;){for(var T=E++,B=0,L=n+1;B<L;){var R=B++;P[R]=u.zeros1d(m);for(var F=0,W=t+1;F<W;){var D=F++;u.addMulMutate(P[R],h[T][D],r[s-t+D][o-n+R])}}var V=d-T;V<w?z=V:z=w;for(var G=0,J=z+1;G<J;){var $=G++;A[T][$]=u.zeros1d(m);for(var nt=0,st=n+1;nt<st;){var rt=nt++;u.addMulMutate(A[T][$],c[$][rt],P[rt])}}}return A},S.curveDerivatives=function(t,n,r){var s=t.knots.length-t.degree-2;return S.curveDerivativesGivenN(s,t,n,r)},S.curveDerivativesGivenN=function(t,n,r,s){var o=n.degree,h=n.controlPoints,c=n.knots;if(!S.areValidRelations(o,h.length,c.length))throw new X("Invalid relations between control points, knot vector, and n");var v=h[0].length,d;s<o?d=s:d=o;for(var m=u.zeros2d(s+1,v),b=S.knotSpanGivenN(t,o,r,c),w=S.derivativeBasisFunctionsGivenNI(b,r,o,d,c),A=0,P=d+1;A<P;)for(var z=A++,E=0,k=o+1;E<k;){var T=E++;u.addMulMutate(m[z],w[z][T],h[b-o+T])}return m},S.curvePoint=function(t,n){var r=t.knots.length-t.degree-2;return S.curvePointGivenN(r,t,n)},S.areValidRelations=function(t,n,r){return n+t+1-r==0},S.curvePointGivenN=function(t,n,r){var s=n.degree,o=n.controlPoints,h=n.knots;if(!S.areValidRelations(s,o.length,h.length))throw new X("Invalid relations between control points, knot Array, and n");for(var c=S.knotSpanGivenN(t,s,r,h),v=S.basisFunctionsGivenKnotSpanIndex(c,r,s,h),d=u.zeros1d(o[0].length),m=0,b=s+1;m<b;){var w=m++;u.addMulMutate(d,v[w],o[c-s+w])}return d},S.volumePoint=function(t,n,r,s){var o=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2,c=t.knotsW.length-t.degreeW-2;return S.volumePointGivenNML(t,o,h,c,n,r,s)},S.volumePointGivenNML=function(t,n,r,s,o,h,c){if(!S.areValidRelations(t.degreeU,t.controlPoints.length,t.knotsU.length)||!S.areValidRelations(t.degreeV,t.controlPoints[0].length,t.knotsV.length)||!S.areValidRelations(t.degreeW,t.controlPoints[0][0].length,t.knotsW.length))throw new X("Invalid relations between control points and knot vector");for(var v=t.controlPoints,d=t.degreeU,m=t.degreeV,b=t.degreeW,w=t.knotsU,A=t.knotsV,P=t.knotsW,z=v[0][0][0].length,E=S.knotSpanGivenN(n,d,o,w),k=S.knotSpanGivenN(r,m,h,A),T=S.knotSpanGivenN(s,b,c,P),B=S.basisFunctionsGivenKnotSpanIndex(E,o,d,w),L=S.basisFunctionsGivenKnotSpanIndex(k,h,m,A),R=S.basisFunctionsGivenKnotSpanIndex(T,c,b,P),F=E-d,W=u.zeros1d(z),D=u.zeros1d(z),V=u.zeros1d(z),G=0,J=b+1;G<J;){var $=G++;V=u.zeros1d(z);for(var nt=T-b+$,st=0,rt=m+1;st<rt;){var at=st++;D=u.zeros1d(z);for(var et=k-m+at,ot=0,O=d+1;ot<O;){var ut=ot++;u.addMulMutate(D,B[ut],v[F+ut][et][nt])}u.addMulMutate(V,L[at],D)}u.addMulMutate(W,R[$],V)}return W},S.derivativeBasisFunctions=function(t,n,r){var s=S.knotSpan(n,t,r),o=r.length-1,h=o-n-1;return S.derivativeBasisFunctionsGivenNI(s,t,n,h,r)},S.derivativeBasisFunctionsGivenNI=function(t,n,r,s,o){var h=u.zeros2d(r+1,r+1),c=u.zeros1d(r+1),v=u.zeros1d(r+1),d=0,m=0;h[0][0]=1;for(var b=1,w=r+1;b<w;){var A=b++;c[A]=n-o[t+1-A],v[A]=o[t+A]-n,d=0;for(var P=0;P<A;){var z=P++;h[A][z]=v[z+1]+c[A-z],m=h[z][A-1]/h[A][z],h[z][A]=d+v[z+1]*m,d=c[A-z]*m}h[A][A]=d}for(var E=u.zeros2d(s+1,r+1),k=u.zeros2d(2,r+1),T=0,B=1,L=0,R=0,F=0,W=0,D=0,V=0,G=r+1;V<G;){var J=V++;E[0][J]=h[J][r]}for(var $=0,nt=r+1;$<nt;){var st=$++;T=0,B=1,k[0][0]=1;for(var rt=1,at=s+1;rt<at;){var et=rt++;L=0,R=st-et,F=r-et,st>=et&&(k[B][0]=k[T][0]/h[F+1][R],L=k[B][0]*h[R][F]),R>=-1?W=1:W=-R,st-1<=F?D=et-1:D=r-st;for(var ot=W,O=D+1;ot<O;){var ut=ot++;k[B][ut]=(k[T][ut]-k[T][ut-1])/h[F+1][R+ut],L+=k[B][ut]*h[R+ut][F]}st<=F&&(k[B][et]=-k[T][et-1]/h[F+1][st],L+=k[B][et]*h[st][F]),E[et][st]=L;var gt=T;T=B,B=gt}}for(var Et=r,Bt=1,kt=s+1;Bt<kt;){for(var Rt=Bt++,ie=0,ge=r+1;ie<ge;){var ne=ie++;E[Rt][ne]*=Et}Et*=r-Rt}return E},S.basisFunctions=function(t,n,r){var s=S.knotSpan(n,t,r);return S.basisFunctionsGivenKnotSpanIndex(s,t,n,r)},S.basisFunctionsGivenKnotSpanIndex=function(t,n,r,s){var o=u.zeros1d(r+1),h=u.zeros1d(r+1),c=u.zeros1d(r+1),v=0,d=0;o[0]=1;for(var m=1,b=r+1;m<b;){var w=m++;h[w]=n-s[t+1-w],c[w]=s[t+w]-n,v=0;for(var A=0;A<w;){var P=A++;d=o[P]/(c[P+1]+h[w-P]),o[P]=v+c[P+1]*d,v=h[w-P]*d}o[w]=v}return o},S.knotSpan=function(t,n,r){return S.knotSpanGivenN(r.length-t-2,t,n,r)},S.knotSpanGivenN=function(t,n,r,s){if(r>s[t+1]-tt.EPSILON)return t;if(r<s[n]+tt.EPSILON)return n;for(var o=n,h=t+1,c=Math.floor((o+h)/2);r<s[c]||r>=s[c+1];)r<s[c]?h=c:o=c,c=Math.floor((o+h)/2);return c},S.dehomogenize=function(t){for(var n=t.length,r=[],s=t[n-1],o=t.length-1,h=0;h<o;){var c=h++;r.push(t[c]/s)}return r},S.rational1d=function(t){var n=t[0].length-1;return t.map(function(r){return r.slice(0,n)})},S.rational2d=function(t){return t.map(S.rational1d)},S.weight1d=function(t){var n=t[0].length-1;return t.map(function(r){return r[n]})},S.weight2d=function(t){return t.map(S.weight1d)},S.dehomogenize1d=function(t){return t.map(S.dehomogenize)},S.dehomogenize2d=function(t){return t.map(S.dehomogenize1d)},S.homogenize1d=function(t,n){var r=t.length,s=t[0].length,o=[],h=0,c=[],v;n!=null?v=n:v=u.rep(t.length,1);for(var d=0;d<r;){var m=d++,b=[];c=t[m],h=v[m];for(var w=0;w<s;){var A=w++;b.push(c[A]*h)}b.push(h),o.push(b)}return o},S.homogenize2d=function(t,n){var r=t.length,s=[],o;if(n!=null)o=n;else{for(var h=[],c=0;c<r;)c++,h.push(u.rep(t[0].length,1));o=h}for(var v=0;v<r;){var d=v++;s.push(S.homogenize1d(t[d],o[d]))}return s};var it=f.eval.Intersect=function(){};y["verb.eval.Intersect"]=it,it.__name__=["verb","eval","Intersect"],it.surfaces=function(t,n,r){var s=Mt.rationalSurfaceAdaptive(t),o=Mt.rationalSurfaceAdaptive(n),h=it.meshes(s,o),c=h.map(function(v){return v.map(function(d){return it.surfacesAtPointWithEstimate(t,n,d.uv0,d.uv1,r)})});return c.map(function(v){return ht.rationalInterpCurve(v.map(function(d){return d.point}),3)})},it.surfacesAtPointWithEstimate=function(t,n,r,s,o){var h,c,v,d,m,b,w,A,P,z,E,k,T,B=5,L=0;do{if(h=S.rationalSurfaceDerivatives(t,r[0],r[1],1),c=h[0][0],d=h[1][0],m=h[0][1],v=u.normalized(u.cross(d,m)),b=u.dot(v,c),w=S.rationalSurfaceDerivatives(n,s[0],s[1],1),A=w[0][0],z=w[1][0],E=w[0][1],P=u.normalized(u.cross(z,E)),k=u.dot(P,A),T=u.distSquared(c,A),T<o*o)break;var R=u.normalized(u.cross(v,P)),F=u.dot(R,c),W=it.threePlanes(v,b,P,k,R,F);if(W==null)throw new X("panic!");var D=u.sub(W,c),V=u.sub(W,A),G=u.cross(d,v),J=u.cross(m,v),$=u.cross(z,P),nt=u.cross(E,P),st=u.dot(J,D)/u.dot(J,d),rt=u.dot(G,D)/u.dot(G,m),at=u.dot(nt,V)/u.dot(nt,z),et=u.dot($,V)/u.dot($,E);r=u.add([st,rt],r),s=u.add([at,et],s),L++}while(L<B);return new Fn(r,s,c,T)},it.meshes=function(t,n,r,s){r==null&&(r=new Ie(t)),s==null&&(s=new Ie(n));var o=it.boundingBoxTrees(r,s,0),h=K.unique(o.map(function(c){return it.triangles(t,c.item0,n,c.item1)}).filter(function(c){return c!=null}).filter(function(c){return u.distSquared(c.min.point,c.max.point)>tt.EPSILON}),function(c,v){var d=u.sub(c.min.uv0,v.min.uv0),m=u.dot(d,d),b=u.sub(c.max.uv0,v.max.uv0),w=u.dot(b,b),A=u.sub(c.min.uv0,v.max.uv0),P=u.dot(A,A),z=u.sub(c.max.uv0,v.min.uv0),E=u.dot(z,z);return m<tt.EPSILON&&w<tt.EPSILON||P<tt.EPSILON&&E<tt.EPSILON});return it.makeMeshIntersectionPolylines(h)},it.meshSlices=function(t,n,r,s){for(var o=new Ge(t),h=o.boundingBox(),c=h.min[0],v=h.min[1],d=h.max[0],m=h.max[1],b=u.span(n,r,s),w=[],A=0;A<b.length;){var P=b[A];++A;var z=[[c,v,P],[d,v,P],[d,m,P],[c,m,P]],E=[[0,0],[1,0],[1,1],[0,1]],k=[[0,1,2],[0,2,3]],T=new ye(k,z,null,E);w.push(it.meshes(t,T,o))}return w},it.makeMeshIntersectionPolylines=function(t){if(t.length==0)return[];for(var n=0;n<t.length;){var r=t[n];++n,r.max.opp=r.min,r.min.opp=r.max}for(var s=it.kdTreeFromSegments(t),o=[],h=0;h<t.length;){var c=t[h];++h,o.push(c.min),o.push(c.max)}for(var v=0;v<o.length;){var d=o[v];if(++v,d.adj==null){var m=it.lookupAdjacentSegment(d,s,t.length);m!=null&&m.adj==null&&(d.adj=m,m.adj=d)}}var b=o.filter(function(B){return B.adj==null});b.length==0&&(b=o);for(var w=[],A=0,P=!1;b.length!=0;){var z=b.pop();if(!z.visited){for(var E=[],k=z;k!=null&&!(k.visited||(k.visited=!0,k.opp.visited=!0,E.push(k),A+=2,k=k.opp.adj,k==z)););E.length>0&&(E.push(E[E.length-1].opp),w.push(E))}if(b.length==0&&o.length>0&&(P||A<o.length)){P=!0;var T=o.pop();b.push(T)}}return w},it.kdTreeFromSegments=function(t){for(var n=[],r=0;r<t.length;){var s=t[r];++r,n.push(new dn(s.min.point,s.min)),n.push(new dn(s.max.point,s.max))}return new qn(n,u.distSquared)},it.lookupAdjacentSegment=function(t,n,r){var s=n.nearest(t.point,r,tt.EPSILON).filter(function(o){return t!=o.item0.obj}).map(function(o){return o.item0.obj});return s.length==1?s[0]:null},it.curveAndSurface=function(t,n,r,s,o){r==null&&(r=.001),s!=null?s=s:s=new ke(t),o!=null?o=o:o=new qe(n);var h=it.boundingBoxTrees(s,o,r);return K.unique(h.map(function(c){var v=c.item0,d=c.item1,m=K.first(v.knots),b=K.last(v.knots),w=(m+b)/2,A=K.first(d.knotsU),P=K.last(d.knotsU),z=K.first(d.knotsV),E=K.last(d.knotsV),k=[(A+P)/2,(z+E)/2];return it.curveAndSurfaceWithEstimate(v,d,[w].concat(k),r)}).filter(function(c){return u.distSquared(c.curvePoint,c.surfacePoint)<r*r}),function(c,v){return Math.abs(c.u-v.u)<.5*r})},it.curveAndSurfaceWithEstimate=function(t,n,r,s){s==null&&(s=.001);var o=function(d){var m=S.rationalCurvePoint(t,d[0]),b=S.rationalSurfacePoint(n,d[1],d[2]),w=u.sub(m,b);return u.dot(w,w)},h=function(d){var m=S.rationalCurveDerivatives(t,d[0],1),b=S.rationalSurfaceDerivatives(n,d[1],d[2],1),w=u.sub(b[0][0],m[0]),A=u.mul(-1,m[1]),P=b[1][0],z=b[0][1];return[2*u.dot(A,w),2*u.dot(P,w),2*u.dot(z,w)]},c=we.uncmin(o,r,s*s,h),v=c.solution;return new Vn(v[0],[v[1],v[2]],S.rationalCurvePoint(t,v[0]),S.rationalSurfacePoint(n,v[1],v[2]))},it.polylineAndMesh=function(t,n,r){for(var s=it.boundingBoxTrees(new Ee(t),new Ie(n),r),o=[],h=0;h<s.length;){var c=s[h];++h;var v=c.item0,d=c.item1,m=it.segmentWithTriangle(t.points[v],t.points[v+1],n.points,n.faces[d]);if(m!=null){var b=m.point,w=u.lerp(m.p,[t.params[v]],[t.params[v+1]])[0],A=Kt.triangleUVFromPoint(n,d,b);o.push(new Dn(b,w,A,v,d))}}return o},it.boundingBoxTrees=function(t,n,r){r==null&&(r=1e-9);var s=[],o=[];s.push(t),o.push(n);for(var h=[];s.length>0;){var c=s.pop(),v=o.pop();if(!(c.empty()||v.empty())&&c.boundingBox().intersects(v.boundingBox(),r)){var d=c.indivisible(r),m=v.indivisible(r);if(d&&m){h.push(new Gt(c.yield(),v.yield()));continue}else if(d&&!m){var b=v.split();s.push(c),o.push(b.item1),s.push(c),o.push(b.item0);continue}else if(!d&&m){var w=c.split();s.push(w.item1),o.push(v),s.push(w.item0),o.push(v);continue}var A=c.split(),P=v.split();s.push(A.item1),o.push(P.item1),s.push(A.item1),o.push(P.item0),s.push(A.item0),o.push(P.item1),s.push(A.item0),o.push(P.item0)}}return h},it.curves=function(t,n,r){var s=it.boundingBoxTrees(new ke(t),new ke(n),0);return K.unique(s.map(function(o){return it.curvesWithEstimate(t,n,K.first(o.item0.knots),K.first(o.item1.knots),r)}).filter(function(o){return u.distSquared(o.point0,o.point1)<r}),function(o,h){return Math.abs(o.u0-h.u0)<r*5})},it.curvesWithEstimate=function(t,n,r,s,o){var h=function(A){var P=S.rationalCurvePoint(t,A[0]),z=S.rationalCurvePoint(n,A[1]),E=u.sub(P,z);return u.dot(E,E)},c=function(A){var P=S.rationalCurveDerivatives(t,A[0],1),z=S.rationalCurveDerivatives(n,A[1],1),E=u.sub(P[0],z[0]),k=P[1],T=u.mul(-1,z[1]);return[2*u.dot(k,E),2*u.dot(T,E)]},v=we.uncmin(h,[r,s],o*o,c),d=v.solution[0],m=v.solution[1],b=S.rationalCurvePoint(t,d),w=S.rationalCurvePoint(n,m);return new $e(b,w,d,m)},it.triangles=function(t,n,r,s){var o=t.faces[n],h=r.faces[s],c=Kt.getTriangleNorm(t.points,o),v=Kt.getTriangleNorm(r.points,h),d=t.points[o[0]],m=r.points[h[0]],b=it.planes(d,c,m,v);if(b==null)return null;var w=it.clipRayInCoplanarTriangle(b,t,n);if(w==null)return null;var A=it.clipRayInCoplanarTriangle(b,r,s);if(A==null)return null;var P=it.mergeTriangleClipIntervals(w,A,t,n,r,s);return P==null?null:new re(new Oe(P.min.uv0,P.min.uv1,P.min.point,n,s),new Oe(P.max.uv0,P.max.uv1,P.max.point,n,s))},it.clipRayInCoplanarTriangle=function(t,n,r){for(var s=n.faces[r],o=[n.points[s[0]],n.points[s[1]],n.points[s[2]]],h=[n.uvs[s[0]],n.uvs[s[1]],n.uvs[s[2]]],c=[u.sub(h[1],h[0]),u.sub(h[2],h[1]),u.sub(h[0],h[2])],v=[u.sub(o[1],o[0]),u.sub(o[2],o[1]),u.sub(o[0],o[2])],d=v.map(u.normalized),m=v.map(u.norm),b=null,w=null,A=0;A<3;){var P=A++,z=o[P],E=d[P],k=it.rays(z,E,t.origin,t.dir);if(k!=null){var T=k.u0,B=k.u1;T<-tt.EPSILON||T>m[P]+tt.EPSILON||((b==null||B<b.u)&&(b=new _n(B,u.onRay(t.origin,t.dir,B),u.onRay(h[P],c[P],T/m[P]))),(w==null||B>w.u)&&(w=new _n(B,u.onRay(t.origin,t.dir,B),u.onRay(h[P],c[P],T/m[P]))))}}return w==null||b==null?null:new re(b,w)},it.mergeTriangleClipIntervals=function(t,n,r,s,o,h){if(n.min.u>t.max.u+tt.EPSILON||t.min.u>n.max.u+tt.EPSILON)return null;var c;t.min.u>n.min.u?c=new Gt(t.min,0):c=new Gt(n.min,1);var v;t.max.u<n.max.u?v=new Gt(t.max,0):v=new Gt(n.max,1);var d=new re(new Oe(null,null,c.item0.point,s,h),new Oe(null,null,v.item0.point,s,h));return c.item1==0?(d.min.uv0=c.item0.uv,d.min.uv1=Kt.triangleUVFromPoint(o,h,c.item0.point)):(d.min.uv0=Kt.triangleUVFromPoint(r,s,c.item0.point),d.min.uv1=c.item0.uv),v.item1==0?(d.max.uv0=v.item0.uv,d.max.uv1=Kt.triangleUVFromPoint(o,h,v.item0.point)):(d.max.uv0=Kt.triangleUVFromPoint(r,s,v.item0.point),d.max.uv1=v.item0.uv),d},it.planes=function(t,n,r,s){var o=u.cross(n,s);if(u.dot(o,o)<tt.EPSILON)return null;var h=0,c=Math.abs(o[0]),v=Math.abs(o[1]),d=Math.abs(o[2]);v>c&&(h=1,c=v),d>c&&(h=2,c=d);var m,b,w,A;h==0?(m=n[1],b=n[2],w=s[1],A=s[2]):h==1?(m=n[0],b=n[2],w=s[0],A=s[2]):(m=n[0],b=n[1],w=s[0],A=s[1]);var P=-u.dot(t,n),z=-u.dot(r,s),E=m*A-b*w,k=(b*z-P*A)/E,T=(P*w-m*z)/E,B;return h==0?B=[0,k,T]:h==1?B=[k,0,T]:B=[k,T,0],new vn(B,u.normalized(o))},it.threePlanes=function(t,n,r,s,o,h){var c=u.cross(r,o),v=u.dot(t,c);if(Math.abs(v)<tt.EPSILON)return null;var d=u.sub(u.mul(h,r),u.mul(s,o)),m=u.add(u.mul(n,c),u.cross(t,d));return u.mul(1/v,m)},it.polylines=function(t,n,r){for(var s=it.boundingBoxTrees(new Ee(t),new Ee(n),r),o=[],h=0;h<s.length;){var c=s[h];++h;var v=c.item0,d=c.item1,m=it.segments(t.points[v],t.points[v+1],n.points[d],n.points[d+1],r);m!=null&&(m.u0=u.lerp(m.u0,[t.params[v]],[t.params[v+1]])[0],m.u1=u.lerp(m.u1,[n.params[d]],[n.params[d+1]])[0],o.push(m))}return o},it.segments=function(t,n,r,s,o){var h=u.sub(n,t),c=Math.sqrt(u.dot(h,h)),v=u.mul(1/c,h),d=u.sub(s,r),m=Math.sqrt(u.dot(d,d)),b=u.mul(1/m,d),w=it.rays(t,v,r,b);if(w!=null){var A=Math.min(Math.max(0,w.u0/c),1),P=Math.min(Math.max(0,w.u1/m),1),z=u.onRay(t,h,A),E=u.onRay(r,d,P),k=u.distSquared(z,E);if(k<o*o)return new $e(z,E,A,P)}return null},it.rays=function(t,n,r,s){var o=u.dot(n,s),h=u.dot(n,r),c=u.dot(n,t),v=u.dot(s,r),d=u.dot(s,t),m=u.dot(n,n),b=u.dot(s,s),w=m*b-o*o;if(Math.abs(w)<tt.EPSILON)return null;var A=o*(h-c)-m*(v-d),P=A/w,z=(h-c+P*o)/m,E=u.onRay(t,n,z),k=u.onRay(r,s,P);return new $e(E,k,z,P)},it.segmentWithTriangle=function(t,n,r,s){var o=r[s[0]],h=r[s[1]],c=r[s[2]],v=u.sub(h,o),d=u.sub(c,o),m=u.cross(v,d),b=u.sub(n,t),w=u.sub(t,o),A=-u.dot(m,w),P=u.dot(m,b);if(Math.abs(P)<tt.EPSILON)return null;var z=A/P;if(z<0||z>1)return null;var E=u.add(t,u.mul(z,b)),k=u.dot(v,d),T=u.dot(v,v),B=u.dot(d,d),L=u.sub(E,o),R=u.dot(L,v),F=u.dot(L,d),W=k*k-T*B;if(Math.abs(W)<tt.EPSILON)return null;var D=(k*F-B*R)/W,V=(k*R-T*F)/W;return D>1+tt.EPSILON||V>1+tt.EPSILON||V<-tt.EPSILON||D<-tt.EPSILON||D+V>1+tt.EPSILON?null:new On(E,D,V,z)},it.segmentAndPlane=function(t,n,r,s){var o=u.dot(s,u.sub(n,t));if(Math.abs(o)<tt.EPSILON)return null;var h=u.dot(s,u.sub(r,t)),c=h/o;return c>1+tt.EPSILON||c<-tt.EPSILON?null:{p:c}};var ht=f.eval.Make=function(){};y["verb.eval.Make"]=ht,ht.__name__=["verb","eval","Make"],ht.rationalTranslationalSurface=function(t,n){for(var r=S.rationalCurvePoint(n,K.first(n.knots)),s=K.first(n.knots),o=K.last(n.knots),h=2*n.controlPoints.length,c=(o-s)/(h-1),v=[],d=0;d<h;){var m=d++,b=u.sub(S.rationalCurvePoint(n,s+m*c),r),w=vt.rationalCurveTransform(t,[[1,0,0,b[0]],[0,1,0,b[1]],[0,0,1,b[2]],[0,0,0,1]]);v.push(w)}return ht.loftedSurface(v)},ht.surfaceBoundaryCurves=function(t){var n=ht.surfaceIsocurve(t,K.first(t.knotsU),!1),r=ht.surfaceIsocurve(t,K.last(t.knotsU),!1),s=ht.surfaceIsocurve(t,K.first(t.knotsV),!0),o=ht.surfaceIsocurve(t,K.last(t.knotsV),!0);return[n,r,s,o]},ht.surfaceIsocurve=function(t,n,r){r==null&&(r=!1);var s;r?s=t.knotsV:s=t.knotsU;var o;r?o=t.degreeV:o=t.degreeU;for(var h=_t.knotMultiplicities(s),c=-1,v=0,d=h.length;v<d;){var m=v++;if(Math.abs(n-h[m].knot)<tt.EPSILON){c=m;break}}var b=o+1;c>=0&&(b=b-h[c].mult);var w;b>0?w=vt.surfaceKnotRefine(t,u.rep(b,n),r):w=t;var A=S.knotSpan(o,n,s);return Math.abs(n-K.first(s))<tt.EPSILON?A=0:Math.abs(n-K.last(s))<tt.EPSILON&&(A=(r?w.controlPoints[0].length:w.controlPoints.length)-1),r?new It(w.degreeU,w.knotsU,function(P){for(var z,E=[],k=0,T=w.controlPoints;k<T.length;){var B=T[k];++k,E.push(B[A])}return z=E,z}()):new It(w.degreeV,w.knotsV,w.controlPoints[A])},ht.loftedSurface=function(t,n){t=vt.unifyCurveKnotVectors(t);var r=t[0].degree;n==null&&(n=3),n>t.length-1&&(n=t.length-1);for(var s=t[0].knots,o=[],h=[],c=0,v=t[0].controlPoints.length;c<v;){var d=[c++],m=t.map(function(w){return function(A){return A.controlPoints[w[0]]}}(d)),b=ht.rationalInterpCurve(m,n,!0);h.push(b.controlPoints),o=b.knots}return new qt(r,n,s,o,h)},ht.clonedCurve=function(t){return new It(t.degree,t.knots.slice(),t.controlPoints.map(function(n){return n.slice()}))},ht.rationalBezierCurve=function(t,n){for(var r=t.length-1,s=[],o=0,h=r+1;o<h;)o++,s.push(0);for(var c=0,v=r+1;c<v;)c++,s.push(1);return n==null&&(n=u.rep(t.length,1)),new It(r,s,S.homogenize1d(t,n))},ht.fourPointSurface=function(t,n,r,s,o){o==null&&(o=3);for(var h=o,c=[],v=0,d=o+1;v<d;){for(var m=v++,b=[],w=0,A=o+1;w<A;){var P=w++,z=1-m/h,E=u.lerp(z,t,n),k=u.lerp(z,s,r),T=u.lerp(1-P/h,E,k);T.push(1),b.push(T)}c.push(b)}var B=u.rep(o+1,0),L=u.rep(o+1,1);return new qt(o,o,B.concat(L),B.concat(L),c)},ht.ellipseArc=function(t,n,r,s,o){var h=u.norm(n),c=u.norm(r);n=u.normalized(n),r=u.normalized(r),o<s&&(o=2*Math.PI+s);var v=o-s,d=0;v<=Math.PI/2?d=1:v<=Math.PI?d=2:v<=3*Math.PI/2?d=3:d=4;var m=v/d,b=Math.cos(m/2),w=u.add(t,u.add(u.mul(h*Math.cos(s),n),u.mul(c*Math.sin(s),r))),A=u.sub(u.mul(Math.cos(s),r),u.mul(Math.sin(s),n)),P=[],z=u.zeros1d(2*d+3),E=0,k=s,T=u.zeros1d(d*2);P[0]=w,T[0]=1;for(var B=1,L=d+1;B<L;){var R=B++;k+=m;var F=u.add(t,u.add(u.mul(h*Math.cos(k),n),u.mul(c*Math.sin(k),r)));T[E+2]=1,P[E+2]=F;var W=u.sub(u.mul(Math.cos(k),r),u.mul(Math.sin(k),n)),D=it.rays(w,u.mul(1/u.norm(A),A),F,u.mul(1/u.norm(W),W)),V=u.add(w,u.mul(D.u0,A));T[E+1]=b,P[E+1]=V,E+=2,R<d&&(w=F,A=W)}for(var G=2*d+1,J=0;J<3;){var $=J++;z[$]=0,z[$+G]=1}switch(d){case 2:z[3]=z[4]=.5;break;case 3:z[3]=z[4]=.3333333333333333,z[5]=z[6]=.6666666666666666;break;case 4:z[3]=z[4]=.25,z[5]=z[6]=.5,z[7]=z[8]=.75;break}return new It(2,z,S.homogenize1d(P,T))},ht.arc=function(t,n,r,s,o,h){return ht.ellipseArc(t,u.mul(s,u.normalized(n)),u.mul(s,u.normalized(r)),o,h)},ht.polyline=function(t){for(var n=[0,0],r=0,s=0,o=t.length-1;s<o;){var h=s++;r+=u.dist(t[h],t[h+1]),n.push(r)}n.push(r),n=u.mul(1/r,n);for(var c,v=[],d=0,m=t.length;d<m;)d++,v.push(1);return c=v,new It(1,n,S.homogenize1d(t.slice(0),c))},ht.extrudedSurface=function(t,n,r){for(var s=[[],[],[]],o=[[],[],[]],h=S.dehomogenize1d(r.controlPoints),c=S.weight1d(r.controlPoints),v=u.mul(n,t),d=u.mul(.5*n,t),m=0,b=h.length;m<b;){var w=m++;s[2][w]=h[w],s[1][w]=u.add(d,h[w]),s[0][w]=u.add(v,h[w]),o[0][w]=c[w],o[1][w]=c[w],o[2][w]=c[w]}return new qt(2,r.degree,[0,0,0,1,1,1],r.knots,S.homogenize2d(s,o))},ht.cylindricalSurface=function(t,n,r,s,o){var h=u.cross(t,n),c=ht.arc(r,n,h,o,0,2*Math.PI);return ht.extrudedSurface(t,s,c)},ht.revolvedSurface=function(t,n,r,s){var o=S.dehomogenize1d(t.controlPoints),h=S.weight1d(t.controlPoints),c,v;s<=Math.PI/2?(c=1,v=u.zeros1d(6+2*(c-1))):s<=Math.PI?(c=2,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.5):s<=3*Math.PI/2?(c=3,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.3333333333333333,v[5]=v[6]=.6666666666666666):(c=4,v=u.zeros1d(6+2*(c-1)),v[3]=v[4]=.25,v[5]=v[6]=.5,v[7]=v[8]=.75);for(var d=s/c,m=3+2*(c-1),b=0;b<3;){var w=b++;v[w]=0,v[m+w]=1}for(var A=Math.cos(d/2),P=0,z=u.zeros1d(c+1),E=u.zeros1d(c+1),k=u.zeros3d(2*c+1,o.length,3),T=u.zeros2d(2*c+1,o.length),B=1,L=c+1;B<L;){var R=B++;P+=d,E[R]=Math.cos(P),z[R]=Math.sin(P)}for(var F=0,W=o.length;F<W;){var D=F++,V=ce.rayClosestPoint(o[D],n,r),G=u.sub(o[D],V),J=u.norm(G),$=u.cross(r,G);J>tt.EPSILON&&(G=u.mul(1/J,G),$=u.mul(1/J,$)),k[0][D]=o[D];var nt=o[D];T[0][D]=h[D];for(var st=$,rt=0,at=1,et=c+1;at<et;){var ot=at++,O;J==0?O=V:O=u.add(V,u.add(u.mul(J*E[ot],G),u.mul(J*z[ot],$))),k[rt+2][D]=O,T[rt+2][D]=h[D];var ut=u.sub(u.mul(E[ot],$),u.mul(z[ot],G));if(J==0)k[rt+1][D]=V;else{var gt=it.rays(nt,u.mul(1/u.norm(st),st),O,u.mul(1/u.norm(ut),ut)),Et=u.add(nt,u.mul(gt.u0,st));k[rt+1][D]=Et}T[rt+1][D]=A*h[D],rt+=2,ot<c&&(nt=O,st=ut)}}return new qt(2,t.degree,v,t.knots,S.homogenize2d(k,T))},ht.sphericalSurface=function(t,n,r,s){var o=ht.arc(t,u.mul(-1,n),r,s,0,Math.PI);return ht.revolvedSurface(o,t,n,2*Math.PI)},ht.conicalSurface=function(t,n,r,s,o){var h=2*Math.PI,c=1,v=[u.add(r,u.mul(s,t)),u.add(r,u.mul(o,n))],d=[0,0,1,1],m=[1,1],b=new It(c,d,S.homogenize1d(v,m));return ht.revolvedSurface(b,r,t,h)},ht.rationalInterpCurve=function(t,n,r,s,o){if(r==null&&(r=!1),n==null&&(n=3),t.length<n+1)throw new X("You need to supply at least degree + 1 points! You only supplied "+t.length+" points.");for(var h=[0],c=1,v=t.length;c<v;){var d=c++,m=u.norm(u.sub(t[d],t[d-1])),b=h[h.length-1];h.push(b+m)}for(var w=h[h.length-1],A=0,P=h.length;A<P;){var z=A++;h[z]=h[z]/w}var E=u.rep(n+1,0),k=s!=null&&o!=null,T;k?T=0:T=1;var B;k?B=h.length-n+1:B=h.length-n;for(var L=T;L<B;){for(var R=L++,F=0,W=0;W<n;){var D=W++;F+=h[R+D]}E.push(1/n*F)}var V=E.concat(u.rep(n+1,1)),G=[],J;k?J=t.length+1:J=t.length-1;var $;k?$=t.length-(n-1):$=t.length-(n+1);for(var nt=0;nt<h.length;){var st=h[nt];++nt;var rt=S.knotSpanGivenN(J,n,st,V),at=S.basisFunctionsGivenKnotSpanIndex(rt,st,n,V),et=rt-n,ot=u.zeros1d(et),O=u.zeros1d($-et);G.push(ot.concat(at).concat(O))}if(k){var ut=G[0].length-2,gt=[-1,1].concat(u.zeros1d(ut)),Et=u.zeros1d(ut).concat([-1,1]);K.spliceAndInsert(G,1,0,gt),K.spliceAndInsert(G,G.length-1,0,Et)}for(var Bt=t[0].length,kt=[],Rt=(1-V[V.length-n-2])/n,ie=V[n+1]/n,ge=0;ge<Bt;){var ne=[ge++],te;if(!k)te=t.map(function(Me){return function(Re){return Re[Me[0]]}}(ne));else{te=[t[0][ne[0]]],te.push(ie*s[ne[0]]);for(var se=1,_e=t.length-1;se<_e;){var xe=se++;te.push(t[xe][ne[0]])}te.push(Rt*o[ne[0]]),te.push(K.last(t)[ne[0]])}var Ne=At.solve(G,te);kt.push(Ne)}var Ae=At.transpose(kt);if(!r){var Pe=u.rep(Ae.length,1);Ae=S.homogenize1d(Ae,Pe)}return new It(n,V,Ae)};var vt=f.eval.Modify=function(){};y["verb.eval.Modify"]=vt,vt.__name__=["verb","eval","Modify"],vt.curveReverse=function(t){return new It(t.degree,vt.knotsReverse(t.knots),K.reversed(t.controlPoints))},vt.surfaceReverse=function(t,n){return n==null&&(n=!1),n?new qt(t.degreeU,t.degreeV,t.knotsU,vt.knotsReverse(t.knotsV),function(r){for(var s,o=[],h=0,c=t.controlPoints;h<c.length;){var v=c[h];++h,o.push(K.reversed(v))}return s=o,s}()):new qt(t.degreeU,t.degreeV,vt.knotsReverse(t.knotsU),t.knotsV,K.reversed(t.controlPoints))},vt.knotsReverse=function(t){var n=K.first(t);K.last(t);for(var r=[n],s=t.length,o=1;o<s;){var h=o++;r.push(r[h-1]+(t[s-h]-t[s-h-1]))}return r},vt.unifyCurveKnotVectors=function(t){t=t.map(ht.clonedCurve);for(var n=q.fold(t,function(V,G){return vt.imax(V.degree,G)},0),r=0,s=t.length;r<s;){var o=r++;t[o].degree<n&&(t[o]=vt.curveElevateDegree(t[o],n))}for(var h,c=[],v=0;v<t.length;){var d=t[v];++v,c.push(new re(K.first(d.knots),K.last(d.knots)))}h=c;for(var m=0,b=t.length;m<b;){var w=m++,A=[h[w].min];t[w].knots=t[w].knots.map(function(V){return function(G){return G-V[0]}}(A))}for(var P=h.map(function(V){return V.max-V.min}),z=q.fold(P,function(V,G){return Math.max(V,G)},0),E=0,k=t.length;E<k;){var T=E++,B=[z/P[T]];t[T].knots=t[T].knots.map(function(V){return function(G){return G*V[0]}}(B))}for(var L=q.fold(t,function(V,G){return u.sortedSetUnion(V.knots,G)},[]),R=0,F=t.length;R<F;){var W=R++,D=u.sortedSetSub(L,t[W].knots);D.length==0&&(t[W]=t[W]),t[W]=vt.curveKnotRefine(t[W],D)}return t},vt.imin=function(t,n){return t<n?t:n},vt.imax=function(t,n){return t>n?t:n},vt.curveElevateDegree=function(t,n){if(n<=t.degree)return t;var r=t.knots.length-t.degree-2,s=t.degree,o=t.knots,h=t.controlPoints,c=n-t.degree,v=t.controlPoints[0].length,d=u.zeros2d(s+c+1,s+1),m=[],b=[],w=[],A=r+s+1,P=n,z=Math.floor(P/2),E=[],k=[];d[0][0]=1,d[P][s]=1;for(var T=1,B=z+1;T<B;)for(var L=T++,R=1/zt.get(P,L),F=vt.imin(s,L),W=vt.imax(0,L-c),D=F+1;W<D;){var V=W++;d[L][V]=R*zt.get(s,V)*zt.get(c,L-V)}for(var G=z+1;G<P;)for(var J=G++,$=vt.imin(s,J),nt=vt.imax(0,J-c),st=$+1;nt<st;){var rt=nt++;d[J][rt]=d[P-J][s-rt]}var at=P+1,et=-1,ot=s,O=s+1,ut=1,gt=o[0];E[0]=h[0];for(var Et=0,Bt=P+1;Et<Bt;){var kt=Et++;k[kt]=gt}for(var Rt=0,ie=s+1;Rt<ie;){var ge=Rt++;m[ge]=h[ge]}for(;O<A;){for(var ne=O;O<A&&o[O]==o[O+1];)O=O+1;var te=O-ne+1,se=o[O],_e=et;et=s-te;var xe;_e>0?xe=Math.floor((_e+2)/2):xe=1;var Ne;if(et>0?Ne=Math.floor(P-(et+1)/2):Ne=P,et>0){for(var Ae=se-gt,Pe=[],Me=s;Me>te;)Pe[Me-te-1]=Ae/(o[ot+Me]-gt),Me--;for(var Re=1,bn=et+1;Re<bn;){for(var en=Re++,Zi=et-en,Nr=te+en,nn=s;nn>=Nr;)m[nn]=u.add(u.mul(Pe[nn-Nr],m[nn]),u.mul(1-Pe[nn-Nr],m[nn-1])),nn--;w[Zi]=m[s]}}for(var bi=xe,Yi=P+1;bi<Yi;){var xn=bi++;b[xn]=u.zeros1d(v);for(var Hi=vt.imin(s,xn),xi=vt.imax(0,xn-c),Qi=Hi+1;xi<Qi;){var Ai=xi++;b[xn]=u.add(b[xn],u.mul(d[xn][Ai],m[Ai]))}}if(_e>1)for(var Br=at-2,Tr=at,Pi=se-gt,Ji=(se-k[at-1])/Pi,Mi=1;Mi<_e;){for(var Lr=Mi++,Ve=Br,rn=Tr,Ye=rn-at+1;rn-Ve>Lr;){if(Ve<ut){var $i=(se-k[Ve])/(gt-k[Ve]);E[Ve]=u.lerp($i,E[Ve],E[Ve-1])}if(rn>=xe){if(rn-Lr<=at-P+_e){var ts=(se-k[rn-Lr])/Pi;b[Ye]=u.lerp(ts,b[Ye],b[Ye+1])}}else b[Ye]=u.lerp(Ji,b[Ye],b[Ye+1]);Ve=Ve+1,rn=rn-1,Ye=Ye-1}Br=Br-1,Tr=Tr+1}if(ot!=s)for(var zi=0,es=P-_e;zi<es;)zi++,k[at]=gt,at=at+1;for(var Si=xe,ns=Ne+1;Si<ns;){var rs=Si++;E[ut]=b[rs],ut=ut+1}if(O<A){for(var Ci=0;Ci<et;){var ki=Ci++;m[ki]=w[ki]}for(var Ii=et,is=s+1;Ii<is;){var Ei=Ii++;m[Ei]=h[O-s+Ei]}ot=O,O=O+1,gt=se}else for(var Ni=0,ss=P+1;Ni<ss;){var as=Ni++;k[at+as]=se}}return new It(n,k,E)},vt.rationalSurfaceTransform=function(t,n){for(var r=S.dehomogenize2d(t.controlPoints),s=0,o=r.length;s<o;)for(var h=s++,c=0,v=r[h].length;c<v;){var d=c++,m=r[h][d];m.push(1),r[h][d]=At.dot(n,m).slice(0,m.length-1)}return new qt(t.degreeU,t.degreeV,t.knotsU.slice(),t.knotsV.slice(),S.homogenize2d(r,S.weight2d(t.controlPoints)))},vt.rationalCurveTransform=function(t,n){for(var r=S.dehomogenize1d(t.controlPoints),s=0,o=r.length;s<o;){var h=s++,c=r[h];c.push(1),r[h]=At.dot(n,c).slice(0,c.length-1)}return new It(t.degree,t.knots.slice(),S.homogenize1d(r,S.weight1d(t.controlPoints)))},vt.surfaceKnotRefine=function(t,n,r){var s=[],o,h,c;r?(c=t.controlPoints,o=t.knotsV,h=t.degreeV):(c=At.transpose(t.controlPoints),o=t.knotsU,h=t.degreeU);for(var v=null,d=0;d<c.length;){var m=c[d];++d,v=vt.curveKnotRefine(new It(h,o,m),n),s.push(v.controlPoints)}var b=v.knots;return r?new qt(t.degreeU,t.degreeV,t.knotsU.slice(),b,s):(s=At.transpose(s),new qt(t.degreeU,t.degreeV,b,t.knotsV.slice(),s))},vt.decomposeCurveIntoBeziers=function(t){for(var n=t.degree,r=t.controlPoints,s=t.knots,o=_t.knotMultiplicities(s),h=n+1,c=0;c<o.length;){var v=o[c];if(++c,v.mult<h){var d=u.rep(h-v.mult,v.knot),m=vt.curveKnotRefine(new It(n,s,r),d);s=m.knots,r=m.controlPoints}}s.length/h-1;for(var b=h*2,w=[],A=0;A<r.length;){var P=s.slice(A,A+b),z=r.slice(A,A+h);w.push(new It(n,P,z)),A+=h}return w},vt.curveKnotRefine=function(t,n){if(n.length==0)return ht.clonedCurve(t);for(var r=t.degree,s=t.controlPoints,o=t.knots,h=s.length-1,c=h+r+1,v=n.length-1,d=S.knotSpan(r,n[0],o),m=S.knotSpan(r,n[v],o),b=[],w=[],A=0,P=d-r+1;A<P;){var z=A++;b[z]=s[z]}for(var E=m-1,k=h+1;E<k;){var T=E++;b[T+v+1]=s[T]}for(var B=0,L=d+1;B<L;){var R=B++;w[R]=o[R]}for(var F=m+r,W=c+1;F<W;){var D=F++;w[D+v+1]=o[D]}for(var V=m+r-1,G=m+r+v,J=v;J>=0;){for(;n[J]<=o[V]&&V>d;)b[G-r-1]=s[V-r-1],w[G]=o[V],G=G-1,V=V-1;b[G-r-1]=b[G-r];for(var $=1,nt=r+1;$<nt;){var st=$++,rt=G-r+st,at=w[G+st]-n[J];Math.abs(at)<tt.EPSILON?b[rt-1]=b[rt]:(at=at/(w[G+st]-o[V-r+st]),b[rt-1]=u.add(u.mul(at,b[rt-1]),u.mul(1-at,b[rt])))}w[G]=n[J],G=G-1,J--}return new It(r,w,b)},vt.curveKnotInsert=function(t,n,r){for(var s=t.degree,o=t.controlPoints,h=t.knots,c=0,v=o.length,d=S.knotSpan(s,n,h),m=[],b=[],w=[],A=1,P=d+1;A<P;){var z=A++;b[z]=h[z]}for(var E=1,k=r+1;E<k;){var T=E++;b[d+T]=n}for(var B=d+1,L=h.length;B<L;){var R=B++;b[R+r]=h[R]}for(var F=0,W=d-s+1;F<W;){var D=F++;w[D]=o[D]}for(var V=d-c;V<v;){var G=V++;w[G+r]=o[G]}for(var J=0,$=s-c+1;J<$;){var nt=J++;m[nt]=o[d-s+nt]}for(var st=0,rt=0,at=1,et=r+1;at<et;){var ot=at++;st=d-s+ot;for(var O=0,ut=s-ot-c+1;O<ut;){var gt=O++;rt=(n-h[st+gt])/(h[gt+d+1]-h[st+gt]),m[gt]=u.add(u.mul(rt,m[gt+1]),u.mul(1-rt,m[gt]))}w[st]=m[0],w[d+r-ot-c]=m[s-ot-c]}for(var Et=st+1,Bt=d-c;Et<Bt;){var kt=Et++;w[kt]=m[kt-st]}return new It(s,b,w)};var Mt=f.eval.Tess=function(){};y["verb.eval.Tess"]=Mt,Mt.__name__=["verb","eval","Tess"],Mt.rationalCurveRegularSample=function(t,n,r){return Mt.rationalCurveRegularSampleRange(t,t.knots[0],K.last(t.knots),n,r)},Mt.rationalCurveRegularSampleRange=function(t,n,r,s,o){s<1&&(s=2);for(var h=[],c=(r-n)/(s-1),v=0,d=0;d<s;){var m=d++;v=n+c*m,o?h.push([v].concat(S.rationalCurvePoint(t,v))):h.push(S.rationalCurvePoint(t,v))}return h},Mt.rationalCurveAdaptiveSample=function(t,n,r){if(r==null&&(r=!1),n==null&&(n=1e-6),t.degree==1)if(r){for(var s=[],o=0,h=t.controlPoints.length;o<h;){var c=o++;s.push([t.knots[c+1]].concat(S.dehomogenize(t.controlPoints[c])))}return s}else return t.controlPoints.map(S.dehomogenize);return Mt.rationalCurveAdaptiveSampleRange(t,t.knots[0],K.last(t.knots),n,r)},Mt.rationalCurveAdaptiveSampleRange=function(t,n,r,s,o){var h=S.rationalCurvePoint(t,n),c=S.rationalCurvePoint(t,r),v=.5+.2*Math.random(),d=n+(r-n)*v,m=S.rationalCurvePoint(t,d),b=u.sub(h,c),w=u.sub(h,m);if(u.dot(b,b)<s&&u.dot(w,w)>s||!ce.threePointsAreFlat(h,m,c,s)){var A=n+(r-n)*.5,P=Mt.rationalCurveAdaptiveSampleRange(t,n,A,s,o),z=Mt.rationalCurveAdaptiveSampleRange(t,A,r,s,o);return P.slice(0,-1).concat(z)}else return o?[[n].concat(h),[r].concat(c)]:[h,c]},Mt.rationalSurfaceNaive=function(t,n,r){n<1&&(n=1),r<1&&(r=1),t.degreeU,t.degreeV,t.controlPoints;for(var s=t.knotsU,o=t.knotsV,h=K.last(s)-s[0],c=K.last(o)-o[0],v=h/n,d=c/r,m=[],b=[],w=[],A=0,P=n+1;A<P;)for(var z=A++,E=0,k=r+1;E<k;){var T=E++,B=z*v,L=T*d;b.push([B,L]);var R=S.rationalSurfaceDerivatives(t,B,L,1),F=R[0][0];m.push(F);var W=u.normalized(u.cross(R[1][0],R[0][1]));w.push(W)}for(var D=[],V=0;V<n;)for(var G=V++,J=0;J<r;){var $=J++,nt=G*(r+1)+$,st=(G+1)*(r+1)+$,rt=st+1,at=nt+1,et=[nt,st,rt],ot=[nt,rt,at];D.push(et),D.push(ot)}return new ye(D,m,w,b)},Mt.divideRationalSurfaceAdaptive=function(t,n){n==null&&(n=new Ke),n.minDivsU!=null?n.minDivsU=n.minDivsU:n.minDivsU=1,n.minDivsV!=null?n.minDivsU=n.minDivsV:n.minDivsU=1,n.refine!=null?n.refine=n.refine:n.refine=!0;var r=(t.controlPoints.length-1)*2,s=(t.controlPoints[0].length-1)*2,o;n.minDivsU>r?o=n.minDivsU=n.minDivsU:o=n.minDivsU=r;var h;n.minDivsV>s?h=n.minDivsV=n.minDivsV:h=n.minDivsV=s;for(var c=K.last(t.knotsU),v=t.knotsU[0],d=K.last(t.knotsV),m=t.knotsV[0],b=(c-v)/o,w=(d-m)/h,A=[],P=[],z=0,E=h+1;z<E;){for(var k=z++,T=[],B=0,L=o+1;B<L;){var R=B++,F=v+b*R,W=m+w*k,D=S.rationalSurfaceDerivatives(t,F,W,1),V=u.normalized(u.cross(D[0][1],D[1][0]));T.push(new fe(D[0][0],V,[F,W],-1,u.isZero(V)))}P.push(T)}for(var G=0;G<h;)for(var J=G++,$=0;$<o;){var nt=$++,st=[P[h-J-1][nt],P[h-J-1][nt+1],P[h-J][nt+1],P[h-J][nt]];A.push(new Ue(t,st))}if(!n.refine)return A;for(var rt=0;rt<h;)for(var at=rt++,et=0;et<o;){var ot=et++,O=at*o+ot,ut=Mt.north(O,at,ot,o,h,A),gt=Mt.east(O,at,ot,o,h,A),Et=Mt.south(O,at,ot,o,h,A),Bt=Mt.west(O,at,ot,o,h,A);A[O].neighbors=[Et,gt,ut,Bt],A[O].divide(n)}return A},Mt.north=function(t,n,r,s,o,h){return n==0?null:h[t-s]},Mt.south=function(t,n,r,s,o,h){return n==o-1?null:h[t+s]},Mt.east=function(t,n,r,s,o,h){return r==s-1?null:h[t+1]},Mt.west=function(t,n,r,s,o,h){return r==0?null:h[t-1]},Mt.triangulateAdaptiveRefinementNodeTree=function(t){for(var n=ye.empty(),r=0;r<t.length;){var s=t[r];++r,s.triangulate(n)}return n},Mt.rationalSurfaceAdaptive=function(t,n){n!=null?n=n:n=new Ke;var r=Mt.divideRationalSurfaceAdaptive(t,n);return Mt.triangulateAdaptiveRefinementNodeTree(r)};var Ke=f.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};y["verb.eval.AdaptiveRefinementOptions"]=Ke,Ke.__name__=["verb","eval","AdaptiveRefinementOptions"],Ke.prototype={__class__:Ke};var Ue=f.core.AdaptiveRefinementNode=function(t,n,r){if(this.srf=t,r==null?this.neighbors=[null,null,null,null]:this.neighbors=r,this.corners=n,this.corners==null){var s=t.knotsU[0],o=K.last(t.knotsU),h=t.knotsV[0],c=K.last(t.knotsV);this.corners=[fe.fromUv(s,h),fe.fromUv(o,h),fe.fromUv(o,c),fe.fromUv(s,c)]}};y["verb.eval.AdaptiveRefinementNode"]=Ue,Ue.__name__=["verb","eval","AdaptiveRefinementNode"],Ue.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var t=0;t<4;){var n=t++;if(this.corners[n].point==null){var r=this.corners[n];this.evalSrf(r.uv[0],r.uv[1],r)}}},evalSrf:function(t,n,r){var s=S.rationalSurfaceDerivatives(this.srf,t,n,1),o=s[0][0],h=u.cross(s[0][1],s[1][0]),c=u.isZero(h);return c||(h=u.normalized(h)),r!=null?(r.degen=c,r.point=o,r.normal=h,r):new fe(o,h,[t,n],-1,c)},getEdgeCorners:function(t){if(this.isLeaf())return[this.corners[t]];if(this.horizontal)switch(t){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(t){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(t){var n=[this.corners[t]];if(this.neighbors[t]==null)return n;var r=this.neighbors[t].getEdgeCorners((t+2)%4),s=t%2,o=tt.EPSILON,h=this,c=[function(d){return d.uv[0]>h.corners[0].uv[0]+o&&d.uv[0]<h.corners[2].uv[0]-o},function(d){return d.uv[1]>h.corners[0].uv[1]+o&&d.uv[1]<h.corners[2].uv[1]-o}],v=r.filter(c[s]);return v.reverse(),n.concat(v)},midpoint:function(t){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[t]!=null)return this.midPoints[t];switch(t){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[t]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var t=this.corners.length,n=0;n<t;){var r=n++;if(this.corners[r],this.corners[r].degen){var s=this.corners[(r+1)%t],o=this.corners[(r+3)%t];s.degen?this.corners[r].normal=o.normal:this.corners[r].normal=s.normal}}},shouldDivide:function(t,n){if(n<t.minDepth)return!0;if(n>=t.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=u.normSquared(u.sub(this.corners[0].normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(this.corners[2].normal,this.corners[3].normal))>t.normTol,this.splitHoriz=u.normSquared(u.sub(this.corners[1].normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(this.corners[3].normal,this.corners[0].normal))>t.normTol,this.splitVert||this.splitHoriz)return!0;var r=this.center();return u.normSquared(u.sub(r.normal,this.corners[0].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[3].normal))>t.normTol},divide:function(t){t==null&&(t=new Ke),t.normTol==null&&(t.normTol=.085),t.minDepth==null&&(t.minDepth=0),t.maxDepth==null&&(t.maxDepth=10),this._divide(t,0,!0)},_divide:function(t,n,r){if(this.evalCorners(),!!this.shouldDivide(t,n)){if(n++,this.splitVert&&!this.splitHoriz?r=!1:!this.splitVert&&this.splitHoriz&&(r=!0),this.horizontal=r,this.horizontal){var s=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],o=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new Ue(this.srf,s),new Ue(this.srf,o)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var h=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],c=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new Ue(this.srf,h),new Ue(this.srf,c)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var v=0,d=this.children;v<d.length;){var m=d[v];++v,m._divide(t,n,!r)}}},triangulate:function(t){if(t==null&&(t=ye.empty()),this.isLeaf())return this.triangulateLeaf(t);for(var n=0,r=this.children;n<r.length;){var s=r[n];if(++n,s==null)break;s.triangulate(t)}return t},triangulateLeaf:function(t){for(var n=t.points.length,r=[],s=[],o=0,h=0;h<4;){var c=h++,v=this.getAllCorners(c);v.length==2&&(o=c+1);for(var d=0,m=v.length;d<m;){var b=d++;r.push(v[b])}}for(var w=0;w<r.length;){var A=r[w];if(++w,A.id!=-1){s.push(A.id);continue}t.uvs.push(A.uv),t.points.push(A.point),t.normals.push(A.normal),A.id=n,s.push(n),n++}if(r.length==4)return t.faces.push([s[0],s[3],s[1]]),t.faces.push([s[3],s[2],s[1]]),t;if(r.length==5){var P=s.length;return t.faces.push([s[o],s[(o+2)%P],s[(o+1)%P]]),t.faces.push([s[(o+4)%P],s[(o+3)%P],s[o]]),t.faces.push([s[o],s[(o+3)%P],s[(o+2)%P]]),t}var z=this.center();t.uvs.push(z.uv),t.points.push(z.point),t.normals.push(z.normal);for(var E=t.points.length-1,k=0,T=r.length-1;k<r.length;)t.faces.push([E,s[k],s[T]]),T=k++;return t},__class__:Ue};var dt=f.exe.Dispatcher=function(){};y["verb.exe.Dispatcher"]=dt,dt.__name__=["verb","exe","Dispatcher"],dt.init=function(){dt._init||(dt._workerPool=new je(dt.THREADS),dt._init=!0)},dt.dispatchMethod=function(t,n,r){dt.init();var s=new un,o=function(h){s.resolve(h)};return dt._workerPool.addWork(ct.getClassName(t),n,r,o),new $t(s)};var je=f.exe.WorkerPool=function(t,n){n==null&&(n="verb.js"),t==null&&(t=1),this._callbacks=new jt,this._working=new jt,this._pool=[],this._queue=[];for(var r=0;r<t;){r++;var s;try{s=new Worker(je.basePath+n)}catch(o){o instanceof X&&(o=o.val),s=new Worker(je.basePath+n.substring(0,-3)+".min.js")}this._pool.push(s)}};y["verb.exe.WorkerPool"]=je,je.__name__=["verb","exe","WorkerPool"],je.prototype={addWork:function(t,n,r,s){var o=new tn(t,n,r);this._callbacks.set(o.id,s),this._queue.push(o),this.processQueue()},processQueue:function(){for(var t=this;this._queue.length>0&&this._pool.length>0;){var n=this._queue.shift(),r=[n.id],s=[this._pool.shift()];this._working.h[r[0]]=s[0],s[0].onmessage=function(o,h){return function(c){t._working.remove(h[0]),t._pool.push(o[0]);try{t._callbacks.h.hasOwnProperty(h[0])&&(t._callbacks.h[h[0]](c.data.result),t._callbacks.remove(h[0]))}catch(v){v instanceof X&&(v=v.val),x.log(v)}t.processQueue()}}(s,r),s[0].postMessage(n)}},__class__:je};var tn=function(t,n,r){this.className=t,this.methodName=n,this.args=r,this.id=tn.uuid++};y["verb.exe._WorkerPool.Work"]=tn,tn.__name__=["verb","exe","_WorkerPool","Work"],tn.prototype={__class__:tn};var yn=function(){};y["verb.geom.ICurve"]=yn,yn.__name__=["verb","geom","ICurve"],yn.__interfaces__=[mn],yn.prototype={__class__:yn};var xt=f.geom.NurbsCurve=function(t){this._data=me.isValidNurbsCurveData(t)};y["verb.geom.NurbsCurve"]=xt,xt.__name__=["verb","geom","NurbsCurve"],xt.__interfaces__=[yn],xt.byKnotsControlPointsWeights=function(t,n,r,s){return new xt(new It(t,n.slice(),S.homogenize1d(r,s)))},xt.byPoints=function(t,n){return n==null&&(n=3),new xt(ht.rationalInterpCurve(t,n))},xt.__super__=Ft,xt.prototype=C(Ft.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return S.dehomogenize1d(this._data.controlPoints)},weights:function(){return S.weight1d(this._data.controlPoints)},asNurbs:function(){return new It(this.degree(),this.knots(),S.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new xt(this._data)},domain:function(){return new re(K.first(this._data.knots),K.last(this._data.knots))},transform:function(t){return new xt(vt.rationalCurveTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalCurveTransform",[this._data,t]).then(function(n){return new xt(n)})},point:function(t){return S.rationalCurvePoint(this._data,t)},pointAsync:function(t){return dt.dispatchMethod(S,"rationalCurvePoint",[this._data,t])},tangent:function(t){return S.rationalCurveTangent(this._data,t)},tangentAsync:function(t){return dt.dispatchMethod(S,"rationalCurveTangent",[this._data,t])},derivatives:function(t,n){return n==null&&(n=1),S.rationalCurveDerivatives(this._data,t,n)},derivativesAsync:function(t,n){return n==null&&(n=1),dt.dispatchMethod(S,"rationalCurveDerivatives",[this._data,t,n])},closestPoint:function(t){return _t.rationalCurveClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestPoint",[this._data,t])},closestParam:function(t){return _t.rationalCurveClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestParam",[this._data,t])},length:function(){return _t.rationalCurveArcLength(this._data)},lengthAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},lengthAtParam:function(t){return _t.rationalCurveArcLength(this._data,t)},lengthAtParamAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},paramAtLength:function(t,n){return _t.rationalCurveParamAtArcLength(this._data,t,n)},paramAtLengthAsync:function(t,n){return dt.dispatchMethod(_t,"rationalCurveParamAtArcLength",[this._data,t,n])},divideByEqualArcLength:function(t){return Ht.rationalCurveByEqualArcLength(this._data,t)},divideByEqualArcLengthAsync:function(t){return dt.dispatchMethod(Ht,"rationalCurveByEqualArcLength",[this._data,t])},divideByArcLength:function(t){return Ht.rationalCurveByArcLength(this._data,t)},divideByArcLengthAsync:function(t){return dt.dispatchMethod(Ht,"rationalCurveByArcLength",[this._data,t])},split:function(t){return Ht.curveSplit(this._data,t).map(function(n){return new xt(n)})},splitAsync:function(t){return dt.dispatchMethod(Ht,"curveSplit",[this._data,t]).then(function(n){return n.map(function(r){return new xt(r)})})},reverse:function(){return new xt(vt.curveReverse(this._data))},reverseAsync:function(){return dt.dispatchMethod(vt,"curveReverse",[this._data]).then(function(t){return new xt(t)})},tessellate:function(t){return Mt.rationalCurveAdaptiveSample(this._data,t,!1)},tessellateAsync:function(t){return dt.dispatchMethod(Mt,"rationalCurveAdaptiveSample",[this._data,t,!1])},__class__:xt});var Xe=f.geom.Arc=function(t,n,r,s,o,h){xt.call(this,ht.arc(t,n,r,s,o,h)),this._center=t,this._xaxis=n,this._yaxis=r,this._radius=s,this._minAngle=o,this._maxAngle=h};y["verb.geom.Arc"]=Xe,Xe.__name__=["verb","geom","Arc"],Xe.__super__=xt,Xe.prototype=C(xt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Xe});var Xn=f.geom.BezierCurve=function(t,n){xt.call(this,ht.rationalBezierCurve(t,n))};y["verb.geom.BezierCurve"]=Xn,Xn.__name__=["verb","geom","BezierCurve"],Xn.__super__=xt,Xn.prototype=C(xt.prototype,{__class__:Xn});var Wn=f.geom.Circle=function(t,n,r,s){Xe.call(this,t,n,r,s,0,Math.PI*2)};y["verb.geom.Circle"]=Wn,Wn.__name__=["verb","geom","Circle"],Wn.__super__=Xe,Wn.prototype=C(Xe.prototype,{__class__:Wn});var wn=function(){};y["verb.geom.ISurface"]=wn,wn.__name__=["verb","geom","ISurface"],wn.__interfaces__=[mn],wn.prototype={__class__:wn};var pt=f.geom.NurbsSurface=function(t){this._data=me.isValidNurbsSurfaceData(t)};y["verb.geom.NurbsSurface"]=pt,pt.__name__=["verb","geom","NurbsSurface"],pt.__interfaces__=[wn],pt.byKnotsControlPointsWeights=function(t,n,r,s,o,h){return new pt(new qt(t,n,r,s,S.homogenize2d(o,h)))},pt.byCorners=function(t,n,r,s){return new pt(ht.fourPointSurface(t,n,r,s))},pt.byLoftingCurves=function(t,n){return new pt(ht.loftedSurface(function(r){for(var s,o=[],h=0;h<t.length;){var c=t[h];++h,o.push(c.asNurbs())}return s=o,s}(),n))},pt.__super__=Ft,pt.prototype=C(Ft.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return S.dehomogenize2d(this._data.controlPoints)},weights:function(){return S.weight2d(this._data.controlPoints)},asNurbs:function(){return new qt(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),S.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new pt(this.asNurbs())},domainU:function(){return new re(K.first(this._data.knotsU),K.last(this._data.knotsU))},domainV:function(){return new re(K.first(this._data.knotsV),K.last(this._data.knotsV))},point:function(t,n){return S.rationalSurfacePoint(this._data,t,n)},pointAsync:function(t,n){return dt.dispatchMethod(S,"rationalSurfacePoint",[this._data,t,n])},normal:function(t,n){return S.rationalSurfaceNormal(this._data,t,n)},normalAsync:function(t,n){return dt.dispatchMethod(S,"rationalSurfaceNormal",[this._data,t,n])},derivatives:function(t,n,r){return r==null&&(r=1),S.rationalSurfaceDerivatives(this._data,t,n,r)},derivativesAsync:function(t,n,r){return r==null&&(r=1),dt.dispatchMethod(S,"rationalSurfaceDerivatives",[this._data,t,n,r])},closestParam:function(t){return _t.rationalSurfaceClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestParam",[this._data,t])},closestPoint:function(t){return _t.rationalSurfaceClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestPoint",[this._data,t])},split:function(t,n){return n==null&&(n=!1),Ht.surfaceSplit(this._data,t,n).map(function(r){return new pt(r)})},splitAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(Ht,"surfaceSplit",[this._data,t,n]).then(function(r){return r.map(function(s){return new pt(s)})})},reverse:function(t){return t==null&&(t=!1),new pt(vt.surfaceReverse(this._data,t))},reverseAsync:function(t){return t==null&&(t=!1),dt.dispatchMethod(vt,"surfaceReverse",[this._data,t]).then(function(n){return new pt(n)})},isocurve:function(t,n){return n==null&&(n=!1),new xt(ht.surfaceIsocurve(this._data,t,n))},isocurveAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(ht,"surfaceIsocurve",[this._data,t,n]).then(function(r){return new xt(r)})},boundaries:function(t){return ht.surfaceBoundaryCurves(this._data).map(function(n){return new xt(n)})},boundariesAsync:function(t){return dt.dispatchMethod(ht,"surfaceBoundaryCurves",[this._data]).then(function(n){return n.map(function(r){return new xt(r)})})},tessellate:function(t){return Mt.rationalSurfaceAdaptive(this._data,t)},tessellateAsync:function(t){return dt.dispatchMethod(Mt,"rationalSurfaceAdaptive",[this._data,t])},transform:function(t){return new pt(vt.rationalSurfaceTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalSurfaceTransform",[this._data,t]).then(function(n){return new pt(n)})},__class__:pt});var Zn=f.geom.ConicalSurface=function(t,n,r,s,o){pt.call(this,ht.conicalSurface(t,n,r,s,o)),this._axis=t,this._xaxis=n,this._base=r,this._height=s,this._radius=o};y["verb.geom.ConicalSurface"]=Zn,Zn.__name__=["verb","geom","ConicalSurface"],Zn.__super__=pt,Zn.prototype=C(pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Zn});var Yn=f.geom.CylindricalSurface=function(t,n,r,s,o){pt.call(this,ht.cylindricalSurface(t,n,r,s,o)),this._axis=t,this._xaxis=n,this._base=r,this._height=s,this._radius=o};y["verb.geom.CylindricalSurface"]=Yn,Yn.__name__=["verb","geom","CylindricalSurface"],Yn.__super__=pt,Yn.prototype=C(pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Yn});var We=f.geom.EllipseArc=function(t,n,r,s,o){xt.call(this,ht.ellipseArc(t,n,r,s,o)),this._center=t,this._xaxis=n,this._yaxis=r,this._minAngle=s,this._maxAngle=o};y["verb.geom.EllipseArc"]=We,We.__name__=["verb","geom","EllipseArc"],We.__super__=xt,We.prototype=C(xt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:We});var Hn=f.geom.Ellipse=function(t,n,r){We.call(this,t,n,r,0,Math.PI*2)};y["verb.geom.Ellipse"]=Hn,Hn.__name__=["verb","geom","Ellipse"],Hn.__super__=We,Hn.prototype=C(We.prototype,{__class__:Hn});var Qn=f.geom.ExtrudedSurface=function(t,n){pt.call(this,ht.extrudedSurface(u.normalized(n),u.norm(n),t.asNurbs())),this._profile=t,this._direction=n};y["verb.geom.ExtrudedSurface"]=Qn,Qn.__name__=["verb","geom","ExtrudedSurface"],Qn.__super__=pt,Qn.prototype=C(pt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:Qn});var Ze=f.geom.Intersect=function(){};y["verb.geom.Intersect"]=Ze,Ze.__name__=["verb","geom","Intersect"],Ze.curves=function(t,n,r){return r==null&&(r=.001),it.curves(t.asNurbs(),n.asNurbs(),r)},Ze.curvesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curves",[t.asNurbs(),n.asNurbs(),r])},Ze.curveAndSurface=function(t,n,r){return r==null&&(r=.001),it.curveAndSurface(t.asNurbs(),n.asNurbs(),r)},Ze.curveAndSurfaceAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curveAndSurface",[t.asNurbs(),n.asNurbs(),r])},Ze.surfaces=function(t,n,r){return r==null&&(r=.001),it.surfaces(t.asNurbs(),n.asNurbs(),r).map(function(s){return new xt(s)})},Ze.surfacesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"surfaces",[t.asNurbs(),n.asNurbs(),r]).then(function(s){return s.map(function(o){return new xt(o)})})};var Jn=f.geom.Line=function(t,n){xt.call(this,ht.polyline([t,n])),this._start=t,this._end=n};y["verb.geom.Line"]=Jn,Jn.__name__=["verb","geom","Line"],Jn.__super__=xt,Jn.prototype=C(xt.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:Jn});var $n=f.geom.RevolvedSurface=function(t,n,r,s){pt.call(this,ht.revolvedSurface(t.asNurbs(),n,r,s)),this._profile=t,this._center=n,this._axis=r,this._angle=s};y["verb.geom.RevolvedSurface"]=$n,$n.__name__=["verb","geom","RevolvedSurface"],$n.__super__=pt,$n.prototype=C(pt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:$n});var tr=f.geom.SphericalSurface=function(t,n){pt.call(this,ht.sphericalSurface(t,[0,0,1],[1,0,0],n)),this._center=t,this._radius=n};y["verb.geom.SphericalSurface"]=tr,tr.__name__=["verb","geom","SphericalSurface"],tr.__super__=pt,tr.prototype=C(pt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:tr});var er=f.geom.SweptSurface=function(t,n){pt.call(this,ht.rationalTranslationalSurface(t.asNurbs(),n.asNurbs())),this._profile=t,this._rail=n};y["verb.geom.SweptSurface"]=er,er.__name__=["verb","geom","SweptSurface"],er.__super__=pt,er.prototype=C(pt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:er});function be(t){return t instanceof Array?function(){return U.iter(t)}:typeof t.iterator=="function"?ve(t,t.iterator):t.iterator}var kr,ji=0;function ve(t,n){if(n==null)return null;n.__id__==null&&(n.__id__=ji++);var r;return t.hx__closures__==null?t.hx__closures__={}:r=t.hx__closures__[n.__id__],r==null&&(r=function(){return r.method.apply(r.scope,arguments)},r.scope=t,r.method=n,t.hx__closures__[n.__id__]=r),r}y.Math=Math,String.prototype.__class__=y.String=String,String.__name__=["String"],y.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=y.Date=Date,Date.__name__=["Date"];var Xi=y.Int={__name__:["Int"]},Wi=y.Dynamic={__name__:["Dynamic"]},gi=y.Float=Number;gi.__name__=["Float"];var pi=y.Bool=Boolean;pi.__ename__=["Bool"];var yi=y.Class={__name__:["Class"]},wi={};Array.prototype.map==null&&(Array.prototype.map=function(t){for(var n=[],r=0,s=this.length;r<s;){var o=r++;n[o]=t(this[o])}return n}),Array.prototype.filter==null&&(Array.prototype.filter=function(t){for(var n=[],r=0,s=this.length;r<s;){var o=r++,h=this[o];t(h)&&n.push(h)}return n});var Ir={},or=M.ArrayBuffer||Yt;or.prototype.slice==null&&(or.prototype.slice=Yt.sliceImpl),M.DataView;var Er=M.Uint8Array||Ce._new;(function(t,n){if(t.setImmediate)return;var r=1,s={},o=!1,h=t.document,c;function v(B){return s[r]=d.apply(n,B),r++}function d(B){var L=[].slice.call(arguments,1);return function(){typeof B=="function"?B.apply(n,L):new Function(""+B)()}}function m(B){if(o)setTimeout(d(m,B),0);else{var L=s[B];if(L){o=!0;try{L()}finally{b(B),o=!1}}}}function b(B){delete s[B]}function w(){c=function(){var B=v(arguments);return process.nextTick(d(m,B)),B}}function A(){if(t.postMessage&&!t.importScripts){var B=!0,L=t.onmessage;return t.onmessage=function(){B=!1},t.postMessage("","*"),t.onmessage=L,B}}function P(){var B="setImmediate$"+Math.random()+"$",L=function(R){R.source===t&&typeof R.data=="string"&&R.data.indexOf(B)===0&&m(+R.data.slice(B.length))};t.addEventListener?t.addEventListener("message",L,!1):t.attachEvent("onmessage",L),c=function(){var R=v(arguments);return t.postMessage(B+R,"*"),R}}function z(){var B=new MessageChannel;B.port1.onmessage=function(L){var R=L.data;m(R)},c=function(){var L=v(arguments);return B.port2.postMessage(L),L}}function E(){var B=h.documentElement;c=function(){var L=v(arguments),R=h.createElement("script");return R.onreadystatechange=function(){m(L),R.onreadystatechange=null,B.removeChild(R),R=null},B.appendChild(R),L}}function k(){c=function(){var B=v(arguments);return setTimeout(d(m,B),0),B}}var T=Object.getPrototypeOf&&Object.getPrototypeOf(t);T=T&&T.setTimeout?T:t,{}.toString.call(t.process)==="[object process]"?w():A()?P():t.MessageChannel?z():h&&"onreadystatechange"in h.createElement("script")?E():k(),T.setImmediate=c,T.clearImmediate=b})(new Function("return this")()),Xt.USE_CACHE=!1,Xt.USE_ENUM_INDEX=!1,Xt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Dt.DEFAULT_RESOLVER=ct,Dt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Jt.count=0,Zt.i64tmp=function(t){var n,r=new Vt(0,0);return n=r,n}(),bt.__toStr={}.toString,Ce.BYTES_PER_ELEMENT=1,ft.queue=new Z,zt.memo=new jt,tt.TOLERANCE=1e-6,tt.EPSILON=1e-10,tt.VERSION="2.0.0",_t.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],_t.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],dt.THREADS=1,dt._init=!1,je.basePath="",tn.uuid=0,sr.main()}(typeof console<"u"?console:{log:function(){}},i,typeof g<"u"?g:typeof a<"u"?a:typeof self<"u"?self:this),i})})(fi);var Ki=fi.exports;const ln=Gi(Ki);class zr{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(e,i,a,l){this.c0=e,this.c1=a,this.c2=-3*e+3*i-2*a-l,this.c3=2*e-2*i+a+l}initCatmullRom(e,i,a,l,_){this.init(i,a,_*(a-e),_*(l-i))}initNonuniformCatmullRom(e,i,a,l,_,g,p){let x=(i-e)/_-(a-e)/(_+g)+(a-i)/g,f=(a-i)/g-(l-i)/(g+p)+(l-a)/p;x*=g,f*=g,this.init(i,a,x,f)}calc(e){const i=e*e,a=i*e;return this.c0+this.c1*e+this.c2*i+this.c3*a}}class mi extends Cn{constructor(e=[],i=!1,a="centripetal",l=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new Q,this._px=new zr,this._py=new zr,this._pz=new zr,this._points=e.map(_=>new St(_)),this._closed=i,this._curveType=a,this._tension=l}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new St}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new St}get length(){if(this._points.length<2)return 0;let e=0;for(let i=1;i<this._points.length;i++)e+=this._points[i-1].distanceTo(this._points[i]);return this._closed&&this._points.length>2&&(e+=this._points[this._points.length-1].distanceTo(this._points[0])),e}getPoint(e,i=new St){const a=i,l=this._points,_=l.length;if(_===0)return a.set(0,0,0);if(_===1)return a.copy(l[0]);const g=(_-(this._closed?0:1))*e;let p=Math.floor(g),x=g-p;this._closed?p+=p>0?0:(Math.floor(Math.abs(p)/_)+1)*_:x===0&&p===_-1&&(p=_-2,x=1);let f,M;this._closed||p>0?f=l[(p-1)%_]:(this._tmp.subVectors(l[0],l[1]).add(l[0]),f=new St(this._tmp.x,this._tmp.y,this._tmp.z));const y=l[p%_],I=l[(p+1)%_];if(this._closed||p+2<_?M=l[(p+2)%_]:(this._tmp.subVectors(l[_-1],l[_-2]).add(l[_-1]),M=new St(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const C=this._curveType==="chordal"?.5:.25;let U=Math.pow(f.distanceToSquared(y),C),q=Math.pow(y.distanceToSquared(I),C),Z=Math.pow(I.distanceToSquared(M),C);q<1e-4&&(q=1),U<1e-4&&(U=q),Z<1e-4&&(Z=q),this._px.initNonuniformCatmullRom(f.x,y.x,I.x,M.x,U,q,Z),this._py.initNonuniformCatmullRom(f.y,y.y,I.y,M.y,U,q,Z),this._pz.initNonuniformCatmullRom(f.z,y.z,I.z,M.z,U,q,Z)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(f.x,y.x,I.x,M.x,this._tension),this._py.initCatmullRom(f.y,y.y,I.y,M.y,this._tension),this._pz.initCatmullRom(f.z,y.z,I.z,M.z,this._tension));return a.set(this._px.calc(x),this._py.calc(x),this._pz.calc(x)),a}getPoints(e){const i=[];for(let a=0;a<=e;a++)i.push(this.getPoint(a/e));return i}setPoints(e){this._points=e.map(i=>new St(i)),this._boundingBoxNeedsUpdate=!0}setClosed(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0)}setCurveType(e){this._curveType=e}setTension(e){this._tension=e}transform(e){return this._points=this._points.map(i=>{const a=new St;return a.copy(i),a.applyMatrix4(e),a}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new ze;const e=new ze;return this._points.forEach(i=>{e.expandByPoint(i)}),e}}class Je{constructor(e,i,a,l){this._degree=e,this._knots=[...i],this._controlPoints=a.map(_=>({x:_.x,y:_.y,z:_.z})),this._weights=l?[...l]:new Array(a.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(e=>({x:e.x,y:e.y,z:e.z}))}weights(){return[...this._weights]}point(e){const i=this._controlPoints.map(a=>[a.x,a.y,a.z]);return Pn(e,this._degree,this._knots,i,this._weights)}length(){const e=this._controlPoints.map(i=>[i.x,i.y,i.z]);return oi(this._degree,this._knots,e,this._weights)}static byKnotsControlPointsWeights(e,i,a,l){return new Je(e,i,a,l)}static byPoints(e,i,a="Uniform"){let l;switch(a){case"Chord":l=si(i,e);break;case"SqrtChord":l=ai(i,e);break;case"Uniform":default:l=ii(i,e.length);break}const _=e.map(p=>({x:p[0],y:p[1],z:p[2]})),g=new Array(_.length).fill(1);return new Je(i,l,_,g)}getParameterRange(){const e=this._knots[this._degree],i=this._knots[this._knots.length-this._degree-1];return{start:e,end:i}}getPoints(e){const i=[],{start:a,end:l}=this.getParameterRange();for(let _=0;_<=e;_++){const g=a+(l-a)*(_/e);i.push(this.point(g))}return i}isClosed(e=1e-6){const{start:i,end:a}=this.getParameterRange(),l=this.point(i),_=this.point(a),g=l[0]-_[0],p=l[1]-_[1],x=l[2]-_[2];return Math.sqrt(g*g+p*p+x*x)<e}static createFitPointsForClosedCurve(e){if(e.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const i=new mi(e,!0,"centripetal"),a=Math.max(50,e.length*2);return i.getPoints(a)}static createClosedCurve(e,i,a="Chord"){const _=this.createFitPointsForClosedCurve(e).map(g=>[g.x,g.y,g.z]);return Je.byPoints(_,i,a)}}class Sr extends Cn{constructor(e,i,a,l,_){super();const g=arguments.length;if(g<2||g>5)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;if(this._degree=3,this._closed=!1,Array.isArray(i)){this._controlPoints=e;let p,x=3,f=!1;if(g>=3&&(Array.isArray(a)?(p=a,g>=4&&(x=l||3),g>=5&&(f=_)):a!==void 0&&(x=a||3,g>=4&&(f=l))),a===void 0&&g>=4&&(x=l||3,g>=5&&(f=_)),this._degree=x,this._closed=f,this._controlPoints.length<this._degree+1)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;const M=this.toVerbPoints(this._controlPoints);this._nurbsCurve=ln.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,i,M,p)}else{if(this._fitPoints=e,this._knotParameterization=i,g>=3&&(this._degree=a||3),g>=4&&(this._closed=l),this._fitPoints.length<this._degree+1)throw ee.AcCmErrors.ILLEGAL_PARAMETERS;const p=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(p,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const e=Je.createFitPointsForClosedCurve(this._fitPoints),i=this.toNurbsPoints(e);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(i,this._degree)}else{const e=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(e,this._degree)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else if(this._controlPoints)if(this._closed){const e=Je.createFitPointsForClosedCurve(this._controlPoints),i=this.toNurbsPoints(e);this._nurbsCurve=ln.geom.NurbsCurve.byPoints(i,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{const e=this._nurbsCurve.knots(),i=this._nurbsCurve.weights(),a=this.toVerbPoints(this._controlPoints);this._nurbsCurve=ln.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,e,a,i)}}setClosed(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get startPoint(){const e=this._nurbsCurve.knots(),i=this._nurbsCurve.degree(),a=e[i],l=this._nurbsCurve.point(a);return new St(l[0],l[1],l[2])}get endPoint(){const e=this._nurbsCurve.knots(),i=this._nurbsCurve.degree(),a=e[e.length-i-1],l=this._nurbsCurve.point(a);return new St(l[0],l[1],l[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(e){if(!this._fitPoints)throw new Error("No fit points in this spline");const i=this._fitPoints.length,a=e<0||e>=i?i-1:e,l=this._fitPoints[a];return{x:l.x,y:l.y,z:l.z||0}}getControlPointAt(e){const i=this._controlPoints.length,a=e<0||e>=i?i-1:e;return this._controlPoints[a]}getPoints(e=100){const i=this._nurbsCurve,a=[],l=i.knots(),_=this._nurbsCurve.degree(),g=l[_],p=l[l.length-_-1],x=(p-g)/(e-1);for(let f=0;f<e;f++){const M=f===e-1?p:g+f*x,y=i.point(M);a.push(new St(y[0],y[1],y[2]))}return a}getCurvePoints(e,i){const a=[],l=e.knots(),_=l[3],p=(l[l.length-4]-_)/(i-1);for(let x=0;x<i;x++){const f=_+x*p;a.push(e.point(f))}return a}calculateBoundingBox(){const e=this.getPoints(100);return new ze().setFromPoints(e)}get closed(){return this._closed}set closed(e){this.setClosed(e)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]=[a.x,a.y,a.z||0]}),i}toVerbPoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]=[a.x,a.y,a.z||0]}),i}toGePoints(e){const i=new Array(e.length);return e.forEach((a,l)=>{i[l]={x:a[0],y:a[1],z:a[2]}}),i}static createClosedSpline(e,i="Uniform",a=3){if(e.length<a+1)throw new Error(`At least ${a+1} points are required for a degree ${a} closed spline`);return new Sr(e,i,a,!0)}}H.AcGeArea2d=Di,H.AcGeBox2d=de,H.AcGeBox3d=ze,H.AcGeCatmullRomCurve3d=mi,H.AcGeCircArc2d=Sn,H.AcGeCircArc3d=In,H.AcGeCurve2d=hn,H.AcGeEllipseArc2d=Ar,H.AcGeEllipseArc3d=Pr,H.AcGeEuler=wr,H.AcGeGeometryUtil=ri,H.AcGeLine2d=Mr,H.AcGeLine3d=kn,H.AcGeLoop2d=qi,H.AcGeMathUtil=Ct,H.AcGeMatrix2d=sn,H.AcGeMatrix3d=an,H.AcGeNurbsCurve=Je,H.AcGePlane=zn,H.AcGePoint2d=Ut,H.AcGePoint3d=St,H.AcGePolyline2d=Oi,H.AcGeQuaternion=Mn,H.AcGeShape2d=br,H.AcGeSpline3d=Sr,H.AcGeTol=fr,H.AcGeVector2d=Tt,H.AcGeVector3d=Q,H.DEFAULT_TOL=mr,H.DEG2RAD=hr,H.FLOAT_TOL=He,H.ORIGIN_POINT_2D=Bi,H.ORIGIN_POINT_3D=dr,H.RAD2DEG=lr,H.TAU=Lt,H.basisFunction=nr,H.calculateCurveLength=oi,H.ceilPowerOfTwo=Qr,H.clamp=Be,H.damp=Fr,H.degToRad=Zr,H.euclideanModulo=ur,H.evaluateNurbsPoint=Pn,H.floorPowerOfTwo=Jr,H.generateChordKnots=si,H.generateSqrtChordKnots=ai,H.generateUUID=Rr,H.generateUniformKnots=ii,H.intPartLength=vr,H.interpolateControlPoints=Ti,H.inverseLerp=Dr,H.isBetween=$r,H.isBetweenAngle=ti,H.isPointInPolygon=gr,H.isPolygonIntersect=ni,H.isPowerOfTwo=Hr,H.lerp=cr,H.mapLinear=Vr,H.normalizeAngle=An,H.pingpong=Or,H.radToDeg=Yr,H.randFloat=jr,H.randFloatSpread=Xr,H.randInt=Kr,H.relativeEps=ei,H.seededRandom=Wr,H.smootherstep=Gr,H.smoothstep=qr,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})});